説明

マルチプロセッサおよびそれを用いた画像処理システム

【課題】データの共有やデータ転送のバッファリングを容易に行なうことが可能なマルチプロセッサを提供すること。
【解決手段】複数の共有ローカルメモリ5−0〜5−(n−1)のそれぞれが、複数のプロセッサユニットPU0〜PU(n−1)(1−0〜1−(n−1))の中の2つのプロセッサに接続されており、複数のプロセッサユニットPU0〜PU(n−1)(1−0〜1−(n−1))と複数の共有ローカルメモリ5−0〜5−(n−1)とがリング状に接続される。したがって、データの共有やデータ転送のバッファリングを容易に行なうことが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサを並列に動作させる技術に関し、特に、共有ローカルメモリを介して通信を行なうマルチプロセッサおよびそれを用いた画像処理システムに関する。
【背景技術】
【0002】
近年、データ処理装置の高機能化、多機能化が進んでおり、複数のCPU(Central Processing Unit)を並列に動作させるマルチプロセッサシステムが採用されることが多くなってきている。このようなマルチプロセッサシステムにおいては、プロセッサ間の接続形態として共有バス接続、ポイントツーポイント接続、クロスバ・スイッチによる接続、リングバスによる接続などが採用されている。
【0003】
共有バス接続は、共有バスに接続された複数のプロセッサがデータを共有しながら並列処理を行なう接続形態である。たとえば、共有バスにより複数のプロセッサが接続された共有メモリ型マルチプロセッサシステムなどがある。アクセス競合を回避するために、バス・コントローラがバスの調停(アービトレーション)を行なうが、アクセス競合が生じた場合に、プロセッサはバスが空くのを待つ必要がある。
【0004】
ポイントツーポイント接続は、共有バスアーキテクチャの後継として開発されたものであり、チップ間やI/Oハブ(チップセット)を接続するための接続形態である。一般的に、ポイントツーポイント接続の転送方向は一方向であり、双方向通信を行なうためには2つのディファレンシャル(差動)方式のデータリンクを使用する必要があり、信号線数が多くなる。5階層の階層構造アーキテクチャによって、ルーティング機能やキャッシュコヒーレンシ・プロトコルにも対応することができるが、構造や制御が非常に複雑となる。
【0005】
また、パケット転送方式のポイントツーポイント接続も開発されており、DDR(Double Data Rate)を用いたデータ転送に対応するほか、転送周波数を自動的に調整する機能や、2〜32のデータ幅に対応してビット幅を自動的に調整する機能を有するなど、高速性と柔軟性とを兼ね備え、多機能である反面、非常に複雑な構成となっている。
【0006】
クロスバ・スイッチによる接続は、多対多の接続形態であり、データ転送経路を柔軟に選択でき、高い性能を発揮する。その反面、接続される対象の数が増えるに伴って回路規模が激増する。
【0007】
リングバスによる接続は、リング状のバスでCPUを結合し、隣り合うCPU間でデータを受け渡すことができる。たとえば、4系統のリングバスが用いられ、2系統を時計回り、残りの2系統を反時計回りのデータ転送に使用する。リングバスによる接続は、回路規模が小さくて済み、構成がシンプルであり拡張が容易である。その反面、データ転送時の遅延時間が大きく、性能向上には不向きである。
【0008】
これらに関連する技術として、下記の特許文献1〜2に開示された発明および非特許文献1に開示された技術がある。
【0009】
特許文献1は、バス型伝送路を用いるマルチプロセッサシステムに関するものであり、単方向のバス型伝送路からなる環状伝送路に、マイクロプロセッサシステムとメモリとを交互に配置し、かつ、1つのメモリを共有する2つのマイクロプロセッサシステム間に手順信号路を設けたものである。
【0010】
特許文献2は、低レイテンシのメッセージ・パッシング・メカニズム(Low latency message passing mechanism)に関するものであり、ポイントツーポイント接続を開示している。
【0011】
非特許文献1は、第1世代のセルプロセッサ(First-Generation CELL Processor)に関するものであり、リングバス接続を開示している。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開平02−199574号公報
【特許文献2】米国特許第7617363号明細書
【非特許文献】
【0013】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0014】
共有メモリ型の対称型マルチプロセッサ(Symmetrical Multi-Processor:SMP)においては、共有メモリへのアクセス集中がボトルネックとなるため、プロセッサ数に比例してスケーラブルにマルチプロセッサ性能を向上させることは非常に難しい。
【0015】
また、共有メモリ型のSMPによる並列処理においては、プロセス間の同期制御や排他制御のためのスピンロック処理や、キャッシュ・コヒーレンシを保持するためのバス・スヌーピングなどの処理が必須であるが、これらの処理に伴う待ち時間の増大や、バス・トラフィックの増加に伴うパフォーマンスの低下は、マルチプロセッサの性能向上を阻害する一因ともなっている。
【0016】
一方、非対称マルチプルセッサ(Asymmetrical Multi-Processor:AMP)による機能分散処理においては、全体の処理を幾つかの部分に分割し、別々のプロセッサがそれらの処理を担当することで、データ処理を効率的に行なうことができる。ただし、従来の共有バス型のAMPは、SMPと同様に、共有メモリへのバスアクセス集中がボトルネックとなり、性能向上が難しいといった問題点があった。
【0017】
ポイントツーポイント接続、クロスバ・スイッチによる接続、リングバスによる接続には、上述の問題点がある。
【0018】
本発明は、上記問題点を解決するためになされたものであり、その目的は、バスアクセス集中によるボトルネックを解消し、並列処理性能のスケーラビリティを向上させることが可能なマルチプロセッサおよびそれを用いた画像処理システムを提供することである。
【課題を解決するための手段】
【0019】
本発明の一実施例によれば、マルチプロセッサが提供される。マルチプロセッサは、複数のプロセッサユニットと、複数のプロセッサユニットのそれぞれに対応して設けられる複数のキャッシュメモリと、共有バスを介して複数のキャッシュメモリに接続され、複数のプロセッサユニットからアクセスされる共有メモリを接続するためのI/Fと、複数の共有ローカルメモリとを含む。複数の共有ローカルメモリのそれぞれが、複数のプロセッサユニットの中の2つのプロセッサに接続される。
【発明の効果】
【0020】
本発明の一実施例によれば、複数の共有ローカルメモリのそれぞれが、複数のプロセッサユニットの中の2つのプロセッサに接続されるので、データの共有やデータ転送のバッファリングを容易に行なうことが可能となる。
【図面の簡単な説明】
【0021】
【図1】一般的な共有メモリ型マルチプロセッサシステムの構成例を示す図である。
【図2】本発明の第1の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。
【図3】本発明の第1の実施の形態におけるマルチプロセッサの概念的な構成例を示す図である。
【図4】本発明の第1の実施の形態におけるマルチプロセッサを含んだ半導体装置の一例を示す図である。
【図5】共有ローカルメモリに1ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。
【図6】共有ローカルメモリに2ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。
【図7】セマフォ・レジスタの一例を示す図である。
【図8】図7に示すセマフォ・レジスタを用いた排他制御の一例を示すフローチャートである。
【図9】半導体チップ上におけるプロセッサユニットおよび共有ローカルメモリの配置例を示す図である。
【図10】4個のプロセッサユニットの配置例を示す図である。
【図11】プロセッサユニットの構成変更の一例を示す図である。
【図12】本発明の第1の実施に形態におけるマルチプロセッサの他のバス接続形態を示す図である。
【図13】図12に示すバス接続形態の各プロセッサユニットのアドレスマップの一例を示す図である。
【図14】本発明の第1の実施の形態におけるマルチプロセッサを画像処理システムに応用した場合の構成例を示す図である。
【図15】本発明の第2の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。
【図16】本発明の第2の実施の形態におけるマルチプロセッサの他の構成例を示すブロック図である。
【発明を実施するための形態】
【0022】
図1は、一般的な共有メモリ型マルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、n個のプロセッサユニットPU0(1−0)〜PU(n−1)(1−(n−1))と、プロセッサユニットのそれぞれに接続されるキャッシュメモリ2−0〜2−(n−1)と、共有メモリ3とを含む。PU0〜PU(n−1)(1−0〜1−(n−1))は、キャッシュメモリ2−0〜2−(n−1)および共有バス4を介して共有メモリ3にアクセスすることができる。共有メモリ3は、2次キャッシュメモリ、メインメモリ(主記憶)などによって構成される。
【0023】
半導体プロセス技術の進展によって、多数のプロセッサを半導体チップ上に集積可能となってきたが、図1に示すような一般的な共有バス型マルチプロセッサの構成では、バスアクセスがボトルネックとなり、プロセッサ数に応じたスケーラブルな性能向上が困難となっている。
【0024】
プロセッサ数に応じて処理性能をスケーラブルに向上させるには、プロセッサごとの機能分散と、粒度の大きなパイプライン処理による並列処理が有効である。データ処理を幾つかの処理段階に分け、複数のプロセッサにそれぞれの処理を担当させ、バケツリレー方式でデータを処理することで、高速にデータ処理を行なうことができる。
【0025】
(第1の実施の形態)
図2は、本発明の第1の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。このマルチプロセッサは、n個のプロセッサユニットPU0(1−0)〜PU(n−1)(1−(n−1))と、プロセッサユニットのそれぞれに接続されるキャッシュメモリ2−0〜2−(n−1)と、共有メモリ3と、n個の共有ローカルメモリ5−0〜5−(n−1)とを含む。PU0〜PU(n−1)(1−0〜1−(n−1))は、キャッシュメモリ2−0〜2−(n−1)および共有バス4を介して共有メモリ3にアクセスすることができる。
【0026】
共有ローカルメモリ5−0〜5−(n−1)のそれぞれは、隣接する2つのプロセッサユニットに接続されている。共有ローカルメモリ5−0は、PU0(1−0)とPU1(1−1)とに接続される。同様にして、共有ローカルメモリ5−1は、PU1(1−1)とPU2(1−2)とに接続される。また、共有ローカルメモリ5−(n−1)は、PU(n−1)(1−(n−1))とPU0(1−0)とに接続され、図2に示すように、PU0(1−0)〜PU(n−1)(1−(n−1))および共有ローカルメモリ5−0〜5−(n−1)がリング状に接続される。
【0027】
このように、隣接する2つのプロセッサユニット間に、共有ローカルメモリを用いた通信経路を設ける。すなわち、1つのプロセッサユニットが有するローカルメモリに対して、隣接するプロセッサユニットからもアクセス可能なように専用のデータパスを設け、隣接するプロセッサユニット間でローカルメモリを共有する構成を有してる。
【0028】
図3は、本発明の第1の実施の形態におけるマルチプロセッサの概念的な構成例を示す図である。本実施の形態におけるマルチプロセッサは、共有ローカルメモリ5−0〜5−(n−1)を用いてポイントツーポイントのプロセッサ間接続を行なうものであり、プロセッサユニット間に共有ローカルメモリを配置し、共有ローカルメモリを介して隣接するプロセッサユニット間でのデータ転送を行なうものである。これは、図3に示すように、概念的にはすべての隣接プロセッサ間に共有ローカルメモリを配置したリングバス接続として動作する。共有ローカルメモリ5−0〜5−(n−1)を用いてプロセッサユニット間を接続しているため、データ転送方向に制約はなく、双方向のデータ転送を行なうことが可能である。
【0029】
共有ローカルメモリ5−0〜5−(n−1)には、プログラムコードおよびデータの両方を配置することができる。プロセッサユニットが、対応する共有ローカルメモリ上のプログラムコードを実行中は、共有バス4に対する命令フェッチを実行しない。また、プロセッサユニットは、データ処理に必要なオペランドデータが全て共有ローカルメモリにある場合には、共有バス4を介して共有メモリ3からオペランドデータを読み出す必要がない。
【0030】
このように、プロセッサユニットは、共有ローカルメモリをローカルな命令メモリおよびデータメモリとして使用することで、システムの共有バス4に接続された共有メモリ3にアクセスすることなくデータ処理が実行可能となる。
【0031】
また、プロセッサユニットは対称であり、起点・終点が決まっていないため、以前のデータ処理結果に基づいて、直ちに次のデータ処理を実行でき、データの中間結果を共有メモリに書き戻す必要はない。
【0032】
また、PU0〜PU(n−1)(1−0〜1−(n−1))が処理内容を分担して、対応する共有ローカルメモリ5−0〜5−(n−1)を用いて機能分散処理を行なうことにより、共有バス4のバスボトルネックを回避でき、高速でスケーラブルな並列処理を行なうことが可能となる。
【0033】
図4は、本発明の第1の実施の形態におけるマルチプロセッサを含んだ半導体装置の一例を示す図である。この半導体装置100は、PU0〜3(1−0〜1−3)と、共有ローカルメモリ(SLM:Shared Local Memory)0〜3(5−0〜5−3)と、SLM0〜3(5−0〜5−3)に対応して設けられる排他制御用同期機構6−0〜6−3と、内部バス制御部7と、2次キャッシュ8と、DDR3 I/F9と、DMAC(Direct Memory Access Controller)10と、内蔵SRAM11と、外部バス制御部12と、周辺回路13と、汎用入出力ポート14とを含む。なお、図4においては、4つのプロセッサユニット(PU)と、4つの共有ローカルメモリ(SLM)とが記載されているが、これらの個数は4つに限られるものではない。
【0034】
内部バス制御部7は、共有バス4を介してPU0〜3(1−0〜1−3)に接続されており、PU0〜3(1−0〜1−3)からのアクセス要求に応じて2次キャッシュ8に対するアクセスを行なう。
【0035】
2次キャッシュ8は、内部バス制御部7からアクセス要求があったときに、その命令コードまたはデータを保持している場合には、内部バス制御部7にそれを出力する。また、その命令コードまたはデータがない場合には、内部バス15に接続されるDMAC10、内蔵SRAM11、外部バス制御部12に接続される外部メモリ、周辺回路13などや、DDR3 I/F9に接続される外部メモリなどにアクセスする。
【0036】
DDR3 I/F9は、半導体装置100の外部にある図示しないSDRAM(Synchronous Dynamic Random Access Memory)などに接続され、そのアクセスを制御する。
【0037】
DMAC10は、PU0〜3(1−0〜1−3)からの要求に応じて、メモリ−メモリ間またはメモリ−I/O間のDMA転送を制御する。
【0038】
外部バス制御部12は、CSコントローラ、SDRAMコントローラ、PCカードコントローラなどによって構成され、半導体装置100の外部にあるSDRAMやメモリカードなどへのアクセスを制御する。
【0039】
周辺回路13は、ICU(Interrupt Control Unit)、CLKC(Clock Controller)、TIMER(タイマ)、UART(Universal Asynchronous Receiver-Transmitter)、CSIO(Clocked Serial Input Output)、GPIO(General Purpose Input Output)などを含む。
【0040】
汎用入出力ポート14は、半導体装置100の外部にある図示しない周辺デバイスなどに接続され、そのアクセスを制御する。
【0041】
また、PU0(1−0)は、命令キャッシュ21と、データキャッシュ22と、MMU(Memory Management Unit)23と、CPU24とを含む。なお、PU1〜3(1−1〜1−3)も同様の構成を有しているものとする。
【0042】
MMU23は、CPU24による命令コードのフェッチまたはデータアクセスがあるときに、命令キャッシュ21またはデータキャッシュ22にその命令コードまたはデータがあるか否かを調べ、ある場合には、命令キャッシュ21からの命令コードのフェッチ、データキャッシュ22からのデータ読み出し、またはデータキャッシュ22へのデータ書込みを行なう。
【0043】
また、命令コードまたはデータがない場合には、内部バス制御部7を介して2次キャッシュ8にアクセスする。また、CPU24がSLM0(5−0)またはSLM3(5−3)にアクセスする場合には、直接アクセスを行なう。
【0044】
SLM0〜3(5−0〜5−3)は、小規模SRAMなどの高速メモリによって構成される。PU0〜3(1−0〜1−3)が大規模なプログラムを実行する場合には、SLM0〜3(5−0〜5−3)にプログラムコードを置くのではなく、命令キャッシュ21を介して半導体装置100の外部にあるSDRAMなどのメインメモリからプログラムコードをフェッチすることで、プログラムサイズの制約をなくすことができる。
【0045】
図5は、共有ローカルメモリに1ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。SLMi(5−i)は、ローカル共有バスを介してPUi(1−i)およびPUj(1−j)に接続される。また、SLMj(5−j)は、ローカル共有バスを介してPUj(1−j)およびPUk(1−k)に接続される。
【0046】
SEMi(6−i)は、PUi(1−i)およびPUj(1−j)からSLMi(5−i)へのアクセスの排他制御を行なう同期機構(セマフォ)である。また、SEMj(6−j)も同様に、PUj(1−j)およびPUk(1−k)からSLMj(5−j)へのアクセスの排他制御を行なう同期機構である。
【0047】
1ポートメモリは、2ポートメモリに比べてメモリセル面積が小さく高集積なため、高速で比較的大容量の共有ローカルメモリを実現することができる。1ポートメモリを使用する場合は、共有ローカルメモリへのアクセス調停が必須である。
【0048】
図6は、共有ローカルメモリに2ポートメモリを用いた場合のマルチプロセッサの構成例を示す図である。SLMi(5−i)のそれぞれのポートは、PUi(1−i)およびPUj(1−j)に接続される。また、SLMj(5−j)のそれぞれのポートは、PUj(1−j)およびPUk(1−k)に接続される。
【0049】
SEMi(6−i)は、PUi(1−i)およびPUj(1−j)からSLMi(5−i)へのアクセスの排他制御を行なう同期機構(セマフォ)である。また、SEMj(6−j)も同様に、PUj(1−j)およびPUk(1−k)からSLMj(5−j)へのアクセスの排他制御を行なう同期機構である。
【0050】
2ポートメモリを用いた場合には、メモリセル面積が大きいため容量の大きな共有ローカルメモリを実現することは困難であるが、2つのポートから同時にデータを読み出すことができるため、読み出しアクセスに対する調停が不要である。2ポートメモリを用いる場合にも、データの一貫性を保証するために書き込み処理の排他制御が必要となる。
【0051】
図5および図6に示すように、各プロセッサユニットは、隣接するプロセッサユニットとの間でポイントツーポイント接続のためのポートを有しており、共有ローカルメモリはこれらのポートに接続されている。各プロセッサユニットのポートは、左隣のプロセッサユニットへのポートを「ポートA」、右隣のプロセッサユニットへのポートを「ポートB」と呼ぶことにする。
【0052】
後述のように、プロセッサユニットのこれらのポートに接続された共有ローカルメモリは、それぞれプロセッサユニットからオペランドアクセス可能な空間にメモリマップされており、ポート名で一意に決まるアドレス領域に配置される。
【0053】
ここで、プログラムの同期のための排他制御は、プロセッサの排他制御用命令を使用することによってソフトウェアで実現することもできるが、リソースに対する排他制御をハードウェアの同期機構を用いて実現することもできる。
【0054】
図5および図6に示すマルチプロセッサにおいては、このような同期機構としてハードウェアで実現したセマフォ・フラグを共有メモリに持たせている。ハードウェア・セマフォのフラグビットを、周辺IOの制御レジスタとしてメモリマップにマッピングしておくことで、プログラムからアクセスして、容易に排他制御を実現することが可能である。
【0055】
図7は、セマフォ・レジスタの一例を示す図である。図7においては、32個のSEMが設けられる場合を示しており、読み書き可能なSビットがセマフォ・フラグとしてマッピングされている。このSビットには書き込まれた値が保持されるが、プロセッサユニットが内容を読み出すと、読み出した後に自動的にクリアされる。
【0056】
セマフォ・レジスタのSビットは、“0”のときにアクセス禁止状態、“1”のときにアクセス許可状態であることを示している。セマフォ・レジスタによる排他制御を行なう場合、予めプログラムでアクセス許可状態である“1”に初期化しておく必要がある。
【0057】
共有リソースごとに、このようなセマフォ・レジスタを1つ使用することで、プログラムによって共有ローカルメモリの全体、または一部領域を対象とした排他制御アクセスを行なうことができる。
【0058】
図8は、図7に示すセマフォ・レジスタを用いた排他制御の一例を示すフローチャートである。まず、プロセッサユニットは、対応の共有ローカルメモリのセマフォ・レジスタの内容を読み出して(S11)、Sビットの値がアクセス許可状態を示す“1”であるか否かを判定する(S12)。Sビットの値が“1”でなければ(S12,No)、再度Sビットの読み出し動作を繰り返し、アクセス許可状態となるまで待機する。
【0059】
このとき、プロセッサユニットは、ポーリングによって単純にSビットの読み出しを行なうようにしてもよいが、再度の読み出しを行なう前に所定の時間だけ待機したり、待機している間に別タスクの処理を行なうようにしてもよい。
【0060】
Sビットの値がアクセス許可状態を示す“1”であれば(S12,Yes)、共有リソースに対するアクセス権を獲得して、共有ローカルメモリにアクセスする(S13)。プロセッサユニットは、共有ローカルメモリに対するアクセスが完了すると、アクセス権を解放して他のプロセッサユニットのアクセス許可を行なうために、セマフォ・レジスタのSビットに“1”を設定して、排他アクセス制御を終了する。
【0061】
図9は、半導体チップ上におけるプロセッサユニットおよび共有ローカルメモリの配置例を示す図である。図9(a)は、プロセッサユニットの2ポート接続の一例を示している。また、図9(b)は、プロセッサユニットの4ポート接続の一例を示している。図9(a)および図9(b)に示すように、プロセッサユニットと共有ローカルメモリとが隣接してレイアウトされる。これによって、プロセッサユニットと共有ローカルメモリとの間の配線を最短にすることができ、効率よくプロセッサユニット間のデータ転送経路を配置することができる。
【0062】
図10は、4個のプロセッサユニットの配置例を示す図である。4個のPU0〜3(1−0〜1−3)を対称に配置する場合には、図8(a)に示す2ポート接続のプロセッサユニットで実現することができる。プロセッサユニット間には、ポートと共有ローカルメモリとの接続を動的に切り替えるようにするために、スイッチ31−0〜31−3が接続されている。
【0063】
このスイッチ31−0〜31−3のイネーブル信号e0w、e1s、e2w、e3sを制御することによって、隣接するプロセッサユニット間のポイントツーポイント接続を動的にイネーブル/ディスエーブルすることが可能となっている。
【0064】
さらに多数のプロセッサユニットを2次元的に並べる場合には、図9(b)に示すような4ポート接続のプロセッサユニットと、図9(a)に示す2ポート接続のプロセッサユニットとを組み合わせることで、プロセッサユニットと共有ローカルメモリとを規則的に配置することができる。
【0065】
図11は、プロセッサユニットの構成変更の一例を示す図である。図11は、図9(b)に示す4ポート接続のプロセッサユニット16個をマトリクス状に配置したものであり、各プロセッサユニット間に配置されるスイッチを切り替えることによって、プロセッサユニット間の接続をダイナミックに切り替えることができ、プロセッサユニット構成を自由に変更することができる。
【0066】
図11(a)は、4個のプロセッサユニットを接続したドメインを4グループ有する構成((4コア×4)構成)を示しており、比較的処理負荷の軽いデータ処理を行なわせるのに適した構成となっている。
【0067】
また、図11(b)は、16個のプロセッサユニットを接続した構成(16コア構成)を示しており、より処理負荷の重いデータ処理に適した構成となっている。さらに、図11(c)は、4個のプロセッサユニットを接続した構成と、12個のプロセッサユニットを接続した構成とを有する構成((4コア+12コア)構成)を示している。このように、処理負荷に応じて、プロセッサユニットの接続を適宜変更できる構成を有している。
【0068】
また、システムの負荷が小さい場合には、一部のプロセッサユニットからなるドメインだけを残して、他のドメインのクロック停止、電源遮断を行なうことによってシステムの消費電力を大幅に削減することができる。
【0069】
後述のように、共有ローカルメモリをプロセッサユニットからアクセス可能なメモリ空間にマッピングすることにより、プロセッサユニットから自由に共有ローカルメモリにアクセスすることができる。また、ポイントツーポイント接続を切り替えるスイッチのイネーブル信号を制御するための制御レジスタをメモリマップしておくことで、プログラムで動的にプロセッサユニット間の接続を切り替えることが可能となる。
【0070】
プロセッサユニット間の接続を変更する方式として、1)特定または全てのプロセッサから全てのスイッチを切り替え可能とする方式と、2)各プロセッサユニットが自身の近傍のスイッチだけを切り替える方式とを挙げることができる。
【0071】
ここで、1)の方式は、どのプロセッサユニット間の接続についてもスイッチ切り替えが可能なように、全てのスイッチのイネーブル信号を制御する制御レジスタを、プロセッサユニットからアクセス可能な空間にマッピングして、1つのプロセッサユニットから一括して全プロセッサユニットの接続形態を変更するものである。この方式は、プロセッサユニットの数が多くなると半導体チップ内の配線が困難となるが、プログラムが簡単であり、スイッチ切り替えの時間を短くすることができる。
【0072】
また、2)の方式は、スイッチのイネーブル信号を制御する制御レジスタを各プロセッサユニットがローカルにアクセス可能な空間にのみマッピングし、各プロセッサユニットが自身の近傍のスイッチを切り替えてローカルにプロセッサユニット間の接続形態を変更するものである。この方式においては、各プロセッサユニットが接続形態を変更するためのプログラムを実行する必要があるため、プログラムが複雑になり接続形態の変更に時間を要するが、プロセッサ数が増えてもイネーブル信号の配線が容易なため、大規模なシステムを構築しやすいといった特徴がある。
【0073】
図12は、本発明の第1の実施に形態におけるマルチプロセッサの他のバス接続形態を示す図である。図2に示すマルチプロセッサの接続形態と比較して、SLM0〜SLM3(5−0〜5−3)が共有バス4にも接続されており、共有ローカルメモリに隣接するプロセッサユニット以外のプロセッサユニットからも、共有ローカルメモリにアクセスすることができる点が異なる。なお、図12においては、命令キャッシュおよびデータキャッシュをまとめてキャッシュメモリ(I$,D$)2−0〜2−3としている。
【0074】
図13は、図12に示すバス接続形態の各プロセッサユニットのアドレスマップの一例を示す図である。図13に示すように、各プロセッサユニットにおいて、プロセッサユニットの各ポートに対応した共有ローカルメモリを同一アドレス空間にマッピングしている。たとえば、PU0(1−0)のメモリマップにおいては、SLM A領域にSLM3(5−3)がマッピングされ、SLM B領域にSLM0(5−0)がマッピングされる。
【0075】
これによって、ユーザは、物理的な共有ローカルメモリの番号を意識することなく、接続されるポートだけに着目したプログラミングを行なうことが可能となる。
【0076】
また、図13に示す各プロセッサユニットのメモリマップにおいては、共有ローカルメモリのID番号に応じて、全ての共有ローカルメモリ(SLM0〜SLM3)が共有バス4側からアクセス可能なメモリ空間にマッピングされている。このようにすることによって、以下のようなメリットがある。
【0077】
まず、プロセッサユニットが、隣接していない共有ローカルメモリに対して実行プログラムを書き込み、データ処理の初期設定を容易に行なうことができる。たとえば、PU0(1−0)をマスタ・プロセッサとして使用する場合には、PU0(1−0)がプログラムを実行することによって他のプロセッサユニットに接続された共有ローカルメモリに対して命令コードを書き込むことで、容易にデータ処理を開始できるようになる。
【0078】
また、DMAC10が、共有バス4を介して各共有ローカルメモリに対するDMA転送を行なうことが可能となる。たとえば、PU0(1−0)がマスタ・プロセッサの場合には、PU0(1−0)がソフトウェアによって各共有ローカルメモリに対するDMA転送を制御することができる。また、図5および図6に示す排他制御用同期機構(セマフォ)をDMA転送のイネーブル制御に用いることによって、DMA転送をハードウェア制御で行なうことも可能である。
【0079】
また、マスタ・プロセッサが共有ローカルメモリの内容をモニタすることで、実行途中のデータ処理内容を観測することができ、プログラムのデバッグを容易に行なうことが可能となる。
【0080】
また、共有バス4側からも共有ローカルメモリにアクセスできるようにしておくことで、半導体装置をボードに実装した後など、スキャンパス回路でテストが行なえない状況においても、プログラムでメモリテストを行なうことができる。
【0081】
ただし、隣接しているプロセッサユニット以外のプロセッサユニットから共有メモリにアクセス可能とすることによって、実行時のプログラムの安全性を低下させ、セキュリティ上の問題を引き起こすことがないよう、共有バス4側からの共有メモリへのアクセスは、プロセッサユニットがスーパーバイザモードになっているときのみ許可するようにしておくことが望ましい。
【0082】
図14は、本発明の第1の実施の形態におけるマルチプロセッサを画像処理システムに応用した場合の構成例を示す図である。この画像処理システムは、PU0〜PU3(1−0〜1−3)と、キャッシュメモリ2−0と、共有メモリ3と、SLM0〜SLM3(5−0〜5−3)と、DMAC10と、画像処理IP33と、表示コントローラ34とを含む。なお、図2〜図6に示すマルチプロセッサの構成部分と同じ構成および機能を有する部分については、同じ参照番号を付すものとする。
【0083】
PU1〜PU3(1−1〜1−3)およびSLM0〜SLM3(5−0〜5−3)がリング状に接続される。また、SLM0(5−0)およびSLM3(5−3)は、共有バス4にも接続される。
【0084】
メインプロセッサPU0(1−0)がシステム制御用のマスタ・プロセッサであり、PU1〜PU3(5−1〜5−3)が画像処理用プロセッサとして使用される。共有メモリ3に置かれた画像データがDMA転送によってSLM0(5−0)に格納され、PU1〜3(1−1〜1−3)がその画像データを順に処理する。処理データは、SLM1(5−1)およびSLM2(5−2)を介してプロセッサユニット間で転送された後、SLM3(5−3)からDMA転送によって共有メモリ3、画像処理IP33などに転送される。
【0085】
画像処理IP33は、DMA転送などによって共有メモリ3またはSLM3(5−3)から画像データを受け、画像縮小、ブロックノイズ除去、フレーム補間処理などの画像処理を行なう。そして、画像処理後のデータをDMA転送などによって共有メモリ3または表示コントローラ34に転送する。
【0086】
PU1〜PU3(1−1〜1−3)によるソフトウェア画像処理と、画像処理IP33によるハードウェア画像処理とを組み合わせることによって、非常にフレキシブルで高速な画像データ処理を実現することができる。
【0087】
表示コントローラ34は、共有メモリ3または画像処理IP33からDMA転送によって表示用の画像データを受け、LCD(Liquid Crystal Display)などの表示装置に画像データを表示する。
【0088】
以上説明したように、本実施の形態におけるマルチプロセッサによれば、それぞれの共有ローカルメモリを、隣接する2つのプロセッサユニットのみで共有し、ポイントツーポイント接続でデータ転送を行なうようにしたので、送信側のプロセッサユニットと受信側のプロセッサユニットとの間で、データ転送のための細かいタイミングの同期を取る必要がなくなり、データの共有やデータ転送のバッファリングを容易に行なうことが可能となった。
【0089】
また、それぞれの共有ローカルメモリが2つのプロセッサユニットのみで共有されるため、バスアクセスがボトルネックになることはない。そのため、AMP構成において、機能分散を行なうことにより、プロセッサユニット数に比例してスケーラブルに性能向上を図ることが可能となった。
【0090】
また、共有ローカルメモリによる接続経路をダイナミックに切り替えるようにしたので、データ処理に利用可能なプロセッサユニットの個数を動的に設定でき、必要十分な処理性能を得るようなマルチプロセッサ構成を構築することが可能となった。また、システムの負荷状況に応じて、未使用状態のプロセッサユニット群のクロック停止、電源遮断などを行なうようにしたので、消費電力を削減することが可能となった。
【0091】
また、共有ローカルメモリを介したポイントツーポイント接続を用いているので、隣接するプロセッサユニット間でデータを共有しながら高速にデータ処理を行なうことができる。すなわち、転送データを共有メモリにバッファリングすることで、受信側のプロセッサユニットが高負荷状態の場合でも、隣接するプロセッサユニット間でデータを共有しながら高速にデータ処理を行なうことが可能となる。
【0092】
さらには、共有ローカルメモリが2つのプロセッサユニット間でのみ共有される場合には、隣接しない他のプロセッサユニットから共有ローカルメモリにアクセスすることができないため、誤動作や不正アクセスによるデータの破壊を防止することができ、システム全体としてのプログラムの安全性やセキュリティ性を高めることが可能となった。
【0093】
(第2の実施の形態)
第1の実施の形態においては、共有メモリ型マルチプロセッサに共有ローカルメモリを搭載した場合について説明した。本発明の第2の実施の形態においては、共有メモリを搭載せずに、共有ローカルメモリのみを搭載した分散メモリ型のマルチプロセッサに関するものである。
【0094】
図15は、本発明の第2の実施の形態におけるマルチプロセッサの構成例を示すブロック図である。このマルチプロセッサは、PUi〜PUk(1−i〜1−k)と、SLMiおよびSLMj(5−i,5−j)と、キャッシュメモリ21−iおよび21−jとを含む。なお、SLMiおよびSLMj(5−i,5−j)は、1ポートメモリによって構成される。
【0095】
本実施の形態においては、共有メモリを搭載していないため、SLMiおよびSLMj(5−i,5−j)として比較的大きなメモリ容量が必要になる。一般的に、大容量のメモリシステムは低速であるため、実行速度を向上させるためにキャッシュメモリ21−iおよび21−jを設けている。
【0096】
キャッシュメモリ21−iおよび21−jは、共有ローカルバスへのアクセス調停後にアクセスされるため、ライトバックおよびライトスルーのどちらのプロトコルを用いることも可能である。
【0097】
図16は、本発明の第2の実施の形態におけるマルチプロセッサの他の構成例を示すブロック図である。このマルチプロセッサは、PUi〜PUk(1−i〜1−k)と、SLMiおよびSLMj(5−i,5−j)と、キャッシュメモリ41〜46とを含む。なお、SLMiおよびSLMj(5−i,5−j)は、2ポートメモリによって構成される。
【0098】
共有ローカルメモリ5−iおよび5−jが2ポートメモリで構成されるため、キャッシュメモリ41〜46がプロセッサユニット側に設けられる。この場合、キャッシュコヒーレンシを保つために、これらのキャッシュメモリ41〜46にMESIなどのキャッシュ・コヒーレンシ・プロトコルを採用することが可能である。しかしながら、AMP型の機能分散処理においては、小さい粒度でのデータ共有や排他制御が可能であることから、ライトスルー型のキャッシュメモリを採用することで、回路規模や複雑さを抑えつつ、実行時のパフォーマンスを改善することが可能となる。
【0099】
以上説明したように、本実施の形態におけるマルチプロセッサによれば、共有メモリを搭載せずに、共有ローカルメモリのみを搭載するようにしたので、第1の実施の形態において説明した効果に加えて、さらにバスアクセスを分散させることが可能となった。
【0100】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0101】
1−0〜1−(n−1) PU、2−0〜2−(n−1) キャッシュメモリ、3 共有メモリ、4 共有バス、5−0〜5−(n−1) 共有ローカルメモリ、6−0〜6−3 SEM、7 内部バス制御部、8 2次キャッシュ、9 DDR3 I/F、10 DMAC、11 内蔵SRAM、12 外部バス制御部、13 周辺回路、14 汎用入出力ポート、15 内部バス、21 命令キャッシュ、22 データキャッシュ、23 MMU、24 CPU、31−0〜31−3 スイッチ、33 画像処理IP、34 表示コントローラ、41〜46 キャッシュメモリ、100 半導体装置。

【特許請求の範囲】
【請求項1】
複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられる複数のキャッシュメモリと、
共有バスを介して前記複数のキャッシュメモリに接続され、前記複数のプロセッサからアクセスされる共有メモリを接続するためのインタフェース手段と、
複数の共有ローカルメモリとを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のプロセッサの中の2つのプロセッサに接続される、マルチプロセッサ。
【請求項2】
前記マルチプロセッサはさらに、前記複数の共有ローカルメモリのそれぞれに対応して設けられ、接続される2つのプロセッサからの書き込みおよび読み出しを制御する複数の制御手段を含む、請求項1記載のマルチプロセッサ。
【請求項3】
前記複数の共有ローカルメモリのそれぞれは、書き込みおよび読み出しを許可する情報を格納するレジスタを記憶する領域を有し、
前記複数の共有ローカルメモリのそれぞれに接続される2つのプロセッサは、前記レジスタを参照して対応する共有ローカルメモリへの書き込みおよび読み出しを行なう、請求項2記載のマルチプロセッサ。
【請求項4】
前記複数のプロセッサは、マトリクス上に配置され、
前記複数の共有ローカルメモリは、前記複数のプロセッサの間に配置されており、
前記マルチプロセッサはさらに、前記複数のプロセッサと前記複数の共有ローカルメモリとの間の接続を切り替える複数の切替手段を含み、
前記複数の共有ローカルメモリは、前記切替手段を切り替えるための情報を記憶する領域を有する、請求項1〜3のいずれかに記載のマルチプロセッサ。
【請求項5】
前記複数のプロセッサのそれぞれは、接続される共有ローカルメモリに対応する切替手段を切り替えるための情報を格納する、請求項4記載のマルチプロセッサ。
【請求項6】
前記複数のプロセッサの少なくとも1つは、接続される共有ローカルメモリに、前記複数の切替手段の全てを切り替えるための情報を格納する、請求項4記載のマルチプロセッサ。
【請求項7】
複数のプロセッサと、
複数の共有ローカルメモリと、
前記複数の共有ローカルメモリに対応して設けられ、前記複数のプロセッサの中の2つのプロセッサに接続される複数のキャッシュメモリとを含み、
前記複数のプロセッサと前記複数のキャッシュメモリとがリング状に接続される、マルチプロセッサ。
【請求項8】
複数のプロセッサと、
複数の共有ローカルメモリと、
前記複数のプロセッサの各ポートに対応して設けられ、前記複数の共有ローカルメモリのポートに接続される複数のキャッシュメモリとを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のキャッシュメモリの中の2つのキャッシュメモリに接続される、マルチプロセッサ。
【請求項9】
複数のプロセッサと、
前記複数のプロセッサのそれぞれに対応して設けられる複数のキャッシュメモリと、
共有バスを介して前記複数のキャッシュメモリに接続され、前記複数のプロセッサからアクセスされる共有メモリを接続するためのインタフェース手段と、
複数の共有ローカルメモリと、
前記複数のプロセッサによって処理された画像データに対して画像処理を行なう画像処理手段と、
前記画像処理手段によって処理された後の画像データを表示する表示手段とを含み、
前記複数の共有ローカルメモリのそれぞれが、前記複数のプロセッサの中の2つのプロセッサに接続されており、前記複数のプロセッサと前記複数の共有ローカルメモリとがリング状に接続される、画像処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−252490(P2012−252490A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−124243(P2011−124243)
【出願日】平成23年6月2日(2011.6.2)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】