JP2010272066A - ヘテロジニアスマルチコアプロセッサ - Google Patents
ヘテロジニアスマルチコアプロセッサ Download PDFInfo
- Publication number
- JP2010272066A JP2010272066A JP2009125438A JP2009125438A JP2010272066A JP 2010272066 A JP2010272066 A JP 2010272066A JP 2009125438 A JP2009125438 A JP 2009125438A JP 2009125438 A JP2009125438 A JP 2009125438A JP 2010272066 A JP2010272066 A JP 2010272066A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- core
- data
- input
- main memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
【課題】プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上させる。
【解決手段】プロセッサエレメント13は、各プロセッサコア2−A,2−B,2−Cからキャッシュ禁止に設定され、プロセッサコアおよび入出力インタフェース回路11から直接アクセス可能に設定され、入出力インタフェース回路11からメインメモリ17を介さずに直接転送された入力データおよびプロセッサエレメントの演算結果である出力データを格納するローカルメモリ14と、ローカルメモリ14とメインメモリ17との間でDMA転送するDMAC15とを備え、プロセッサエレメントは出力データをメインメモリ17へDMA転送後に転送完了の割り込みをプロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行する。
【選択図】図1
【解決手段】プロセッサエレメント13は、各プロセッサコア2−A,2−B,2−Cからキャッシュ禁止に設定され、プロセッサコアおよび入出力インタフェース回路11から直接アクセス可能に設定され、入出力インタフェース回路11からメインメモリ17を介さずに直接転送された入力データおよびプロセッサエレメントの演算結果である出力データを格納するローカルメモリ14と、ローカルメモリ14とメインメモリ17との間でDMA転送するDMAC15とを備え、プロセッサエレメントは出力データをメインメモリ17へDMA転送後に転送完了の割り込みをプロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行する。
【選択図】図1
Description
本発明は、1つのLSIパッケージ内(以下LSIとも呼称)に複数の中央処理演算装置(以下プロセッサコアと呼称)や周辺回路を組み込んだマルチコアプロセッサと、マルチコアプロセッサの演算性能を補う演算回路を具備するプロセッサエレメントとを備えるヘテロジニアス(異種混合)マルチコアプロセッサに関する。
プロセッサコアの性能は、様々な技術により飛躍的に向上してきている。その手法の1つとして、特許文献1に示すように、1つのLSIパッケージ内に複数のプロセッサコアを実装し、それぞれが連携して並列に演算処理を行うことで、演算時間の短縮を図ることが可能なマルチコアプロセッサがある。マルチコアプロセッサは、それぞれのプロセッサコアで処理できる命令は同時には1命令が原則である。ある種のプロセッサコアでは、さらに演算性能を向上させるため、1命令で同時に複数のデータに対して同じ演算を実行する演算回路(SIMD演算:Single Instruction Mutliple Data)を組み込んだものもあるが、その演算ビット数はプロセッサコアが扱うことのできる語長程度の32〜128ビット程度であり、それを高々2〜16個程度の個別のデータに区切って処理するものである。SIMD演算が可能なマルチコアプロセッサとしては、例えばVMX(登録商標、IBM社)、Altivec(登録商標、Freescale社)、MMXおよびSSE(登録商標、Intel社)、3DNow!(登録商標、AMD社)などがある。しかし、マルチコアプロセッサは、物理的な制約から1つのLSIに実装できるプロセッサコア数には限界がある。また、複数のプロセッサコアを同時に効率的に動作させる並列プログラミングには高度な技術が必要であり、その開発には多大な労力が要求されるため、プロセッサコアが沢山あっても、それぞれの性能を活かすことが難しい。
このように、マルチコアプロセッサにおいては、命令列の並列実行に主眼を置いたタイプと、SIMD演算のようにデータ列の並列処理に主眼を置いたタイプとがある。ただし、プロセッサコア内では、他の演算回路との実装上のバランスのため、一度に扱えるデータ幅に制約があり、極端な並列数でデータ並列処理を行うことができず、また、単純な演算であっても、その実行回数が膨大なため、処理に時間がかかっていた。
そこで、プロセッサコア上でソフトウェアによる演算では時間がかかる部分を、プロセッサコアとは別のハードウェアとして実装することにより、処理性能を飛躍的に向上させる方法がある。このようなハードウェア(以後、プロセッサエレメントと呼称)は、プロセッサコアからの命令により動作し、ハードウェア実装による演算は十分な高速性を有する。さらにプロセッサエレメントに汎用性を付加するため、プロセッサエレメントをプログラム可能な構成とし、1命令で百から千個もの膨大な数の演算器を動作させることができるようにしたものもある。例えばTesra(登録商標、nVIDIA社)やRadeon(登録商標、AMD社)などに組み込まれている汎用グラフィック演算プロセッサ(GPGPU:General Purpose Graphic Processing Unit)などである。しかし、これらは単純な演算に限定されるため、複雑な条件分岐を伴うアルゴリズムを実装するのは困難である。
マルチコアプロセッサによる命令列の並列実行性能と、プロセッサエレメントによるデータ列の並列処理性能のそれぞれの長所を融合するために、マルチコアプロセッサが実装されるLSIとプロセッサエレメントが実装されるLSIとを高速な外部インタフェースで接続するか、あるいは同一LSI内にマルチコアプロセッサおよびプロセッサエレメントを実装することが多く、このような異種混合構成はヘテロジニアスマルチコアプロセッサと呼称されている。ヘテロジニアスマルチコアプロセッサでは、大量のデータを効率よく演算するためには、プロセッサエレメントとマルチコアプロセッサとの連携が重要になる。
マルチコアプロセッサにおいては、アクセスする頻度の高いデータを一時保存するためのキャッシュメモリを各プロセッサコアが個別に備えるのが一般的である。この場合、マルチコアプロセッサシステムとして、各キャッシュメモリの内容とメインメモリの内容に齟齬が発生ないように一貫性を保持するコヒーレンシ管理が重要となる。例えば、データ処理内容ごとにプロセッサコアが固定され、処理済みのデータがプロセッサ間を順番に転送されるような処理アルゴリズムの場合、前段のプロセッサコアの処理内容を、別の後段のプロセッサコアが参照する必要がある。処理済のデータは概ね、前段のプロセッサコアのキャッシュメモリに格納されているが、後段のプロセッサコアはメインメモリしか参照できない。このため、後段のプロセッサがメインメモリからデータをリードしようとすると、一旦、前段のプロセッサコアのキャッシュの内容(つまり、処理済のデータ)をメインメモリに書き戻すなどの操作が必要になる。これらは、コヒーレンシ管理回路によって自動的に実行されるのが一般的であり、プログラムからはその様子を知る必要はないが、若干の処理時間がかかる。
プロセッサエレメントが扱うデータ量が比較的少ない量であれば、プロセッサコアが必要とするデータを転送指示することで、プロセッサコアのコヒーレンシ管理回路を経由したデータ授受が可能であり、複数のプロセッサコア間でのコヒーレンシ維持に対するプログラム上の注意は不要である。プロセッサコアからのデータ転送は、1回あたりのアクセスでは高々プロセッサコアの語長(たとえば4バイト)からキャッシュメモリの管理単位(たとえば32バイト)程度にすぎない。これらを踏まえて、従来、プロセッサエレメントには、4バイト幅程度のレジスタを入出力用に複数個備えあるか、あるいは数十〜数キロバイト程度の小容量のバッファメモリを備え、他に制御用レジスタ等が備えられる。プロセッサエレメント内部あるいはプロセッサコアからは直接は参照できない専用のメモリデバイスと接続することで、大量のデータ処理を行っている。このため、ヘテロジニアスマルチコアプロセッサが画像処理に適用される場合は、もっぱら、プロセッサエレメント内部に3次元モデル情報やテクスチャ情報を持たせ、プロセッサコアから指定された視点や視野範囲等の指示の元に大量の演算を行って3次元コンピュータグラフィックスを生成し、その結果はプロセッサコアが把握する必要のない外部表示装置のための専用信号線に出力されるなどの利用が一般的である。
マルチコアプロセッサと、プロセッサエレメントとの間の接続に関しては、それぞれが別のLSIに実装されている場合には高性能な外部インタフェースが用いられる。プロセッサエレメントからの処理完了あるいは異常状態の検出等、プロセッサコアに何らかの状態変化を通知するためには割り込み信号を使用する。ただし、外部インタフェースが例えばPCI Express(登録商標、Peripheral Component Interchange Special Interest Group。略してPCISIG)やSerial RapidIO(登録商標、RapidIOTrade Association)のような高速シリアルインタフェースの場合には、これらの規格で規定されたプロトコルで割り込みに相当するメッセージを通信し、割り込み信号に代えた実装もある。
マルチコアプロセッサの中のいずれかのプロセッサコアが、この割り込み信号を受けてプロセッサエレメントの状態変化を識別し、例えば演算完了の通知であれば処理結果を自身が管理するメインメモリ内に転送し、後段の演算処理を行う。ただし、このプロセッサコア上で動作するソフトウェアの指示とは異なり、メインメモリに展開指示したデータは、実際にはコヒーレンシ管理回路により当該プロセッサコア内のキャッシュメモリに転送される。こうすることで、次回以降の演算処理に際して、アクセス時間がかかるメインメモリへ読み書きを廃し、高速に演算を行うことができる。
ヘテロジニアスマルチコアプロセッサにおいて、本来の演算処理にかかる時間と、プロセッサコアとプロセッサエレメント間のデータ転送にかかる時間のほかに、コヒーレンシを維持するために各プロセッサコア内のキャッシュメモリと、メインメモリあるいはプロセッサエレメントとの間でのデータ転送時間が必要である。マルチコアプロセッサとプロセッサエレメント間で大量のデータを連携しながら演算する場合、演算処理を行う真の処理時間に比べ、これらコヒーレンシ維持に必要な時間が無視できない長さとなり、結果的に演算時間を効率的に短縮するのが難しい。通常、このような事態を避けるため、プロセッサコアで処理する内容と、プロセッサエレメントで処理する内容を、例えば全く異なるアプリケーションソフトウェアを実行させたり、異なるタスクあるいはプロセス等に割り付け、ソフトウェア上はそれぞれを分離する場合が多い。これにより、コヒーレンシ維持のための頻繁なデータ転送を行わないように意図した設計がされている。
本来、ヘテロジニアスマルチコアプロセッサは、マルチコアプロセッサのみやプロセッサエレメントのみでは達成できない複雑なアルゴリズムに対して、演算時間を効果的に削減する目的でアーキテクチャの異なるプロセッサコアを接続している。それにも関わらず、本来の目的を達成するためには、煩雑なデータ管理が必要となり、プログラミングが容易ではないという課題がある。
本発明は、上記に鑑みてなされたものであって、プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上を可能とするヘテロジニアスマルチコアプロセッサを得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリおよびコヒーレンシ管理回路を夫々備える複数のプロセッサコアを有し、前記各プロセッサコアからキャッシュ可能に設定されたメインメモリおよび外部機器との接続を行う入出力インタフェース回路に接続されるマルチコアプロセッサと、前記プロセンサコアからの命令により動作し、プロセッサコアを補助する演算を実行するプロセッサエレメントとを備えるヘテロジニアスマルチコアプロセッサにおいて、前記プロセッサエレメントは、前記各プロセッサコアからキャッシュ禁止に設定されるとともに、前記プロセッサコアおよび前記入出力インタフェース回路から直接アクセス可能に設定され、前記入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよび前記プロセッサエレメントの演算結果である出力データを格納するローカルメモリと、前記ローカルメモリと前記メインメモリとの間でDMA転送するDMAコントローラとを備え、前記プロセッサエレメントは前記出力データをメインメモリへDMA転送後に転送完了の割り込みを前記プロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行することを特徴とする。
この発明によれば、プロセッサエレメントは、各プロセッサコアからキャッシュ禁止に設定され、プロセッサコアおよび入出力インタフェース回路から直接アクセス可能に設定され、入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよびプロセッサエレメントの演算結果である出力データを格納するローカルメモリと、ローカルメモリとメインメモリとの間でDMA転送するDMACとを備え、プロセッサエレメントは出力データをメインメモリへDMA転送後に転送完了の割り込みをプロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行するようにしたので、プロセッサコアとプロセッサエレメント間におけるデータ授受のためのオーバーヘッドを短縮するとともに、演算能力の向上させることが可能となる。
以下に、本発明にかかるヘテロジニアスマルチコアプロセッサの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。図1において、ヘテロジニアスマルチコアプロセッサ100は、マルチコアプロセッサ1、およびプロセッサエレメント13を備え、外部機器(図示せず)との接続を行う入出力インタフェース回路11、およびメインメモリ17と接続される。
図1は、実施の形態1にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。図1において、ヘテロジニアスマルチコアプロセッサ100は、マルチコアプロセッサ1、およびプロセッサエレメント13を備え、外部機器(図示せず)との接続を行う入出力インタフェース回路11、およびメインメモリ17と接続される。
マルチコアプロセッサ1は、1つのLSIで構成されており、複数のプロセッサコア2−A、2−B,2−Cを備えている。。各プロセッサコア2−A、2−B,2−Cは、内部の構造が同一であっても、あるいは異なる構造であってもよいが、それぞれにキャッシュメモリ3と、複数のキャッシュメモリ3と、メインメモリ17のそれぞれが保持する情報の一貫性を維持するためのコヒーレンシ管理回路4を備えている。プロセッサコア2−A、2−B,2−Cは、図1では説明の便宜上3つ示しているが、一般的に2つ以上の構成であれば幾つでも良い。
プロセッサコア2−A、2−B,2−Cは、内部バスまたはクロスバースイッチ8(以下単に内部バス8と呼称する。)にて接続されており、メインメモリ17へのアクセスや外部機器との接続も内部バス8を経由してアクセスする。プロセッサコア2−A、2−B,2−Cのそれぞれに割り込みを通知するため、各別の割り込み線7によって、プロセッサコア2−A、2−B,2−Cと、割り込み制御回路と6が接続されている。割り込み制御回路6は、マルチコアプロセッサ1に搭載されるダイレクトメモリアクセスコントローラ19(以下、プロセッサDMACと呼称)19と、図示せぬマルチコアプロセッサ1内部の周辺回路、あるいはプロセッサコア2−A、2−B,2−C同士の割り込み、マルチコアプロセッサ1に接続された外部機器からの割り込みを受けるための外部割り込み線5からの割り込みを取りまとめ、プログラムで指定されたあるいは別のアルゴリズムに従って適切な通知先プロセッサコアを決定し、この決定内容に従って割り込み線7を駆動する。
プロセッサコア2−A、2−B,2−Cが主として利用するメインメモリ17は、通常、マルチコアプロセッサ1とは異なるLSIに実装される。このため、マルチコアプロセッサ1は、メモリバス16を経由して接続できるよう、メモリインタフェース回路9を具備する。マルチコアプロセッサの場合、メインメモリ17が保持する情報の一貫性を維持する必要から、このメモリインタフェース回路9に対してもコヒーレンシ管理回路4を備える。
マルチコアプロセッサ1は高速なデータ授受が可能な外部インタフェース10を備える。外部インタフェース10を介して入出力インタフェース回路11、プロセッサエレメント13が接続されている。外部インタフェース10としては、PCI Express(登録商標、Peripheral Component Interchange Special Interest Group。略してPCISIG)あるいはSerial RapidIO(登録商標、RapidIOTrade Association)のなどの高速シリアルインタフェースであっても良いし、PCIbus(登録商標、PCISIG)などの高性能なパラレルバスインタフェースであっても良い。
プロセッサエレメント13は、複数の演算器を備え、1回の命令実行要請に対して、異なる大量のデータに対して同一の演算を同時に複数実行し、演算時間を短縮できる演算機構を備える。プロセッサエレメント13は、マルチコアプロセッサ1と外部インタフェース10で接続される。プロセッサエレメント13での演算の開始や異常値などの処理は、マルチコアプロセッサ1からの命令により動作制御されるが、一連の演算手順や、演算内容の定義はマルチコアプロセッサ1から演算前に設定することができ、プロセッサコア2−A、2−B,2−Cよりは単純であるが、プログラム動作が可能である。プロセッサエレメント13での演算処理の終了や異常発生などの状態変化に対して、プロセッサエレメント13は、マルチコアプロセッサ1に対して割り込みを通知する。この割り込みは外部インタフェース10とは別の外部割り込み線5を利用した通知であってもよいし、外部インタフェース10が備えるメッセージによる割り込み通知機能を用いても良い。
プロセッサエレメント13は大量(例えば数メガバイトから数十メガバイト程度)のデータを処理するためにローカルメモリ14を備える。ただし、このローカルメモリ14は、プロセッサエレメント13、各プロセッサコア2−A、2−B,2−Cおよび入出力インタフェース回路11から直接アクセスが可能である。ただし、ローカルメモリ14は、マルチコアプロセッサ1からはキャッシュ禁止領域に配置されており、これによりマルチコアプロセッサ1で必要とされたコヒーレンシ管理回路4は、プロセッサエレメント13では不要である。
また、ローカルメモリ14は外部機器とのインタフェースを行う入出力インタフェース回路11からも直接アクセスすることが可能である。入出力インタフェース回路11にはダイレクトメモリアクセスコントローラ12(以下 入出力DMAC)が備えられ、これにより、大量のデータを短時間に処理しなければならないリアルタイム処理の要求があっても、例えば一旦メインメモリ17へデータ転送をするなどの操作をせずに大量のデータを短時間に直接ローカルメモリ14に転送できる。プロセッサエレメント13にも、ダイレクトメモリアクセスコントローラ15(以下 PEDMAC)が備えられ、予めマルチコアプロセッサ1にて指定されたアドレスに対して、演算開始前や演算開始後にメインメモリ17とローカルメモリ14間でデータを転送することができる。これにより、例えばプロセッサエレメント13の演算が完了し、データをメインメモリ17に転送し終った後に割り込みを通知することが可能となる。プロセッサコア2−A、2−B,2−Cが割り込みを受信した段階で、当該プロセッサコアのキャッシュメモリ3を経由して当該プロセッサコアが演算処理を引き継ぐことが可能である。
つぎに、他の接続機器から入力される大量のデータを本実施の形態のヘテロジニアスマルチコアプロセッサを用いて短時間に処理するデータの流れについて説明する。図2は、ソフトウェア動作の観点からアクセスすべき(主にローカルメモリ14の)メモリ空間の一例を示すものである。101は入出力DMAC12によってローカルメモリ14に転送されるデータの転送先アドレス領域、102はローカルメモリ14上の出力結果データが格納される領域であって、PEDMAC15がメインメモリ17に転送する転送元アドレスを示す領域、103はローカルメモリ14上の入力データの先頭アドレスを設定するレジスタ領域、104はローカルメモリ14上の入力データの最終アドレスを設定するレジスタ領域、105はローカルメモリ14上の出力結果データを格納する先頭アドレスを設定するレジスタ領域、106はプロセッサエレメント13の演算方法を指定するレジスタ領域、107はメインメモリ17へDMA転送する転送先アドレスを指定するレジスタ領域、108はPEDMAC15によってDMA転送されたメインメモリ17上の転送先アドレス領域である。
まず、プロセッサコア2−A、2−B、2−Cのうちのいずれか、例えばプロセッサコア2−Aが処理開始前にプロセッサエレメント13や周辺回路の初期化を行う。このとき、プロセッサコア2−Aは、入出力インタフェース回路11を経由して入力されるデータ来着にあわせて入出力DMAC12が入力データをローカルメモリ14上のアドレス領域101へ転送できるように入出力DMAC12に予め指示をしておく。また、メインメモリ17に対しては、すべてのプロセッサコア2−A、2−B、2−Cがキャッシュ可能な設定とするが、ローカルメモリ14についてはすべてのプロセッサコア2−A、2−B、2−Cがキャッシュ禁止とする。プロセッサエレメント13には予め処理すべき手順をレジスタ領域106などで指定してあり、処理結果は、メインメモリ17に転送するようにレジスタ領域107にその転送先アドレスを指示しておく。また、演算の対象となる入力データの先頭アドレスをレジスタ領域103に、その最終アドレスをレジスタ領域104に、演算結果の格納先アドレスをレジスタ領域105に設定する。
実際に処理が開始されると、他の機器から入力されてきたデータは入出力インタフェース回路11にて受信され、入出力DMAC12によりローカルメモリ14上のアドレス領域101に転送される。このデータ入着情報は、プロセッサコア2−A、2−B、2−Cのうち、例えばプロセッサコア2−Bに割り込みにて通知され、プロセッサコア2−Bがデータ入着を知る。この際、プロセッサコア2−Bは必要に応じてプロセッサエレメント13の設定を行ってもよく、引き続きプロセッサエレメント13に演算を開始させる。プロセッサエレメント13は、レジスタ領域103〜105を参照することで、ローカルメモリ14のアドレス領域101に対して演算を行い、その結果をアドレス領域102に格納する。すなわち、プロセッサエレメント13は、レジスタ領域106で指定された演算方法で、レジスタ領域103で指定されたローカルメモリ14のアドレス領域101からレジスタ領域104で指定されたローカルメモリ14のアドレス領域101までのデータを順次読み出し、演算結果をレジスタ領域105で指定されたローカルメモリ14のアドレス領域102に順次書き込む。
ここで、演算アルゴリズムによっては、プロセッサコア2−A、2−B、2−Cによる後処理が不要な場合もある。その場合は、以後のプロセッサコア2−A、2−B、2−Cとの連携は割愛し、マルチコアプロセッサ1に対して演算終了の割り込みを通知する。この演算終了をプロセッサコア、例えば2−Cが受信した場合、プロセッサコア2−Cが、内部バス8に接続されたプロセッサDMAC19に対して、ローカルメモリ14のアドレス領域102のデータを入出力インタフェース回路11へDMA転送することを指示し、処理を終えることができる。
また、別の演算アルゴリズムでは、プロセッサコア2−A、2−B、2−Cによる後処理がごく限られた処理であって、ローカルメモリ14へのアクセス数がごく少ない場合がある。このように、プロセッサコア2−A、2−B、2−Cによる後処理の際に、ローカルメモリ14へのアクセスに要する時間が、ローカルメモリ14からメインメモリ17へのDMA転送にかかる時間よりも短いならば、DMA転送を行わずにそのままローカルメモリ14をプロセッサコア2−A、2−B、2−Cがアクセスすることも可能である。最終的には、プロセッサコア2−A、2−B、2−CがプロセッサDMAC19に対してアドレス領域102のデータ(演算結果)を入出力インタフェース回路11へDMA転送することを指示するか、アドレス領域102のデータ(演算結果)をプロセッサコア内で活用することになる。
また、別の演算アルゴリズムでは、プロセッサコア2−A、2−B、2−Cによる後処理が大量にあり、また、複数のプロセッサコア2−A、2−B、2−Cで並列実行する必要がある場合がある。この場合、メインメモリ17上のアドレス領域108へ処理結果をDMA転送した方が効率が良い。この場合は、PEDMAC15がレジスタ領域107で指定されたメインメモリ17の転送先アドレスに、アドレス領域102のデータ(演算結果)をDMA転送し、このDMA転送完了後にプロセッサエレメント13がプロセッサコア2−A、2−B、2−Cに割り込みを通知するように設定しておく。すると、プロセッサコア2−A、2−B、2−C側では、データ転送待ちを行わずに、割り込みを受けて即座に演算を引き継ぐことが可能となる。複数のプロセッサコア2−A、2−B、2−Cが並列に処理する場合であっても、マルチコアプロセッサ1内のコヒーレンシ管理回路4により、情報の一貫性が保たれたまま、効率よく並列演算を行うことができる。演算が完了した後の結果は、プロセッサコア2−A、2−B、2−C内でそのまま活用したり、あるいはプロセッサDMAC19から入出力インタフェース回路11に対してDMA転送することもできる。
上記動作の説明は、最初にプロセッサエレメント13にデータを入力し演算させた例であるが、演算アルゴリズムによっては、最初にプロセッサコアで処理を行ってからプロセッサエレメント13が後処理を実施してもよい。いずれもプログラムにより自由にアルゴリズムを実現できる構成である。
以上のように、実施の形態1のヘテロジニアスマルチコアプロセッサによれば、ローカルメモリ14を各プロセッサコア2−A、2−B、2−Cからキャッシュ禁止としたので、ローカルメモリ14上のデータに対しては、コヒーレンシ管理が不要となる。また、PEDMAC15がローカルメモリ14上のデータをメインメモリ17にDMA転送し、プロセッサエレメント13がデータの転送完了を割り込み通知するようにしたので、例えば複数のプロセッサコアが処理を並列実行する場合に、互いのデータ転送待ちを行うことなく、直ちに処理を開始することができる。また、プロセッサコアによる処理に要する時間がローカルメモリ14からメインメモリ17へのDMA転送にかかる時間よりも短い場合には、ローカルメモリ14に格納されたデータにプロセッサコアから直接アクセスするようにしたので、効率よく処理を行うことができる。また、入出力インタフェース回路11からローカルメモリ14に直接アクセスできるようにしたので、入出力DMAC12が大量の入力データを直接ローカルメモリ14にDMA転送することができる。このように、プロセッサエレメント13とプロセッサコア2−A、2−B、2−Cとの間、および入出力インタフェース回路11とローカルメモリ14との間におけるデータ授受のためのオーバーヘッドを短縮することができ、演算性能を向上させることができる。また、入出力インタフェース回路11とローカルメモリ14との間、およびローカルメモリ14とメインメモリ17との間のデータ転送処理は、入出力DMAC12およびPEDMAC15が行うように構成したので、ソフトウェアによる煩雑なデータ管理が不要となり、ソフトウェアのプログラミングが容易となる。
実施の形態2.
実施の形態1では、マルチコアプロセッサに接続するプロセッサエレメントは1つである構成について説明したが、実施の形態2では、プロセッサエレメントを2つ以上の複数個備えた構成について説明する。この構成では、複数個のプロセッサエレメント13がそれぞれ個別の演算を同時に(並列に)実行することができる。
実施の形態1では、マルチコアプロセッサに接続するプロセッサエレメントは1つである構成について説明したが、実施の形態2では、プロセッサエレメントを2つ以上の複数個備えた構成について説明する。この構成では、複数個のプロセッサエレメント13がそれぞれ個別の演算を同時に(並列に)実行することができる。
図3は、実施の形態2にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。なお、実施の形態1と同一または同等の構成部には同一符号を付して、その詳細な説明は省略する。
実施の形態2にかかるヘテロジニアスマルチコアプロセッサ100aは、マルチコアプロセッサ1、および複数のプロセッサエレメント13を備えている。なお、プロセッサエレメントは、図3では便宜上2つ示しているが、演算アルゴリズムによっては3つ以上の構成であってもよく、また内部の構造が同一であっても、あるいは異なる構造であってもよいが、それぞれに大量のデータを処理するための大容量のローカルメモリ14、およびメインメモリ17とローカルメモリ14との間でデータをDMA転送するためのPEDMAC15を備えている。
以上のように、実施の形態2のヘテロジニアスマルチコアプロセッサによれば、プロセッサエレメントを複数備え、各々独立した演算処理を並列実行することができるので、実施の形態1で示した構成に対して、より複雑な演算処理や高速な演算処理が実行可能となり、演算性能を向上させることが可能となる。
実施の形態3.
図4は、実施の形態3にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。実施の形態3では、図1に示すマルチコアプロセッサと1つのプロセッサエレメント13とを同一のLSI1bに実装している。この構成では、プロセッサエレメント13が図1のように外部インタフェース10にではなく、マルチコアプロセッサの内部バス8により接続される。なお、同一LSI1bに複数のプロセッサエレメント13を実装するようにしてもよい。
図4は、実施の形態3にかかるヘテロジニアスマルチコアプロセッサの一構成例を示す図である。実施の形態3では、図1に示すマルチコアプロセッサと1つのプロセッサエレメント13とを同一のLSI1bに実装している。この構成では、プロセッサエレメント13が図1のように外部インタフェース10にではなく、マルチコアプロセッサの内部バス8により接続される。なお、同一LSI1bに複数のプロセッサエレメント13を実装するようにしてもよい。
プロセッサエレメント13と各プロセッサコア2−A,2−B,2−Cとの間が、実施の形態1よりも高速な内部バス8により接続されるため、PEDMAC15によるデータの転送速度が速い。したがって、データ転送時間を短縮することができ、実施の形態1より高速に演算処理を行うことができる。
以上のように、実施の形態3のヘテロジニアスマルチコアプロセッサによれば、マルチコアプロセッサと、1〜複数のプロセッサエレメントを同一のLSIに実装し、プロセッサエレメント13と各プロセッサコア2−A,2−B,2−Cとの間が、外部インタフェース10よりも高速な内部バス8により接続されるため、プロセッサエレメントとプロセッサコアとの間のデータ転送時間を短縮することができ、演算性能を向上させることが可能となる。
また、以上の実施の形態に示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能であることは言うまでもない。
以上のように、本発明にかかるヘテロジニアスマルチコアプロセッサは、マルチコアプロセッサとプロセッサエレメントとの間で大量のデータを連携しながら演算する場合に適している。
1 マルチコアプロセッサ
2−A,2−B,2−C プロセッサコア
3 キャッシュメモリ
4 コヒーレンシ管理回路
5 外部割り込み線
6 割り込み制御回路
7 割り込み線
8 内部バスまたはクロスバースイッチ
9 メモリインタフェース回路
10 外部インタフェース
11 入出力インタフェース回路
12 入出力DMAC
13 プロセッサエレメント
14 ローカルメモリ
15 PEDMAC
16 メモリバス
17 メインメモリ
19 プロセッサDMAC
20 割り込み専用線
100,100a,100b ヘテロジニアスマルチコアプロセッサ
2−A,2−B,2−C プロセッサコア
3 キャッシュメモリ
4 コヒーレンシ管理回路
5 外部割り込み線
6 割り込み制御回路
7 割り込み線
8 内部バスまたはクロスバースイッチ
9 メモリインタフェース回路
10 外部インタフェース
11 入出力インタフェース回路
12 入出力DMAC
13 プロセッサエレメント
14 ローカルメモリ
15 PEDMAC
16 メモリバス
17 メインメモリ
19 プロセッサDMAC
20 割り込み専用線
100,100a,100b ヘテロジニアスマルチコアプロセッサ
Claims (4)
- キャッシュメモリおよびコヒーレンシ管理回路を夫々備える複数のプロセッサコアを有し、前記各プロセッサコアからキャッシュ可能に設定されたメインメモリおよび外部機器との接続を行う入出力インタフェース回路に接続されるマルチコアプロセッサと、前記プロセンサコアからの命令により動作し、プロセッサコアを補助する演算を実行するプロセッサエレメントとを備えるヘテロジニアスマルチコアプロセッサにおいて、
前記プロセッサエレメントは、
前記各プロセッサコアからキャッシュ禁止に設定されるとともに、前記プロセッサコアおよび前記入出力インタフェース回路から直接アクセス可能に設定され、前記入出力インタフェース回路からメインメモリを介さずに直接転送された入力データおよび前記プロセッサエレメントの演算結果である出力データを格納するローカルメモリと、
前記ローカルメモリと前記メインメモリとの間でDMA転送するDMAコントローラと、
を備え、
前記プロセッサエレメントは前記出力データをメインメモリへDMA転送後に転送完了の割り込みを前記プロセッサコアに通知し、プロセッサコアはこの通知に基づき次の処理を実行することを特徴とするヘテロジニアスマルチコアプロセッサ。 - 前記プロセッサエレメントが複数個備えられ、それぞれが個別の演算を並列に実行可能であることを特徴とする請求項1に記載のヘテロジニアスマルチコアプロセッサ。
- 前記プロセッサエレメントとマルチコアプロセッサとが同一のLSIで構成されることを特徴とする請求項1に記載のヘテロジニアスマルチコアプロセッサ。
- 前記複数のプロセッサエレメントとマルチコアプロセッサとが同一のLSIで構成されることを特徴とする請求項2に記載のヘテロジニアスマルチコアプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009125438A JP2010272066A (ja) | 2009-05-25 | 2009-05-25 | ヘテロジニアスマルチコアプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009125438A JP2010272066A (ja) | 2009-05-25 | 2009-05-25 | ヘテロジニアスマルチコアプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010272066A true JP2010272066A (ja) | 2010-12-02 |
Family
ID=43420013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009125438A Pending JP2010272066A (ja) | 2009-05-25 | 2009-05-25 | ヘテロジニアスマルチコアプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010272066A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013254405A (ja) * | 2012-06-08 | 2013-12-19 | Nec Corp | 密結合マルチプロセッサシステム |
WO2017187582A1 (ja) * | 2016-04-27 | 2017-11-02 | 株式会社日立製作所 | 計算機システム及びサーバ |
CN112527729A (zh) * | 2020-12-15 | 2021-03-19 | 杭州慧芯达科技有限公司 | 一种紧耦合异构多核处理器架构及其处理方法 |
-
2009
- 2009-05-25 JP JP2009125438A patent/JP2010272066A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013254405A (ja) * | 2012-06-08 | 2013-12-19 | Nec Corp | 密結合マルチプロセッサシステム |
US9424223B2 (en) | 2012-06-08 | 2016-08-23 | Nec Corporation | Tightly coupled multiprocessor system |
WO2017187582A1 (ja) * | 2016-04-27 | 2017-11-02 | 株式会社日立製作所 | 計算機システム及びサーバ |
JPWO2017187582A1 (ja) * | 2016-04-27 | 2018-11-22 | 株式会社日立製作所 | 計算機システム及びサーバ |
US10789253B2 (en) | 2016-04-27 | 2020-09-29 | Hitachi, Ltd. | Computing system and server |
CN112527729A (zh) * | 2020-12-15 | 2021-03-19 | 杭州慧芯达科技有限公司 | 一种紧耦合异构多核处理器架构及其处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6969853B2 (ja) | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ | |
US10942737B2 (en) | Method, device and system for control signalling in a data path module of a data stream processing engine | |
Stuecheli et al. | CAPI: A coherent accelerator processor interface | |
US9092429B2 (en) | DMA vector buffer | |
US9405552B2 (en) | Method, device and system for controlling execution of an instruction sequence in a data stream accelerator | |
US20200159681A1 (en) | Information processor with tightly coupled smart memory unit | |
US7827391B2 (en) | Method and apparatus for single-stepping coherence events in a multiprocessor system under software control | |
US20150261535A1 (en) | Method and apparatus for low latency exchange of data between a processor and coprocessor | |
US20110231616A1 (en) | Data processing method and system | |
CN113495861A (zh) | 用于计算的系统和方法 | |
JP2007041781A (ja) | リコンフィグ可能な集積回路装置 | |
JP2014501008A (ja) | データを移動させるための方法及び装置 | |
JP2002503845A (ja) | タスク切り替えによるゼロオーバヘッドコンピュータ割り込み | |
US20090106533A1 (en) | Data processing apparatus | |
US11995351B2 (en) | DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine | |
JP7547526B2 (ja) | 複数計算における高スループットのためのシステムおよび方法 | |
CN109739785B (zh) | 多核系统的内连线结构 | |
JP2010272066A (ja) | ヘテロジニアスマルチコアプロセッサ | |
TW201725507A (zh) | 用於在遠端處理器上進行基元動作之硬體機制 | |
JP6294732B2 (ja) | データ転送制御装置及びメモリ内蔵装置 | |
US9830154B2 (en) | Method, apparatus and system for data stream processing with a programmable accelerator | |
JP2006515446A (ja) | 関連アプリケーションを相互参照するカルテシアンコントローラを有するデータ処理システム | |
KR101328944B1 (ko) | 제어 정보 처리 장치 및 방법 | |
CN114970844A (zh) | 一种通用神经网络张量处理器 | |
CN113672551A (zh) | 通用处理系统及通用处理方法 |