(57)【要約】【課題】アクセラレータが使用するローカルメモリに対するデータの入れ替え処理のオーバヘッドを大幅に低減し、アクセラレータによる演算処理を高速化する。【解決手段】ローカルメモリ５を複数バンク５ａ〜５ｃに分割し、各バンクを切り替えて使用し、アクセラレータ３のコンフィギュレーションは変更せずに別のバンクをアクセス可能とする。コンフィギュレーションがプログラムの場合は演算の終了時に、この切り替えのタイミングが発生する。アクセラレータ３の状態を示す機能レジスタにどのバンクをＣＰＵが使用しているかの情報を保持し、使用中であればアクセラレータ３は実行を保留し、使用しなくなり次第割り当てられたバンクで起動する。各バンクはアクセラレータ３の機能レジスタの情報に基づいて演算器と結びつけられる。演算の切れ目でバンクの切り替えを発生させ、演算器と結びつくバンクを別のものに切り替える。【選択図】図１
2011118744.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するローカルメモリと、
データを格納する外部メモリと、
前記ローカルメモリに格納されたデータの演算を行い、その演算結果を前記ローカルメモリに格納する演算シーケンスを実行するアクセラレータと、
前記ローカルメモリおよび前記外部メモリに格納されたデータを処理する中央処理装置とを備え、
前記ローカルメモリは、複数のバンクに分割された構成からなり、
前記中央処理装置は、前記複数のバンクのそれぞれに対し、異なるメモリアドレスによってアクセスし、
前記アクセラレータは、前記複数のバンクのうち、アドレス指定された第１のバンクのみにアクセスすることを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記アクセラレータは、
前記複数のバンクのそれぞれの使用可能状態を示すデータを格納する状態格納部を備え、前記状態格納部に格納されたデータに基づいて、前記第１のバンクのうちの１つのバンクにアクセスすることを特徴とする情報処理装置。
【請求項３】
請求項２記載の情報処理装置において、
前記アクセラレータは、
前記ローカルメモリのバンクを切り替えるバンク切り替え命令を出力するバンク選択部を備え、
前記バンク選択部は、
前記アクセラレータが、第１の演算処理から次の第２の演算処理に遷移する際に、コマンドに基づいて、前記バンク切り替え命令を出力し、前記ローカルメモリのバンクを前記第１の演算処理の際にアクセスしていたバンクと異なるバンクに切り替えることを特徴とする情報処理装置。
【請求項４】
請求項３記載の情報処理装置において、
前記アクセラレータは、
前記バンク選択部により、前記ローカルメモリのバンクが切り替えられても、切り替えられた前記ローカルメモリのバンクに対して前記演算シーケンスを実行することを特徴とする情報処理装置。
【請求項５】
請求項２〜４のいずれか１項に記載の情報処理装置において、
前記中央処理装置は、
前記アクセラレータがアクセスしていない前記ローカルメモリのバンクと、前記外部メモリとの間で、データを転送することを特徴とする情報処理装置。
【請求項６】
請求項５記載の情報処理装置において、
前記アクセラレータは、
前記ローカルメモリのバンクが３以上に分割されている場合、前記アクセラレータがアクセスしていない前記バンクに対して優先順位を付与する優先順位情報を格納するバンク優先度テーブルを備え、
前記バンク選択部は、
前記バンク優先度テーブルに格納されている優先順位情報に基づいて、優先順位の小さい順、または優先順位の大きい順に、前記アクセラレータがアクセスする前記ローカルメモリのバンクを切り替えることを特徴とする情報処理装置。
【請求項７】
請求項５記載の情報処理装置において、
前記アクセラレータは、
前記ローカルメモリのバンクが使用可であるか、不可であるかを示すバンク使用可能情報を保持する可能情報格納部を備え、
前記アクセラレータは、
前記可能情報格納部に格納されている使用可能情報が使用可能であることを示す情報であれば実行状態となり、使用不可の状態を示していれば実行を保留し、前記可能情報格納部の使用可能情報が使用可を示す情報に遷移した際に実行を再開することを特徴とする情報処理装置。
【請求項８】
請求項７記載の情報処理装置において、
前記アクセラレータが前記ローカルメモリのバンクに対して発行するアクセス要求を調停するアクセス調停部を備え、
前記アクセス調停部は、
前記ローカルメモリのバンクが前記アクセラレータによって使用されている際に、前記中央処理装置からのアクセス要求を待ち状態とすることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその装置上で動作するソフトウェアによって構成されるシステムに関し、特に、アクセラレータにおける演算処理の高速化に有効な技術に関する。
【背景技術】
【０００２】
一般に、情報処理装置などの電子システムにおいては、マルチメディア処理やグラフィックス、暗号処理などを実行する場合、通常のＣＰＵ（Central Processing Unit）の外部にあるアクセラレータと呼ぶ専用のハードウェアやプロセッサを用いることにより、必要な性能を確保することが知られている。
【０００３】
このようなアクセラレータによる実行においては、ＣＰＵとアクセラレータとで演算に必要なデータをどのようにしてやり取りするかが重要になる。アクセラレータは高速に演算を実行できるので、その演算のデータを次々にアクセラレータに供給してアクセラレータが必要なデータが揃うのを待って演算実行が中断状態になることをできるだけ避けることが必要である。
【０００４】
これに対処するため、アクセラレータは一般に演算を行うためのデータをローカルメモリと呼ぶ領域に置くようにする。ローカルメモリはアクセラレータが高速にアクセスすることを考慮して配置された専用のメモリである。
【０００５】
そして、ローカルメモリを複数バンクによる構成とすることが一般的に行われている。この種のアクセラレータにおけるローカルメモリの構成については、たとえば、アクセラレータであるスレーブプロセッサのローカルメモリを４バンク構成にするもの（特許文献１参照）やアクセラレータにあたるスレーブプロセッサが４つのバンクからなるローカルメモリを備え、スレーブプロセッサのコマンド列ごとに独立してローカルメモリを使用し、スレーブプロセッサとＤＭＡ（Direct Memory Access）コントローラを並列動作させるもの（特許文献２参照）などが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２０８４１２号公報
【特許文献２】特開２００８−１０２５９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、上記のようなアクセラレータにおけるメモリ動作技術では、次のような問題点があることが本発明者により見出された。
【０００８】
アクセラレータは、プログラムや演算器の配置構成とデータパス（以下、これらをまとめてコンフィギュレーションと呼ぶ）に従って動作して、ローカルメモリにあるデータに対して高速に演算を行い、演算結果を再びローカルメモリに書き込むという動作を行う。
【０００９】
そして、ＣＰＵはローカルメモリにある演算結果の値を自分のメモリに転送して利用することになる。ここで、アクセラレータの演算機構が演算可能であるにもかかわらず必要なデータがローカルメモリに入っていなければ、アクセラレータの実行は中断しなければならず、また、アクセラレータがローカルメモリに書き込んでいる時、その部分はＣＰＵからはアクセスできないので、ＣＰＵに転送できるようになるまで待ち時間が生じることになり、演算データの転送時のオーバヘッドが大きくなるという問題がある。
【００１０】
本発明の目的は、アクセラレータの実行状態を切り替えるときにローカルメモリに対するデータの入れ替え処理のオーバヘッドを大幅に低減し、アクセラレータによる演算処理を高速化することのできる技術を提供することにある。
【００１１】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１３】
本発明は、ローカルメモリを複数バンクに分割した構成とし、それらのバンクを切り替えて使用するとともに、アクセラレータのプログラムやコンフィギュレーションは変更せずに、別のバンクをアクセスできるようにする。コンフィギュレーションが通常のプログラムである場合は演算の終了時に、また、コンフィギュレーションが演算器の配置構成である場合は一つの配置構成において演算が終了した時点で、この切り替えのタイミングが発生する。このバンクを「切り替える／切り替えない」をプログラム可能にする。
【００１４】
さらに、本願のその他の発明の概要を簡単に示す。
【００１５】
アクセラレータの状態を示すレジスタ（状態格納部）に、バンクの使用可能フラグとして現在のコンフィギュレーションにおいてどのバンクのローカルメモリをＣＰＵ（中央処理装置）が使用しているかの情報を保持し、ＣＰＵが使用中であればＯＦＦ、使用中でなければＯＮとなるようにして、バンク切り替え時に対象バンクがＯＦＦであればアクセラレータは実行を保留して起動待ち状態になり、ＯＮになり次第割当てられたバンクで起動するようにする。各バンクはアクセラレータの機能レジスタで示される状態にしたがって演算器と結びつけられる（有効バンクが結びつく）。
【００１６】
この機構により、演算シーケンスの切れ目でバンクの切り替えを発生させることができ、演算器と結びつくバンクを別のものに設定できる。また、ローカルメモリが３バンク以上ある場合は、バンク切り替え時に、アクセラレータが使用しないバンクの優先順位を設定でき、高順位のバンクに切り替わるようにする。
【００１７】
ローカルメモリの各バンクは、通常のメモリのアドレスとして別々のアドレスが付与されており、ＣＰＵや外部のメモリ転送機構（ＤＭＡコントローラ）などからは上記アドレスによって独立してアクセスでき、設定や参照が可能であるようにする。
【００１８】
これらにより、バンクが切り替わってもアクセラレータがローカルメモリにアクセスするコードは同じにすることができ、アクセラレータと結びついていないバンク（待機バンク）と外部メモリとの間でデータ転送を自由に行えるので、ＣＰＵからはすべてのローカルメモリのバンクが異なるアドレスによってアクセスされる。
【００１９】
また、コンパイラなどのソフトウェアによって制御し易くでき、複数のバンクを制御できれば転送オーバヘッドを削減できる。さらに、ローカルメモリと外部メモリの転送はＤＭＡコントローラを使用してバックグラウンドに実行できる。
【００２０】
バンク使用可能フラグ（バンク使用可能情報）がＯＮ（使用可）でなければ、アクセラレータの実行を保留し、ＯＮになると実行開始するので、アクセラレータはバンクの使用状態に関わらずに演算を行うことができる。
【発明の効果】
【００２１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２２】
（１）ローカルメモリに対するデータの入れ替え処理のオーバヘッドを大幅に低減することができる。
【００２３】
（２）上記（１）により、情報処理装置における演算処理を高速化することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施の形態による電子システムにおける構成の一例を示すブロック図である。
【図２】図１におけるローカルメモリをアクセラレータから見たときの構成の一例を示す説明図である。
【図３】図１の電子システムに設けられたアクセラレータに対するコマンド形式の一例を示す説明図である。
【図４】図１のアクセラレータにおいて処理するストリームデータの一例を示す説明図である。
【図５】図１の電子ステムにおいてＣＰＵからローカルメモリへのアクセス例を示す説明図である。
【図６】図１の電子システムに設けられたローカルメモリにおけるバンク配置の一例を示す説明図である。
【図７】本発明の一実施の形態によるローカルメモリへのデータ書き込み／読み出し、およびアクセラレータの実行処理の一例を示すフローチャートである。
【図８】図７の他の例を示すフローチャートである。
【図９】図８の他の例を示すフローチャートである。
【図１０】ローカルメモリアクセス機構による優先度によるローカルメモリのバンク切り替えの一例を示す説明図である。
【図１１】フィールド切り出し機構によるバンク優先度テーブルへの優先度の設定の一例を示す説明図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２６】
図１は、本発明の一実施の形態による電子システムにおける構成の一例を示すブロック図、図２は、図１におけるローカルメモリをアクセラレータから見たときの構成の一例を示す説明図、図３は、図１の電子システムに設けられたアクセラレータに対するコマンド形式の一例を示す説明図、図４は、図１のアクセラレータにおいて処理するストリームデータの一例を示す説明図、図５は、図１の電子ステムにおいてＣＰＵからローカルメモリへのアクセス例を示す説明図、図６は、図１の電子システムに設けられたローカルメモリにおけるバンク配置の一例を示す説明図、図７は、本発明の一実施の形態によるローカルメモリへのデータ書き込み／読み出し、およびアクセラレータの実行処理の一例を示すフローチャート、図８は、図７の他の例を示すフローチャート、図９は、図８の他の例を示すフローチャート、図１０は、ローカルメモリアクセス機構による優先度によるローカルメモリのバンク切り替えの一例を示す説明図、図１１は、フィールド切り出し機構によるバンク優先度テーブルへの優先度の設定の一例を示す説明図である。
【００２７】
本実施の形態おいて、電子システム１は、たとえば、マルチメディア処理やグラフィックス、暗号処理などを実行する情報処理装置からなる。電子システム１は、図１に示すように、ＣＰＵ２、アクセラレータ３、外部メモリ４、ローカルメモリ５、ＤＭＡコントローラ６、およびアクセス調停機構７などから構成される。
【００２８】
外部メモリ４は、中央処理装置であるＣＰＵ２、およびアクセラレータ３からアクセスされるメモリであり、ＤＭＡコントローラ６は、外部メモリ４やローカルメモリ５の間でデータ転送を行う。
【００２９】
アクセラレータ３とローカルメモリ５とは、ローカルバスＢ１を介して接続されており、ＣＰＵ２とアクセラレータ３とは、ローカルバスＢ２を介して接続されている。
【００３０】
また、ＣＰＵ２、ＤＭＡコントローラ６、外部メモリ４、ローカルメモリ５、ならびにアクセス調停部であるアクセス調停機構７は、ローカルバスＢ３を介して相互に接続されている。さらに、アクセス調停機構７とアクセラレータ３とは、ローカルバスＢ４を介して接続されている。
【００３１】
アクセラレータ３は、ＣＰＵ２から起動されると、それ自身のプログラムであるコマンド列を実行する。この形式にはいろいろのものがあり、ＣＰＵから逐次コマンドを制御レジスタに設定されて動作するもの、また専用のコマンド領域にコマンド列を保持して、それをアクセラレータ自身がＣＰＵとは非同期に連続的に実行するものなどがある。
【００３２】
コマンド自体についても、加算命令や転送命令などのようなものから、ＦＰＧＡや再構成プロセッサの演算器の配置構成を定義するものもある。コマンド列の保持場所についても、アクセラレータの専用メモリやＣＰＵと共有する外部メモリなどがある。
【００３３】
本実施の形態では、アクセラレータ３は、ＣＰＵ２から、該アクセラレータ３内の制御レジスタ８に特別の値を書き込まれて起動されると、アクセラレータ３自身が共有の外部メモリ４に配置されているコマンド列ＣＭＤを順次取り込んで、それにしたがって動作するものとする。
【００３４】
図２は、ローカルメモリ５をアクセラレータ３から見たときの構成の一例を示すものである。ここで、ローカルメモリ５は、バンク５ａ、バンク５ｂ、およびバンク５ｃの３つのバンクによって構成されている。
【００３５】
アクセラレータ３において、演算部３ａは、ローカルメモリアクセス機構９によってローカルメモリ５の要素をアクセスする。これは、ＣＰＵ２（図１）がアドレスによって外部メモリ４をアクセスするのと同じ方法であり、本実施の形態では、１６ビットのローカルメモリアドレスＡｄｄｌｍにより１語を４バイトとして６４キロバイトのローカルメモリ５をアクセスする。
【００３６】
アクセラレータ３に対するコマンドの形式は種々考えられるが、ここでは、図３に示すように、アクセラレータ３に対する命令語が外部メモリ４内に順次格納されているものとする。
【００３７】
その命令語は、加算やデータのロードなどの演算操作を示す演算名称部１０とその演算が適用される一つまたは複数の演算項部１１とからなる。アクセラレータ３の演算部３ａは、この命令語の開始アドレスを指定して起動されると、自身でこの順次配置された命令語を解釈実行する。
【００３８】
図２において、３つのバンク５ａ〜５ｃは、そのうちの１つが有効バンク（第１のバンク）としてアクセラレータからアクセス可能である。これは、ローカルメモリアクセス機構９に設けられているバンク選択機構９ａによって、演算部３ａから出力されたローカルメモリアドレスＡｄｄｌｍの一部が変更されて、ローカルメモリ５に与えられ、各バンクとのデータ信号線Ｌ１，Ｌ２，Ｌ３の１つがローカルメモリアドレスＡｄｄｌｍに基づいて選択されるからである。
【００３９】
バンク選択部となるバンク選択機構９ａは、コマンドである命令語によって制御され、バンクを切り替えるためのバンク切り替え命令が用意されている。本実施の形態では、図３における「バンク切り替え」の演算を指定する演算操作１２によって、図２において、現在、ローカルメモリ５のバンク５ａが有効であるときに、アクセラレータ３がバンク切り替え命令を実行すると、バンク５ａに結びつけられているデータ信号Ｌ１がバンク５ｂからのデータ信号Ｌ２に切り替わってアクセラレータ３の演算部３ａに結び付けられ、有効バンクの切り替えが生じる。
【００４０】
ここで、切り替え時に選択されるバンク５ａ〜５ｃは、直接指定することもできるし、「優先度の高いバンクに指定する」こともできる。本実施の形態では、後述するように、ローカルメモリアクセス機構９に備えられているバンク優先度テーブル９ｂによって優先度の高いバンクが選択されて切り替えるものとする。
【００４１】
上記により、アクセラレータ３の演算部３ａがローカルメモリ５にアクセスする場合、コマンド系列は同じで、常に有効なバンクに対するアクセスとなり、有効なバンクが他のバンクに切り替えられてもアクセスするコードは同一とできる。
【００４２】
本実施の形態でアクセラレータ３の演算部３ａが行うべき演算は、４Ｂ（１語）の整数データが２６２１４４個からなる１ＭＢサイズの配列の各要素にそれぞれ関数「ｆ」を作用させるものであるとし、図３の形式でメモリ内にｆの機能を実現するコマンド列が配置されている。
【００４３】
図４のように４Ｂ（１語）のデータが連続するデータストリームＤＳがあり、そのサイズが１ＭＢとすると、転送操作１で最初の０〜６４ＫＢ分のデータＤ１をローカルメモリ５のバンク５ａに転送してアクセラレータ３で演算し、演算実行後、さらに転送操作２で次の６４〜１２８ＫＢ分のデータＤ２をローカルメモリ５のバンク５ｂに転送し、その演算実行後、転送操作３で、その次の１２８〜１９６ＫＢ分のデータＤ３をローカルメモリ５のバンク５ｃに転送し、アクセラレータ３で演算実行する。
【００４４】
図３のコマンド列では、実行すべき機能を６５５３６個の４Ｂ（１語）の整数データからなる配列の各要素にそれぞれ関数「ｆ」を作用させるものであるとし、このコマンドの最後に「バンク切り替え」操作を行って、このコマンドの先頭に戻るように配置されている。
【００４５】
したがって、バンク５ａにある最初の０〜６４ＫＢ分のデータに対するアクセラレータ３での演算が終了すると、バンク切り替え命令によりアクセラレータ３が使用するバンクは、次の６４〜１２８ＫＢ分のデータを保持するバンク５ｂになる。
【００４６】
ここで、ｆのコマンド列は同一であるが、アクセスすべきローカルメモリ５のバンクが変更されることになる。同様に、６４〜１２８ＫＢ分のデータを終了すると、バンク切り替え命令によりアクセラレータ３が使用するバンクは、その次の１２８〜１９６ＫＢ分のデータを保持するバンク５ｃになる。
【００４７】
次に、図５を用いてＣＰＵ２からローカルメモリ５にアクセスする技術について説明する。
【００４８】
アクセラレータ３は、アクセス調停機構７に対して、該アクセラレータ３が使用しているローカルメモリ５のバンクを設定する。これは図２のバンク選択機構９ａにおいて、アクセラレータ３が使用中と指定しているバンクに対するアドレス範囲をこの調停機構に登録することによって行う。
【００４９】
ＣＰＵ２からそのアドレス範囲に対してアクセスが発生すると、図５において、ローカルバスＢ３に出されたＣＰＵ２からのアクセス要求はアクセス調停機構７によって保留とされ、該ＣＰＵ２からのアクセスは実行されずに保留される。
【００５０】
バスのアクセスにおけるこの調停処理は公知の技術として通常に行われているものである。バンクの切り替えが発生して、そのバンクを使用しなくなると、上記のアドレス範囲を使用可としてアクセス調停機構７に登録する。
【００５１】
逆に、先にＣＰＵ２から外部メモリアドレスによって使用されていて該ＣＰＵ２がアクセス中のバンクに対しては、アクセス調停機構７は、アクセスするアドレスがローカルメモリ５のアドレス範囲に属しており、かつそのアクセス要求が受理されたら、同時に、ローカルメモリアクセス機構９に設けられている機能レジスタ９ｃに設定されるローカルメモリ５のバンクに対応するバンク使用可能情報となるバンク使用可能フラグをＯＦＦに設定する。
【００５２】
バンク切り替えによってアクセラレータ３が、そのバンクにアクセスしようとすると、状態格納部、および可能情報格納部となる機能レジスタ９ｃに設定されているバンク使用可能フラグがＯＦＦであるため、アクセラレータ３は、実行保留状態となる。
【００５３】
この実行保留状態は、例えば通常のＣＰＵ２においてはスリープ状態として知られた状態にすることで実現でき、このアクセラレータ３に供給するクロック信号を停止することによって実行する。
【００５４】
ＣＰＵ２からみると、ローカルメモリ５の各バンク５ａ〜５ｃはそれぞれ別のアドレスが割り付けられており、ＣＰＵ２からはそのアドレスで外部メモリ４の一部と見なされ、外部メモリとしてアクセスできる。
【００５５】
図６では、ローカルメモリ５のバンク５ａがアドレスｘＡ００００００から配置され、バンク５ｂがアドレスｘＡ０１００００からの領域に、バンク５ｃがアドレスｘＡ０２００００からの領域に、と連続して配置されていることを示すものである。ＣＰＵ２やＤＭＡコントローラ６からは、上記のアドレスを用いてローカルメモリのすべてのバンクにアクセスすることが可能である。
【００５６】
アクセラレータ３が使用しているバンクに対してアクセス要求が出された場合、上述したアクセス調停機構７によってそのアクセスは待ち状態になるが、アクセラレータ３が使用していないバンクについては、通常のメモリと同様にアドレス付けされており、ＣＰＵ２、もしくはＤＭＡコントローラ６から自由にアクセスすることができる。
【００５７】
本実施の形態において、アクセラレータ３は、ローカルメモリ５の３つのバンク５ａ〜５ｃにあるデータを順次読み出し、これに関数ｆを作用させて結果を再度同じローカルメモリ５のバンクに書き出す。
【００５８】
この操作を１つのバンクのローカルメモリの全データ６４ＫＢ分に行うためにＴ時間を要するものとする。また、ＣＰＵ２の指定によりＤＭＡコントローラ６が外部メモリ４からローカルメモリ５の１つのバンクに６４ＫＢのデータを書き込むのに要する時間をＴＷ、ローカルメモリ５の１つのバンクから外部メモリ４へ６４ＫＢのデータを読み出すのに要する時間をＴＲとする。
【００５９】
図７〜図９において、ローカルメモリ５へのデータ書き込みとアクセラレータ３の実行、ローカルメモリ５からの結果データの読み出しの模様を所要時間によって場合分けし、タイミングチャートとして示す。
【００６０】
はじめに、ＴとＴＲ＋ＴＷがほぼ等しい場合について、図７を用いて説明する。
【００６１】
まず、ＣＰＵ２は、ローカルメモリ５のバンク５ａにＤＭＡ転送により外部メモリ４から６４ＫＢ分のデータを転送し、書き込む（ステップＳ１０１）。
【００６２】
次に、ＣＰＵ２は、アクセラレータ３に起動をかける。ここで、アクセラレータ３に対するコマンド列は予め外部メモリ４に設定されているものとする。アクセラレータ３は、図３に示すコマンド列１３にしたがって関数ｆを実行し、バンク５ａからデータを読み出して演算し（ステップＳ１０２）、同じくバンク５ａに結果を設定する。
【００６３】
アクセラレータ３が実行対象とするデータは、ローカルメモリ５のバンク５ａに存在するので、アクセラレータ３は、即時に演算することができる。
【００６４】
このとき、ＣＰＵ２は、アクセラレータ３の演算動作と並行して、バンク５ｂに６４ＫＢ分の次のデータを書き込む（ステップＳ１０３）。すなわち、ＣＰＵ２は、アクセラレータ３に起動をかけた後、バンク５ｂに転送を行い、この操作とアクセラレータ３での演算とが同時に進行する。
【００６５】
アクセラレータ３は、最初の６４ＫＢ分が終了した段階で、バンク切り替え命令を実行する。本実施の形態では、コマンド列が設定型であり、バンクの設定切り替え命令が実行される。
【００６６】
このとき、アクセラレータ３が使用するバンクは、バンク５ｂに切り替わる。そしてコマンド列はこれまでと同じで、バンク５ｂ内のデータに対して関数ｆが実行される（ステップＳ１０４）。
【００６７】
このとき、このｆの実行（ステップＳ１０４の処理）と並行して、ＣＰＵ２は、アクセラレータ３から解放されたバンク５ａから外部メモリ４にＤＭＡ転送によって演算が終了した結果データを読み出す（ステップＳ１０５）。
【００６８】
それに続いて、バンク５ｃに次の６４ＫＢ分のデータを書き込む（ステップＳ１０６）。この様子を、図７のステージ（ｂ）に示す。バンク５ａからの読み出しとアクセラレータ３の実行、アクセラレータ３の実行とバンク５ｃへの書き込みは同時に実行することができる。
【００６９】
以降、１ＭＢのデータが終了するまで、バンクをバンク５ａ→バンク５ｂ→バンク５ｃ→バンク５ａと切り替えながら、６４ＫＢずつでローカルメモリ５への転送とアクセラレータ３での演算とがパイプライン的に実行される。
【００７０】
ここで、ＣＰＵ２がローカルメモリ５のアドレスを切り替えて、それぞれにデータを書き込み、また読み出す順序は、コンパイラなどの制御ソフトウェアによって指定することができる。
【００７１】
次に、ＴがＴＲ＋ＴＷより大きい場合について、図８を用いて説明する。
【００７２】
この場合、上述したＴとＴＲ＋ＴＷがほぼ等しい場合と同様の動作状態となるが、図８のステージ（ａ）に示すように、バンク５ａでのアクセラレータ３の演算（ステップＳ２０１）が終了した段階でバンク５ｂへの書き込み（ステップＳ２０２）は終了しており、バンク５ａから結果データの外部メモリ４への読み出し（ステップＳ２０３）を行うことができる。
【００７３】
ステップＳ２０２の処理が終了すると、アクセラレータ３の実行終了時まで次のデータ転送はできないが、この時間はコンパイラなどのソフトウェアによって制御することも可能であるし、アクセラレータ３が実行中でバンク５ｂへの書き込み中であれば、アクセス調停機構７によってバンク５ｂからのメモリ転送は保留される。
【００７４】
次に、ＴがＴＲ＋ＴＷより小さい場合について、図９を用いて説明する。
【００７５】
図９のステージ（ｂ）において、ＣＰＵ２は、アクセラレータ３の演算が終了するまで、バンク５ａに対する読み出しを行うことはできない。この期間にＣＰＵ２からバンク５ａに対してアクセス要求があれば、待ち状態となる。
【００７６】
バンク５ａの読み出し（ステップＳ３０１）とバンク５ｂに対するアクセラレータ３の演算（ステップＳ３０２）は同時に実行され、バンク５ａの読み出し（ステップＳ３０１の処理）終了後に、バンク５ｃへの書き込み（ステップＳ３０３）を実行する。
【００７７】
ここで、ＣＰＵ２からの外部メモリ４のアクセスは、ＣＰＵ２が逐次行うこともできるし、ＣＰＵ２がＤＭＡコントローラ６に対して書き込み実行の命令を発行することでも可能である。
【００７８】
以上により、アクセラレータ３に対するコンフィギュレーションのコードは共通で、かつデータ転送と演算とが並列に動作して図７〜図９に示すように、演算がパイプライン実行できることになる。
【００７９】
また、優先度は、ここではバンク５ａ＞バンク５ｂ（バンク５ａの方がバンク５ｂより優先度が高い）、バンク５ｂ＞バンク５ｃ、バンク５ｃ＞バンク５ａとなるように設定されているものとする。
【００８０】
なお、この優先順位は、命令語によって設定することも可能である。これを実現する機構は、たとえば、図１０に示すように、バンク切り替え信号ＢＳが入力されるごとに優先度順にリング構造に並んだシフトレジスタを該バンク切り替え信号ＢＳの入力ごとに次々に右の優先順位に移動して、バンク選択機構９ａが選択されたバンクに対応するローカルメモリバンクアドレスＢＡｄｄを出力できるようにするものである。
【００８１】
図１０において、バンク優先度テーブル９ｂは、アドレス付けされてメモリマップされており、そのアドレスに４Ｂ（１語）のデータをＣＰＵ２から書き込むことで値の設定が行われる。
【００８２】
書き込まれたデータは、フィールド切り出し機構１４によって、優先順位１、優先順位２、優先順位３それぞれに値が設定される。そして、図１１に示すように、書き込まれる４Ｂデータのビット位置０−１の２ビットが優先順位１に、ビット位置２−３の２ビットが優先順位２に、ビット位置４−５の２ビットが優先順位３に、それぞれ切り出される。
【００８３】
たとえば、２ビットで示される値が「０１」のときバンク５ａ、「１０」のときバンク５ｂ、「１１」のときバンク５ｃをそれぞれ示す。また、値「００」は現在の値を変更しないことを示すものとする。さらに、書き込みデータのビット位置６以降の上位ビットは無効である。
【００８４】
ここでは、実行開始時に、バンク優先度テーブル９ｂに、ｘ００００００３９を書き込むことで、優先順位１にはバンク５ａを指示する値「０１」、優先順位２にはバンク５ｂを指示する値「１０」、優先順位３にはバンク５ｃを指示する値「１１」をそれぞれ設定する。
【００８５】
バンク選択機構９ａでは、バンク優先度テーブル９ｂの優先順位１からの信号Ｓｉｇを得て、これをローカルメモリアドレスＡｄｄｌｍに結合することにより、アクセラレータ３から指定されたアドレスをバンクごとに異なるローカルメモリバンクアドレスＢＡｄｄとして生成する。
【００８６】
本実施の形態では、ローカルメモリ５のバンク５ａ〜５ｃが６４ＫＢずつ連続してアドレス付けされているものとして、ローカルメモリアドレスＡｄｄｌｍで示されるアドレス値を左にバンク優先度テーブル９ｂの信号Ｓｉｇによる値に１６を乗じた数のビットだけ左シフトして、６４ＫＢごとの３バンクを特定する。
【００８７】
次に、バンク切り替え信号ＢＳが入力されると、図８のステップＳ２０２の処理で書き込まれた値「１」が、優先順位１にシフトされて優先順位３に移り、優先順位３の内容が優先順位２に移る。
【００８８】
優先順位１は、優先順位２のバンク５ｂとなる。これにより、切り替えコマンドによって自動的に次のバンクに移ることができ、同一のコマンド列で異なるバンクのローカルメモリにアクセスできる。
【００８９】
以上のようにして、本発明では、アクセラレータ３のローカルメモリ５を複数バンクによる構成とし、コンフィギュレーションで指定されるアクセラレータ３のコマンドによってバンクを切り替えて使用し、アクセラレータ３からは各バンクが同じアドレスでアクセスされることにより、バンクが切り替わってもアクセラレータ３がローカルメモリ５にアクセスするコードは同じにすることができる。
【００９０】
一方、ＣＰＵ２からは、ローカルメモリ５のすべてのバンクが異なるアドレスによって、外部メモリと同様にアクセスされる。
【００９１】
これにより、本実施の形態によれば、アクセラレータ３から見て演算部３ａと結びついていないバンク（待機バンク）と外部メモリ４との間でＣＰＵ２はデータ転送を自由に行うことができるので、アクセラレータ３への演算データ転送時のオーバヘッドを削減することができる。
【００９２】
さらに、ローカルメモリ５と外部メモリ４の転送は、ＤＭＡコントローラ６を使用してバックグラウンドに実行することができるので、アクセラレータ３の実行とデータ転送を並列に実行することも可能になる。また、このような操作をコンパイラによって制御することも容易となる。
【００９３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００９４】
本発明は、アクセラレータにおける演算処理の高速化技術に適している。
【符号の説明】
【００９５】
１  電子システム
２  ＣＰＵ
３  アクセラレータ
３ａ  演算部
４  外部メモリ
５  ローカルメモリ
５ａ  バンク
５ｂ  バンク
５ｃ  バンク
６  ＤＭＡコントローラ
７  アクセス調停機構
８  制御レジスタ
９  ローカルメモリアクセス機構
９ａ  バンク選択機構
９ｂ  バンク優先度テーブル
９ｃ  機能レジスタ
１０  演算名称部
１１  演算項部
１２  演算操作
１３  コマンド列
１４  フィールド切り出し機構
Ｂ１〜Ｂ４  ローカルバス
【図１】
2011118744.tif 000003
【図２】
2011118744.tif 000004
【図３】
2011118744.tif 000005
【図４】
2011118744.tif 000006
【図５】
2011118744.tif 000007
【図６】
2011118744.tif 000008
【図７】
2011118744.tif 000009
【図８】
2011118744.tif 000010
【図９】
2011118744.tif 000011
【図１０】
2011118744.tif 000012
【図１１】
2011118744.tif 000013