(57)【要約】【課題】ＣＰＵの演算器の入出力であるレジスタファイルへのメモリからの演算データの供給、もしくはＣＰＵの演算器の演算結果をレジスタファイルからのメモリに格納するに際して、ＣＰＵの負荷を軽減すること。【解決手段】ＭＰＵ１のＣＰＵ２は、メインプロセッサ６と、ＳＩＭＤ型の演算器ＡＬＵ０…ＡＬＵ３を含むコプロセッサ３と、ＡＬＵ０…ＡＬＵ３の演算データを格納するレジスタファイル４と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）１５とで構成されている。ＣＰＵ２の指示に応答してＤＭＡＣ１５は、４と外部メモリ１８の間で演算データをＤＭＡ転送して、ＣＰＵ２の負担を低減する。ＤＭＡＣ１５によりＤＭＡ転送される演算データは、演算のためのソース・データと演算結果とである。特に、ＤＭＡＣ１５は、４内部でＡＬＵ演算データを格納する任意のレジスタを指定するレジスタファイルＤＭＡ転送レジスタ１５４を含む。【選択図】図１
2007328627.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサとコプロセッサとレジスタファイルとを有する中央処理ユニットと、
前記中央処理ユニットと内部バスを介して接続された内部メモリとバスコントローラとダイレクトメモリアクセスコントローラとを含み、
前記コプロセッサは演算器を含んだ半導体集積回路であって、
前記半導体集積回路は、外部メモリと接続可能であり、
前記中央処理ユニットでは前記コプロセッサの前記演算器の２つの入力に前記レジスタファイルの内部の２つのレジスタの２つのデータが供給されることによって、前記メインプロセッサから供給される命令に応答して前記コプロセッサの前記演算器はレジスタ演算を実行して、
前記中央処理ユニットの前記メインプロセッサからの前記ダイレクトメモリアクセスコントローラへのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラは前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記２つのデータを前記外部メモリから前記中央処理ユニットの前記レジスタファイルへ転送するデータ転送を開始して、
前記バスコントローラは、前記中央処理ユニットの前記レジスタファイルの内部に前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記２つのデータが前記外部メモリから前記ダイレクトメモリアクセスコントローラによって転送されたことを前記中央処理ユニットの前記メインプロセッサに通知して、
前記中央処理ユニットの前記メインプロセッサは、前記バスコントローラからの前記通知に応答して前記レジスタ演算の開始を前記コプロセッサの前記演算器に指示するものである半導体集積回路。
【請求項２】
前記バスコントローラから前記中央処理ユニットの前記メインプロセッサへの通知は、前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記２つのデータが前記外部メモリから前記レジスタファイルの内部に前記ダイレクトメモリアクセスコントローラによって転送されたことを示すデータ到着信号を前記バスコントローラから前記中央処理ユニットの前記メインプロセッサに供給することにより実行され、
前記中央処理ユニットの前記メインプロセッサから前記コプロセッサの前記演算器への前記レジスタ演算の前記開始の前記指示は、前記バスコントローラからの前記通知に応答して、前記中央処理ユニットの前記メインプロセッサが前記レジスタ演算の前記開始するための演算開始指示信号を前記コプロセッサの前記演算器に供給することにより実行される請求項１に記載の半導体集積回路。
【請求項３】
前記ダイレクトメモリアクセスコントローラは、前記ダイレクトメモリアクセスコントローラによるＤＭＡ転送の対象とされる前記レジスタファイルの内部の任意のレジスタを指定するレジスタファイルＤＭＡ転送指定レジスタと、前記ＤＭＡ転送の前記対象の前記任意のレジスタがソースレジスタかディスティネーションレジスタかを指定するレジスタファイルＤＭＡ転送制御レジスタとを有する請求項１と請求項２とのいずれかに記載の半導体集積回路。
【請求項４】
前記コプロセッサの前記演算器による前記レジスタ演算の演算結果は前記レジスタファイルの内部で前記ダイレクトメモリアクセスコントローラの前記レジスタファイルＤＭＡ転送制御レジスタにより前記ディスティネーションレジスタとして指定された１つのレジスタに格納され、
前記中央処理ユニットの前記メインプロセッサから前記ダイレクトメモリアクセスコントローラへのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラは前記レジスタファイルの内部の前記ディスティネーションレジスタに格納された前記演算結果のデータを前記レジスタファイルから前記外部メモリへ転送するデータ転送を開始する請求項３に記載の半導体集積回路。
【請求項５】
前記レジスタファイルの内部の複数の汎用レジスタの状態を示す複数の状態フラグを格納する状態フラグレジスタを前記中央処理ユニットが更に含み、
前記状態フラグレジスタの前記複数の状態フラグのそれぞれは前記複数の汎用レジスタの対応する汎用レジスタが未書き込み状態であるか書き込み状態であるかを示すビット情報を含む請求項１から請求項４までのいずれかに記載の半導体集積回路。
【請求項６】
前記状態フラグレジスタにおいて前記対応する汎用レジスタが前記未書き込み状態であることは前記ビット情報のリセット状態で示され、前記対応する汎用レジスタが前記書き込み状態であることは前記ビット情報のセット状態で示される請求項５に記載の半導体集積回路。
【請求項７】
前記レジスタファイルの内部の前記ソースレジスタに格納されたデータが前記演算器の演算に何回使用されるかのカウント値を前記中央処理ユニットが保持する請求項５と請求項６とのいずれかに記載の半導体集積回路。
【請求項８】
前記コプロセッサの前記演算器は単一命令に応答して複数のデータを処理するＳＩＭＤ型の複数の演算器である請求項１から請求項７までのいずれかに記載の半導体集積回路。
【請求項９】
前記メインプロセッサは縮小命令セットコンピュータである請求項８に記載の半導体集積回路。
【請求項１０】
メインプロセッサとコプロセッサとレジスタファイルとを有する中央処理ユニットと、
前記中央処理ユニットと内部バスを介して接続された内部メモリとバスコントローラとダイレクトメモリアクセスコントローラとを含み、
前記コプロセッサは演算器を含んだ半導体集積回路であって、
前記半導体集積回路は、外部メモリと接続可能であり、
前記中央処理ユニットでは前記コプロセッサの前記演算器の少なくとも１つの入力に前記レジスタファイルの内部の少なくとも１つのレジスタの少なくとも１つのデータが供給されることによって、前記メインプロセッサから供給される命令に応答して前記コプロセッサの前記演算器はレジスタ演算を実行して、
前記中央処理ユニットの前記メインプロセッサからの前記ダイレクトメモリアクセスコントローラへのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラは前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記少なくとも１つのデータを前記外部メモリから前記中央処理ユニットの前記レジスタファイルへ転送するデータ転送を開始して、
前記バスコントローラは、前記中央処理ユニットの前記レジスタファイルの内部に前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記少なくとも１つのデータが前記外部メモリから前記ダイレクトメモリアクセスコントローラによって転送されたことを前記中央処理ユニットの前記メインプロセッサに通知して、
前記中央処理ユニットの前記メインプロセッサは、前記バスコントローラからの前記通知に応答して前記レジスタ演算の開始を前記コプロセッサの前記演算器に指示するものである半導体集積回路。
【請求項１１】
前記コプロセッサの前記演算器は前記少なくとも１つのデータの絶対値もしくは符号反転の演算を行うものである請求項１０に記載の半導体集積回路。
【請求項１２】
前記バスコントローラから前記中央処理ユニットの前記メインプロセッサへの通知は、前記コプロセッサの前記演算器が前記レジスタ演算によって演算すべき前記少なくとも１つのデータが前記外部メモリから前記レジスタファイルの内部に前記ダイレクトメモリアクセスコントローラによって転送されたことを示すデータ到着信号を前記バスコントローラから前記中央処理ユニットの前記メインプロセッサに供給することにより実行され、
前記中央処理ユニットの前記メインプロセッサから前記コプロセッサの前記演算器への前記レジスタ演算の前記開始の前記指示は、前記バスコントローラからの前記通知に応答して、前記中央処理ユニットの前記メインプロセッサが前記レジスタ演算の前記開始するための演算開始指示信号を前記コプロセッサの前記演算器に供給することにより実行される請求項１０と請求項１１のいずれかに記載の半導体集積回路。
【請求項１３】
前記ダイレクトメモリアクセスコントローラは、前記ダイレクトメモリアクセスコントローラによるＤＭＡ転送の対象とされる前記レジスタファイルの内部の任意のレジスタを指定するレジスタファイルＤＭＡ転送指定レジスタと、前記ＤＭＡ転送の前記対象の前記任意のレジスタがソースレジスタかディスティネーションレジスタかを指定するレジスタファイルＤＭＡ転送制御レジスタとを有する請求項１０から請求項１２までのいずれかに記載の半導体集積回路。
【請求項１４】
前記コプロセッサの前記演算器による前記レジスタ演算の演算結果は前記レジスタファイルの内部で前記ダイレクトメモリアクセスコントローラの前記レジスタファイルＤＭＡ転送制御レジスタにより前記ディスティネーションレジスタとして指定された１つのレジスタに格納され、
前記中央処理ユニットの前記メインプロセッサから前記ダイレクトメモリアクセスコントローラへのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラは前記レジスタファイルの内部の前記ディスティネーションレジスタに格納された前記演算結果のデータを前記レジスタファイルから前記外部メモリへ転送するデータ転送を開始する請求項１３に記載の半導体集積回路。
【請求項１５】
前記レジスタファイルの内部の複数の汎用レジスタの状態を示す複数の状態フラグを格納する状態フラグレジスタを前記中央処理ユニットが更に含み、
前記状態フラグレジスタの前記複数の状態フラグのそれぞれは前記複数の汎用レジスタの対応する汎用レジスタが未書き込み状態であるか書き込み状態であるかを示すビット情報を含む請求項１０から請求項１４までのいずれかに記載の半導体集積回路。
【請求項１６】
前記状態フラグレジスタにおいて前記対応する汎用レジスタが前記未書き込み状態であることは前記ビット情報のリセット状態で示され、前記対応する汎用レジスタが前記書き込み状態であることは前記ビット情報のセット状態で示される請求項１５に記載の半導体集積回路。
【請求項１７】
前記レジスタファイルの内部の前記ソースレジスタに格納されたデータが前記演算器の演算に何回使用されるかのカウント値を前記中央処理ユニットが保持する請求項１５と請求項１６とのいずれかに記載の半導体集積回路。
【請求項１８】
前記コプロセッサの前記演算器は単一命令に応答して複数のデータを処理するＳＩＭＤ型の複数の演算器である請求項１０から請求項１７までのいずれかに記載の半導体集積回路。
【請求項１９】
前記メインプロセッサは縮小命令セットコンピュータである請求項１８に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ等の半導体集積回路に関し、特に外部メモリとＣＰＵ（中央処理ユニット）内部の演算器の入力となるレジスタファイルとの間をＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送により高速で演算器の演算データを転送するのに有益な技術に関する。
【背景技術】
【０００２】
近年、種々の電子機器に組み込むためのマイクロプロセッサにおいて、３次元グラフィックスや、認識処理などの大量のデータを必要とする演算を行うようになってきた。しかし、マイクロプロセッサが大量のデータを扱う場合には、同期ＤＲＡＭ等の外部メモリから演算器へのデータロード命令と、逆に、演算器から外部メモリへのデータストア命令等の外部メモリアクセス命令がマイクロプロセッサの命令の大半を占めるようになっている。外部メモリへアクセスした場合、一度のアクセスで数十〜数百サイクル必要とするため、外部データ転送ネックによる性能劣化となる。
【０００３】
一方、良く知られているように、マイクロプロセッサのメモリと周辺装置との間で大量のデータ転送を行う方法として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送が用いられる。ＤＭＡ転送は、例えば、通信インターフェース等の周辺装置と外部メモリ間のデータ転送や、外部メモリと内部メモリ間のデータ転送を、ＣＰＵ（中央処理ユニット）からのＤＭＡ転送の起動命令によって実行するものである。そのため、ＣＰＵのデータロード命令やデータストア命令を用いる必要がなく、ＤＭＡ転送の間にＣＰＵは他の処理を継続して実行可能となる。
【０００４】
一方、３次元グラフィックス計算等の大量演算を高速実行するために、プロセッサ内部に複数の演算器を備え、単一命令で複数の演算を実行可能なＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型のプロセッサが用いられる。例えば、下記の非特許文献１には、ホームコンピュータエンターティメント用途の２５０ＭＨｚマイクロプロセッサが、１２８ビットのマルチメディア拡張を持つＣＰＵコアと、１０個の浮動小数点乗算アクセラレータと４個の浮動小数点除算器とを含むＳＩＭＤ型ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）の２個のベクトルプロセッサと、ＭＰＥＧ−２デコーダと、１０チャンネルのＤＭＡコントローラと、１２８ビットの内部バスに接続された周辺回路とをチップ上に含むことが記載されている。このＳＩＭＤ−ＶＬＩＷ型の浮動小数点ベクトルプロセッサ内部の命令メモリとデータメモリには、外部ＤＲＡＭのメインメモリからＤＭＡコントローラとＶＰＵ（Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）インターフェースとを介してＶＰＵのプログラムとデータとがロード可能となっている。
【０００５】
一方、下記の特許文献１には、高速なコンテキストスイッチを可能とするため、マイクロプロセッサ内部のレジスタファイルにＤＭＡ転送機能を設けて、レジスタファイルのデータをＤＭＡ転送によってＲＡＭに高速に退避して、その後、ＤＭＡ転送によってＲＡＭからレジスタファイルにデータを高速に復帰することが記載されている。
【０００６】
【特許文献１】特開平５−２８０９２号公報
【非特許文献１】Ｍａｓａｋａｚｕ  Ｓｕｚｕｏｋｉ  ｅｔ  ａｌ，”Ａ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  ｗｉｔｈ  ａ  １２８−Ｂｉｔ  ＣＰＵ，  Ｔｅｎ  Ｆｌｏａｔｉｎｇ−Ｐｏｉｎｔ  ＭＡＣ‘ｓ，  Ｆｏｕｒ  Ｆｌｏａｔｉｎｇ−Ｐｏｉｎｔ  Ｄｉｖｉｄｅｒｓ，  ａｎｄ  ａｎ  ＭＰＥＧ−２  Ｄｅｃｏｄｅｒ”，  ＩＥＥＥ  ＪＯＵＲＮＡＬ  ＯＦ  ＳＯＬＩＤ−ＳＴＡＴＥ  ＣＩＲＣＵＩＴＳ，  ＶＯＬ．３４，  ＮＯ．１１，  ＮＯＶＥＭＢＥＲ  １９９９，  ＰＰ．１６０８−１６１８．
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明者は、本発明に先立ってマイクロプロセッサのＤＭＡ転送を応用した演算の高速化に関する研究に従事してきた。
【０００８】
歴史的に見れば、ＤＭＡ転送は、周辺装置と外部メモリ間のデータ転送や、外部メモリと内部メモリ間のデータ転送を行うものとなっている。上記非特許文献１も、この技術的定義に属している。すなわち、ＤＭＡ転送動作はＣＰＵの他の命令の実行動作と並列に動作するために、ＣＰＵが発行する命令に同期して動作するＣＰＵの演算器の入出力であるレジスタファイルがＤＭＡ転送の対象となっていない。また、ＤＭＡ転送は、転送元アドレスと転送先アドレスの指定を必要とする。外部メモリや内部メモリ、更に入出力装置も、ＣＰＵのメモリ空間内のアドレスで指定されているメモリマップドアドレスを持っている。しかし、ＣＰＵ内部のレジスタファイルを構成する複数のレジスタはＣＰＵの命令のレジスタ番号で指定されることができるが、ＣＰＵのメモリ空間内のメモリマップドアドレスを持っていない。この理由からも、ＣＰＵの演算器の入出力であるレジスタファイルは、ＤＭＡ転送の対象となっていない。しかし、上記特許文献１に記載されたマイクロプロセッサ内部のレジスタファイルとＲＡＭとの間のデータ退避もしくはデータ復帰のためのＤＭＡ転送は、上記の技術的定義から逸脱している。
【０００９】
本発明者はこの認識に基づき、ＤＭＡ転送の範囲を周辺装置又は外部メモリと内部メモリとの間の演算データの転送に止まるのではなく、更にマイクロプロセッサ内部のレジスタファイルまで演算データをＤＭＡ転送すれば、ＤＭＡ転送を応用したデータ演算の高速化が可能となるとの着想に到達した。
【００１０】
従来のＤＭＡ転送の範囲の大部分は、周辺装置又は外部メモリと内部メモリとの間の演算データの転送に限定されている。一方、マイクロプロセッサのＣＰＵ内部の演算器によるデータ演算のためには、データ演算の前に内部メモリまでＤＭＡ転送された演算データをＣＰＵ内部のレジスタファイルまで転送することが必要である。通常、内部メモリとレジスタファイルとの間のデータ転送は、ロード命令もしくはストア命令により行われる。外部メモリまたは内部メモリからレジスタファイルへのデータロードは、ＣＰＵから発行するデータロード命令を実行することで行うことができる。特に、外部メモリへのアクセスは、一度に数十〜数百サイクル必要とする。マイクロプロセッサ内部に高速アクセス可能なキャッシュメモリを搭載している場合に、ＣＰＵは一度のデータロード命令を発行することで、数データ分の少量データをキャッシュメモリにロードすることができ、キャッシュ・ヒットした場合は連続してレジスタファイルへデータロードすることができる。しかし、３次元グラフィックス計算や、認識処理などの大量の演算データを演算器の入力となるレジスタファイルへ転送する場合は、データロード命令を大量に発行することになるため、データロード命令の発行がボトルネックとなり、性能が向上しないという問題がある。
【００１１】
レジスタファイルから外部メモリへのデータストアも、ＣＰＵから発行するデータストア命令を実行することができる。しかし、大量の演算結果のデータをストアする場合にはデータストア命令の発行数が増加するため、ＣＰＵはデータロード命令等の他の命令を実行できずＣＰＵの負荷が増大するという問題がある。
【００１２】
従って、本発明は、上記のような本発明者による本発明に先立った検討を基にしてなされたものである。
【００１３】
従って、本発明の目的とするところは、中央処理ユニット（ＣＰＵ）の演算器の入出力であるレジスタファイルへのメモリからの演算データの供給、もしくはＣＰＵの演算器の演算結果をレジスタファイルからのメモリに格納するに際して、ＣＰＵの負荷を軽減して、かつ、ＣＰＵ演算命令に同期して高速にデータ転送を可能とすることにある。
【００１４】
本発明の前記並びにその他の目的と新規な特徴とは、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。
【００１６】
すなわち、本発明のひとつの形態による半導体集積回路（１）は、メインプロセッサ（６）とコプロセッサ（３）とレジスタファイル（４）とを有する中央処理ユニット（２）と、前記中央処理ユニット（２）と内部バス（１４）を介して接続された内部メモリ（３１）とバスコントローラ（３２）とダイレクトメモリアクセスコントローラ（１５）とを含み、前記コプロセッサ（３）は演算器（ＡＬＵ０…ＡＬＵ３）を含んでいる。
【００１７】
前記半導体集積回路（１）は、外部メモリ（１８）と接続可能である。
【００１８】
前記中央処理ユニット（２）では前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の２つの入力に前記レジスタファイル（４）の内部の２つのレジスタの２つのデータが供給されることによって、前記メインプロセッサ（６）から供給される命令に応答して前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）はレジスタ演算を実行する。
【００１９】
前記中央処理ユニット（２）の前記メインプロセッサ（６）からの前記ダイレクトメモリアクセスコントローラ（１５）へのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラ（１５）は前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記２つのデータを前記外部メモリ（１８）から前記中央処理ユニット（２）の前記レジスタファイル（４）へ転送するデータ転送を開始する。
【００２０】
前記バスコントローラ（３２）は、前記中央処理ユニット（２）の前記レジスタファイル（４）の内部に前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記２つのデータが前記外部メモリ（１８）から前記ダイレクトメモリアクセスコントローラ（１５）によって転送されたことを前記中央処理ユニット（２）の前記メインプロセッサ（６）に通知（２６）する。
【００２１】
前記中央処理ユニット（２）の前記メインプロセッサ（６）は、前記バスコントローラ（３２）からの前記通知（２６）に応答して前記レジスタ演算の開始を前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に指示（６１）するものである（図１参照）。
【００２２】
本発明の前記ひとつの形態による手段によれば、前記中央処理ユニット（２）の前記レジスタファイル（４）の内部に演算すべき前記２つのデータが前記外部メモリ（１８）からＤＭＡ転送によって転送完了となると、前記バスコントローラ（３２）がその旨を前記中央処理ユニット（２）の前記メインプロセッサ（６）に通知（２６）して、前記中央処理ユニット（２）の前記メインプロセッサ（６）より前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に前記レジスタ演算の開始の前記指示（６１）が与えられる。その結果、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の入出力である前記レジスタファイル（４）への前記外部メモリ（１８）からの演算データの供給するに際して、前記中央処理ユニット（２）の前記メインプロセッサ（６）に大きな負荷を与えず、かつ、ＣＰＵ演算命令同期して高速にデータ転送を可能とすることが可能となる。
【００２３】
本発明のひとつの具体的な形態では、前記バスコントローラ（３２）から前記中央処理ユニット（２）の前記メインプロセッサ（６）への通知（２６）は、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記２つのデータが前記外部メモリ（１８）から前記レジスタファイル（４）の内部に前記ダイレクトメモリアクセスコントローラ（１５）によって転送されたことを示すデータ到着信号（２６）を前記バスコントローラ（３２）から前記中央処理ユニット（２）の前記メインプロセッサ（６）に供給することにより実行される。前記中央処理ユニット（２）の前記メインプロセッサ（６）から前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）への前記レジスタ演算の前記開始の前記指示（６１）は、前記バスコントローラ（３２）からの前記通知（２６）に応答して、前記中央処理ユニット（２）の前記メインプロセッサ（６）が前記レジスタ演算の前記開始するための演算開始指示信号（６１）を前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に供給することにより実行される（図１参照）。
【００２４】
本発明のひとつの更に具体的な形態では、前記ダイレクトメモリアクセスコントローラ（１５）は、前記ダイレクトメモリアクセスコントローラ（１５）によるＤＭＡ転送の対象とされる前記レジスタファイル（４）の内部の任意のレジスタを指定するレジスタファイルＤＭＡ転送指定レジスタ（１５４）と、前記ＤＭＡ転送の前記対象の前記任意のレジスタがソースレジスタ（１９；Ｓｒｃ＿Ｒｅｇ）かディスティネーションレジスタ（２０；Ｄｓｔ＿Ｒｅｇ）かを指定するレジスタファイルＤＭＡ転送制御レジスタ（１５０）とを有する（図１、図２、図３参照）。
【００２５】
本発明の前記ひとつの更に具体的な形態による手段によれば、本発明の以前においてはＤＭＡ転送の対象となっていない前記レジスタファイル（４）をＤＭＡ転送の対象とすることが可能となるとともに、ＤＭＡ転送の対象のレジスタがソースレジスタ（１９；Ｓｒｃ＿Ｒｅｇ）かディスティネーションレジスタ（２０；Ｄｓｔ＿Ｒｅｇ）かを指定することも可能となる。
【００２６】
本発明の他のひとつの更に具体的な形態では、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）による前記レジスタ演算の演算結果は前記レジスタファイル（４）の内部で前記ダイレクトメモリアクセスコントローラ（１５）の前記レジスタファイルＤＭＡ転送制御レジスタ（１５０）によって前記ディスティネーションレジスタ（２０；Ｄｓｔ＿Ｒｅｇ）として指定された１つのレジスタに格納される。前記中央処理ユニット（２）の前記メインプロセッサ（６）から前記ダイレクトメモリアクセスコントローラ（１５）へのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラ（１５）は前記レジスタファイル（４）の内部の前記ディスティネーションレジスタ（２０；Ｄｓｔ＿Ｒｅｇ）に格納された前記演算結果のデータを前記レジスタファイル（４）から前記外部メモリ（１８）へ転送するデータ転送を開始する。
【００２７】
本発明の前記ひとつの更に具体的な形態による手段によれば、前記中央処理ユニット（２）の前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の演算結果を前記レジスタファイル（４）からの前記外部メモリ（１８）に格納するに際して、前記中央処理ユニット（２）の前記メインプロセッサ（６）に大きな負荷を与えず、かつ、ＣＰＵ演算命令同期して高速にデータ転送を可能とすることができる。
【００２８】
本発明の他のひとつの更に具体的な形態では、前記レジスタファイル（４）の内部の複数の汎用レジスタ（Ｒ０…Ｒ３）の状態を示す複数の状態フラグ（ｆｌａｇ０…ｆｌａｇ３）を格納する状態フラグレジスタ（５）を前記中央処理ユニット（２）が更に含み、前記状態フラグレジスタ（５）の前記複数の状態フラグ（ｆｌａｇ０…ｆｌａｇ３）のそれぞれは前記複数の汎用レジスタ（Ｒ０…Ｒ３）の対応する汎用レジスタが未書き込み状態であるか書き込み状態であるかを示すビット情報を含む（図４参照）。
【００２９】
本発明の他のひとつの更に具体的な形態では、前記状態フラグレジスタ（５）において前記対応する汎用レジスタが前記未書き込み状態であることは前記ビット情報のリセット状態で示され、前記対応する汎用レジスタが前記書き込み状態であることは前記ビット情報のセット状態で示される。
【００３０】
本発明の他のひとつの更に具体的な形態では、前記レジスタファイル（４）の内部の前記ソースレジスタに格納されたデータが前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の演算に何回使用されるかのカウント値を前記中央処理ユニット（２）が保持（９１）する（図１参照）。
【００３１】
本発明の最も具体的な形態では、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）は単一命令に応答して複数のデータを処理するＳＩＭＤ型の複数の演算器である（図１参照）。
【００３２】
本発明の前記最も具体的な形態による手段によれば、大量データの演算速度を向上することが可能となる。
【００３３】
本発明の最も具体的な形態では、前記メインプロセッサ（６）はＲＩＳＣ（縮小命令セットコンピュータ）型である（図１参照）。
【００３４】
本発明の他のひとつの形態による半導体集積回路（１）は、メインプロセッサ（６）とコプロセッサ（３）とレジスタファイル（４）とを有する中央処理ユニット（２）と、前記中央処理ユニット（２）と内部バス（１４）を介して接続された内部メモリ（３１）とバスコントローラ（３２）とダイレクトメモリアクセスコントローラ（１５）とを含み、前記コプロセッサ（３）は演算器（ＡＬＵ０…ＡＬＵ３）を含んでいる。
【００３５】
前記半導体集積回路（１）は、外部メモリ（１８）と接続可能である。
【００３６】
前記中央処理ユニット（２）では前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の少なくとも１つの入力に前記レジスタファイル（４）の内部の少なくとも１つのレジスタの少なくとも１つのデータが供給されることによって、前記メインプロセッサ（６）から供給される命令に応答して前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）はレジスタ演算を実行する。
【００３７】
前記中央処理ユニット（２）の前記メインプロセッサ（６）からの前記ダイレクトメモリアクセスコントローラ（１５）へのＤＭＡ転送の指示に応答して、前記ダイレクトメモリアクセスコントローラ（１５）は前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記少なくとも１つのデータを前記外部メモリ（１８）から前記中央処理ユニット（２）の前記レジスタファイル（４）へ転送するデータ転送を開始する。
【００３８】
前記バスコントローラ（３２）は、前記中央処理ユニット（２）の前記レジスタファイル（４）の内部に前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記少なくとも１つのデータが前記外部メモリ（１８）から前記ダイレクトメモリアクセスコントローラ（１５）によって転送されたことを前記中央処理ユニット（２）の前記メインプロセッサ（６）に通知（２６）する。
【００３９】
前記中央処理ユニット（２）の前記メインプロセッサ（６）は、前記バスコントローラ（３２）からの前記通知（２６）に応答して前記レジスタ演算の開始を前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に指示（６１）するものである（図１参照）。
【００４０】
本発明の前記他のひとつの形態による手段によれば、前記レジスタファイル（４）内部に演算すべき前記少なくとも１つのデータが前記外部メモリ（１８）からＤＭＡ転送により転送完了となると、前記バスコントローラ（３２）がその旨を前記中央処理ユニット（２）の前記メインプロセッサ（６）に通知（２６）して、前記中央処理ユニット（２）の前記メインプロセッサ（６）より前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に前記レジスタ演算の開始の前記指示（６１）が与えられる。その結果、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）の入出力である前記レジスタファイル（４）への前記外部メモリ（１８）からの演算データの供給するに際して、前記中央処理ユニット（２）の前記メインプロセッサ（６）に大きな負荷を与えず、かつ、ＣＰＵ演算命令同期して高速にデータ転送を可能とすることが可能となる。
【００４１】
本発明の他のひとつの更に具体的な形態では、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）は前記少なくとも１つのデータの絶対値もしくは符号反転の演算を行うものである。
【００４２】
本発明のひとつの具体的な形態では、前記バスコントローラ（３２）から前記中央処理ユニット（２）の前記メインプロセッサ（６）への通知（２６）は、前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）が前記レジスタ演算によって演算すべき前記少なくとも１つのデータが前記外部メモリ（１８）から前記レジスタファイル（４）の内部に前記ダイレクトメモリアクセスコントローラ（１５）によって転送されたことを示すデータ到着信号（２６）を前記バスコントローラ（３２）から前記中央処理ユニット（２）の前記メインプロセッサ（６）に供給することにより実行される。前記中央処理ユニット（２）の前記メインプロセッサ（６）から前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）への前記レジスタ演算の前記開始の前記指示（６１）は、前記バスコントローラ（３２）からの前記通知（２６）に応答して、前記中央処理ユニット（２）の前記メインプロセッサ（６）が前記レジスタ演算の前記開始するための演算開始指示信号（６１）を前記コプロセッサ（３）の前記演算器（ＡＬＵ０…ＡＬＵ３）に供給することにより実行される（図１参照）。
【発明の効果】
【００４３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
【００４４】
すなわち、本発明によれば中央処理ユニットの演算器の入出力であるレジスタファイルへのメモリからの演算データの供給、もしくは中央処理ユニットの演算器の演算結果をレジスタファイルからのメモリに格納するに際して、中央処理ユニットの負荷を軽減して、かつ、ＣＰＵ演算命令に同期して高速にデータ転送を可能とすることができる。
【発明を実施するための最良の形態】
【００４５】
≪半導体集積回路の構成≫
図１は、本発明のひとつの実施形態による半導体集積回路の構成を示す図である。
【００４６】
同図では、半導体集積回路は、マイクロプロセッサ（ＭＰＵ）１である。このマイクロプロセッサ１は、特に制限されないが、ＣＭＯＳ半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板に形成される。
【００４７】
このマイクロプロセッサ１は、メインプロセッサ６とコプロセッサ３とレジスタファイル４と状態フラグレジスタ５とを有する中央処理ユニット（ＣＰＵ）２と、このＣＰＵ２と内部バス１４を介して接続された内部メモリ３１とバスコントローラ３２とダイレクトメモリアクセスコントローラ（以下、ＤＭＡＣと呼ぶ）１５とを含む。尚、メインプロセッサ６のコアであるコントロールユニット６２は、命令セットに含まれる複数の命令の命令長が１６ビット固定長と短いか３２ビット固定長と比較的短く単純であるＲＩＳＣ型のプロセッサによって構成されている。一方、コプロセッサ３は、メインプロセッサ６から供給される単一命令に応答して複数のデータを処理するＳＩＭＤ型の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３を含む。尚、このマイクロプロセッサ１は、例えば、ＳＤＲ（シングルデータレート）又はＤＤＲ（ダブルデータレート）の同期ＤＲＡＭ（ダイナミックランダムアクセスメモリ）で構成された外部メモリ１８と接続可能である。
【００４８】
コプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の１つの演算器の２つの入力にレジスタファイル４の内部の２つのレジスタの２つのデータが供給されることによって、ＣＰＵ２のメインプロセッサ６から供給される命令に応答して１つの演算器はレジスタ演算を実行する。また、レジスタ演算が１つのデータの絶対値もしくは符号反転の演算であるならば、１つの演算器の１つの入力にレジスタファイル４の内部の１つのレジスタの１つのデータが供給されることによって、ＣＰＵ２のメインプロセッサ６のコントロールユニット６２から供給される命令に応答して１つの演算器はレジスタ演算を実行する。
【００４９】
ＣＰＵ２のメインプロセッサ６からＤＭＡＣ１５へのＤＭＡ転送の指示に応答して、ＤＭＡＣ１５はコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がレジスタ演算によって演算すべき２つもしくはそれ以上の複数のデータを外部メモリ１８からレジスタファイル４へ転送するデータ転送を開始する。バスコントローラ３２は、コプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がレジスタ演算によって演算すべき２つもしくはそれ以上の複数のデータが外部メモリ１８からＤＭＡＣ１５によってレジスタファイル４の内部に転送されたことをデータ到達信号２６によりＣＰＵ２のメインプロセッサ６コントロールユニット６２に通知する。すると、ＣＰＵ２のメインプロセッサ６のコントロールユニット６２は、バスコントローラ３２からのデータ到達信号２６による通知に応答してレジスタ演算の開始を演算開始指示信号６１によりコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３に指示する。このように、演算すべき２つもしくはそれ以上の複数のデータが外部メモリ１８からＤＭＡ転送によってレジスタファイル４の内部に転送完了となると、バスコントローラ３２がその旨をＣＰＵ２のメインプロセッサ６のコントロールユニット６２に通知して、ＣＰＵ２のメインプロセッサ６のコントロールユニット６２よりコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３にレジスタ演算の開始の指示が与えられる。その結果、ＣＰＵ２のコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の入出力であるレジスタファイル４への外部メモリ１８からの演算データの供給するに際して、ＣＰＵ２のメインプロセッサ６に大きな負荷を与えずに、かつ、ＣＰＵ演算命令同期して高速にデータ転送を可能とすることが可能となる。尚、外部メモリ１８とＣＰＵ２のレジスタファイル４との間の内部バス１４を介してのＤＭＡＣ１５によるＤＭＡデータ転送は、具体的にはＣＰＵ２のレジスタファイル４に接続されたＤＭＡバス１２を経由するものとなっている。
【００５０】
また、図１に示すように、ＤＭＡＣ１５は、ＤＭＡＣ１５によるＤＭＡ転送の対象とされるレジスタファイル４の内部の任意のレジスタを指定するレジスタファイルＤＭＡ転送指定レジスタ１５４と、ＤＭＡ転送の対象の任意のレジスタがソースレジスタかディスティネーションレジスタかを指定するレジスタファイルＤＭＡ転送制御レジスタ１５０とを有する。このＤＭＡ転送先がソースレジスタかディスティネーションレジスタかの指定に応答してメインプロセッサ６のデータ格納先選択ユニット９は、ＤＭＡＣ１５によりＤＭＡ転送されるデータのレジスタファイル４内部の格納先を決定する。このようにして、本発明の以前ではＤＭＡ転送の対象となっていないレジスタファイル４をＤＭＡ転送の対象とすることが可能となるとともに、ＤＭＡ転送の対象のレジスタがソースレジスタかディスティネーションレジスタかを指定することも可能となる。
【００５１】
更に、コプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３によるレジスタ演算の演算結果は、レジスタファイル４の内部でＤＭＡＣ１５のレジスタファイルＤＭＡ転送制御レジスタ１５０によりディスティネーションレジスタとして指定された１つのレジスタに格納される。ＣＰＵ２のメインプロセッサ６からＤＭＡＣ１５へのＤＭＡ転送の指示に応答して、ＤＭＡＣ１５はレジスタファイル４の内部のディスティネーションレジスタに格納された演算結果のデータをレジスタファイル４から外部メモリ１８へ転送するデータ転送を開始する。従って、コプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の演算結果をレジスタファイル４から外部メモリ１８に格納するに際して、ＣＰＵ２のメインプロセッサ６に大きな負荷を与えず、かつ、ＣＰＵ演算命令同期して高速にデータ転送を可能とすることができる。
【００５２】
また、図１に示すように、ＣＰＵ２のメインプロセッサ６のデータ格納先選択ユニット９内部のカウンタ９１は、ＣＰＵ２のレジスタファイル４内部のソースレジスタに格納されたソース・データがコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の演算に何回使用されるかを示すカウント値Ｎを格納する。尚、演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がこの演算を１回実行した後、ＣＰＵ２はカウント値をＮ−１にディクリメントして再びカウンタ９１に格納する。
【００５３】
更に、図１に示すように、内部バス１４には、ＤＭＡＣ１５、バスコントローラ３２だけではなく、命令キャッシュメモリ１０、データキャッシュメモリ１３、キャッシュメモリコントローラ１１、ＣＰＵ２のプログラムを格納する不揮発性フラッシュメモリによる内蔵リードオンリーメモリ（ＲＯＭ）３０、ＣＰＵ２のワークメモリとしてのランダムアクセスメモリ（ＲＡＭ）３１、周辺モジュール１６、入出力インターフェースユニット１７等も同様に接続されている。尚、キャッシュコントローラ１１は、命令キャッシュメモリ１０、データキャッシュメモリ１３のキャッシュデータとメインメモリとしての外部メモリ１８のデータ更新制御とデータ転送の制御とを行う。
【００５４】
さらに、ＣＰＵ２のメインプロセッサ６は、メインプロセッサ６のコントロールユニット６２からのＤＭＡ転送の要求に応答してＤＭＡＣ１５によるＤＭＡデータ転送を起動するためのＤＭＡ起動ユニット７と、ＣＰＵ２のレジスタファイル４のオーバーフロー例外を検出する例外検出ユニット８と、オーバーフローの例外処理のための例外処理ユニット３８とを有する。ＤＭＡ起動ユニット７によって起動されるＤＭＡコントローラ１５は、外部メモリ１８と周辺モジュール１６または内蔵ＲＡＭ３１の間の従来からのＤＭＡデータ転送と、外部メモリ１８とＣＰＵ２のレジスタファイル４との間の本発明で固有のＤＭＡデータ転送とを行う機能を有する。
【００５５】
≪コプロセッサとレジスタファイルファイルの構成≫
図２は、図１に示したＣＰＵ２内部のコプロセッサ３とレジスタファイルファイル４の詳細を示す図である。図２に示すように、コプロセッサ３の演算器は４個の整数演算器Ｉｎｔ＿ＡＬＵ０、Ｉｎｔ＿ＡＬＵ１、Ｉｎｔ＿ＡＬＵ２、Ｉｎｔ＿ＡＬＵ３を含んでいる。レジスタファイルファイル４は、コプロセッサ３の演算器によって演算されるソース・データを格納するソースレジスタファイル１９（Ｓｒｃ＿Ｒｅｇ）と、コプロセッサ３の演算器による演算結果を格納するディスティネーションレジスタファイル２０（Ｄｓｔ＿Ｒｅｇ）とを有している。例えば、ソースレジスタファイル１９（Ｓｒｃ＿Ｒｅｇ）とディスティネーションレジスタファイル２０（Ｄｓｔ＿Ｒｅｇ）とは、それぞれ３２ビットの複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７…を含んでいる。従って、行方向に配列された４個の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３は合計１２８ビットで構成されて、３２ビットの４個の整数演算器Ｉｎｔ＿ＡＬＵ０、Ｉｎｔ＿ＡＬＵ１、Ｉｎｔ＿ＡＬＵ２、Ｉｎｔ＿ＡＬＵ３によるＳＩＭＤ演算に使用される。また、ソースレジスタファイル１９（Ｓｒｃ＿Ｒｅｇ）とディスティネーションレジスタファイル２０（Ｄｓｔ＿Ｒｅｇ）とで、行方向と列方向とにマトリックス状に配列された複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７…のうちのどの任意の汎用レジスタも、コプロセッサ３の４個の演算器により自由に使用されることができる。尚、ソースレジスタファイル１９（Ｓｒｃ＿Ｒｅｇ）と、ディスティネーションレジスタファイル２０（Ｄｓｔ＿Ｒｅｇ）とは、ロードデータを蓄積する２面のバッファメモリで構成されている。この２面のバッファメモリは、ＦＩＦＯ（First In First Out）の構成を採用することができる。
【００５６】
図３は、図２と同様に図１に示したＣＰＵ２内部のコプロセッサ３とレジスタファイルファイル４の詳細を示す図である。図３に示すように、コプロセッサ３の演算器は図２に示した４個の整数演算器Ｉｎｔ＿ＡＬＵ０、Ｉｎｔ＿ＡＬＵ１、Ｉｎｔ＿ＡＬＵ２、Ｉｎｔ＿ＡＬＵ３だけではなく４個の浮動小数点演算器ＦＰ＿ＡＬＵ０、ＦＰ＿ＡＬＵ１、ＦＰ＿ＡＬＵ２、ＦＰ＿ＡＬＵ３も含んでいる。図３の他の構成は、図２と同様な構成となっている。
【００５７】
≪状態フラグレジスタとメインプロセッサの構成≫
図４は、図１に示したＣＰＵ２内部のレジスタファイルファイル４と状態フラグレジスタ５とメインプロセッサ６の詳細を示す図である。また、この図４は、ＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がレジスタ演算で演算すべき複数のソース・データを外部メモリ１８からＤＭＡＣ１５によるＤＭＡ転送によりＤＭＡバス１２を介してＣＰＵ２のレジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３に格納する動作を説明するものでもある。
【００５８】
状態フラグレジスタ５は、レジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０…Ｒ３の状態を示す複数の状態フラグｆｌａｇ０…ｆｌａｇ３を格納するものである。複数の状態フラグｆｌａｇ０…ｆｌａｇ３のそれぞれは複数の汎用レジスタＲ０…Ｒ３の対応する汎用レジスタが未書き込み状態であるか書き込み状態であるかを示すビット情報を含んでいる。状態フラグレジスタ５において対応する汎用レジスタが未書き込み状態であることはビット情報のリセット状態（“０”）で示され、対応する汎用レジスタが書き込み状態であることはビット情報のセット状態（“１”）で示される。
【００５９】
図１に示したＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がレジスタ演算で演算すべき複数のソース・データを外部メモリ１８からＤＭＡＣ１によるＤＭＡ転送によってＣＰＵ２のレジスタファイル４内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３に格納する前に、図４の状態フラグレジスタ５の複数の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３が全てリセット状態（“０”）であることが状態フラグ信号線２４を介してメインプロセッサ６のコントロールユニット６２によって確認される。リセット状態（“０”）を示す状態フラグ信号線２４のローレベルとメインプロセッサ６のデータ格納先選択ユニット９からのソース・ディスティネーション指示信号２７のソース指示を示すハイレベルと外部メモリ１８からのソース・データのＤＭＡ転送の開始を示すバスコントローラ６からのデータ到達信号２６のハイレベルとに応答してＮＡＮＤ回路ＮＡＮＤ１は、ＣＰＵ２のレジスタファイル４にハイレベルのライトイネーブル信号ＷＥ２２を供給する。従って、ＣＰＵ２のレジスタファイル４内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３にＤＭＡ転送された外部メモリ１８からのソース・データが格納される。このソース・データの格納の後、ＮＡＮＤ回路ＮＡＮＤ１は、セット信号線２３を介して状態フラグレジスタ５の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３を全てセット状態（“１”）にセットする。
【００６０】
次に、ＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３がレジスタファイル４内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３に格納されたソース・データを用いたレジスタ演算を終了すると、メインプロセッサ６のコントロールユニット６２はレジスタファイルレジスタ演算完了線２５をハイレベルにセットする。更に、メインプロセッサ６のデータ格納先選択ユニット９内部のカウンタ９１に格納されたカウント値Ｎがゼロまで減少すると、比較器２１はソースレジスタ使用完了線２８をハイレベルにセットする。既に説明したように、カウンタ９１に格納されたカウント値Ｎは、ＣＰＵ２のレジスタファイル４内部のソースレジスタに格納されたソース・データがコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の演算に何回使用されるかを示すものである。従って、これらの完了線２５、２８のハイレベルに応答してＡＮＤ回路ＡＮＤ２の出力は、状態フラグレジスタ５の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３を全てリセット状態（“０”）にリセットする。
【００６１】
図５は、図１に示したＣＰＵ２内部のレジスタファイルファイル４と状態フラグレジスタ５との詳細を示す図である。また、この図５は、ＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３のレジスタ演算による演算結果をＣＰＵ２のレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３からＤＭＡＣ１５によるＤＭＡ転送により外部メモリ１８に格納する動作を説明するものでもある。
【００６２】
まず、ＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３のレジスタ演算が行われていない時には、メインプロセッサ６の制御によってＣＰＵ２のレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３の状態を示す状態フラグレジスタ５の複数の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３を全てリセット状態（“０”）となっている。次に、ＣＰＵ２のコプロセッサの演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３のレジスタ演算が行われて、レジスタ演算の演算結果がＣＰＵ２のレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３に格納されたとする。すると、メインプロセッサ６の制御によってＣＰＵ２のレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３の状態を示す状態フラグレジスタ５の複数の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３は全てセット状態（“１”）にセットされる。状態フラグレジスタ５の複数の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３のセット状態（“１”）に応答してメインプロセッサ６は、ＤＭＡ起動ユニット７を経由してＤＭＡＣ１５によるＤＭＡ転送を起動する。このＤＭＡＣ１５によるＤＭＡ転送によってＣＰＵ２のレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）内部の複数の汎用レジスタＲ０、Ｒ１、Ｒ２、Ｒ３に格納されたレジスタ演算の演算結果が外部メモリ１８に格納される。外部メモリ１８へのレジスタ演算の演算結果の格納が完了すると、メインプロセッサ６の制御によって状態フラグレジスタ５の複数の状態フラグｆｌａｇ０、ｆｌａｇ１、ｆｌａｇ２、ｆｌａｇ３は再び全てリセット状態（“０”）にリセットされる。
【００６３】
≪例外検出ユニットと例外処理ユニットの構成≫
図６は、図１に示したメインプロセッサ６の例外検出ユニット８と例外処理ユニット３８の詳細を示す図である。図６に示すように、例外処理ユニット３８からの例外受付信号３３のローレベルと外部メモリ１８からのソース・データのＤＭＡ転送の開始を示すバスコントローラ６からのデータ到達信号２６のハイレベルとデータ格納先選択ユニット９からのソース・ディスティネーション指示信号２７のソース指示を示すハイレベルと状態フラグ信号線２４からオーバーフロー信号に応答して例外検出ユニット８のＡＮＤ回路ＡＮＤ３は、ハイレベルのオーバフロー例外要求信号３２を例外処理ユニット３８へ出力する。ハイレベルのオーバフロー例外要求信号３２は、オーバフロー例外が例外処理ユニット３８で受け付けられるまでＮＡＮＤ回路ＮＡＮＤ３の出力に接続されたフリップフロップＦＦで保持される。例外処理ユニット３８はオーバフロー例外要求信号３２を受け付けると、例外受付信号３３を例外検出ユニット８へ出力する。すると、例外検出ユニット８はオーバフロー例外要求信号３２をローレベルにリセットする。
【００６４】
≪ＤＭＡＣの構成≫
図７は、図１に示したマイクロプロセッサ１のＤＭＡＣ１５の詳細を示す図である。
【００６５】
同図に示すように、ＤＭＡＣ１５は、従来からの一般的なＤＭＡデータ転送の機能を実行するための転送元アドレスレジスタ１５１、転送先アドレスレジスタ１５２、転送サイズ指定レジスタ１５３だけではなく、外部メモリ１８とＣＰＵ２のレジスタファイル４との間の本発明で固有のＤＭＡデータ転送の機能を実行するためのレジスタファイル転送指定レジスタ１５４とＤＭＡ転送制御レジスタ１５０とを更に含んでいる。このレジスタファイル転送指定レジスタ１５４は、本発明で固有のＤＭＡ転送の対象とされるレジスタファイル４内部の任意のレジスタを指定する。また、ＤＭＡ転送制御レジスタ１５０のＭＳＢビットは本発明で固有のＤＭＡ転送を起動する一方、ＤＭＡ転送制御レジスタ１５０のＬＳＢビットは本発明で固有のＤＭＡ転送の対象とされる任意のレジスタがソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）かディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）かを指定する。
【００６６】
≪ソース・データの外部メモリからレジスタファイルへのＤＭＡ転送≫
図８は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサ１がコプロセッサ３の演算器が演算すべきソース・データを外部メモリ１８からＣＰＵ２のレジスタファイル４へのＤＭＡ転送する動作とコプロセッサ３の演算器の演算動作とメインプロセッサ６の制御動作とを説明するための図である。
【００６７】
ステップ８００で動作が開始されると、ステップ８００でＣＰＵ２のレジスタファイル４のソースレジスタ１９の複数の汎用レジスタに対応する状態フラグレジスタ５内部の状態フラグは全てリセット状態（”０”）にリセットされる。
【００６８】
次に、ステップ８０２でメインプロセッサ６のデータ格納先選択ユニット９のレジスタ設定が行われる。特に、データ格納先選択ユニット９のカウンタ９１には、ＣＰＵ２のレジスタファイル４内部のソースレジスタに格納されたソース・データがコプロセッサ３の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の演算に何回使用されるかを示すカウント値Ｎが格納される。
【００６９】
次に、ステップ８０３でメインプロセッサ６のＤＭＡＣ１５のレジスタ設定が行われる。すなわち、ＤＭＡＣ１５では、転送元アドレスレジスタ１５１、転送先アドレスレジスタ１５２、転送サイズ指定レジスタ１５３に従来からの一般的なＤＭＡデータ転送の機能を実行するためのレジスタ設定が行われるとともに、レジスタファイル転送指定レジスタ１５４には本発明で固有のＤＭＡ転送の対象とされるレジスタファイル４内部の任意のレジスタを指定するためのレジスタ情報が設定され、またＤＭＡ転送制御レジスタ１５０のＭＳＢビットには本発明で固有のＤＭＡ転送を起動するためのビット情報が設定され、ＤＭＡ転送制御レジスタ１５０のＬＳＢビットには本発明で固有のＤＭＡ転送の対象とされる任意のレジスタがソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）であることを指定するビット情報が設定される。
【００７０】
次のステップ８０４でメインプロセッサ６のコントロールユニット６２がＤＭＡＣ１５によるＤＭＡデータ転送を起動するためのＤＭＡ起動ユニット７にＤＭＡ転送の要求を出力すると、ステップ８０４ではＤＭＡＣ１５が起動され、ステップ８０５で外部メモリ１８がアクセスされ、ステップ８０６で外部メモリ１８からのソース・データのＣＰＵ２のレジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）へのロードが開始される。
【００７１】
このロードが終了するとステップ８０７で、ＣＰＵ２のレジスタファイル４内部のソースレジスタがオーバーフローしたか否かがメインプロセッサ６の例外検出ユニット８によって検出される。オーバーフローが検出されると、ステップ８０８で例外処理ユニット３８による例外処理が実行される。その結果、オーバーフローの要因が除去されることができる。
【００７２】
次のステップ８０９にて、外部メモリ１８からのソース・データのＣＰＵ２のレジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）へのロードが無事完了しているので、ＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）の複数の汎用レジスタに対応する状態フラグレジスタ５の内部の状態フラグは全てセット状態（”１”）にセットされる。
【００７３】
次のステップ８１０で、ＣＰＵ２のコプロセッサ３の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３はレジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）にロードされたソース・データのＳＩＭＤ演算を実行して、ＳＩＭＤ演算結果をレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）に格納する。このＳＩＭＤ演算が終了すると、メインプロセッサ６はデータ格納先選択ユニット９内部のカウンタ９１に格納されたカウント値ＮをＮ−１に変更して、新しいカウント値Ｎ−１をカウンタ９１に格納する。
【００７４】
新しいカウント値Ｎ−１がゼロか否かが、図４のメインプロセッサ６のコントロールユニット６２の比較器２１により検出される。新しいカウント値Ｎ−１がゼロの場合は、レジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）にロードされたソース・データは不必要な状態である。
【００７５】
従って、ステップ８１２でＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）の複数の汎用レジスタに対応する状態フラグレジスタ５の内部の状態フラグは全てリセット状態（”０”）にリセットされて、処理が終了する。
【００７６】
≪演算結果データのレジスタファイルから外部メモリへのＤＭＡ転送≫
図９は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサ１のコプロセッサ３の演算器の演算動作とその演算結果のデータをＣＰＵ２のレジスタファイル４から外部メモリ１８へのＤＭＡ転送する動作とを説明するための図である。
【００７７】
ステップ９００で動作が開始されると、ステップ９０１で図８のステップ８１０と同様にＣＰＵ２のコプロセッサ３の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３はレジスタファイル４内部のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）にロードされたソース・データのＳＩＭＤ演算を実行して、ＳＩＭＤ演算結果をレジスタファイル４内部のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）に格納する。また、ＳＩＭＤ演算の実行の後に、ＣＰＵ２のレジスタファイル４のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）の複数の汎用レジスタに対応する状態フラグレジスタ５の内部の状態フラグは全てセット状態（”１”）にセットされる。
【００７８】
次のステップ９０２で、メインプロセッサ６はレジスタファイル４のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）の複数の汎用レジスタに対応する状態フラグレジスタ５の内部の状態フラグは全てセット状態（”１”）にセットされているか否かを検出する。
【００７９】
状態フラグがセットされていると、ステップ９０３に処理が移行して、メインプロセッサ６のＤＭＡＣ１５のレジスタ設定が行われる。すなわち、ＤＭＡＣ１５では、転送元アドレスレジスタ１５１、転送先アドレスレジスタ１５２、転送サイズ指定レジスタ１５３に従来からの一般的なＤＭＡデータ転送の機能を実行するためのレジスタ設定が行われて、レジスタファイル転送指定レジスタ１５４には本発明で固有のＤＭＡ転送の対象とされるレジスタファイル４内部の任意のレジスタを指定するためのレジスタ情報が設定され、またＤＭＡ転送制御レジスタ１５０のＭＳＢビットには本発明で固有のＤＭＡ転送を起動するためのビット情報が設定され、ＤＭＡ転送制御レジスタ１５０のＬＳＢビットには本発明で固有のＤＭＡ転送の対象とされる任意のレジスタがディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）であることを指定するビット情報が設定される。
【００８０】
次のステップ９０４でメインプロセッサ６のコントロールユニット６２がＤＭＡＣ１５によるＤＭＡデータ転送を起動するためのＤＭＡ起動ユニット７にＤＭＡ転送の要求を出力すると、ステップ９０４ではＤＭＡＣ１５が起動され、ステップ９０５で外部メモリ１８がアクセスされて、ステップ９０６でＳＩＭＤ演算結果のデータのＣＰＵ２のレジスタファイル４のディスティネーションレジスタ２０（Ｄｓｔ＿Ｒｅｇ）から外部メモリ１８へのストアが開始される。
【００８１】
このストアが終了すると、外部メモリ１８へのＳＩＭＤ演算結果のデータのＣＰＵ２のレジスタファイル４のディスティネーションレジスタ２０からのストアが無事完了しているので、ＣＰＵ２のレジスタファイル４のディスティネーションレジスタ２０の複数の汎用レジスタに対応する状態フラグレジスタ５の内部の状態フラグは全てリセット状態（”０”）にリセットされ、処理が終了する。
【００８２】
≪ソース・データの外部メモリからレジスタファイルへのＤＭＡ転送とＳＩＭＤ演算≫
図１０は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサ１がコプロセッサ３の演算器がＳＩＭＤ演算によって演算すべきソース・データを外部メモリ１８からＣＰＵ２のレジスタファイル４へＤＭＡ転送する動作とコプロセッサ３の演算器の演算動作とを説明するための図である。
【００８３】
図１０では、外部メモリ１８としてのシングルデータレートの同期ＤＲＡＭに供給する図１のマイクロプロセッサ１からの外部クロック信号ＣＬＫに同期して、図１のマイクロプロセッサ１もパイプライン動作を実行する。ＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）内部の汎用レジスタＲ１、Ｒ０のソース・データの加算と汎用レジスタＲ１、Ｒ２のソース・データの加算を単一命令で実行するのが１番目のＳＩＭＤ演算命令であり、また汎用レジスタＲ１、Ｒ３のソース・データの加算と汎用レジスタＲ１、Ｒ４のソース・データの加算を単一命令で実行するのが２番目のＳＩＭＤ演算命令である。
【００８４】
２つのＳＩＭＤ演算命令の命令デコード（ＩＤ）のステージが終了すると、コプロセッサ３の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３はソース・データが外部メモリ１８からＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）にロードされるのを待っているデータ待ちの状態となる。
【００８５】
時刻Ｔ０からＤＭＡＣ１５による外部メモリ１８からのソース・データのＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）へのＤＭＡ転送が開始される。時刻Ｔ０から汎用レジスタＲ０にロードされるべきソース・データＤ０がＤＭＡ転送され、時刻Ｔ１から汎用レジスタＲ１にロードされるべきソース・データＤ１がＤＭＡ転送され、時刻Ｔ２から汎用レジスタＲ２にロードされるべきソース・データＤ２がＤＭＡ転送され、時刻Ｔ３から汎用レジスタＲ３にロードされるべきソース・データＤ３がＤＭＡ転送され、時刻Ｔ４から汎用レジスタＲ４にロードされるべきソース・データＤ４がＤＭＡ転送され、時刻Ｔ５から汎用レジスタＲ５にロードされるソース・データＤ５がＤＭＡ転送される。
【００８６】
また、時刻Ｔ０からＣＰＵ２のレジスタファイル４のソースレジスタ１９（Ｓｒｃ＿Ｒｅｇ）にソース・データをロードするために、ライトイネーブル信号ＷＥ（２２）がローレベルからハイレベルに変化している。従って、ＤＭＡ転送されたソース・データＤ０のＣＰＵ２のレジスタファイル４のソースレジスタ１９の汎用レジスタＲ０へのロードが時刻Ｔ１から開始され、ＤＭＡ転送されたソース・データＤ１の汎用レジスタＲ１へのロードが時刻Ｔ２から開始され、ＤＭＡ転送されたソース・データＤ２の汎用レジスタＲ２へのロードが時刻Ｔ３から開始され、ＤＭＡ転送されたソース・データＤ３の汎用レジスタＲ３へのロードが時刻Ｔ４から開始され、ＤＭＡ転送されたソース・データＤ４の汎用レジスタＲ４へのロードが時刻Ｔ５から開始され、ＤＭＡ転送されたソース・データＤ５の汎用レジスタＲ５へのロードが時刻Ｔ６から開始される。従って、ＤＭＡ転送されたソース・データＤ０の汎用レジスタＲ０へ時刻Ｔ１からのロードが時刻Ｔ２で完了すると、時刻Ｔ２で汎用レジスタＲ０の状態フラグが０００１にセットされる。以下、同様にＤＭＡ転送されたソース・データＤ１の汎用レジスタＲ１への時刻Ｔ２からのロードが時刻Ｔ３で完了すると時刻Ｔ３で汎用レジスタＲ１の状態フラグが０００１にセットされ、ＤＭＡ転送されたソース・データＤ２の汎用レジスタＲ２への時刻Ｔ３からのロードが時刻Ｔ４で完了すると時刻Ｔ４で汎用レジスタＲ２の状態フラグが０００１にセットされ、ＤＭＡ転送されたソース・データＤ３の汎用レジスタＲ３への時刻Ｔ４からのロードが時刻Ｔ５で完了すると時刻Ｔ５で汎用レジスタＲ３の状態フラグが０００３にセットされ、ＤＭＡ転送されたソース・データＤ４の汎用レジスタＲ４への時刻Ｔ５からのロードが時刻Ｔ６で完了すると時刻Ｔ６で汎用レジスタＲ３の状態フラグが０００２にセットされる。
【００８７】
従って、時刻Ｔ４では１番目のＳＩＭＤ演算命令により演算される３つのソース・データＤ０、Ｄ１、Ｄ２はＣＰＵ２のレジスタファイル４のソースレジスタ１９の汎用レジスタＲ０、Ｒ１、Ｒ２にそれぞれロード済みとなっているので、時刻Ｔ４でメインプロセッサ６はコプロセッサ３の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の１番目のＳＩＭＤ演算命令の命令実行（ＥＸ）を指示する。その結果、１番目のＳＩＭＤ演算命令の命令実行（ＥＸ）が時刻Ｔ５から開始される。同様に時刻Ｔ６では２番目のＳＩＭＤ演算命令により演算される３つのソース・データＤ１、Ｄ３、Ｄ４はＣＰＵ２のレジスタファイル４のソースレジスタ１９の汎用レジスタＲ１、Ｒ３、Ｒ４にそれぞれロード済みとなっているので、時刻Ｔ６でメインプロセッサ６はコプロセッサ３の複数の演算器ＡＬＵ０、ＡＬＵ１、ＡＬＵ２、ＡＬＵ３の２番目のＳＩＭＤ演算命令の命令実行（ＥＸ）を指示する。その結果、２番目のＳＩＭＤ演算命令の命令実行（ＥＸ）が時刻Ｔ７から開始される。
【００８８】
尚、汎用レジスタＲ１に格納されたソース・データＤ１は１番目のＳＩＭＤ演算命令と２番目のＳＩＭＤ演算命令とで２回使用されるので、メインプロセッサ６のデータ格納先選択ユニット９内部のカウンタ９１のソースレジスタ１９の汎用レジスタＲ１のＲ１カウントには“２”が設定されている。１番目のＳＩＭＤ演算命令の演算実行後に時刻Ｔ６でこのＲ１カウントは”１”に変更され、更に２番目のＳＩＭＤ演算命令の演算実行後に時刻Ｔ８でこのＲ１カウントは”０”に変更される。
【００８９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９０】
例えば、図１において、マイクロプロセッサ１の内部バスとして高速と低速の階層バスアーキテクチャーを採用することができる。従って、図１でＣＰＵ２に接続された内部バス１４をＣＰＵ高速バスとし、このＣＰＵ高速内部バス１４にバススイッチを介して低速周辺バスを接続して、この低速周辺バスに周辺モジュール１６と入出力インターフェース１７を接続することができる。
【００９１】
また本発明は、マイクロコントローラやマイクロプロセッサ以外に各種の用途に使用されるシステムＬＳＩやディジタル・アナログ・ミックスド・シグナルＬＳＩのように、マルチメディア画像データの高速処理のためのＳＩＭＤ演算器を含むコプロセッサとマルチメディア画像データを外部デバイスからビデオメモリ等の内蔵メモリに高速データ転送を行うＤＭＡＣとを含むＬＳＩ全般に適用可能であることは言うまでもないであろう。
【産業上の利用可能性】
【００９２】
本発明は、電子機器への組み込むためのＲＩＳＣアーキテクチャを有するマイクロプロセッサに対して適用した場合について説明したが、本発明はそれに限定するものではない。
【図面の簡単な説明】
【００９３】
【図１】図１は、本発明のひとつの実施形態による半導体集積回路の構成を示す図である。
【図２】図２は、図１に示したＣＰＵ内部のコプロセッサとレジスタファイルファイルの詳細を示す図である。
【図３】図３は、図２と同様に図１に示したＣＰＵ内部のコプロセッサとレジスタファイルファイルの詳細を示す図である。
【図４】図４は、図１に示したＣＰＵ内部のレジスタファイルファイルと状態フラグレジスタとメインプロセッサの詳細を示す図である。
【図５】図５は、図１に示したＣＰＵ内部のレジスタファイルファイルと状態フラグレジスタとの詳細を示す図である。
【図６】図６は、図１に示したメインプロセッサの例外検出ユニットと例外処理ユニット３の詳細を示す図である
【図７】図７は、図１に示したマイクロプロセッサ１のＤＭＡＣ１５の詳細を示す図である。
【図８】図８は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサがコプロセッサの演算器が演算すべきソース・データを外部メモリからＣＰＵのレジスタファイルへのＤＭＡ転送する動作とコプロセッサの演算器の演算動作とメインプロセッサの制御動作とを説明するための図である。
【図９】図９は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサのコプロセッサの演算器の演算動作とその演算結果のデータをＣＰＵのレジスタファイルから外部メモリへのＤＭＡ転送する動作とを説明するための図である。
【図１０】図１０は、図１に示した本発明のひとつの実施形態によるマイクロプロセッサがコプロセッサの演算器がＳＩＭＤ演算によって演算すべきソース・データを外部メモリからＣＰＵのレジスタファイルへＤＭＡ転送する動作とコプロセッサの演算器の演算動作とを説明するための図である。
【符号の説明】
【００９４】
１  マイクロプロセッサ（ＭＰＵ）
２  中央処理ユニット（ＣＰＵ）
６  メインプロセッサ
３  コプロセッサ
４  レジスタファイルファイル
５  状態フラグレジスタ
７  ＤＭＡ起動ユニット
８  例外検出ユニット
９  格納先選択ユニット
１０  命令キャッシュメモリ
１１  キャッシュコントローラ
１２  ＤＭＡバス
１３  データキャッシュメモリ
１４  メモリバス
１５  ＤＭＡコントローラ（ＤＭＡＣ）
１６  周辺モジュール
１７  入出力インターフェースユニット
１８  外部メモリ
１９  ソースレジスタ（Ｓｒｃ＿Ｒｅｇ）
２０  ディスティネーションレジスタ（Ｄｓｔ＿Ｒｅｇ）
【図１】
2007328627.tif 000003
【図２】
2007328627.tif 000004
【図３】
2007328627.tif 000005
【図４】
2007328627.tif 000006
【図５】
2007328627.tif 000007
【図６】
2007328627.tif 000008
【図７】
2007328627.tif 000009
【図８】
2007328627.tif 000010
【図９】
2007328627.tif 000011
【図１０】
2007328627.tif 000012