(57)【特許請求の範囲】
【請求項１】
プログラマブルロジックデバイスと、
メモリと、
前記プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、少なくともいずれかのコンフィグレーションデータを前記メモリにそのまま記録するとともに、他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する重複排除手段と、を備える、
ことを特徴とする半導体装置。
【請求項２】
前記重複排除手段は、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアが配置される箇所を示す第１の情報を前記メモリに記録する、
請求項１に記載の半導体装置。
【請求項３】
前記重複排除手段は、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから冗長化された回路要素を記述するデータを抽出し、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する、
請求項１または２に記載の半導体装置。
【請求項４】
前記重複排除手段は、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素が配置される箇所を示す第２の情報を前記メモリに記録する、
請求項３に記載の半導体装置。
【請求項５】
前記重複排除手段は、ユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除した、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データの間で差分を抽出し、前記他のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する代わりに、前記差分に相当するデータを前記メモリに記録する、
請求項３または４に記載の半導体装置。
【請求項６】
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第１の情報を参照して、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアを元の箇所に配置する復元手段を備える、
請求項２に記載の半導体装置。
【請求項７】
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第２の情報を参照して、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素を元の箇所に配置する復元手段を備える、
請求項４に記載の半導体装置。
【請求項８】
プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、
少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録し、
他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する、
ことを特徴とするコンフィグレーション方法。
【請求項９】
前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアが配置される箇所を示す第１の情報を前記メモリに記録する、
請求項８に記載のコンフィグレーション方法。
【請求項１０】
プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出する処理と、
少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録する処理と、
他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する処理と、をコンピュータに実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置、コンフィグレーション方法およびプログラムに関し、特にプログラマブルロジックデバイスを備えた半導体装置、プログラマブルロジックデバイスのコンフィグレーション方法、および、プログラムに関する。
【背景技術】
【０００２】
通信システム等で使用するサーバのアクセラレータとしてＦＰＧＡ（Field-Programmable Gate Array）等のプログラマブルロジックデバイスの活用が進んでいる。ＦＰＧＡにロードされる回路データ（コンフィグレーションデータ）は書き換え（再構成、リコンフィグレーション）が可能であるため、共通のハードウェアに基づいて複数のサービスを提供することができる。【０００３】
関連技術として、特許文献１には、複数の回路データの中から選択された基準回路データを用いて、他の回路データと基準回路データとの差分データを作成し、基準回路データと差分データとから元の回路データを復元する技術が開示されている。【０００４】
また、特許文献２には、ＦＰＧＡ用のコンフィグレーションデータをＡ面領域とＢ面領域とを含むフラッシュメモリに記憶する際に、Ａ面領域には、コンフィグレーションデータを一部削除して記憶する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２５８８６３号公報
【特許文献２】特開２００８−１８２３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。【０００７】
サーバに搭載されるＦＰＧＡボードで各種のサービス機能を動的に選択するには、サーバ側に各機能のコンフィグレーションデータ（単に「コンフィグデータ」ともいう）の保存機能やＦＰＧＡへのデータ書き替え機能などの煩雑な管理機能を構築する必要がある。【０００８】
これを回避するため、複数の機能のコンフィグデータをＦＰＧＡボード側に格納することが考えられる。ところが、複数の機能のコンフィグデータをＦＰＧＡボードの不揮発メモリに格納した場合、メモリ容量の増加に伴いボードの製造コストが上昇するという問題がある。また、ＦＰＧＡボードを構成する基板上に搭載可能なメモリの容量には、実装面積の観点から制約が課されるため、複数の機能のコンフィグデータをそのままＦＰＧＡボードの不揮発メモリに保持できないおそれもある。【０００９】
特許文献１に記載された技術では、対象とされる回路データの基準回路データに対する相対的な変位を示す差分データを作成する際、基準回路データと対象とされる回路データとの差分値を演算によって求める必要がある。かかる技術によると、差分データの作成や差分データから元の回路データを復元する際に、複雑な演算やこれに伴う計算時間が必要とされる。【００１０】
また、特許文献２に記載された技術では、コンフィグレーションデータの一部が削除されるため、削除されたデータに対応する機能を復元できないという問題がある。【００１１】
そこで、プログラマブルロジックデバイスにロードされる複数の機能のコンフィグレーションデータのデータ量を、複雑な演算を行うことなく削減することが課題となる。本発明の目的は、かかる課題の解決に寄与する半導体装置、コンフィグレーション方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の態様に係る半導体装置は、プログラマブルロジックデバイスと、メモリと、前記プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、少なくともいずれかのコンフィグレーションデータを前記メモリにそのまま記録するとともに、他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する重複排除手段と、を備えている。【００１３】
本発明の第２の態様に係るコンフィグレーション方法は、プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録し、他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する。【００１４】
本発明の第３の態様に係るプログラムは、プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出する処理と、少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録する処理と、他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する処理と、をコンピュータに実行させる。なお、プログラムは、非一時的なコンピュータ可読記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することもできる。
【発明の効果】
【００１５】
本発明に係る半導体装置、コンフィグレーション方法およびプログラムによると、プログラマブルロジックデバイスにロードされる複数の機能のコンフィグレーションデータのデータ量を、複雑な演算を行うことなく削減することができる。
【図面の簡単な説明】
【００１６】
【図１】一実施形態に係る半導体装置の構成を例示するブロック図である。
【図２】第１の実施形態におけるコンパイル手法（開発環境）を例示する図である。
【図３】第１の実施形態に係る半導体装置（ＦＰＧＡボード）の構成を例示するブロック図である。
【図４】第１の実施形態におけるコンフィグデータの圧縮を例示する図である。
【図５】第１の実施形態における不揮発メモリのデータ格納イメージを例示する図である。
【図６】第１の実施形態における重複排除部を構成しうるハードウェアの一例を示すブロック図である。
【発明を実施するための形態】
【００１７】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００１８】
図１は、一実施形態に係る半導体装置の構成を例示するブロック図である。図１を参照すると、半導体装置５（例えば図３のＦＰＧＡボード２１）は、プログラマブルロジックデバイス６（例えば図３のＦＰＧＡチップ２２）と、メモリ７（例えば図３の不揮発メモリ２４）と、重複排除部８（例えば図３の重複排除部２３）を備えている。
【００１９】
重複排除部８は、プログラマブルロジックデバイスに実装される複数の機能（例えば図４の機能Ａ〜Ｃ）に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータ（例えば図４のＩＰコアデータfunc_1, func_2）を抽出し、少なくともいずれかのコンフィグレーションデータ（例えば図４の機能Ａに対するコンフィグレーションデータ）をメモリ７にそのまま記録するとともに、他のコンフィグレーションデータ（例えば図４の機能Ｂ、Ｃに対するコンフィグレーションデータ）から当該ＩＰコアデータ（func_1, func_2）を削除したデータをメモリ７に記録する。
【００２０】
一実施形態に係る半導体装置によると、複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰコアデータを、一部のコンフィグレーションデータから削除してメモリに保持することができる。したがって、かかる半導体装置によると、プログラマブルロジックデバイスにロードされる複数の機能のコンフィグレーションデータのデータ量を、複雑な演算を行うことなく削減することが可能となる。
【００２１】
＜実施形態１＞
次に、第１の実施形態に係る半導体装置について図面を参照して説明する。本実施形態では、一例としてプログラマブルロジックデバイスがＦＰＧＡチップであり、半導体装置がＦＰＧＡボードに相当する場合について説明する。
【００２２】
はじめに、本実施形態の概要について説明する。本実施形態では、複数の機能のコンフィグレーションデータ（以下「コンフィグデータ」ともいう）を実装可能なＦＰＧＡボードを実現するために、各機能のコンフィグデータから重複部分を極力排除し、不揮発メモリへ格納するデータサイズを縮小する。また、本実施形態では、ＦＰＧＡにコンフィグデータをロードする際に、配置配線等が最適化されていた重複排除前の回路構成を完全に復元することで、元のコンフィグデータに基づくハードウェア処理性能を保証する。
【００２３】
本実施形態では、ＦＰＧＡボード側の不揮発メモリを大幅に増加することなく、複数の機能のコンフィグデータを格納可能にし、かつハードウェアの処理性能も担保する方法として、具体的に以下の「提案１」〜「提案４」を採用する。
【００２４】
提案１：各機能のコンフィグデータの間で、重複するＩＰコアデータを排除してメモリに格納する。ここで、ＩＰコアとは、ＦＰＧＡメーカ等から提供される機能単位でまとめられた各種の回路ブロックを指す。ＦＰＧＡに搭載される回路を設計する際には、ＩＰコアを利用することが一般的になっている。
【００２５】
提案２：コンフィグデータに含まれるデータのうちのＩＰコアデータ以外のユーザ設計データに対し、冗長化された回路を抽出し、抽出した回路を排除してメモリに格納する。
【００２６】
提案３：２つ目以降の機能のユーザ設計回路データについては、１つ目の機能との差分のみをメモリに格納する。
【００２７】
提案４：メモリ内の各コンフィグデータを結合してＦＰＧＡにロードする際、ロジックの配置情報を参照することで元のコンフィグデータに基づくハードウェアで実現される性能を担保する。
【００２８】
本実施形態では、通信システムで使用するサーバに本ＦＰＧＡボードを搭載し、ニーズに応じて動的にサービスや機能を切り替えられるシステムを想定する。
【００２９】
図２は、本実施形態におけるコンパイル手法を説明するための図である。一般的なコンパイルの手順では、各種ＩＰコアのライブラリを利用してデザインしたコーディングデータを一括してコンパイルする。一方、本実施形態では、コーディングデータ２に含まれるユーザが設計した回路部分（ユーザ設計回路）とＩＰコアの回路部分（ＩＰコア回路）をパーティション分けし、コンパイラ１によって部分的にコンパイルを行う。これにより、アウトプット３として、ユーザ設計回路とＩＰコア回路について、それぞれ別個に実行ファイルを生成する。また、これらのファイルの結合は、ＦＰＧＡボード側で実施するものとする。
【００３０】
なお、パーティション分けによる部分的なコンパイル手法は、通常、局所的なデザイン修正時に短時間で再コンパイルを行う目的で実施される。ただし、本実施形態では、汎用性の高いＩＰコア機能と、ユーザ開発機能の実行ファイルを分割する目的で部分的なコンパイルを実施する。
【００３１】
［構成］
図３は、本実施形態の半導体装置であるＦＰＧＡボード２１の構成を例示するブロック図である。図３を参照すると、ＦＰＧＡボード２１はサーバ１１に搭載されている。ＦＰＧＡボード２１は、サーバ１１のＣＰＵ（Central Processing Unit）１２からコンフィグデータを受け取り、各種の機能を実現する。また、ＦＰＧＡボード２１は、各機能に応じた処理を行うＦＰＧＡチップ２２と、コンフィグデータを格納する不揮発メモリ２４と、これらの両者の間に設けられた重複排除部２３および復元部２８を備えている。重複排除部２３は、さらに同一ＩＰ排除部２５、冗長排除部２６および差分抽出部２７を備えている。
【００３２】
同一ＩＰ排除部２５、冗長排除部２６、差分抽出部２７および復元部２８は、それぞれ上記の提案１〜提案４の１つを実現するユニットである。すなわち、同一ＩＰ排除部２５は、各機能のコンフィグデータの間で、重複するＩＰコアデータを排除する。また、冗長排除部２６は、ＩＰコアデータ以外のユーザ設計データに対し、冗長化された回路要素を抽出し、抽出した回路要素を排除する。さらに、差分抽出部２７は、２つ目以降の機能のユーザ設計回路データについては、１つ目の機能との差分のみを不揮発メモリ２４に格納する。
復元部２８は、不揮発メモリ２４内の各コンフィグデータを結合してＦＰＧＡチップ２２にロードする際、ロジックの配置情報を最適化する。
【００３３】
［動作］
次に、ＦＰＧＡボード２１に対して３つの機能Ａ、機能Ｂ、機能Ｃを実装する場合を例として、本実施形態のＦＰＧＡボード２１（図３）の動作を説明する。
【００３４】
同一ＩＰ排除部２５は、１つ目のサービス機能のコンフィグデータについては、すべてのＩＰコアデータとユーザ設計回路データを不揮発メモリ２４に格納する。一方、同一ＩＰ排除部２５は、２つ目以降のコンフィグデータについては、それ以前のサービス機能で保有済みの同一名称ＩＰコアを除外して不揮発メモリ２４に格納する。
【００３５】
図４は、同一ＩＰ排除部２５（すなわち提案１）によるコンフィグデータの縮小イメージを示す。「提案１適用後」４２の機能Ｂに示すように、同一ＩＰ排除部２５は機能Ｂと機能Ａとの間で重複するＩＰコアデータ（func_1, func_2）を保存しない。ただし、同一ＩＰ排除部２５は、参照先のＩＰコアの名称、使用する回路個数、および各回路の配置情報については「参照ＩＰ情報」として不揮発メモリ２４に記録する。これにより、復元部２８が不揮発メモリ２４からＦＰＧＡチップ２２にコンフィグデータをロードする際に、元の機能Ｂを完全に復元することができる。すなわち、かかる仕組みを採用することで、同一ＩＰコアを複数個使用した並列処理を含む機能に対しても、元の機能を完全に復元することが可能となる。
【００３６】
次に、冗長排除部２６（すなわち提案２）の動作を説明する。通信システムなどの高信頼性が要求されるシステムでは、ハードウェア故障に対する耐障害性を確保する目的で、装置やネットワークに冗長性を持たせた構成が採用される。したがって、サーバ単体に対しても、０系／１系といった冗長化された外部インタフェースを設けることが求められる。これに伴って、ＦＰＧＡボード２１内にも冗長化されたインタフェースや機能が組み込まれる場合がある。そこで、冗長排除部２６は、ＦＰＧＡチップ２２内の冗長回路部分を排除することにより、コンフィグデータを圧縮する。具体的には、冗長排除部２６は、ユーザ設計回路のコンフィグデータに対し、回路要素（例えば論理回路、配線など）の情報に繰り返しが認められる部分を共通部分として括り出し、１系統分のデータのみを不揮発メモリ２４に保管する。また、冗長排除部２６は、残りの系統分については、配置情報のみを不揮発メモリ２４に記録する。これにより、コンフィグデータの縮小化が可能となる。
【００３７】
図４の「提案１と２適用後」４３は、冗長排除部２６を適用した場合のコンフィグデータの縮小イメージを示す。冗長排除部２６は、各機能のユーザ設計回路データに対して、冗長回路を排除してデータサイズを縮小する。ただし、冗長排除部２６は、参照先の１系統分の回路情報、冗長回路個数、冗長回路の配置情報などを「冗長情報」として不揮発メモリ２４に記録しておく。これにより、復元部２８がＦＰＧＡチップ２２にコンフィグデータをロードする際、冗長性を備えた元の機能を完全に復元することができる。このような仕組みにより、冗長化による耐障害性を維持しつつ、コンフィグデータを圧縮することが可能となる。
【００３８】
次に、差分抽出部２７（すなわち提案３）の動作について説明する。差分抽出部２７は、各サービス機能に対する冗長排除済みのユーザ設計回路データに関して、１つ目のサービス機能についてはデータをそのまま不揮発メモリ２４に格納する。一方、差分抽出部２７は、２つ目以降のサービス機能に対するデータについて、１つ目の冗長排除済みユーザ設計回路データとの差分を抽出し、差分データのみを不揮発メモリ２４に格納する。これにより、コンフィグデータのさらなる圧縮が可能となる。
【００３９】
図４の「提案１と２と３適用後」４４は、差分抽出部２７を適用した場合のコンフィグデータの縮小イメージを示す。差分抽出部２７は、機能Ｂのユーザ設計回路データについては、機能Ａとの差分データのみを不揮発メモリ２４に保存する。この際、差分抽出部２７は比較対象のユーザ設計回路名（この場合機能Ａ）を「差分参照先」として不揮発メモリ２４に記録しておく。これにより、復元部２８が後でＦＰＧＡチップ２２にコンフィグデータをロードする際、元の機能Ｂを完全に復元することができる。なお、冗長排除部２６は各機能のユーザ設計回路の内部における重複排除処理（冗長排除）を行うのに対して、差分抽出部２７は複数の機能にまたがった重複排除（差分抽出）を実施する。
【００４０】
次に、不揮発メモリ２４上のコンフィグデータをＦＰＧＡチップ２２にロードする際の復元部２８（すなわち提案４）の動作について説明する。復元部２８は、提案１ないし提案３の各種参照先情報を参照して、ユーザ設計回路データの復元と、ＩＰコアデータとの結合を行い、コンフィグデータを復元する。ここで、ＦＰＧＡチップ２２におけるロジック間の配線距離は、レイテンシ等のハードウェア処理性能に影響を及ぼす。したがって、ロジック間の配線距離が可能な限り短くなるようにロジックを配置することが好ましい。
【００４１】
しかしながら、あるサービス機能のＩＰコアデータの配置情報として、他のサービス機能のＩＰコアデータの配置情報を流用した場合、必ずしも最適な配置が得られるとは限らない。そこで、重複排除部２３は、他のＩＰコアデータとの結合を行う際に、同一ＩＰ排除部２５が提案１の処理で不揮発メモリ２４に記録した機能毎の元のＩＰコアの配置情報を活用し、配線距離が最適化されていた元の回路構成を復元する。これにより、コンフィグデータを圧縮して保持した場合であっても、ハードウェアの処理性能が担保される。
【００４２】
［効果］
次に、本実施形態のＦＰＧＡボード２１によってもたらされる効果について説明する。
本実施形態の重複排除部２３の動作（すなわち提案１から提案３）により、複数のサービス機能のコンフィグデータのデータ量を全体として削減でき、複数のコンフィグデータをＦＰＧＡボード２１上の不揮発メモリ２４に格納することが可能となる。
【００４３】
図５は、不揮発メモリ２４におけるデータ格納の様子を概略的に示す図である。図５を参照すると、コンパイル後の実行ファイル３１として、各種ＩＰコアデータとユーザ設計回路データを含む３種類のサービス機能Ａ、機能Ｂ、機能Ｃのコンフィグデータが存在する。この場合、重複排除部２３を経由した後のメモリ格納データ３２は、最初の機能Ａについては、全ＩＰコアデータを保持する。一方、メモリ格納データ３２は、ユーザ設計回路については、冗長排除済みの縮小データを保持する。また、メモリ格納データ３２は、機能Ｂおよび機能Ｃについては、機能Ａには存在しないＩＰコアデータのみを保持するとともに、冗長排除済みユーザ設計回路との差分データのみを保持する。なお、メモリ格納データ３２は、参照先情報として、流用するＩＰコア名、差分比較対象のユーザ設計回路名、冗長回路の配置情報などを保持する。
【００４４】
以上より、本実施形態によると、複数のサービス機能間において類似点が多くなるに従って、これらの機能に対するコンフィグデータの効率的な圧縮が可能になる。
【００４５】
また、上述の復元部２８の動作（すなわち提案４）によると、圧縮前のコンフィグデータに基づくハードウェアの処理性能が担保される。
【００４６】
以上のように、本実施形態によると、重複排除部２３と復元部２８の動作（すなわち提案１ないし提案４）により、ハードウェアの処理性能を担保しつつ、不揮発メモリ２４に格納するゲート回路規模を削減でき、ＦＰＧＡボード２１上に複数サービス機能を容易に実装することが可能になる。
【００４７】
＜変形例＞
次に、上記第１の実施形態に係る半導体装置の変形例について説明する。
【００４８】
第１の実施形態では、図３に示すように、重複排除部２３に対して同一ＩＰ排除部２５、冗長排除部２６および差分抽出部２７を設けることで、提案１〜提案３に関する動作を併せて実施する構成を採用した。ただし、これらのユニットの一部のみを重複排除部２３に設けることで、提案１〜提案３の一部のみを実施するようにしてもよい。具体的には、重複排除部２３は、同一ＩＰ排除部２５のみ、冗長排除部２６のみ、または、冗長排除部２６と差分抽出部２７のみを備えていてもよい。かかる構成を採用した場合であっても、図４に示すコンフィグデータの圧縮効果の一部の効果を奏することが可能となる。
【００４９】
また、第１の実施形態では、重複排除部２３によって、提案１、提案２、そして提案３の順で実行される例を説明した。提案１、提案２、および提案３の動作は、必ずしもこの順で行われなくてもよい。提案１〜提案３に関する動作の順序は、変更されてもよい。
【００５０】
また、第１の実施形態では、圧縮前のコンフィグデータに基づくハードウェアの処理性能を保証するために、コンフィグデータから省略されたＩＰコアや冗長化された回路要素の配置箇所に関する情報を不揮発メモリに保持する構成を採用した。しかし、不揮発メモリのメモリ容量に関する制約が厳しい場合、これらの情報を割愛してもよい。この場合には、元のハードウェアの処理性能を担保できなくなるおそれはあるものの、コンフィグデータのデータ量を第１の実施形態よりもさらに圧縮することが可能となる。
【００５１】
さらに、第１の実施形態では、同一ＩＰ排除部２５は１つ目のサービス機能のコンフィグデータについては、すべてのＩＰコアデータを不揮発メモリ２４に格納するものとした。ここで、同一ＩＰ排除部２５は、かかる「１つ目のサービス機能」として、コンフィグデータに含まれるＩＰコアデータのデータサイズが最小のサービス機能を選択してもよい。
【００５２】
＜重複排除部２３の実装例＞
重複排除部２３の各部の処理は、例えば、回路によって実現されてもよい。重複排除部２３の各部の処理を実現する回路は、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。
【００５３】
重複排除部２３の各部の処理の一部又は全部は、例えば、コンピュータが、コンピュータ読み取り可能な記憶媒体により記憶された、その処理をコンピュータに実行させるプログラムを、読み込み、実行することによって、実現されてもよい。「コンピュータ読み取り可能な記憶媒体」は、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）である。「コンピュータ読み取り可能な記憶媒体」は、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の可搬媒体、およびハードディスク等の記憶装置でもよい。「コンピュータ読み取り可能な記憶媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントにあたるコンピュータシステム内部の揮発性メモリのように、プログラムを一時的に保持するものも含む。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、更に前述した機能をコンピュータにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
【００５４】
上記の「コンピュータ」は、例えば、図６に示されるようなコンピュータ９００である。コンピュータ９００は、以下のような構成を含む。
・プロセッサ９０１
・ＲＯＭ９０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３
・ＲＡＭ９０３へロードされるプログラム９０４Ａおよび記憶情報９０４Ｂ
・プログラム９０４Ａおよび記憶情報９０４Ｂを格納する記憶装置９０５
・記憶媒体９０６の読み書きを行うドライブ装置９０７
・通信ネットワーク９０９と接続する通信インタフェース９０８
・データの入出力を行う入出力インタフェース９１０
・各構成要素を接続するバス９１１
【００５５】
たとえば、重複排除部２３の各部の処理の一部又は全部は、その構成要素の機能を実現するプログラム９０４Ａをプロセッサ９０１がＲＡＭ９０３にロードして実行することで実現される。各装置の各構成要素の機能を実現するプログラム９０４Ａは、例えば、予め、記憶装置９０５やＲＯＭ９０２に格納される。そして、必要に応じてプロセッサ９０１がプログラム９０４Ａを読み出す。記憶装置９０５は、たとえば、ハードディスクである。プログラム９０４Ａは、通信ネットワーク９０９を介してプロセッサ９０１に供給されてもよいし、予め記憶媒体９０６に格納されており、ドライブ装置９０７に読み出され、プロセッサ９０１に供給されてもよい。なお、記憶媒体９０６は、たとえば、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の、可搬媒体である。
【００５６】
本開示に記載される技術は、例えば通信キャリアのシステムや、ＦＰＧＡのリコンフィグ（再構成）機能を利用したその他の装置やシステムに対して適用することができる。
【００５７】
なお、本発明の実施形態は、下記のように記載されうるが、下記には限られない。
［形態１］
プログラマブルロジックデバイスと、
メモリと、
前記プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、少なくともいずれかのコンフィグレーションデータを前記メモリにそのまま記録するとともに、他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する重複排除手段と、を備える、
ことを特徴とする半導体装置。
［形態２］
前記重複排除手段は、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアが配置される箇所を示す第１の情報を前記メモリに記録する、
形態１に記載の半導体装置。
［形態３］
前記重複排除手段は、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから冗長化された回路要素を記述するデータを抽出し、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する、
形態１または２に記載の半導体装置。
［形態４］
前記重複排除手段は、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素が配置される箇所を示す第２の情報を前記メモリに記録する、
形態３に記載の半導体装置。
［形態５］
前記重複排除手段は、ユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除した、前記複数のコンフィグレーションデータに含まれるユーザ設計回路データの間で差分を抽出し、前記他のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する代わりに、前記差分に相当するデータを前記メモリに記録する、
形態３または４に記載の半導体装置。
［形態６］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第１の情報を参照して、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアを元の箇所に配置する復元手段を備える、
形態２に記載の半導体装置。
［形態７］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第２の情報を参照して、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素を元の箇所に配置する復元手段を備える、
形態４に記載の半導体装置。
［形態８］
プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出し、
少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録し、
他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する、
ことを特徴とするコンフィグレーション方法。
［形態９］
前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアが配置される箇所を示す第１の情報を前記メモリに記録する、
形態８に記載のコンフィグレーション方法。
［形態１０］
前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから冗長化された回路要素を記述するデータを抽出し、
前記複数のコンフィグレーションデータに含まれるユーザ設計回路から前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する、
形態８または９に記載のコンフィグレーション方法。
［形態１１］
前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素が配置される箇所を示す第２の情報を前記メモリに記録する、
形態１０に記載のコンフィグレーション方法。
［形態１２］
ユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除した前記複数のコンフィグレーションデータに含まれるユーザ設計回路データの間で差分を抽出し、
前記他のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する代わりに、前記差分に相当するデータを前記メモリに記録する、
形態１０または１１に記載のコンフィグレーション方法。
［形態１３］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第１の情報を参照して、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアを元の箇所に配置する、
形態９に記載のコンフィグレーション方法。
［形態１４］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第２の情報を参照して、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素を元の箇所に配置する、
形態１１に記載のコンフィグレーション方法。
［形態１５］
プログラマブルロジックデバイスに実装される複数の機能に対する複数のコンフィグレーションデータに重複して含まれるＩＰ（Intellectual Property）コアデータを抽出する処理と、
少なくともいずれかのコンフィグレーションデータをメモリにそのまま記録する処理と、
他のコンフィグレーションデータから前記ＩＰコアデータを削除したデータを前記メモリに記録する処理と、をコンピュータに実行させる、
ことを特徴とするプログラム。
［形態１６］
前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアが配置される箇所を示す第１の情報を前記メモリに記録する処理を前記コンピュータに実行させる、
形態１５に記載のプログラム。
［形態１７］
前記複数のコンフィグレーションデータに含まれるユーザ設計回路データから冗長化された回路要素を記述するデータを抽出する処理と、
前記複数のコンフィグレーションデータに含まれるユーザ設計回路から前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する処理と、を前記コンピュータに実行させる、
形態１５または１６に記載のプログラム。
［形態１８］
前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素が配置される箇所を示す第２の情報を前記メモリに記録する処理を前記コンピュータに実行させる、
形態１７に記載のプログラム。
［形態１９］
ユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除した前記複数のコンフィグレーションデータに含まれるユーザ設計回路データの間で差分を抽出する処理と、
前記他のコンフィグレーションデータに含まれるユーザ設計回路データから前記冗長化された回路要素を記述するデータを削除したデータを前記メモリに記録する代わりに、前記差分に相当するデータを前記メモリに記録する処理と、を前記コンピュータに実行させる、
形態１７または１８に記載のプログラム。
［形態２０］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第１の情報を参照して、前記他のコンフィグレーションデータによって表される回路構成において前記ＩＰコアデータに対応するＩＰコアを元の箇所に配置する処理を前記コンピュータに実行させる、
形態１６に記載のプログラム。
［形態２１］
前記メモリに記録されたデータを前記プログラマブルロジックデバイスにロードする際に、前記第２の情報を参照して、前記複数のコンフィグレーションデータによって表される回路構成において前記冗長化された回路要素を元の箇所に配置する処理を前記コンピュータに実行させる、
形態１８に記載のプログラム。
【００５８】
なお、上記特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【００５９】
本出願は、２０１６年４月７日に出願された日本出願特願２０１６−０７６９６３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００６０】
１    コンパイラ
２    コーディングデータ
３    アウトプット
５    半導体装置
６    プログラマブルロジックデバイス
７    メモリ
８    重複排除部
１１    サーバ
１２    ＣＰＵ
２１    ＦＰＧＡボード
２２    ＦＰＧＡチップ
２３    重複排除部
２４    不揮発メモリ
２５    同一ＩＰ排除部
２６    冗長排除部
２７    差分抽出部
２８    復元部
３１    コンパイル後実行ファイル
３２    メモリ格納データ
４１    コンパイル後実行ファイル
４２    提案１適用後
４３    提案１、２適用後
４４    提案１、２、３適用後
【図１】
0006610774.tif 000002
【図２】
0006610774.tif 000003
【図３】
0006610774.tif 000004
【図４】
0006610774.tif 000005
【図５】
0006610774.tif 000006
【図６】
0006610774.tif 000007