(57)【要約】【課題】  プロセッサコアが周辺回路の終了判定を行うことでポーリングやストールが発生し、他の処理を実行することができないため、プロセッサ全体の性能が低下する。【解決手段】  データ転送エンジン内に処理ステータスレジスタを具備し、処理ステータスレジスタは周辺回路によって書き換えが可能であり、データ処理が終了した時点で各周辺回路に割り当てられたビットを設ける。データ転送エンジンが、プロセッサコアの代わりに処理ステータスレジスタの値を監視し、全ての処理が終了した時点で自分自身を起動し、割り当てられたデータ転送を開始する。【選択図】図１
2005165588.tif 000002
【特許請求の範囲】
【請求項１】
演算を行うプロセッサコアと、動画像処理を行う動き予測・補償エンジンと、プロセッサコアの演算補助を行うコプロセッサと、ローカルメモリをアクセス制御するためのメモリインターフェースと、データ転送を制御するデータ転送エンジンと、前記プロセッサコアと前記動き予測・補償エンジンと前記コプロセッサと前記メモリインターフェースと前記データ転送エンジンを接続する双方向の内部バスを具備し、前記データ転送エンジンは前記内部バスのアクセスを制御する内部バスインターフェースと、前記内部バスインターフェースからのアクセスによって書き換え可能なＰＩＯレジスタと、ＰＩＯレジスタ内にデータ転送やデータ処理の終了を示す処理ステータスレジスタと、処理ステータスレジスタのビット全ての論理積をとるＡＮＤ回路と、その結果によってデータ転送エンジンを起動するデータ転送開始信号と、プロセッサコアや動き予測・補償エンジン、コプロセッサなどの演算終了時にデータ転送エンジン内の処理ステータスレジスタを書き換え、処理ステータスレジスタの全てのビットの論理積の結果が１であるならば、データ転送エンジン自身を起動し、データ転送を開始することを特徴とするマイクロプロセッサ。
【請求項２】
前記ＰＩＯレジスタは複数個の処理ステータスレジスタを有し、それぞれの条件によって前記データ転送エンジンを起動されることを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
演算を行うプロセッサコアと、動画像処理を行う動き予測・補償エンジンと、プロセッサコアの演算補助を行うコプロセッサと、ローカルメモリをアクセス制御するためのメモリインターフェースと、データ転送を制御するデータ転送エンジンとこれらを互いに接続する双方向の内部バスを具備し、データ転送エンジン内に内部バスのアクセスを制御する内部バスインターフェースと、内部バスインターフェースからのアクセスによって書き換え可能なＰＩＯレジスタと、ＰＩＯレジスタ内にデータ転送やデータ処理の終了を示す処理ステータスレジスタと、データ転送エンジンを起動する条件を示す起動条件レジスタと、処理ステータスレジスタと起動条件レジスタの各ビットを一致回路で判定し照合結果の全ビットの論理積の結果が１であるならば、データ転送エンジン自身を起動し、データ転送を開始することを特徴とするマイクロプロセッサ。
【請求項４】
請求項１記載のデータ転送エンジンを具備し、プロセッサコアからデータ転送エンジンの処理が設定可能であることを特徴とするマイクロプロセッサ。
【請求項５】
プロセッサコアと、動き予測・補償エンジンと、コプロセッサと、データ転送エンジンと、前記データ転送エンジン内にあって演算処理の進行状況を示す処理ステータスレジスタを具備し、それぞれが並列にデータ処理を実行可能なマイクロプロセッサにおいて、
前記プロセッサコアでの処理が終了すると処理ステータスレジスタを更新しプロセッサコアは別の処理を開始し、
動き予測・補償エンジンでの処理が終了すると処理ステータスレジスタを更新し動き予測・補償エンジンは別の処理を開始し、
前記処理ステータスレジスタが一定の条件を満たした場合データ転送エンジンのデータ転送処理が起動されコプロセッサへのデータ転送を開始しコプロセッサでデータ処理を行うことを特徴とする演算処理方法。
【請求項６】
前記処理ステータスレジスタプロセッサにおいて、
離散コサイン変換と量子化処理が終了した時点で処理ステータスレジスタへ処理の終了を通知し、
動き予測・補償エンジンでの動き予測処理が終了した時点で処理ステータスレジスタへ処理の終了を通知し、
その両方が終了した時点でコプロセッサでの可変長符号化処理を行うためのデータ転送を開始することを特徴とする請求項５記載の演算処理方法。
【請求項７】
内部バスのアクセスを制御する内部バスインターフェースと、内部バスインターフェースからのアクセスによって書き換え可能なＰＩＯレジスタと、ＰＩＯレジスタ内にデータ転送やデータ処理の終了を示す処理ステータスレジスタと、処理ステータスレジスタのビット全ての論理積をとるＡＮＤ回路と、その結果によってデータ転送エンジンを起動するデータ転送開始信号と、プロセッサコアや動き予測・補償エンジン、コプロセッサなどの演算終了時にデータ転送エンジン内の処理ステータスレジスタを書き換え、処理ステータスレジスタの全てのビットの論理積の結果が１であるならば、データ転送エンジン自身を起動し、データ転送を開始するデータ転送エンジンを具備する、複数のマイクロプロセッサが汎用バスに接続されているコンピュータシステムであって、あるマイクロプロセッサＡの処理が終了した時点で別のマイクロプロセッサＢへのデータ転送を行う際、あるマイクロプロセッサＡのデータ転送エンジン内ＰＩＯレジスタの値をマイクロプロセッサＢによって書き換え、マイクロプロセッサＡのデータ転送エンジンを起動できることを特徴とするコンピュータシステム。
【請求項８】
内部に処理ステータスレジスタを具備するデータ転送エンジンと、全体の処理の開始の前にデータ転送の内容や種類を設定しておくプロセッサコアとを有し、前記処理ステータスレジスタは周辺回路によって書き換えが可能であり、データ処理が終了した時点で各周辺回路に割り当てられたビットを更新し、前記データ転送エンジンは処理ステータスレジスタの値を監視し、全ての処理が終了した時点で自分自身を起動し、プロセッサコアにより予め割り当てられたデータ転送を開始することを特徴とするマイクロプロセッサ。
【請求項９】
プロセッサコアによって予め設定されているデータ転送の内容や種類に従い、
ローカルメモリからデータを動き予測・補償エンジンに読み出し、当該データに第一の処理をし、
そのデータをデータ転送エンジンを通しコプロセッサに転送して第二の処理をし、
コプロセッサからデータ転送エンジンに転送してローカルメモリに書き戻し、
以上の処理をローカルメモリのあるデータ単位毎に次々と実行し、
以上の処理の転送のトリガーは前記データ転送エンジンにより各装置の処理ステータスを監視し処理ステータスがある決められた状態になることによって行なわれることを特徴とする演算処理方法。
【請求項１０】
前記第一の処理は動き予測処理であり、前記第二の処理は可変長符号化処理であることを特徴とする請求項９記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサコアを使用することなくデータ転送を行うことができるマイクロプロセッサに関する。
【背景技術】
【０００２】
関連特許として、特開平１１−３３８７３５号公報の「システムＬＳＩ」がある。この文献では低速で動作する入出力装置の処理の転送すべきデータがあるかどうかをプロセッサコアが確認する場合に、内部バスを用いてアクセスする。その間、プロセッサコアは待機することになるが入出力装置とプロセッサコア間を接続しているバスが使用中であった場合には、入出力装置の状態を得ることが出来ないため、プロセッサコアはそのまま停止した状態になる。そこで、低速で動作する入出力周辺装置の状態を得るために内部バスを介して行うのではなく、各入出力装置とプロセッサコアを専用線で接続することにより、各入出力装置の状態をプロセッサコアが直ちに参照できる状態監視レジスタをプロセッサコアに設けた。また、状態監視レジスタを読み出す命令を設けることで、プロセッサコアはすぐに入出力装置の状態を得ることができ、ウエイトするサイクルを削減して入出力装置のデータ転送を行うことが可能である。
【０００３】
【特許文献１】特開平１１−３３８７３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
複数の様々な速度で動作する周辺回路の処理が終了時点で、次の処理に移行するモデルにおいて、最も完了するのが遅い周辺回路の終了を判定するまでプロセッサコアはポーリングルーチンから遷移できない。つまり、他の処理は終わっているが、たった一つの処理が終わっていないことにより、周辺回路の状態を判断することを繰り返し行うため、実質的にプロセッサコアの処理性能が低下してしまう。
【０００５】
本発明はこのような問題を鑑みてなされたものであり、プロセッサコアが周辺回路の処理の終了をポーリングすることなく、次に行われるべきデータ転送が自動的に行うことができるデータ転送エンジンを備えたマイクロプロセッサを得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るマイクロプロセッサは、データ転送エンジン内に処理ステータスレジスタを具備する。処理ステータスレジスタは周辺回路によって書き換えが可能であり、データ処理が終了した時点で各周辺回路に割り当てられたビットを更新する。プロセッサコアは全体の処理の開始の前にデータ転送の内容や種類を設定しておく。（例えば、ローカルメモリからデータ転送エンジンにデータを送り、それからコプロセッサにデータを送り処理が行われた後そのデータをデータ転送エンジンに送る。データ転送エンジンはそのデータをローカルメモリに書き戻す。）データ転送エンジンは処理ステータスレジスタの値を監視し、全ての処理が終了した時点で自分自身を起動し、プロセッサコアにより予め割り当てられたデータ転送を開始する。データ転送がプロセッサコアを介さずに実行されるため、プロセッサコアの処理性能を落とさずにデータ転送を行うことが可能である。
【発明の効果】
【０００７】
本発明を適用することで、周辺回路のデータ処理の終了を監視する必要がなくなる。そのため、プロセッサコアのポーリングやストールをなくし、マイクロプロセッサ全体の性能向上が可能となる。
【発明を実施するための最良の形態】
【０００８】
本発明の実施例について図面を参照して説明する。図１に本発明を適用したマイクロプロセッサの構成例を示す。なお簡略化のため、本発明の適用と直接関係ない部分は省略する。
【０００９】
本発明のアプリケーションの例を述べる。ローカルメモリ１０７からデータを動き予測・補償エンジン１０２に読み出す。ここでは例えばＭＰＥＧ処理がなされる。そして、そのデータはデータ転送エンジン１０８を通り、コプロセッサ１０３に転送される。そして、コプロセッサ１０３からデータ転送エンジンに転送され、ローカルメモリに書き戻される。以上の処理がローカルメモリ１０７のあるデータ単位毎に次々と実行される。また、以上の処理がプロセッサコア１０１によって予め決められている。転送のトリガーはデータ転送エンジン１０８により各装置の処理ステータスを監視し、処理ステータスがある決められた状態になることによって行なわれる。以下の説明では「１」は動作可能、「０」は処理および動作不可能を示している。
【００１０】
マイクロプロセッサ１００内部には、演算処理を行うプロセッサコア１０１が内部バス１０５へ接続されており、同様に動画用演算処理を行う動き予測・補償エンジン１０２、プロセッサコア１０１の演算補助を行うコプロセッサ１０３、マイクロプロセッサ１００外部のローカルメモリ１０７とのデータ転送をローカルメモリバス１０６を通して行うメモリインターフェース１０４が内部バス１０５へ接続されている。
【００１１】
データ転送エンジン１０８内には内部バス１０５を制御する内部バスインターフェース１０９があり、ＰＩＯレジスタ１１１とＰＩＯ制御バス１１０で接続しており、内容を読み書き可能である。ＰＩＯレジスタ１１１内に処理ステータスレジスタ１１２があり、このレジスタのビットをＡＮＤ回路１１３により論理積をとり、その結果によってデータ転送エンジン１０８に起動をかけ、データ転送を開始する。
【００１２】
処理ステータスレジスタ１１２のビットの各装置との対応関係はプロセッサコア１０１や各周辺のブロック固定ではなくソフトウェアによって自由に設定することができる。プロセッサコア１０１にビット０を割り当て、動き予測・補償エンジン１０２にビット１を割り当て、両方の処理が終わった時点でコプロセッサ１０３を起動する場合、処理ステータスレジスタ１１２のビット０、ビット１以外のビットはソフトウェアによって全て１に設定する。プロセッサコア１０１、もしくは動き予測・補償エンジン１０２の処理が終わった時点で内部バス１０５を通してデータ転送エンジン１０８へ終了した通知が伝えられ、処理ステータスレジスタ１１２が更新される。処理ステータスレジスタ１１２の全てのビットをＡＮＤ回路１１３によって論理積をとり、プロセッサコア１０１と動き予測・補償エンジン１０２の処理が双方終わった時点で出力が１となり、データ転送エンジン１０８を起動する。それによってローカルメモリ１０７からコプロセッサ１０３へのデータ転送が開始され、コプロセッサ１０３はその処理を行う。
【００１３】
図２は処理ステータスレジスタ１１２が複数実装されているマイクロプロセッサ１００の例である。マイクロプロセッサ１００内部には、演算処理を行うプロセッサコア１０１が内部バス１０５へ接続されており、同様に動画用演算処理を行う動き予測・補償エンジン１０２、プロセッサコア１０１の演算補助を行うコプロセッサ１０３、マイクロプロセッサ１００外部のローカルメモリ１０７とのデータ転送をローカルメモリバス１０６を通して行うメモリインターフェース１０４が内部バス１０５へ接続されている。
【００１４】
データ転送エンジン１０８内には内部バス１０５を制御する内部バスインターフェース１０９があり、ＰＩＯレジスタ１１１とＰＩＯ制御バス１１０で接続しており、内容を読み書き可能できる。ＰＩＯレジスタ１１１内に処理ステータスレジスタ０  １１２から処理ステータスレジスタｎ  １１２ｎがあり、処理ステータスレジスタ１１２のビットをＡＮＤ回路１１３から１１３ｎによりレジスタ毎に論理積をとる。その結果によりデータ転送エンジン１０８を起動し、データ転送を開始する。また、複数ある処理ステータスレジスタ１１２は独立に対応するデータ転送を起動することが可能である。
【００１５】
図３はＰＩＯレジスタ１１１にある特定の処理が終了した時点でデータ転送エンジン１０８を起動であるように本発明を適用した例である。マイクロプロセッサ１００内部には、演算処理を行うプロセッサコア１０１が内部バス１０５へ接続されており、同様に動画用演算処理を行う動き予測・補償エンジン１０２、プロセッサコア１０１の演算補助を行うコプロセッサ１０３、マイクロプロセッサ１００外部のローカルメモリ１０７とのデータ転送をローカルメモリバス１０６を通して行うメモリインターフェース１０４が内部バス１０５へ接続されている。
【００１６】
データ転送エンジン１０８内には内部バス１０５を制御する内部バスインターフェース１０９があり、ＰＩＯレジスタ１１１とＰＩＯ制御バス１１０で接続しており、内容を読み書き可能できる。ＰＩＯレジスタ１１１内には処理ステータスレジスタ１１２と起動条件レジスタ１２０が実装されている。起動条件とは例えばプロセッサコア１０１が稼動中でも動き予測・補償エンジン１０２やコプロセッサ１０３が処理が終了している状態にあるときを示す。処理ステータスレジスタ１１２と条件起動レジスタ１２０のビット毎に一致回路であるＸＮＯＲ回路１２１を通し照合結果１２２が判明する。この値をＡＮＤ回路１１３で論理積をとり、その結果が１であるならばデータ転送エンジン１０８を起動し、データ転送を開始する。
【００１７】
起動条件レジスタ１２０にはデータ転送処理の途中にも起動したい場合（例えば、稼動中の処理には影響しないで、その処理に必要なデータを先に送っておくとき）に有効である。プロセッサコア１０１は２処理を行い、動き予測・補償エンジン１０２では１処理行う場合、起動条件レジスタ１２０へプロセッサコア１０１の最初の１処理が終わったら動き予測・補償エンジン１０２へのデータ転送を開始するようセットする。動き予測エンジンへのデータ転送が開始されたら、起動条件レジスタ１２０をプロセッサコアの２番目の処理と動き予測・補償エンジン１０２の処理が終了した時点でコプロセッサ１０３へのデータ転送を起動する。
【００１８】
また、起動条件レジスタ１２０を複数個持つことで、処理の切れ目やデータ転送開始時点での起動条件レジスタ１２０を一連のデータ処理の間に書き換える必要がなくなる。
【００１９】
ＭＰＥＧの符号化処理を実行した場合のタイミングチャートを図４に示す。プロセッサコア１０１にて離散コサイン変換（ＤＣＴ）処理２００と量子化処理２０１を行う。また、それと同時に動き予測・補償エンジン１０２では動き予測処理２０２が実行される。このとき、処理ステータスレジスタ１１２が８ビットのレジスタであり、プロセッサコア１０１の処理を処理ステータスレジスタ１１２のビット１へ、動き予測・補償エンジン１０２の処理を処理ステータスレジスタ１１２のビット０へソフトウェアにて割り当てる。
【００２０】
起動した時点での処理ステータスレジスタ１１２は０ｘＦＣ（２１０）を示しているが、プロセッサコア１０１が時間ｔ１  ３００で処理が終了した時点で、処理ステータスレジスタ１１２を更新し、値は０ｘＦＥ（２１１）となる。その後、時間ｔ２  ３０１で動き予測・補償エンジン１０２の動き予測処理２０２が終了し、処理ステータスレジスタ１１２を更新し、値は０ｘＦＦ（２１２）となる。全てのビットが１となったため、データ転送エンジン１０８を起動し、コプロセッサ１０３へのデータ転送を行い、可変長符号化処理２０３が開始される。可変長符号化処理においては、データを符号化しながら、符号化されたデータを順次転送する処理が行われる。時間ｔ３  ３０２の時点でコプロセッサ１０３の処理が終了し、処理ステータスレジスタはクリアされる（２１３）。
【００２１】
図５では、処理ステータスレジスタ１１２がクリアされるタイミングが、データ転送エンジン１０８が起動されてから行われる場合を示したフローチャートである。プロセッサコア１０１ではＤＣＴ処理２００と量子化処理２０１が行われ、動き予測・補償エンジン１０２では動き予測処理２０２が実行される。時間ｔ４  ３０３にてプロセッサコア１０１の処理が終了し処理ステータスレジスタ１１２の値は０ｘＦＣ（２１４）から０ｘＦＥ（２１５）へ更新される。なお、プロセッサコア１０１は引き続き別の処理を開始する。処理ステータスレジスタ１１２の値が全て１ではないため、コプロセッサ１０３へのデータ転送は起動されない。時間ｔ５  ３０４にて動き予測・補償エンジンの動き予測処理２０２が終了するため、処理ステータスレジスタ１１８が更新され０ｘＦＦ（２１６）となり、全てのビットが１となったため、時間ｔ６  ３０５でデータ転送エンジン１０８を起動し、コプロセッサ１０３へのデータ転送を開始する。そのとき、同時に処理ステータスレジスタ１１２をクリアすることで、処理ステータスレジスタへ次のデータ転送の関係を知らせることができ、処理時間の短縮化を図ることが可能である。
【００２２】
本発明を適用したデータ転送エンジンを搭載するマイクロプロセッサを複数使用するマルチプロセッサ構成のコンピュータシステムを図６に示す。マイクロプロセッサＡ１００ａは、プロセッサコア１０１と、マイクロプロセッサＡ１００ａ外部のローカルメモリ１０７ａとローカルメモリバス１０６ａを用いてデータ転送を行うメモリバスインターフェースと、外部ＰＣＩバス１３１とデータ転送を行うＰＣＩバスインターフェース１３０と、内部バス１０５のデータ転送を行うデータ転送エンジン１０８を具備する。
【００２３】
さらに、ＰＣＩバスインターフェース１３１上には、マイクロプロセッサＡ１００ａだけでなくマイクロプロセッサＢ１００ｂが接続されており、マイクロプロセッサＢ１００ｂはローカルメモリ１０７ｂとローカルメモリバス１０６ｂを用いて接続されている。データ転送エンジン１０８内にＰＩＯレジスタ１１１があり、さらにその一つのＰＩＯレジスタとして処理ステータスレジスタ１１２を具備する。
【００２４】
マイクロプロセッサＡ１００ａの処理ステータスレジスタはＰＣＩのメモリ空間に割り当てられており、マイクロプロセッサＢ１００ｂからの参照、更新が可能である。そのため、マイクロプロセッサＢ１００ｂの処理が終了した段階でＰＣＩバス１３１を経由してマイクロプロセッサＡ１００ａ内の処理レジスタ１１２を更新し、マイクロプロセッサＡ１００ａがデータ転送を自動的に実行することが可能である。マイクロプロセッサＢ１００Ｂのローカルメモリ１０７ｂのデータをマイクロプロセッサＡ１００ａのローカルメモリ１０７ａへ転送したり、マイクロプロセッサＡで処理結果をマイクロプロセッサＢ１００ｂへ転送したりすることができる。
【００２５】
さらに、マイクロプロセッサ双方が処理ステータスレジスタを具備するマルチプロセッサ構成におけるデータ処理の流れを図７に示す。マイクロプロセッサＡのプロセッサコアＡでは処理Ａ２５０を、マイクロプロセッサＢのプロセッサコアＢは処理Ｂ２５１を実行している。プロセッサコアＢの処理が終了し、処理レジスタ更新２５２においてマイクロプロセッサＡの処理ステータスレジスタを更新することでマイクロプロセッサＢへのデータ転送２５３が自動的に開始される。
【００２６】
その間、マイクロプロセッサＢのプロセッサコアＢでは処理Ｃ２５４が実行され、その処理が終了した時点で、マイクロプロセッサＢ内の処理ステータスレジスタの更新２５５を行い、続いて処理Ｄ２５６を実行する。マイクロプロセッサＡで実行されているデータ転送が終了した時点で、マイクロプロセッサＢが具備する処理ステータスレジスタの更新２５７を行う。その結果によってマイクロプロセッサＢが具備するデータ転送エンジンＢが起動されデータ転送２５８を実行することが可能である。
【図面の簡単な説明】
【００２７】
【図１】本発明を搭載したマイクロプロセッサの基本構成図
【図２】複数の処理ステータスレジスタの構成図
【図３】起動条件を制御可能なマイクロプロセッサの構成図
【図４】ＭＰＥＧの符号化処理でのタイミングチャート図
【図５】処理ステータスレジスタの初期化をデータ転送と同時に実行するタイミングチャート図
【図６】本発明を搭載したマイクロプロセッサを用いたマルチプロセッサの構成図
【図７】マルチプロセッサ構成時のタイミングチャート図
【符号の説明】
【００２８】
１００・・・マイクロプロセッサ
１０１・・・プロセッサコア
１０２・・・動き予測・補償エンジン
１０３・・・コプロセッサ
１０４・・・メモリインターフェース
１０８・・・データ転送エンジン
１１１・・・ＰＩＯレジスタ
１１２・・・処理ステータスレジスタ
２００・・・ＤＣＴ処理
２０１・・・量子化処理
２０２・・・動き予測処理
２０３・・・可変長符号化処理
【図１】
2005165588.tif 000003
【図２】
2005165588.tif 000004
【図３】
2005165588.tif 000005
【図４】
2005165588.tif 000006
【図５】
2005165588.tif 000007
【図６】
2005165588.tif 000008
【図７】
2005165588.tif 000009