"第1プロセッサ及び第2プロセッサを含むヘテロジニアスコンピュータシステムをプログラムする方法であって、命令が付加された第1プロセッサソースコードを生成するべく、前記第1プロセッサのソースコードに命令を付加する段階と、一体化第1プロセッサソースコード及び一体化第2プロセッサソースコードを生成するべく、前記命令が付加された第1プロセッサソースコードを計算的に一体化する段階とを備える方法。前記第1プロセッサは、黙示的デバイスである請求項1に記載の方法。前記第2プロセッサは、明示的デバイスである請求項1に記載の方法。前記計算的に一体化する段階は更に、ソースコード分析を生成する段階を有する請求項1に記載の方法。第1プロセッサ実行可能プログラムを生成するべく、前記一体化第1プロセッサソースコードをコンパイルする段階を更に備える請求項1に記載の方法。第2プロセッサ実行可能プログラムを生成するべく、前記一体化第2プロセッサソースコードをコンパイルする段階を更に備える請求項1に記載の方法。前記計算的に一体化する段階は更に、ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、前記命令が付加された第1プロセッサソースコードの分析及び抽象化を行う段階を有する請求項1に記載の方法。前記計算的に一体化する段階は更に、命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成する段階を有する請求項7に記載の方法。前記計算的に一体化する段階は更に、一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集する段階を有する請求項8に記載の方法。前記計算的に一体化する段階は更に、前記一体化第1プロセッサソースコード及び前記一体化第2プロセッサソースコードを生成するべく、前記一体化命令固有コード及び前記命令が付加された第1プロセッサソースコードをステートメント置換及び結合する段階を有する請求項9に記載の方法。ヘテロジニアスコンピュータシステムを計算的に一体化する方法であって、黙示的プロセッサソースコードに命令を付加する段階と、ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、前記命令が付加された前記黙示的プロセッサソースコードを分析及び抽象化する段階と、命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成する段階と、一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集する段階と、一体化黙示的プロセッサソースコード及び一体化明示的プロセッサソースコードを生成するべく、前記一体化命令固有コード及び前記命令が付加された前記黙示的プロセッサソースコードをステートメント置換及び結合する段階とを備える方法。黙示的プロセッサ実行可能構成を生成するべく、前記一体化黙示的プロセッサソースコードをコンパイルする段階と、明示的プロセッサ実行可能構成を生成するべく、前記一体化明示的プロセッサソースコードをコンパイルする段階とを更に備える請求項11に記載の方法。コンピュータ可読プログラムコードを有するコンピュータ利用可能媒体を備えるコンピュータプログラム物品であって、前記コンピュータ可読プログラムコードは、ヘテロジニアスコンピュータシステムを計算的に一体化する方法を実装するべく実行され、黙示的プロセッサソースコードに命令を付加するように構成されたコンピュータ可読プログラムコードと、ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、前記命令が付加された前記黙示的プロセッサソースコードを分析及び抽象化するように構成されたコンピュータ可読プログラムコードと、命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成するように構成されたコンピュータ可読プログラムコードと、一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集するように構成されたコンピュータ可読プログラムコードと、一体化黙示的プロセッサソースコード及び一体化明示的プロセッサソースコードを生成するべく、前記一体化命令固有コード及び前記命令が付加された前記黙示的プロセッサソースコードをステートメント置換及び結合するように構成されたコンピュータ可読プログラムコードとを備えたコンピュータプログラム物品。黙示的プロセッサ実行可能構成を生成するべく、前記一体化黙示的プロセッサソースコードをコンパイルするように構成されたコンピュータ可読プログラムコードと、明示的プロセッサ実行可能構成を生成するべく、前記一体化明示的プロセッサソースコードをコンパイルするように構成されたコンピュータ可読プログラムコードとを更に備える請求項13に記載のコンピュータプログラム物品。コンピュータ可読プログラムコードを有するコンピュータ利用可能媒体を備えるコンピュータプログラム物品であって、前記コンピュータ可読プログラムコードは、第1のプロセッサ種類及び第2のプロセッサ種類を含むヘテロジニアスコンピュータシステムをプログラミングする方法を実装するべく実行され、前記方法は、命令が付加された第1プロセッサソースコードを生成するべく、前記第1のプロセッサ種類のソースコードに命令を付加するように構成されたコンピュータ可読プログラムコードと、一体化第1プロセッサソースコード及び一体化第2プロセッサソースコードを生成するべく、前記命令が付加された第1プロセッサソースコードを計算的に一体化するように構成されたコンピュータ可読プログラムコードとを含むコンピュータプログラム物品。前記第1のプロセッサ種類は、黙示的デバイスである請求項15に記載のコンピュータプログラム物品。前記第2のプロセッサ種類は、明示的デバイスである請求項15に記載のコンピュータプログラム物品。前記計算的に一体化するように構成されたコンピュータ可読プログラムコードは更に、ソースコード分析を生成するように構成されたコンピュータ可読プログラムコードを含む請求項15に記載のコンピュータプログラム物品。第1プロセッサ実行可能プログラムを生成するべく、前記一体化第1プロセッサソースコードをコンパイルするように構成されたコンピュータ可読プログラムコードを更に備える請求項15に記載のコンピュータプログラム物品。第2プロセッサ実行可能プログラムを生成するべく、前記一体化第2プロセッサソースコードをコンパイルするよう構成されたコンピュータ可読プログラムコードを更に備える請求項15に記載のコンピュータプログラム物品。前記計算的に一体化するように構成されたコンピュータ可読プログラムコードは更に、ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、前記命令が付加された第1プロセッサソースコードの分析及び抽象化を行うよう構成されたコンピュータ可読プログラムコードを含む請求項15に記載のコンピュータプログラム物品。前記計算的に一体化するように構成されたコンピュータ可読プログラムコードは更に、命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成するように構成されたコンピュータ可読プログラムを含む請求項21に記載のコンピュータプログラム物品。前記計算的に一体化するように構成されたコンピュータ可読プログラムコードは更に、一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集するように構成されたコンピュータ可読プログラムを含む請求項22に記載のコンピュータプログラム物品。前記計算的に一体化するように構成されたコンピュータ可読プログラムコードは更に、前記一体化第1プロセッサソースコード及び前記一体化第2プロセッサソースコードを生成するべく、前記一体化命令固有コード及び前記命令が付加された第1プロセッサソースコードをステートメント置換及び結合するように構成されたコンピュータ可読プログラムを備える請求項23に記載のコンピュータプログラム物品。本発明の譲受人であるエスアールシーコンピューターズ社は、現在の高性能マイクロプロセッサで達成される性能よりも大幅に改善されたプロセッサの性能を達成可能な新規なハードウェアアーキテクチャ及びプログラミング環境を開発した。この新規なアーキテクチャは、IMPLICITEXPLICIT登録商標アーキテクチャエスアールシーコンピューターズ社の登録商標と称され、本明細書に開示される発明の計算の一体化システムのアプリケーション及び方法の代表的な実施形態を含む。このアーキテクチャを使用して開発されたシステムは、C又はフォートランのような高級言語で記載されたユーザーのコードを、密結合された黙示的implicitly及び明示的に制御されるプロセッサの混合上で実行する。これにより、プログラマは、標準的なLinux登録商標オペレーティングシステム及びレガシーコードの実行といった黙示的に制御される機能と、アプリケーション固有のデータプリフェッチ、データアクセス及び機能ユニットの利用といった明示的に制御される機能との両方を利用することが可能となる。このアーキテクチャは、携帯デバイスから大型のマルチラックシステムにわたる幅広い大きさのシステムに適用可能である。IMPLICITEXPLICITアーキテクチャを容易に実装するべく、エスアールシーコンピューターズ社は、Carte登録商標プログラミング環境エスアールシーコンピューターズ社の登録商標を開発した。Carteプログラミング環境のツールは、ハードウェア並びにエミューレーション及びシミュレーション環境でのコード開発及び実行をサポートする。これらのソフトウェアツールは、例えば、高級言語であるC又はフォートランのコードを使用し、その部分をコンパイルして、黙示的に制御されるマイクロプロセッサ上で実行する。これらのツールはまた、明示的に制御される再構成可能reconfigurableMAP登録商標プロセッサエスアールシーコンピューターズ社の登録商標が必要とする設定情報を生成する。所定のアプリケーションに対して両方の種類のプロセッサを制御するのに必要な要素は全て、Carteプログラミング環境によって1つの一体化実行可能構成に組み合わせられる。Carteツールによって生成されたこの一体化実行可能構成は、一体化実行可能構成がCarteツールによって生成された実行可能プログラムの両方を含む点において、計算の一体化とは区別される。計算の一体化とは、1つのプロセッサソースコードから、ヘテロジニアスシステムのための1以上の実行可能プログラムを生成することを指す。このように、プログラマは、標準的な高級プログラミング言語及びプログラミングモデルを使用して、黙示的及び明示的に制御されるプロセッサの両方を有するシステムを制御することができ、マイクロプロセッサのみを使用した場合と比較して、低消費電力及び小型で、プロセッサ毎の計算性能を大幅に改善させることができる。図1は、計算の一体化システムを実装可能なシステム100及び本発明の方法をIMPLICITEXPLICTアーキテクチャの形式で示した代表的な実施形態のハイレベルブロック図である。システム100は、関連する部分において、例えば、フォートラン又はCプログラミング言語によるアプリケーションソースファイルの入力を可能とするCarteプログラミング環境104を通じて生成される、一体化実行可能構成102を含む。黙示的implicitデバイス106及び明示的explicitデバイス108は、以下に詳細に説明するCarteプログラミング環境を介してプログラムされ、両デバイスはこの環境と結合して、共有メモリ110へのアクセスを提供する。このようなアーキテクチャでは、明示的及び黙示的プロセッサ106、108は、共有メモリ110の形式でのシステムメモリコンテンツへのアクセスを提供する能力を有する観点では、ピアデバイスである。このような態様により、同じプログラム上で両種類のプロセッサが共に動作することに起因するオーバヘッドを最小にすることができる。そして、SRCCarteプログラミングツールにより、制御を渡すことによる不利益を考慮することなく、アプリケーション全体の所定の部分に最適な種類のプロセッサを利用することが可能となる。黙示的デバイス106は、高密度ロジックデバイスDenseLogicDevice:DLDとも称され、マイクロプロセッサ、デジタル信号プロセッサ、グラフィックスプロセッサユニットGPU及び特定用途向け集積回路ASICの一部を含む構成要素の一群を包含する。これらの処理要素は、全て黙示的に制御され、典型的には、ユーザーによって変更されない固定ロジックで構成されている。これらのデバイスは、所定の接続及び機能を有する固定ロジックにおいて、段階的な態様でソフトウェア指示命令softwaredirectedinstructionを実行する。一方、明示的デバイス108は、ダイレクトエクセキューションロジックDELと称され、明示的に制御されて典型的には再構成可能な構成要素の一群を包含する。このような構成要素として、フィールドプログラマブルアレイFPGA、フィールドプログラマブルオブジェクトアレイFPOA及びコンプレックスプログラマブルロジックデバイスCPLDが含まれる。特定のコードにおける並列処理の特性を最大にするための、所望のコンピュータプリフェッチ及び/又はデータアクセス機能を実装するべく、構成要素のセットにより、選択された機能ユニット間の最適化された接続を確立させるプログラムを可能とする。黙示的デバイス106DLD及び明示的デバイス108DEL処理要素の両方は、ピアとして、同じ態様で又は別の態様で、共有システムメモリ例えば、共通メモリ110と接続され、データ共有は明示的態様で実装することができることから、接続は、キャッシュコヒーレンシをサポートすることを要求されない。明示的デバイス108のDELコンピューティングは、ダイナミックロジックを使用することから、1つのサイズが全てに適合する固定マイクロプロセッサアーキテクチャにアプリケーションを組み込むのではなく、アプリケーションに適合するようにダイナミックロジックを使用する。これにより、機能ユニットの正確性及びコードにおける並列性の点において、特定のコードに対する最も効率的な回路を提供することができる。このようにして得られるのが、所定のコードを使用して発展させることが可能であり及び/又は異なるコードを扱う第2部分の一部として再プログラム可能な、ダイナミックアプリケーションスペシフィックプロセッサ動的特定用途向けプロセッサである。DELコンピューティングは、特定用途コンピュータの性能及び経済的な汎用機械をユーザーに提供する。エスアールシーコンピュータズ社製の現在の汎用コンピュータシステムには、SRC-7製品ラインとして、MAPstation登録商標ワークステーションエスアールシーコンピュータズ社の登録商標、高性能ラックベースのシステム及び航空機搭載システムが含まれる。これらのシステムは全て同じ黙示的及び明示的に制御されるシステム構成要素、及び、同じSRCCarteプログラミング環境を使用しており、システム間の完全なアプリケーション移植性を可能としている。カルテプログラミング環境は、プログラマが、黙示的デバイス及び明示的デバイスの両方においてアプリケーションを規定するのにANSI標準フォートラン又はC高級言語を使用可能とすることにより、このようなシステムインテグレーションを可能にしている。Carteプログラミング環境におけるコンパイルからの生成物は、1つの一体化された、目的のSRCヘテロジニアス異機種コンピュータシステムにおいて実行可能な生成物となる。明示的デバイスは、ANSI標準コンピュータ言語を使用すると同時に、明示的デバイスが、黙示的デバイスプログラムで使用される表現とは区別される言語が使用される表現を利用する自身のプログラミングイディオムを有してもよい。現在入手可能なヘテロジニアスコンピュータシステムでは、低い帯域幅及び高いレイテンシの入出力バスが、FPGAデバイスとCPUとを分離している。SRCIMPLICITEXPLICITアーキテクチャは、CPU及びMAPプロセッサが、システムメモリに対してピアとして動作することを可能とすることにより、この制限を排除する。つまり、システムメモリの帯域幅及びレイテンシのみがこれらのデバイスを制限することとなり、SRCシステムにおけるアプリケーションの性能全体を大幅に改善させることができる。標準的な言語、及び、IMPLICITEXPLICITアーキテクチャのシステムメモリ特性によってのみ制限される黙示的及び明示的デバイスを使用する一体化プログラミング環境は、今日入手可能なあらゆるワークステーション又はコンピュータクラスタノードでは並ぶものが存在しない程に、利用が容易で高性能なアプリケーションプラットフォームをユーザーに提供できる。IMPLICITEXPLICITアーキテクチャは、ユーザーが、現存のコードを実行する又は容易に再コンパイルすることを可能にして、システムの再構成可能MAPプロセッサの力を利用して新しいコードを開発することができるようになる。このハードウェア及びソフトウェアアーキテクチャは、マイクロプロセッサ技術と再構成可能MAPプロセッサとを統合して、性能及び消費電力低減の桁違いの改善をもたらすことができる。SRCCarteプログラミング環境は、コードのマイクロプロセッサ部分と再構成可能プロセッサ部分の協働というプログラマが面してきた歴史的課題を解決した。IMPLICITEXPLICITアーキテクチャは、1つのMAPstationワークステーション又は組み込みシステムから、Hi-Barスイッチベースの構成のクラスタにわたる範囲のシステムにおいて利用可能であり、これらについては以下に詳述する。これらの構成の全ては、同じ基本ハードウェア及びソフトウェアの構成要素を使用することから、コードの完全な相互運用性を提供できる。図2は、フィールドプログラマブルゲートアレイを使用した1つ前の図における明示的デバイスとして使用される再構成可能ダイレクトエクセキューションロジックを含むMAPプロセッサ200の機能ブロック図である。MAPプロセッサ200は、関連する部分において、双方向にMAPプロセッサ200を、別のプロセッサモジュール又はHi-Barスイッチポートへと接続するためのコントローラ202を含む。例えば、各々が1GBのスタティックランダムアクセスメモリSRAMである一組の高速オンボード共有メモリアレイOBCMが、利用可能な帯域幅4.2GB/秒を有するバスによってそれぞれ、コントローラ202と双方向接続される。一組のFPGA206FPGA1及びFPGA2は、帯域幅14.4GB/秒を有する双方向バスを介してコントローラに接続され、また、帯域幅4.8GB/秒を有するバスによって互いに接続される。FPGA206はまた、帯域幅19.2GB/秒を有するバスによって、約64MBのオンボードメモリアレイOBM208と双方向接続されると同時に、帯域幅12.0GB/秒の帯域幅を有する双方向バスを介して汎用I/OGPIOXポートとも接続される。MAPプロセッサ200は、高性能DELプロセッサを含む。MAPプロセッサ200は、FPGA206の形態で再構成可能構成要素を利用し、制御及びユーザー規定の計算、データプリフェッチ及びデータ機能の両方を達成する。この計算機能は、非常に高い帯域幅の、オン及びオフボード接続と組み合わせられる。MAPプロセッサ200は、SRAMオンボードメモリ204の複数のバンクを使用して、ローカルメモリ帯域幅19,200MBs/秒を提供する。MAPプロセッサ200は更に、入力ポート及び出力ポートのセットを2つ含み、各ポートは、データペイロード帯域幅3600MB/秒を維持する。MAPプロセッサ200はまた、システム内のあらゆるプロセッサによってアクセス可能なSDRAMのグローバルに共有される共通メモリの2つのバンクを有する。MAPプロセッサ200はそれぞれ、MAPプロセッサ200がMAPプロセッサ200接続を命令する又はデータ入力を検出するための、最大12.0GB/秒の更なるデータペイロードを維持するGPIOXポートを有する。明示的デバイスは、MAPプロセッサ内200に収容される。これらのデバイスには、例えば、互いに直接アクセス可能な2つの150MHzのAlteraStratix登録商標IIEP2S180FPGA206、64MBオンボードメモリOBM208、GPIOXポート、及び、インターフェースコントローラ202が含まれてもよい。インターフェースコントローラ202は、その他のプロセッサモジュール及び2GBのオンボード共有メモリOBCM204へのアクセスを提供する。MAPプロセッサ200とその他のプロセッサモジュールとの間の、維持される全ペイロード帯域幅は、各ポートのペア毎に、14.4GB/秒、又は、7.2GB/秒である。SDRAMOBM208は、16個の独立した64ビットメモリ参照を、FPGA206にクロックサイクル毎に提供する。これにより、OBM208とFPGA206との間の最大帯域幅19.2GB/秒を実現している。アプリケーションの明示的に部分に対するデータは、プログラマによってOBM208に割り当てられ、OBM208とFPGA206との間の実際に達成可能な帯域幅は、アプリケーションの必要条件によって決められてもよい。OBCM204の2つのバンクが提供されることにより、プログラマは、アプリケーションに対するデータ局所性の第3レベルを規定することが可能となる。データ局所性の第2レベルは、OBM208であり、第1レベルは、FPGA206内部メモリである。一般的に、大きなアプリケーションデータセットはここに格納されて、好適なデータサブセットは、処理のためにOBM208又は直接ロジックに移動される。これらOBCM204バンクは、MAPプロセッサ200ベースのコンピュータシステムにおけるグローバル共有メモリ空間の一部分である。GPIOXポートは、最大12.0GB/秒までの、外部デバイス例えば、カメラ、A/Dコンバータ、センサ等へのアクセスを提供する、又は、その他の複数のMAPプロセッサ200のチェーン化chainingを提供する。GPIOXインターフェースは、オープンスタンダードであり、GPIOXハードウェア規格書SWP-011-00に記載されている。図3は、市販のマイクロプロセッサ及び最大3つのMAPプロセッサ200図2のような高密度ロジックデバイスのサポートを提供するマルチポート共有メモリ300の機能ブロック図である。マルチポート共有メモリMPCM300は、関連する部分に、プロセッサモジュールと最大3つのMAPモジュールとの間の相互接続を提供するコントローラ302を含む。図示した実施形態では、マルチポート共有メモリ300はまた、4GBOBCMメモリアレイを一組含む。SRC-7MAPstationシステムに対するMPCM300アセンブリの各々は、4つの出力ポート及び入力ポートを有する。これらのポートにより、プログラマは、2つの16GB共有メモリバンクにアクセスすることができる。このポートは、1つのマイクロプロセッサモジュール及び最大3つのMAPプロセッサをサポートする。MPCM300モジュール上のインテリジェントDMAコントローラ302は、システムの接続帯域幅を最大限有効に利用するべく、複雑なDMAプリフェッチ、及び、データパッキング、等間隔アクセス及び分散/収集のようなデータアクセスを実行可能である。これらのオペレーションに対しては、同じ接続を利用したキャッシュベースのマイクロプロセッサよりも、接続効率が10倍程度高くなる。入力ポート及び出力ポートの各々は、1ビットエラー訂正及び2ビットエラー検出SingleErrorCorrectionandDoubleErrorDetection:SECDEDを各ポートに実装した場合、少なくとも3.6GB/秒のデータペイロードを維持する。図4は、1つのMAPプロセッサMAPstation400の機能ブロック図である。MAPstation400は、図2を参照して上記で説明したMAPプロセッサ404と接続されるGPIOXポート402を含む。MAPプロセッサ404は、プロセッサ410のメモリ空間408に直接接続されているSNAP登録商標ポート406エスアールシーコンピュータズ社の登録商標と相互接続されている。SRC-7MAPstationシステムのこの構成は、1つのマイクロプロセッサモジュール410、及び、直接相互接続を有する1つのMAPプロセッサ404を収容する。このシステムは、MPCMモジュール300図3を収容しないことから、1つのMAPモジュールのみが設置されてもよい。MAPstationにおいて使用される黙示的DLDは、通常、複数の市販のプロセッサのうちの1つである。これら第3者の市販のボードに、SNAP406インターフェースが取り付けられる。SNAPインターフェース406は、市販のマイクロプロセッサボードと、MAPプロセッサ404及びSRCシステムの残りの部分を構成する共有メモリノードとを接続し、これらとメモリを共有する。SNAP406モジュールは、マイクロプロセッサマザーボード上でDIMMコネクタに直接プラグ接続されてもよく、I/Oサブシステムの替わりに、マイクロプロセッサ410のメモリサブシステム408内で直接機能するため、システムは、非常に高い接続帯域幅及びI/Oベースの接続よりも低いレイテンシを維持することができる。SNAP406インターフェースは、別個の入力経路及び出力経路を使用し、各経路は現在のところ、3.6GB/秒のデータペイロード帯域幅を維持している。SNAP406モジュールを使用して、I/Oサブシステムの替わりにマイクロプロセッサ410メモリサブシステム408に接続することにより、システムは、非常に高い接続帯域幅を維持することができる。SNAP406モジュールは、別々の入力ポート及び出力ポートを使用し、各ポートは、3.6GB/秒のオーダーであって最高7.2GB/秒のデータペイロード帯域幅を維持する。SNAP406インターフェースは、1つのMAPプロセッサ又はHi-Bar登録商標スイッチエスアールシーコンピュータズ社の登録商標のうちのどちらか一方と直接接続することができ、複数のMAPプロセッサ、その他のマイクロプロセッサ又は共有メモリへのシステム全体にわたるアクセスを提供する。図5は、マルチポート共有メモリモジュールを介して相互接続される図2のMAPプロセセッサのうちの3つを含むMAPstationシステム500の機能ブロック図である。MAPstationシステム500は、図3に示したようなマルチポート共有メモリMPCM504と接続される最大3つのMAPプロセッサ502を含む。MPCM504は、図示するように、コントローラ及び関連付けられたメモリアレイ506を含む。MPCM504のプロセッサポートは、例えば、PCIエクスプレスバスインターフェース514を有するプロセッサ512のメモリ510サブシステムと接続されたSNAP508インターフェースと接続されている。MAPstationシステム500が、MPCMモジュールを有するように構成されている場合には、マイクロプロセッサモジュールに加えて、最大3つのシリーズHMAPプロセッサ502を有してもよい。メモリ506を含む2つのOBCMバンクは、最大16GBのSDRAMでポピュレートされてもよい。図6は、マイクロプロセッサ及び前図のMAPプロセッサを直接接続構成で実装したクラスタシステム600の機能ブロック図である。図のクラスタシステム600は、複数のMAPstation6020、6021、6022~602nを含み、MAPstationの各々は、GPIOXポート604、MAPプロセッサ606、SNAP608、関連付けられているメモリ空間610を有するマイクロプロセッサ612、及び、PCIエクスプレスPCI-Xポート614を含む。図に示すように、MAPプロセッサ604のGPIOXポート604は、共にチェーン化されており、PCI-Xポート614は、ギガビットイーサーネットポート616と接続されて、ネットワーク618にアクセスできるようになっている。ネットワーク618は、関係付けられたデータストレージ620を有するストレージエリアネットワークSAN622、ローカルエリアネットワークLAN624及び/又はワイドエリアネットワークWAN626を含んでもよい。システムレベル設定は、MAPstationワークステーションのクラスタ又はクロスバースイッチベーストポロジーの何れか一方を実装する。クラスタベースシステムは、図6に示すように、上記で説明した、マイクロプロセッサとMAPプロセッサとの直接接続構成を利用する。このトポロジーは、マイクロプロセッサ/MAPプロセッサの親和性を有しているが、非非常に大型のシステムを生成するのに標準ベースのクラスタリングを使用できるという利点も有している。図7は、マイクロプロセッサ、MAPプロセッサ及び/又は共有メモリデバイスを含む16個のノードと接続される最大16個のI/Oポートを有するエスアールシーコンピューターズ社が登録商標権を有するHi-Barスイッチを利用した本発明の一実施形態を実装するためのコンピュータシステム700の機能ブロック図である。コンピュータシステム700は、Hi-Barスイッチ702及び複数のプロセッサユニットを含み、プロセッサユニットの各々は、図示するように、プロセッサメモリ空間706と接続されたSNAP704を有するプロセッサ708、及び、ギガビットイーサーネットポート712と接続された関連付けられたPCI-Xポート710を備える。図に示すように、コンピュータシステム700は更に、複数のMAPプロセッサ7140-714nを備え、各MAPプロセッサは、Hi-Barスイッチ702と接続され、共にチェーン化されている関連付けられたGPIOXポート716を有する。複数のマルチポート共有メモリMPCMユニット7180-718nはまた、Hi-Barスイッチ702と接続されて、上記したようにプロセッサユニット704及びMAPプロセッサ714からアクセス可能となっている。ギガビットイーサーネットポート712は、コンピュータシステム700をネットワーク720に接続する。ネットワークは、関連付けられたデータストレージ722を有するSAN724、LAN726及び/又はWAN728を含んでもよい。Hi-Barスイッチベースのコンピュータシステム700は、図6のクラスタシステム600よりも、より高い柔軟性を提供する。Hi-Barスイッチ702は、エスアールシーコンピューターズ社が登録商標権を有する、拡張可能な高帯域幅低レイテンシスイッチである。Hi-Barスイッチモジュールの各々は、64ビットアドレッシングをサポートし、16個の入力ポート及び16個の入力ポートを有して16個のノードに接続する。図示するように、マイクロプロセッサユニット、MAPプロセッサ714及びMPCMメモリ718ノードの全てを、あらゆる配置でHi-Barスイッチ702に接続することができる。各入力ポート及び出力ポートは、3.6GB/秒のデータペイロードを維持し、16個のポート全体では、57.6GB/秒の2分割帯域幅となる。ポート各々に1ビットエラー訂正及び2ビットエラー検出SingleErrorCorrectionandDoubleErrorDetection:SECDEDを実装した場合には、ポート間のレイテンシは、180ナノ秒である。Hi-Barスイッチ702は、多段構成で接続することができ、2つの段で256個のノードをサポートすることができる。これらマルチポート共有メモリノード718の各々は、インテリジェントDMAコントローラ及び、例えば、最大64GBのDDR-2SDRAMを含む。このメモリは、64ビットアドレッシングをサポートし、メモリモジュールに位置する4つのポートのうちの何れか1つを使用してシステム内のその他のMAP714及びマイクロプロセッサノードの全てが、このメモリにアクセスすることができる。何れのポートも、3.6GB/秒のデータペイロード帯域幅でのメモリ読み出し及び書き込みを維持する。図8は、市販のマイクロプロセッサ及びMAPプロセッサの形態のダイレクトエクセキューションロジックのような高密度ロジックデバイスを目的とした1つの一体化実行可能構成を生成するための代表的なコード開発プロセス800を示した図である。プロセス800は、MAPソースファイル802及びアプリケーションソースファイル804の入力から開始し、アプリケーションソースファイルは、段階806において、マイクロプロセッサコンパイラによってコンパイルされて、通常の態様でオブジェクトファイル808が生成される。この場合、CarteMAPコンパイラ810は、MAPソースファイル802を受信して、ハードウェアバージョンのCarteマクロライブラリ812を使用し、FPGAビットストリームを生成するべく、FPGA配置配線ツール814を起動させる。生成されたビットストリームは、CarteMAPコンパイラによって、オブジェクトファイル出力816に取り込まれる。段階818において、全オブジェクトファイル808及び816がリンクされて、Carteライブラリを使用してハードウェアマクロライブラリシンボル820が分解される。このように、FPGAプログラミングビットストリーム及びランタイムコード824が、1つの一体化されたアプリケーション実行可能構成822内に埋め込まれる。また、プログラマが、自身のVerilog又はVHDLIPを、これらライブライブラリに組み込むことも可能である。このように、単純な機能呼び出しを使用して、IPをインスタンス化することができる。SRCソフトウェアは、標準的な第3者のソフトウェア及びSRCCarteプログラミング環境という2つの主要な要素からなる。SRC-7MAPstationシステムは、基本システムソフトウェアを形成しているLinux登録商標Fedoraオペレーティングシステムを有する標準ベースのソフトウェアを利用する。Linux登録商標内でサポートされているコンパイラ、デバッガ及びソフトウェア管理ツールを、SRCコンピュータシステムにおいて使用することができ、また、Carteプログラミング環境と結合させることができる。ツールの一部は、インテル登録商標フォートランコンパイラ、インテル登録商標Cコンパイラ及び/又はAlteraQuartus登録商標IIFPGA設計ソフトウェアを含んでもよい。Linux登録商標オペレーティングシステムOS環境は、ペリフェラルストレージ及びネットワーク化をサポートする多数のドライバ及びライブラリにアクセス可能である。Carteプログラミング環境は、標準的なANSIフォートラン及び/又はCで記載されたアプリケーションを採用して、MAPプロセッサ及びマイクロプロセッサの計算能力をシームレスに、1つの一体化実行可能構成に統合する。具体的には、Carteプログラミング環境は、プログラマが、マイクロプロセッサ/FPGAへテロジニアスシステム内にコードの並行実行を明示的に規定することを可能とすると同時に、メモリ階層構造内の明示的データの管理を提供する。プログラマには、高級プログラミング言語から、プロセッサハードウェアの規定及び生成を行うローレベルハードウェア機能への基本的なアクセス権が与えられる。計算及びメモリアクセスに関するこのレベルの制御を有することにより、高計算性能の達成を容易にすることができる。Carteプログラミング環境は、複数の構成要素によって形成されており、主要なソフトウェア構成要素は、MAP/フォートランコンパイラ又はMAP/Cコンパイラとして現在は入手可能なSRCMAPコンパイラである。MAPコンパイラは、MAPFPGAに対するダイレクトエクセキューションロジックを形成する。コンパイルシステムは、コードから最大の並列性parallelismを抽出して、FPGAにインスタンス化されたパイプラインハードウェアロジックを生成する。コンパイラは、MAPプロセッサからのデータ及びMAPプロセッサに入るデータの移動を管理するべく、及び、MAPプロセッサ内で実行されるロジックとマイクロプロセッサの実行とを調整するべく、必要とされるインターフェースコードの全てを生成する。ライブラリは、整数、単精度及び倍数精度浮動小数点データ型を完全にサポートする。必要とされるインターフェース及び管理コードの全てが、Carteランタイムライブラリに収容される。SNAP登録商標ドライバ及び関連するライブラリには、Carteプログラミング環境が提供されて、アプリケーション開発者が、完全に一体化された態様で、アルゴリズムを容易に設計して実装することを可能にしている。Carteプログラミング環境はまた、コンパイルされたコードをデバッグモードでエミュレート及びシミュレートする機能をユーザーに提供する。デバッグモードコンパイルは、ユーザーが、FPGA配置配線ツールを呼び出すことなく、CPUで自身のコードの全てをコンパイル及びテスト可能とする。デバッグモードにおいて、ループ性能情報が提供されてもよく、それにより、FPGA配置配線の前に、正確なMAPプロセッサコード性能を見積もることが可能となる。図9は、ユーザーレベルにおける本発明の計算の一体化プロセスフローの概略を示した図である。ユーザーの視点では、計算の一体化プロセス900は、データ格納段階902のマイクロプロセッサソースコードから開始する。このプログラムの性能及びデータフロー分析は、どの機能をマイクロプロセッサ上で実行する必要があり、ヘテロジニアスシステム内の別の種類のプロセッサ上で実行することによりどの機能が恩恵を受けるかを示す。ユーザーは、処理段階904において、元のソースコードに、パラメータ化された命令を追加して、計算の一体化プロセス906を誘導する。マイクロプロセッサコンパイラは、命令を無視することから、元のソースコードは、同一機種homogeneousマイクロプロセッサシステムに対するコンパイルのユースケースによって、有効に変更されることはない。これにより、1つのマイクロプロセッサコードベースが、複数の異なる種類のヘテロジニアスプロセッサ及びマイクロプロセッサのみのシステムの両方に対してコンパイルされるようになることから、計算の一体化のソフトウェアメンテナンスが可能になる。計算の一体化プロセス906は、データ格納段階908において、ユーザー挿入命令と共にマイクロプロセッサソースコードを取得して、データ格納段階910において、一体化マイクロプロセッサソースコードを生成し、データ格納段階912において、システム内のその他のプロセッサ種類に対する一体化ソースコードを生成する。また、リソース利用率、プログラミングヒント、更なる実行改善のためのプログラマに対する提案及び情報を伴うソースコード分析が、データ格納段階914において生成される。一体化マイクロプロセッサソースコード910は、アプリケーションソースファイル804図8となり、その他のプロセッサの一体化ソースコード912は、MAPソースファイル802となる。このように、計算の一体化プロセス及び方法は、Carteツールに入力されるソースコードの改善と考えてもよい。生成された一体化ソースコードは、元のマイクロプロセッサソースコードの部分とは、異なっていてもよい。元の生成されたソースコードの全てがANSI標準言語であっても、異なる種類のプロセッサが、所定のプロセッサアーキテクチャに適切である異なるプログラミングイディオムを必要としてもよいその他の場合例えば、GPUがその他のプロセッサである場合、目的の言語構文サポートライブラリ及び拡張は、その他のプロセッサに対して固有であり、標準コンピュータ言語ではない。所定のプロセッサ対象のプログラミング方法及びイディオムが、計算の一体化プロセス実装形態に具現化される。多くの場合、ヘテロジニアスシステムにおける効率的なプログラム実行を実現するには、プログラマに、元のマイクロプロセッサソースコードを並列処理化することを要求する。計算の一体化は、並列処理化情報を一体化プロセスに実装することにより、このタスクを容易にする。これには、ソースコードの自動分析、及び、プロセッサの種類に対する適切な並列プログラムイディオムを生成することを含む。コンピュータシステムリソースは、無限ではなく、プログラマは、新種のヘテロジニアスプロセッサアーキテクチャに直面すると、リース利用率を見積もるのに困ってしまう場合がある。計算の一体化プロセスの過程において、一体化プロセスに具現化されたプロセッサドメイン固有の知識を使用して、システムリソース利用率を見積もり、リソース利用率、及び、マイクロプロセッサソース及びターゲットのシステムにおけるリソース利用効率を向上させるための情報を、プログラマに提供する。ここで、リソースとは、ヘテロジニアスシステムの多くの側面を意味しており、例えば、メモリサイズ、メモリ割り当て、データ移動経路、FPGAリソース、複数のGPUコア又はマイクロプロセッサコアが含まれる。また、リソースとは、サイズ、ウェイト及び電力必要条件等のシステム条件を意味する。プログラム的構造は、プロセッサの1種類に対して効率的な形式例えば、コードの3つ又は4つのラインで表現されてもよい。異なるプロセッサで同様な結果を達成するためには、コードの3つ又は4つのラインは、効率的な実行のためにコードの多数のラインへと拡張される必要がある場合がある。このコード拡張は、プログラムの機能を分かりにくくさせ、ソフトウェアメンテナンスの観点における性能を低下させる。一体化プロセスでは、ユーザーに見えないような異なるプロセッサ種類にするコード拡張を行うことにより、この問題を解決することができる。しばしば、ソフトウェアソースコードは、更新された規格を満足するように、2つの形式間で読み書き可能である必要がある。計算の一体化プロセスは、通常のプロセスフローの一部で、表記変換transliterationを具現化する。図10には、本発明の計算の一体化プロセスフローの代表的な実施形態の概略を示している。プロセス1000では、段階1002において、プログラマが挿入した命令が付加されたマイクロプロセッサソースコード904が分析されて、データ格納段階908において、命令を有するマイクロプロセッサソースコードが生成される。段階1004の分析及び抽象化プロセスにより、ステートメントテンプレート、ソースコード分析、ソースコード要素及び命令パラメータが、それぞれデータ格納段階1006、1008、1010及び1012で生成される。分析及び抽象化プロセス1004は、言語固有のコード文テンプレートを生成し、後に一体化プロセス内で使用されるソースコード分析の結果、ソースコード命令から抽出されるパラメータ及び様々なソースコード要素例えば、サブルーチン変数リスト、プログラム変数の種類、構文解析済みコード構造等については、以下で詳細に説明する。そして、ステートメントテンプレート1006、ソースコード要素1010及び命令パラメータ1012が、命令ベースステートメント生成プロセス1014に入力されて、データ格納段階1016において命令固有コードが生成される。命令ベースステートメント生成プロセス1014では、命令は、特定の機能を実行するべく変数及びコード文のセットの生成を規定する。これは、これらに限定するわけではないが、データ移動命令、コード並列化、スカラーへの及びスカラーからのアレイ変換、メモリ割り当て、及び、所定のプロセッサアーキテクチャに対する命令の機能及び関連するソースコードを正確に且つ効率良く実装するのに必要とされるその他の構成であってもよい。この段階の終了時には、変数及びコード文の複数のセットが、一体化構成内に別個のオブジェクトとして存在する。次の段階である命令ベースステートメント収集プロセス1018では、生成された変数及びコード文が収集され、これらを相対的に適切な順番となるように並び替えられる。この段階の結果、1つの部分的に一体化されたソースコードオブジェクトが生成され、データ格納段階1020に示されている。ステートメント置換及び結合段階1022では、段階1020からの一体化命令ベース生成済みコードと、段階908における元のソースコードからの必須のコード文とを組み合わせる。元のソースコードの一部分は、一体化プロセスによって変換される必要がなく、この段階においてプロセスが生成したコードに統合される。コンパイルを成功させるのに必要なボイラープレートコードも、この段階で組み込まれる。ここで、ボイラープレートコードとは、プログラムの大部分又は全てに、ほとんど又は全く変更を加えることなく組み込まれるあらゆるコード文を意味する。この段階の結果、幾つかの完全な一体化されたソースコードファイルが生成されるが、一部は、段階910の一体化マイクロプロセッサソースコードと示されていているマイクロプロセッサを対象としたものであり、別の一部は、段階912の一体化されたその他のプロセッサソースコードと示されているヘテロジニアスシステムにおけるその他のプロセッサを対象としたものである。そして、一体化ソースコードファイルは、所定のプロセッサの種類に対して通常の態様で、実行のためにコンパイルされてもよい。図に示すように、データ格納段階910における一体化マイクロプロセッサコードが所定のプロセス1024でコンパイルされ、段階1026においてマイクロプロセッサ実行可能構成が生成され、一体化されたその他のプロセッサソースコードが所定の処理段階1208においてコンパイルされ、段階1030においてその他のプロセッサ実行可能構成が生成される。図11には、計算の一体化プロセス全体の代表的な実施形態の分析のプロセスフロー1100及び抽象化プロセス1004が示されている。字句及び構文解析段階1102において、命令908が付加されたマイクロプロセッサソースコードが分析されて、言語固有の構文解析ツールparser例えば、C、フォートラン、Python、MATALB等を使用して抽象構文木AbstractSyntaxTree:AST1104へと構文解析される。AST1104は、処理段階1106において、ソースコード構造分析のための情報構造を提供し、データ格納段階1008において、リソース見積もりのためのソースコード分析が提供される。AST1104はまた、データ抽出段階1108のための情報構造を提供して、ソースコード要素1010が提供される。そして、一体化命令及び規定された命令パラメータが、図に示すように命令パラメータ抽出プロセス110によって収集されて、命令パラメータ102が提供される。また、言語固有のコード文テンプレートが、図に示す生成プロセス1112によって生成されて、ステートメントテンプレート1006が提供される。ステートメントテンプレートは、命令ベースステートメント生成プロセス1014において一体化ソースコードファイルのための変数宣言及びコード文を生成するべく、後の一体化プロセスで使用される。図12は、計算の一体化プロセス全体の命令ベースステートメント生成プロセス1014のプロセスフロー1200を示した図である。プロセス1014は、マイクロプロセッサソースコード内の個別の一体化命令各々に対して実行される。データ格納段階1012における命令パラメータは、段階1202において構文解析された後、データ格納段階1204において後の使用に備えて格納される。処理段階1206において、これらのパラメータに、固有のエラーがないかチェックが行われる。構文解析済みパラメータ1204、1つ前の分析及び抽象化段階1004において抽出されたソースコード要素1010及び同段階で生成されたコードステートメントテンプレート1006が与えられると、一体化プロセスは、この命令に対して適切な変数宣言及びコード文を生成する。これは、処理段階1208によって示されており、命令固有コード1016が生成される。判定段階1210において、全ての命令が処理済である場合には、プロセス1200は、段階1202に戻る。全ての命令の処理がまだ終わっていない場合には、プロセス1200は、命令ベースステートメント収集プロセス1018に進む。プロセス1200は、この領域の専門知識及び所定のプロセッサの種類について効率的なコード生成の知識を具現化する全体的な一体化プロセスにおける一段階である。この段階では、個別の一体化命令及び規定されたパラメータに対する変数宣言及びコード文が生成される。図13は、計算の一体化プロセス全体の命令ベースステートメント収集プロセス1018のプロセスフロー1300を示した図である。命令固有コード1016及び一体化命令固有コードが、処理段階1302において演算されて、一体化命令固有コード1020が生成される。判定段階1304において、全ての命令の処理が終わっていない場合には、プロセス1300は段階1302に戻る。全ての命令の処理が終わっている場合には、プロセス1300は、ステートメント置換及び結合段階1022に進む。正しい順番で、コード文をコンパイル及び実行することが重要である。プロセス1300は、生成された命令固有コードセットの各々について、コード文を順番でアセンブル言語に翻訳する。アセンブルされた結果、印が付けられたギャップを有する1つのファイルオブジェクトが生成され、ギャップには、マイクロプロセッサソースコードファイルからの必要とされる無修正ソースコードが挿入されることとなる。図14は、計算の一体化プロセスフロー全体のステートメント置換及び結合プロセス1022のプロセスフロー1400を示した図である。データ格納段階1006におけるステートメントテンプレートは、処理段階1402において作動されて、データ格納段階1404において一体化プロセスソースコードが生成される。命令908が付加されたマイクロプロセッサソースコード及び一体化命令固有コード1020と共に、一体化プロセッサソースコード1408が処理段階1406において生成される。判定段階1410において、全てのプロセッサがアドレス指定されていない場合には、プロセス1400は段階1402に戻る。全てのプロセッサがアドレス指定されている場合には、プロセス1400は、図10に示したようなマイクロプロセッサソースコードコンパイル1024及びその他のプロセッサソースコードコンパイル1028の規定されたプロセスに進む。プロセス1400は、一体化ソースコードの順番に従ったアセンブリ言語への翻訳を完了する。プロセッサの各種類について適切なボイラープレートコードが生成されて、1つ前の段階で生成された一体化命令固有コードステートメントと結合される。無修正マイクロプロセッサソースコードステートメントの必要となる部分が、元のソースコード及び1つ前の段階で生成された一体化命令固有コードステートメントから抽出される。その結果、ヘテロジニアスプロセッサシステム上でのコンパイル及び実行に適した一体化ソースコードファイルのセットが生成される。図15には、本発明のプリコンピューテーション一体化プロセスフローのユースケース比較プログラマプロセスフローのプロセスフロー1500が示されている。このプロセスフローは、Carte開発環境を使用して、SRC-7ヘテロジニアスコンピュータに対するシステムプリコンピューテーション一体化プログラム開発を示している。この実施形態例において、SRC-7システムは、1つのマイクロプロセッサと1つのMAPプロセッサとを備える。段階1504において、プログラマは、自身のマイクロプロセッサCソースコード1502の性能を分析し、数値計算computeintensive性能カーネルを探す。カーネルの1つが見つかり、その性能カーネルを表すマイクロプロセッサソースコードの部分が、MAPプロセッサ上でメインのプログラムサブルーチンとして実行されるコード部分として特定される。コードの残りの部分、メインブロック及びその他のサブルーチンは、マイクロプロセッサで実行される。プログラマは、段階1506において、特定されたMAPプロセッササブルーチン内におけるデータフロー、及び、MAPプロセッサとマイクロプロセッサとの間の必要なデータフローを分析する。このデータフロー分析により、2種類のプロセッサ間の必要とされるデータ移動が判断される。データフロー分析、段階1508において規定されたデータ移動、及び、SRC-7システムをプログラミングする専門知識から、プログラマは、処理段階1510において、マイクロプロセッサ1512及びMAPプロセッサ1514のボイラープレートコードを生成する。この時点で、マイクロプロセッサコードが完結するが、MAPプロセッサコード1514は、マイクロプロセッサに対して書かれたコードを効率的に実行していない。これは、あらゆるコンピュータ言語におけるプログラミングイディオムは、そのプロセッサの種類に固有のものであり、必ずしも効率的なプログラムに直接変換されていないためである。プログラマは、マイクロプロセッサコード文のプログラミングイディオムを、MAPプロセッサに好適なプログラミングイディオムへと変換する。プログラマは、このタスクを達成するべく、処理段階1516で示されるように、SRC-7、プログラミング専門知識及びその他のリソースの経験を使用して、データ格納段階1518でMAPプロセッサCソ-スコードを生成する。そして、プログラマが生成したマイクロプロセッサ及びMAPプロセッサソースコードプログラムは、規定された処理段階1520に示されるように、Carte開発環境を使用してコンパイルされる。段階1522において得られた測定性能が、プロジェクトの性能目標を達成していないと判断段階1524で判断された場合には、プログラマは、熟考する状態に戻り、SRC-7アーキテクチャをより深く勉強し、疑問を解決し、実行性能のボトルネックを探して場所を特定し、段階1526に示すように、更なるシステムの検証を行う。性能目標を達成するために行われる、解決策を探る繰り返し行われるプロセスは、非効率的であり、プロジェクトスケジュールが遅延することにつながり、また、プログラマの能力に大きく依存するプロセスでもある。本発明の計算の一体化プロセスは、この問題を解決する。図16には、本発明の計算の一体化プロセスのユースケース比較のプロセスフロー1600が示されている。段階1604において、マイクロプロセッサCソースコード1602の性能が分析され、段階1606において、データフローが分析される。そして、段階1608において命令がマイクロプロセッサCソースコードに付加されて、データ格納段階1610において、命令が付加されたマイクロプロセッサソースコードが生成される。計算の一体化プロセス段階1612が、命令が付加されたマイクロプロセッサCソースコード1610に対して実行され、一体化マイクロプロセッサCソースコード1614及び一体化MAPプロセッサCソースコード1616が生成されて、データ格納段階1618においてCソースコード分析が提供される。そして、一体化マイクロプロセッサ及びMAPプロセッサCソースコード1614及び1616は、予め規定された段階1620において標準Carte環境でコンパイルされて、段階1622でSRCシステム実行可能構成が生成される。そして、段階1624において性能が測定されて、性能目標が達成されている場合には、プロセス1600が完了する。性能目標が達成されていない場合には、段階1628において、Cソースコード分析1618の検証が行われて、プロセス1600は、段階1606のデータフローの分析に戻る。図15で説明したプロセスフローと比較すると、この一体化プロセスフローは、主に2つの違いを有する。1つ目の違いは、一体化マイクロプロセッサ及びMAPプロセッサソースコードファイルは、プログラマがマイクロプロセッサソースコードファイルに挿入した命令を使用して自動的に生成される点である。マイクロプロセッサソースコードの性能及びデータフロー分析段階の結果は、適切な計算の一体化命令の選択についてプログラマに指針を与えるものとなる。2つ目の違いは、測定された実行性能が、プロジェクト性能目標に達していない場合には、一体化プロセスが、明確なヒント及び提案をプログラマに提供する点である。本発明の原理が特定のシステム及び方法を参照して説明されたが、上記の説明は、例示のみを目的として記載されており、本発明の範囲を限定することを目的としていない。特に、上記の説明の教示するところから、当業者であれば、その他の変形例を提案することができることは明らかである。このような変形例は、当業者に周知のその他の特徴を伴い、上記で説明した構成に替えて又は加えて使用されてもよい。本願では、特徴の特定の組み合わせを使用して請求項が構成されているが、本開示の範囲は、当業者にとって明らかな一般化された特徴又は変形例若しくは本明細書に明示的に又は黙示的に開示されている特徴の新規な組み合わせ又は新規な特徴を含み、これらの特徴が、添付の特許請求の範囲の請求項に現時点で記載されている同じ発明に関しているか、及び、本発明が直面する同じ技術的な問題の一部又は全てを解決しているかによって、開示の範囲は限定されない。また、出願人は、本願及び本願から派生する出願における審査過程で、このような特徴及びこのような特徴の組み合わせについて、新しい請求項を生成する権利を有する。本明細書で使用される備えるcomprise備えたcomprisingという用語及びその派生語は、非排他的包含を意図しており、列挙された特定の要素を備えるプロセス、方法、物品又は装置が、必ずしも、これらの要素のみを含むのではなく、明示的に列挙されてないその他の要素又はこのようなプロセス、方法、物品又は装置に本来備わっているその他の要素をも含み得ることを意味している。本願の記載の何れについても、特定の要素、段階又は機能が、特許請求の範囲に含まれなければならないことを指していると解釈されるべきではなく、本発明の特許性を有する特徴の範囲は、特許請求の範囲の記載によってのみ規定される。また、添付の特許請求の範囲において、meansfor分詞するための手段と明記されていない限り、35.U.S.C.セクション112の第6パラグラフを行使することを意図していない。"