(57)【要約】【課題】共有リソースである演算回路を簡単な手続によって優先的に利用可能にする。【解決手段】中央処理装置（ＣＰＵ０，ＣＰＵ１）と複数の演算回路（ＦＰＵ０，ＦＰＵ１）を備え、中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンドを与えることが可能なデータプロセッサ（ＤＰＲＣＳ１）に、どの演算回路がコマンドを実行中であるかを示す第１情報と、演算回路にどの中央処理装置から次のコマンドの実行が予約されているかを示す第２情報の格納に利用される記憶回路（ＢＲＥＧ，ＲＲＥＧ）を設ける。既にコマンド実行中であるときは記憶回路の第２情報を用いて次の演算コマンドの実行を予約することにより、実行終了後、速やかに当該演算回路に演算コマンドを振り当てて実行させることができる。【選択図】図１
2008217623.tif 000002
【特許請求の範囲】
【請求項１】
複数の中央処理装置と、前記中央処理装置から与えられるコマンドを実行可能な複数の演算回路と、記憶回路とを有するデータプロセッサであって、
前記中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンドを与えることが可能であり、
前記記憶回路は、どの演算回路が前記コマンドを実行中であるかを示す第１情報と、前記演算回路にどの中央処理装置が次のコマンドの実行を予約しているかを示す第２情報との格納に利用される、データプロセッサ。
【請求項２】
前記中央処理装置は、自らに対応された一の演算回路に第１コマンドを実行させると共に、他の中央処理装置に対応された他の演算回路を利用しようとするとき、前記第１情報を参照して当該他の演算回路がコマンド実行中か否かを判別し、実行中でないときは当該他の演算回路に第２演算コマンドを与え、コマンド実行中であるときは前記第２情報を参照して当該他の演算回路にコマンド実行を予約したか否かを判別し、予約していなければ予約し、前記一の演算回路が前記第１コマンドの実行を終了する前に前記予約された当該他の演算回路のコマンド実行が終了したときは当該他の演算回路に前記第２コマンドを与え、前記一の演算回路が前記第１コマンドの実行を終了したとき当該他の演算回路が未だコマンド実行中であるときは当該一の演算回路に前記第２コマンドを与える、請求項１記載のデータプロセッサ。
【請求項３】
前記演算回路は浮動小数点演算回路又はディジタル信号処理演算回路である、請求項１記載のデータプロセッサ。
【請求項４】
前記演算回路は、与えられた演算コマンドによる演算を終了したとき、当該演算回路がコマンド実行中でないことを示すように前記第１情報を操作する、請求項３記載のデータプロセッサ。
【請求項５】
前記夫々の演算回路が個別に接続された複数の演算バスを備え、前記夫々の演算バスは前記複数の中央処理装置に共通接続される、請求項１記載のデータプロセッサ。
【請求項６】
前記記憶回路は前記演算バスに共通接続される、請求項５記載のデータプロセッサ。
【請求項７】
前記演算バスに接続された比較回路を更に有し、
前記比較回路の一方の入力は一の前記演算バスに接続され、前記比較回路の他方の入力は他の前記演算バスに接続される、請求項５記載のデータプロセッサ。
【請求項８】
前記比較回路による比較結果を一つの割り込み要因として受ける割り込みコントローラを更に有する、請求項７記載のデータプロセッサ。
【請求項９】
複数の中央処理装置と、前記中央処理装置から与えられるコマンドを実行可能な複数の演算回路と、記憶回路とを有するデータプロセッサであって、
前記中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンを与えることが可能であり、
前記記憶回路は、どの演算回路が前記コマンドを実行中であるかを示す第１情報と、前記演算回路に次のコマンドの実行が予約されているかを示す第２情報との格納に利用される、データプロセッサ。
【請求項１０】
前記中央処理装置は、自らに対応された一の演算回路に第１コマンドを実行させると共に、他の中央処理装置に対応された他の演算回路を利用しようとするとき、前記第１情報を参照して当該他の演算回路がコマンド実行中か否かを判別し、実行中でないときは当該他の演算回路に第２演算コマンドを与え、コマンド実行中であるときは前記第２情報を参照して当該他の演算回路にコマンド実行が予約されているか否かを判別し、他の空凹処理装置による予約がなく且つ自ら予約していなければ予約し、前記一の演算回路が前記第１コマンドの実行を終了する前に前記予約された当該他の演算回路のコマンド実行が終了したときは当該他の演算回路に前記第２コマンドを与え、前記一の演算回路が前記第１コマンドの実行を終了したとき当該他の演算回路が未だコマンド実行中であるときは当該一の演算回路に前記第２コマンドを与える、請求項９記載のデータプロセッサ。
【請求項１１】
前記中央処理装置は、どの演算回路に演算予約を行っているかを示す情報を保持する内部記憶回路を有する請求項１０記載のデータプロセッサ。
【請求項１２】
複数個のプロセッサコア、第１レジスタ及び第２レジスタを有し、
前記プロセッサコアは、自他のプロセッサコアから演算コマンドを受けて動作する演算回路を備え、
前記第１レジスタは、前記演算回路毎にそれが利用されているかを示すための情報の格納に用いられ前記プロセッサコアによってアクセス可能にされ、
前記第２レジスタは、前記演算回路毎にどのプロセッサコアに次の利用が予約されているかを示すための情報の格納に用いられ前記プロセッサコアによってアクセス可能にされる、データプロセッサ。
【請求項１３】
プロセッサコアは、他のプロセッサコアの演算回路を利用しようとするとき、前記第１レジスタを参照して当該演算回路が利用されているか否かを判別し、利用されていないときは当該演算回路に演算コマンドを与え、利用されているときは前記第２レジスタを参照して当該演算回路の利用を予約したか否かを判別し、予約していなければ予約し、自プロセッサコアの演算回路が利用可能になる前に前記予約された当該演算回路が利用可能になったときは当該演算回路に演算コマンドを与える、請求項１２記載のデータプロセッサ。
【請求項１４】
演前記算回路は、与えられた演算コマンドによる演算を終了したとき、当該演算回路が未使用状態であることを示すように前記第１レジスタを操作する、請求項１３記載のデータプロセッサ。
【請求項１５】
前記プロセッサコアは、プリフェッチした複数命令相互間でレジスタリソースの競合がないといきは、前記演算回路を用いる一部の命令を自プロセッサコアで処理し、前記演算回路を用いる他の命令の処理に他のプロセッサコアの演算回路を利用しようとするとき、前記第１レジスタを参照して当該演算回路が利用されているか否かを判別し、利用されていないときは当該演算回路に演算コマンドを与え、利用されているときは前記第２レジスタを参照して当該演算回路の利用を予約したか否かを判別し、予約していなければ予約し、自プロセッサコアの演算回路が利用可能になる前に前記予約された当該演算回路が利用可能になったときは当該演算回路に演算コマンドを与える、請求項１２記載のデータプロセッサ。
【請求項１６】
前記夫々のプロセッサコアは前記演算回路に演算コマンドを発行可能な中央処理装置を有し、夫々の演算回路は演算バスに個別に接続され、夫々の中央処理装置は前記演算バスに共通接続される、請求項９記載のデータプロセッサ。
【請求項１７】
前記第１レジスタ及び第２レジスタは夫々のプロセッサコアに共通化されて前記演算バスに共通接続される、請求項１６記載のデータプロセッサ。
【請求項１８】
前記共通バスは一部の演算回路が接続する第１共通バスと、残りの演算回路が接続する第２共通バスとに分離され、
前記第１共通バスから入力される一の演算リソースからの演算結果と、前記第２共通バスから入力される他の演算リソースからの演算結果とを入力して比較する比較回路と、前記比較回路による比較結果を一つの割り込み要因として入力し、中央処理装置に割り込み信号を出力する割り込みコントローラを更に有する請求項１６記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算コマンドを受けて動作する浮動小数点演算回路やディジタル信号処理演算回路等の複数の演算回路を共通リソースとして備えたデータプロセッサに関し、例えばマルチプロセッサコアのシングルチップマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおける演算リソースの有効利用を図る技術として特許文献１に記載がある。これによれば、データプロセッサの内部バスに他のデータプロセッサをバスマスタとして接続可能にするインタフェース回路を当該データプロセッサに採用し、データプロセッサの尚部バスに接続された周辺リソースを外部の他のデータプロセッサが直接使用できるようにするものである。
【０００３】
【特許文献１】国際公開第０２／０６１５９１号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者はマルチプロセッサシステムにおいて一のプロセッサコアが他のプロセッサコアの演算回路にもコマンドを振り分けて自他のプロセッサコアにおける演算回路を並列動作させることについて検討した。これによれば、特許文献1からも類推可能なように一のプロセッサコアが他のプロセッサコアの演算リソースを共有することは可能であるが、双方のプロセッサコア間での演算リソースの競合を回避しなければならない。しかしながら、演算リソースに対する利用を排他的に調停するだけでは、共有可能な演算リソースの効率的な利用を促進するには足りないことが本発明者によって見出された。共有されている演算リソースを簡単な手続によって優先的に利用できるようにしなければ、他の演算回路への演算コマンドの振り分けによる自他のプロセッサコアにおける演算回路を容易に並列動作させることができない。
【０００５】
本発明の目的は、共有リソースである演算回路を簡単な手続によって優先的に利用可能なデータプロセッサを提供することにある。
【０００６】
本発明の別の目的は、一つの中央処理装置が共有リソースである複数の演算回路へ演算コマンドを振り分けて演算回路を容易に並列動作させることができるデータプロセッサを提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、中央処理装置と複数の演算回路を備え、前記中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンを与えることが可能なデータプロセッサに、どの演算回路がコマンドを実行中であるかを示す第１情報と、演算回路にどの中央処理装置から次のコマンドの実行が予約されているかを示す第２情報の格納に利用される記憶回路を設ける。共有リソースである演算回路へ演算コマンドを振り分けるとき、記憶回路の第１情報を参照することによって既にコマンドの実行中であるかを知ることができ、演算回路の競合を容易に回避することができる。既にコマンド実行中であるときは記憶回路の第２情報を用いて次の演算コマンドの実行を予約することにより、実行終了後、速やかに当該演算回路に演算コマンドを振り当てて実行させることができる。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１１】
すなわち、共有リソースである演算回路を簡単な手続によって優先的に利用してデータ処理を行なうことができる。
【００１２】
また、一つの中央処理装置が共有リソースである複数の演算回路へ演算コマンドを振り分けて演算回路を容易に並列動作させることができる。
【発明を実施するための最良の形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕本発明の代表的な実施の形態に係るデータプロセッサは、複数の中央処理装置（ＣＰＵ０，ＣＰＵ１）と、前記中央処理装置から与えられるコマンドを実行可能な複数の演算回路（ＦＰＵ０，ＦＰＵ１）と、記憶回路（ＢＲＥＧ，ＲＲＥＧ，ＢＲＥＧ０，ＢＲＥＧ１，ＲＲＥＧ０，ＲＲＥＧ１、ＩＲＥＧ０，ＩＲＥＧ１）とを有する。前記中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンドを与えることが可能である。前記記憶回路は、どの演算回路が前記コマンドを実行中であるかを示す第１情報（ＢＦ０，ＢＦ１）と、前記演算回路にどの中央処理装置から次のコマンドの実行が予約されているかを示す第２情報（ＲＦ０，ＲＦ１又はＲＦ０＿Ａ，ＲＦ１＿Ａ，ＲＦ０＿Ｂ，ＲＦ１＿Ｂ）との格納に利用される。上記より、共有リソースである演算回路へ演算コマンドを振り分けるとき、記憶回路の第１情報を参照することによって既にコマンドの実行中であるかを知ることができ、演算回路の競合を容易に回避することができる。既にコマンド実行中であるときは記憶回路の第２情報を用いて次の演算コマンドの実行を予約することにより、実行終了後、速やかに当該演算回路に演算コマンドを振り当てて実行させることができる。
【００１５】
一つの具体的な形態として、前記中央処理装置は、自らに対応された一の演算回路に第１コマンドを実行させると共に、他の中央処理装置に対応された他の演算回路を利用しようとするとき、前記第１情報を参照して当該他の演算回路がコマンド実行中か否かを判別する。実行中でないときは当該他の演算回路に第２演算コマンドを与え、コマンド実行中であるときは前記第２情報を参照して当該他の演算回路にコマンド実行を予約したか否かを判別する。予約していなければ予約し、前記一の演算回路が前記第１コマンドの実行を終了する前に前記予約された当該他の演算回路のコマンド実行が終了したときは当該他の演算回路に前記第２コマンドを与え、前記一の演算回路が前記第１コマンドの実行を終了したとき当該他の演算回路が未だコマンド実行中であるときは当該一の演算回路に前記第２コマンドを与える。上記手順により、複数の演算命令を実行するとき演算回路の空き状態と予約状態に応じて効率的に演算回路に演算コマンドを発行して命令を実行することができる。
【００１６】
別の具体的な形態として、前記演算回路は浮動小数点演算回路又はディジタル信号処理演算回路のようなアクセラレータである。中央処理装置の負担軽減、データ処理効率の向上に資することができる。
【００１７】
更に具体的な形態として、前記演算回路は、与えられた演算コマンドによる演算を終了したとき、当該演算回路がコマンド実行中でないことを示すように前記第１情報を操作する。中央処理装置が第１情報を操作する場合に比べて、演算回路の状態を即座に第１情報に反映させることが可能になる。
【００１８】
別の具体的な形態として、前記夫々の演算回路が個別に接続された複数の演算バス（ＦＰＵＢ０，ＦＰＵＢ１）を備え、前記夫々の演算バスは前記複数の中央処理装置に共通接続される。中央処理装置による演算回路への演算コマンドの転送、演算回路の演算結果の取得に際してバスの競合を低減することが可能になる。
【００１９】
更に具体的な形態として、前記記憶回路は前記演算バスに共通接続される。中央処理装置による記憶回路の参照及び演算回路による記憶回路の操作におけるバス競合を低減することが可能になる。
【００２０】
更に具体的な形態として、前記演算バスに接続された比較回路を更に有する。前記比較回路の一方の入力は一の前記演算バスに接続され、前記比較回路の他方の入力は他の前記演算バスに接続される。演算回路による演算結果を中央処理装置を介して双方の演算バスから比較回路に入力して比較する動作を行うことができる。したがって、２個の演算命令を実行し、その演算結果を比較してその結果を用いる命令を次に実行するような場合に、それら命令の実行ステップ数を低減することが可能になる。また、一つの演算命令による演算コマンドを２個の演算回路に与えて個別に演算させ、その演算結果を比較回路で比較することが可能になり、これによって、演算回路による演算結果に対して通常よりも高い信頼性を保証することも可能になる。例えば、前記比較回路による比較結果を一つの割り込み要因として受ける割り込みコントローラ（ＩＮＴＣ）を備えることにより、比較不一致の場合に、その割り込み処理プログラムに従って、演算命令の再実行、演算回路に対する故障検証処理等を行なうことができる。
【００２１】
〔２〕別の観点による実施の形態に係るデータプロセッサは、複数の中央処理装置（ＣＰＵ０，ＣＰＵ１）と、前記中央処理装置から与えられるコマンドを実行可能な複数の演算回路（ＦＰＵ０，ＦＰＵ１）と、記憶回路とを有する。前記中央処理装置はフェッチした一の命令に基づいて一の演算回路にコマンドを与え、フェッチした他の命令に基づいて他の演算回路にコマンドを与えることが可能である。前記記憶回路は、どの演算回路が前記コマンドを実行中であるかを示す第１情報（ＢＦ０，ＢＦ１）と、前記演算回路に次のコマンドの実行が予約されているかを示す第２情報（ＲＦ０＿Ａ，ＲＦ１＿Ａ）との格納に利用される。上記より、共有リソースである演算回路へ演算コマンドを振り分けるとき、記憶回路の第１情報を参照することによって既にコマンドの実行中であるかを知ることができ、演算回路の競合を容易に回避することができる。既にコマンド実行中であるときは記憶回路の第２情報を用いて次の演算コマンドの実行を予約することにより、実行終了後、速やかに当該演算回路に演算コマンドを振り当てて実行させることができる。
【００２２】
一つの具体的な形態として、前記中央処理装置は、自らに対応された一の演算回路に第１コマンドを実行させると共に、他の中央処理装置に対応された他の演算回路を利用しようとするとき、前記第１情報を参照して当該他の演算回路がコマンド実行中か否かを判別する。実行中でないときは当該他の演算回路に第２演算コマンドを与え、コマンド実行中であるときは前記第２情報を参照して当該他の演算回路にコマンド実行が予約されているか否かを判別する。他の中央処理装置による予約がなく且つ自ら予約していなければ予約し、前記一の演算回路が前記第１コマンドの実行を終了する前に前記予約された当該他の演算回路のコマンド実行が終了したときは当該他の演算回路に前記第２コマンドを与え、前記一の演算回路が前記第１コマンドの実行を終了したとき当該他の演算回路が未だコマンド実行中であるときは当該一の演算回路に前記第２コマンドを与える。上記手順により、複数の演算命令を実行するとき演算回路の空き状態と予約状態に応じて効率的に演算回路に演算コマンドを発行して命令を実行することができる。
【００２３】
前記中央処理装置は、どの演算回路に演算予約を行っているかを示す情報を保持する内部記憶回路を有する。これによれば中央処理装置は自らが行った予約を確認する場合に外部の記憶回路を参照しなくても済む。前記演算回路にどの中央処理装置から次のコマンドの実行が予約されているかを示すことができる情報を第２情報として採用する場合には、自ら行った演算予約の確認にも第２情報の参照が必要になる。
【００２４】
〔３〕別の観点による実施の形態に係るデータプロセッサは、複数個のプロセッサコア（ＰＣＯＲＥ０，ＰＣＯＲＥ１）、第１レジスタ（ＢＲＥＧ）及び第２レジスタ（ＲＲＥＧ）を有する。前記プロセッサコアは、自他のプロセッサコアから演算コマンドを受けて動作する演算回路（ＦＰＵ０，ＦＰＵ１）を備える。前記第１レジスタは、前記演算回路毎にそれが利用されているかを示すための情報（ＢＦ０，ＢＦ１）の格納に用いられ前記プロセッサコアによってアクセス可能にされる。前記第２レジスタは、前記演算回路毎にどのプロセッサコアに次の利用が予約されているかを示すための情報（ＲＦ０，ＲＦ１）の格納に用いられ前記プロセッサコアによってアクセス可能にされる。上記より、共有リソースである別の演算回路へ演算コマンドを振り分けるとき、第１レジスタを参照することによって既にコマンドの実行中であるかを知ることができ、演算回路の競合を容易に回避することができる。既にコマンド実行中であるときは第２レジスタを用いて次の演算コマンドの実行を予約することにより、実行終了後、速やかに当該演算回路に演算コマンドを振り当てて実行させることができる。
【００２５】
一つの具体的な形態として、プロセッサコアは、他のプロセッサコアの演算回路を利用しようとするとき、前記第１レジスタを参照して当該演算回路が利用されているか否かを判別し、利用されていないときは当該演算回路に演算コマンドを与え、利用されているときは前記第２レジスタを参照して当該演算回路の利用を予約したか否かを判別し、予約していなければ予約し、自プロセッサコアの演算回路が利用可能になる前に前記予約された当該演算回路が利用可能になったときは当該演算回路に演算コマンドを与える。上記手順により、一つのプロセッサコアが複数の演算命令を実行するとき演算回路の空き状態と予約状態に応じて効率的に自他のプロセッサコアにおける演算回路に演算コマンドを発行して命令を実行することができる。
【００２６】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２７】
図１には本発明の一例に係るデータプロセッサＤＰＲＣＳ１が例示される。同図に示されるデータプロセッサＤＰＲＣＳ１は、特に制限されないが、単結晶シリコンのような１個の半導体基板に、相補型ＭＯＳ集積回路製造技術等によって形成される。データプロセッサＤＰＲＣＳ１は２個のプロセッサコアＰＣＯＲＥ０、ＰＣＯＲＥ１を有する。プロセッサコアＰＣＯＲＥ０，ＰＣＯＲＥ１の外部にはＦＰＵバスＦＰＵＢ０，ＦＰＵＢ１と周辺バスＰＲＰＨＢが配置され、周辺バスＰＲＰＨＢには代表的に示された割り込みコントローラＩＮＴＣ、外部メモリＥＸＭＥＭ、及びその他周辺回路ＰＲＰＨ＿Ａ，ＰＲＰＨ＿Ｂが接続される。周辺回路ＰＲＰＨ＿Ａ，ＰＲＰＨ＿Ｂは入出力ポート、タイマ、シリアルインタフェース回路等であってよい。
【００２８】
プロセッサコアＰＣＯＲＥ０は中央処理装置ＣＰＵ０、ワークメモリＭＥＭ０、演算回路の一例である浮動小数点演算回路ＦＰＵ０、キャッシュメモリＣＡＣＨＥ０を備える。中央処理装置ＣＰＵ０、ワークメモリＭＥＭ０、及びキャッシュメモリＣＡＣＨＥ０はＣＰＵバスＣＰＵＢ０に共通接続される。プロセッサコアＰＣＯＲＥ１も同様に中央処理装置ＣＰＵ１、ワークメモリＭＥＭ１、演算回路の一例である浮動小数点演算回路ＦＰＵ１、キャッシュメモリＣＡＣＨＥ１を備える。中央処理装置ＣＰＵ１、ワークメモリＭＥＭ１、及びキャッシュメモリＣＡＣＨＥ１はＣＰＵバスＣＰＵＢ１に共通接続される。
【００２９】
キャッシュメモリＣＡＣＨＥ０、ＣＡＣＨＥ１は周辺バスＰＲＰＨＢに接続され、外部メモリＥＸＭＥＭはキャッシュメモリＣＡＣＨＥ０、ＣＡＣＨＥ１の一次記憶とされる。
【００３０】
中央処理装置ＣＰＵ０，ＣＰＵ１はＦＰＵバスＦＰＵＢ０，ＦＰＵ１に夫々共通接続され、浮動小数点演算回路ＦＰＵ０，ＦＰＵ１はＦＰＵバスＦＰＵＢ０，ＦＰＵ１に個別に共通接続される。
【００３１】
中央処理装置ＣＰＵ０、ＣＰＵ１はフェッチした命令を実行する。データプロセッサ１の命令セットには中央処理装置の命令（ＣＰＵ命令）と浮動小数点演算回路の命令（ＦＰＵ命令）が存在する。中央処理装置ＣＰＵ０、ＣＰＵ１がＣＰＵ命令をフェッチしたときはこれを実行し、ＦＰＵ命令をフェッチしたときは当該ＦＰＵ命令に応ずる演算コマンドを発行する。浮動小数点演算回路ＦＰＵ０，ＦＰＵ１は中央処理装置ＣＰＵ０，ＣＰＵ１から演算コマンドがセットされるコマンドレジスタを有する。特に制限されないが、ＦＰＵ命令の実行に必要な演算オペランドをメモリアクセスによって取得する必要がある場合、当該メモリアクセスは中央処理装置ＣＰU０，ＣＰＵ１が行ってＦＰＵ０，ＦＰＵ１のデータレジスタにセットする。中央処理装置ＣＰＵ０、ＣＰＵ１はＦＰＵ命令をフェッチしたとき、それによって指示される演算コマンドを浮動小数点演算回路ＦＰＵ０又はＦＰＵ１の何れにもセットすることができる。その制御を行うために参照する記憶回路として、ビジーレジスタＢＲＥＧと予約レジスタＲＲＥＧがＦＰＵバスＦＰＵＢ０，ＦＰＵＢ１に共通接続される。
【００３２】
ビジーレジスタＢＲＥＧはどの浮動小数点演算回路ＦＰＵ０，ＦＰＵ１が演算コマンドを実行中であるかを示す夫々１ビットのビジーフラグ（第１情報）ＢＦ０，ＢＦ１の格納に利用される。ビジーフラグＢＦ０は浮動小数点演算回路ＦＰＵ０に対応され、ビジーフラグＢＦ１は浮動小数点演算回路ＦＰＵ１に対応され、セット状態で演算コマンドの実行中を示し、リセット状態で演算コマンドの非実行を示す。特に制限されないが、ビジーフラグＢＦ０，ＢＦ１に対するセットは演算コマンドを与えるとき中央処理装置ＣＰＵ０，ＣＰＵ１が行い、リセットは演算コマンドを実行終了したとき浮動小数点演算回路ＦＰＵ０，ＦＰＵ１が行う。
【００３３】
予約レジスタＲＲＥＧは浮動小数点演算回路ＦＰＵ０，ＦＰＵ１にどの中央処理装置ＣＰＵ０，ＣＰＵ１が次の演算コマンドの実行を予約しているかを示す夫々２ビットの予約フラグ（第２情報）ＲＦ０，ＲＦ１の格納に利用される。予約フラグＲＦ０は浮動小数点演算回路ＦＰＵ０に対応され、予約フラグＢＦ１は浮動小数点演算回路ＦＰＵ１に対応され、値“００”は予約無、値“１０”は中央処理装置ＣＰＵ０による予約済み、値“１１”は中央処理装置ＣＰＵ１による予約済みを意味する。予約フラグＲＦ０，ＲＦ１に対する予約設定は適宜のタイミングで中央処理装置ＣＰＵ０，ＣＰＵ１が行い、中央処理装置ＣＰＵ０，ＣＰＵ１は予約した演算回路に演算コマンドを設定するのに併せて予約解除を行う。
【００３４】
図２には中央処理装置による命令実行シーケンスが例示される。ここでは一方の中央処理装置ＣＰＵ０による制御シーケンスを一例として説明する。中央処理装置ＣＰＵ０は複数個の命令を一単位として命令フェッチを行い（Ｓ１）、フェッチした命令がＦＰＵ命令であるか否かを判別し（Ｓ２）、ＣＰＵ命令についてはこれを実行する（Ｓ３）ＦＰＵ命令に対しては自ＦＰＵである浮動小数点演算回路ＦＰＵ０が利用可能であるか否かを判定する（Ｓ４）。この判定にはビジーレジスタＢＲＥＧと予約レジスタＲＦＲＥＧを参照する。浮動小数点演算回路ＦＰＵ０が演算コマンド実行中であるとき、必要に応じで演算コマンドの実行を予約すればよい。浮動小数点演算回路ＦＰＵ０の利用が可能なとき、それらＦＰＵ命令を並列実行するのにレジスタコンフリクトのようなリソース競合問題を生じないかを判定する判定処理を行なう（Ｓ５）。その判定処理の結果、フェッチしたＦＰＵ命令の実行を並列化できるかが判別される（Ｓ６）。並列処理できない場合には当該ＦＰＵ命令は浮動小数点演算回路ＦＰＵ０を用いて順次演算処理が行なわれ（Ｓ７）、その処理終了を待って（Ｓ８）ステップＳ１の処理も戻る。並列処理できる場合には、並列処理させるべき一のＦＰＵ命令に基づいて浮動小数点演算回路ＦＰＵ０の演算コマンドを実行させる（Ｓ９）。並列処理させるべき他のＦＰＵ命令を実行させる他ＦＰＵである浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中であるかを判別する（Ｓ１０）。この判別にはビジーレジスタＢＲＥＧを参照する。実行中でなければ当該他のＦＰＵ命令に対応する演算コマンドを浮動小数点演算回路ＦＰＵ１に発行し（Ｓ１１）、その演算処理結果を取得するのを待って（Ｓ１２）ステップＳ１の処理も戻る。ステップＳ１０により、他ＦＰＵである浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中でる場合には、当該浮動小数点演算回路ＦＰＵ１に対する次の演算コマンドの実行予約をしたか否かを判別する（Ｓ１３）。判別には例えば前記予約レジスタＲＲＥＧを参照すればよい。予約していなければ予約する（Ｓ１４）。この後、演算実行中の自ＦＰＵである浮動小数点演算回路ＦＰＵ０の演算が終了したかを判定する（Ｓ１５）。終了していなければ、ステップＳ１０、Ｓ１３、Ｓ１５の判定ループを繰り返す。先に、他ＦＰＵの演算が終了すれば、他ＦＰＵである浮動小数点演算回路ＦＰＵ１に他のＦＰＵ命令に対応する演算コマンド実行させる（Ｓ１１）。一方、ステップＳ１５で、自ＦＰＵである浮動小数点演算回路ＦＰＵ０の演算が終了したとことが先に検出されたときは、他ＦＰＵである浮動小数点演算回路ＦＰＵ１の演算予約を取り下げ（Ｓ１６）、自ＦＰＵである浮動小数点演算回路ＦＰＵ０に他のＦＰＵ命令に対応する演算コマンド実行させ（Ｓ１７）、浮動小数点演算回路ＦＰＵ０による演算の終了を待って（Ｓ１８）、ステップＳ１の処理に戻る。
【００３５】
図３には複数のＦＰＵ命令に対する演算処理タイミングが例示される。同図には浮動小数点加算命令（ＦＡＤＤ）を連続４命令実行する場合に例示される。ＦＲ０〜ＦＲ７はオペランドレジスタであり浮動小数点レジスタを意味する。４個の浮動小数点加算命令はレジスタコンフリクトを生じていない。ＦＰＵ命令はそのまま演算コマンドとして浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に供給される。浮動小数点演算回路ＦＰＵ０，ＦＰＵ１は１演算コマンドの実行に４サイクル費やすものとされ、１サイクル毎のパイプライン処理でコマンドを実行する。このとき、並列実行しなければ、４命令の浮動小数点演算に最短で７サイクル必要なところ、並列化すれば最短で５サイクルで済むようになる。
【００３６】
上記データプロセッサＤＰＲＣＳ１によれば、共有リソースである浮動小数点演算回路ＦＰＵ０，ＦＰＵ１へ演算コマンドを振り分けるとき、ビジーレジスタＢＲＥＧを参照することによって既にコマンドの実行中であるかを知ることができ、浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に対する演算指示の競合を容易に回避することができる。既にコマンド実行中であるときは予約レジスタＲＲＥＧを用いて浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に次の演算コマンドの実行を予約することにより、演算実行中の浮動小数点演算回路の演算終了後、速やかに当該浮動小数点演算回路に演算コマンドを振り当てて実行させることができる。したがって、一つの中央処理装置が複数のＦＰＵ命令をフェッチしたとき浮動小数点演算回路の空き状態と予約状態に応じて効率的に浮動小数点演算回路に演算コマンドを発行して演算を実行することができる。
【００３７】
一方でＦＰＵ０においてレジスタコンフリクトを生じる複数のＦＰＵ命令を連続して割付可能な場合、その複数の命令は連続してＦＰＵ０で実行することが最も効率が良く、１の中央処理装置ＣＰＵ０がＦＰＵ０に最初の命令を実行させると共に、ＦＰＵ０の予約レジスタＲＲＥＧを設定して続くＦＰＵ命令をＦＰＵ０で実行できるようにすればよい。例えば図3の１番目と２番目の浮動小数点加算命令とがレジスタコンフリクトを生じる場合は１番目と２番目の浮動小数点加算命令はＦＰＵ０に割り当てるように制御する。また１番目と４番目の浮動小数点加算命令とがレジスタコンフリクトを生じる場合は、１番目と４番目の浮動小数点加算命令をＦＰＵ０に割り当て、２番目と３番目の浮動小数点加算命令はＦＰＵ１に割り当てるように制御する。
【００３８】
このようにリソースの割り当て制御を行うことで、共有リソースの持つレジスタの情報をメモリに待避し再ロードすることを削減できるようになり、バストラフィックを原因とする処理効率の低下や消費電力の増加を抑制可能となる。予約レジスタＲＲＥＧを用いたこの様な命令割付により、各々独立に命令を実行し共有リソースである浮動小数点演算回路ＦＰＵ０，ＦＰＵ１を利用可能な複数の中央処理装置は、効率的に共有リソースを利用可能となる。
【００３９】
図４には別のデータプロセッサＤＰＲＣＳ２の例が示される。図１との相違点はＦＰＵバスＦＰＵ０，ＦＰＵ１に接続された比較回路ＣＭＰを備える点である。比較回路ＣＭＰはＦＰＵバスＦＰＵ０から供給されるデータとＦＰＵバスＦＰＵ１から供給されるデータを比較し、比較結果をバスＦＰＵＢ０に出力する。更に比較回路ＣＭＰは比較結果を一つの割り込み要因ＥＶＮＴとして割り込みコントローラＩＮＴＣに出力する。割り込みコントローラＩＮＴＣは割り込み信号ＩＮＴ０，ＩＮＴ１を中央処理装置ＣＰＵ０，ＣＰＵ１に出力する。割り込み信号ＩＮＴ０，ＩＮＴ１毎に有効な割り込み要因は中央処理装置ＣＰＵ０，ＣＰＵ１制御でプログラマブルに設定される。その他の点は図1と同様である。
【００４０】
図５にはＦＰＵ比較命令の命令実行シーケンスが例示される。ここでは一方の中央処理装置ＣＰＵ０による制御シーケンスを一例として説明する。同図に示される制御シーケンスは、図２の制御シーケンスに付加されるものであり、図２の制御シーケンスにおけるステップＳ６とステップＳ９のとの間から分岐される処理になっている。ステップＳ６において並列実行可能なＦＰＵ命令であると判別されたとき、そのＦＰＵ命令にＦＰＵ比較命令が後続しているかの判定を行い（Ｓ２０）、後続しなければ前述した図２のＳ９の処理に進む。ＦＰＵ比較命令が後続している場合には、先ず、並列処理させるべき一のＦＰＵ命令に基づいて浮動小数点演算回路ＦＰＵ０の演算コマンドを実行させる（Ｓ２１）。並列処理させるべき他のＦＰＵ命令を実行させる他ＦＰＵである浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中であるかを判別する（Ｓ２２）。この判別にはビジーレジスタＢＲＥＧを参照する。実行中でなければ当該他のＦＰＵ命令に対応する演算コマンドを浮動小数点演算回路ＦＰＵ１に発行し（Ｓ２３）、その演算処理結果を取得するのを待つ（Ｓ２４）と共に、自浮動小数点演算回路ＦＰＵ０による演算処理が終了するのを待つ（Ｓ２５）。双方の演算結果が揃ったところで、双方の演算結果を比較回路ＣＭＰで比較し、比較結果が中央処理装置ＣＰＵ０に与えられる（Ｓ２６）。この後、中央処理装置ＣＰＵ０は次の命令をフェッチし（Ｓ１）、例えばその比較結果に従った条件分岐等の処理を行なことができる。ステップＳ２２により、他ＦＰＵである浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中である場合には、当該浮動小数点演算回路ＦＰＵ１に対する次の演算コマンドの実行予約をしたか否かを判別する（Ｓ２７）。判別には例えば前記予約レジスタＲＲＥＧを参照すればよい。予約していなければ予約する（Ｓ２８）。この後、演算実行中の自ＦＰＵである浮動小数点演算回路ＦＰＵ０の演算が終了したかを判定する（Ｓ２９）。終了していなければ、ステップＳ２２、Ｓ２７、Ｓ２９の判定ループを繰り返す。先に、他自浮動小数点演算回路ＦＰＵ１の演算が終了すれば、前述の通り他浮動小数点演算回路ＦＰＵ１に他のＦＰＵ命令に対応する演算コマンド実行させる（Ｓ２３）。一方、ステップＳ２９で、自浮動小数点演算回路ＦＰＵ０の演算が終了したとことが先に検出されたときは、他自浮動小数点演算回路ＦＰＵ１の演算予約を取り下げ（Ｓ３０）、自浮動小数点演算回路ＦＰＵ０に他のＦＰＵ命令に対応する演算コマンド実行させ（Ｓ３１）、この演算が終了を待って（Ｓ１８）、前記比較処理に入る。この場合は比較対象にされる２個の浮動小数点演算は一つの浮動小数点演算回路ＦＰＵ０で順次行われることになる。
【００４１】
図６には浮動小数点加算命令による加算結果を比較命令で比較するときの演算処理タイミングが例示される。同図には浮動小数点加算命令（ＦＡＤＤ）を２命令実行し、その結果を浮動小数点比較命令（ＦＣＭＰ）で比較する場合について例示される。ＦＲ０〜ＦＲ３はオペランドレジスタであり浮動小数点レジスタを意味する。２個の浮動小数点加算命令はレジスタコンフリクトを生じていない。ＦＰＵ命令はそのまま演算コマンドとして浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に供給される。浮動小数点演算回路ＦＰＵ０，ＦＰＵ１は１演算コマンドの実行に４サイクル費やすものとされ、１サイクル毎のパイプライン処理でコマンドを実行する。このとき、図５のフローチャートで説明したＳ２１〜Ｓ２６のステップを経ることにより、並列処理の欄に示されるように、加算演算が並列され、並列に得られた演算結果を比較回路ＣＭＰで比較することによって、その比較結果を得ることができる。最短4サイクルで比較結果が得られる。比較処理には専用ハードウェアとしての比較回路ＣＭＰを用いるので、その比較動作が１サイクルで終了すると仮定している。これに対して順次命令を実行する直列処理では８サイクル要する。図5のＳ２９〜Ｓ２６のステップを経る場合であっても加算演算結果の比較に専用ハードウェアとしての比較回路ＣＭＰを用いるのでその分だけでも処理効率の向上に寄与する。
【００４２】
図７にはＦＰＵ命令による演算結果の保証を強化する演算保証処理の命令実行シーケンスが例示される。ここでは一方の中央処理装置ＣＰＵ０による制御シーケンスを一例として説明する。同図に示される制御シーケンスは、図２の制御シーケンスに付加されるものであり、図２の制御シーケンスにおけるステップＳ６とステップＳ９との間から分岐される処理になっている。ステップＳ６において並列実行可能なＦＰＵ命令であると判別されたとき、そのＦＰＵ命令が演算保証処理の対象であるが判別され（Ｓ４０）、その対象で無ければ前述した図２のＳ９の処理に進む。演算保証処理の対象であるか否かは命令のオペレーションコードに基づいて判定し、或いはデータプロセッサの動作モードに従って判定すればよい。前記演算保証処理の対象である場合には、先ず、対象となるＦＰＵ命令（演算保証処理対象ＦＰＵ命令）に基づいて浮動小数点演算回路ＦＰＵ０の演算コマンドを実行させる（Ｓ４１）。これに並行してもう一つの他浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中であるかを判別する（Ｓ４２）。この判別にはビジーレジスタＢＲＥＧを参照する。他浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中でる場合には、当該浮動小数点演算回路ＦＰＵ１に対する次の演算コマンドの実行予約をしたか否かを判別する（Ｓ４９）。判別には例えば前記予約レジスタＲＲＥＧを参照すればよい。予約していなければ予約し（Ｓ５０）、ステップＳ４２に戻る。ステップＳ４２において、他浮動小数点演算回路ＦＰＵ１が演算コマンドを実行中でないことが判別されると、当該演算保証対象ＦＰＵ命令に対応する演算コマンドを他浮動小数点演算回路ＦＰＵ１にも発行し（Ｓ４３）、その演算処理結果を取得するのを待つ（Ｓ４４）と共に、自浮動小数点演算回路ＦＰＵ０による演算処理が終了するのを待つ（Ｓ４５）。双方の演算結果が揃ったところで、双方の演算結果を比較回路ＣＭＰで比較し、比較結果がイベント信号ＥＶＮＴとして割り込みコントローラＩＮＴＣに与えられる。割り込みコントローラＩＮＴＣが比較結果不一致のイベントの発生を検出することにより（Ｓ４７）、割り込み信号ＩＮＴ０を受ける中央処理装置ＣＰＵ０は所定の割り込み処理を行なって、演算結果不一致に対する再演算やその他例外的な処理を行なうことになる。比較結果が一致の場合には割り込みは要求されず、最初に戻って次の命令をフェッチする（Ｓ１）。
【００４３】
図８には演算保証処理対象ＦＰＵ命令演算処理タイミングが例示される。ここでは演算保証処理対象ＦＰＵ命令として“ＦＡＤＤ  ＦＲ０，ＦＲ１”の加算命令を実行する場合について例示される。2個の浮動小数点演算回路ＦＰＵ０，ＦＰＵ１を並列動作させ、専用ハードウェアとしての比較回路ＣＭＰを用いるから、最短4サイクルで演算保証処理対象ＦＰＵ命令を実行することができる。
【００４４】
図４のデータプロセッサＤＰＲＣＳ２によれば浮動小数点演算回路ＦＰＵ０，ＦＰＵ１による演算結果を中央処理装置ＣＰＵ０，ＣＰＵ１を介して双方の演算バスＦＰＵＢ０，ＦＰＵＢ１から比較回路ＣＭＰに入力して比較する動作を行うことができる。したがって、２個の演算命令を実行し、その演算結果を比較してその結果を用いる命令を次に実行するような場合に、それら命令の実行ステップ数を低減することが可能になる。また、一つの演算命令による演算コマンドを２個の浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に与えて個別に演算させ、その演算結果を比較回路ＣＭＰで比較することが可能になり、これによって、浮動小数点演算回路ＦＰＵ０，ＦＰＵ１による演算結果に対して通常よりも高い信頼性を保証することも可能になる。前記比較回路ＣＭＰによる比較結果を一つの割り込み要因ＥＶＮＴとして割り込みコントローラＩＮＴＣが受けることにより、比較不一致の場合に、その割り込み処理プログラムに従って、演算命令の再実行、浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に対する故障検証処理、外部に対する故障通報処理等を行なうことができる。
【００４５】
図９には更に別のデータプロセッサＤＰＲＣＳ３の例が示される。図４との相違点はビジーレジスタと予約レジスタをプロセッサコアＰＣＯＲＥ０，ＰＣＯＲＥ１に個別配置した点である。プロセッサコアＰＣＯＲＥ０はビジーレジスタＢＲＥＧ０と予約レジスタＲＲＥＧ０を備える。ビジーレジスタＢＲＥＧ０は前記ビジーフラグＢＦ０を有し、予約レジスタＲＲＥＧ０は前記予約フラグＲＦ０を有する。双方のフラグＢＦ０，ＲＦ０の意義は図1で説明したデータプロセッサＤＰＲＣＳ１と同じである。ビジーフラグＢＦ０及び予約フラグＲＦ０は中央処理装置ＣＰＵ０に直接接続されると共にＦＢＰバスＦＰＵＢ１に接続され、ＣＰＵ０、ＣＰＵ１、ＦＰＵ０、ＦＰＵ１によって上記同様に参照並びに操作される。プロセッサコアＰＣＯＲＥ１はビジーレジスタＢＲＥＧ１と予約レジスタＲＲＥＧ１を備える。ビジーレジスタＢＲＥＧ１は前記ビジーフラグＢＦ１を有し、予約レジスタＲＲＥＧ１は前記予約フラグＲＦ１を有する。双方のフラグＢＦ１，ＲＦ１の意義は図1で説明したデータプロセッサＤＰＲＣＳ１と同じである。ビジーフラグＢＦ１及び予約フラグＲＦ１は中央処理装置ＣＰＵ１に直接接続されると共にＦＢＰバスＦＰＵＢ０に接続され、ＣＰＵ０、ＣＰＵ１、ＦＰＵ０、ＦＰＵ１によって上記同様に参照並びに操作される。このレジスタ構成においても図1のデータプロセッサＤＰＲＣＳ１及び図４のデータプロセッサＤＰＲＣＳ２と同様に動作されるが、プロセッサコア内において自中央処理装置による自ビジーレジスタ及び自予約レジスタに対する参照を速く行うことができる。共通バスとしてのＦＰＵＢ０，ＦＰＵＢ１を介するアクセスを要しないからである。
【００４６】
図１０には予約ビットに関する別の例を適用したデータプロセッサＤＰＲＣＳ４が示される。図４のデータプロセッサＤＰＲＣＳ２との相違点は予約フラグの意義を分割した点である。予約レジスタＲＲＥＧに関して夫々１ビットで予約フラグＲＦ０＿Ａ，ＲＦ１＿Ａを構成し、セット状態で予約済みを示し、リセット状態で予約無を示すようにする。要するに予約フラグＲＦ０＿Ａ，ＲＦ１＿Ａを参照したとき、浮動小数点演算回路ＦＰＵ０，ＦＰＵ１が予約されているか否かだけがわかる。このとき、中央処理装置ＣＰＵ０は、自らがどの浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に演算予約を行っているかを示す情報を予約レジスタＲＲＥＧとは別に、テンポラリレジスタのような内部レジスタＩＲＥＧ０に内部情報ＲＦ０＿Ｂとして保持する。同様に中央処理装置ＣＰＵ１は、自らがどの浮動小数点演算回路ＦＰＵ０，ＦＰＵ１に演算予約を行っているかを示す情報を予約レジスタＲＲＥＧとは別に、テンポラリレジスタのような内部レジスタＩＲＥＧ１に内部情報ＲＦ１＿Ｂとして保持する。内部情報はＲＦ０＿Ｂ、ＲＦ１＿Ｂは例えば夫々２ビットであり、値“００”は自らの予約無し、値“０１”はＦＰＵ０に対する予約有り、値“１０”はＦＰＵ１に対する予約有りを意味する。この構成により、自らが行った予約を確認する場合には外部の予約レジスタＲＲＥＧを参照しなくても済む。予約レジスタＲＲＥＧは他の中央処理装置から演算予約が入っているかを確認するための便に供するものとなる。特に図示はしないが、内部情報はＲＦ０＿Ｂ、ＲＦ１＿Ｂを各中央処理装置ＣＰＵ０，ＣＰＵ１が参照可能であれば、予約レジスタＲＥＧは省略可能である。
【００４７】
図１１には更に別のデータプロセッサＤＰＲＣＳ５の例が示される。図４との相違点はビジーレジスタと予約レジスタを夫々の中央処理装置ＣＰＵ０，ＣＰＵ１の内部に配置し、夫々専用信号線で相互に操作できるようにした点である。中央処理装置ＣＰＵ０はビジーレジスタＢＲＥＧ０と予約レジスタＲＲＥＧ０を備える。ビジーレジスタＢＲＥＧ０は前記ビジーフラグＢＦ０を有し、予約レジスタＲＲＥＧ０は前記予約フラグＲＦ０を有する。中央処理装置ＣＰＵ１はビジーレジスタＢＲＥＧ１と予約レジスタＲＲＥＧ１を備える。ビジーレジスタＢＲＥＧ１は前記ビジーフラグＢＦ１を有し、予約レジスタＲＲＥＧ１は前記予約フラグＲＦ１を有する。フラグＢＦ０，ＲＦ０，ＢＦ１，ＲＦ１の意義は図1で説明したデータプロセッサＤＰＲＣＳ１と基本的に同じである。但し、中央処理装置ＣＰＵ０，ＣＰＵ１は相互に他方のビジーレジスタと予約レジスタを一対一対応の専用信号線群ＬＩＮを介して参照及び操作できるようになっている。共通バスとしてのＦＰＵＢ０，ＦＰＵＢ１を介するアクセスを全く要しないが、一対一対応の専用信号線群ＬＩＮが複雑になる。特に図示はしないが、ＲＦ０の代わりに図１０のＲＦ０＿Ｂを採用し、ＲＦ１の代わりに図１０のＲＦ１＿Ｂを採用してもよい。
【００４８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４９】
例えば、プロセッサコア、中央処理装置、浮動小数点演算回路の数は３個以上であてもよい。演算回路は浮動小数点演算回路に限定されず、ディジタル信号処理演算回路、符号化復号回路、画像処理回路、音声処理回路など、中央処理装置の制御下で演算処理を行なう適宜の回路であってよい。キャッシュメモリに対して一次記憶とされるメモリは半導体集積回路化されたデータプロセッサの外部に接続された外部メモリであてもよい。プロセッサコアはキャッシュメモリを備えなくてもよいし、また、仮想記憶に用いるアドレス変換バッファを備えてもよい。本発明は、１個の中央処理装置に対して複数個の演算回路を演算リソースとして利用可能とするデータプロセッサに広く適用することができる。本発明のデータプロセッサはシングルチップであることに限定されずマルチチップで構成してもよい。
【図面の簡単な説明】
【００５０】
【図１】本発明の一例に係るデータプロセッサＤＰＲＣＳ１を示すブロック図である。
【図２】データプロセッサＤＰＲＣＳ１における中央処理装置による命令実行シーケンスを例示するフローチャートである。
【図３】複数のＦＰＵ命令に対する並列演算処理タイミングを例示する説明図である。
【図４】別のデータプロセッサＤＰＲＣＳ２を例示するブロック図である。
【図５】データプロセッサＤＰＲＣＳ２におけるＦＰＵ比較命令の命令実行シーケンスを例示するフローチャートである。
【図６】データプロセッサＤＰＲＣＳ２における浮動小数点加算命令による加算結果を比較命令で比較するときの演算処理タイミングを例示する説明図である。
【図７】データプロセッサＤＰＲＣＳ２における演算保証処理の命令実行シーケンスを例示するフローチャートである。
【図８】データプロセッサＤＰＲＣＳ２における演算保証処理対象ＦＰＵ命令演算処理タイミングを例示する説明図である。
【図９】更に別のデータプロセッサＤＰＲＣＳ３を例示するブロック図である。
【図１０】更に別のデータプロセッサＤＰＲＣＳ４を例示するブロック図である。
【図１１】更に別のデータプロセッサＤＰＲＣＳ５を例示するブロック図である。
【符号の説明】
【００５１】
ＤＰＲＣＳ１〜ＤＰＲＣＳ５  データプロセッサ
ＰＣＯＲＥ０、ＰＣＯＲＥ１  プロセッサコア
ＦＰＵＢ０，ＦＰＵＢ１  ＦＰＵバス
ＰＲＰＨＢ  周辺バス
ＩＮＴＣ  割り込みコントローラ
ＥＸＭＥＭ  外部メモリ
ＰＲＰＨ＿Ａ，ＰＲＰＨ＿Ｂ  その他周辺回路
ＣＰＵ０，ＣＰＵ１  中央処理装置
ＭＥＭ０，ＭＥＭ１  ワークメモリ
ＦＰＵ０，ＦＰＵ１  浮動小数点演算回路
ＣＡＣＨＥ０，ＣＡＣＨＥ１  キャッシュメモリ
ＣＰＵＢ０，ＣＰＵＢ１  ＣＰＵバス
ＢＲＥＧ  ビジーレジスタ
ＢＦ０，ＢＦ１  ビジーフラグ（第１情報）
ＲＲＥＧ  予約レジスタ
ＲＦ０，ＲＦ１  予約フラグ（第２情報）
ＲＦ０＿Ａ，ＲＦ１＿Ａ、ＲＦ０＿Ｂ，ＲＦ１＿Ｂ  予約フラグ
ＣＭＰ  比較回路
ＥＶＮＴ  比較不一致の割り込み要因信号
ＩＮＴ０，ＩＮＴ１  割り込み信号
【図１】
2008217623.tif 000003
【図２】
2008217623.tif 000004
【図３】
2008217623.tif 000005
【図４】
2008217623.tif 000006
【図５】
2008217623.tif 000007
【図６】
2008217623.tif 000008
【図７】
2008217623.tif 000009
【図８】
2008217623.tif 000010
【図９】
2008217623.tif 000011
【図１０】
2008217623.tif 000012
【図１１】
2008217623.tif 000013