(57)【要約】【課題】データの共有やデータ転送のバッファリングを容易に行なうことが可能なマルチプロセッサを提供すること。【解決手段】複数の共有ローカルメモリ５−０〜５−（ｎ−１）のそれぞれが、複数のプロセッサユニットＰＵ０〜ＰＵ（ｎ−１）（１−０〜１−（ｎ−１））の中の２つのプロセッサに接続されており、複数のプロセッサユニットＰＵ０〜ＰＵ（ｎ−１）（１−０〜１−（ｎ−１））と複数の共有ローカルメモリ５−０〜５−（ｎ−１）とがリング状に接続される。したがって、データの共有やデータ転送のバッファリングを容易に行なうことが可能となる。【選択図】図２
2012252490.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられる複数のキャッシュメモリと、
共有バスを介して前記複数のキャッシュメモリに接続され、前記複数のプロセッサからアクセスされる共有メモリを接続するためのインタフェース手段と、
複数の共有ローカルメモリとを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のプロセッサの中の２つのプロセッサに接続される、マルチプロセッサ。
【請求項２】
前記マルチプロセッサはさらに、前記複数の共有ローカルメモリのそれぞれに対応して設けられ、接続される２つのプロセッサからの書き込みおよび読み出しを制御する複数の制御手段を含む、請求項１記載のマルチプロセッサ。
【請求項３】
前記複数の共有ローカルメモリのそれぞれは、書き込みおよび読み出しを許可する情報を格納するレジスタを記憶する領域を有し、
前記複数の共有ローカルメモリのそれぞれに接続される２つのプロセッサは、前記レジスタを参照して対応する共有ローカルメモリへの書き込みおよび読み出しを行なう、請求項２記載のマルチプロセッサ。
【請求項４】
前記複数のプロセッサは、マトリクス上に配置され、
前記複数の共有ローカルメモリは、前記複数のプロセッサの間に配置されており、
前記マルチプロセッサはさらに、前記複数のプロセッサと前記複数の共有ローカルメモリとの間の接続を切り替える複数の切替手段を含み、
前記複数の共有ローカルメモリは、前記切替手段を切り替えるための情報を記憶する領域を有する、請求項１〜３のいずれかに記載のマルチプロセッサ。
【請求項５】
前記複数のプロセッサのそれぞれは、接続される共有ローカルメモリに対応する切替手段を切り替えるための情報を格納する、請求項４記載のマルチプロセッサ。
【請求項６】
前記複数のプロセッサの少なくとも１つは、接続される共有ローカルメモリに、前記複数の切替手段の全てを切り替えるための情報を格納する、請求項４記載のマルチプロセッサ。
【請求項７】
複数のプロセッサと、
複数の共有ローカルメモリと、
前記複数の共有ローカルメモリに対応して設けられ、前記複数のプロセッサの中の２つのプロセッサに接続される複数のキャッシュメモリとを含み、
前記複数のプロセッサと前記複数のキャッシュメモリとがリング状に接続される、マルチプロセッサ。
【請求項８】
複数のプロセッサと、
複数の共有ローカルメモリと、
前記複数のプロセッサの各ポートに対応して設けられ、前記複数の共有ローカルメモリのポートに接続される複数のキャッシュメモリとを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のキャッシュメモリの中の２つのキャッシュメモリに接続される、マルチプロセッサ。
【請求項９】
複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられる複数のキャッシュメモリと、
共有バスを介して前記複数のキャッシュメモリに接続され、前記複数のプロセッサからアクセスされる共有メモリを接続するためのインタフェース手段と、
複数の共有ローカルメモリと、
前記複数のプロセッサによって処理された画像データに対して画像処理を行なう画像処理手段と、
前記画像処理手段によって処理された後の画像データを表示する表示手段とを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のプロセッサの中の２つのプロセッサに接続されており、前記複数のプロセッサと前記複数の共有ローカルメモリとがリング状に接続される、画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを並列に動作させる技術に関し、特に、共有ローカルメモリを介して通信を行なうマルチプロセッサおよびそれを用いた画像処理システムに関する。
【背景技術】
【０００２】
近年、データ処理装置の高機能化、多機能化が進んでおり、複数のＣＰＵ（Central Processing Unit）を並列に動作させるマルチプロセッサシステムが採用されることが多くなってきている。このようなマルチプロセッサシステムにおいては、プロセッサ間の接続形態として共有バス接続、ポイントツーポイント接続、クロスバ・スイッチによる接続、リングバスによる接続などが採用されている。
【０００３】
共有バス接続は、共有バスに接続された複数のプロセッサがデータを共有しながら並列処理を行なう接続形態である。たとえば、共有バスにより複数のプロセッサが接続された共有メモリ型マルチプロセッサシステムなどがある。アクセス競合を回避するために、バス・コントローラがバスの調停（アービトレーション）を行なうが、アクセス競合が生じた場合に、プロセッサはバスが空くのを待つ必要がある。
【０００４】
ポイントツーポイント接続は、共有バスアーキテクチャの後継として開発されたものであり、チップ間やＩ／Ｏハブ（チップセット）を接続するための接続形態である。一般的に、ポイントツーポイント接続の転送方向は一方向であり、双方向通信を行なうためには２つのディファレンシャル（差動）方式のデータリンクを使用する必要があり、信号線数が多くなる。５階層の階層構造アーキテクチャによって、ルーティング機能やキャッシュコヒーレンシ・プロトコルにも対応することができるが、構造や制御が非常に複雑となる。
【０００５】
また、パケット転送方式のポイントツーポイント接続も開発されており、ＤＤＲ（Double Data Rate）を用いたデータ転送に対応するほか、転送周波数を自動的に調整する機能や、２〜３２のデータ幅に対応してビット幅を自動的に調整する機能を有するなど、高速性と柔軟性とを兼ね備え、多機能である反面、非常に複雑な構成となっている。
【０００６】
クロスバ・スイッチによる接続は、多対多の接続形態であり、データ転送経路を柔軟に選択でき、高い性能を発揮する。その反面、接続される対象の数が増えるに伴って回路規模が激増する。
【０００７】
リングバスによる接続は、リング状のバスでＣＰＵを結合し、隣り合うＣＰＵ間でデータを受け渡すことができる。たとえば、４系統のリングバスが用いられ、２系統を時計回り、残りの２系統を反時計回りのデータ転送に使用する。リングバスによる接続は、回路規模が小さくて済み、構成がシンプルであり拡張が容易である。その反面、データ転送時の遅延時間が大きく、性能向上には不向きである。
【０００８】
これらに関連する技術として、下記の特許文献１〜２に開示された発明および非特許文献１に開示された技術がある。
【０００９】
特許文献１は、バス型伝送路を用いるマルチプロセッサシステムに関するものであり、単方向のバス型伝送路からなる環状伝送路に、マイクロプロセッサシステムとメモリとを交互に配置し、かつ、１つのメモリを共有する２つのマイクロプロセッサシステム間に手順信号路を設けたものである。
【００１０】
特許文献２は、低レイテンシのメッセージ・パッシング・メカニズム（Low latency message passing mechanism）に関するものであり、ポイントツーポイント接続を開示している。
【００１１】
非特許文献１は、第１世代のセルプロセッサ（First-Generation CELL Processor）に関するものであり、リングバス接続を開示している。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平０２−１９９５７４号公報
【特許文献２】米国特許第７６１７３６３号明細書
【非特許文献】
【００１３】
【非特許文献１】D. Pham et al., "The Design and Implementation of a First-Generation CELL Processor," 2005 IEEE International Solid-State Circuits Conference (ISSCC 2005), Digest of Technical Papers, pp. 184-185, Feb. 2005.
【発明の概要】
【発明が解決しようとする課題】
【００１４】
共有メモリ型の対称型マルチプロセッサ（Symmetrical Multi-Processor：ＳＭＰ）においては、共有メモリへのアクセス集中がボトルネックとなるため、プロセッサ数に比例してスケーラブルにマルチプロセッサ性能を向上させることは非常に難しい。
【００１５】
また、共有メモリ型のＳＭＰによる並列処理においては、プロセス間の同期制御や排他制御のためのスピンロック処理や、キャッシュ・コヒーレンシを保持するためのバス・スヌーピングなどの処理が必須であるが、これらの処理に伴う待ち時間の増大や、バス・トラフィックの増加に伴うパフォーマンスの低下は、マルチプロセッサの性能向上を阻害する一因ともなっている。
【００１６】
一方、非対称マルチプルセッサ（Asymmetrical Multi-Processor：ＡＭＰ）による機能分散処理においては、全体の処理を幾つかの部分に分割し、別々のプロセッサがそれらの処理を担当することで、データ処理を効率的に行なうことができる。ただし、従来の共有バス型のＡＭＰは、ＳＭＰと同様に、共有メモリへのバスアクセス集中がボトルネックとなり、性能向上が難しいといった問題点があった。
【００１７】
ポイントツーポイント接続、クロスバ・スイッチによる接続、リングバスによる接続には、上述の問題点がある。
【００１８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、バスアクセス集中によるボトルネックを解消し、並列処理性能のスケーラビリティを向上させることが可能なマルチプロセッサおよびそれを用いた画像処理システムを提供することである。
【課題を解決するための手段】
【００１９】
本発明の一実施例によれば、マルチプロセッサが提供される。マルチプロセッサは、複数のプロセッサユニットと、複数のプロセッサユニットのそれぞれに対応して設けられる複数のキャッシュメモリと、共有バスを介して複数のキャッシュメモリに接続され、複数のプロセッサユニットからアクセスされる共有メモリを接続するためのＩ／Ｆと、複数の共有ローカルメモリとを含む。複数の共有ローカルメモリのそれぞれが、複数のプロセッサユニットの中の２つのプロセッサに接続される。
【発明の効果】
【００２０】
本発明の一実施例によれば、複数の共有ローカルメモリのそれぞれが、複数のプロセッサユニットの中の２つのプロセッサに接続されるので、データの共有やデータ転送のバッファリングを容易に行なうことが可能となる。
【図面の簡単な説明】
【００２１】
【図１】一般的な共有メモリ型マルチプロセッサシステムの構成例を示す図である。
【図２】本発明の第１の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。
【図３】本発明の第１の実施の形態におけるマルチプロセッサの概念的な構成例を示す図である。
【図４】本発明の第１の実施の形態におけるマルチプロセッサを含んだ半導体装置の一例を示す図である。
【図５】共有ローカルメモリに１ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。
【図６】共有ローカルメモリに２ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。
【図７】セマフォ・レジスタの一例を示す図である。
【図８】図７に示すセマフォ・レジスタを用いた排他制御の一例を示すフローチャートである。
【図９】半導体チップ上におけるプロセッサユニットおよび共有ローカルメモリの配置例を示す図である。
【図１０】４個のプロセッサユニットの配置例を示す図である。
【図１１】プロセッサユニットの構成変更の一例を示す図である。
【図１２】本発明の第１の実施に形態におけるマルチプロセッサの他のバス接続形態を示す図である。
【図１３】図１２に示すバス接続形態の各プロセッサユニットのアドレスマップの一例を示す図である。
【図１４】本発明の第１の実施の形態におけるマルチプロセッサを画像処理システムに応用した場合の構成例を示す図である。
【図１５】本発明の第２の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。
【図１６】本発明の第２の実施の形態におけるマルチプロセッサの他の構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
図１は、一般的な共有メモリ型マルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、ｎ個のプロセッサユニットＰＵ０（１−０）〜ＰＵ（ｎ−１）（１−（ｎ−１））と、プロセッサユニットのそれぞれに接続されるキャッシュメモリ２−０〜２−（ｎ−１）と、共有メモリ３とを含む。ＰＵ０〜ＰＵ（ｎ−１）（１−０〜１−（ｎ−１））は、キャッシュメモリ２−０〜２−（ｎ−１）および共有バス４を介して共有メモリ３にアクセスすることができる。共有メモリ３は、２次キャッシュメモリ、メインメモリ（主記憶）などによって構成される。
【００２３】
半導体プロセス技術の進展によって、多数のプロセッサを半導体チップ上に集積可能となってきたが、図１に示すような一般的な共有バス型マルチプロセッサの構成では、バスアクセスがボトルネックとなり、プロセッサ数に応じたスケーラブルな性能向上が困難となっている。
【００２４】
プロセッサ数に応じて処理性能をスケーラブルに向上させるには、プロセッサごとの機能分散と、粒度の大きなパイプライン処理による並列処理が有効である。データ処理を幾つかの処理段階に分け、複数のプロセッサにそれぞれの処理を担当させ、バケツリレー方式でデータを処理することで、高速にデータ処理を行なうことができる。
【００２５】
（第１の実施の形態）
図２は、本発明の第１の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。このマルチプロセッサは、ｎ個のプロセッサユニットＰＵ０（１−０）〜ＰＵ（ｎ−１）（１−（ｎ−１））と、プロセッサユニットのそれぞれに接続されるキャッシュメモリ２−０〜２−（ｎ−１）と、共有メモリ３と、ｎ個の共有ローカルメモリ５−０〜５−（ｎ−１）とを含む。ＰＵ０〜ＰＵ（ｎ−１）（１−０〜１−（ｎ−１））は、キャッシュメモリ２−０〜２−（ｎ−１）および共有バス４を介して共有メモリ３にアクセスすることができる。
【００２６】
共有ローカルメモリ５−０〜５−（ｎ−１）のそれぞれは、隣接する２つのプロセッサユニットに接続されている。共有ローカルメモリ５−０は、ＰＵ０（１−０）とＰＵ１（１−１）とに接続される。同様にして、共有ローカルメモリ５−１は、ＰＵ１（１−１）とＰＵ２（１−２）とに接続される。また、共有ローカルメモリ５−（ｎ−１）は、ＰＵ（ｎ−１）（１−（ｎ−１））とＰＵ０（１−０）とに接続され、図２に示すように、ＰＵ０（１−０）〜ＰＵ（ｎ−１）（１−（ｎ−１））および共有ローカルメモリ５−０〜５−（ｎ−１）がリング状に接続される。
【００２７】
このように、隣接する２つのプロセッサユニット間に、共有ローカルメモリを用いた通信経路を設ける。すなわち、１つのプロセッサユニットが有するローカルメモリに対して、隣接するプロセッサユニットからもアクセス可能なように専用のデータパスを設け、隣接するプロセッサユニット間でローカルメモリを共有する構成を有してる。
【００２８】
図３は、本発明の第１の実施の形態におけるマルチプロセッサの概念的な構成例を示す図である。本実施の形態におけるマルチプロセッサは、共有ローカルメモリ５−０〜５−（ｎ−１）を用いてポイントツーポイントのプロセッサ間接続を行なうものであり、プロセッサユニット間に共有ローカルメモリを配置し、共有ローカルメモリを介して隣接するプロセッサユニット間でのデータ転送を行なうものである。これは、図３に示すように、概念的にはすべての隣接プロセッサ間に共有ローカルメモリを配置したリングバス接続として動作する。共有ローカルメモリ５−０〜５−（ｎ−１）を用いてプロセッサユニット間を接続しているため、データ転送方向に制約はなく、双方向のデータ転送を行なうことが可能である。
【００２９】
共有ローカルメモリ５−０〜５−（ｎ−１）には、プログラムコードおよびデータの両方を配置することができる。プロセッサユニットが、対応する共有ローカルメモリ上のプログラムコードを実行中は、共有バス４に対する命令フェッチを実行しない。また、プロセッサユニットは、データ処理に必要なオペランドデータが全て共有ローカルメモリにある場合には、共有バス４を介して共有メモリ３からオペランドデータを読み出す必要がない。
【００３０】
このように、プロセッサユニットは、共有ローカルメモリをローカルな命令メモリおよびデータメモリとして使用することで、システムの共有バス４に接続された共有メモリ３にアクセスすることなくデータ処理が実行可能となる。
【００３１】
また、プロセッサユニットは対称であり、起点・終点が決まっていないため、以前のデータ処理結果に基づいて、直ちに次のデータ処理を実行でき、データの中間結果を共有メモリに書き戻す必要はない。
【００３２】
また、ＰＵ０〜ＰＵ（ｎ−１）（１−０〜１−（ｎ−１））が処理内容を分担して、対応する共有ローカルメモリ５−０〜５−（ｎ−１）を用いて機能分散処理を行なうことにより、共有バス４のバスボトルネックを回避でき、高速でスケーラブルな並列処理を行なうことが可能となる。
【００３３】
図４は、本発明の第１の実施の形態におけるマルチプロセッサを含んだ半導体装置の一例を示す図である。この半導体装置１００は、ＰＵ０〜３（１−０〜１−３）と、共有ローカルメモリ（ＳＬＭ：Shared Local Memory）０〜３（５−０〜５−３）と、ＳＬＭ０〜３（５−０〜５−３）に対応して設けられる排他制御用同期機構６−０〜６−３と、内部バス制御部７と、２次キャッシュ８と、ＤＤＲ３  Ｉ／Ｆ９と、ＤＭＡＣ（Direct Memory Access Controller）１０と、内蔵ＳＲＡＭ１１と、外部バス制御部１２と、周辺回路１３と、汎用入出力ポート１４とを含む。なお、図４においては、４つのプロセッサユニット（ＰＵ）と、４つの共有ローカルメモリ（ＳＬＭ）とが記載されているが、これらの個数は４つに限られるものではない。
【００３４】
内部バス制御部７は、共有バス４を介してＰＵ０〜３（１−０〜１−３）に接続されており、ＰＵ０〜３（１−０〜１−３）からのアクセス要求に応じて２次キャッシュ８に対するアクセスを行なう。
【００３５】
２次キャッシュ８は、内部バス制御部７からアクセス要求があったときに、その命令コードまたはデータを保持している場合には、内部バス制御部７にそれを出力する。また、その命令コードまたはデータがない場合には、内部バス１５に接続されるＤＭＡＣ１０、内蔵ＳＲＡＭ１１、外部バス制御部１２に接続される外部メモリ、周辺回路１３などや、ＤＤＲ３  Ｉ／Ｆ９に接続される外部メモリなどにアクセスする。
【００３６】
ＤＤＲ３  Ｉ／Ｆ９は、半導体装置１００の外部にある図示しないＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などに接続され、そのアクセスを制御する。
【００３７】
ＤＭＡＣ１０は、ＰＵ０〜３（１−０〜１−３）からの要求に応じて、メモリ−メモリ間またはメモリ−Ｉ／Ｏ間のＤＭＡ転送を制御する。
【００３８】
外部バス制御部１２は、ＣＳコントローラ、ＳＤＲＡＭコントローラ、ＰＣカードコントローラなどによって構成され、半導体装置１００の外部にあるＳＤＲＡＭやメモリカードなどへのアクセスを制御する。
【００３９】
周辺回路１３は、ＩＣＵ（Interrupt Control Unit）、ＣＬＫＣ（Clock Controller）、ＴＩＭＥＲ（タイマ）、ＵＡＲＴ（Universal Asynchronous Receiver-Transmitter）、ＣＳＩＯ（Clocked Serial Input Output）、ＧＰＩＯ（General Purpose Input Output）などを含む。
【００４０】
汎用入出力ポート１４は、半導体装置１００の外部にある図示しない周辺デバイスなどに接続され、そのアクセスを制御する。
【００４１】
また、ＰＵ０（１−０）は、命令キャッシュ２１と、データキャッシュ２２と、ＭＭＵ（Memory Management Unit）２３と、ＣＰＵ２４とを含む。なお、ＰＵ１〜３（１−１〜１−３）も同様の構成を有しているものとする。
【００４２】
ＭＭＵ２３は、ＣＰＵ２４による命令コードのフェッチまたはデータアクセスがあるときに、命令キャッシュ２１またはデータキャッシュ２２にその命令コードまたはデータがあるか否かを調べ、ある場合には、命令キャッシュ２１からの命令コードのフェッチ、データキャッシュ２２からのデータ読み出し、またはデータキャッシュ２２へのデータ書込みを行なう。
【００４３】
また、命令コードまたはデータがない場合には、内部バス制御部７を介して２次キャッシュ８にアクセスする。また、ＣＰＵ２４がＳＬＭ０（５−０）またはＳＬＭ３（５−３）にアクセスする場合には、直接アクセスを行なう。
【００４４】
ＳＬＭ０〜３（５−０〜５−３）は、小規模ＳＲＡＭなどの高速メモリによって構成される。ＰＵ０〜３（１−０〜１−３）が大規模なプログラムを実行する場合には、ＳＬＭ０〜３（５−０〜５−３）にプログラムコードを置くのではなく、命令キャッシュ２１を介して半導体装置１００の外部にあるＳＤＲＡＭなどのメインメモリからプログラムコードをフェッチすることで、プログラムサイズの制約をなくすことができる。
【００４５】
図５は、共有ローカルメモリに１ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。ＳＬＭｉ（５−ｉ）は、ローカル共有バスを介してＰＵｉ（１−ｉ）およびＰＵｊ（１−ｊ）に接続される。また、ＳＬＭｊ（５−ｊ）は、ローカル共有バスを介してＰＵｊ（１−ｊ）およびＰＵｋ（１−ｋ）に接続される。
【００４６】
ＳＥＭｉ（６−ｉ）は、ＰＵｉ（１−ｉ）およびＰＵｊ（１−ｊ）からＳＬＭｉ（５−ｉ）へのアクセスの排他制御を行なう同期機構（セマフォ）である。また、ＳＥＭｊ（６−ｊ）も同様に、ＰＵｊ（１−ｊ）およびＰＵｋ（１−ｋ）からＳＬＭｊ（５−ｊ）へのアクセスの排他制御を行なう同期機構である。
【００４７】
１ポートメモリは、２ポートメモリに比べてメモリセル面積が小さく高集積なため、高速で比較的大容量の共有ローカルメモリを実現することができる。１ポートメモリを使用する場合は、共有ローカルメモリへのアクセス調停が必須である。
【００４８】
図６は、共有ローカルメモリに２ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。ＳＬＭｉ（５−ｉ）のそれぞれのポートは、ＰＵｉ（１−ｉ）およびＰＵｊ（１−ｊ）に接続される。また、ＳＬＭｊ（５−ｊ）のそれぞれのポートは、ＰＵｊ（１−ｊ）およびＰＵｋ（１−ｋ）に接続される。
【００４９】
ＳＥＭｉ（６−ｉ）は、ＰＵｉ（１−ｉ）およびＰＵｊ（１−ｊ）からＳＬＭｉ（５−ｉ）へのアクセスの排他制御を行なう同期機構（セマフォ）である。また、ＳＥＭｊ（６−ｊ）も同様に、ＰＵｊ（１−ｊ）およびＰＵｋ（１−ｋ）からＳＬＭｊ（５−ｊ）へのアクセスの排他制御を行なう同期機構である。
【００５０】
２ポートメモリを用いた場合には、メモリセル面積が大きいため容量の大きな共有ローカルメモリを実現することは困難であるが、２つのポートから同時にデータを読み出すことができるため、読み出しアクセスに対する調停が不要である。２ポートメモリを用いる場合にも、データの一貫性を保証するために書き込み処理の排他制御が必要となる。
【００５１】
図５および図６に示すように、各プロセッサユニットは、隣接するプロセッサユニットとの間でポイントツーポイント接続のためのポートを有しており、共有ローカルメモリはこれらのポートに接続されている。各プロセッサユニットのポートは、左隣のプロセッサユニットへのポートを「ポートＡ」、右隣のプロセッサユニットへのポートを「ポートＢ」と呼ぶことにする。
【００５２】
後述のように、プロセッサユニットのこれらのポートに接続された共有ローカルメモリは、それぞれプロセッサユニットからオペランドアクセス可能な空間にメモリマップされており、ポート名で一意に決まるアドレス領域に配置される。
【００５３】
ここで、プログラムの同期のための排他制御は、プロセッサの排他制御用命令を使用することによってソフトウェアで実現することもできるが、リソースに対する排他制御をハードウェアの同期機構を用いて実現することもできる。
【００５４】
図５および図６に示すマルチプロセッサにおいては、このような同期機構としてハードウェアで実現したセマフォ・フラグを共有メモリに持たせている。ハードウェア・セマフォのフラグビットを、周辺ＩＯの制御レジスタとしてメモリマップにマッピングしておくことで、プログラムからアクセスして、容易に排他制御を実現することが可能である。
【００５５】
図７は、セマフォ・レジスタの一例を示す図である。図７においては、３２個のＳＥＭが設けられる場合を示しており、読み書き可能なＳビットがセマフォ・フラグとしてマッピングされている。このＳビットには書き込まれた値が保持されるが、プロセッサユニットが内容を読み出すと、読み出した後に自動的にクリアされる。
【００５６】
セマフォ・レジスタのＳビットは、“０”のときにアクセス禁止状態、“１”のときにアクセス許可状態であることを示している。セマフォ・レジスタによる排他制御を行なう場合、予めプログラムでアクセス許可状態である“１”に初期化しておく必要がある。
【００５７】
共有リソースごとに、このようなセマフォ・レジスタを１つ使用することで、プログラムによって共有ローカルメモリの全体、または一部領域を対象とした排他制御アクセスを行なうことができる。
【００５８】
図８は、図７に示すセマフォ・レジスタを用いた排他制御の一例を示すフローチャートである。まず、プロセッサユニットは、対応の共有ローカルメモリのセマフォ・レジスタの内容を読み出して（Ｓ１１）、Ｓビットの値がアクセス許可状態を示す“１”であるか否かを判定する（Ｓ１２）。Ｓビットの値が“１”でなければ（Ｓ１２，Ｎｏ）、再度Ｓビットの読み出し動作を繰り返し、アクセス許可状態となるまで待機する。
【００５９】
このとき、プロセッサユニットは、ポーリングによって単純にＳビットの読み出しを行なうようにしてもよいが、再度の読み出しを行なう前に所定の時間だけ待機したり、待機している間に別タスクの処理を行なうようにしてもよい。
【００６０】
Ｓビットの値がアクセス許可状態を示す“１”であれば（Ｓ１２，Ｙｅｓ）、共有リソースに対するアクセス権を獲得して、共有ローカルメモリにアクセスする（Ｓ１３）。プロセッサユニットは、共有ローカルメモリに対するアクセスが完了すると、アクセス権を解放して他のプロセッサユニットのアクセス許可を行なうために、セマフォ・レジスタのＳビットに“１”を設定して、排他アクセス制御を終了する。
【００６１】
図９は、半導体チップ上におけるプロセッサユニットおよび共有ローカルメモリの配置例を示す図である。図９（ａ）は、プロセッサユニットの２ポート接続の一例を示している。また、図９（ｂ）は、プロセッサユニットの４ポート接続の一例を示している。図９（ａ）および図９（ｂ）に示すように、プロセッサユニットと共有ローカルメモリとが隣接してレイアウトされる。これによって、プロセッサユニットと共有ローカルメモリとの間の配線を最短にすることができ、効率よくプロセッサユニット間のデータ転送経路を配置することができる。
【００６２】
図１０は、４個のプロセッサユニットの配置例を示す図である。４個のＰＵ０〜３（１−０〜１−３）を対称に配置する場合には、図８（ａ）に示す２ポート接続のプロセッサユニットで実現することができる。プロセッサユニット間には、ポートと共有ローカルメモリとの接続を動的に切り替えるようにするために、スイッチ３１−０〜３１−３が接続されている。
【００６３】
このスイッチ３１−０〜３１−３のイネーブル信号ｅ０ｗ、ｅ１ｓ、ｅ２ｗ、ｅ３ｓを制御することによって、隣接するプロセッサユニット間のポイントツーポイント接続を動的にイネーブル／ディスエーブルすることが可能となっている。
【００６４】
さらに多数のプロセッサユニットを２次元的に並べる場合には、図９（ｂ）に示すような４ポート接続のプロセッサユニットと、図９（ａ）に示す２ポート接続のプロセッサユニットとを組み合わせることで、プロセッサユニットと共有ローカルメモリとを規則的に配置することができる。
【００６５】
図１１は、プロセッサユニットの構成変更の一例を示す図である。図１１は、図９（ｂ）に示す４ポート接続のプロセッサユニット１６個をマトリクス状に配置したものであり、各プロセッサユニット間に配置されるスイッチを切り替えることによって、プロセッサユニット間の接続をダイナミックに切り替えることができ、プロセッサユニット構成を自由に変更することができる。
【００６６】
図１１（ａ）は、４個のプロセッサユニットを接続したドメインを４グループ有する構成（（４コア×４）構成）を示しており、比較的処理負荷の軽いデータ処理を行なわせるのに適した構成となっている。
【００６７】
また、図１１（ｂ）は、１６個のプロセッサユニットを接続した構成（１６コア構成）を示しており、より処理負荷の重いデータ処理に適した構成となっている。さらに、図１１（ｃ）は、４個のプロセッサユニットを接続した構成と、１２個のプロセッサユニットを接続した構成とを有する構成（（４コア＋１２コア）構成）を示している。このように、処理負荷に応じて、プロセッサユニットの接続を適宜変更できる構成を有している。
【００６８】
また、システムの負荷が小さい場合には、一部のプロセッサユニットからなるドメインだけを残して、他のドメインのクロック停止、電源遮断を行なうことによってシステムの消費電力を大幅に削減することができる。
【００６９】
後述のように、共有ローカルメモリをプロセッサユニットからアクセス可能なメモリ空間にマッピングすることにより、プロセッサユニットから自由に共有ローカルメモリにアクセスすることができる。また、ポイントツーポイント接続を切り替えるスイッチのイネーブル信号を制御するための制御レジスタをメモリマップしておくことで、プログラムで動的にプロセッサユニット間の接続を切り替えることが可能となる。
【００７０】
プロセッサユニット間の接続を変更する方式として、１）特定または全てのプロセッサから全てのスイッチを切り替え可能とする方式と、２）各プロセッサユニットが自身の近傍のスイッチだけを切り替える方式とを挙げることができる。
【００７１】
ここで、１）の方式は、どのプロセッサユニット間の接続についてもスイッチ切り替えが可能なように、全てのスイッチのイネーブル信号を制御する制御レジスタを、プロセッサユニットからアクセス可能な空間にマッピングして、１つのプロセッサユニットから一括して全プロセッサユニットの接続形態を変更するものである。この方式は、プロセッサユニットの数が多くなると半導体チップ内の配線が困難となるが、プログラムが簡単であり、スイッチ切り替えの時間を短くすることができる。
【００７２】
また、２）の方式は、スイッチのイネーブル信号を制御する制御レジスタを各プロセッサユニットがローカルにアクセス可能な空間にのみマッピングし、各プロセッサユニットが自身の近傍のスイッチを切り替えてローカルにプロセッサユニット間の接続形態を変更するものである。この方式においては、各プロセッサユニットが接続形態を変更するためのプログラムを実行する必要があるため、プログラムが複雑になり接続形態の変更に時間を要するが、プロセッサ数が増えてもイネーブル信号の配線が容易なため、大規模なシステムを構築しやすいといった特徴がある。
【００７３】
図１２は、本発明の第１の実施に形態におけるマルチプロセッサの他のバス接続形態を示す図である。図２に示すマルチプロセッサの接続形態と比較して、ＳＬＭ０〜ＳＬＭ３（５−０〜５−３）が共有バス４にも接続されており、共有ローカルメモリに隣接するプロセッサユニット以外のプロセッサユニットからも、共有ローカルメモリにアクセスすることができる点が異なる。なお、図１２においては、命令キャッシュおよびデータキャッシュをまとめてキャッシュメモリ（Ｉ＄，Ｄ＄）２−０〜２−３としている。
【００７４】
図１３は、図１２に示すバス接続形態の各プロセッサユニットのアドレスマップの一例を示す図である。図１３に示すように、各プロセッサユニットにおいて、プロセッサユニットの各ポートに対応した共有ローカルメモリを同一アドレス空間にマッピングしている。たとえば、ＰＵ０（１−０）のメモリマップにおいては、ＳＬＭ  Ａ領域にＳＬＭ３（５−３）がマッピングされ、ＳＬＭ  Ｂ領域にＳＬＭ０（５−０）がマッピングされる。
【００７５】
これによって、ユーザは、物理的な共有ローカルメモリの番号を意識することなく、接続されるポートだけに着目したプログラミングを行なうことが可能となる。
【００７６】
また、図１３に示す各プロセッサユニットのメモリマップにおいては、共有ローカルメモリのＩＤ番号に応じて、全ての共有ローカルメモリ（ＳＬＭ０〜ＳＬＭ３）が共有バス４側からアクセス可能なメモリ空間にマッピングされている。このようにすることによって、以下のようなメリットがある。
【００７７】
まず、プロセッサユニットが、隣接していない共有ローカルメモリに対して実行プログラムを書き込み、データ処理の初期設定を容易に行なうことができる。たとえば、ＰＵ０（１−０）をマスタ・プロセッサとして使用する場合には、ＰＵ０（１−０）がプログラムを実行することによって他のプロセッサユニットに接続された共有ローカルメモリに対して命令コードを書き込むことで、容易にデータ処理を開始できるようになる。
【００７８】
また、ＤＭＡＣ１０が、共有バス４を介して各共有ローカルメモリに対するＤＭＡ転送を行なうことが可能となる。たとえば、ＰＵ０（１−０）がマスタ・プロセッサの場合には、ＰＵ０（１−０）がソフトウェアによって各共有ローカルメモリに対するＤＭＡ転送を制御することができる。また、図５および図６に示す排他制御用同期機構（セマフォ）をＤＭＡ転送のイネーブル制御に用いることによって、ＤＭＡ転送をハードウェア制御で行なうことも可能である。
【００７９】
また、マスタ・プロセッサが共有ローカルメモリの内容をモニタすることで、実行途中のデータ処理内容を観測することができ、プログラムのデバッグを容易に行なうことが可能となる。
【００８０】
また、共有バス４側からも共有ローカルメモリにアクセスできるようにしておくことで、半導体装置をボードに実装した後など、スキャンパス回路でテストが行なえない状況においても、プログラムでメモリテストを行なうことができる。
【００８１】
ただし、隣接しているプロセッサユニット以外のプロセッサユニットから共有メモリにアクセス可能とすることによって、実行時のプログラムの安全性を低下させ、セキュリティ上の問題を引き起こすことがないよう、共有バス４側からの共有メモリへのアクセスは、プロセッサユニットがスーパーバイザモードになっているときのみ許可するようにしておくことが望ましい。
【００８２】
図１４は、本発明の第１の実施の形態におけるマルチプロセッサを画像処理システムに応用した場合の構成例を示す図である。この画像処理システムは、ＰＵ０〜ＰＵ３（１−０〜１−３）と、キャッシュメモリ２−０と、共有メモリ３と、ＳＬＭ０〜ＳＬＭ３（５−０〜５−３）と、ＤＭＡＣ１０と、画像処理ＩＰ３３と、表示コントローラ３４とを含む。なお、図２〜図６に示すマルチプロセッサの構成部分と同じ構成および機能を有する部分については、同じ参照番号を付すものとする。
【００８３】
ＰＵ１〜ＰＵ３（１−１〜１−３）およびＳＬＭ０〜ＳＬＭ３（５−０〜５−３）がリング状に接続される。また、ＳＬＭ０（５−０）およびＳＬＭ３（５−３）は、共有バス４にも接続される。
【００８４】
メインプロセッサＰＵ０（１−０）がシステム制御用のマスタ・プロセッサであり、ＰＵ１〜ＰＵ３（５−１〜５−３）が画像処理用プロセッサとして使用される。共有メモリ３に置かれた画像データがＤＭＡ転送によってＳＬＭ０（５−０）に格納され、ＰＵ１〜３（１−１〜１−３）がその画像データを順に処理する。処理データは、ＳＬＭ１（５−１）およびＳＬＭ２（５−２）を介してプロセッサユニット間で転送された後、ＳＬＭ３（５−３）からＤＭＡ転送によって共有メモリ３、画像処理ＩＰ３３などに転送される。
【００８５】
画像処理ＩＰ３３は、ＤＭＡ転送などによって共有メモリ３またはＳＬＭ３（５−３）から画像データを受け、画像縮小、ブロックノイズ除去、フレーム補間処理などの画像処理を行なう。そして、画像処理後のデータをＤＭＡ転送などによって共有メモリ３または表示コントローラ３４に転送する。
【００８６】
ＰＵ１〜ＰＵ３（１−１〜１−３）によるソフトウェア画像処理と、画像処理ＩＰ３３によるハードウェア画像処理とを組み合わせることによって、非常にフレキシブルで高速な画像データ処理を実現することができる。
【００８７】
表示コントローラ３４は、共有メモリ３または画像処理ＩＰ３３からＤＭＡ転送によって表示用の画像データを受け、ＬＣＤ（Liquid Crystal Display）などの表示装置に画像データを表示する。
【００８８】
以上説明したように、本実施の形態におけるマルチプロセッサによれば、それぞれの共有ローカルメモリを、隣接する２つのプロセッサユニットのみで共有し、ポイントツーポイント接続でデータ転送を行なうようにしたので、送信側のプロセッサユニットと受信側のプロセッサユニットとの間で、データ転送のための細かいタイミングの同期を取る必要がなくなり、データの共有やデータ転送のバッファリングを容易に行なうことが可能となった。
【００８９】
また、それぞれの共有ローカルメモリが２つのプロセッサユニットのみで共有されるため、バスアクセスがボトルネックになることはない。そのため、ＡＭＰ構成において、機能分散を行なうことにより、プロセッサユニット数に比例してスケーラブルに性能向上を図ることが可能となった。
【００９０】
また、共有ローカルメモリによる接続経路をダイナミックに切り替えるようにしたので、データ処理に利用可能なプロセッサユニットの個数を動的に設定でき、必要十分な処理性能を得るようなマルチプロセッサ構成を構築することが可能となった。また、システムの負荷状況に応じて、未使用状態のプロセッサユニット群のクロック停止、電源遮断などを行なうようにしたので、消費電力を削減することが可能となった。
【００９１】
また、共有ローカルメモリを介したポイントツーポイント接続を用いているので、隣接するプロセッサユニット間でデータを共有しながら高速にデータ処理を行なうことができる。すなわち、転送データを共有メモリにバッファリングすることで、受信側のプロセッサユニットが高負荷状態の場合でも、隣接するプロセッサユニット間でデータを共有しながら高速にデータ処理を行なうことが可能となる。
【００９２】
さらには、共有ローカルメモリが２つのプロセッサユニット間でのみ共有される場合には、隣接しない他のプロセッサユニットから共有ローカルメモリにアクセスすることができないため、誤動作や不正アクセスによるデータの破壊を防止することができ、システム全体としてのプログラムの安全性やセキュリティ性を高めることが可能となった。
【００９３】
（第２の実施の形態）
第１の実施の形態においては、共有メモリ型マルチプロセッサに共有ローカルメモリを搭載した場合について説明した。本発明の第２の実施の形態においては、共有メモリを搭載せずに、共有ローカルメモリのみを搭載した分散メモリ型のマルチプロセッサに関するものである。
【００９４】
図１５は、本発明の第２の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。このマルチプロセッサは、ＰＵｉ〜ＰＵｋ（１−ｉ〜１−ｋ）と、ＳＬＭｉおよびＳＬＭｊ（５−ｉ，５−ｊ）と、キャッシュメモリ２１−ｉおよび２１−ｊとを含む。なお、ＳＬＭｉおよびＳＬＭｊ（５−ｉ，５−ｊ）は、１ポートメモリによって構成される。
【００９５】
本実施の形態においては、共有メモリを搭載していないため、ＳＬＭｉおよびＳＬＭｊ（５−ｉ，５−ｊ）として比較的大きなメモリ容量が必要になる。一般的に、大容量のメモリシステムは低速であるため、実行速度を向上させるためにキャッシュメモリ２１−ｉおよび２１−ｊを設けている。
【００９６】
キャッシュメモリ２１−ｉおよび２１−ｊは、共有ローカルバスへのアクセス調停後にアクセスされるため、ライトバックおよびライトスルーのどちらのプロトコルを用いることも可能である。
【００９７】
図１６は、本発明の第２の実施の形態におけるマルチプロセッサの他の構成例を示すブロック図である。このマルチプロセッサは、ＰＵｉ〜ＰＵｋ（１−ｉ〜１−ｋ）と、ＳＬＭｉおよびＳＬＭｊ（５−ｉ，５−ｊ）と、キャッシュメモリ４１〜４６とを含む。なお、ＳＬＭｉおよびＳＬＭｊ（５−ｉ，５−ｊ）は、２ポートメモリによって構成される。
【００９８】
共有ローカルメモリ５−ｉおよび５−ｊが２ポートメモリで構成されるため、キャッシュメモリ４１〜４６がプロセッサユニット側に設けられる。この場合、キャッシュコヒーレンシを保つために、これらのキャッシュメモリ４１〜４６にＭＥＳＩなどのキャッシュ・コヒーレンシ・プロトコルを採用することが可能である。しかしながら、ＡＭＰ型の機能分散処理においては、小さい粒度でのデータ共有や排他制御が可能であることから、ライトスルー型のキャッシュメモリを採用することで、回路規模や複雑さを抑えつつ、実行時のパフォーマンスを改善することが可能となる。
【００９９】
以上説明したように、本実施の形態におけるマルチプロセッサによれば、共有メモリを搭載せずに、共有ローカルメモリのみを搭載するようにしたので、第１の実施の形態において説明した効果に加えて、さらにバスアクセスを分散させることが可能となった。
【０１００】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０１】
１−０〜１−（ｎ−１）  ＰＵ、２−０〜２−（ｎ−１）  キャッシュメモリ、３  共有メモリ、４  共有バス、５−０〜５−（ｎ−１）  共有ローカルメモリ、６−０〜６−３  ＳＥＭ、７  内部バス制御部、８  ２次キャッシュ、９  ＤＤＲ３  Ｉ／Ｆ、１０  ＤＭＡＣ、１１  内蔵ＳＲＡＭ、１２  外部バス制御部、１３  周辺回路、１４  汎用入出力ポート、１５  内部バス、２１  命令キャッシュ、２２  データキャッシュ、２３  ＭＭＵ、２４  ＣＰＵ、３１−０〜３１−３  スイッチ、３３  画像処理ＩＰ、３４  表示コントローラ、４１〜４６  キャッシュメモリ、１００  半導体装置。
【図１】
2012252490.tif 000003
【図２】
2012252490.tif 000004
【図３】
2012252490.tif 000005
【図４】
2012252490.tif 000006
【図５】
2012252490.tif 000007
【図６】
2012252490.tif 000008
【図７】
2012252490.tif 000009
【図８】
2012252490.tif 000010
【図９】
2012252490.tif 000011
【図１０】
2012252490.tif 000012
【図１１】
2012252490.tif 000013
【図１２】
2012252490.tif 000014
【図１３】
2012252490.tif 000015
【図１４】
2012252490.tif 000016
【図１５】
2012252490.tif 000017
【図１６】
2012252490.tif 000018