(57)【要約】【課題】プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上させる。【解決手段】プロセッサエレメント１３は、各プロセッサコア２−Ａ，２−Ｂ，２−Ｃからキャッシュ禁止に設定され、プロセッサコアおよび入出力インタフェース回路１１から直接アクセス可能に設定され、入出力インタフェース回路１１からメインメモリ１７を介さずに直接転送された入力データおよびプロセッサエレメントの演算結果である出力データを格納するローカルメモリ１４と、ローカルメモリ１４とメインメモリ１７との間でＤＭＡ転送するＤＭＡＣ１５とを備え、プロセッサエレメントは出力データをメインメモリ１７へＤＭＡ転送後に転送完了の割り込みをプロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行する。【選択図】図１
2010272066.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリおよびコヒーレンシ管理回路を夫々備える複数のプロセッサコアを有し、前記各プロセッサコアからキャッシュ可能に設定されたメインメモリおよび外部機器との接続を行う入出力インタフェース回路に接続されるマルチコアプロセッサと、前記プロセンサコアからの命令により動作し、プロセッサコアを補助する演算を実行するプロセッサエレメントとを備えるヘテロジニアスマルチコアプロセッサにおいて、
前記プロセッサエレメントは、
前記各プロセッサコアからキャッシュ禁止に設定されるとともに、前記プロセッサコアおよび前記入出力インタフェース回路から直接アクセス可能に設定され、前記入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよび前記プロセッサエレメントの演算結果である出力データを格納するローカルメモリと、
前記ローカルメモリと前記メインメモリとの間でＤＭＡ転送するＤＭＡコントローラと、
を備え、
前記プロセッサエレメントは前記出力データをメインメモリへＤＭＡ転送後に転送完了の割り込みを前記プロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行することを特徴とするヘテロジニアスマルチコアプロセッサ。
【請求項２】
前記プロセッサエレメントが複数個備えられ、それぞれが個別の演算を並列に実行可能であることを特徴とする請求項１に記載のヘテロジニアスマルチコアプロセッサ。
【請求項３】
前記プロセッサエレメントとマルチコアプロセッサとが同一のＬＳＩで構成されることを特徴とする請求項１に記載のヘテロジニアスマルチコアプロセッサ。
【請求項４】
前記複数のプロセッサエレメントとマルチコアプロセッサとが同一のＬＳＩで構成されることを特徴とする請求項２に記載のヘテロジニアスマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つのＬＳＩパッケージ内（以下ＬＳＩとも呼称）に複数の中央処理演算装置（以下プロセッサコアと呼称）や周辺回路を組み込んだマルチコアプロセッサと、マルチコアプロセッサの演算性能を補う演算回路を具備するプロセッサエレメントとを備えるヘテロジニアス（異種混合）マルチコアプロセッサに関する。
【背景技術】
【０００２】
プロセッサコアの性能は、様々な技術により飛躍的に向上してきている。その手法の１つとして、特許文献１に示すように、１つのＬＳＩパッケージ内に複数のプロセッサコアを実装し、それぞれが連携して並列に演算処理を行うことで、演算時間の短縮を図ることが可能なマルチコアプロセッサがある。マルチコアプロセッサは、それぞれのプロセッサコアで処理できる命令は同時には１命令が原則である。ある種のプロセッサコアでは、さらに演算性能を向上させるため、１命令で同時に複数のデータに対して同じ演算を実行する演算回路（ＳＩＭＤ演算：Single  Instruction  Mutliple  Data）を組み込んだものもあるが、その演算ビット数はプロセッサコアが扱うことのできる語長程度の３２〜１２８ビット程度であり、それを高々２〜１６個程度の個別のデータに区切って処理するものである。ＳＩＭＤ演算が可能なマルチコアプロセッサとしては、例えばVMX（登録商標、IBM社）、Altivec（登録商標、Freescale社）、MMXおよびSSE（登録商標、Intel社）、3DNow!（登録商標、AMD社）などがある。しかし、マルチコアプロセッサは、物理的な制約から１つのＬＳＩに実装できるプロセッサコア数には限界がある。また、複数のプロセッサコアを同時に効率的に動作させる並列プログラミングには高度な技術が必要であり、その開発には多大な労力が要求されるため、プロセッサコアが沢山あっても、それぞれの性能を活かすことが難しい。
【０００３】
このように、マルチコアプロセッサにおいては、命令列の並列実行に主眼を置いたタイプと、ＳＩＭＤ演算のようにデータ列の並列処理に主眼を置いたタイプとがある。ただし、プロセッサコア内では、他の演算回路との実装上のバランスのため、一度に扱えるデータ幅に制約があり、極端な並列数でデータ並列処理を行うことができず、また、単純な演算であっても、その実行回数が膨大なため、処理に時間がかかっていた。
【０００４】
そこで、プロセッサコア上でソフトウェアによる演算では時間がかかる部分を、プロセッサコアとは別のハードウェアとして実装することにより、処理性能を飛躍的に向上させる方法がある。このようなハードウェア（以後、プロセッサエレメントと呼称）は、プロセッサコアからの命令により動作し、ハードウェア実装による演算は十分な高速性を有する。さらにプロセッサエレメントに汎用性を付加するため、プロセッサエレメントをプログラム可能な構成とし、１命令で百から千個もの膨大な数の演算器を動作させることができるようにしたものもある。例えばTesra（登録商標、nVIDIA社）やRadeon(登録商標、AMD社)などに組み込まれている汎用グラフィック演算プロセッサ（GPGPU：General Purpose Graphic Processing Unit）などである。しかし、これらは単純な演算に限定されるため、複雑な条件分岐を伴うアルゴリズムを実装するのは困難である。
【０００５】
マルチコアプロセッサによる命令列の並列実行性能と、プロセッサエレメントによるデータ列の並列処理性能のそれぞれの長所を融合するために、マルチコアプロセッサが実装されるＬＳＩとプロセッサエレメントが実装されるＬＳＩとを高速な外部インタフェースで接続するか、あるいは同一ＬＳＩ内にマルチコアプロセッサおよびプロセッサエレメントを実装することが多く、このような異種混合構成はヘテロジニアスマルチコアプロセッサと呼称されている。ヘテロジニアスマルチコアプロセッサでは、大量のデータを効率よく演算するためには、プロセッサエレメントとマルチコアプロセッサとの連携が重要になる。
【０００６】
マルチコアプロセッサにおいては、アクセスする頻度の高いデータを一時保存するためのキャッシュメモリを各プロセッサコアが個別に備えるのが一般的である。この場合、マルチコアプロセッサシステムとして、各キャッシュメモリの内容とメインメモリの内容に齟齬が発生ないように一貫性を保持するコヒーレンシ管理が重要となる。例えば、データ処理内容ごとにプロセッサコアが固定され、処理済みのデータがプロセッサ間を順番に転送されるような処理アルゴリズムの場合、前段のプロセッサコアの処理内容を、別の後段のプロセッサコアが参照する必要がある。処理済のデータは概ね、前段のプロセッサコアのキャッシュメモリに格納されているが、後段のプロセッサコアはメインメモリしか参照できない。このため、後段のプロセッサがメインメモリからデータをリードしようとすると、一旦、前段のプロセッサコアのキャッシュの内容（つまり、処理済のデータ）をメインメモリに書き戻すなどの操作が必要になる。これらは、コヒーレンシ管理回路によって自動的に実行されるのが一般的であり、プログラムからはその様子を知る必要はないが、若干の処理時間がかかる。
【０００７】
プロセッサエレメントが扱うデータ量が比較的少ない量であれば、プロセッサコアが必要とするデータを転送指示することで、プロセッサコアのコヒーレンシ管理回路を経由したデータ授受が可能であり、複数のプロセッサコア間でのコヒーレンシ維持に対するプログラム上の注意は不要である。プロセッサコアからのデータ転送は、１回あたりのアクセスでは高々プロセッサコアの語長（たとえば４バイト）からキャッシュメモリの管理単位（たとえば３２バイト）程度にすぎない。これらを踏まえて、従来、プロセッサエレメントには、４バイト幅程度のレジスタを入出力用に複数個備えあるか、あるいは数十〜数キロバイト程度の小容量のバッファメモリを備え、他に制御用レジスタ等が備えられる。プロセッサエレメント内部あるいはプロセッサコアからは直接は参照できない専用のメモリデバイスと接続することで、大量のデータ処理を行っている。このため、ヘテロジニアスマルチコアプロセッサが画像処理に適用される場合は、もっぱら、プロセッサエレメント内部に３次元モデル情報やテクスチャ情報を持たせ、プロセッサコアから指定された視点や視野範囲等の指示の元に大量の演算を行って３次元コンピュータグラフィックスを生成し、その結果はプロセッサコアが把握する必要のない外部表示装置のための専用信号線に出力されるなどの利用が一般的である。
【０００８】
マルチコアプロセッサと、プロセッサエレメントとの間の接続に関しては、それぞれが別のＬＳＩに実装されている場合には高性能な外部インタフェースが用いられる。プロセッサエレメントからの処理完了あるいは異常状態の検出等、プロセッサコアに何らかの状態変化を通知するためには割り込み信号を使用する。ただし、外部インタフェースが例えばPCI Express（登録商標、Peripheral Component Interchange Special Interest Group。略してPCISIG）やSerial RapidIO（登録商標、RapidIOTrade Association）のような高速シリアルインタフェースの場合には、これらの規格で規定されたプロトコルで割り込みに相当するメッセージを通信し、割り込み信号に代えた実装もある。
【０００９】
マルチコアプロセッサの中のいずれかのプロセッサコアが、この割り込み信号を受けてプロセッサエレメントの状態変化を識別し、例えば演算完了の通知であれば処理結果を自身が管理するメインメモリ内に転送し、後段の演算処理を行う。ただし、このプロセッサコア上で動作するソフトウェアの指示とは異なり、メインメモリに展開指示したデータは、実際にはコヒーレンシ管理回路により当該プロセッサコア内のキャッシュメモリに転送される。こうすることで、次回以降の演算処理に際して、アクセス時間がかかるメインメモリへ読み書きを廃し、高速に演算を行うことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２００４−５０８６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ヘテロジニアスマルチコアプロセッサにおいて、本来の演算処理にかかる時間と、プロセッサコアとプロセッサエレメント間のデータ転送にかかる時間のほかに、コヒーレンシを維持するために各プロセッサコア内のキャッシュメモリと、メインメモリあるいはプロセッサエレメントとの間でのデータ転送時間が必要である。マルチコアプロセッサとプロセッサエレメント間で大量のデータを連携しながら演算する場合、演算処理を行う真の処理時間に比べ、これらコヒーレンシ維持に必要な時間が無視できない長さとなり、結果的に演算時間を効率的に短縮するのが難しい。通常、このような事態を避けるため、プロセッサコアで処理する内容と、プロセッサエレメントで処理する内容を、例えば全く異なるアプリケーションソフトウェアを実行させたり、異なるタスクあるいはプロセス等に割り付け、ソフトウェア上はそれぞれを分離する場合が多い。これにより、コヒーレンシ維持のための頻繁なデータ転送を行わないように意図した設計がされている。
【００１２】
本来、ヘテロジニアスマルチコアプロセッサは、マルチコアプロセッサのみやプロセッサエレメントのみでは達成できない複雑なアルゴリズムに対して、演算時間を効果的に削減する目的でアーキテクチャの異なるプロセッサコアを接続している。それにも関わらず、本来の目的を達成するためには、煩雑なデータ管理が必要となり、プログラミングが容易ではないという課題がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上を可能とするヘテロジニアスマルチコアプロセッサを得ることを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリおよびコヒーレンシ管理回路を夫々備える複数のプロセッサコアを有し、前記各プロセッサコアからキャッシュ可能に設定されたメインメモリおよび外部機器との接続を行う入出力インタフェース回路に接続されるマルチコアプロセッサと、前記プロセンサコアからの命令により動作し、プロセッサコアを補助する演算を実行するプロセッサエレメントとを備えるヘテロジニアスマルチコアプロセッサにおいて、前記プロセッサエレメントは、前記各プロセッサコアからキャッシュ禁止に設定されるとともに、前記プロセッサコアおよび前記入出力インタフェース回路から直接アクセス可能に設定され、前記入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよび前記プロセッサエレメントの演算結果である出力データを格納するローカルメモリと、前記ローカルメモリと前記メインメモリとの間でＤＭＡ転送するＤＭＡコントローラとを備え、前記プロセッサエレメントは前記出力データをメインメモリへＤＭＡ転送後に転送完了の割り込みを前記プロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行することを特徴とする。
【発明の効果】
【００１５】
この発明によれば、プロセッサエレメントは、各プロセッサコアからキャッシュ禁止に設定され、プロセッサコアおよび入出力インタフェース回路から直接アクセス可能に設定され、入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよびプロセッサエレメントの演算結果である出力データを格納するローカルメモリと、ローカルメモリとメインメモリとの間でＤＭＡ転送するＤＭＡＣとを備え、プロセッサエレメントは出力データをメインメモリへＤＭＡ転送後に転送完了の割り込みをプロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行するようにしたので、プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上させることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施の形態１にかかるヘテロジニアスマルチコアプロセッサの一構成例を示すブロック図である。
【図２】図２は、実施の形態１にかかるプロセッサコアからアクセス可能なメモリ空間の一例を示す図である。
【図３】図３は、実施の形態２にかかるヘテロジニアスマルチコアプロセッサの一構成例を示すブロック図である。
【図４】図４は、実施の形態３にかかるヘテロジニアスマルチコアプロセッサの一構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下に、本発明にかかるヘテロジニアスマルチコアプロセッサの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【００１８】
実施の形態１．
図１は、実施の形態１にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。図１において、ヘテロジニアスマルチコアプロセッサ１００は、マルチコアプロセッサ１、およびプロセッサエレメント１３を備え、外部機器（図示せず）との接続を行う入出力インタフェース回路１１、およびメインメモリ１７と接続される。
【００１９】
マルチコアプロセッサ１は、１つのＬＳＩで構成されており、複数のプロセッサコア２−Ａ、２−Ｂ，２−Ｃを備えている。。各プロセッサコア２−Ａ、２−Ｂ，２−Ｃは、内部の構造が同一であっても、あるいは異なる構造であってもよいが、それぞれにキャッシュメモリ３と、複数のキャッシュメモリ３と、メインメモリ１７のそれぞれが保持する情報の一貫性を維持するためのコヒーレンシ管理回路４を備えている。プロセッサコア２−Ａ、２−Ｂ，２−Ｃは、図１では説明の便宜上３つ示しているが、一般的に２つ以上の構成であれば幾つでも良い。
【００２０】
プロセッサコア２−Ａ、２−Ｂ，２−Ｃは、内部バスまたはクロスバースイッチ８（以下単に内部バス８と呼称する。）にて接続されており、メインメモリ１７へのアクセスや外部機器との接続も内部バス８を経由してアクセスする。プロセッサコア２−Ａ、２−Ｂ，２−Ｃのそれぞれに割り込みを通知するため、各別の割り込み線７によって、プロセッサコア２−Ａ、２−Ｂ，２−Ｃと、割り込み制御回路と６が接続されている。割り込み制御回路６は、マルチコアプロセッサ１に搭載されるダイレクトメモリアクセスコントローラ１９（以下、プロセッサＤＭＡＣと呼称）１９と、図示せぬマルチコアプロセッサ１内部の周辺回路、あるいはプロセッサコア２−Ａ、２−Ｂ，２−Ｃ同士の割り込み、マルチコアプロセッサ１に接続された外部機器からの割り込みを受けるための外部割り込み線５からの割り込みを取りまとめ、プログラムで指定されたあるいは別のアルゴリズムに従って適切な通知先プロセッサコアを決定し、この決定内容に従って割り込み線７を駆動する。
【００２１】
プロセッサコア２−Ａ、２−Ｂ，２−Ｃが主として利用するメインメモリ１７は、通常、マルチコアプロセッサ１とは異なるＬＳＩに実装される。このため、マルチコアプロセッサ１は、メモリバス１６を経由して接続できるよう、メモリインタフェース回路９を具備する。マルチコアプロセッサの場合、メインメモリ１７が保持する情報の一貫性を維持する必要から、このメモリインタフェース回路９に対してもコヒーレンシ管理回路４を備える。
【００２２】
マルチコアプロセッサ１は高速なデータ授受が可能な外部インタフェース１０を備える。外部インタフェース１０を介して入出力インタフェース回路１１、プロセッサエレメント１３が接続されている。外部インタフェース１０としては、PCI Express（登録商標、Peripheral Component Interchange Special Interest Group。略してPCISIG）あるいはSerial RapidIO（登録商標、RapidIOTrade Association）のなどの高速シリアルインタフェースであっても良いし、PCIbus（登録商標、PCISIG）などの高性能なパラレルバスインタフェースであっても良い。
【００２３】
プロセッサエレメント１３は、複数の演算器を備え、１回の命令実行要請に対して、異なる大量のデータに対して同一の演算を同時に複数実行し、演算時間を短縮できる演算機構を備える。プロセッサエレメント１３は、マルチコアプロセッサ１と外部インタフェース１０で接続される。プロセッサエレメント１３での演算の開始や異常値などの処理は、マルチコアプロセッサ１からの命令により動作制御されるが、一連の演算手順や、演算内容の定義はマルチコアプロセッサ１から演算前に設定することができ、プロセッサコア２−Ａ、２−Ｂ，２−Ｃよりは単純であるが、プログラム動作が可能である。プロセッサエレメント１３での演算処理の終了や異常発生などの状態変化に対して、プロセッサエレメント１３は、マルチコアプロセッサ１に対して割り込みを通知する。この割り込みは外部インタフェース１０とは別の外部割り込み線５を利用した通知であってもよいし、外部インタフェース１０が備えるメッセージによる割り込み通知機能を用いても良い。
【００２４】
プロセッサエレメント１３は大量（例えば数メガバイトから数十メガバイト程度）のデータを処理するためにローカルメモリ１４を備える。ただし、このローカルメモリ１４は、プロセッサエレメント１３、各プロセッサコア２−Ａ、２−Ｂ，２−Ｃおよび入出力インタフェース回路１１から直接アクセスが可能である。ただし、ローカルメモリ１４は、マルチコアプロセッサ１からはキャッシュ禁止領域に配置されており、これによりマルチコアプロセッサ１で必要とされたコヒーレンシ管理回路４は、プロセッサエレメント１３では不要である。
【００２５】
また、ローカルメモリ１４は外部機器とのインタフェースを行う入出力インタフェース回路１１からも直接アクセスすることが可能である。入出力インタフェース回路１１にはダイレクトメモリアクセスコントローラ１２（以下  入出力ＤＭＡＣ）が備えられ、これにより、大量のデータを短時間に処理しなければならないリアルタイム処理の要求があっても、例えば一旦メインメモリ１７へデータ転送をするなどの操作をせずに大量のデータを短時間に直接ローカルメモリ１４に転送できる。プロセッサエレメント１３にも、ダイレクトメモリアクセスコントローラ１５（以下  ＰＥＤＭＡＣ）が備えられ、予めマルチコアプロセッサ１にて指定されたアドレスに対して、演算開始前や演算開始後にメインメモリ１７とローカルメモリ１４間でデータを転送することができる。これにより、例えばプロセッサエレメント１３の演算が完了し、データをメインメモリ１７に転送し終った後に割り込みを通知することが可能となる。プロセッサコア２−Ａ、２−Ｂ，２−Ｃが割り込みを受信した段階で、当該プロセッサコアのキャッシュメモリ３を経由して当該プロセッサコアが演算処理を引き継ぐことが可能である。
【００２６】
つぎに、他の接続機器から入力される大量のデータを本実施の形態のヘテロジニアスマルチコアプロセッサを用いて短時間に処理するデータの流れについて説明する。図２は、ソフトウェア動作の観点からアクセスすべき（主にローカルメモリ１４の）メモリ空間の一例を示すものである。１０１は入出力ＤＭＡＣ１２によってローカルメモリ１４に転送されるデータの転送先アドレス領域、１０２はローカルメモリ１４上の出力結果データが格納される領域であって、ＰＥＤＭＡＣ１５がメインメモリ１７に転送する転送元アドレスを示す領域、１０３はローカルメモリ１４上の入力データの先頭アドレスを設定するレジスタ領域、１０４はローカルメモリ１４上の入力データの最終アドレスを設定するレジスタ領域、１０５はローカルメモリ１４上の出力結果データを格納する先頭アドレスを設定するレジスタ領域、１０６はプロセッサエレメント１３の演算方法を指定するレジスタ領域、１０７はメインメモリ１７へＤＭＡ転送する転送先アドレスを指定するレジスタ領域、１０８はＰＥＤＭＡＣ１５によってＤＭＡ転送されたメインメモリ１７上の転送先アドレス領域である。
【００２７】
まず、プロセッサコア２−Ａ、２−Ｂ、２−Ｃのうちのいずれか、例えばプロセッサコア２−Ａが処理開始前にプロセッサエレメント１３や周辺回路の初期化を行う。このとき、プロセッサコア２−Ａは、入出力インタフェース回路１１を経由して入力されるデータ来着にあわせて入出力ＤＭＡＣ１２が入力データをローカルメモリ１４上のアドレス領域１０１へ転送できるように入出力ＤＭＡＣ１２に予め指示をしておく。また、メインメモリ１７に対しては、すべてのプロセッサコア２−Ａ、２−Ｂ、２−Ｃがキャッシュ可能な設定とするが、ローカルメモリ１４についてはすべてのプロセッサコア２−Ａ、２−Ｂ、２−Ｃがキャッシュ禁止とする。プロセッサエレメント１３には予め処理すべき手順をレジスタ領域１０６などで指定してあり、処理結果は、メインメモリ１７に転送するようにレジスタ領域１０７にその転送先アドレスを指示しておく。また、演算の対象となる入力データの先頭アドレスをレジスタ領域１０３に、その最終アドレスをレジスタ領域１０４に、演算結果の格納先アドレスをレジスタ領域１０５に設定する。
【００２８】
実際に処理が開始されると、他の機器から入力されてきたデータは入出力インタフェース回路１１にて受信され、入出力ＤＭＡＣ１２によりローカルメモリ１４上のアドレス領域１０１に転送される。このデータ入着情報は、プロセッサコア２−Ａ、２−Ｂ、２−Ｃのうち、例えばプロセッサコア２−Ｂに割り込みにて通知され、プロセッサコア２−Ｂがデータ入着を知る。この際、プロセッサコア２−Ｂは必要に応じてプロセッサエレメント１３の設定を行ってもよく、引き続きプロセッサエレメント１３に演算を開始させる。プロセッサエレメント１３は、レジスタ領域１０３〜１０５を参照することで、ローカルメモリ１４のアドレス領域１０１に対して演算を行い、その結果をアドレス領域１０２に格納する。すなわち、プロセッサエレメント１３は、レジスタ領域１０６で指定された演算方法で、レジスタ領域１０３で指定されたローカルメモリ１４のアドレス領域１０１からレジスタ領域１０４で指定されたローカルメモリ１４のアドレス領域１０１までのデータを順次読み出し、演算結果をレジスタ領域１０５で指定されたローカルメモリ１４のアドレス領域１０２に順次書き込む。
【００２９】
ここで、演算アルゴリズムによっては、プロセッサコア２−Ａ、２−Ｂ、２−Ｃによる後処理が不要な場合もある。その場合は、以後のプロセッサコア２−Ａ、２−Ｂ、２−Ｃとの連携は割愛し、マルチコアプロセッサ１に対して演算終了の割り込みを通知する。この演算終了をプロセッサコア、例えば２−Ｃが受信した場合、プロセッサコア２−Ｃが、内部バス８に接続されたプロセッサＤＭＡＣ１９に対して、ローカルメモリ１４のアドレス領域１０２のデータを入出力インタフェース回路１１へＤＭＡ転送することを指示し、処理を終えることができる。
【００３０】
また、別の演算アルゴリズムでは、プロセッサコア２−Ａ、２−Ｂ、２−Ｃによる後処理がごく限られた処理であって、ローカルメモリ１４へのアクセス数がごく少ない場合がある。このように、プロセッサコア２−Ａ、２−Ｂ、２−Ｃによる後処理の際に、ローカルメモリ１４へのアクセスに要する時間が、ローカルメモリ１４からメインメモリ１７へのＤＭＡ転送にかかる時間よりも短いならば、ＤＭＡ転送を行わずにそのままローカルメモリ１４をプロセッサコア２−Ａ、２−Ｂ、２−Ｃがアクセスすることも可能である。最終的には、プロセッサコア２−Ａ、２−Ｂ、２−ＣがプロセッサＤＭＡＣ１９に対してアドレス領域１０２のデータ（演算結果）を入出力インタフェース回路１１へＤＭＡ転送することを指示するか、アドレス領域１０２のデータ（演算結果）をプロセッサコア内で活用することになる。
【００３１】
また、別の演算アルゴリズムでは、プロセッサコア２−Ａ、２−Ｂ、２−Ｃによる後処理が大量にあり、また、複数のプロセッサコア２−Ａ、２−Ｂ、２−Ｃで並列実行する必要がある場合がある。この場合、メインメモリ１７上のアドレス領域１０８へ処理結果をＤＭＡ転送した方が効率が良い。この場合は、ＰＥＤＭＡＣ１５がレジスタ領域１０７で指定されたメインメモリ１７の転送先アドレスに、アドレス領域１０２のデータ（演算結果）をＤＭＡ転送し、このＤＭＡ転送完了後にプロセッサエレメント１３がプロセッサコア２−Ａ、２−Ｂ、２−Ｃに割り込みを通知するように設定しておく。すると、プロセッサコア２−Ａ、２−Ｂ、２−Ｃ側では、データ転送待ちを行わずに、割り込みを受けて即座に演算を引き継ぐことが可能となる。複数のプロセッサコア２−Ａ、２−Ｂ、２−Ｃが並列に処理する場合であっても、マルチコアプロセッサ１内のコヒーレンシ管理回路４により、情報の一貫性が保たれたまま、効率よく並列演算を行うことができる。演算が完了した後の結果は、プロセッサコア２−Ａ、２−Ｂ、２−Ｃ内でそのまま活用したり、あるいはプロセッサＤＭＡＣ１９から入出力インタフェース回路１１に対してＤＭＡ転送することもできる。
【００３２】
上記動作の説明は、最初にプロセッサエレメント１３にデータを入力し演算させた例であるが、演算アルゴリズムによっては、最初にプロセッサコアで処理を行ってからプロセッサエレメント１３が後処理を実施してもよい。いずれもプログラムにより自由にアルゴリズムを実現できる構成である。
【００３３】
以上のように、実施の形態１のヘテロジニアスマルチコアプロセッサによれば、ローカルメモリ１４を各プロセッサコア２−Ａ、２−Ｂ、２−Ｃからキャッシュ禁止としたので、ローカルメモリ１４上のデータに対しては、コヒーレンシ管理が不要となる。また、ＰＥＤＭＡＣ１５がローカルメモリ１４上のデータをメインメモリ１７にＤＭＡ転送し、プロセッサエレメント１３がデータの転送完了を割り込み通知するようにしたので、例えば複数のプロセッサコアが処理を並列実行する場合に、互いのデータ転送待ちを行うことなく、直ちに処理を開始することができる。また、プロセッサコアによる処理に要する時間がローカルメモリ１４からメインメモリ１７へのＤＭＡ転送にかかる時間よりも短い場合には、ローカルメモリ１４に格納されたデータにプロセッサコアから直接アクセスするようにしたので、効率よく処理を行うことができる。また、入出力インタフェース回路１１からローカルメモリ１４に直接アクセスできるようにしたので、入出力ＤＭＡＣ１２が大量の入力データを直接ローカルメモリ１４にＤＭＡ転送することができる。このように、プロセッサエレメント１３とプロセッサコア２−Ａ、２−Ｂ、２−Ｃとの間、および入出力インタフェース回路１１とローカルメモリ１４との間におけるデータ授受のためのオーバーヘッドを短縮することができ、演算性能を向上させることができる。また、入出力インタフェース回路１１とローカルメモリ１４との間、およびローカルメモリ１４とメインメモリ１７との間のデータ転送処理は、入出力ＤＭＡＣ１２およびＰＥＤＭＡＣ１５が行うように構成したので、ソフトウェアによる煩雑なデータ管理が不要となり、ソフトウェアのプログラミングが容易となる。
【００３４】
実施の形態２．
実施の形態１では、マルチコアプロセッサに接続するプロセッサエレメントは１つである構成について説明したが、実施の形態２では、プロセッサエレメントを２つ以上の複数個備えた構成について説明する。この構成では、複数個のプロセッサエレメント１３がそれぞれ個別の演算を同時に（並列に）実行することができる。
【００３５】
図３は、実施の形態２にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。なお、実施の形態１と同一または同等の構成部には同一符号を付して、その詳細な説明は省略する。
【００３６】
実施の形態２にかかるヘテロジニアスマルチコアプロセッサ１００ａは、マルチコアプロセッサ１、および複数のプロセッサエレメント１３を備えている。なお、プロセッサエレメントは、図３では便宜上２つ示しているが、演算アルゴリズムによっては３つ以上の構成であってもよく、また内部の構造が同一であっても、あるいは異なる構造であってもよいが、それぞれに大量のデータを処理するための大容量のローカルメモリ１４、およびメインメモリ１７とローカルメモリ１４との間でデータをＤＭＡ転送するためのＰＥＤＭＡＣ１５を備えている。
【００３７】
以上のように、実施の形態２のヘテロジニアスマルチコアプロセッサによれば、プロセッサエレメントを複数備え、各々独立した演算処理を並列実行することができるので、実施の形態１で示した構成に対して、より複雑な演算処理や高速な演算処理が実行可能となり、演算性能を向上させることが可能となる。
【００３８】
実施の形態３．
図４は、実施の形態３にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。実施の形態３では、図１に示すマルチコアプロセッサと１つのプロセッサエレメント１３とを同一のＬＳＩ１ｂに実装している。この構成では、プロセッサエレメント１３が図１のように外部インタフェース１０にではなく、マルチコアプロセッサの内部バス８により接続される。なお、同一ＬＳＩ１ｂに複数のプロセッサエレメント１３を実装するようにしてもよい。
【００３９】
プロセッサエレメント１３と各プロセッサコア２−Ａ，２−Ｂ，２−Ｃとの間が、実施の形態１よりも高速な内部バス８により接続されるため、ＰＥＤＭＡＣ１５によるデータの転送速度が速い。したがって、データ転送時間を短縮することができ、実施の形態１より高速に演算処理を行うことができる。
【００４０】
以上のように、実施の形態３のヘテロジニアスマルチコアプロセッサによれば、マルチコアプロセッサと、１〜複数のプロセッサエレメントを同一のＬＳＩに実装し、プロセッサエレメント１３と各プロセッサコア２−Ａ，２−Ｂ，２−Ｃとの間が、外部インタフェース１０よりも高速な内部バス８により接続されるため、プロセッサエレメントとプロセッサコアとの間のデータ転送時間を短縮することができ、演算性能を向上させることが可能となる。
【００４１】
また、以上の実施の形態に示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能であることは言うまでもない。
【産業上の利用可能性】
【００４２】
以上のように、本発明にかかるヘテロジニアスマルチコアプロセッサは、マルチコアプロセッサとプロセッサエレメントとの間で大量のデータを連携しながら演算する場合に適している。
【符号の説明】
【００４３】
１  マルチコアプロセッサ
２−Ａ，２−Ｂ，２−Ｃ  プロセッサコア
３  キャッシュメモリ
４  コヒーレンシ管理回路
５  外部割り込み線
６  割り込み制御回路
７  割り込み線
８  内部バスまたはクロスバースイッチ
９  メモリインタフェース回路
１０  外部インタフェース
１１  入出力インタフェース回路
１２  入出力ＤＭＡＣ
１３  プロセッサエレメント
１４  ローカルメモリ
１５  ＰＥＤＭＡＣ
１６  メモリバス
１７  メインメモリ
１９  プロセッサＤＭＡＣ
２０  割り込み専用線
１００，１００ａ，１００ｂ  ヘテロジニアスマルチコアプロセッサ
【図１】
2010272066.tif 000003
【図２】
2010272066.tif 000004
【図３】
2010272066.tif 000005
【図４】
2010272066.tif 000006