(57)【要約】【課題】チップサイズの増加を抑制しながら、演算処理部へのデータ転送の並列化を可能とする。【解決手段】演算処理部１１からの要求に応じて、第１・第２のメモリ制御部１６，１７により、第１・第２のデータ２１，２２が第１・第２のバス１２，１３を介して演算処理部１１に転送される。第１・第２のバス１２，１３を介して時間的に重複したデータ転送があった場合、緩衝制御部１８により、一方のデータが演算処理部１１に転送され、他方のデータが緩衝バッファ部１８ａに格納される。そして、緩衝制御部１８により、一方のデータの転送終了後、他方のデータが緩衝バッファ部１８ａから演算処理部１１に転送される。【選択図】図１
2011028343.tif 000002
【特許請求の範囲】
【請求項１】
演算を行う演算処理部と、
前記演算処理部からの第１の要求を入力する第１のメモリ制御部と、
前記演算処理部からの第２の要求を入力する第２のメモリ制御部と、
前記第１のメモリ制御部に接続され、前記第１のメモリ制御部の制御により、前記第１の要求に応じた第１のデータを、第１のバスを介して出力する第１のメモリ部と、
前記第２のメモリ制御部に接続され、前記第２のメモリ制御部の制御により、前記第２の要求に応じた第２のデータを、第２のバスを介して出力する第２のメモリ部と、
緩衝バッファ部を有し、前記第１のバスを介して前記第１のメモリ部に接続されると共に、前記第２のバスを介して前記第２のメモリ部に接続され、前記第１のバスを介した前記第１のデータの出力と前記第２のバスを介した前記第２のデータの出力が同一期間に行われる場合、前記第１のデータを前記演算処理部に転送し、前記第２のデータを前記緩衝バッファ部に格納し、前記第１のデータの転送の終了後、前記第２のデータを前記緩衝バッファ部から前記演算処理部に転送する緩衝制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記緩衝制御部は、前記第１および第２のメモリ部から同時にデータが出力された場合、前記第１および第２のメモリ部のうち、データ転送時間が大きい一のメモリ部からのデータを前記第１のデータとして前記演算処理部に転送し、他のメモリ部からのデータを前記第２のデータとして前記緩衝バッファ部に格納することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記緩衝制御部は、前記第１および第２のバスのうち一のバスを介して出力されたデータを前記演算処理部に転送中に、他のバスからデータが出力された場合、前記他のバスを介して出力されたデータを前記バッファに格納することを特徴とする請求項１記載の演算処理装置。
【請求項４】
前記演算処理装置は、前記演算処理部を複数有し、
前記緩衝制御部には、複数の前記演算処理部が接続され、
前記緩衝制御部は、前記第１のメモリ部が前記第１のバスを介して出力した第１のデータと前記第２のメモリ部が前記第２のバスを介して出力した第２のデータを、複数の前記演算処理部に振り分けることを特徴とする請求項１記載の演算処理装置。
【請求項５】
前記演算処理装置において、
前記第１のメモリ制御部は、前記演算処理部からの前記第１の要求の処理開始から所定期間、前記演算処理部からの後続の要求の処理を停止することを特徴とする請求項１記載の演算処理装置。
【請求項６】
前記演算処理装置において、
前記第１のメモリ制御部は、少なくとも前記緩衝制御部から前記演算処理部への前記第１のデータの転送に要する時間を、前記所定期間とすることを特徴とする請求項５記載の演算処理装置。
【請求項７】
演算を行う演算処理部を有する演算処理装置のデータ転送方法において、
前記演算処理装置が有する第１のメモリ制御部が、前記演算処理部からの第１の要求を入力するステップと、
前記演算処理装置が有する第２のメモリ制御部が、前記演算処理部からの第２の要求を入力するステップと、
前記第１のメモリ制御部に接続された第１のメモリ部が、前記第１のメモリ制御部の制御により、前記第１の要求に応じた第１のデータを、第１のバスを介して出力するステップと、
前記第２のメモリ制御部に接続された第２のメモリ部が、前記第２のメモリ制御部の制御により、前記第２の要求に応じた第２のデータを、第２のバスを介して出力するステップと、
前記演算処理装置が有する緩衝制御部が、前記第１のバスを介して前記第１のメモリ部に接続されると共に、前記第２のバスを介して前記第２のメモリ部に接続され、前記第１のバスを介した前記第１のデータの出力と前記第２のバスを介した前記第２のデータの出力が同一期間に行われる場合、前記第１のデータを前記演算処理部に転送し、前記第２のデータを前記緩衝バッファ部に格納し、前記第１のデータの転送の終了後、前記第２のデータを緩衝バッファ部から前記演算処理部に転送するステップと、
を有することを特徴とするデータ転送方法。
【請求項８】
前記データ転送方法において、
前記緩衝制御部は、前記第１および第２のメモリ部から同時にデータが出力された場合、前記第１および第２のメモリ部のうち、データ転送時間が大きい一のメモリ部からのデータを前記第１のデータとして前記演算処理部に転送し、他のメモリ部からのデータを前記第２のデータとして前記緩衝バッファ部に格納することを特徴とする請求項７記載のデータ転送方法。
【請求項９】
前記データ転送方法において、
前記緩衝制御部は、前記第１および第２のバスのうち一のバスを介して出力されたデータを前記演算処理部に転送中に、他のバスからデータが出力された場合、前記他のバスを介して出力されたデータを前記バッファに格納することを特徴とする請求項７記載のデータ転送方法。
【請求項１０】
前記データ転送方法において、
前記演算処理装置は、前記演算処理部を複数有し、
前記緩衝制御部には、複数の前記演算処理部が接続され、
前記緩衝制御部は、前記第１のメモリ部が前記第１のバスを介して出力した第１のデータと前記第２のメモリ部が前記第２のバスを介して出力した第２のデータを、複数の前記演算処理部に振り分けることを特徴とする請求項７記載のデータ転送方法。
【請求項１１】
前記データ転送方法において、
前記第１のメモリ制御部は、前記演算処理部からの前記第１の要求の処理開始から所定期間、前記演算処理部からの後続の要求の処理を停止することを特徴とする請求項７記載のデータ転送方法。
【請求項１２】
前記データ転送方法において、
前記第１のメモリ制御部は、前記緩衝制御部から前記演算処理部への前記第１のデータの転送に要する時間を、前記所定期間とすることを特徴とする請求項１１記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、およびデータ転送方法に関する。
【背景技術】
【０００２】
コンピュータに用いられるＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などの演算処理装置は、動作周波数を上げることで演算性能を向上させることができる。ところが近年、消費電力の増大などが原因となり、動作周波数を上げることによる演算処理装置の性能向上が限界に達しつつある。そこで、演算処理装置のマルチコア化によって、さらなる性能向上を目指す傾向にある。
【０００３】
演算処理装置がマルチコア化されると、１つのＬＳＩ（Large Scale Integrated circuit）チップに複数の演算処理部としてのプロセッサコア（以下、単に「コア」と呼ぶ）が搭載される。マルチコア化された演算処理装置では、処理のスループットを確保するために、キャッシュメモリや主記憶装置を複数のバンクに分け、コアからキャッシュメモリや主記憶装置へのアクセスをバンク単位で行うなどの工夫がなされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００６−５２２３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、演算処理装置内の各コアからバンクに分けられたキャッシュメモリにアクセスする場合、キャッシュメモリ制御回路によってアクセスが制御される。キャッシュメモリ制御回路が１つだけの場合、複数のコアから同時にデータ取得の要求が発生したとき、各要求をキャッシュメモリ制御回路が順番に処理することとなる。すると一部のコアにおいてキャッシュメモリからのデータ読み出しの待ち時間が長期化し、データアクセス性能の劣化を招いてしまう。
【０００６】
そこで、データのアクセス性能向上のため、キャッシュメモリを複数のバンクに分けると共に、それぞれのバンクに対応してキャッシュメモリ制御回路を複数設け、キャッシュメモリへのアクセスをバンク単位で制御することが考えられる。キャッシュメモリへのアクセスをバンク単位で行うことにより、複数のコアからデータ取得の要求が同時に発生しても、要求先が異なるバンクであれば、個々のキャッシュメモリ制御回路がそれぞれの要求を同時に並列処理することができる。その結果、データ取得の効率を向上させることができる。
【０００７】
しかし、コアからキャッシュメモリへのアクセスの並列化は、演算処理装置を実装したＬＳＩのチップサイズ増大の要因になる。すなわちキャッシュメモリアクセスを並列で実行可能とするには、キャッシュメモリからコアへのデータバスを複数設けて、さらにコアの受け口には、複数のデータバス用の配線とそれを受けるレジスタやセレクタを設けることとなる。これにより、演算処理装置を実装したＬＳＩのチップサイズが増大する。チップサイズが肥大化すると、１枚のシリコンウエハから切り出せるチップ数が減少し、演算処理装置の製造コストも上昇してしまう。
【０００８】
しかも、１つのチップ内の演算処理部であるコア数は増加傾向にある。そのため、個々のコアの占有面積の増加がチップサイズの肥大化に与える影響は、今後より顕著になるものと考えられる。
【０００９】
本発明はこのような点に鑑みてなされたものであり、チップサイズの増加を抑制しながら、演算処理部へのデータ転送の並列化を可能とした演算処理装置、およびデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、以下のような演算処理装置が提供される。
演算処理装置は、演算処理部、第１のメモリ制御部、第２のメモリ制御部、第１のメモリ部、第２のメモリ部、および緩衝制御部を有する。演算処理部は、演算を行う。第１のメモリ制御部は、演算処理部からの第１の要求を入力する。第２のメモリ制御部は、演算処理部からの第２の要求を入力する。第１のメモリ部は、第１のメモリ制御部に接続され、第１のメモリ制御部の制御により、第１の要求に応じた第１のデータを、第１のバスを介して出力する。第２のメモリ部は、第２のメモリ制御部に接続され、第２のメモリ制御部の制御により、第２の要求に応じた第２のデータを、第２のバスを介して出力する。緩衝制御部は、緩衝バッファ部を有し、第１のバスを介して第１のメモリ部に接続されると共に、第２のバスを介して第２のメモリ部に接続され、第１のバスを介した第１のデータの出力と第２のバスを介した第２のデータの出力が同一期間に行われる場合、第１のデータを演算処理部に転送し、第２のデータを緩衝バッファ部に格納し、第１のデータの転送の終了後、第２のデータを緩衝バッファ部から演算処理部に転送する。
【００１１】
また、上記課題を解決するために、以下のようなデータ転送方法が提供される。
このデータ転送方法では、演算を行う演算処理部を有する演算処理装置が有する第１のメモリ制御部が、演算処理部からの第１の要求を入力する。演算処理装置が有する第２のメモリ制御部が、演算処理部からの第２の要求を入力する。第１のメモリ制御部に接続された第１のメモリ部が、第１のメモリ制御部の制御により、第１の要求に応じた第１のデータを、第１のバスを介して出力する。第２のメモリ制御部に接続された第２のメモリ部が、第２のメモリ制御部の制御により、第２の要求に応じた第２のデータを、第２のバスを介して出力する。演算処理装置が有する緩衝制御部が、第１のバスを介して第１のメモリ部に接続されると共に、第２のバスを介して第２のメモリ部に接続され、第１のバスを介した第１のデータの出力と第２のバスを介した第２のデータの出力が同一期間に行われる場合、第１のデータを演算処理部に転送し、第２のデータを緩衝バッファ部に格納し、第１のデータの転送の終了後、第２のデータを緩衝バッファ部から演算処理部に転送する。
【発明の効果】
【００１２】
上記演算処理装置およびデータ転送方法によれば、チップサイズの増加を抑制しながら、演算処理部へのデータ転送の並列化が可能となる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る演算処理装置の構成を示す図である。
【図２】第２の実施の形態に係る演算処理装置の回路構成例を示す図である。
【図３】キャッシュメモリ制御回路の内部構造を示す図である。
【図４】緩衝制御回路の内部構成を示す図である。
【図５】データ入出力回路の内部構成を示す図である。
【図６】待ち合わせ制御回路のデータ転送指示手順を示すフローチャートである。
【図７】「BANK0&1」と「BANK2&3」のデータ入力が同時に行われた場合のデータ入出力を示すシーケンス図である。
【図８】「BANK0&1」のデータ入力後に続けて「BANK2&3」のデータ入力が行われた場合のデータ入出力を示すシーケンス図である。
【図９】「BANK0&1」と「BANK2&3」とから「CORE0」と「CORE1」へのデータ転送が連続して行われた場合のデータ入出力を示すシーケンス図である。
【図１０】複数のキャッシュメモリ制御回路から同一コアへデータを転送する場合の処理を示すシーケンス図である。
【図１１】マルチコアのＬＳＩチップを実装したシステムモジュールの例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る演算処理装置の構成を示す図である。演算処理装置１０は、演算処理部１１、第１のバス１２、第２のバス１３、第１のメモリ部１４、第２のメモリ部１５、第１のメモリ制御部１６、第２のメモリ制御部１７、および緩衝制御部１８を有している。
【００１５】
演算処理部１１は、演算器等を有するプロセッサコアであり、データ処理を行う。演算処理部１１は、データ処理に必要なデータを、第１のメモリ制御部１６および第２のメモリ制御部１７に要求する。
【００１６】
第１のバス１２および第２のバス１３は、演算処理部１１へのデータ転送に用いられる。
第１のメモリ部１４は、第１のバス１２に接続されている。第２のメモリ部１５は、第２のバス１３に接続されている。なお、第１のメモリ部１４と第１のバス１２との接続関係、および第２のメモリ部１５と第２のバス１３との接続関係は、それぞれ他の回路を経由した間接的な接続関係であってもよい。
【００１７】
第１のメモリ制御部１６は、第１のバス１２に対応付けて設けられ、演算処理部１１から要求された第１のメモリ部１４内の第１のデータ２１を、対応する第１のバス１２を介して演算処理部１１に転送する。第２のメモリ制御部１７は、第２のバス１３に対応付けて設けられ、演算処理部１１から要求された第２のメモリ部１５内の第２のデータ２２を、対応する第２のバス１３を介して演算処理部１１に転送する。
【００１８】
緩衝制御部１８は、第１のバス１２および第２のバス１３それぞれと演算処理部１１との間に接続されている。緩衝制御部１８は、第１のバス１２および第２のバス１３を介して時間的に重複したデータ転送があった場合、すなわち同一期間内に複数のデータ転送があった場合、一方のデータを演算処理部１１に転送し、他方のデータを緩衝バッファ部１８ａに格納する。例えば第１のデータ２１の方が先に緩衝制御部１８に入力された場合、第１のデータ２１が演算処理部１１に転送され、第２のデータ２２が緩衝バッファ部１８ａに格納される。そして、緩衝制御部１８は、一方のデータの転送終了後、他方のデータを緩衝バッファ部１８ａから演算処理部１１に転送する。
【００１９】
このような演算処理装置１０によれば、演算処理部１１からの要求に応じて、メモリ制御部１６により、第１のデータ２１が第１のバス１２を介して演算処理部１１に転送される。また演算処理部１１からの要求に応じて、メモリ制御部１７により、第２のデータ２２が第２のバス１３を介して演算処理部１１に転送される。第１のバス１２および第２のバス１３を介して時間的に重複したデータ転送があった場合、緩衝制御部１８により、一方のデータが演算処理部１１に転送され、他方のデータが緩衝バッファ部１８ａに格納される。そして、緩衝制御部１８により、一方のデータの転送終了後、他方のデータが緩衝バッファ部１８ａから演算処理部１１に転送される。
【００２０】
これにより、演算処理装置１０のチップサイズの増加を抑制しながら、演算処理部１１からのメモリアクセスの並列化が可能となる。すなわち、演算処理部１１へデータを転送するバスを複数設けているにも拘わらず、演算処理部１１におけるバスからのデータ入力が１系統で済む。そのため、演算処理部１１の専有面積が大きくなることがない。しかも、演算処理部１１と第１のバス１２および第２のバス１３との間に設けた緩衝制御部１８は、演算処理部１１の内部で緩衝制御を行う場合に比べて、小さな回路で済む。そのため、演算処理装置１０全体のチップサイズの増加も最小限に抑えることができる。
【００２１】
［第２の実施の形態］
第２の実施の形態は、マルチコアのＬＳＩにおいて、キャッシュメモリを介したデータアクセスの並列化を、ＬＳＩのチップサイズの増加を最小限に抑制して実現するものである。
【００２２】
図２は、第２の実施の形態に係る演算処理装置の回路構成例を示す図である。ＬＳＩ１００は、複数のコア１１１〜１１８を有している。ＬＳＩ１００は、例えばマルチコア構成のＣＰＵやＤＳＰである。図２の例では、コア１１１〜１１８の数は総計８個である。各コア１１１〜１１８には「CORE0」〜「CORE7」のコア識別番号が付与されている。コア１１１〜１１８は、個別にデータ処理を実行することができる。
【００２３】
ＬＳＩ１００のキャッシュメモリは、複数のデータメモリ１２１〜１２４を有している。データメモリ１２１〜１２４それぞれが、キャッシュメモリの１つのバンクである。すなわちキャッシュメモリが、データメモリ１２１〜１２４により４バンクに分けられている。各バンクには「BANK0」〜「BANK3」のバンク番号が付与されている。コア１１１〜１１８から要求されるメモリアドレス（主記憶装置内におけるデータのアドレス）では、所定の２ビットの値がバンク番号を示している。所定の２ビットを参照することで、どのバンクのデータに対する要求なのかが判別できる。第２の実施の形態では、要求されるメモリアドレスの下位２ビットによりバンクの切り分けを行う。
【００２４】
各データメモリ１２１〜１２４は、コア１１１〜１１８で使用される命令やデータを一次的に記憶する記憶領域である。例えばデータメモリ１２１〜１２４には、１ライン当たり１２８バイトのデータが格納される。データメモリ１２１〜１２４の１ライン当たりのデータ量は、キャッシュブロックサイズと呼ばれる。バス１０１〜１０４を介したデータ転送は、１キャッシュブロックサイズ単位で行われる。
【００２５】
また、データメモリ１２１〜１２４としては、主記憶装置よりも高速にリード／ライトが可能な記憶装置が使用される。例えばデータメモリ１２１〜１２４として、スタティックＲＡＭ（Static Random Access Memory）が使用される。
【００２６】
データメモリ１２１〜１２４は、同じバンク識別番号が付与されたバンクごとに設けられた外部の主記憶装置（図示せず）に接続されている。ＬＳＩ１００から主記憶装置へのアクセスは、各主記憶装置に対応付けられた主記憶制御回路１３１〜１３４を介して行われる。
【００２７】
また、ＬＳＩ１００は、４つのバンクに分けられたデータメモリ１２１〜１２４へのデータ入出力を制御するキャッシュメモリ制御回路１４０，１５０を有している。２つのキャッシュメモリ制御回路１４０，１５０は、それぞれ２つずつのデータメモリを制御する。図２の例では、キャッシュメモリ制御回路１４０がデータメモリ１２１，１２２を制御し、キャッシュメモリ制御回路１５０がデータメモリ１２３，１２４を制御する。
【００２８】
ここで、データメモリ１２１〜１２４とコア１１１〜１１８との間は、データ転送用のバス１０１〜１０４で接続されている。バス１０１は、データメモリ１２１およびデータメモリ１２２からコア１１１，１１２，１１５，１１６へのデータの転送に使用される。バス１０２は、データメモリ１２３およびデータメモリ１２４からコア１１１，１１２，１１５，１１６へのデータの転送に使用される。バス１０３は、データメモリ１２１およびデータメモリ１２２からコア１１３，１１４，１１７，１１８へのデータの転送に使用される。バス１０４は、データメモリ１２３およびデータメモリ１２４からコア１１３，１１４，１１７，１１８へのデータの転送に使用される。
【００２９】
バス１０１〜１０４のデータ幅は、例えば３２バイトである。この場合、コアからの要求に対する応答で転送されるデータ量が１２８バイトであれば、データメモリ１２１〜１２４からコア１１１〜１１８へ、バスの動作クロックで４サイクルかけてデータ転送が行われる。
【００３０】
キャッシュメモリ制御回路１４０は、キャッシュメモリの「BANK0」と「BANK1」とに相当するデータメモリ１２１，１２２に接続されている。キャッシュメモリ制御回路１４０は、コア１１１〜１１８からのデータ要求を受け取ると、要求されたデータがデータメモリ１２１，１２２内に存在するか否かを判断する。要求されたデータがデータメモリ１２１，１２２にあれば、キャッシュメモリ制御回路１４０はデータメモリ１２１，１２２から要求されたデータを読み出し、バス１０１，１０３を介してデータ要求を出力したコアに転送する。また、要求されたデータがデータメモリ１２１，１２２になければ、キャッシュメモリ制御回路１４０は主記憶制御回路１３１，１３２を介して、要求されたデータを主記憶装置から読み込む。キャッシュメモリ制御回路１４０は、主記憶装置から読み込んだデータを、キャッシュデータとしてデータメモリに格納すると共に、バス１０１，１０３を介してデータを要求したコアに転送する。
【００３１】
キャッシュメモリ制御回路１５０は、キャッシュメモリの「BANK2」と「BANK3」とに相当するデータメモリ１２３，１２４に接続されている。キャッシュメモリ制御回路１５０は、コア１１１〜１１８からのデータ要求を受け取ると、要求されたデータがデータメモリ１２３，１２４に存在するか否かを判断する。要求されたデータがデータメモリ１２３，１２４にあれば、キャッシュメモリ制御回路１５０はデータメモリ１２３，１２４から要求されたデータを読み出し、バス１０２，１０４を介してデータ要求を出力したコアに転送する。また、要求されたデータがデータメモリ１２３，１２４になければ、キャッシュメモリ制御回路１５０は主記憶制御回路１３３，１３４を介して要求されたデータを主記憶装置から読み込む。キャッシュメモリ制御回路１５０は、主記憶装置から読み込んだデータを、キャッシュデータとしてデータメモリに格納すると共に、バス１０２，１０４を介してデータ要求を出力したコアに転送する。
【００３２】
キャッシュメモリ制御回路１４０は、パイプラインにより２バンクのデータメモリ１２１，１２２と主記憶制御回路１３１，１３２とを制御する。同様にキャッシュメモリ制御回路１５０は、パイプラインにより２バンクのデータメモリ１２３，１２４と主記憶制御回路１３３，１３４とを制御する。このバンクは、要求するメモリアドレスのある２ビットを用いて分けられ、コアからの要求がアドレスに応じて分散して処理されることを示す。コアからの要求がキャッシュミスした場合、主記憶制御回路１３１〜１３４からのデータは同じバンクのデータメモリに登録される。
【００３３】
ここで、２つのキャッシュメモリ制御回路１４０，１５０は、相互に通信せず全く独立に動作する。これは相互の依存関係によるハングなどを誘発させないためである。このような独立した構成は、システムコントローラＬＳＩをバンクごとに別ＬＳＩにするのと似ている。これに伴い、キャッシュメモリ（データメモリ１２１〜１２４）からコア１１１〜１１８へのデータバスは、「BANK0」および「BANK1」のデータを転送するバス１０１，１０３と、「BANK2」および「BANK3」のデータを転送するバス１０２，１０４が設けられる。これらのバス１０１〜１０４は、互いに独立に配線される。
【００３４】
緩衝制御回路１６０，１７０，１８０，１９０は、コア１１１〜１１８へ転送するデータの入力タイミングを制御する回路である。緩衝制御回路１６０，１７０，１８０，１９０は、それぞれ２つのコアに接続されており、各コアへのデータの振り分けを行う。具体的には、緩衝制御回路１６０はコア１１１，１１２に接続されている。緩衝制御回路１７０はコア１１３，１１４に接続されている。緩衝制御回路１８０はコア１１５，１１６に接続されている。緩衝制御回路１９０はコア１１７，１１８に接続されている。
【００３５】
各緩衝制御回路１６０，１７０，１８０，１９０は、緩衝バッファを有している。緩衝制御回路１６０，１７０，１８０，１９０は、「BANK0&1」と「BANK2&3」とのデータ転送が競合した場合は、緩衝バッファを用いて待ち合わせ制御を行う。すなわち、緩衝制御回路１６０，１７０，１８０，１９０は、２つのバスを介して入力されたデータが競合すると、一方のデータを緩衝バッファに格納する。入力されたデータが競合する場合とは、例えばバス１０１，１０２を介して２つのキャッシュメモリ制御回路１４０，１５０からほぼ同時に同一のコア１１１宛のデータが入力された場合である。このような場合、コア１１１に接続された緩衝制御回路１６０は、一方のデータは緩衝バッファを介さずにコアに転送し、他方のデータは緩衝バッファに格納する。そして緩衝制御回路１６０は、コアに先に転送したデータの転送終了後に、緩衝バッファに格納したデータをコアに転送する。
【００３６】
このようなマルチコアのＬＳＩ１００では、キャッシュメモリ制御回路１４０，１５０によって各コア１１１〜１１８へのデータ転送が制御される。以下、キャッシュメモリ制御回路１４０，１５０の内部構造について説明する。
【００３７】
図３は、キャッシュメモリ制御回路の内部構造を示す図である。図３には、コア１１１から要求されたデータをキャッシュメモリ制御回路１４０，１５０がコア１１１に送信する回路構成が示されている。
【００３８】
キャッシュメモリ制御回路１４０は、ムーブインポート（MIPORT）１４１、パイプライン制御回路１４２、タグメモリ（ＴＡＧ）１４３、ムーブインバッファ（ＭＩＢ）１４４，１４５、およびムーブインデータキュー（ＭＩＤＱ）１４６，１４７を有している。ムーブインポート１４１は、制御バスでコア１１１に接続されている。ムーブインポート１４１は、コア１１１からの要求を受け付ける回路である。ムーブインポート１４１からの出力はパイプライン制御回路１４２に入力されている。パイプライン制御回路１４２は、リクエストの受信や選択、タグ検索などのパイプライン制御を行う回路である。パイプライン制御回路１４２には、タグメモリ１４３が接続されている。タグメモリ１４３は、データメモリ１２１，１２２に格納されたデータのタグを記憶する回路である。
【００３９】
タグメモリ１４３からの出力は、データメモリ１２１，１２２へのアドレス入力、あるいはムーブインバッファ１４４，１４５への入力となる。ムーブインバッファ１４４，１４５は、タグメモリ１４３を検索した結果、要求されたデータがデータメモリ１２１，１２２に存在しないときに、要求されたデータのメモリアドレスなどを記憶する。またムーブインバッファ１４４，１４５は、主記憶装置からのデータをキャッシュメモリに登録するまでの制御を行う。ムーブインバッファ１４４，１４５に格納されたメモリアドレスは、主記憶装置から読み込むデータのメモリアドレスとして、主記憶制御回路１３１，１３２に対して出力される。
【００４０】
また主記憶制御回路１３１，１３２から出力されたデータは、ムーブインバッファ１４４，１４５とムーブインデータキュー１４６，１４７に入力される。ムーブインデータキュー１４６，１４７は、主記憶装置から読み込んだデータを一時的に格納する回路である。なお、ムーブインバッファ１４４，１４５はパイプライン制御回路１４２に接続されており、主記憶制御回路１３１，１３２からデータが入力されると、格納していたメモリアドレスをパイプライン制御回路１４２に出力する。ムーブインデータキュー１４６，１４７は、主記憶制御回路１３１，１３２から入力されたデータを格納すると、パイプライン制御回路１４２からの指示により、そのデータをデータメモリ１２１，１２２へ書き込むと共にバス１０１とに対して出力する。
【００４１】
キャッシュメモリ制御回路１５０は、ムーブインポート（MIPORT）１５１、パイプライン制御回路１５２、タグメモリ（ＴＡＧ）１５３，１５４、ムーブインバッファ（ＭＩＢ）１５４，１５５、およびムーブインデータキュー（ＭＩＤＱ）１５６，１５７を有している。キャッシュメモリ制御回路１５０内の各要素の機能は、キャッシュメモリ制御回路１４０内の同名の要素と同じである。
【００４２】
次に、以上のような構成のキャッシュメモリ制御回路１４０，１５０に対して、コア１１１からデータリードの要求が出力された場合の処理を説明する。コア１１１から出力された要求には、読み込むべきデータのメモリアドレスが含まれる。以下の例では、要求において「BANK0」のメモリアドレスが指定されているものとする。
【００４３】
キャッシュメモリ制御回路１４０，１５０のそれぞれのムーブインポート１４１，１５１は、コア１１１からの要求を受信する。なおムーブインポート１４１は、「BANK0」、「BANK1」に相当するメモリアドレスを指定した要求のみを受け付け、ムーブインポート１５１は、「BANK2」、「BANK3」に相当するメモリアドレスを指定した要求のみを受け付ける。この例では「BANK0」のメモリアドレスを指定した要求であるため、ムーブインポート１４１が要求を受け付ける。
【００４４】
ムーブインポート１４１は、コア１１１からの要求に応答して、キャッシュメモリ制御回路１４０におけるリード処理を起動する。リード処理は、タグメモリ１４３からメモリアドレスを検索する処理である。リード処理の指示は、パイプライン制御回路１４２に供給される。パイプライン制御回路１４２に供給される指示には、リード対象のデータのメモリアドレスが含まれる。
【００４５】
タグメモリ１４３には、データメモリ１２１，１２２に格納されたデータのタグが格納されている。タグには、データのメモリアドレスとデータの状態とが含まれる。データの状態は、データが有効か否かを示すフラグビットや、格納されたデータが主記憶装置から読み込まれたままか書き換えられたかを示すフラグビットにより示される。
【００４６】
リード指示に示されたメモリアドレスが、タグメモリ１４３に含まれており、データメモリ内の対応するデータが有効である場合、要求されたデータがキャッシュに存在する（キャッシュヒット）と判定される。キャッシュヒットなら、そのデータのメモリアドレスを含むタグに対応するデータメモリ１２１内のアドレス（キャッシュアドレス）が、タグメモリ１４３から出力される。データメモリ１２１から出力されたデータは、バス１０１を介して緩衝制御回路１６０に入力される。
【００４７】
要求されたデータのメモリアドレスが、タグメモリ１４３に含まれていない場合、要求されたデータがキャッシュに存在しない（キャッシュミスヒット）と判定される。また、リード指示に示されたメモリアドレスが、タグメモリ１４３に含まれているが、データメモリ内の対応するデータが無効の場合にも、キャッシュミスヒットと判定される。キャッシュミスヒットなら、ムーブインバッファ１４５を経由して主記憶制御回路１３１にデータが要求される。
【００４８】
ムーブインバッファ１４５は、主記憶装置から読み出すデータのメモリアドレスを記憶する。ムーブインバッファ１４５に格納されたメモリアドレスは、主記憶制御回路１３１に渡される。すると、主記憶制御回路１３１によって、主記憶装置からメモリアドレスに対応するデータが読み出される。読み出されたデータは、主記憶制御回路１３１によってムーブインデータキュー１４６に格納される。データが格納されたことは、ムーブインバッファ１４５に伝えられる。すると、ムーブインバッファ１４５からパイプライン制御回路１４２へ、キャッシュを登録するムーブイン要求（ＭＶＩＮ）が発行される。このムーブイン要求（ＭＶＩＮ）により、タグメモリ１４３に要求されたメモリアドレスが登録される。また、主記憶装置から読み出したデータがムーブインデータキュー１４６から出力され、データメモリ１２１に書き込まれると共に、バス１０１を介して緩衝制御回路１６０に入力される。ムーブイン要求（ＭＶＩＮ）がパイプライン制御回路１４２を流れて要求に応じた処理が完了すると、ムーブインバッファ１４５が解放される。キャッシュメモリ制御回路１４０から緩衝制御回路１６０に入力されたデータは、緩衝制御回路１６０によってコア１１１に出力される。
【００４９】
なお、図３の例では、コア１１１からの要求に応じてデータをコア１１１に送信する構成を示しているが、他のコア１１２〜１１８に対してもバス１０１〜１０４を介してデータを転送できる。その場合、キャッシュメモリ制御回路１４０、１５０は、バス１０１〜１０４を介して送信したデータがどのコア宛のデータなのかを、図示していない制御信号線を介して緩衝制御回路１６０，１７０，１８０，１９０に対して通知する。これにより、各緩衝制御回路１６０，１７０，１８０，１９０は、バス１０１，１０２を介して入力されたデータがどのコアへの転送データなのかを認識できる。
【００５０】
次に、緩衝制御回路１６０の機能を詳細に説明する。
図４は、緩衝制御回路の内部構成を示す図である。緩衝制御回路１６０は、データ入出力回路１６１と待ち合わせ制御回路１６２とを有する。
【００５１】
データ入出力回路１６１は、待ち合わせ制御回路１６２からの指示に従って、バス１０１，１０２から入力されたデータをコア１１１，１１２に転送する。なおデータ入出力回路１６１は、待ち合わせ制御回路１６２から入力されたデータを緩衝バッファに格納すべき旨の指示を受けると、データを内部の緩衝バッファに格納後、所定のタイミングでそのデータをコア１１１，１１２に転送する。
【００５２】
待ち合わせ制御回路１６２は、バス１０１，１０２を介したデータが入力された場合に、そのデータをバッファリングするか、バッファリングをせずにコア１１１，１１２に転送するかを判定する。待ち合わせ制御回路１６２は、判定結果に応じて、データ入出力回路１６１にデータの入出力指示を与える。
【００５３】
次に、データ入出力回路１６１の内部構成について詳細に説明する。
図５は、データ入出力回路の内部構成を示す図である。データ入出力回路１６１は、バス１０１，１０２からの入力データをコア１１１，１１２へ転送もしくは緩衝バッファ３０へ書き込み、および緩衝バッファ３０内に格納されたデータを読み出しコア１１１，１１２へ転送を行う回路構成となっている。
【００５４】
バス１０１から入力される「BANK0&1」の入力データは、３つのＡＮＤ（論理積）回路４１，５１，６１に入力される。また、ＡＮＤ回路４１へは、ＯＲ回路４２の出力信号が入力されている。ＯＲ回路４２には、待ち合わせ制御回路１６２からの２つの制御信号が入力されている。一方の制御信号は、「BANK0&1」のコア１１１宛のデータの緩衝バッファ３０への書き込みを指示する信号である。他方の制御信号は、「BANK0&1」のコア１１２宛のデータの緩衝バッファ３０への書き込みを指示する信号である。
【００５５】
バス１０２から入力される「BANK2&3」の入力データは、３つのＡＮＤ（論理積）回路４３，５３，６３に入力される。また、ＡＮＤ回路４３へは、ＯＲ回路４４の出力信号が入力されている。ＯＲ回路４４には、待ち合わせ制御回路１６２からの２つの制御信号が入力されている。一方の制御信号は、「BANK2&3」のコア１１１宛のデータの緩衝バッファ３０への書き込みを指示する信号である。他方の制御信号は、「BANK2&3」のコア１１２宛のデータの緩衝バッファ３０への書き込みを指示する信号である。
【００５６】
２つのＡＮＤ回路４１，４３の出力信号は、ＯＲ回路４５に入力されている。ＯＲ回路４５の出力信号は、緩衝バッファ３０に入力されている。緩衝バッファ３０は、例えば３２バイトのレジスタを４段に並べた１２８バイトの記憶領域である。緩衝バッファ３０の出力は、ＡＮＤ回路５２，６２に入力される。
【００５７】
ＡＮＤ回路５１には、バス１０１からのデータ入力に加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、「BANK0&1」からデータのコア１１１への転送を指示する信号である。ＡＮＤ回路５２には、緩衝バッファ３０からの出力データに加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、緩衝バッファ３０内のデータのコア１１１への転送を指示する信号である。ＡＮＤ回路５３には、バス１０２からのデータ入力に加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、「BANK2&3」からデータのコア１１１への転送を指示する信号である。
【００５８】
３つのＡＮＤ回路５１〜５３の出力信号は、ＯＲ回路５４に入力されている。ＯＲ回路５４の出力信号は、コア１１１への入力となる。
ＡＮＤ回路６１には、バス１０１からのデータ入力に加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、「BANK0&1」からデータのコア１１２への転送を指示する信号である。ＡＮＤ回路６２には、緩衝バッファ３０からの出力データに加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、緩衝バッファ３０内のデータのコア１１２への転送を指示する信号である。ＡＮＤ回路６３には、バス１０２からのデータ入力に加え、待ち合わせ制御回路１６２からの制御信号が入力されている。この制御信号は、「BANK2&3」からデータのコア１１２への転送を指示する信号である。
【００５９】
３つのＡＮＤ回路６１〜６３の出力信号は、ＯＲ回路６４に入力されている。ＯＲ回路６４の出力信号は、コア１１２への入力となる。
このような回路構成であれば、「BANK0&1」と「BANK2&3」とのどちらか一方のデータをコアへ転送中でも、転送先のコアが異なれば緩衝バッファ３０を介さずにもう一方のデータをコアへ転送可能である。同様に緩衝バッファ３０からの読み出しデータをコアへ転送中でも、入力されたデータの転送先となるコアが異なれば、入力されたデータを直ぐに転送可能である。
【００６０】
なお、図５に示した各種の指示を示す制御信号は、該当する指示が出されていない状態ではオフ（信号がローレベル）であり、該当する指示が出されたときにオン（信号がハイレベル）となる正論理による信号である。
【００６１】
このような回路構成のデータ入出力回路１６１に対して、待ち合わせ制御回路１６２からデータ転送に関する指示が入力されることで、適切なデータ転送が実行される。データ転送指示は、バス１０１，１０２を介して緩衝制御回路１６０にデータが入力されたときに実行される。
【００６２】
図６は、待ち合わせ制御回路のデータ転送指示手順を示すフローチャートである。データ転送指示手順は、バス１０１，１０２に対してデータ入力が行われた際に、入力された各データについて行われる。以下、データ転送指示の対象となるデータを「転送対象データ」とし、図６に示す処理をステップ番号に沿って説明する。
【００６３】
［ステップＳ１１］待ち合わせ制御回路１６２は、転送対象データが入力されたバスとは他のバスに対して先にデータ入力あり、そのデータが転送中か否かを判断する。他のバスからのデータが転送中でなければ、処理がステップＳ１２に進められる。他のバスからのデータが転送中であれば、処理がステップＳ１５に進められる。
【００６４】
［ステップＳ１２］待ち合わせ制御回路１６２は、他のバスからのデータが転送中ではない場合、転送対象データのデータ入力と他のバスからのデータ入力とが同時か否かを判断する。データ入力が同時でなければ、処理がステップＳ１４に進められる。データ入力が同時であれば、処理がステップＳ１３に進められる。
【００６５】
［ステップＳ１３］待ち合わせ制御回路１６２は、転送対象データのデータ入力と他のバスからのデータ入力とが同時の場合、同時に入力された他のデータよりも、転送対象データの方がコアに対する実装距離が遠いか否かを判断する。ここで実装距離とは、ＬＳＩ１００におけるコアとデータメモリとの間を伝搬する信号が通る伝送路の距離である。第２の実施の形態では、実装距離が遠い方のデータメモリからのデータ転送を優先する。そこで転送対象データの方が実装距離が遠ければ、処理がステップＳ１４に進められる。転送対象データの方が実装距離が近ければ、処理がステップＳ１５に進められる。
【００６６】
［ステップＳ１４］待ち合わせ制御回路１６２は、転送対象データが入力されたバスから送信先のコアへの、転送対象データの転送指示をデータ入出力回路１６１に対して出力する。その後、処理が終了する。
【００６７】
［ステップＳ１５］待ち合わせ制御回路１６２は、転送対象データの緩衝バッファ３０への書き込み指示をデータ入出力回路１６１に対して出力する。このとき待ち合わせ制御回路１６２は、緩衝バッファ３０に書き込んだデータの転送先を示す情報を、内部のレジスタやラッチ回路などで保持しておく。
【００６８】
［ステップＳ１６］待ち合わせ制御回路１６２は、先行する他のバスのデータ、または同時に他のバスに入力されたデータ（衝突データ）の転送が終了したか否かを判断する。転送が終了していなければ、ステップＳ１６の処理が繰り返される。転送が終了したら、処理がステップＳ１７に進められる。
【００６９】
［ステップＳ１７］待ち合わせ制御回路１６２は、緩衝バッファ３０内のデータのコアへの転送指示をデータ入出力回路１６１に対して出力する。なお、データの転送先は、ステップＳ１５で保持した情報により判別される。
【００７０】
このように、データ入出力回路１６１に対して待ち合わせ制御回路１６２が指示を与えることで２つのキャッシュメモリ制御回路１４０，１５０から１つのコアへ同時期にデータが送信されても、それらのデータを順番にコアに入力できる。
【００７１】
図７は、「BANK0&1」と「BANK2&3」のデータ入力が同時に行われた場合のデータ入出力を示すシーケンス図である。この例では、２つの入力データの送信先は、共にコア識別番号「CORE0」のコア１１１であるものとする。なお図７における縦線の間隔は、バス１０１，１０２の動作クロックの１サイクルの時間に相当する。
【００７２】
時刻ｔ１に、「BANK0&1」側のデータがバス１０１を介して緩衝制御回路１６０に入力されている。同時に、「BANK2&3」側のデータがバス１０２を介して緩衝制御回路１６０に入力されている。図２に示すように、コア１１１への実装距離は、「BANK2&3」のデータメモリ１２３，１２４の方が遠い。
【００７３】
そこで、待ち合わせ制御回路１６２は、時刻ｔ１において、データ入出力回路１６１に対して「BANK2&3」からのデータのコア１１１への転送指示を出力する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路５３に入力する制御信号をオンにする。これにより、ＡＮＤ回路５３とＯＲ回路５４とを経由して、「BANK2&3」側のデータが優先的（待ち合わせなしで）にコア１１１に転送される。
【００７４】
また、待ち合わせ制御回路１６２は、時刻ｔ１において、「BANK2&3」側のデータ転送が実行中（ビジー状態）になったことにより、データ入出力回路１６１に対して「BANK0&1」のデータの緩衝バッファ３０への書き込みを指示する。すなわち、待ち合わせ制御回路１６２は、ＯＲ回路４２に入力する一方の制御信号をオンにする。これにより、「BANK0&1」側のデータが、ＯＲ回路４２、ＡＮＤ回路４１、ＯＲ回路４５を経由して、緩衝バッファ３０に書き込まれる。
【００７５】
時刻ｔ１から４サイクルの時間経過した時刻ｔ２に、「BANK2&3」側のデータのコア１１１への転送が終了する（「BANK2&3」のビジー状態解消）。すると待ち合わせ制御回路１６２は、データ入出力回路１６１に対して、緩衝バッファ３０内のデータのコア１１１への転送を指示する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路５２に入力する制御信号をオンにする。これにより、緩衝バッファ３０に格納されていた「BANK0&1」側のデータが、ＡＮＤ回路５２、ＯＲ回路５４を経由してコア１１１に転送される。そして、時刻ｔ２から４サイクルの時間経過した時刻ｔ３に、「BANK0&1」側のデータのコア１１１への転送が終了する。
【００７６】
このように「BANK0&1」と「BANK2&3」のデータが同時に転送されるケースでは、コア識別番号が「CORE0」のコア１１１から見て距離が遠い「BANK2&3」のデータは待ち合わせなしでそのまま転送される。また、コア識別番号が「CORE0」のコア１１１から距離が近い「BANK0&1」からのデータは、緩衝バッファ３０へ順番に書き込まれる。これにより、バス１０１，１０２から同時に出力された転送データが、コア１１１に対して「BANK2&3」側のデータ、「BANK0&1」側のデータの順で入力される。
【００７７】
図８は、「BANK0&1」のデータ入力後に続けて「BANK2&3」のデータ入力が行われた場合のデータ入出力を示すシーケンス図である。この例では、２つの入力データの送信先は、共にコア識別番号「CORE0」のコア１１１であるものとする。なお図８における縦線の間隔は、バス１０１，１０２の動作クロックの１サイクルの時間に相当する。
【００７８】
時刻ｔ１１に、「BANK0&1」側のデータがバス１０１を介して緩衝制御回路１６０に入力されている。そこで、待ち合わせ制御回路１６２は、時刻ｔ１１において、データ入出力回路１６１に対して「BANK0&1」からのデータのコア１１１への転送指示を出力する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路５１に入力する制御信号をオンにする。これにより、ＡＮＤ回路５１とＯＲ回路５４とを経由して、「BANK0&1」側のデータのコア１１１への転送が待ち合わせなしで開始される。このデータ転送には、動作クロックで４サイクルの時間がかかる。
【００７９】
時刻ｔ１１から２サイクルの時間経過後の時刻ｔ１２に、「BANK2&3」側のデータがバス１０２を介して緩衝制御回路１６０に入力されている。この時点では、「BANK0&1」側のデータ転送が実行中（ビジー状態）である。そこで、待ち合わせ制御回路１６２は、時刻ｔ１２において、データ入出力回路１６１に対して「BANK2&3」側のデータの緩衝バッファ３０への書き込みを指示する。すなわち、待ち合わせ制御回路１６２は、ＯＲ回路４４に入力する一方の制御信号をオンにする。これにより、「BANK2&3」側のデータが、ＯＲ回路４４、ＡＮＤ回路４３、ＯＲ回路４５を経由して、緩衝バッファ３０に書き込まれる。
【００８０】
時刻ｔ１１から４サイクルの時間経過した時刻ｔ１３に、「BANK0&1」側のデータのコア１１１への転送が終了する（「BANK0&1」のビジー状態解消）。すると待ち合わせ制御回路１６２は、データ入出力回路１６１に対して、緩衝バッファ３０内のデータのコア１１１への転送を指示する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路５２に入力する制御信号をオンにする。これにより、緩衝バッファ３０に格納されていた「BANK2&3」側のデータが、ＡＮＤ回路５２、ＯＲ回路５４を経由してコア１１１に転送される。そして、時刻ｔ１３から４サイクルの時間経過した時刻ｔ１４に、「BANK2&3」側のデータのコア１１１への転送が終了する。
【００８１】
このように「BANK0&1」のデータを４サイクルでコア１１１へ転送後に、緩衝バッファ３０に保持されていた「BANK2&3」のデータが４サイクルで順番に読み出され、同時にコア１１１へ転送される。すなわち、どちらか片方のデータ転送中にもう一方のデータが衝突した場合には、遅れて到着したデータが緩衝バッファ３０へ書き込まれる。
【００８２】
図７，図８に示したように、「BANK0&1」と「BANK2&3」とのデータが同時衝突・ずれ衝突ケースどちらも、コアに設けるインターフェースは１系統であっても、コアに対して２系統のデータ転送が可能となる。
【００８３】
なお、緩衝バッファ３０の記憶容量は、１キャッシュブロックサイズ（データ要求に対する応答で転送されるデータ量）分である。各バス１０１，１０２のデータ転送が連続して発生した場合でも、１キャッシュブロックサイズ分の緩衝バッファ３０で、適切に緩衝制御を行うことができる。
【００８４】
図９は、「BANK0&1」と「BANK2&3」とから「CORE0」と「CORE1」へのデータ転送が連続して行われた場合のデータ入出力を示すシーケンス図である。なお図９における縦線の間隔は、バス１０１，１０２の動作クロックの１サイクルの時間に相当する。
【００８５】
時刻ｔ２１に、「BANK0&1」側から「CORE0」へ送信するデータが、バス１０１を介して緩衝制御回路１６０に入力されている。同時に、「BANK2&3」側から「CORE0」へ送信するデータがバス１０２を介して緩衝制御回路１６０に入力されている。これらのデータの転送手順は、図７に示した通りである。
【００８６】
図９の例では、時刻ｔ２１から４サイクルの時間経過した時刻ｔ２２に、「BANK0&1」側から「CORE1」へ送信するデータがバス１０１を介して緩衝制御回路１６０に入力されている。同時に、「BANK2&3」側から「CORE1」へ送信するデータがバス１０２を介して緩衝制御回路１６０に入力されている。
【００８７】
そこで、待ち合わせ制御回路１６２は、時刻ｔ２２において、データ入出力回路１６１に対して「BANK2&3」からのデータのコア１１２への転送指示を出力する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路６３に入力する制御信号をオンにする。これにより、ＡＮＤ回路６３とＯＲ回路６４とを経由して、「BANK2&3」側のデータが優先的（待ち合わせなしで）にコア１１２に転送される。同時に、「BANK0&1」側から「CORE0」へ送信するデータが、緩衝バッファ３０からコア１１１へ転送される。緩衝バッファ３０からコア１１１へのデータ転送は、ＡＮＤ回路５３、ＯＲ回路５４を経由して行われ、「BANK2&3」からのデータのコア１１２への転送経路とは重複しない。そのため、２つのコア１１１，１１２へのデータ転送を並行して行うことができる。
【００８８】
また、待ち合わせ制御回路１６２は、時刻ｔ２２において、「BANK2&3」側のデータ転送が実行中（ビジー状態）になったことにより、データ入出力回路１６１に対して「BANK0&1」のデータの緩衝バッファ３０への書き込みを指示する。すなわち、待ち合わせ制御回路１６２は、ＯＲ回路４２に入力する一方の制御信号のオン状態を維持する。これにより、「BANK0&1」側のデータが、ＯＲ回路４２、ＡＮＤ回路４１、ＯＲ回路４５を経由して、緩衝バッファ３０に書き込まれる。
【００８９】
ここで、図９の例では、緩衝バッファ３０の記憶容量が１２８バイトであり、キャッシュメモリからコアへのデータ要求（ムーブイン要求）に対する応答で転送されるデータ量が１２８バイトである。また、動作クロックで１サイクル当たりのデータ転送量は３２バイトである。すると、時刻ｔ２２からの１サイクルで緩衝バッファ３０から３２バイトのデータがコア１１１に転送され、緩衝バッファ３０には３２バイト分の空き領域が生じる。その空き領域に、時刻ｔ２２からの１サイクルで「BANK0&1」側のデータの先頭の３２バイトが格納される。その後、１サイクルごとに、緩衝バッファ３０から３２バイト分の出力と、緩衝バッファ３０への３２バイト分の入力とが繰り返される。このように、緩衝バッファ３０が１回当たりの転送データ量と同じサイズの記憶容量を有していれば、図９に示したような連続のデータ転送が発生した場合であっても、緩衝バッファ３０への書き込み待ちを発生させずにすむ。
【００９０】
時刻ｔ２２から４サイクルの時間経過した時刻ｔ２３に、「BANK2&3」側のデータのコア１１２への転送が終了する（「BANK2&3」のビジー状態解消）。すると待ち合わせ制御回路１６２は、データ入出力回路１６１に対して、緩衝バッファ３０内のデータのコア１１２への転送を指示する。すなわち、待ち合わせ制御回路１６２は、ＡＮＤ回路６２に入力する制御信号をオンにする。これにより、緩衝バッファ３０に格納されていた「BANK0&1」側のデータが、ＡＮＤ回路６２、ＯＲ回路６４を経由してコア１１２に転送される。そして、時刻ｔ２３から４サイクルの時間経過した時刻ｔ２４に、「BANK0&1」側のデータのコア１１２への転送が終了する。
【００９１】
このようにして、バス１０１，１０２から同時に出力された転送データが、コア１１１，１１２のそれぞれに対して、「BANK2&3」側のデータ、「BANK0&1」側のデータの順で順番に入力される。
【００９２】
図９に示したように、「BANK0&1」から「CORE0」のコア１１１と「CORE1」のコア１１２へ、「BANK2&3」から「CORE0」のコア１１１と「CORE1」のコア１１２へデータが連続して転送されるケースでは、データ転送の待ち合わせが行われる。待ち合わせにより緩衝バッファ３０に書き込まれたデータは、送信先のコアへの他のデータ転送が終了すると、送信先のコアに転送される。このように２つのコア１１１，１１２で緩衝制御回路１６０を共用しても、緩衝バッファ３０の記憶容量は、１キャッシュブロックサイズで足りる。しかも、緩衝制御回路１６０を１つのコア１１１，１１２で共用したからといって、待ち合わせが多く発生することもない。
【００９３】
また、緩衝バッファ３０への書き込みは、図７のようにデータが同時に衝突したケース・もしくは図８のようにデータがずれて衝突したケースを契機に、データ転送にかかる４サイクルの時間だけ有効となる。緩衝バッファ３０からの読み出しは、同時衝突では優先される遠い方のデータ、ずれ衝突では先行データの転送完了の次のタイミングから４サイクルの時間だけ有効となり、緩衝バッファ３０に書き込まれた順番に読み出され、コアへ転送される。すなわち、緩衝バッファ３０からは先入れ先出しで読み出される。
【００９４】
しかも、図５に示すように、緩衝バッファ３０の書き込みと読み出しの回路が分かれているので、緩衝バッファ３０へ１２８バイトの全データが揃うのを待つ必要がない。また書き込み中と読み出しを同時に行っても、データが混じったり入れ替わったりすることもない。
【００９５】
ところで、図９の例では、「BANK0&1」側と「BANK2&3」側共に、１番目のデータの送信先がコア１１１（「CORE0」）であり、２番目のデータの送信先がコア１１２（「CORE1」）である。そのため、緩衝バッファ３０の記憶容量は、データ要求（ムーブイン要求）に対する応答で転送されるデータ量と同じだけあればよい。もし、図９に示す４つのデータの転送先がすべてコア１１１であるような状況が発生し得るのであれば、緩衝バッファ３０の記憶容量を、要求１回当たりの転送データ量の２倍以上にしておくこともできる。ただし、緩衝バッファ３０の記憶容量を大きくすることは、ＬＳＩ１００の面積の増大につながる。そこで、第２の実施の形態では、キャッシュメモリ制御回路１４０，１５０において、同一コアからの連続する要求の受付を制限する。これにより、緩衝バッファ３０の記憶容量を少なく抑えておくことが可能となる。受付を制限する時間は、例えば、少なくともキャッシュメモリ制御部からコアへのデータ転送に要する時間（バスを占有する時間）とする。本実施の形態では、キャッシュメモリ制御部からコアへのデータ転送に要する時間に対して、緩衝制御回路に接続されたバスの数を乗算した時間を、受付を制限する時間とする。具体的には、４サイクルでデータが転送され、緩衝制御回路に２つのバスが接続されているため、制限する時間は８サイクルとなる。８サイクルの制限時間を設けることで、バスに出力されたデータについて、コアに直接転送することも緩衝バッファ３０に格納することもできないような事態を回避できる。
【００９６】
また、図２に示したように、バス１０１，１０２は、コア１１１，１１２，１１５，１１６へのデータ転送で共用される。そのため、バス１０１，１０２を共用するコア１１１，１１２，１１５，１１６を１つのグループにまとめる。同様に、バス１０３，１０４は、コア１１３，１１４，１１７，１１８へのデータ転送で共用される。そのため、バス１０３，１０４を共用するコア１１３，１１４，１１７，１１８を１つのグループにまとめる。そして、キャッシュメモリ制御回路１４０，１５０は、同一グループへのデータの送出を、データ転送に要する時間（バスを占有する時間）内に１回に制限する。本実施の形態では、４サイクルに１回に制限される。これにより、バス１０１〜１０４上でのデータ転送の競合が防止される。
【００９７】
図１０は、複数のキャッシュメモリ制御回路から同一コアへデータを転送する場合の処理を示すシーケンス図である。図１０には、キャッシュメモリ制御回路１４０，１５０によるパイプライン処理と、緩衝制御回路との動作例が示されている。キャッシュメモリ制御回路１４０，１５０は、同一コア宛のデータ送出は８サイクルに１回に制限している。またキャッシュメモリ制御回路１４０，１５０は、コア１１１，１１２，１１５，１１６を１つのグループ、コア１１３，１１４，１１７，１１８を１つのグループとし、同一グループ内のコア宛のデータ送出は４サイクルに１回に制限している。
【００９８】
なお、２つのキャッシュメモリ制御回路１４０，１５０は独立に動作するため、「BANK0&1」からのデータと「BANK2&3」からのデータが競合することがある。競合した場合にはどちらか一方のデータを緩衝バッファ３０で待ち合わせればよい。また「BANK0&1」→「CORE0」よりも「BANK2&3」→「CORE0」の方が転送距離が長い。そのため、転送にかかるレイテンシが３サイクル多くなっている。
【００９９】
図１０の例では、時刻ｔ３１に、コア１１１から「BANK2」内のデータの読み出しの要求（ＲＥＡＤ）が出力されている。するとキャッシュメモリ制御回路１５０では、時刻ｔ３１から８サイクルの時間経過するまで、コア１１１からのデータ読み出し要求（ＲＥＡＤ）、およびキャッシュを登録するムーブイン要求（ＭＶＩＮ）のパイプライン制御回路１５２への供給が禁止される。また、キャッシュメモリ制御回路１５０では、時刻ｔ３１から４サイクルの時間経過するまで、コア１１１と同じグループの他のコア１１２，１１５，１１６からの要求（ＲＥＡＤ／ＭＶＩＮ）のパイプライン制御回路１５２への供給が禁止される。
【０１００】
時刻ｔ３２に、コア１１１から「BANK0」内のデータの読み出しの要求（ＲＥＡＤ）が出力されている。するとキャッシュメモリ制御回路１４０では、時刻ｔ３１から８サイクルの時間経過するまで、コア１１１からのデータ読み出し要求（ＲＥＡＤ）、およびキャッシュを登録するムーブイン要求（ＭＶＩＮ）のパイプライン制御回路１４２への供給が禁止される。また、キャッシュメモリ制御回路１４０では、時刻ｔ３１から４サイクルの時間経過するまで、コア１１１と同じグループの他のコア１１２，１１５，１１６からの要求（ＲＥＡＤ／ＭＶＩＮ）のパイプライン制御回路１４２への供給が禁止される。
【０１０１】
キャッシュメモリ制御回路１５０では、時刻ｔ３３から４サイクルかけてデータメモリ１２３からデータが読み出される。読み出されたデータは、６サイクルかけてバス１０２で転送され、時刻ｔ３６から４サイクルかけて緩衝制御回路１６０に入力される。入力されたデータは、遅延なしでコア１１１に入力される。
【０１０２】
キャッシュメモリ制御回路１４０では、時刻ｔ３４から４サイクルかけてデータメモリ１２１からデータが読み出される。読み出されたデータは、３サイクルかけてバス１０１で転送され、時刻ｔ３６から４サイクルかけて緩衝制御回路１６０に入力される。
【０１０３】
ここで、キャッシュメモリ制御回路１４０から緩衝制御回路１６０へのデータ入力と、キャッシュメモリ制御回路１５０から緩衝制御回路１６０へのデータ入力とが、共に時刻ｔ３６から開始されており、同時である。緩衝制御回路１６０では、実装距離が長いキャッシュメモリ制御回路１５０からの入力データの転送を優先するため、キャッシュメモリ制御回路１４０から入力されたデータは、緩衝バッファ３０に格納される。その後、緩衝バッファ３０に格納された「BANK0」のデータは、時刻ｔ３８から４サイクルかけてコア１１１に転送される。
【０１０４】
さらに時刻ｔ３６には、コア１１１から「BANK2」内のデータの読み出しの要求（ＲＥＡＤ）が出力され、その１サイクル後の時刻ｔ３７には、コア１１１から「BANK0」内のデータの読み出しの要求（ＲＥＡＤ）が出力されている。「BANK0」→「CORE0」よりも「BANK2」→「CORE0」のレイテンシの方が３サイクル多い。「BANK0」から読み出されたデータの方が先の時刻ｔ４０に緩衝制御回路１６０に入力される。このデータは遅延なくコア１１１に入力される。時刻ｔ４０から２サイクル経過後の時刻ｔ４１に、「BANK2」から読み出されたデータが緩衝制御回路１６０に入力される。このデータは、緩衝バッファ３０に格納された後、時刻ｔ４２から４サイクルかけてコア１１１に入力される。
【０１０５】
このように、同一コア宛のデータ送出が８サイクルに１回、また同一バスを使用するコア同士は４サイクルに１回に制限する。これによって、１キャッシュブロックサイズの緩衝バッファを２コアに対して１つ実装するだけで、２系統のデータ転送をコアの受け口は１系統で行うことが可能である。
【０１０６】
なお、マルチコアのＬＳＩ１００は、コンピュータなどのシステムボードに実装できる。
図１１は、マルチコアのＬＳＩチップを実装したシステムモジュールの例を示す図である。システムモジュール２００には、ＬＳＩ１００に加え、バンクに分けられたメモリ２１１〜２１４が実装されている。各メモリ２１１〜２１４は、システムモジュール２００の主記憶装置である。ＬＳＩ１００で実行されるプログラムの命令や、実行に必要なデータなどがメモリ２１１〜２１４に格納される。
【０１０７】
各メモリ２１１〜２１４には、主記憶装置のバンクに対応付けられている。図１１の例では、メモリ２１１が「BANK0」、メモリ２１２が「BANK1」、メモリ２１３が「BANK2」、メモリ２１４が「BANK3」に対応する。各メモリ２１１〜２１４は、ＬＳＩ１００内のバンク番号が同じ主記憶制御回路１３１〜１３４に接続されている。
【０１０８】
ＬＳＩ１００は、コア１１１〜１１８から要求されたデータが、キャッシュメモリとして使用する内部のデータメモリ１２１〜１２４内に存在しない場合、該当するデータをメモリ２１１〜２１４から取得する。
【０１０９】
以上説明したように、第２の実施の形態に係るＬＳＩ１００では、チップの肥大化を抑制しながら、複数のキャッシュメモリ制御回路１４０，１５０を用いた各コア１１１〜１１８での効率的なデータ取得が可能となる。すなわち、キャッシュメモリ制御回路１４０，１５０を用いた効率的なキャッシュ処理を行いながらも、コアのデータ入力用ポートが１つで済み、ＬＳＩ１００全体の肥大化が抑制される。
【０１１０】
ここで、コア内部でデータの緩衝制御を行う場合と第２の実施の形態のようにコアの外で緩衝制御を行う場合との違いについて説明する。
コア内部でデータの緩衝制御を行う場合、以下のような構成となる。
【０１１１】
コアは、データ要求（ムーブイン要求）の際にＭＩＢを確保し、データが応答されたらそれに対し書き込みを行う。ＭＩＢの数は、１つのコア当たり１２８バイト×１０エントリである。コア内部で緩衝制御するために、コアはＭＩＢに対して２ポートからライトする。２系統から転送されるデータを選択してＭＩＢに書き込む論理回路およびその周辺回路は、エントリごとに設けられる。そのため、図４，図５に示した第２の実施の形態に係る緩衝制御回路１６０よりも複雑な回路にならざるを得ない。このようなコア内部の回路増加がＬＳＩチップのサイズの増大化に及ぼす影響は、コア数が増加するほど大きくなる。
【０１１２】
しかも、データバスは、コアのＭＩＢまで２系統配線しなければならない。配線によるノイズを考慮すると、狭小な領域で２系統の配線は難しい。そのため配線エリアの確保が必要になり、ＬＳＩチップの面積増加の原因となる。
【０１１３】
第２の実施の形態では、図４，図５に示したような比較的簡単な回路で緩衝制御を行うことができ、コア内部で緩衝制御を行う場合よりも、ＬＳＩチップの肥大化を抑制できる。しかも、複数のコアで１つの緩衝制御回路を共用することができるため、ＬＳＩチップに第２の実施の形態に係る緩衝制御回路を追加実装しても、ＬＳＩチップのサイズの肥大化に与える影響は極めて小さい。
【０１１４】
さらに、緩衝制御回路とコアとの間の配線は、１系統でよい。配線が１系統であれば、狭小な領域に２系統の配線を形成する場合のようなノイズの問題が発生せず、狭小な領域での配線が可能となる。
【０１１５】
また、第２の実施の形態によれば、緩衝制御による副作用を最小限に抑えることができる。
まず、緩衝制御回路を持たない場合を考える。この場合、例えば、複数のキャッシュメモリ制御回路がコアへデータ転送を行うためにバスを使用するサイクルを、緩衝制御回路を不要とするだけの十分な長さに設定する。すなわち、コアにおいて衝突が発生しないだけの十分に長い間隔をあけて、データをコアに転送する。十分な間隔を開けることでデータの衝突は生じないが、衝突しないケースでも無駄に待ち合わせをすることとなり、レイテンシは低下する。レイテンシの低下は、ＬＳＩチップの性能低下になる。
【０１１６】
第２の実施の形態では、緩衝制御回路を設けることによってレイテンシの低下が抑制されている。すなわち、第２の実施の形態では、複数のキャッシュメモリ制御回路それぞれがコアにデータを転送する際に、転送されるデータのコアでの衝突の回避を目的とした待ち時間を設ける必要がない。ここでレイテンシは、要求を発行して応答が返されるまでの時間である。そのため、緩衝制御による一部のデータが緩衝バッファに格納された後に転送されたとしても、キャッシュメモリ制御回路から遅延無くデータが出力されている限り、レイテンシの低下とはみなさない。
【０１１７】
なお、第２の実施の形態では、キャッシュメモリ制御回路が緩衝制御回路のバッファリングの能力に合わせて、連続する要求の受け付けを禁止する。具体的には、同一コアからの要求のパイプライン制御回路への投入が、８サイクルに１回に制限される。スループットに関しては、この投入制限が性能低下の要因ともなり得る。しかし、第２の実施の形態では要求されたメモリアドレスの下位ビットによりバンク分けを行っており、万遍なくアクセスが発生すると考えられる。よって片方のデータメモリからのデータ転送に偏るケースは希である。そのため、同一コアからの要求の投入制限による性能低下は微少である。
【０１１８】
以上のことから、第２の実施の形態によれば、性能的な副作用をほとんど起こすことなく、かつチップサイズの増大を最小限に抑制して、複数のキャッシュメモリ制御回路を用いた複数のバンクへの並列のキャッシュによるデータアクセス効率の向上が可能となる。
【０１１９】
ところで上記の第２の実施の形態では、ＬＳＩ１００としてマルチコアＬＳＩの例を示したが、コアが１つだけの場合であっても、コアへのデータ転送の並列化の必要があれば、同様に実現できる。
【０１２０】
また上記の第２の実施の形態では、バンク分けしたキャッシュメモリを有した例であるため、２つのキャッシュメモリ制御回路が異なるバスを介してコアにデータを転送している。しかし、キャッシュメモリ制御回路は、コアからの要求に応答してデータをコアに転送するメモリ制御回路の一例である。例えば、キャッシュメモリを有さずに主記憶装置から取得したデータをコアに転送する場合もある。この場合、主記憶制御回路が、各コアからの連続した要求を禁止する禁止期間の制御を行う。
【０１２１】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１２２】
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  演算を行う演算処理部と、
前記演算処理部からの第１の要求を入力する第１のメモリ制御部と、
前記演算処理部からの第２の要求を入力する第２のメモリ制御部と、
前記第１のメモリ制御部に接続され、前記第１のメモリ制御部の制御により、前記第１の要求に応じた第１のデータを、第１のバスを介して出力する第１のメモリ部と、
前記第２のメモリ制御部に接続され、前記第２のメモリ制御部の制御により、前記第２の要求に応じた第２のデータを、第２のバスを介して出力する第２のメモリ部と、
緩衝バッファ部を有し、前記第１のバスを介して前記第１のメモリ部に接続されると共に、前記第２のバスを介して前記第２のメモリ部に接続され、前記第１のバスを介した前記第１のデータの出力と前記第２のバスを介した前記第２のデータの出力が同一期間に行われる場合、前記第１のデータを前記演算処理部に転送し、前記第２のデータを前記緩衝バッファ部に格納し、前記第１のデータの転送の終了後、前記第２のデータを前記緩衝バッファ部から前記演算処理部に転送する緩衝制御部と、
を有することを特徴とする演算処理装置。
【０１２３】
（付記２）  前記演算処理装置において、
前記緩衝制御部は、前記第１および第２のメモリ部から同時にデータが出力された場合、前記第１および第２のメモリ部のうち、データ転送時間が大きい一のメモリ部からのデータを前記第１のデータとして前記演算処理部に転送し、他のメモリ部からのデータを前記第２のデータとして前記緩衝バッファ部に格納することを特徴とする付記項１記載の演算処理装置。
【０１２４】
（付記３）  前記演算処理装置において、
前記緩衝制御部は、前記第１および第２のバスのうち一のバスを介して出力されたデータを前記演算処理部に転送中に、他のバスからデータが出力された場合、前記他のバスを介して出力されたデータを前記バッファに格納することを特徴とする付記１記載の演算処理装置。
【０１２５】
（付記４）  前記演算処理装置は、前記演算処理部を複数有し、
前記緩衝制御部には、複数の前記演算処理部が接続され、
前記緩衝制御部は、前記第１のメモリ部が前記第１のバスを介して出力した第１のデータと前記第２のメモリ部が前記第２のバスを介して出力した第２のデータを、複数の前記演算処理部に振り分けることを特徴とする付記１記載の演算処理装置。
【０１２６】
（付記５）  前記演算処理装置において、
前記第１のメモリ制御部は、前記演算処理部からの前記第１の要求の処理開始から所定期間、前記演算処理部からの後続の要求の処理を停止することを特徴とする付記１記載の演算処理装置。
【０１２７】
（付記６）  前記演算処理装置において、
前記第１のメモリ制御部は、少なくとも前記緩衝制御部から前記演算処理部への前記第１のデータの転送に要する時間を、前記所定期間とすることを特徴とする付記５記載の演算処理装置。
【０１２８】
（付記７）  前記演算処理装置において、
前記第１のメモリ制御部は、前記緩衝制御部から前記演算処理部への１回のデータ転送に要する時間にバス数を乗算した時間を、前記所定期間とすることを特徴とする付記５記載の演算処理装置。
【０１２９】
（付記８）  前記演算処理装置において、
前記緩衝制御部が有する前記バッファ部は、データ転送１回当たりのデータ量に相当する記憶容量であることを特徴とする付記１記載の演算処理装置。
【０１３０】
（付記９）  前記演算処理装置は、前記演算処理部を複数有し、
前記第１および第２のバスには、それぞれ複数の前記演算処理部が接続され、
前記第１および前記第２のメモリ制御部は、複数の前記演算処理部の１つから前記要求を受け付けると、前記要求を出力した前記演算処理部と同じバスに接続された前記演算処理部からの前記要求の受け付けを、所定期間だけ停止することを特徴とする付記１記載の演算処理装置。
【０１３１】
（付記１０）  前記第１のメモリ制御部は、前記緩衝制御部から前記演算処理部への１回のデータ転送に要する時間を、前記所定期間とすることを特徴とする付記９記載の演算処理装置。
【０１３２】
（付記１１）  演算を行う演算処理部を有する演算処理装置のデータ転送方法において、
前記演算処理装置が有する第１のメモリ制御部が、前記演算処理部からの第１の要求を入力するステップと、
前記演算処理装置が有する第２のメモリ制御部が、前記演算処理部からの第２の要求を入力するステップと、
前記第１のメモリ制御部に接続された第１のメモリ部が、前記第１のメモリ制御部の制御により、前記第１の要求に応じた第１のデータを、第１のバスを介して出力するステップと、
前記第２のメモリ制御部に接続された第２のメモリ部が、前記第２のメモリ制御部の制御により、前記第２の要求に応じた第２のデータを、第２のバスを介して出力するステップと、
前記演算処理装置が有する緩衝制御部が、前記第１のバスを介して前記第１のメモリ部に接続されると共に、前記第２のバスを介して前記第２のメモリ部に接続され、前記第１のバスを介した前記第１のデータの出力と前記第２のバスを介した前記第２のデータの出力が同一期間に行われる場合、前記第１のデータを前記演算処理部に転送し、前記第２のデータを前記緩衝バッファ部に格納し、前記第１のデータの転送の終了後、前記第２のデータを緩衝バッファ部から前記演算処理部に転送するステップと、
を有することを特徴とするデータ転送方法。
【０１３３】
（付記１２）  前記データ転送方法において、
前記緩衝制御部は、前記第１および第２のメモリ部から同時にデータが出力された場合、前記第１および第２のメモリ部のうち、データ転送時間が大きい一のメモリ部からのデータを前記第１のデータとして前記演算処理部に転送し、他のメモリ部からのデータを前記第２のデータとして前記緩衝バッファ部に格納することを特徴とする付記１１記載のデータ転送方法。
【０１３４】
（付記１３）  前記データ転送方法において、
前記緩衝制御部は、前記第１および第２のバスのうち一のバスを介して出力されたデータを前記演算処理部に転送中に、他のバスからデータが出力された場合、前記他のバスを介して出力されたデータを前記バッファに格納することを特徴とする請求項１１記載のデータ転送方法。
【０１３５】
（付記１４）  前記データ転送方法において、
前記演算処理装置は、前記演算処理部を複数有し、
前記緩衝制御部には、複数の前記演算処理部が接続され、
前記緩衝制御部は、前記第１のメモリ部が前記第１のバスを介して出力した第１のデータと前記第２のメモリ部が前記第２のバスを介して出力した第２のデータを、複数の前記演算処理部に振り分けることを特徴とする付記１１記載のデータ転送方法。
【０１３６】
（付記１５）  前記データ転送方法において、
前記第１のメモリ制御部は、前記演算処理部からの前記第１の要求の処理開始から所定期間、前記演算処理部からの後続の要求の処理を停止することを特徴とする付記１１記載のデータ転送方法。
【０１３７】
（付記１６）  前記データ転送方法において、
前記第１のメモリ制御部は、少なくとも前記緩衝制御部から前記演算処理部への前記第１のデータの転送に要する時間を、前記所定期間とすることを特徴とする請求項１５記載のデータ転送方法。
【符号の説明】
【０１３８】
１０  演算処理装置
１１  演算処理部
１２  第１のバス
１３  第２のバス
１４  第１のメモリ部
１５  第２のメモリ部
１６  第１のメモリ制御部
１７  第２のメモリ制御部
１８  緩衝制御部
１８ａ  緩衝バッファ部
２１  第１のデータ
２２  第２のデータ
【図１】
2011028343.tif 000003
【図２】
2011028343.tif 000004
【図３】
2011028343.tif 000005
【図４】
2011028343.tif 000006
【図５】
2011028343.tif 000007
【図６】
2011028343.tif 000008
【図７】
2011028343.tif 000009
【図８】
2011028343.tif 000010
【図９】
2011028343.tif 000011
【図１０】
2011028343.tif 000012
【図１１】
2011028343.tif 000013