(57)【要約】【課題】１つのコプロセッサを密結合バスを介して複数のプロセッサからアクセス可能とするマルチプロセッサ装置の提供。【解決手段】複数のプロセッサ（１０１Ａ、１０１Ｂ）に対して共通に設けられ、複数の資源を有するコプロセッサ（１２６）と、前記プロセッサによるコプロセッサバス（密結合バス）（１１４）を介してのコプロセッサ（１２６）の資源の使用に関して、前記プロセッサから前記コプロセッサに対して発行される命令に応じて、資源単位又は資源の階層単位で、複数のプロセッサ（１０１Ａ、１０１Ｂ）間での競合を調停するアービトレーション回路（１１７）を備え、アービトレーション回路（１１７）による制御のもと複数のプロセッサ（１０１Ａ、１０１Ｂ）による密結合バス（１１４）を介してのコプロセッサ内の、同一又は異なる階層の複数の資源の同時使用が可能とされる。【選択図】図２
2009026136.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサに対して共通に設けられ、複数の資源を有するコプロセッサと、
前記プロセッサから前記コプロセッサに対して発行される命令に応じて、資源単位又は複数の資源の階層について、前記複数のプロセッサ間での競合を調停するアービトレーション手段と、
を備えている、マルチプロセッサ装置。
【請求項２】
前記コプロセッサは、前記プロセッサから前記コプロセッサに対して発行される命令に応じて、前記コプロセッサの複数の資源の接続関係を可変に設定する、請求項１記載のマルチプロセッサ装置。
【請求項３】
前記密結合バスは、前記複数のプロセッサが前記コプロセッサにそれぞれ別々の層でアクセスするバスを含む、請求項１記載のマルチプロセッサ装置。
【請求項４】
前記アービトレーション手段による制御のもと、前記複数のプロセッサによる、前記密結合バスを介しての、前記コプロセッサ内の互いに競合しない、同一又は異なる階層の複数の資源の同時使用が可能とされる、請求項１記載のマルチプロセッサ装置。
【請求項５】
前記コプロセッサ内の１つ又は複数の資源を排他的に利用する拡張命令を命令セットとして用意しておき、
前記複数のプロセッサから、前記拡張命令が前記コプロセッサに対して同時に発行された場合、前記アービトレーション手段により、前記拡張命令に対応した１つ又は複数の資源単位での競合が調停される、請求項１記載のマルチプロセッサ装置。
【請求項６】
前記拡張命令は、
回路資源の単位機能に対応する第１層の拡張命令群と、
前記第１層の拡張命令に対応する回路資源を複数組み合わせて所定の機能を実現する第２層の拡張命令群と、
を含む、請求項５記載のマルチプロセッサ装置。
【請求項７】
前記拡張命令は、
前記第２層の拡張命令に対応する回路資源を組み合わせて所定の機能を実現する第３層の拡張命令群を含む、請求項６記載のマルチプロセッサ装置。
【請求項８】
前記コプロセッサは、前記プロセッサと密結合バスを介してのインタフェースを行うインタフェース回路と、
前記密結合バスを介して前記プロセッサから与えられたコマンドを解釈するデコーダと、
コマンドをデコードした信号でコプロセッサの機能を制御する制御回路と、
演算回路、レジスタファイルを含む回路資源群と、
前記回路資源の入出力バスに配置されたマルチプレクサ群と、
を備え、前記制御回路は、前記マルチプレクサ群の接続先を指定する選択信号を出力する、請求項５記載のマルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを備えた装置に関し、特に、複数のプロセッサ間でコプロセッサ資源を共有する装置に適用して好適なシステム構成に関する。
【背景技術】
【０００２】
この種のマルチプロセッサ（並列プロセッサ）システムの典型的な構成の一例を、図９に示す（非特許文献１参照）。マルチプロセッサ（並列プロセッサ）システムは、対称または非対称のプロセッサとコプロセッサを複数持ち、メモリや周辺ＩＯなどをプロセッサ間で共有する。
【０００３】
コプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）は、
・特定の処理（オーディオ、ビデオ、ワイヤレス、あるいは、浮動小数点演算やＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）等の数値演算、・・）を担うことでプロセッサを補助するものと、
・特定の処理（オーディオ、ビデオ、ワイヤレス・・・）に必要な処理を丸ごと処理するといったハードウェア・アクセラレータ的なものがある。
【０００４】
複数のプロセッサを備えたマルチプロセッサにおいて、コプロセッサは、メモリと同様に、プロセッサ間で共有する場合と、プロセッサにローカルに専有する場合とがある。
【０００５】
図９に示した例は、コプロセッサをローカルに専有する構成であり、コンフィギュラブルプロセッサＭｅＰ（Ｍｅｄｉａ  ｅｍｂｅｄｄｅｄ  Ｐｒｏｃｅｓｓｏｒ）技術を用いたＬＳＩ構成の一例が示されている。
【０００６】
図９のオーディオＣＯＤＥＣ  ＭｅＰモジュールは、プロセッサを補助するもので、ＭｅＰコア（基本プロセッサ）で不足している、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）命令を演算するコプロセッサとして、オーディオＶＬＩＷコプロセッサを追加している。ＶＬＩＷ命令として積和乗算などの汎用的な演算命令を追加定義し、オーディオＣＯＤＥＣ処理をアクセレートする。ビデオフィルタ・モジュールは、ビデオフィルタのハードウエアエンジンが用意され、アクセラレータとして機能し、モジュール内の回路資源はビデオフィルタにのみ使われる。
【０００７】
図１０は、図９の構成を説明するために簡略化して示した図である。図１０に示すように、プロセッサ２０１Ａ、プロセッサ２０１Ｂは、それぞれプロセッサのローカルバスを介して特定用途向けコプロセッサ２０３Ａ、２０３Ｂと密結合している。なお、ローカルメモリ２０２Ａ、２０２Ｂは、それぞれ、プロセッサ２０１Ａ、２０１Ｂで実行される命令や作業データを格納する。
【０００８】
マルチプロセッサとそれに接続された周辺ハードウェア（コプロセッサや各種周辺装置）とを効率的に強調させる構成の並列処理装置が特許文献１に開示されている。図１１は、特許文献１に開示されたＣＰＵの構成を示す図である。図１１を参照すると、タスクあるいはスレッドを実行する複数のプロセッサ部Ｐ０〜Ｐ３を備え、コプロセッサ１３０ａ、１３０ｂ、周辺装置４０ａ〜４０ｄの周辺ハードウェアと接続されたＣＰＵ１０を含み、タスクあるいはスレッドを実行しているプロセッサ部それぞれが実行中のタスクあるいはスレッドの実行内容に応じて周辺ハードウェアに処理依頼を行う、というものである。図１２は、図１１の構成を簡略化して示した図である。図１２に示すように、プロセッサＰ０〜Ｐ３、コプロセッサ１３０ａ、１３０ｂは共通バスに接続されており、プロセッサＰ０〜Ｐ３はコプロセッサ１３０ａ、１３０ｂに共通バスを介してアクセスする。
【０００９】
【特許文献１】特開２００６−２６０３７７号公報
【非特許文献１】東芝半導体  製品カタログ  ＭｅＰ（Ｍｅｄｉａ  ｅｍｂｅｄｄｅｄ  Ｐｒｏｃｅｓｓｏｒ）概説  インターネットURL：<http://www.semicon.toshiba.co.jp/docs/catalog/ja/BCJ0043_catalog.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記した関連技術の構成は、以下のような課題を有している（以下は、本発明者等の分析結果による）。
【００１１】
図９、図１０に示した構成の場合、コプロセッサのローカルバスにそれぞれ密結合させた場合、共通バス上の別のプロセッサから、コプロセッサにアクセスすることができない。
【００１２】
また、プロセッサ２０１Ａ、２０１Ｂの各々が、コプロセッサ２０３Ａ、２０３Ｂに必要な回路（演算器やレジスタなど）をローカルに持つこととなり、他のプロセッサとのコプロセッサ（演算資源）レベルでの共有、もしくは回路資源（演算器やレジスタなどの回路レベル）での共有が困難となる。
【００１３】
そして、コプロセッサは、各々のプロセッサのコプロセッサＩＦ（インタフェース）にローカルに密結合されているため、ある機能に特化したコプロセッサを、他のプロセッサから利用できなくなる。図９に示した構成の場合、特定用途毎に専用モジュールを用意しているため、各モジュール内の回路資源は他の用途への利用（流用）が困難である。
【００１４】
例えば、上述のビデオフィルタ・モジュールのようなハードウエア・エンジンでは、他の用途で利用できない。
【００１５】
また、不具合（故障・不良）等でハードウエア・エンジンが利用できなくなった場合、処理性能を極力おとさずに、代替手段を用意することが困難となる。
【００１６】
例えば、オーディオＣＯＤＥＣモジュールのＶＬＩＷ命令で処理を加速化させる代替手段が考えられるが、その場合オーディオとの同時処理に支障が出る。
【００１７】
一方、図１２に示したように、コプロセッサを、共通バス上に配置した場合、全てのプロセッサからアクセスすることができ、コプロセッサ資源の共有が可能となる。しかしながら、共有メモリや周辺ＩＯへのアクセスと共用する共通バスを介するため、低速メモリや低速ＩＯへのアクセスがあった場合など、バストラフィック、負荷に影響を受けやすく、このため、リアルタイム性に劣る。
【課題を解決するための手段】
【００１８】
本願で開示される発明は、前記課題の認識に基づき創案されたものであって、概略以下のように構成される。
【００１９】
本発明の１つの側面に係るマルチプロセッサ装置においては、複数のプロセッサに対して共通に設けられ、複数の資源を有するコプロセッサと、前記プロセッサから前記コプロセッサに対して発行される命令に応じて、資源単位又は複数の資源の階層について、前記複数のプロセッサ間での競合を調停するアービトレーション手段と、を備えている。
【００２０】
本発明において、前記コプロセッサは、前記プロセッサから前記コプロセッサに対して発行される命令に応じて、複数の資源の接続関係を可変に設定する、構成とされる。
【００２１】
本発明において、前記密結合バスが、前記複数のプロセッサが前記コプロセッサにそれぞれ別々の層でアクセスするバスを含む構成としてもよい。
【００２２】
本発明において、前記アービトレーション手段による制御のもと、前記複数のプロセッサによる、前記密結合バスを介しての、前記コプロセッサ内の互いに競合しない、同一又は異なる階層の複数の資源の同時使用が可能とされる。
【００２３】
本発明において、前記コプロセッサ内の１つ又は複数の資源を排他的に利用する拡張命令を命令セットとして用意しておき、前記複数のプロセッサから、前記拡張命令が前記コプロセッサに対して同時に発行された場合、前記アービトレーション手段により、前記拡張命令に対応した１つ又は複数の資源単位での競合が調停される構成としてもよい。
【００２４】
本発明において、前記拡張命令は、回路資源の単位機能に対応する第１層の拡張命令群と、前記第１層の拡張命令に対応する回路資源を複数以上組み合わせて所定の機能を実現する第２層の拡張命令群と、を含むようにしてもよい。さらに、前記第２層の拡張命令に対応する回路資源を組み合わせて所定の機能を実現する第３層の拡張命令群を含むようにしてもよい。
【００２５】
本発明において、前記コプロセッサは、前記プロセッサと密結合バスを介してのインタフェースを行うインタフェース回路と、前記密結合バスを介して前記プロセッサから与えられたコマンドを解釈するデコーダと、コマンドをデコードした信号でコプロセッサの機能を制御する制御回路と、演算回路、レジスタファイルを含む回路資源群と、前記回路資源の入出力バスに配置されたマルチプレクサ群と、を備え、前記制御回路は、前記マルチプレクサ群の接続先を指定する選択信号を出力する、構成としてもよい。
【発明の効果】
【００２６】
本発明によれば、複数のプロセッサの共通バスとは別のバスを介しての補助プロセッサの使用を調停する構成としたことにより、１つの補助プロセッサを複数のプロセッサで使用可能とするとともに、共通バスを介してアクセスする場合と比べて高速化を可能とし、リアルタイム処理に好適とされる。
【００２７】
また本発明によれば、回路資源単位だけでなく、階層定義した命令単位での、競合調停をすることによって、さらに高度な競合解決が可能となる。また、上位層の命令に対して変更を加えたい場合に、中位層や下位層の命令を用いたプログラミングによる変更を可能としており、ハードウエアの変更を回避可能としている
【発明を実施するための最良の形態】
【００２８】
前記した本発明についてさらに詳細に説述すべく、添付図面を参照して実施例を説明する。本実施例において、コプロセッサ内の回路資源を、ＲＴ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ）レベルで扱うＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）やレジスタファイルなどで分類するための手法として、該資源を排他的に利用するコプロセッサ命令（拡張コプロセッサ命令ともいう）を用意する。
【００２９】
本実施例において、プロセッサは、コプロセッサと密結合バスを介して接続され、アービトレーション回路により、使用する資源の競合の調停が行われる。本実施例において、例えば、複数のプロセッサから同時に発行されたコプロセッサ命令は、コプロセッサ命令の間で資源競合していなければ、コプロセッサ内で並列実行される。
【００３０】
本実施例においては、コプロセッサ内の回路資源を、ＲＴレベルで扱うＡＬＵやレジスタファイルなどで分類する手法として、例えば、
・四則演算やメモリ転送のような単位機能のまま定義した下位層の拡張コプロセッサ命令群、
・回路資源を複数以上組み合わせて異なるアプリケーション間で汎用的に流用可能な機能を実現する中位層の拡張コプロセッサ命令群、
・中位層の拡張コプロセッサ命令を構成する回路資源を組み合わせて実現する特定用途に限定された上位層の拡張コプロセッサ命令群
のように、拡張コプロセッサ命令を階層定義する。
【００３１】
以上の特徴を実現するコプロセッサは、資源群として、
・プロセッサとインタフェースするためのバスインタフェース回路（密結合バス・インタフェース回路）、
・密結合バスから与えられたオペコードなどの命令（コマンド）を解釈するデコーダ回路、
・命令（コマンド）をデコードした信号でコプロセッサの機能を制御する制御回路、
・ＲＴレベルで扱うＡＬＵやレジスタファイルなどで分類した回路資源群、
・各々の回路資源の入出力バスに配置したマルチプレクサ群、
・マルチプレクサ群の接続先を指定するモード信号（選択信号）、
を備えている。
【００３２】
コプロセッサにおいて、制御回路が出力するモード信号（選択信号）の状態によって、回路資源群の入出力バスの接続先が変わり、階層定義された様々なコプロセッサ命令の実行を可能とする。
【００３３】
コマンド（コプロセッサ命令）やパイプライン状態などの信号が転送されるバスを「密結合バス」という。プロセッサと密結合バスを介して接続されるコプロセッサを「密結合コプロセッサ」ともいう。プロセッサと、メモリ、周辺ＩＯ等が接続され、アドレス、制御信号、データが転送されるバスを「疎結合バス」という。
【００３４】
＜実施例１＞
図１は、本発明の第１の実施例の構成を示す図である。図１を参照すると、本実施例において、並列プロセッサを構成する複数のプロセッサ１０１Ａ、１０１Ｂは、共通バス１０５を介して共有メモリ１０３、周辺ＩＯ（共有コプロセッサ）１０４に接続している。各プロセッサ１０１Ａ、１０１Ｂは、共通バス１０５とは別のローカルバスを介して専有のメモリ（ローカルメモリ）１０２Ａ、１０２Ｂに接続されている。コプロセッサ１１６は、特定の処理（オーディオ、ビデオ、ワイヤレス・・）を担うことでプロセッサを補助する。本実施例においては、コプロセッサ１１６は、コプロセッサバス（マルチレイヤバス）１１４を介してプロセッサ１０１Ａとプロセッサ１０１Ｂ間で共有されている。さらに、プロセッサ１０１Ａ、１０１Ｂ間でのコプロセッサ１１６の資源の競合を調停するアービトレーション回路（コプロ・アクセス・アービトレーション回路）１１５を備えている。
【００３５】
本実施例において、コプロセッサ１１６は、コプロセッサバス・インタフェースＩＦ−（１）、ＩＦ−（２）を備え、マルチレイヤのコプロセッサバス１１４に接続している。マルチレイヤのコプロセッサバス１１４は、複数のプロセッサからの同時アクセスを可能とするバスである。
【００３６】
アービトレーション回路（コプロ・アクセス・アービトレーション回路）１１５は、プロセッサ１０１Ａとプロセッサ１０１Ｂから、コプロセッサ１１６の資源の使用要求１１１Ａ、１１１Ｂを受け、同一の資源に対する使用要求が重複した場合には、信号１１２Ａ、１１２Ｂにより、一方のプロセッサによるコプロセッサ１１６の資源の使用を許可し、他方のプロセッサによるコプロセッサ１１６の資源の使用をウェイト（ＷＡＩＴ）させる。
【００３７】
プロセッサ１１６において、資源Ａと資源Ｂには、それぞれの入出力バス上に、マルチプレクサ（ＭＵＸ）を備え、マルチレイヤバス１１４の個々のレイヤから、アクセスできる。
【００３８】
インタフェースＩＦ−（１）からの信号はＩＦ−（１）に直結するＭＵＸ、次段のＭＵＸを介して、資源Ａ又は資源Ｂに伝達され、インタフェースＩＦ−（２）からの信号はＩＦ−（２）に直結するＭＵＸ、次段のＭＵＸを介して、資源Ａ又は資源Ｂに伝達される。
【００３９】
資源Ａ、資源Ｂからの信号は、ＭＵＸを介してＩＦ−（１）又はＩＦ−（２）に伝達される。４つのＭＵＸは、インタフェースと接続する２つのＩＯポートと、資源Ａ、Ｂと接続する２つのＩＯポート間の接続を切替えるマトリックス・スイッチを構成している。
【００４０】
コプロセッサ１１６内の資源Ａと資源Ｂには、コプロセッサバス１１４のそれぞれ別のレイヤからアクセスすることができるため、プロセッサ１０１Ａとプロセッサ１０１Ｂでコプロセッサ１１６の使用要求が重複した場合にも、要求が、資源Ａと資源Ｂで分かれていれば、競合せず、同時使用が可能である。
【００４１】
一方、プロセッサ１０１Ａとプロセッサ１０１Ｂでコプロセッサ１１６の同一の資源に対する使用要求が重複した場合には、アービトレーション回路（コプロ・アクセス・アービトレーション回路）１１５は一方のプロセッサによるコプロセッサ１１６の資源の使用を許可し、他方のプロセッサによるコプロセッサ１１６の資源の使用要求に対してＷＡＩＴをかける。
【００４２】
本実施例によれば、プロセッサ１０１Ａとプロセッサ１０１Ｂでコプロセッサ１１６の使用要求が重複した場合、要求が、資源Ａと資源Ｂで分かれていれば、競合せず、同時使用可能となる。資源Ａ又は資源Ｂの単位で使用要求が競合した場合、アービトレーション回路１１５はどちらかのプロセッサにＷＡＩＴをかける。
【００４３】
図１において、インタフェースＩＦの数は２つに限定されるものでないことは勿論である。また、図１では、簡単のため、資源Ａ、Ｂが図示されているが、本発明はかかる構成に限定されるものでなく、資源Ａ、Ｂの上層に、入出力バスにＭＵＸを備えた資源をさらに備えた構成としてもよいことは勿論である。
【００４４】
＜実施例２＞
次に、本発明の第２の実施例について説明する。図２は、本実施例における、コプロセッサ命令の階層設計に関する概念を示す図である。図２に示すコプロセッサの構成は、図１に示した構成とは、コプロセッサ内の資源の分類の仕方を変えている。
【００４５】
図２を参照すると、コプロセッサ１２６において、回路資源を、ＲＴ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ）レベルで扱うＡＬＵやレジスタファイルなどで分類する方法として、
・四則演算やメモリ転送のような単位機能のまま定義した下位層の拡張コプロセッサ命令群と、
・下位層の回路資源を複数以上組み合わせて、異なるアプリケーション間で汎用的に流用可能な機能を実現する中位層の拡張コプロセッサ命令群と、
・中位層の拡張コプロセッサ命令を構成する回路資源を組み合わせて実現する特定用途に限定された上位層の拡張コプロセッサ命令群と、
を備えている。すなわち、コプロセッサ命令に階層構造を導入している。
【００４６】
例えば、図２では、積和算（multiply and accumulate）やシフト命令といった一般的なプロセッサ命令と同程度のサイクル数・演算回路で実現できるものをレベル１（下位層）の命令としている。このレベル１の命令は、資源Ａ〜Ｈの個々の回路資源で実現する。
【００４７】
積和算などレベル１命令の組み合わせでＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）などの信号処理を実現する命令をレベル２（中位層）としている。中位層命令Ｉ〜Ｌがこれに相当する。
【００４８】
さらに、ＦＦＴやＩＦＦＴ（Ｉｎｖｅｒｓｅ  ＦＦＴ）などレベル２命令を組合せてＤＣＴ、ＩＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｎｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）などを実現する命令をレベル３（上位層）としている。最上位層命令Ｘ〜Ｙがこれに相当する。なお、本発明において、階層化の層数は３層に限定されるものでないことは勿論である。
【００４９】
レベル２やレベル３の命令においては、コプロセッサ１２６内のハードウエアによるシーケンサや、有限状態マシン（ＦＳＭ）によって、回路資源Ａ〜Ｈを制御し、レベル２またはレベル３としての機能の処理を行う。
【００５０】
例えばレベル２の命令において、
中位層命令Ｉは、資源ＡとＢで構成され、
中位層命令Ｊは、資源ＣとＤで構成され、
中位層命令Ｋは、資源ＥとＦで構成され、
中位層命令Ｌは、資源ＧとＨで構成される。
【００５１】
さらに、レベル３の命令においては、
最上位命令Ｘは資源Ａ〜Ｄで構成され、
最上位命令Ｙは資源Ｅ〜Ｈで構成される。
【００５２】
このように、コプロセッサ１２６において、各階層の拡張コプロセッサ命令を構成する回路資源は異なり、発行される複数の命令の組み合わせによっては重複しないケースもある。複数のプロセッサから発行される拡張コプロセッサ命令による回路資源への使用要求が競合しない場合、複数の拡張コプロセッサ命令の同時実行が可能となる。
【００５３】
＜実施例３＞
図３は、他の実施例として、圧縮オーディオのマルチ規格（フォーマット）対応のデコーダの構成例を示す図である。図３において、コプロセッサ１２６内の最も長い破線の左側がＡＡＣ（Ａｄｖａｎｃｅ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ）用、右側はＭＰ３（ＭＰＥＧ１  Ａｕｄｉｏ  Ｌａｙｅｒ−３）用である。それぞれのオーディオデコードに必要とする信号処理方式や演算精度が異なり、それぞれに必要な演算器や係数テーブルなどを回路資源Ａ〜Ｈとして用意されている。
【００５４】
例えば、
資源Ａと資源Ｂは、ＡＡＣ−デコードに必要なＩＭＤＣＴ（Ｉｎｖｅｒｓｅ  Ｍｏｄｉｆｉｅｄ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）−１０２４ポイントを処理するための回路資源である。
【００５５】
資源Ａは３２ｘ１６乗算器、資源Ｂは、ＩＭＤＣＴ−１０２４ポイントのための係数テーブルである。
【００５６】
ＡＡＣ−デコードの処理をするためには、上位層命令（ＡＡＣ−ｄｅｃｏｄｅ）を実行させればすむが、上位層命令（ＡＡＣ−ｄｅｃｏｄｅ）だけを定義していたのでは、デコード処理に変更を加えたい場合に、ハードウエアでシーケンス制御を行っているため、変更が容易でない（ハードウエアの変更が必要）。
【００５７】
そこで、本実施例においては、資源Ａ〜Ｄのレベル１命令や、ＩＭＤＣＴ−１０２４ポイントやＩＭＤＣＴ−１２８ポイントの中位層命令を定義しておき、中位層の命令を使ったＡＡＣ−ｄｅｃｏｄｅ処理ソフトウェアを構築することで、デコード処理の変更が容易になる。
【００５８】
また、本実施例によれば、コプロセッサの回路資源を流用することができる。このため、プロセッサ命令に置き換えるよりも、性能悪化は少なくてすむ。
【００５９】
＜実施例４＞
図４は、本実施例におけるコプロセッサの回路構成の一例を示す図である。なお、図４に示す構成においては、図１のアービトレーション回路１１５の機能を、コプロセッサ１１６内の制御回路内に実装している。
【００６０】
コプロセッサは、
プロセッサとインタフェースするためのコプロセッサバス・インタフェース（Ｉ／Ｆ）回路（「密結合バス・インタフェース回路」ともいう）と、
密結合バスから与えられたオペコードなどの命令（コマンド）を解釈するデコーダ回路と、
命令（コマンド）をデコードした信号にしたがってコプロセッサの機能を制御する制御回路と、
ＲＴレベルで扱うＡＬＵやレジスタファイルなどで分類した回路資源群と、
各々の回路資源の入出力バスに配置したマルチプレクサ群と、
を備えている。マルチプレクサ群の接続先は、制御回路からのモード信号（選択信号）で設定される。
【００６１】
すなわち、本実施例においては、コプロセッサ１１６の制御回路が出力するモード信号（選択信号）の状態によって、コプロセッサ１１６内の回路資源群の入出力バスの接続先が変わり、階層定義された様々な拡張コプロセッサ命令の実現を可能とする。
【００６２】
コプロセッサバス・インタフェースは、ソースバス、ターゲットバス、宛先リードバス、ライトバスが接続される。またプロセッサ１０１からの要求、命令（オペコード）、即値データ、コプロセッサ１１６からのウエイト、パイプライン状態等が転送される。
【００６３】
回路資源群／マルチプレクサ群は、図１の資源Ａ、ＢとＭＵＸに対応している。制御回路／ＦＳＭ（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  ｍａｃｈｉｎｅ）は、ＭＵＸ選択信号と即値等を回路資源群／マルチプレクサ群に供給し、プロセッサ１０１からの要求を受け、資源の競合発生時、プロセッサ１０１にウエイト信号を送出する。
【００６４】
デコーダは、プロセッサ１０１から転送されたオペコード、コマンドをデコードする。
【００６５】
図４には、３通りの拡張コプロセッサ命令が実行された時の回路構成の変化が示されている。
【００６６】
命令Ａは、右上の破線部（ａ）のように、演算器ＡとＢを並列動作させる処理を１クロックサイクルで行う。
【００６７】
命令Ｂは、右中の破線部（ｂ）のように、１サイクル目で、演算器Ａを動作させ、演算結果をレジスタＣに格納し、２サイクル目で演算器Ｂを動作させ演算結果をレジスタＢに格納するという具合に、２サイクルかけて命令実行を行う。
【００６８】
破線部（ｃ）では、演算器Ａを使った命令Ｃと、演算器Ｂを使った命令Ｄを、同時実行している状態を示す。
【００６９】
図５は、一例として、プロセッサＡとプロセッサＢから同時にコプロセッサ命令が発行されたときのパイプラインの遷移を示す図である。本実施例においては、プロセッサＡ、Ｂからコプロセッサヘ送るコマンド（命令）は、レベル１乃至レベル３の命令からなる。また、プロセッサから転送されたコプロセッサ命令を受け取ったコプロセッサにおいて、デコード（ＤＥ）ステージから開始し、演算実行（ＥＸ）ステージで実行した演算結果を、メモリアクセス（ＭＥ）ステージでプロセッサ側に返すようにしてもよい。
【００７０】
図５に示す例では、プロセッサＡ、Ｂで同時に発行されたコプロセッサ命令は、コプロセッサ１１６内の回路資源が競合しないため、コプロセッサ１１６内で同時に実行することが可能である。すなわち、プロセッサＡ、Ｂでフェッチされたコプロセッサ命令は、プロセッサＡ、Ｂのデコード（ＤＥ）ステージでコプロセッサ１１６に転送され、コプロセッサ１１６において、例えば２本のパイプラインにて同時に並列実行される。あるいは、コプロセッサ１１６において、パイプラインの各ステージを時分割で実行するようにしてもよい。
【００７１】
プロセッサＡで発行され、コプロセッサ１１６で実行されたコプロセッサ命令は、コプロセッサ１１６の演算実行（ＥＸ−Ａ）ステージのあと演算結果がレジスタ（ＲＥＧ）に格納され、プロセッサＡのメモリアクセス（ＭＥ）ステージでプロセッサＡに演算結果が返送され、ライトバック（ＷＢ）ステージでプロセッサＡのレジスタに演算結果が格納される。
【００７２】
プロセッサＢで発行され、コプロセッサ１１６で実行されたコプロセッサ命令は、コプロセッサ１１６の演算実行（ＥＸ−Ｂ）ステージのあと演算結果がメモリ（ＭＥＭ）に格納され、プロセッサＡのメモリアクセス（ＭＥ）ステージでプロセッサＢに演算結果が返送され、ライトバック（ＷＢ）ステージでプロセッサＢのレジスタに演算結果が格納される。プロセッサ側のメモリアクセス（ＭＥ）ステージにおいて、データメモリへのメモリアクセス等は、疎結合バスによる。
【００７３】
コプロセッサ命令によっては、ＥＸステージのみ動作するものもあれば、ＭＥＭステージまで必要とするもの、ＤＥステージから必要とするものと様々あり、それら命令が使う回路資源が競合しなければ、複数のコプロセッサを同時実行することが可能となる。
【００７４】
本実施例によれば、プロセッサのローカルバスに密結合されたコプロセッサの演算資源は、プロセッサ間で共有可能となり、コプロセッサの演算資源の共有と、密結合による高速アクセスとを両立させることができる。
【００７５】
次に、図６を参照して、本実施例における、密結合バスを介したコプロセッサのアクセス調停について説明する。特に制限されないが、本実施例において、命令パイプラインは、命令フェッチ（ＩＦ）、デコード（ＤＥ）、演算実行（ＥＸ）、メモリアクセス（ＭＥ）、結果格納（ＷＢ）の５段のステージを含むものとする。例えばロード命令の場合、ＥＸステージでアドレスの計算が行われ、ＭＥステージでデータメモリからデータが読み出され、ＷＢステージで読み出しデータがレジスタに書き込まれる。ストア命令の場合、ＥＸステージでアドレスの計算が行われ、ＭＥステージでデータはデータメモリに書き込まれ、ＷＢステージでは何も行われない。
【００７６】
図６（Ａ）を参照すると、プロセッサＡでは、命令をローカルメモリ（あるいは、プロセッサＡ内蔵の命令メモリ）よりフェッチし（ＩＦ）、デコード（ＤＥ）ステージにて、フェッチした命令が、コプロセッサ命令であると判定された場合、該命令を、コプロセッサで実行させるため、コプロセッサの使用要求を、アービトレーション回路（図１の１１５）に出力する。プロセッサＡは、アービトレーション回路から使用許諾を受け、当該命令をコプロセッサに送信する。コプロセッサでは、プロセッサＡから受け取った当該命令のデコード（ＣＯＰ  ＤＥ）、命令の実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）の各ステージを実行し、プロセッサＡによるライトバックステージ（ＷＢ）が実行される。特に制限されないが、コプロセッサのメモリアクセス（ＣＯＰ  ＭＥ）ステージにおいて、コプロセッサでの命令実行結果（演算結果）が、プロセッサＡのローカルバスを介してプロセッサＡに転送され、プロセッサＡのライトバック（ＷＢ）ステージにおいて、プロセッサＡ内のレジスタに書き込まれる構成としてもよい。この場合、プロセッサＡは、ＭＥステージでデータメモリのかわりに、コプロセッサから演算結果を受け取り、ＷＢステージで結果をレジスタに格納することになる。なお、図６（Ａ）に示す例では、各プロセッサにおける命令パイプライン・ステージ（ＤＥ、ＥＸ、ＭＥ）と、該プロセッサが発行したコプロセッサ命令を実行するコプロセッサの命令パイプライン・ステージ（ＣＯＰ  ＤＥ、ＣＯＰ  ＥＸ、ＣＯＰ  ＭＥ）とが同期しているが、コプロセッサとプロセッサの動作周波数が相違してもよいことは勿論である。あるいは、コプロセッサがプロセッサと非同期で動作し、コプロセッサで演算が終了した場合、ＲＥＡＤＹ信号をプロセッサに通知する構成としてもよい。
【００７７】
プロセッサＢも、当該命令のデコード（ＣＯＰ  ＤＥ）、命令の実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）の各ステージをコプロセッサで行わせることになる。この場合、アービトレーション回路（図１の１１５）は、コプロセッサの命令デコード（ＤＥ）ステージ（プロセッサＡ発行のコプロセッサ命令のＤＥステージ分）に相当する期間、プロセッサＢをウェイト状態とし、プロセッサＢ発行のコプロセッサ命令に関してデコード（ＤＥ）ステージがストールされる。つづいて、ウェイト（ＷＡＩＴ）が解除される。プロセッサＢは、アービトレーション回路から使用許諾（ＷＡＩＴ解除）を受け、当該命令をコプロセッサに送信する。コプロセッサでは、プロセッサＢから受け取った当該命令のデコード（ＣＯＰ  ＤＥ）、命令の実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）の各ステージを順次実行し、プロセッサＢによるライトバックステージ（ＷＢ）が実行される。
【００７８】
図６（Ａ）には、コプロセッサの命令デコード（ＤＥ）ステージでの回路資源に競合が生じた例（例えばプロセッサＡ、Ｂで同時に発行されたコプロセッサ命令が同一の場合）が示されているが、アクセスの競合が調停される対象は、命令デコード（ＤＥ）ステージに限定されるものでなく、演算実行（ＥＸ）ステージ、メモリアクセス（ＭＥ）ステージにおいて、コプロセッサの回路資源に競合が生じた場合、使用が許可されたプロセッサ以外のプロセッサによるコプロセッサの回路資源の使用は、ウェイト状態に設定される。
【００７９】
一方、プロセッサＡ、Ｂがそれぞれ発行したコプロセッサ命令に、回路資源のアクセス競合がない場合には、図６（Ｂ）に示すように、ＷＡＩＴ信号は非活性（ＬＯＷ）のままであり、コプロセッサでは、プロセッサＡとプロセッサＢからのコプロセッサ命令の命令デコード（ＤＥ）からメモリアクセス（ＭＥ）のパイプライン・ステージが同時に実行される。特に制限されないが、図６（Ａ）、（Ｂ）に示す例では、コプロセッサ１１６は２本のパイプラインを備え、２命令同時発行可能な構成としてもよい。
【００８０】
本実施例では、プロセッサに密結合されたコプロセッサの回路資源の競合の調整を、命令パイプラインのステージ単位で行っている。例えば図１のアービトレーション回路１１５において、コプロセッサ１１６のパイプラインのステージの進捗情報（現在のステージ）が、コプロセッサバス１１４を介して通知され、アービトレーション回路１１５では、対応する資源の使用を監視し、使用要求対象の資源と競合が生じるか判別する制御を行う。すなわち、密結合バスには、コプロセッサ１１６からコプロセッサ１１６のパイプラインの状態等の信号が転送される構成としてもよい。この場合、プロセッサ１０１Ａ、１０１Ｂには、コプロセッサバス１１４を介してパイプラインの状態等が通知される。
【００８１】
密結合バスを介しての資源の競合を調停するアービトレーション回路１１５においては、パイプラインのステージ単位で資源競合の調停を行っているが、パイプラインのステージ単位ではなく、命令サイクル単位で、プロセッサ間でのコプロセッサ１１６の資源競合の調停を行うようにしてもよいことは勿論である。
【００８２】
図７は、比較例として、プロセッサを共通バス等の疎結合バスを介してコプロセッサに接続した場合の命令パイプラインの推移を示す図である。
【００８３】
プロセッサが共通バス等の疎結合バスを介してコプロセッサに命令を渡す場合、プロセッサの命令パイプラインのメモリアクセス（ＭＥ）ステージにおいて、コプロセッサに命令が渡され、コプロセッサでは、プロセッサのメモリアクセス（ＭＥ）ステージの後半に当該命令のデコード（ＣＯＰ  ＤＥ）が行われ、プロセッサのライトバック（ＷＢ）ステージに対応するサイクルで、コプロセッサの演算実行（ＥＸ）ステージが実行され、つづいてメモリアクセス（ＣＯＰ  ＭＥ）ステージが実行される。特に制限されないが、コプロセッサにおけるメモリアクセス（ＣＯＰ  ＭＥ）ステージでは、コプロセッサからプロセッサへデータの転送が行われる。図７に示す例では、共通バス等の疎結合バスのバスサイクルが低速であるため、バスアクセスによりプロセッサ側のパイプラインに停止期間が生じる。例えばコプロセッサにおけるメモリアクセス（ＣＯＰ  ＭＥ）ステージに対応する期間、プロセッサ側のパイプラインに空きが生じている。
【００８４】
図７（Ａ）に示すように、プロセッサＡとプロセッサＢのメモリアクセス（ＭＥ）ステージに競合がある場合、プロセッサＢのメモリアクセス（ＭＥ）（したがって、コプロセッサへコプロセッサ命令を転送しコプロセッサでコプロセッサ命令をデコードするＤＥステージ）は、コプロセッサにおいて、プロセッサＡ発行のコプロセッサ命令のデコード（ＣＯＰ  ＤＥ）、命令実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）のステージが終了するまで、待機状態とされる。すなわち、共通バス等の疎結合バスにおいては、プロセッサＡ発行の命令を実行するコプロセッサのメモリアクセス（ＣＯＰ  ＭＥ）は、プロセッサＢのメモリアクセス（ＭＥ）ステージと、バス資源の競合が生じるため、プロセッサＡ発行の命令のデコード（ＣＯＰ  ＤＥ）、命令実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）のステージが終了するまで、プロセッサＢのメモリアクセス（ＭＥ）ステージはストールされる。
【００８５】
コプロセッサにおけるプロセッサＡ発行の命令のメモリアクセス（ＣＯＰ  ＭＥ）ステージ終了後、プロセッサＢのメモリアクセス（ＭＥ）ステージのウェイトが解除され、これを受けて、プロセッサＢ発行のコプロセッサ命令がコプロセッサに転送され、コプロセッサにおいて、プロセッサＢ発行のコプロセッサ命令のデコード（ＣＯＰ  ＤＥ）、実行（ＣＯＰ  ＥＸ）、メモリアクセス（ＣＯＰ  ＭＥ）の各ステージが順次実行される。
【００８６】
プロセッサＡ、Ｂから発行されるコプロセッサ命令に、回路資源のアクセス競合がない場合には、図７（Ｂ）に示すように、ウェイト（ＷＡＩＴ）信号は非活性（ＬＯＷ）のままである。図７（Ｂ）に示す例において、プロセッサＢでは、プロセッサＡのメモリアクセス（ＭＥ）のステージでは、プロセッサＢにおける命令フェッチ（ＩＦ）、デコード（ＤＥ）、実行（ＥＸ）が行われ、プロセッサＡのメモリアクセス（ＭＥ）につづいて、プロセッサＢのメモリアクセス（ＭＥ）のステージが実行される。すなわち、コプロセッサでは、プロセッサＡ発行の命令のメモリアクセス（ＣＯＰ  ＭＥ）につづいて、プロセッサＢ発行の命令のデコードＣＯＰ  ＤＥ）が行われる。
【００８７】
図６（Ａ）に示した密結合バスの場合、アクセス競合時にパイプラインがストールされる期間（遅延）は、例えばパイプライン１段分の期間（図６（Ａ）ではＤＥステージ）であるのに対して、図７（Ａ）の疎結合バスの場合、アクセス競合が生じた場合のプロセッサのＭＥステージのストールされる期間は長く、特にバスサイクルが低速である場合、ストールされる期間は長くなり、パイプラインに停止期間が生じる。図６（Ａ）に示した密結合バスの場合、パイプラインの停止（空き）は生じていない。
【００８８】
図８は、本実施例のコプロセッサを用いた構成において、複数サイクルのコプロセッサの命令が競合した場合を説明するための図である。コプロセッサで実行されるパイプラインにおいて、複数サイクルのコプロセッサ命令が競合した場合を示している。プロセッサＡ発行のコプロセッサ命令を実行するコプロセッサにおけるパイプラインの演算実行ステージ（ＣＯＰ  ＥＸ１〜ＥＸ５）において、プロセッサＢのコプロセッサ命令で使う資源アクセスが競合している場合、この期間、アービトレーション回路（図１の１１５）から、プロセッサＢへのＷＡＩＴ信号が出力され、コプロセッサにおけるプロセッサＢ発行のコプロセッサ命令のデコード（ＤＥ）ステージがストールされる。コプロセッサにおけるプロセッサＡ発行のコプロセッサ命令の演算実行ステージ（ＣＯＰ  ＥＸ５）の終了後、プロセッサＢ発行のコプロセッサ命令の演算実行ステージ（ＣＯＰ  ＥＸ１〜ＥＸ５）とメモリアクセス（ＣＯＰ  ＭＥ）ステージが実行される。
【００８９】
なお、本実施例では、資源競合のアービトレーション（調停）制御を、命令パイプラインのステージ単位で行う例を説明したが、資源のアクセス競合に基づき、命令サイクル単位でのアービトレーション、複数命令単位でのアクセス・アービトレーションを行ってもよい。
【００９０】
上記実施例では、コプロセッサ内の回路資源をＲＴレベルで扱うＡＬＵやレジスタファイルなどで分類する方法として、それら資源を用いたコプロセッサ命令を階層定義している。このため、以下のような効果を奏する。
【００９１】
前記第１の実施例によれば、複数のプロセッサは密結合コプロセッサ内の回路資源（演算器など）に個々にアクセス可能となり、分類した回路単位で資源有効活用（同時使用）が可能となる。
【００９２】
前記第２の実施例によれば、コプロセッサ内の回路資源をＲＴレベルで扱うＡＬＵやレジスタファイルなどで分類する方法として、それら回路資源を用い拡張コプロセッサ命令を階層定義することによって、回路資源単位だけでなく、階層定義した命令単位での、競合調停をすることによって、さらに高度な競合解決が可能となる。
【００９３】
また、最上位命令に対して変更を加えたい場合に、中位層や下位層の命令を用いたプログラミングによる変更が可能となる（図４参照）。すなわち、ハードウエアの変更を回避可能としている。
【００９４】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【００９５】
【図１】本発明の第１の実施例の概略構成を示す図である。
【図２】本発明の第２の実施例のコプロセッサの構成を示す図である。
【図３】本発明の第３の実施例のコプロセッサの構成の一例を示す図である。
【図４】本発明の第４の実施例のコプロセッサの構成の一例を示す図である。
【図５】本発明の第４の実施例の動作の一例を示す図である。
【図６】密結合バスでのアクセス競合の有無を説明するための図である。
【図７】疎結合バスでのアクセス競合の有無を説明するための図である。
【図８】密結合バスでのアクセス競合の有無を説明するための図である。
【図９】関連技術の構成を示す図である。
【図１０】図９の構成を説明する図である。
【図１１】関連技術の構成を示す図である。
【図１２】図１１の構成を説明する図である。
【符号の説明】
【００９６】
１０  ＣＰＵ
３０  メモリ
４０ａ、４０ｂ、４０ｃ、４０ｄ  周辺装置
１０１  プロセッサ
１０１Ａ、２０１Ａ  プロセッサＡ  
１０１Ｂ、２０１Ｂ  プロセッサＢ  
１０２Ａ、２０２Ａ  ローカルメモリ
１０２Ｂ、２０２Ｂ  ローカルメモリ
１０３、２０４  共用メモリ
１０４  共有コプロセッサ
１０５、２０６  共通バス
１１６、１２６、２０３Ａ、２０３Ｂ  コプロセッサ（密結合コプロセッサ）
１１５  アービトレーション回路
１１１Ａ、１１１Ｂ  信号線（コプロセッサ使用要求）
１１２Ａ、１１２Ｂ  信号線（ＷＡＩＴ信号）
１１４  コプロセッサバス（マルチレイヤ）
【図１】
2009026136.tif 000003
【図２】
2009026136.tif 000004
【図３】
2009026136.tif 000005
【図４】
2009026136.tif 000006
【図５】
2009026136.tif 000007
【図６】
2009026136.tif 000008
【図７】
2009026136.tif 000009
【図８】
2009026136.tif 000010
【図９】
2009026136.tif 000011
【図１０】
2009026136.tif 000012
【図１１】
2009026136.tif 000013
【図１２】
2009026136.tif 000014