(57)【特許請求の範囲】
【請求項１】
第１プロセッサ及び第２プロセッサを含むヘテロジニアスコンピュータシステムをプログラムする方法であって、
人間が挿入した命令が付加された第１プロセッサソースコードを生成する段階と、
コンピュータが、一体化第１プロセッサソースコード及び一体化第２プロセッサソースコードを生成するべく、前記命令が付加された第１プロセッサソースコードを計算的に一体化する段階と
を備え、
前記計算的に一体化する段階において、前記コンピュータは、
前記命令が付加された第１プロセッサソースコードを分析して、複数の一体化命令を収集し、
前記複数の一体化命令の各々に対して特定の機能を実行するべく、変数及びコード文のセットを含む複数の命令固有コードを生成し、
前記複数の一体化命令の各々を並べ替えて、一体化命令固有コードを生成し、
前記命令が付加された第１プロセッサソースコードのうち一体化プロセスによって変換されないコード文を、一体化命令固有コードに結合して、ソースコードファイルを生成し、
前記ソースコードファイルには前記一体化第１プロセッサソースコードと、前記一体化第２プロセッサソースコードとが含まれる方法。
【請求項２】
前記第１プロセッサは、黙示的デバイスである請求項１に記載の方法。
【請求項３】
前記第２プロセッサは、明示的デバイスである請求項１または２に記載の方法。
【請求項４】
第１プロセッサ実行可能プログラムを生成するべく、コンピュータが、前記一体化第１プロセッサソースコードをコンパイルする段階を備える請求項１から３の何れか１項に記載の方法。
【請求項５】
第２プロセッサ実行可能プログラムを生成するべく、コンピュータが、前記一体化第２プロセッサソースコードをコンパイルする段階を備える請求項１から４の何れか１項に記載の方法。
【請求項６】
前記計算的に一体化する段階は、
命令固有コードを生成するべく、コンピュータが、ステートメントテンプレート、ソースコード要素及び命令パラメータから、命令ベースステートメントを生成する段階を有する請求項５に記載の方法。
【請求項７】
前記計算的に一体化する段階は、
一体化命令固有コードを生成するべく、コンピュータが、前記命令固有コードから命令ベースステートメントを収集する段階を有する請求項６に記載の方法。
【請求項８】
ヘテロジニアスコンピュータシステムを計算的に一体化する方法であって、
人間が挿入した命令が付加された黙示的プロセッサソースコードを生成する段階と、
ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、コンピュータが、前記命令が付加された前記黙示的プロセッサソースコードを分析及び抽象化する段階と、
命令固有コードを生成するべく、コンピュータが、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成する段階と、
一体化命令固有コードを生成するべく、コンピュータが、前記命令固有コードから命令ベースステートメントを収集する段階と、
一体化黙示的プロセッサソースコード及び一体化明示的プロセッサソースコードを生成するべく、コンピュータが、前記一体化命令固有コード及び前記命令が付加された前記黙示的プロセッサソースコードをステートメント置換及び結合する段階と
を備え、
前記分析及び抽象化する段階は、
前記コンピュータが、前記命令が付加された黙示的プロセッサソースコードを分析して、複数の一体化命令を収集する段階を有し、
前記命令ベースステートメントを生成する段階は、
前記コンピュータが、前記複数の一体化命令の各々に対して、特定の機能を実行するべく変数及びコード文のセットを含む複数の命令固有コードを生成する段階を有し、
前記命令ベースステートメントを収集する段階は、
前記コンピュータが、前記複数の一体化命令の各々を並べ替えて、一体化命令固有コードを生成する段階を有し、
前記コンピュータが、ステートメント置換及び結合する段階は、
前記コンピュータが、前記命令が付加された黙示的プロセッサソースコードのうち、一体化プロセスによって変換されないコード文を、一体化命令固有コードに結合して、ソースコードファイルを生成する段階を有し、
前記ソースコードファイルには前記一体化黙示的プロセッサソースコードと、前記一体化明示的プロセッサソースコードとが含まれる方法。
【請求項９】
黙示的プロセッサ実行可能構成を生成するべく、コンピュータが、前記一体化黙示的プロセッサソースコードをコンパイルする段階と、
明示的プロセッサ実行可能構成を生成するべく、コンピュータが、前記一体化明示的プロセッサソースコードをコンパイルする段階と
を更に備える請求項８に記載の方法。
【請求項１０】
ヘテロジニアスコンピュータシステムを計算的に一体化する方法を実装させるプログラムであって、
システムに、
ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、人間により命令が付加された黙示的プロセッサソースコードを分析及び抽象化する段階と、
命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成する段階と、
一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集する段階と、
一体化黙示的プロセッサソースコード及び一体化明示的プロセッサソースコードを生成するべく、前記一体化命令固有コード及び前記命令が付加された前記黙示的プロセッサソースコードをステートメント置換及び結合する段階と
を実行させ、
前記分析及び抽象化する段階は、
前記コンピュータが、前記命令が付加された黙示的プロセッサソースコードを分析して、複数の一体化命令を収集する段階を有し、
前記命令ベースステートメントを生成する段階は、
前記コンピュータが、前記複数の一体化命令の各々に対して、特定の機能を実行するべく変数及びコード文のセットを含む複数の命令固有コードを生成する段階を有し、
前記命令ベースステートメントを収集する段階は、
前記コンピュータが、前記複数の一体化命令の各々を並べ替えて、一体化命令固有コードを生成する段階を有し、
前記ステートメント置換及び結合する段階は、
前記命令が付加された黙示的プロセッサソースコードのうち一体化プロセスによって変換されないコード文を、一体化命令固有コードに結合して、ソースコードファイルを生成する段階を有し、
前記ソースコードファイルには前記一体化黙示的プロセッサソースコードと、前記一体化明示的プロセッサソースコードとが含まれるプログラム。
【請求項１１】
黙示的プロセッサ実行可能構成を生成するべく、前記一体化黙示的プロセッサソースコードをコンパイルするように構成されたコンピュータ可読プログラムコードと、
明示的プロセッサ実行可能構成を生成するべく、前記一体化明示的プロセッサソースコードをコンパイルするように構成されたコンピュータ可読プログラムコードとを備える請求項１０に記載のプログラム。
【請求項１２】
第１のプロセッサ種類及び第２のプロセッサ種類を含むヘテロジニアスコンピュータシステムをプログラミングする方法を実装させるためのプログラムであって、
システムに、
一体化第１プロセッサソースコード及び一体化第２プロセッサソースコードを生成するべく、命令が付加された第１プロセッサソースコードを計算的に一体化する段階と
を実行させ、
前記第１のプロセッサ種類の前記ソースコードは、命令が付加された第１プロセッサソースコードを生成するべく、人間により命令が付加され
前記計算的に一体化する段階は、
前記命令が付加された一体化第１プロセッサソースコードを分析して、複数の一体化命令を収集する段階と、
前記複数の一体化命令の各々に対して、特定の機能を実行するべく変数及びコード文のセットを含む複数の命令固有コードを生成する段階と、
前記複数の一体化命令の各々を並べ替えて、一体化命令固有コードを生成する段階と、
前記命令が付加された一体化第１プロセッサソースコードのうち一体化プロセスによって変換されないコード文を、一体化命令固有コードに結合して、ソースコードファイルを生成する段階と
を有し、
前記ソースコードファイルには前記一体化第１プロセッサソースコードと、前記一体化第２プロセッサソースコードとが含まれるプログラム。
【請求項１３】
前記第１のプロセッサ種類は、黙示的デバイスである請求項１２に記載のプログラム。
【請求項１４】
前記第２のプロセッサ種類は、明示的デバイスである請求項１２または１３に記載のプログラム。
【請求項１５】
前記計算的に一体化する段階は、ソースコード分析を生成する段階を含む請求項１２から１４の何れか１項に記載のプログラム。
【請求項１６】
第１プロセッサ実行可能プログラムを生成するべく、前記一体化第１プロセッサソースコードをコンパイルする段階を備える請求項１２から１５の何れか１項に記載のプログラム。
【請求項１７】
第２プロセッサ実行可能プログラムを生成するべく、前記一体化第２プロセッサソースコードをコンパイルする段階を備える請求項１２から１６の何れか１項に記載のプログラム。
【請求項１８】
前記計算的に一体化する段階は、
ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、前記命令が付加された第１プロセッサソースコードの分析及び抽象化を行う段階を含む請求項１２から１７の何れか１項に記載のプログラム。
【請求項１９】
前記計算的に一体化する段階は更に、
命令固有コードを生成するべく、前記ステートメントテンプレート、前記ソースコード要素及び前記命令パラメータから、命令ベースステートメントを生成する段階を含む請求項１８に記載のプログラム。
【請求項２０】
前記計算的に一体化する段階は更に、
一体化命令固有コードを生成するべく、前記命令固有コードから命令ベースステートメントを収集する段階を含む請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ヘテロジニアスコンピュータシステムの分野に関する。より詳細には、本発明は、ヘテロジニアス黙示的及び明示的処理要素の計算の一体化のためのシステム及び方法に関する。
【０００２】
［関連出願］
本発明は、２０１０年１１月１０日出願の米国仮出願６１／４１２，１２４号明細書の優先権を主張するものであり、前記出願の内容は、参照により本明細書に組み込まれる。
【０００３】
［著作権情報／許諾］
この特許文献の開示の一部には、著作権保護の対象となる内容が含まれる。著作権所有者は、米国特許商標局の特許ファイル又は特許記録に存在する特許開示の特許文献の何人による複製にも異議を唱えないが、それ以外については、著作権をも保有する。Copyright 2011, SRC Computers LLC（登録商標、２０１１年、エス・アール・シー・コンピューターズ有限責任会社）という登録商標の表示は、適用される図面を含む、以下に記載されるソフトウェア及びデータに適用される。
【背景技術】
【０００４】
様々な要素の一体化を進めると、複数の主要要素によって達成可能な事項を上回る新規要素の創出につながる場合がある。コンピュータの分野がその一例である。本発明の譲受人であるSRC Computers LLC（エス・アール・シー・コンピューターズ社）は、黙示的プロセッシング要素及び明示的プロセッシング要素の一体化が、多くの利益をもたらすことを発見した。一体化は、単純に、２つの処理形態を１つのシステムに存在させることではない。一体化は、拡張性、データ移動、相互接続、集約及びプログラム可能性を含むシステムの様々な側面を包含する。
【０００５】
一体化とは、これに限定するわけではないが、ヘテロジニアスプロセッサシステム上で実行される１以上の関連する実行可能プログラムのセットの生成を意味する。このヘテロジニアスプロセッサシステム上で実行される１以上の関連する実行可能プログラムのセットは、１種類のプロセッサのソースコードから生成される。例えば、一体化プロセス、並びに、マイクロプロセッサ及びＦＰＧＡベースのプロセッサ要素の両方を含むヘテロジニアスシステムに対する一体化ソースコードを生成する方法に対して、コンピュータアプリケーションのマイクロプロセッサソースコードが提起される。マイクロプロセッサコンパイルツールは、生成された一体化マイクロプロセッサソースコードを取得し、マイクロプロセッサ実行可能プログラムを生成する。その一方で、ＦＰＧＡベースのプロセッサコンパイルツールは、生成された一体化ＦＧＰＡベースのプロセッサソースコードを取得して、ＦＰＧＡベースのプロセッサ実行可能プログラムを生成する。実行可能プログラムは、ヘテロジニアスシステム上で協働して実行される。
【０００６】
マイクロプロセッサのクロック速度（すなわち、性能）は、高クロック速度では熱が過度に発生することから、これ以上速度を上げることはできない。そこで、高性能であると感じられるようにするべく、マイクロプロセッサの製造者は、クロック速度を下げる替わりに、１つのチップ上のマイクロプロセッサの数を多くすることで対応している。この場合、線形的な実行性能改善よりも少ない改善となる。すなわち、２つのコアの場合、１つのコアの場合の１．５倍の性能となる。４つのコアの場合は、１つのコアの場合の３倍の性能となる。
【０００７】
また、１つのマイクロプロセッサをプログラムするよりも、複数のコアを有するマルチコアプロセッサをプログラムするのは難しい。マルチコアの各々を１つのマイクロプロセッサとして、プログラムする方法では、各コアが、マルチコアチップ上の共有リソースを争ってしまうことから、うまくいかない。そこで、開発者は、スレッド、ＯｐｅｎＭＰ及びその他の技術を使用して、並列プログラミングを行う必要があるが、これは、１つのマイクロプロセッサをシリアル的にプログラムするように容易ではない。
【０００８】
マルチコアマイクロプロセッサの限界を超えて、システム全体の性能を改善する試みとして、多くの開発者が、性能アクセラレータ・コプロセッサ設計パラダイムへの転換を図った。この設計方法では、アプリケーションプログラムの一部に対する優れた性能特性を有するプロセッサ要素を、ある種類の既存の入出力（Ｉ／Ｏ）バスインターコネクトを介してマイクロプロセッサに接続する。マイクロプロセッサは、アプリケーションを実行する、データ転送を起動する及びアプリケーションデータの一部に対してアクセラレータ・コプロセッサがいつ、どのように動作するのかを決定する役割を果たす。このようなアクセラレータ・コプロセッサ要素の例としては、グラフィックプロセッシングユニット（ＧＰＵ）、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）及び特定用途向け集積回路（ＡＳＩＣ）が含まれる。しかしながら、この種のシステム設計では、２つの理由から、全体として良好なアプリケーション性能を達成することができていない。１つ目の理由は、マイクロプロセッサ及びそのアクセラレータ・コプロセッサの間でのデータ移動に時間が掛かり、コプロセッサで得られる性能向上の効果を消してしまうことであり、２つ目の理由は、この種のシステム設計では、協働するためにコプロセッサ要素がマイクロプロセッサを介して動作しなくてはならないことから、拡張性がないことである。
【０００９】
これらのハイブリッド・コプロセッサシステムは、マルチコアマイクロプロセッサに備わる同様なプログラミングの難しさを有し、また、異なる種類のプロセッサ要素をプログラムする必要があることから、更に複雑性が増している。異なる種類のプロセッサ要素は、異なるプログラミングモデル、効率的なコード生成のための異なるイディオム及び異なるプログラミング言語を有する。
【００１０】
アクセラレータ・コプロセッサ設計モデルにおける性能向上が制限されてしまうのを避けるために、エス・アール・シー・コンピューターズ社では、あらゆる数のヘテロジニアスプロセッサ要素及び混合をサポートする高帯域拡張可能システムインターコネクトを設計した。インターコネクト設計により、プロセッサの種類を問わず全てのプロセッサ要素が、（階層構造のコプロセッサモデルとは異なり）、ピアとして協働して、アプリケーションプログラムを実行する。ＳＲＣシステム設計は、マルチコアマイクロプロセッサ又はアクセラレータ・コプロセッサ設計が提供できる性能を超えて、システム実行全体の性能を大幅に改善できる。
【００１１】
しかしながら、プロセッサ要素のピア協働を可能とする既存のシステムは、システム全体に渡る計算の一体化を達成することが未だできておらず、現在の設計では、実質的にアクセラレータ・コプロセッサモデルに備わる同様なプログラミング複雑性を呈している。
【発明の概要】
【００１２】
本発明は、ヘテロジニアス黙示的及び明示的処理要素の計算の一体化のための有益なシステム及び方法を提供する。本発明の計算の一体化プロセスは、アクセラレータ及びコプロセッサモデルに備わる複雑性を取り除き、プログラムが既存のシステムに備わる高性能機能に容易にアクセス可能となることから、計算的に一体化されたコンピュータシステムを生成することができる。
【００１３】
計算の一体化は、あらゆる数の黙示的又は明示的プロセッシング要素の集約をサポートする。これらプロセッシング要素は、いかなる数の及びいかなる種類の黙示的又は明示的コンピュータデバイス又はサブシステムであってもよく、マイクロプロセッサ、ＧＰＵ、スタンドアローンＦＰＧＡ、ＦＰＧＡベース再構成可能プロセッサ、ＡＳＩＣ等を含む。これらの異なるプロセッシング要素を、様々なプログラミング言語又は方法を使用してプログラムしてもよく、例えば、スレッド、ＯｐｅｎＭＰ、再構成可能要素の明示的コンパイル、ＯＰｅｎＣＬ、ＭＡＴＬＡＢ、Ｃ、フォートラン等を使用してもよい。いかなる数の黙示的又は明示的コンピュータ要素を、いかなる種類のヘテロジニアスコンピュータシステムに集約してもよく、１つの一体化ワークステーションから、大型ネットワーククラスタコンピューティング、そして、大型分散型コンピューティング（例えば、クラウド及びグリッドコンピューティング）に至るまで、様々な種類のシステムに集約してもよい。計算の一体化は、黙示的又は明示的プロセッシング要素の固有のイディオム及びスタイルの各々に対する最新の専門知識及び領域知識を組み込むため、プログラマは、各プロセッシング要素についての専門家となる必要がない。
【００１４】
高性能コンピュータシステムは、ハードウェア内の性能可能性にプログラム的にアクセスする手段がなければ、単なるハードウェアの集合体に過ぎない。システムが、独自のプログラミングスタイル、イディオム及び言語を有する複数の種類の黙示的及び明示的プロセッサ要素を含む場合には、なおのことである。したがって、平均的なプログラマが知らない特殊で分かりにくい複雑なプログラミング技術を必要とする場合がある。
【００１５】
コンピュータの一体化では、１つのソースコードプログラムから命令型ステートメントに至るあらゆる数及び種類の黙示的及び黙示的プロセッシング要素に対する一体化ソースコードプログラムが生成される。計算の一体化構成は、構文解析済みソースコード及びプログラマ挿入命令内の意味的（semantic）構造を分析して、１以上の黙示的及び／又は明示的プロセッサ要素をターゲットとする適切なソースコードを生成する。  命令には、生成されるソースコードの様々な部分を生成することを指示するパラメータを含む。
【００１６】
黙示的又は明示的プロセッシング要素のプログラムスタイル及びイディオムに関する専門知識は、計算の一体化構成に具現化される。元のアプリケーションソースコードは、経験のあるプログラマが、あらゆる所与の黙示的又は明示的プロセッサ要素に対して利用可能である同じ技術、イディオム及びスタイルを使用して一体化される。これにより、黙示的及び／又は明示的プロセッサ要素の各種類に対する効率的及び高性能プログラミングを可能とする。効率的なプログラミングの一例として、プロセッサ要素の演繹的知識、計算の一体化構成の分析に具現化される最新の専門知識、並びに、元のソースコードにおける意味的構造及びパラメータ化された命令を使用した元のアプリケーションソースの自動並列化が挙げられる。
【００１７】
計算の一体化ソースコード分析は、特定のヒント及び提案をプログラマに提供する形態でプログラミングの専門知識を具現化する。これらのヒント及び提案は、プロセッサ要素の演繹的知識、計算の一体化構成分析に具現化される最新の専門知識、並びに、元のソースコードにおける意味的構造及びをパラメータ化された指示を使用して生成される。これにより、プログラマは、ヘテロジニアスシステムのトレードオフ（例えば、実行並列化の量に対するシステムリソース利用率、所与のシステムインターコネクトに対するデータ移動のヒント等）について、ガイド付きの選択を行うことが可能となる。
【００１８】
高度に抽象化された言語（例えば、Ｐｙｔｈｏｎ及びＭＡＴＬＡＢ）で書かれたアプリケーションソフトウェアソースコードは、しばしば抽象化レベルの低い言語（例えば、Ｃ、フォートラン）で書き直す必要がある。計算の一体化は、プロセッサ要素の演繹的知識、計算の一体化構成の分析に具現化される最新の専門知識、並びに、元のソースコードにおける意味的構造及びパラメータ化された指示を使用して、このソフトウェアソースコードの書き直しを提供する。
【００１９】
プロセッサ要素の各種に対するソースコードを維持しなければならない場合には、アプリケーションソースコードの（ソフトウェアエンジニアリングの意味での）メンテナンスが難しくなる。計算の一体化がソフトウェアメンテナンスを提供するには、１つのソースコードベース及び一体化構成の命令が維持されなければならない。計算の一体化プロセスは、プロセッサ要素の演繹的知識、計算の一体化構成の分析に具現化される最新の専門知識、並びに、元のソースコードにおける意味的構造及びパラメータ化された指示から、１種類のプロセッサ要素のソースコードから多種類のプロセッサ要素に対する実行可能コードを生成する。
【００２０】
プロセッサの１種類に対するコードの１以上のライン（高密度コード：dense code）を、プロセッサ要素の別種類に対するコードの多数のラインへと拡張してもよい。計算の一体化は、自動的に高密度コードの１以上のラインを、目的の黙示的及び／又は明示的プロセッサ要素の種類が必要とする多数のラインへと拡張する。これは、通常の計算の一体化プロセス、プロセッサ要素の演繹的知識、計算の一体化構成の分析に具現化される最新の専門知識、並びに、元のソースコードにおける意味的構造及びパラメータ化された命令の一部である。
【００２１】
本明細書では、システムインターコネクト、黙示的及び／又は明示的プロセッサ要素を備えるコンピュータ一体化システム、及び、システムのプログラミングを容易にするコンピュータ一体化方法プロセスを開示する。更に、効率的な黙示的及び／又は明示的プロセッサソフトウェアの並列化及びリソース利用及び検証のための方法を開示する。また、黙示的及び／又は明示的プロセッサのためのプロセッサソフトウェアソースコード変換のための方法、及び、黙示的及び／又は明示的プロセッサソフトウェアメンテナンス及び高密度ソフトウェアソースコード拡張のための方法を開示する。また、計算の一体化システムの利用、及び、アプリケーションソフトウェアメンテナンスの負荷を低減し、アプリケーションソースコード表記変換、拡張及び並列化を実行する方法を開示する。
【００２２】
特に、本明細書では、第１プロセッサ及び第２プロセッサを含むヘテロジニアスコンピュータシステムをプログラミングするための方法及びコンピュータプログラム物品であって、命令が付加された第１プロセッサソースコードを生成するべく、第１プロセッサのソースコードに命令を付加する段階と、一体化第１プロセッサソースコード及び一体化第２プロセッサソースコードを生成するべく、命令が付加された第１プロセッサソースコードを計算的に一体化する段階とを備える方法及びコンピュータプログラム物品を開示する。第１及び第２プロセッサはそれぞれ、黙示的及び明示的デバイスであってもよい。
【００２３】
また、本明細書では、ヘテロジニアスコンピュータシステムを計算的に一体化する方法及びコンピュータプログラム物品であって、黙示的プロセッサソースコードに命令を付加する段階と、ステートメントテンプレート、ソースコード要素及び命令パラメータを生成するべく、命令が付加された黙示的プロセッサソースコードを分析及び抽象化する段階と、命令固有コードを生成するべく、ステートメントテンプレート、ソースコード要素及び命令パラメータから、命令ベースステートメントを生成する段階と、一体化命令固有コードを生成するべく、命令固有コードから命令ベースステートメントを収集する段階と、一体化黙示的プロセッサソースコード及び一体化明示的プロセッサソースコードを生成するべく、一体化命令固有コード及び命令が付加された黙示的プロセッサソースコードを置換及び結合する段階とを備える方法及びコンピュータプログラム物品を開示する。
【００２４】
本発明の上記及びその他の特徴及び目的及び目的を達成する態様が、添付の図面と共に以下に記載する好ましい実施形態を参照することにより理解されるであろう。
【図面の簡単な説明】
【００２５】
【図１】計算の一体化システムを実装可能なシステムの及び本発明の方法をＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＴアーキテクチャの形式で示した代表的な実施形態のハイレベルブロック図である。
【図２】フィールド・プログラマブル・ゲート・アレイを使用した前図における明示的デバイスとして使用される再構成可能ダイレクト・エクセキューション・ロジックを含むＭＡＰ（登録商標）プロセッサの機能ブロック図である。
【図３】市販のマイクロプロセッサ及び最大３つのＭＡＰプロセッサのような高密度ロジックデバイスのサポートを提供するマルチポート共有メモリの機能ブロック図である。
【図４】１つのＭＡＰプロセッサＭＡＰｓｔａｔｉｏｎ（登録商標）の機能ブロック図である。
【図５】マルチポート共有メモリモジュールを介して相互接続される図２のＭＡＰプロセッサのうちの３つを含むＭＡＰｓｔａｔｉｏｎシステムの機能ブロック図である。
【図６】マイクロプロセッサ及び前図のＭＡＰプロセッサを直接接続構成で実装したクラスタシステムの機能ブロック図である。
【図７】マイクロプロセッサ、ＭＡＰプロセッサ及び／又は共有メモリデバイスを含む１６個のノードと接続される最大１６個のＩ／Ｏポートを有するエス・アール・シー・コンピューターズが登録商標権を有するＨｉ−Ｂａｒ（登録商標）スイッチを利用した本発明の一実施形態を実装するためのコンピュータシステムの機能ブロック図である。
【図８】市販のマイクロプロセッサ及びＭＡＰプロセッサの形態のダイレクト・エクセキューション・ロジックのような高密度ロジックデバイスを対象とした１つの一体化実行可能構成を生成するための代表的なコード開発プロセスを示した図である。
【図９】ユーザーレベルにおける本発明の計算の一体化プロセスフローの概略を示した図である。
【図１０】計算の一体化プロセスフローの概略を示した図である。
【図１１】分析のプロセスフロー及び計算の一体化プロセスフロー全体の抽象化プロセスを示した図である。
【図１２】計算の一体化プロセスフロー全体の命令型ステートメント生成プロセスのプロセスフローを示した図である。
【図１３】計算の一体化プロセスフロー全体の命令ベースステートメント収集プロセスのプロセスフローを示した図である。
【図１４】計算の一体化プロセスフロー全体のステートメント置換及び結合プロセスのプロセスフローを示した図である。
【図１５】プリコンピューテーション一体化プロセスフローのユースケース比較プログラマプロセスフローのプロセスフローを示した図である。
【図１６】本発明の計算の一体化プロセスのユースケース比較のプロセスフローである。
【発明を実施するための形態】
【００２６】
本発明の譲受人であるエス・アール・シー・コンピューターズ社は、現在の高性能マイクロプロセッサで達成される性能よりも大幅に改善されたプロセッサの性能を達成可能な新規なハードウェアアーキテクチャ及びプログラミング環境を開発した。この新規なアーキテクチャは、ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴ（登録商標）アーキテクチャ（エス・アール・シー・コンピューターズ社の登録商標）と称され、本明細書に開示される発明の計算の一体化システムのアプリケーション及び方法の代表的な実施形態を含む。
【００２７】
このアーキテクチャを使用して開発されたシステムは、Ｃ又はフォートランのような高級言語で記載されたユーザーのコードを、密結合された黙示的（implicitly）及び明示的に制御されるプロセッサの混合上で実行する。これにより、プログラマは、標準的なＬｉｎｕｘ（登録商標）オペレーティングシステム及びレガシーコードの実行といった黙示的に制御される機能と、アプリケーション固有のデータプリフェッチ、データアクセス及び機能ユニットの利用といった明示的に制御される機能との両方を利用することが可能となる。このアーキテクチャは、携帯デバイスから大型のマルチラックシステムにわたる幅広い大きさのシステムに適用可能である。
【００２８】
ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴアーキテクチャを容易に実装するべく、エス・アール・シー・コンピューターズ社は、Ｃａｒｔｅ（登録商標）プログラミング環境（エス・アール・シー・コンピューターズ社の登録商標）を開発した。Ｃａｒｔｅプログラミング環境のツールは、ハードウェア並びにエミューレーション及びシミュレーション環境でのコード開発及び実行をサポートする。これらのソフトウェアツールは、例えば、高級言語であるＣ又はフォートランのコードを使用し、その部分をコンパイルして、黙示的に制御されるマイクロプロセッサ上で実行する。これらのツールはまた、明示的に制御される再構成可能（reconfigurable）ＭＡＰ（登録商標）プロセッサ（エス・アール・シー・コンピューターズ社の登録商標）が必要とする設定情報を生成する。所定のアプリケーションに対して両方の種類のプロセッサを制御するのに必要な要素は全て、Ｃａｒｔｅプログラミング環境によって１つの一体化実行可能構成に組み合わせられる。Ｃａｒｔｅツールによって生成されたこの一体化実行可能構成は、一体化実行可能構成がＣａｒｔｅツールによって生成された実行可能プログラムの両方を含む点において、計算の一体化とは区別される。計算の一体化とは、１つのプロセッサソースコードから、ヘテロジニアスシステムのための１以上の実行可能プログラムを生成することを指す。
【００２９】
このように、プログラマは、標準的な高級プログラミング言語及びプログラミングモデルを使用して、黙示的及び明示的に制御されるプロセッサの両方を有するシステムを制御することができ、マイクロプロセッサのみを使用した場合と比較して、低消費電力及び小型で、プロセッサ毎の計算性能を大幅に改善させることができる。
【００３０】
図１は、計算の一体化システムを実装可能なシステム１００及び本発明の方法をＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＴアーキテクチャの形式で示した代表的な実施形態のハイレベルブロック図である。
【００３１】
システム１００は、関連する部分において、例えば、フォートラン又はＣプログラミング言語によるアプリケーションソースファイルの入力を可能とするＣａｒｔｅプログラミング環境１０４を通じて生成される、一体化実行可能構成１０２を含む。黙示的（implicit）デバイス１０６及び明示的（explicit）デバイス１０８は、以下に詳細に説明するＣａｒｔｅプログラミング環境を介してプログラムされ、両デバイスはこの環境と結合して、共有メモリ１１０へのアクセスを提供する。
【００３２】
このようなアーキテクチャでは、明示的及び黙示的プロセッサ１０６、１０８は、共有メモリ１１０の形式でのシステムメモリコンテンツへのアクセスを提供する能力を有する観点では、ピアデバイスである。このような態様により、同じプログラム上で両種類のプロセッサが共に動作することに起因するオーバヘッドを最小にすることができる。そして、ＳＲＣ  Ｃａｒｔｅプログラミングツールにより、制御を渡すことによる不利益を考慮することなく、アプリケーション全体の所定の部分に最適な種類のプロセッサを利用することが可能となる。
【００３３】
黙示的デバイス１０６は、高密度ロジックデバイス（Dense Logic Device：ＤＬＤ）とも称され、マイクロプロセッサ、デジタル信号プロセッサ、グラフィックス・プロセッサ・ユニット（ＧＰＵ）及び特定用途向け集積回路（ＡＳＩＣ）の一部を含む構成要素の一群を包含する。これらの処理要素は、全て黙示的に制御され、典型的には、ユーザーによって変更されない固定ロジックで構成されている。これらのデバイスは、所定の接続及び機能を有する固定ロジックにおいて、段階的な態様でソフトウェア指示命令（software-directed instruction）を実行する。
【００３４】
一方、明示的デバイス１０８は、ダイレクト・エクセキューション・ロジック（ＤＥＬ）と称され、明示的に制御されて典型的には再構成可能な構成要素の一群を包含する。このような構成要素として、フィールド・プログラマブル・アレイ（ＦＰＧＡ）、フィールド・プログラマブル・オブジェクト・アレイ（ＦＰＯＡ）及びコンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）が含まれる。特定のコードにおける並列処理の特性を最大にするための、所望のコンピュータプリフェッチ及び／又はデータアクセス機能を実装するべく、構成要素のセットにより、選択された機能ユニット間の最適化された接続を確立させるプログラムを可能とする。
【００３５】
黙示的デバイス１０６（ＤＬＤ）及び明示的デバイス１０８（ＤＥＬ）処理要素の両方は、ピアとして、同じ態様で又は別の態様で、共有システムメモリ（例えば、共通メモリ１１０）と接続され、データ共有は明示的態様で実装することができることから、接続は、キャッシュコヒーレンシをサポートすることを要求されない。
【００３６】
明示的デバイス１０８のＤＥＬコンピューティングは、ダイナミックロジックを使用することから、１つのサイズが全てに適合する固定マイクロプロセッサアーキテクチャにアプリケーションを組み込むのではなく、アプリケーションに適合するようにダイナミックロジックを使用する。これにより、機能ユニットの正確性及びコードにおける並列性の点において、特定のコードに対する最も効率的な回路を提供することができる。このようにして得られるのが、所定のコードを使用して発展させることが可能であり及び／又は異なるコードを扱う第２部分の一部として再プログラム可能な、ダイナミック・アプリケーションスペシフィック・プロセッサ（動的特定用途向けプロセッサ）である。ＤＥＬコンピューティングは、特定用途コンピュータの性能及び経済的な汎用機械をユーザーに提供する。
【００３７】
エス・アール・シー・コンピュータズ社製の現在の汎用コンピュータシステムには、ＳＲＣ−７製品ラインとして、ＭＡＰｓｔａｔｉｏｎ（登録商標）ワークステーション（エス・アール・シー・コンピュータズ社の登録商標）、高性能ラックベースのシステム及び航空機搭載システムが含まれる。これらのシステムは全て同じ黙示的及び明示的に制御されるシステム構成要素、及び、同じＳＲＣ  Ｃａｒｔｅプログラミング環境を使用しており、システム間の完全なアプリケーション移植性を可能としている。
【００３８】
カルテプログラミング環境は、プログラマが、黙示的デバイス及び明示的デバイスの両方においてアプリケーションを規定するのにＡＮＳＩ標準フォートラン又はＣ高級言語を使用可能とすることにより、このようなシステムインテグレーションを可能にしている。Ｃａｒｔｅプログラミング環境におけるコンパイルからの生成物は、１つの一体化された、目的のＳＲＣヘテロジニアス（異機種）コンピュータシステムにおいて実行可能な生成物となる。明示的デバイスは、ＡＮＳＩ標準コンピュータ言語を使用すると同時に、明示的デバイスが、黙示的デバイスプログラムで使用される表現とは区別される言語が使用される表現を利用する自身のプログラミングイディオムを有してもよい。
【００３９】
現在入手可能なヘテロジニアスコンピュータシステムでは、低い帯域幅及び高いレイテンシの入出力バスが、ＦＰＧＡデバイスとＣＰＵとを分離している。ＳＲＣ ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴアーキテクチャは、ＣＰＵ及びＭＡＰプロセッサが、システムメモリに対してピアとして動作することを可能とすることにより、この制限を排除する。つまり、システムメモリの帯域幅及びレイテンシのみがこれらのデバイスを制限することとなり、ＳＲＣシステムにおけるアプリケーションの性能全体を大幅に改善させることができる。標準的な言語、及び、ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴアーキテクチャのシステムメモリ特性によってのみ制限される黙示的及び明示的デバイスを使用する一体化プログラミング環境は、今日入手可能なあらゆるワークステーション又はコンピュータクラスタノードでは並ぶものが存在しない程に、利用が容易で高性能なアプリケーションプラットフォームをユーザーに提供できる。
【００４０】
ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴアーキテクチャは、ユーザーが、現存のコードを実行する又は容易に再コンパイルすることを可能にして、システムの再構成可能ＭＡＰプロセッサの力を利用して新しいコードを開発することができるようになる。このハードウェア及びソフトウェアアーキテクチャは、マイクロプロセッサ技術と再構成可能ＭＡＰプロセッサとを統合して、性能及び消費電力低減の桁違いの改善をもたらすことができる。ＳＲＣ  Ｃａｒｔｅプログラミング環境は、コードのマイクロプロセッサ部分と再構成可能プロセッサ部分の協働というプログラマが面してきた歴史的課題を解決した。
【００４１】
ＩＭＰＬＩＣＩＴ＋ＥＸＰＬＩＣＩＴアーキテクチャは、１つのＭＡＰｓｔａｔｉｏｎワークステーション又は組み込みシステムから、Ｈｉ−Ｂａｒスイッチベースの構成のクラスタにわたる範囲のシステムにおいて利用可能であり、これらについては以下に詳述する。これらの構成の全ては、同じ基本ハードウェア及びソフトウェアの構成要素を使用することから、コードの完全な相互運用性を提供できる。
【００４２】
図２は、フィールド・プログラマブル・ゲートアレイを使用した１つ前の図における明示的デバイスとして使用される再構成可能ダイレクト・エクセキューション・ロジックを含むＭＡＰプロセッサ２００の機能ブロック図である。
【００４３】
ＭＡＰプロセッサ２００は、関連する部分において、双方向にＭＡＰプロセッサ２００を、別のプロセッサモジュール又はＨｉ−Ｂａｒスイッチポートへと接続するためのコントローラ２０２を含む。例えば、各々が１ＧＢのスタティックランダムアクセスメモリ（ＳＲＡＭ）である一組の高速オンボード共有メモリアレイ（ＯＢＣＭ）が、利用可能な帯域幅４．２ＧＢ／秒を有するバスによってそれぞれ、コントローラ２０２と双方向接続される。一組のＦＰＧＡ２０６（ＦＰＧＡ１及びＦＰＧＡ２）は、帯域幅１４．４ＧＢ／秒を有する双方向バスを介してコントローラに接続され、また、帯域幅４．８ＧＢ／秒を有するバスによって互いに接続される。ＦＰＧＡ２０６はまた、帯域幅１９．２ＧＢ／秒を有するバスによって、約６４ＭＢのオンボードメモリアレイ（ＯＢＭ）２０８と双方向接続されると同時に、帯域幅１２．０ＧＢ／秒の帯域幅を有する双方向バスを介して汎用Ｉ／Ｏ（ＧＰＩＯＸ）ポートとも接続される。
【００４４】
ＭＡＰプロセッサ２００は、高性能ＤＥＬプロセッサを含む。ＭＡＰプロセッサ２００は、ＦＰＧＡ２０６の形態で再構成可能構成要素を利用し、制御及びユーザー規定の計算、データプリフェッチ及びデータ機能の両方を達成する。この計算機能は、非常に高い帯域幅の、オン及びオフボード接続と組み合わせられる。ＭＡＰプロセッサ２００は、ＳＲＡＭオンボードメモリ２０４の複数のバンクを使用して、ローカルメモリ帯域幅１９，２００ＭＢｓ／秒を提供する。ＭＡＰプロセッサ２００は更に、入力ポート及び出力ポートのセットを２つ含み、各ポートは、データペイロード帯域幅３６００ＭＢ／秒を維持する。ＭＡＰプロセッサ２００はまた、システム内のあらゆるプロセッサによってアクセス可能なＳＤＲＡＭのグローバルに共有される共通メモリの２つのバンクを有する。ＭＡＰプロセッサ２００はそれぞれ、ＭＡＰプロセッサ２００がＭＡＰプロセッサ２００接続を命令する又はデータ入力を検出するための、最大１２．０ＧＢ／秒の更なるデータペイロードを維持するＧＰＩＯＸポートを有する。
【００４５】
明示的デバイスは、ＭＡＰプロセッサ内２００に収容される。これらのデバイスには、例えば、互いに直接アクセス可能な２つの１５０ＭＨｚのＡｌｔｅｒａ Ｓｔｒａｔｉｘ（登録商標）ＩＩ  ＥＰ２Ｓ１８０  ＦＰＧＡ２０６、６４ＭＢオンボードメモリ（ＯＢＭ）２０８、ＧＰＩＯＸポート、及び、インターフェースコントローラ２０２が含まれてもよい。インターフェースコントローラ２０２は、その他のプロセッサモジュール及び２ＧＢのオンボード共有メモリ（ＯＢＣＭ）２０４へのアクセスを提供する。ＭＡＰプロセッサ２００とその他のプロセッサモジュールとの間の、維持される全ペイロード帯域幅は、各ポートのペア毎に、１４．４ＧＢ／秒、又は、７．２ＧＢ／秒である。
【００４６】
ＳＤＲＡＭ  ＯＢＭ２０８は、１６個の独立した６４ビットメモリ参照を、ＦＰＧＡ２０６にクロックサイクル毎に提供する。これにより、ＯＢＭ２０８とＦＰＧＡ２０６との間の最大帯域幅１９．２ＧＢ／秒を実現している。アプリケーションの明示的に部分に対するデータは、プログラマによってＯＢＭ２０８に割り当てられ、ＯＢＭ２０８とＦＰＧＡ２０６との間の実際に達成可能な帯域幅は、アプリケーションの必要条件によって決められてもよい。
【００４７】
ＯＢＣＭ２０４の２つのバンクが提供されることにより、プログラマは、アプリケーションに対するデータ局所性の第３レベルを規定することが可能となる。データ局所性の第２レベルは、ＯＢＭ２０８であり、第１レベルは、ＦＰＧＡ２０６内部メモリである。一般的に、大きなアプリケーションデータセットはここに格納されて、好適なデータサブセットは、処理のためにＯＢＭ２０８（又は直接ロジックに）移動される。これらＯＢＣＭ２０４バンクは、ＭＡＰプロセッサ２００ベースのコンピュータシステムにおけるグローバル共有メモリ空間の一部分である。
【００４８】
ＧＰＩＯＸポートは、最大１２．０ＧＢ／秒までの、外部デバイス（例えば、カメラ、Ａ／Ｄコンバータ、センサ等）へのアクセスを提供する、又は、その他の複数のＭＡＰプロセッサ２００のチェーン化（chaining）を提供する。ＧＰＩＯＸインターフェースは、オープンスタンダードであり、ＧＰＩＯＸハードウェア規格書ＳＷＰ−０１１−００に記載されている。
【００４９】
図３は、市販のマイクロプロセッサ及び最大３つのＭＡＰプロセッサ２００（図２）のような高密度ロジックデバイスのサポートを提供するマルチポート共有メモリ３００の機能ブロック図である。マルチポート共有メモリ（ＭＰＣＭ）３００は、関連する部分に、プロセッサモジュールと最大３つのＭＡＰモジュールとの間の相互接続を提供するコントローラ３０２を含む。図示した実施形態では、マルチポート共有メモリ３００はまた、４ＧＢ  ＯＢＣＭメモリアレイを一組含む。
【００５０】
ＳＲＣ−７  ＭＡＰｓｔａｔｉｏｎシステムに対するＭＰＣＭ３００アセンブリの各々は、４つの出力ポート及び入力ポートを有する。これらのポートにより、プログラマは、２つの１６ＧＢ共有メモリバンクにアクセスすることができる。このポートは、１つのマイクロプロセッサモジュール及び最大３つのＭＡＰプロセッサをサポートする。ＭＰＣＭ３００モジュール上のインテリジェントＤＭＡコントローラ３０２は、システムの接続帯域幅を最大限有効に利用するべく、複雑なＤＭＡプリフェッチ、及び、データパッキング、等間隔アクセス及び分散／収集のようなデータアクセスを実行可能である。これらのオペレーションに対しては、同じ接続を利用したキャッシュベースのマイクロプロセッサよりも、接続効率が１０倍程度高くなる。入力ポート及び出力ポートの各々は、１ビットエラー訂正及び２ビットエラー検出（Single Error Correction and Double Error Detection ：ＳＥＣＤＥＤ）を各ポートに実装した場合、少なくとも３．６ＧＢ／秒のデータペイロードを維持する。
【００５１】
図４は、１つのＭＡＰプロセッサＭＡＰｓｔａｔｉｏｎ４００の機能ブロック図である。ＭＡＰｓｔａｔｉｏｎ４００は、図２を参照して上記で説明したＭＡＰプロセッサ４０４と接続されるＧＰＩＯＸポート４０２を含む。ＭＡＰプロセッサ４０４は、プロセッサ４１０のメモリ空間４０８に直接接続されているＳＮＡＰ（登録商標）ポート４０６（エス・アール・シー・コンピュータズ社の登録商標）と相互接続されている。
【００５２】
ＳＲＣ−７  ＭＡＰｓｔａｔｉｏｎシステムのこの構成は、１つのマイクロプロセッサモジュール４１０、及び、直接相互接続を有する１つのＭＡＰプロセッサ４０４を収容する。このシステムは、ＭＰＣＭモジュール３００（図３）を収容しないことから、１つのＭＡＰモジュールのみが設置されてもよい。
【００５３】
ＭＡＰｓｔａｔｉｏｎにおいて使用される黙示的ＤＬＤは、通常、複数の市販のプロセッサのうちの１つである。これら第３者の市販のボードに、ＳＮＡＰ４０６インターフェースが取り付けられる。ＳＮＡＰインターフェース４０６は、市販のマイクロプロセッサボードと、ＭＡＰプロセッサ４０４及びＳＲＣシステムの残りの部分を構成する共有メモリノードとを接続し、これらとメモリを共有する。ＳＮＡＰ４０６モジュールは、マイクロプロセッサマザーボード上でＤＩＭＭコネクタに直接プラグ接続されてもよく、Ｉ／Ｏサブシステムの替わりに、マイクロプロセッサ４１０のメモリサブシステム４０８内で直接機能するため、システムは、非常に高い接続帯域幅及びＩ／Ｏベースの接続よりも低いレイテンシを維持することができる。ＳＮＡＰ４０６インターフェースは、別個の入力経路及び出力経路を使用し、各経路は現在のところ、３．６ＧＢ／秒のデータペイロード帯域幅を維持している。
【００５４】
ＳＮＡＰ４０６モジュールを使用して、Ｉ／Ｏサブシステムの替わりにマイクロプロセッサ４１０メモリサブシステム４０８に接続することにより、システムは、非常に高い接続帯域幅を維持することができる。ＳＮＡＰ４０６モジュールは、別々の入力ポート及び出力ポートを使用し、各ポートは、３．６ＧＢ／秒のオーダーであって最高７．２ＧＢ／秒のデータペイロード帯域幅を維持する。ＳＮＡＰ４０６インターフェースは、１つのＭＡＰプロセッサ又はＨｉ−Ｂａｒ（登録商標）スイッチ（エス・アール・シー・コンピュータズ社の登録商標）のうちのどちらか一方と直接接続することができ、複数のＭＡＰプロセッサ、その他のマイクロプロセッサ又は共有メモリへのシステム全体にわたるアクセスを提供する。
【００５５】
図５は、マルチポート共有メモリモジュールを介して相互接続される図２のＭＡＰプロセセッサのうちの３つを含むＭＡＰｓｔａｔｉｏｎシステム５００の機能ブロック図である。ＭＡＰｓｔａｔｉｏｎシステム５００は、図３に示したようなマルチポート共有メモリ（ＭＰＣＭ）５０４と接続される最大３つのＭＡＰプロセッサ５０２を含む。ＭＰＣＭ５０４は、図示するように、コントローラ及び関連付けられたメモリアレイ５０６を含む。ＭＰＣＭ５０４のプロセッサポートは、例えば、ＰＣＩエクスプレスバスインターフェース５１４を有するプロセッサ５１２のメモリ５１０サブシステムと接続されたＳＮＡＰ５０８インターフェースと接続されている。ＭＡＰｓｔａｔｉｏｎシステム５００が、ＭＰＣＭモジュールを有するように構成されている場合には、マイクロプロセッサモジュールに加えて、最大３つのシリーズＨ  ＭＡＰプロセッサ５０２を有してもよい。メモリ５０６を含む２つのＯＢＣＭバンクは、最大１６ＧＢのＳＤＲＡＭでポピュレートされてもよい。
【００５６】
図６は、マイクロプロセッサ及び前図のＭＡＰプロセッサを直接接続構成で実装したクラスタシステム６００の機能ブロック図である。図のクラスタシステム６００は、複数のＭＡＰｓｔａｔｉｏｎ６０２０、６０２１、６０２２〜６０２ｎを含み、ＭＡＰｓｔａｔｉｏｎの各々は、ＧＰＩＯＸポート６０４、ＭＡＰプロセッサ６０６、ＳＮＡＰ６０８、関連付けられているメモリ空間６１０を有するマイクロプロセッサ６１２、及び、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）ポート６１４を含む。図に示すように、ＭＡＰプロセッサ６０４のＧＰＩＯＸポート６０４は、共にチェーン化されており、ＰＣＩ−Ｘポート６１４は、ギガビット・イーサーネットポート６１６と接続されて、ネットワーク６１８にアクセスできるようになっている。ネットワーク６１８は、関係付けられたデータストレージ６２０を有するストレージエリアネットワーク（ＳＡＮ）６２２、ローカルエリアネットワーク（ＬＡＮ）６２４及び／又はワイドエリアネットワーク（ＷＡＮ）６２６を含んでもよい。
【００５７】
システムレベル設定は、ＭＡＰｓｔａｔｉｏｎワークステーションのクラスタ又はクロスバー・スイッチベース・トポロジーの何れか一方を実装する。クラスタベースシステムは、図６に示すように、上記で説明した、マイクロプロセッサとＭＡＰプロセッサとの直接接続構成を利用する。このトポロジーは、マイクロプロセッサ／ＭＡＰプロセッサの親和性を有しているが、非非常に大型のシステムを生成するのに標準ベースのクラスタリングを使用できるという利点も有している。
【００５８】
図７は、マイクロプロセッサ、ＭＡＰプロセッサ及び／又は共有メモリデバイスを含む１６個のノードと接続される最大１６個のＩ／Ｏポートを有するエス・アール・シー・コンピューターズ社が登録商標権を有するＨｉ−Ｂａｒスイッチを利用した本発明の一実施形態を実装するためのコンピュータシステム７００の機能ブロック図である。コンピュータシステム７００は、Ｈｉ−Ｂａｒスイッチ７０２及び複数のプロセッサユニットを含み、プロセッサユニットの各々は、図示するように、プロセッサメモリ空間７０６と接続されたＳＮＡＰ７０４を有するプロセッサ７０８、及び、ギガビット・イーサーネットポート７１２と接続された関連付けられたＰＣＩ−Ｘポート７１０を備える。
【００５９】
図に示すように、コンピュータシステム７００は更に、複数のＭＡＰプロセッサ７１４０−７１４ｎを備え、各ＭＡＰプロセッサは、Ｈｉ−Ｂａｒスイッチ７０２と接続され、共にチェーン化されている関連付けられたＧＰＩＯＸポート７１６を有する。複数のマルチポート共有メモリ（ＭＰＣＭ）ユニット７１８０−７１８ｎはまた、Ｈｉ−Ｂａｒスイッチ７０２と接続されて、上記したようにプロセッサユニット７０４及びＭＡＰプロセッサ７１４からアクセス可能となっている。ギガビット・イーサーネットポート７１２は、コンピュータシステム７００をネットワーク７２０に接続する。ネットワークは、関連付けられたデータストレージ７２２を有するＳＡＮ７２４、ＬＡＮ７２６及び／又はＷＡＮ７２８を含んでもよい。
【００６０】
Ｈｉ−Ｂａｒスイッチベースのコンピュータシステム７００は、図６のクラスタシステム６００よりも、より高い柔軟性を提供する。Ｈｉ−Ｂａｒスイッチ７０２は、エス・アール・シー・コンピューターズ社が登録商標権を有する、拡張可能な高帯域幅・低レイテンシスイッチである。Ｈｉ−Ｂａｒスイッチモジュールの各々は、６４ビット・アドレッシングをサポートし、１６個の入力ポート及び１６個の入力ポートを有して１６個のノードに接続する。図示するように、マイクロプロセッサユニット、ＭＡＰプロセッサ７１４及びＭＰＣＭメモリ７１８ノードの全てを、あらゆる配置でＨｉ−Ｂａｒスイッチ７０２に接続することができる。各入力ポート及び出力ポートは、３．６ＧＢ／秒のデータペイロードを維持し、１６個のポート全体では、５７．６ＧＢ／秒の２分割帯域幅となる。ポート各々に１ビットエラー訂正及び２ビットエラー検出（Single Error Correction and Double Error Detection ：ＳＥＣＤＥＤ）を実装した場合には、ポート間のレイテンシは、１８０ナノ秒である。Ｈｉ−Ｂａｒスイッチ７０２は、多段構成で接続することができ、２つの段で２５６個のノードをサポートすることができる。
【００６１】
これらマルチポート共有メモリノード７１８の各々は、インテリジェントＤＭＡコントローラ及び、例えば、最大６４ＧＢのＤＤＲ−２  ＳＤＲＡＭを含む。このメモリは、６４ビット・アドレッシングをサポートし、メモリモジュールに位置する４つのポートのうちの何れか１つを使用してシステム内のその他のＭＡＰ７１４及びマイクロプロセッサノードの全てが、このメモリにアクセスすることができる。何れのポートも、３．６ＧＢ／秒のデータペイロード帯域幅でのメモリ読み出し及び書き込みを維持する。
【００６２】
図８は、市販のマイクロプロセッサ及びＭＡＰプロセッサの形態のダイレクト・エクセキューション・ロジックのような高密度ロジックデバイスを目的とした１つの一体化実行可能構成を生成するための代表的なコード開発プロセス８００を示した図である。プロセス８００は、ＭＡＰソースファイル８０２及びアプリケーションソースファイル８０４の入力から開始し、アプリケーションソースファイルは、段階８０６において、マイクロプロセッサコンパイラによってコンパイルされて、通常の態様でオブジェクトファイル８０８が生成される。
【００６３】
この場合、Ｃａｒｔｅ  ＭＡＰコンパイラ８１０は、ＭＡＰソースファイル８０２を受信して、ハードウェアバージョンのＣａｒｔｅマクロライブラリ８１２を使用し、ＦＰＧＡビットストリームを生成するべく、ＦＰＧＡ配置配線ツール８１４を起動させる。生成されたビットストリームは、Ｃａｒｔｅ  ＭＡＰコンパイラによって、オブジェクトファイル出力８１６に取り込まれる。段階８１８において、全オブジェクトファイル８０８及び８１６がリンクされて、Ｃａｒｔｅライブラリを使用してハードウェア・マクロライブラリ・シンボル８２０が分解される。このように、ＦＰＧＡプログラミングビットストリーム及びランタイムコード８２４が、１つの一体化されたアプリケーション実行可能構成８２２内に埋め込まれる。また、プログラマが、自身のＶｅｒｉｌｏｇ又はＶＨＤＬ  ＩＰを、これらライブライブラリに組み込むことも可能である。このように、単純な機能呼び出しを使用して、ＩＰをインスタンス化することができる。
【００６４】
ＳＲＣソフトウェアは、標準的な第３者のソフトウェア及びＳＲＣ  Ｃａｒｔｅプログラミング環境という２つの主要な要素からなる。ＳＲＣ−７  ＭＡＰｓｔａｔｉｏｎシステムは、基本システムソフトウェアを形成しているＬｉｎｕｘ（登録商標）Ｆｅｄｏｒａオペレーティングシステムを有する標準ベースのソフトウェアを利用する。Ｌｉｎｕｘ（登録商標）内でサポートされているコンパイラ、デバッガ及びソフトウェア管理ツールを、ＳＲＣコンピュータシステムにおいて使用することができ、また、Ｃａｒｔｅプログラミング環境と結合させることができる。ツールの一部は、インテル（登録商標）フォートランコンパイラ、インテル（登録商標）Ｃ＋＋コンパイラ及び／又はＡｌｔｅｒａ Ｑｕａｒｔｕｓ（登録商標）ＩＩ  ＦＰＧＡ設計ソフトウェアを含んでもよい。Ｌｉｎｕｘ（登録商標）オペレーティングシステム（ＯＳ）環境は、ペリフェラルストレージ及びネットワーク化をサポートする多数のドライバ及びライブラリにアクセス可能である。
【００６５】
Ｃａｒｔｅプログラミング環境は、標準的なＡＮＳＩフォートラン及び／又はＣで記載されたアプリケーションを採用して、ＭＡＰプロセッサ及びマイクロプロセッサの計算能力をシームレスに、１つの一体化実行可能構成に統合する。具体的には、Ｃａｒｔｅプログラミング環境は、プログラマが、マイクロプロセッサ／ＦＰＧＡへテロジニアスシステム内にコードの並行実行を明示的に規定することを可能とすると同時に、メモリ階層構造内の明示的データの管理を提供する。プログラマには、高級プログラミング言語から、プロセッサハードウェアの規定及び生成を行うローレベルハードウェア機能への基本的なアクセス権が与えられる。計算及びメモリアクセスに関するこのレベルの制御を有することにより、高計算性能の達成を容易にすることができる。
【００６６】
Ｃａｒｔｅプログラミング環境は、複数の構成要素によって形成されており、主要なソフトウェア構成要素は、ＭＡＰ／フォートランコンパイラ又はＭＡＰ／Ｃコンパイラとして現在は入手可能なＳＲＣ  ＭＡＰコンパイラである。ＭＡＰコンパイラは、ＭＡＰ  ＦＰＧＡに対するダイレクト・エクセキューション・ロジックを形成する。コンパイルシステムは、コードから最大の並列性（parallelism）を抽出して、ＦＰＧＡにインスタンス化されたパイプラインハードウェアロジックを生成する。コンパイラは、ＭＡＰプロセッサからのデータ及びＭＡＰプロセッサに入るデータの移動を管理するべく、及び、ＭＡＰプロセッサ内で実行されるロジックとマイクロプロセッサの実行とを調整するべく、必要とされるインターフェースコードの全てを生成する。ライブラリは、整数、単精度及び倍数精度浮動小数点データ型を完全にサポートする。
【００６７】
必要とされるインターフェース及び管理コードの全てが、Ｃａｒｔｅランタイムライブラリに収容される。ＳＮＡＰ（登録商標）ドライバ及び関連するライブラリには、Ｃａｒｔｅプログラミング環境が提供されて、アプリケーション開発者が、完全に一体化された態様で、アルゴリズムを容易に設計して実装することを可能にしている。Ｃａｒｔｅプログラミング環境はまた、コンパイルされたコードを"デバッグモード"でエミュレート及びシミュレートする機能をユーザーに提供する。デバッグモードコンパイルは、ユーザーが、ＦＰＧＡ配置配線ツールを呼び出すことなく、ＣＰＵで自身のコードの全てをコンパイル及びテスト可能とする。デバッグモードにおいて、ループ性能情報が提供されてもよく、それにより、ＦＰＧＡ配置配線の前に、正確なＭＡＰプロセッサコード性能を見積もることが可能となる。
【００６８】
図９は、ユーザーレベルにおける本発明の計算の一体化プロセスフローの概略を示した図である。ユーザーの視点では、計算の一体化プロセス９００は、データ格納段階９０２のマイクロプロセッサソースコードから開始する。このプログラムの性能及びデータフロー分析は、どの機能をマイクロプロセッサ上で実行する必要があり、ヘテロジニアスシステム内の別の種類のプロセッサ上で実行することによりどの機能が恩恵を受けるかを示す。ユーザーは、処理段階９０４において、元のソースコードに、パラメータ化された命令を追加して、計算の一体化プロセス９０６を誘導する。
【００６９】
マイクロプロセッサコンパイラは、命令を無視することから、元のソースコードは、同一機種（homogeneous）マイクロプロセッサシステムに対するコンパイルのユースケースによって、有効に変更されることはない。これにより、１つのマイクロプロセッサコードベースが、複数の異なる種類のヘテロジニアスプロセッサ及びマイクロプロセッサのみのシステムの両方に対してコンパイルされるようになることから、計算の一体化のソフトウェアメンテナンスが可能になる。
【００７０】
計算の一体化プロセス９０６は、データ格納段階９０８において、ユーザー挿入命令と共にマイクロプロセッサソースコードを取得して、データ格納段階９１０において、一体化マイクロプロセッサソースコードを生成し、データ格納段階９１２において、システム内のその他のプロセッサ種類に対する一体化ソースコードを生成する。また、リソース利用率、プログラミングヒント、更なる実行改善のためのプログラマに対する提案及び情報を伴うソースコード分析が、データ格納段階９１４において生成される。一体化マイクロプロセッサソースコード９１０は、アプリケーションソースファイル８０４（図８）となり、その他のプロセッサの一体化ソースコード９１２は、ＭＡＰソースファイル８０２となる。このように、計算の一体化プロセス及び方法は、Ｃａｒｔｅツールに入力されるソースコードの改善と考えてもよい。
【００７１】
生成された一体化ソースコードは、元のマイクロプロセッサソースコードの部分とは、異なっていてもよい。元の生成されたソースコードの全てがＡＮＳＩ標準言語であっても、異なる種類のプロセッサが、所定のプロセッサアーキテクチャに適切である異なるプログラミングイディオムを必要としてもよいその他の場合（例えば、ＧＰＵがその他のプロセッサである場合）、目的の言語構文サポートライブラリ及び拡張は、その他のプロセッサに対して固有であり、標準コンピュータ言語ではない。所定のプロセッサ対象のプログラミング方法及びイディオムが、計算の一体化プロセス実装形態に具現化される。
【００７２】
多くの場合、ヘテロジニアスシステムにおける効率的なプログラム実行を実現するには、プログラマに、元のマイクロプロセッサソースコードを並列処理化することを要求する。計算の一体化は、並列処理化情報を一体化プロセスに実装することにより、このタスクを容易にする。これには、ソースコードの自動分析、及び、プロセッサの種類に対する適切な並列プログラムイディオムを生成することを含む。
【００７３】
コンピュータシステムリソースは、無限ではなく、プログラマは、新種のヘテロジニアスプロセッサアーキテクチャに直面すると、リース利用率を見積もるのに困ってしまう場合がある。計算の一体化プロセスの過程において、一体化プロセスに具現化されたプロセッサドメイン固有の知識を使用して、システムリソース利用率を見積もり、リソース利用率、及び、マイクロプロセッサソース及びターゲットのシステムにおけるリソース利用効率を向上させるための情報を、プログラマに提供する。ここで、リソースとは、ヘテロジニアスシステムの多くの側面を意味しており、例えば、メモリサイズ、メモリ割り当て、データ移動経路、ＦＰＧＡリソース、複数のＧＰＵコア又はマイクロプロセッサコアが含まれる。また、リソースとは、サイズ、ウェイト及び電力必要条件等のシステム条件を意味する。
【００７４】
プログラム的構造は、プロセッサの１種類に対して効率的な形式（例えば、コードの３つ又は４つのライン）で表現されてもよい。異なるプロセッサで同様な結果を達成するためには、コードの３つ又は４つのラインは、効率的な実行のためにコードの多数のラインへと拡張される必要がある場合がある。このコード拡張は、プログラムの機能を分かりにくくさせ、ソフトウェアメンテナンスの観点における性能を低下させる。一体化プロセスでは、ユーザーに見えないような異なるプロセッサ種類にするコード拡張を行うことにより、この問題を解決することができる。
【００７５】
しばしば、ソフトウェアソースコードは、更新された規格を満足するように、２つの形式間で読み書き可能である必要がある。計算の一体化プロセスは、通常のプロセスフローの一部で、表記変換（transliteration）を具現化する。
【００７６】
図１０には、本発明の計算の一体化プロセスフローの代表的な実施形態の概略を示している。プロセス１０００では、段階１００２において、プログラマが挿入した命令が付加されたマイクロプロセッサソースコード９０４が分析されて、データ格納段階９０８において、命令を有するマイクロプロセッサソースコードが生成される。段階１００４の分析及び抽象化プロセスにより、ステートメントテンプレート、ソースコード分析、ソースコード要素及び命令パラメータが、それぞれデータ格納段階１００６、１００８、１０１０及び１０１２で生成される。
【００７７】
分析及び抽象化プロセス１００４は、言語固有のコード文テンプレートを生成し、後に一体化プロセス内で使用されるソースコード分析の結果、ソースコード命令から抽出されるパラメータ及び様々なソースコード要素（例えば、サブルーチン変数リスト、プログラム変数の種類、構文解析済みコード構造等）については、以下で詳細に説明する。
【００７８】
そして、ステートメントテンプレート１００６、ソースコード要素１０１０及び命令パラメータ１０１２が、命令ベースステートメント生成プロセス１０１４に入力されて、データ格納段階１０１６において命令固有コードが生成される。
【００７９】
命令ベースステートメント生成プロセス１０１４では、命令は、特定の機能を実行するべく変数及びコード文のセットの生成を規定する。これは、（これらに限定するわけではないが）、データ移動命令、コード並列化、スカラーへの及びスカラーからのアレイ変換、メモリ割り当て、及び、所定のプロセッサアーキテクチャに対する命令の機能及び関連するソースコードを正確に且つ効率良く実装するのに必要とされるその他の構成であってもよい。この段階の終了時には、変数及びコード文の複数のセットが、一体化構成内に別個のオブジェクトとして存在する。次の段階である命令ベースステートメント収集プロセス１０１８では、生成された変数及びコード文が収集され、これらを相対的に適切な順番となるように並び替えられる。この段階の結果、１つの部分的に一体化されたソースコードオブジェクトが生成され、データ格納段階１０２０に示されている。
【００８０】
ステートメント置換及び結合段階１０２２では、段階１０２０からの一体化命令ベース生成済みコードと、段階９０８における元のソースコードからの必須のコード文とを組み合わせる。元のソースコードの一部分は、一体化プロセスによって変換される必要がなく、この段階においてプロセスが生成したコードに統合される。コンパイルを成功させるのに必要なボイラープレートコードも、この段階で組み込まれる。ここで、ボイラープレートコードとは、プログラムの大部分又は全てに、ほとんど又は全く変更を加えることなく組み込まれるあらゆるコード文を意味する。この段階の結果、幾つかの完全な一体化されたソースコードファイルが生成されるが、一部は、段階９１０の一体化マイクロプロセッサソースコードと示されていているマイクロプロセッサを対象としたものであり、別の一部は、段階９１２の一体化されたその他のプロセッサソースコードと示されているヘテロジニアスシステムにおけるその他のプロセッサを対象としたものである。そして、一体化ソースコードファイルは、所定のプロセッサの種類に対して通常の態様で、実行のためにコンパイルされてもよい。図に示すように、データ格納段階９１０における一体化マイクロプロセッサコードが所定のプロセス１０２４でコンパイルされ、段階１０２６においてマイクロプロセッサ実行可能構成が生成され、一体化されたその他のプロセッサソースコードが所定の処理段階１２０８においてコンパイルされ、段階１０３０においてその他のプロセッサ実行可能構成が生成される。
【００８１】
図１１には、計算の一体化プロセス全体の代表的な実施形態の分析のプロセスフロー１１００及び抽象化プロセス１００４が示されている。
【００８２】
字句及び構文解析段階１１０２において、命令９０８が付加されたマイクロプロセッサソースコードが分析されて、言語固有の構文解析ツール（parser）（例えば、Ｃ、フォートラン、Ｐｙｔｈｏｎ、ＭＡＴＡＬＢ等）を使用して抽象構文木（Abstract Syntax Tree：ＡＳＴ）１１０４へと構文解析される。ＡＳＴ１１０４は、処理段階１１０６において、ソースコード構造分析のための情報構造を提供し、データ格納段階１００８において、リソース見積もりのためのソースコード分析が提供される。ＡＳＴ１１０４はまた、データ抽出段階１１０８のための情報構造を提供して、ソースコード要素１０１０が提供される。そして、一体化命令及び規定された命令パラメータが、図に示すように命令パラメータ抽出プロセス１１０によって収集されて、命令パラメータ１０２が提供される。また、言語固有のコード文テンプレートが、図に示す生成プロセス１１１２によって生成されて、ステートメントテンプレート１００６が提供される。ステートメントテンプレートは、命令ベースステートメント生成プロセス１０１４において一体化ソースコードファイルのための変数宣言及びコード文を生成するべく、後の一体化プロセスで使用される。
【００８３】
図１２は、計算の一体化プロセス全体の命令ベースステートメント生成プロセス１０１４のプロセスフロー１２００を示した図である。プロセス１０１４は、マイクロプロセッサソースコード内の個別の一体化命令各々に対して実行される。データ格納段階１０１２における命令パラメータは、段階１２０２において構文解析された後、データ格納段階１２０４において後の使用に備えて格納される。処理段階１２０６において、これらのパラメータに、固有のエラーがないかチェックが行われる。構文解析済みパラメータ１２０４、１つ前の分析及び抽象化段階１００４において抽出されたソースコード要素１０１０及び同段階で生成されたコードステートメントテンプレート１００６が与えられると、一体化プロセスは、この命令に対して適切な変数宣言及びコード文を生成する。これは、処理段階１２０８によって示されており、命令固有コード１０１６が生成される。判定段階１２１０において、全ての命令が処理済である場合には、プロセス１２００は、段階１２０２に戻る。全ての命令の処理がまだ終わっていない場合には、プロセス１２００は、命令ベースステートメント収集プロセス１０１８に進む。プロセス１２００は、この領域の専門知識及び所定のプロセッサの種類について効率的なコード生成の知識を具現化する全体的な一体化プロセスにおける一段階である。この段階では、個別の一体化命令及び規定されたパラメータに対する変数宣言及びコード文が生成される。
【００８４】
図１３は、計算の一体化プロセス全体の命令ベースステートメント収集プロセス１０１８のプロセスフロー１３００を示した図である。命令固有コード１０１６及び一体化命令固有コードが、処理段階１３０２において演算されて、一体化命令固有コード１０２０が生成される。判定段階１３０４において、全ての命令の処理が終わっていない場合には、プロセス１３００は段階１３０２に戻る。全ての命令の処理が終わっている場合には、プロセス１３００は、ステートメント置換及び結合段階１０２２に進む。
【００８５】
正しい順番で、コード文をコンパイル及び実行することが重要である。プロセス１３００は、生成された命令固有コードセットの各々について、コード文を順番でアセンブル言語に翻訳する。アセンブルされた結果、印が付けられたギャップを有する１つのファイルオブジェクトが生成され、ギャップには、マイクロプロセッサソースコードファイルからの必要とされる無修正ソースコードが挿入されることとなる。
【００８６】
図１４は、計算の一体化プロセスフロー全体のステートメント置換及び結合プロセス１０２２のプロセスフロー１４００を示した図である。データ格納段階１００６におけるステートメントテンプレートは、処理段階１４０２において作動されて、データ格納段階１４０４において一体化プロセスソースコードが生成される。命令９０８が付加されたマイクロプロセッサソースコード及び一体化命令固有コード１０２０と共に、一体化プロセッサソースコード１４０８が処理段階１４０６において生成される。判定段階１４１０において、全てのプロセッサがアドレス指定されていない場合には、プロセス１４００は段階１４０２に戻る。全てのプロセッサがアドレス指定されている場合には、プロセス１４００は、図１０に示したようなマイクロプロセッサソースコードコンパイル１０２４及びその他のプロセッサソースコードコンパイル１０２８の規定されたプロセスに進む。
【００８７】
プロセス１４００は、一体化ソースコードの順番に従ったアセンブリ言語への翻訳を完了する。プロセッサの各種類について適切なボイラープレートコードが生成されて、１つ前の段階で生成された一体化命令固有コードステートメントと結合される。無修正マイクロプロセッサソースコードステートメントの必要となる部分が、元のソースコード及び１つ前の段階で生成された一体化命令固有コードステートメントから抽出される。その結果、ヘテロジニアスプロセッサシステム上でのコンパイル及び実行に適した一体化ソースコードファイルのセットが生成される。
【００８８】
図１５には、本発明のプリコンピューテーション一体化プロセスフローのユースケース比較プログラマプロセスフローのプロセスフロー１５００が示されている。このプロセスフローは、Ｃａｒｔｅ開発環境を使用して、ＳＲＣ−７ヘテロジニアスコンピュータに対するシステムプリコンピューテーション一体化プログラム開発を示している。この実施形態例において、ＳＲＣ−７システムは、１つのマイクロプロセッサと１つのＭＡＰプロセッサとを備える。
【００８９】
段階１５０４において、プログラマは、自身のマイクロプロセッサＣソースコード１５０２の性能を分析し、数値計算（compute-intensive）性能カーネルを探す。カーネルの１つが見つかり、その性能カーネルを表すマイクロプロセッサソースコードの部分が、ＭＡＰプロセッサ上でメインのプログラムサブルーチンとして実行されるコード部分として特定される。コードの残りの部分、メインブロック及びその他のサブルーチンは、マイクロプロセッサで実行される。
【００９０】
プログラマは、段階１５０６において、特定されたＭＡＰプロセッササブルーチン内におけるデータフロー、及び、ＭＡＰプロセッサとマイクロプロセッサとの間の必要なデータフローを分析する。このデータフロー分析により、２種類のプロセッサ間の必要とされるデータ移動が判断される。データフロー分析、段階１５０８において規定されたデータ移動、及び、ＳＲＣ−７システムをプログラミングする専門知識から、プログラマは、処理段階１５１０において、マイクロプロセッサ１５１２及びＭＡＰプロセッサ１５１４のボイラープレートコードを生成する。この時点で、マイクロプロセッサコードが完結するが、ＭＡＰプロセッサコード１５１４は、マイクロプロセッサに対して書かれたコードを効率的に実行していない。これは、あらゆるコンピュータ言語におけるプログラミングイディオムは、そのプロセッサの種類に固有のものであり、必ずしも効率的なプログラムに直接変換されていないためである。プログラマは、マイクロプロセッサコード文のプログラミングイディオムを、ＭＡＰプロセッサに好適なプログラミングイディオムへと変換する。プログラマは、このタスクを達成するべく、処理段階１５１６で示されるように、ＳＲＣ−７、プログラミング専門知識及びその他のリソースの経験を使用して、データ格納段階１５１８でＭＡＰプロセッサＣソ−スコードを生成する。そして、プログラマが生成したマイクロプロセッサ及びＭＡＰプロセッサソースコードプログラムは、規定された処理段階１５２０に示されるように、Ｃａｒｔｅ開発環境を使用してコンパイルされる。
【００９１】
段階１５２２において得られた測定性能が、プロジェクトの性能目標を達成していないと判断段階１５２４で判断された場合には、プログラマは、熟考する状態に戻り、ＳＲＣ−７アーキテクチャをより深く勉強し、疑問を解決し、実行性能のボトルネックを探して場所を特定し、段階１５２６に示すように、更なるシステムの検証を行う。性能目標を達成するために行われる、解決策を探る繰り返し行われるプロセスは、非効率的であり、プロジェクトスケジュールが遅延することにつながり、また、プログラマの能力に大きく依存するプロセスでもある。本発明の計算の一体化プロセスは、この問題を解決する。
【００９２】
図１６には、本発明の計算の一体化プロセスのユースケース比較のプロセスフロー１６００が示されている。段階１６０４において、マイクロプロセッサＣソースコード１６０２の性能が分析され、段階１６０６において、データフローが分析される。そして、段階１６０８において命令がマイクロプロセッサＣソースコードに付加されて、データ格納段階１６１０において、命令が付加されたマイクロプロセッサソースコードが生成される。計算の一体化プロセス段階１６１２が、命令が付加されたマイクロプロセッサＣソースコード１６１０に対して実行され、一体化マイクロプロセッサＣソースコード１６１４及び一体化ＭＡＰプロセッサＣソースコード１６１６が生成されて、データ格納段階１６１８においてＣソースコード分析が提供される。そして、一体化マイクロプロセッサ及びＭＡＰプロセッサＣソースコード１６１４及び１６１６は、予め規定された段階１６２０において標準Ｃａｒｔｅ環境でコンパイルされて、段階１６２２でＳＲＣシステム実行可能構成が生成される。そして、段階１６２４において性能が測定されて、性能目標が達成されている場合には、プロセス１６００が完了する。性能目標が達成されていない場合には、段階１６２８において、Ｃソースコード分析１６１８の検証が行われて、プロセス１６００は、段階１６０６のデータフローの分析に戻る。
【００９３】
図１５で説明したプロセスフローと比較すると、この一体化プロセスフローは、主に２つの違いを有する。１つ目の違いは、一体化マイクロプロセッサ及びＭＡＰプロセッサソースコードファイルは、プログラマがマイクロプロセッサソースコードファイルに挿入した命令を使用して自動的に生成される点である。マイクロプロセッサソースコードの性能及びデータフロー分析段階の結果は、適切な計算の一体化命令の選択についてプログラマに指針を与えるものとなる。２つ目の違いは、測定された実行性能が、プロジェクト性能目標に達していない場合には、一体化プロセスが、明確なヒント及び提案をプログラマに提供する点である。
【００９４】
本発明の原理が特定のシステム及び方法を参照して説明されたが、上記の説明は、例示のみを目的として記載されており、本発明の範囲を限定することを目的としていない。特に、上記の説明の教示するところから、当業者であれば、その他の変形例を提案することができることは明らかである。このような変形例は、当業者に周知のその他の特徴を伴い、上記で説明した構成に替えて又は加えて使用されてもよい。本願では、特徴の特定の組み合わせを使用して請求項が構成されているが、本開示の範囲は、当業者にとって明らかな一般化された特徴又は変形例若しくは本明細書に明示的に又は黙示的に開示されている特徴の新規な組み合わせ又は新規な特徴を含み、これらの特徴が、添付の特許請求の範囲の請求項に現時点で記載されている同じ発明に関しているか、及び、本発明が直面する同じ技術的な問題の一部又は全てを解決しているかによって、開示の範囲は限定されない。また、出願人は、本願及び本願から派生する出願における審査過程で、このような特徴及びこのような特徴の組み合わせについて、新しい請求項を生成する権利を有する。
【００９５】
本明細書で使用される「備える（comprise）」「備えた（comprising）」という用語及びその派生語は、非排他的包含を意図しており、列挙された特定の要素を備えるプロセス、方法、物品又は装置が、必ずしも、これらの要素のみを含むのではなく、明示的に列挙されてないその他の要素又はこのようなプロセス、方法、物品又は装置に本来備わっているその他の要素をも含み得ることを意味している。本願の記載の何れについても、特定の要素、段階又は機能が、特許請求の範囲に含まれなければならないことを指していると解釈されるべきではなく、本発明の特許性を有する特徴の範囲は、特許請求の範囲の記載によってのみ規定される。また、添付の特許請求の範囲において、"ｍｅａｎｓ ｆｏｒ＋分詞（するための手段）"と明記されていない限り、３５．Ｕ．Ｓ．Ｃ．セクション１１２の第６パラグラフを行使することを意図していない。
【図１】
0005818351.tif 000002
【図２】
0005818351.tif 000003
【図３】
0005818351.tif 000004
【図４】
0005818351.tif 000005
【図５】
0005818351.tif 000006
【図６】
0005818351.tif 000007
【図７】
0005818351.tif 000008
【図８】
0005818351.tif 000009
【図９】
0005818351.tif 000010
【図１０】
0005818351.tif 000011
【図１１】
0005818351.tif 000012
【図１２】
0005818351.tif 000013
【図１３】
0005818351.tif 000014
【図１４】
0005818351.tif 000015
【図１５】
0005818351.tif 000016
【図１６】
0005818351.tif 000017