JP2005534114A - ソース間分割コンパイル - Google Patents

ソース間分割コンパイル Download PDF

Info

Publication number
JP2005534114A
JP2005534114A JP2004524004A JP2004524004A JP2005534114A JP 2005534114 A JP2005534114 A JP 2005534114A JP 2004524004 A JP2004524004 A JP 2004524004A JP 2004524004 A JP2004524004 A JP 2004524004A JP 2005534114 A JP2005534114 A JP 2005534114A
Authority
JP
Japan
Prior art keywords
abstract syntax
processor
coprocessor
source code
syntax tree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004524004A
Other languages
English (en)
Inventor
ベルナルド、デ、オリベイラ、カストルップ、ペレイラ
アレキサンダー、アウグステイン
オルランド、エム.ピレス、ドス、レイス、モレイラ
ポール、アー.セー.イェー.ファン、ローン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2005534114A publication Critical patent/JP2005534114A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

多数の異なるプロセッサ、たとえば、汎用プロセッサ(GP)および少なくとも1台のコプロセッサ(COP)、或いは、2台以上のコプロセッサ(COPA,COPB,COPC)を組み合わせるターゲットシステムは、関数の組の実行のためのフレキシビリティとスピードを組み合わせることが可能である。このようなターゲットシステムの設計は、仕様を汎用プロセッサによって実現されるべき部分とコプロセッサによって実現されるべき部分とに分割する必要があり、または、異なるコプロセッサによって実現されるべき複数の部分に分割する必要がある。本発明はソースコードにおける仕様を分割する方法を説明する。第1のステップで、仕様301は複数の抽象構文木101に変換される。第2のステップで、複数の抽象構文木101は少なくとも第1の組201および第2の組203に分割される。第1の抽象構文木の組201は第1のプロセッサ(GP,COPA)によって実現されるべきであり、第2の抽象構文木の組203は第2のプロセッサ(COP,COPB)によって実現されるべきである。抽象構文木の第1の組201および第2の組203は両方ともに、原ソースコード言語309および311のそれぞれで仕様に翻訳され、ユーザは仕様309および311にマニュアル変更305および307を加えることが可能である。さらに、専用コンパイラツールは専用設計ツールと共に、仕様309および311を、たとえば、対応した実行可能なマシンコード315およびコプロセッサの仕様319に変換するため使用可能である。

Description

本発明はソースコードにおける仕様を分割する方法に関する。
本発明はまた第1のプロセッサと少なくとも第2のプロセッサとを含むターゲットシステムを生成する協調設計方法に係わり、この協調設計方法はソースコードにおける仕様を分割する前記方法を含む。
本発明は、さらにコンピュータシステム上で動かされたときにソースコードにおける仕様を分割する前記方法のすべてのステップを実施する分割コンパイラプログラムプロダクトに関する。
2台以上のプロセッサを含むターゲットシステムは関数の組の実行のためのフレキシビリティとスピードを組み合わせることを可能にさせる。このようなターゲットシステムの一例は制御プロセッサの制御下でアプリケーションを実行する2台以上のコプロセッサを有するシステムである。別の例はアプリケーションの一部を共に実行する汎用プロセッサおよびコプロセッサを有するシステムである。汎用プロセッサはソフトウェア制御され、適当なソフトウェアを用いることにより多種多様な希望の目的に適合させられ、大きなフレキシビリティを実現する。しかし、ある種の関数に対して、ソフトウェア制御プロセッサは、一般にその関数に専用のコプロセッサよりも速度が遅い。コプロセッサの例は、固定式ハードウェアアクセラレータ、パラメータ化可能なハードウェアアクセラレータ、再構成可能なハードウェア、特定用途向け命令セットプロセッサ、および、アクセラレータとして使用される専門化されたプログラム可能なプロセッサである。コプロセッサを使用するとき、演算の速度はフレキシビリティを犠牲にして高められる。さらに、コプロセッサの使用はターゲットシステムの電力効率を高める。コプロセッサは設計対象のタスクに適切であるが、しかし、そのタスクの変更版には適切でない。しかし、フィールド・プログラマブル・ゲート・アレイ(FPGA)のような再構成可能な回路にコプロセッサを定義することは、ハードウェアのフレキシビリティを高めることができる。このような論理回路は様々な様式で繰り返し構成され得る。
汎用プロセッサとコプロセッサの両方を含むターゲットシステムの場合、コプロセッサは特定の関数、たとえば、スピードを要求する関数を実行するため使用され、汎用プロセッサはソフトウェアの制御下で残りの関数を実行可能である。このようなターゲットシステムの設計はハードウェア/ソフトウェア協調設計として知られている。設計プロセス内で、希望の機能を備えたターゲットシステムのため、どの関数をコプロセッサで実行し、どの関数をソフトウェアで実行すべきであるかを決定しなければならない。これはハードウェア/ソフトウェア分割として知られている。希望の機能の仕様をソフトウェアで実現されるべき部分とコプロセッサによって実現されるべき部分とに分割した後、実際の組み込みを行わなければならない。コンパイラは、ソフトウェアで実現されるべき部分を汎用プロセッサによって実行されるべきマシンコードに変換し、たとえば、ハードウェア合成ツールは、仕様のその部分によって規定されるように、ハードウェアを構成するか、または、ネットリストを発生する。
制御プロセッサと2台以上のコプロセッサを含むその他のターゲットシステムの場合、コプロセッサはアプリケーションを実行するため使用され、制御プロセッサはターゲットシステムを制御し、たとえば、オペレーティングシステムおよびユーザインタフェースを取り扱う。コプロセッサは特定の関数の組を効率的に取り扱うための専用のものでもよい。このようなターゲットシステムを設計するとき、どの関数が特定のコプロセッサによって実行されるかを決定するため協調設計方法も適用される。仕様は少なくとも第1のコプロセッサによって実現されるべき部分と第2のコプロセッサによって実現されるべき部分とに分割される。
国際公開第00/38087号は、コプロセッサとソフトウェア制御リソースを共に含む電子回路を製作する協調設計システムを記載する。この協調設計システムは、ターゲット電子システムの振舞いの記述を受け取り、必要な機能をハードウェアとソフトウェアの間で自動的に分割する。パーティショナは抽象構文木から制御/データフロー図を作る。パーティショナは、次に、ユーザが未だリソースに割り当てていない記述の部分に作用する。
従来の協調設計方法の不都合な点は、一旦仕様の分割が行われてしまうと、ハードウェア部分および/またはソフトウェア部分を仕様の原ソースコードへ逆変換し得ないことである。このため、二つの重大な欠点が生じる。第1の欠点は、分割後に、ユーザが分割された仕様にマニュアル変更を加えることが実際上不可能であることである。このマニュアル変更は、たとえば、補助的な機能を特定のコプロセッサへ手動で移すことによってターゲットシステムの性能を改良するため実際的に非常に有用である。第2の欠点は、ハードウェア/ソフトウェア協調設計の場合に、ソフトウェアコンパイルおよびハードウェア合成が、獲得された制御/データフロー図表現上で実行されるべきであり、すなわち、これらのステップがハードウェア/ソフトウェア分割のため使用されたツールと同じツールによって実行される必要があることである。実際には、このツールは最も効率的なマシンコードおよび/またはハードウェアコンフィギュレーションを生み出さない。汎用プロセッサ向けのコンパイラと、コプロセッサ向けの設計ツールおよび/又コンパイラの使用は、ターゲットシステムの最適性能の獲得を可能にさせる。同様の問題は、制御プロセッサとアプリケーションを実行する2台以上のコプロセッサとを有するシステムの協調設計中にも生じる。この場合に、コプロセッサを設計する専用ツールの使用はターゲットシステムの最適設計を行うことも同様に可能にさせる。
本発明の目的は、分割後に、第1のプロセッサによって実現されるべき部分をソースコード言語による仕様へ変換すること、および、第2のプロセッサによって実現されるべき部分をソースコード言語による仕様へ変換することの両方の変換を可能にさせる仕様の分割方法を提供することである。
上記目的は、仕様を複数の抽象構文木に変換するステップと、複数の抽象構文木を少なくとも第1のプロセッサによって実現されるべき第1の抽象構文木の組と第2のプロセッサによって実現されるべき第2の抽象構文木の組に分割するステップと、を含むことを特徴とする、ソースコードにおける仕様を分割する方法を用いて達成される。
この分割する方法はソースプログラムを表す複数の抽象構文木に作用する。抽象構文木の形式で表現された仕様は、ソースコード言語による仕様に逆変換可能である。したがって、分割後に、このような変換が第1のプロセッサによって実現されるべき部分並びに第2のプロセッサによって実現されるべき部分に対して行える。
本発明の一実施形態は、この分割する方法が、第1の抽象構文木の組をソースコードによる第1の部分仕様に変換し、第2の抽象構文木の組をソースコードによる第2の部分仕様に変換するステップをさらに含むことを特徴とする。この実施形態の効果は、ユーザが第1の部分仕様および第2の部分仕様にマニュアル変更を加えることを著しく容易にさせることである。この実施形態のもう一つの効果は、特定のコンパイラおよび特定の設計ツールが、第1のプロセッサによって第1の仕様を実現し、第2のプロセッサによって第2の部分仕様を実現するため使用可能なことである。
本発明の一実施形態は、複数の抽象構文木を第1の抽象構文木の組と第2の抽象構文木の組に分割するステップが、プロファイルデータに基づいて少なくとも一つの抽象構文木をアウトライン化するステップを含むことを特徴とする。この実施形態の効果は、このクリティカルな部分を認識する情報を与えることによって、仕様のクリティカル部分をコプロセッサによって実行されるべき部分に移すことを可能にさせることである。さらに、分割コンパイラプログラム用の入力データとしてプロファイルデータを使用することによって、ハードウェア/ソフトウェア分割を自動化することができる。
本発明の一実施形態は、第1のプロセッサと少なくとも第2のプロセッサとを含むターゲットシステムを生成する協調設計方法を提供し、この協調設計方法は、請求項1に記載された分割する方法を含む。この実施形態の効果は、分割された仕様を原ソースコード言語に変換可能であるため、この分割された仕様へのマニュアル変更が容易に行えることである。たとえば、第1のプロセッサによって実現されるべき部分から第2のプロセッサによって実現されるべき部分へ、または、その逆向きに、付加的な機能を手動で移す。さらに、ターゲットシステムを設計するとき、汎用プロセッサ向けのコンパイラプログラムと、コプロセッサ向きの設計ツールおよび/またはコンパイラが共に使用可能である。その結果として、ターゲットシステムのための最適性能が得られる。
本発明の一実施形態は、第2のプロセッサがコプロセッサであり、第2の部分仕様がコプロセッサの仕様に変換されることを特徴とする。本発明の一実施形態は、第1のプロセッサが汎用プロセッサであり、第1の部分仕様がコンパイラを用いてオブジェクトコードに変換されることを特徴とする。汎用プロセッサとコプロセッサを含むターゲットシステムは、汎用プロセッサのフレキシビリティとコプロセッサの高い性能を組み合わせることが可能である。
本発明の一実施形態は、協調設計方法が汎用プロセッサとコプロセッサとの間にインタフェースを定義するステップをさらに含むことを特徴とする。本実施形態の効果は、汎用プロセッサとコプロセッサとの間で、たとえば、同期のための情報交換、または、データを読み書きするための参照交換が可能になることである。
本発明の一実施形態は、汎用プロセッサとコプロセッサとの間のインタフェースがリモート関数呼び出しを含み、リモート関数呼び出しがパラメータの組を有し、パラメータの組が、呼び出し先関数の識別子と、呼び出し先関数の入力データを指示する少なくとも一つの参照と、呼び出し先関数の結果データを指示する少なくとも一つの参照と、を含むことを特徴とする。この実施形態の効果は、リモート関数呼び出しが汎用プロセッサとコプロセッサを同期させ、入力データのための参照と共に結果データのための参照を引き渡すことを可能にさせることである。
本発明の一実施形態は、リモート関数呼び出しのパラメータの組が呼び出し先関数のリターン状態に関する情報を格納するため使用される記憶場所への参照をさらに含むことを特徴とする。コプロセッサによって実行される関数が2箇所以上の終了ポイントを有する場合に、実際の終了ポイントに関する情報は、汎用プロセッサがソフトウェアのどのポイントでその実行を再開するかを決めるために利用できなければならない。コプロセッサによって実行された関数のリターン状態に関する情報を格納するため使用される記憶場所への参照を使用することにより、汎用プロセッサはこの情報にアクセスする。
一実施形態は、汎用プロセッサがデジタル信号プロセッサであることを特徴とする。デジタル信号プロセッサは、典型的に、仕様の比較的小さい部分が全体的な実行時間を決めるアプリケーションを処理する。コプロセッサを使用してアプリケーションのこの部分を実行することにより、全体的な性能を高めることが可能である。
本発明によれば、分割コンパイラプログラムプロダクトは、前記分割コンパイラプログラムがコンピュータシステム上で動かされるとき、請求項1に記載された分割する方法のすべてのステップを実施する。このプロダクトの効果は、分割を自動化することができ、これにより、効率を高めることである。
上に記載された実施形態の特徴は添付図面を参照してさらに解明され説明される。
本発明による分割方法の第1実施形態において、ユーザはソースコード言語としてC言語でプログラムを記述し、そのプログラムが汎用プロセッサによって実現される第1の部分とコプロセッサによって実現される第2の部分に分割される。一例として、C言語プログラムのソースコードの断片は3個の関数f、gおよびhにより構成され、各関数は入力パラメータとして1個の整数を有し、実行されるべき2個の任意のステートメントを有する。
f (int x)
{
s1;
s2;
}

g (int y)
{
s3;
s4;
}

h (int z)
{
s5;
s6;
}
分割方法は上記のソースコード断片を使用して説明される。第1ステップにおいて、ソースコードは複数の抽象構文木(AST)に翻訳される。複数の抽象構文木は、データ構造として木構造を使用することにより、抽象構文のソースコードの内部構造を表現する。ASTは、プロダクション名でラベル付けされたノードと、文法の終端を表すリーフとを有する。ソースコードの複数の抽象構文木への翻訳はパーサーを用いて実行可能であり、パーサーはその入力をスキャナーから獲得し、次に、複数の抽象構文木を構築する。ソースコードの走査とその後に続く構文解析の技術は両方とも、コンパイラテクノロジーの分野でよく知られた原理である。関数f、gおよびhを含むソースコード断片の得られた複数の抽象構文木101は図1に示される。図1では、3個の抽象構文木は、ソースコード断片の関数f、gおよびhをそれぞれに参照するノードFD1、FD2およびFD3によって表されている。略語FDは関数定義を表し、FHは関数ヘッダを表し、FBは関数本体を表し、PLはパラメータリストを表す。これらの略語の後には参照番号が続く。パラメータリストPL1、PL2およびPL3についてはこれ以上明記されない。
第2のステップにおいて、複数の抽象構文木101は第1および第2の組に分割される。第1の抽象構文木の組は汎用プロセッサによって実現され、第2の抽象構文木の組はコプロセッサによって実現されるべきである。コプロセッサによって実現されるべき抽象構文木は第2の抽象構文木の組へ移すために選択される。選択された抽象構文木は、関数f、gおよびhを含むソースコード断片内の特定の関数または特定のステートメントに対応する。特定の抽象構文木を複数の抽象構文木101から第2の抽象構文木の組へ移すプロセスはアウトライン化と呼ばれる。別の関数によって呼び出されるステートメント及び関数のいずれかに対応した抽象構文木をアウトライン化するとき、その抽象構文木は移されたステートメント及び関数のいずれかを呼び出す関数に対応した第1の組内の新しい抽象構文木によって置換される。移されたステートメントまたは関数が変数を有する場合に、これらの変数は移されたステートメントまたは関数に引数として渡される。
図1を参照すると、ソースコード断片内の関数hに対応し、ノードFD3およびそのブランチを含む抽象構文木は、第2の抽象構文木の組へ移すため選択される。さらに、ソースコード断片内の関数gのステートメントs4に対応し、リーフs4だけを含む抽象構文木は、第2の抽象構文木の組へ移すため選択される。ステートメントs4は、ソースコード断片に表されていない変数yを使用する。抽象構文木のアウトライン化と置換によって、複数の抽象構文木101は第1の抽象構文木の組201と第2の抽象構文木の組203に分割される。
図2を参照すると、複数の抽象構文木101の分割後に得られた抽象構文木の第1の組201および第2の組203が表される。複数の抽象構文木101の抽象構文木s4のアウトライン化は、ノードFD7およびそのブランチを含む抽象構文木に対応した関数を第2の抽象構文木の組203に作成することにより実現される。複数の抽象構文木101の抽象構文木s4のアウトライン化の後に続いて、抽象構文木s4は、第2の抽象構文木の組203内の抽象構文木FD7として存在する関数kへの関数呼び出しによって置換される。変数yは第2の抽象構文木の組203に作成された新しい関数kへ引数として渡される。第1の抽象構文木の組201は、ソースコード断片内の関数fに対応し、ノードFD4およびそのブランチを具備した抽象構文木を含む。第1の組はノードFD5を具備した抽象構文木をさらに含み、ノードFD5のブランチのうちの一つに抽象構文木kがある。第2の抽象構文木の組203は、ソースコード断片内の関数hに対応し、ノードFD6およびそのブランチを具備した抽象構文木を含む。第2の組は、ソースコード断片内の関数gのステートメントs4に対応し、ノードFD7およびそのブランチを具備した抽象構文木をさらに含む。
第2の抽象構文木の組203に移されるべき抽象構文木は、ソースコード断片内の対応した関数またはステートメントを手動でマーキングすることにより選択可能である。ユーザはコプロセッサへ移されるべき機能を選択しなければならない。この情報はソースコード断片を複数の抽象構文木へ変換するときに複数の抽象構文木に付加され、この情報は続いて分割のため使用される。抽象構文木の第1の組201および第2の組203はソースコード言語の使用に逆変換可能である。ソースコードのすべての必要な内部情報は、このような変換を可能にさせるため、抽象構文木表現に存在したままである。
一部の実施形態では、仕様は3組以上の抽象構文木に、たとえば、3組の抽象構文木に分割される。第1の組は汎用プロセッサによって実現され、第2の組および第3の組はそれぞれ第1のコプロセッサおよび第2のコプロセッサによって実現される。本実施形態の効果は、それぞれが仕様の特定の部分を実行するために専用の多数のコプロセッサを定義できることである。
さらに別の実施形態において、仕様は少なくとも2組の抽象構文木の組に分割される。少なくとも2組のうちのそれぞれの組はコプロセッサによって実現される。その結果として、アプリケーションを効率的に実行するコプロセッサの組が定義できる。
有利な一実施形態において、第1の抽象構文木の組201はソースコード言語の第1の部分仕様に変換され、第2の抽象構文木の組203はソースコード言語の第2の仕様に変換される。第1の抽象構文木の組201を変換するとき、以下の第1の部分仕様が得られる。
f (int x)
{
s1;
s2;
}

g (int y)
{
s3;
k(y);
}
第2の抽象構文木の組203を変換するとき、以下の第2の部分仕様が得られる。
h (int z)
{
s5;
s6;
}
k (int y)
{
s4;
}
ユーザは第1および第2の部分仕様にマニュアル変更を加えるかもしれない。汎用プロセッサで第1の部分仕様を実現し、コプロセッサで第2の部分仕様を実現することは、特定のコンパイラ、および、特定の設計ツールおよび/またはコンパイラを用いて行われる。
別の実施形態において、複数の抽象構文木101を第1の抽象構文木の組201と第2の抽象構文木の組203に分割するステップは、プロファイルデータに基づいて少なくとも一つの抽象構文木をアウトライン化するステップを含む。仕様のクリティカルな部分がコプロセッサによって実行されるべきであることは最も明白である。典型的な入力データを使用して仕様によって定義されるようなアプリケーションを動かすことにより、プロファイルデータが獲得できる。関連したプロファイルデータのタイプは、特に、コプロセッサの特性に依存する。たとえば、コプロセッサが演算を並列に高速実行する能力を備えているならば、プロファイルデータは、演算が実行される回数と、コプロセッサが処理する並列化の量に重点が置かれる。プロファイルデータは、仕様中のクリティカルな演算を選択するため使用されるので、対応した抽象構文木は第2の抽象構文木の組203へ移される。その結果として、コプロセッサは仕様のクリティカルな部分を実現する。さらに、プロファイルデータの使用は、仕様の第1および第2の部分仕様への自動分割を可能にさせる。
図3を参照すると、ターゲットシステムを生成する協調設計方法が概略的に表されている。ターゲットシステムは、汎用プロセッサとコプロセッサを含む。第1のステップ303において、ソースコード言語Cによる仕様301は、汎用プロセッサによって実現されるべきC言語による第1の部分仕様309と、コプロセッサによって実現されるべきC言語による第2の部分仕様311と、に分割される。このステップ303は、上記の実施形態に基づいて、ソースコードで仕様を分割する方法を含み、
−ソースコード言語C言語による仕様301をスキャナーおよびパーサーを用いて複数の抽象構文ツリーへ変換し、
−コプロセッサによって実現されるべきクリティカルな演算を識別するプロファイルデータを使用して、複数の抽象構文木を第1の抽象構文木の組と第2の抽象構文木の組に分割し、
−第1の抽象構文木の組をC言語による第1の部分仕様309に翻訳し、第2の抽象構文木の組をC言語による第2の部分仕様311に変換する。
次のステップでは、ユーザは、第1の部分仕様309および第2の部分仕様311にそれぞれマニュアル変更305および307を加える。たとえば、必要に応じて、機能が第1の部分仕様から第2の部分仕様へ移される。これらの仕様が原ソースコードであるため、ユーザによるあらゆるマニュアル変更は著しく容易になる。
次のステップ313において、C言語による第1の部分仕様309は、汎用プロセッサのための特定のコンパイラを使用して実行可能マシンコード315に変換される。ステップ313と並列に実行できるステップ317において、第2の部分仕様311は特定の設計ツールおよび/またはコンパイラを使用してコプロセッサの仕様319に変換される。一部の実施形態では、コプロセッサの仕様は、たとえば、ネットリストの形式であり、特定用途向けIC(ASIC)を設計するハードウェア仕様である。他の実施形態では、コプロセッサ仕様は、構成可能なプロセッサのためのハードウェア設計およびコンフィギュレーション仕様であり、または、既存の構成可能なプロセッサが使用されるならば、コンフィギュレーション仕様だけである。一部のさらなる実施形態では、コプロセッサ仕様は、プログラマブルプロセッサのためのハードウェア設計と、たとえばマイクロコード若しくは実行可能マシンコードの形式のソフトウェア仕様とであり、既存のプログラマブルプロセッサが使用されるならばソフトウェア仕様だけである。
別の実施形態では、ターゲットシステムは、制御プロセッサ、並びに、第1および第2のコプロセッサを含む。仕様301はこれらのコプロセッサにマップされる。第1の部分仕様309は、特定の設計ツールおよび/またはコンパイラを使用して第1のコプロセッサの仕様に変換される。第2の部分仕様311は、同様に特定の設計ツールおよび/またはコンパイラを使用して第2のコプロセッサの仕様に変換される。
異なる実施形態において、協調設計の第1のステップ303中に、インタフェースが汎用プロセッサとコプロセッサとの間に定義される。このインタフェースは、第1の部分仕様309および第2の部分仕様311における分割後に定義可能である。インタフェースは、データの読み書き、並びに、汎用プロセッサとコプロセッサとの間の同期のために必要な制御情報の読み書きのためのメモリアドレスにより構成してもよい。
有利な一実施形態では、汎用プロセッサとコプロセッサとの間のインタフェースはリモート関数呼び出しを含む。リモート関数呼び出しを用いて、汎用プロセッサはコプロセッサによって実現される関数を呼び出し、コプロセッサが特定の関数を実行し終えた瞬間に実行を再開する。或いは、汎用プロセッサは、当面の間は異なったタスクに切り替わってもよい。リモート関数呼び出しを使用することにより、汎用プロセッサとコプロセッサとの間の同期が暗に存在する。リモート関数呼び出しを実行するとき、コプロセッサによって実行されるべき関数の識別子がパラメータとして渡される。さらに、入力データを獲得するためのメモリアドレス、並びに、特定の関数の結果データを書き込むためのメモリアドレスがリモート関数呼び出しのパラメータとして渡される。コプロセッサはシステムメモリから入力データを読み出し、システムメモリへ出力データを書き込むことが可能である。
一部の実施形態では、また、コプロセッサによって実行された関数のリターン状態に関する情報を格納するため使用されるメモリ参照がリモート関数呼び出しのパラメータとして渡される。特定の関数が2箇所以上の終了ポイントを有し、その関数の実行後に制御が汎用プロセッサに戻される場合には、汎用プロセッサは、ソフトウェア上のどのポイントでその実行を再開すべきであるかに関する情報にアクセスしなければならない。このメモリ参照を介して、汎用プロセッサは特定の関数のリターン状態を取り出すことが可能である。
一部の実施形態では、協調設計方法の第1のステップ303中に、第2の抽象構文木の組に移された機能は第1の抽象構文木の組に複製される。図4を参照すると、仕様の一部を通る関数呼び出しのフローが概略的に表されている。実行のポイントで、関数呼び出しFCがステートメントS1に対して行われ、このステートメントは「if then − else」構造を含んでいる。ステートメントS1の後には、「if then − else」構造のガード節の評価結果に依存して、ステートメントS4またはステートメントS2が続く。ステートメントS4を実行した後、ステートメントS2が実行される。ステートメントS2の実行の後にステートメントS3の実行が続く。次に、ステートメントS3は制御を返す。クリティカルパスCPはステートメントS1、S2およびS3を含み、これらは、第2の抽象構文木の組に移された対応した抽象構文木の形式である。ステートメントS1の対応した抽象構文木は、第1の抽象構文木の組において、アウトライン化されたステートメントS1、S2およびS3への関数呼び出しを行う新しい抽象構文木によって置換される。実行中に、ステートメントS1、S2およびS3はコプロセッサによって実行される。しかし、ステートメントS1の後にステートメントS4が続く場合には、制御が汎用プロセッサに戻される。汎用プロセッサとコプロセッサとの間の関数呼び出しにより生じるオーバーヘッドを減少させるため、ステートメントS2およびS3は、それらの対応した抽象構文木を追加することにより、第1の抽象構文木の組に複製される。これにより得られたステートメント実行のフローは図5に示されている。同図を参照すると、複製されたステートメントは、それぞれ、ステートメントS2’およびステートメントS3’として表されている。コプロセッサは501によって示されたステートメントを実行し、汎用プロセッサは503によって示されたステートメントを実行する。ステートメントS3とステートメントS3’は両方とも、それらの実行の完了後に、同じ復帰のポイントを有する。偶然にステートメントS2’およびS3’が汎用プロセッサによって実行されるべき場合には、性能の損失よりもオーバーヘッドの低下によって得られる利益の方が上回る。
図6を参照すると、本発明の一実施形態による協調設計方法を用いて設計されたターゲットシステム601が表されている。ターゲットシステムは、システムメモリSM、汎用プロセッサGP、コプロセッサCOPおよびシステムバスSBを含む。システムメモリSM、汎用プロセッサGPおよびコプロセッサCOPは、システムバスSBを介して接続される。別の実施形態では、コプロセッサCOPおよびシステムメモリSMは直接的に接続される。さらに別の実施形態では、汎用プロセッサGPおよびコプロセッサCOPは直接的に接続される。システムメモリSMは複数のメモリレジスタ603を含む。汎用プロセッサGPはレジスタファイル605を含む。コプロセッサCOPは、レジスタファイル607、コンフィギュレーションメモリCM、制御ロジックCLおよびプログラムカウンタPCを含む。仕様を分割した後、多数の関数がコプロセッサCOPによって実現される。コプロセッサCOPはこれらの関数を実行するためコンフィギュレーションメモリCMによって構成される。本実施形態においてコプロセッサによって実現される機能はベクトル加算:
C[i]=A[i]+B[i]
であり、ここで、A、BおよびCは関連した3個のベクトルを表し、iは配列添字を表す。
本実施形態において、コプロセッサは再構成可能なプロセッサであり、たとえば、フィールド・プログラマブル・ゲート・アレイ(FPGA)である。他の実施形態では、コプロセッサは、プログラマブルプロセッサ、たとえば、超長命令語(VLIW)プロセッサ若しくは特定用途向け集積プロセッサ(ASIP)であり、または、コプロセッサは特定用途向けIC(ASIC)を含む。
汎用プロセッサGPはアプリケーションの実行を開始する。汎用プロセッサが制御をコプロセッサCOPに切り替えようとする瞬間に、汎用プロセッサはリモート関数呼び出しを行う。たとえば、ベクトル加算プログラムが実行されるべき場合である。リモート関数呼び出しの間に、以下のパラメータがコプロセッサCOPに渡される。
func_id:コプロセッサCOP内のベクトル加算関数の識別子
&A,&B,&C:計算に関わる3個のベクトルのシステムメモリSMにおけるアドレス
&ret_stat:コプロセッサCOPによって実行された関数のリターン状態を格納する変数のシステムメモリSMにおけるアドレス
リモート関数呼び出しの前に、すべてのパラメータは汎用プロセッサGPのレジスタファイル605に格納される。リモート関数呼び出し中に、これらのパラメータはコプロセッサCOPに渡される。本実施形態において、これらのパラメータは、図6に示されていない汎用プロセッサGPとコプロセッサCOPのポートとの間の直接的な接続を介してレジスタファイル607に書き込まれる。一部の実施形態では、コプロセッサCOPはこれらのパラメータをメモリから所定の仮想レジスタファイルへ読み出し可能である。他の実施形態では、汎用プロセッサGPは、これらのパラメータをメモリマップドI/Oを介してレジスタファイル607へ直接的に書き込み可能である。
コプロセッサCOPのレジスタファイル607に格納されたfunc_idパラメータは、制御ロジックCLによって読み出され、コンフィギュレーションメモリCM内のベクトル加算プログラムの第1のコンフィギュレーションを指示するプログラムカウンタPCに翻訳される。ベクトル加算が単一コンフィギュレーションに適合しない場合、より大規模の計算はランタイムに変更される多数のコンフィギュレーションを必要とする。この場合、プログラムカウンタPCは組の中の第1のコンフィギュレーションを指示する。
コプロセッサCOPは、システムバスSBを介して、汎用プロセッサGPとは無関係にシステムメモリSMにアクセスする。ベクトルAおよびBの値はシステムメモリSMの複数のメモリレジスタ603の中の対応したレジスタから読み出される。ベクトル加算プログラムは、AおよびBの値を使用して、コプロセッサCOPによって実行される。実行後、Cの計算値が、システムバスSBを介して、コプロセッサCOPによって複数のメモリレジスタ603の中の対応したレジスタへ書き込まれる。変数ret_statの値は、また、レジスタファイル607に格納された変数ret_statのアドレスを使用して、コプロセッサCOPによって複数のメモリレジスタ603の中の対応したメモリレジスタへ書き込まれる。図6に示されていない同期手段が設けられるので、コプロセッサCOPは、たとえば、割り込みを用いて、タスクの終了を汎用プロセッサGPに通知可能である。続いて、汎用プロセッサGPは、システムバスSBを介して、システムメモリSMの複数のメモリレジスタ603の中対応したメモリレジスタからパラメータret_statの値を読み出し可能である。ret_statの値を使用して、汎用プロセッサGPは、その実行を開始すべきポイントを決定し、実際にアプリケーションまたはタスクを再開可能である。
図7を参照すると、本発明の一実施形態による協調設計方法を用いて設計されたターゲットシステム701が表されている。ターゲットシステムは、システムメモリSM、制御プロセッサCTR、コプロセッサCOPA、COPBおよびCOPC、システムバスSB、入力/出力(IO)モジュールIOM、並びに、ローカルメモリLM、LM1およびLM2を含む。システムメモリSM、コプロセッサCOPA、COPBおよびCOPC、制御プロセッサCTR、並びに、入力/出力モジュールIOMは、システムバスSBによって接続される。別の実施形態では、ターゲットシステムの様々な部分の間に通信は、ブロッキング先入れ先出し(FIFO)バッファに基づくデータ駆動型の通信ネットワークによって行われる。コプロセッサCOPAはローカルメモリLMに接続され、コプロセッサCOPBはローカルメモリLM1およびLM2に接続される。オペレーティングシステム、割り込み、並びに、ユーザインタフェースのハンドリングのような標準的なシステム制御タスクは、制御プロセッサCTRにマップされる。非常に高い性能を要求するアプリケーション、たとえば、MPEG若しくはMP3のようなメディア符号化/復号化アプリケーションは、コプロセッサCOPA、COPBおよびCOPCにマップされる。コプロセッサCOPA、COPBおよびCOPCは、多数の演算を並列に実行する能力を備えたプロセッサ、たとえば、超長命令語(VLIW)プロセッサまたはスーパースカラプロセッサである。これらのタイプのプロセッサは多数の発行スロットを含み、各発行スロットは1台以上の機能ユニットに対応する。データパスは制御語の組によって制御される。各制御語はデータパスの部分を制御し、これらの部分は、数値演算ユニットまたはその他の機能ユニットのためのレジスタアドレスおよびオペレーションコードを含む。命令の各組は、一般に命令のバイナリフォーマットを対応した制御語に翻訳する命令デコーダを用いて、または、超小型記憶装置、すなわち、制御語をそのまま収容するメモリを用いて、制御語の新しい組を発生する。典型的に、制御語は、オペレーションコードと、2個のオペランドレジスタインデックスと、結果レジスタインデックスとを含むRISCのようなオペレーションを表現する。オペランドレジスタインデックスおよび結果レジスタインデックスはレジスタファイル内のレジスタを指示する。VLIWプロセッサの場合に、多数の命令が一つの長い命令、いわゆるVLIW命令に詰め込まれる。VLIWプロセッサは、これらの多数の命令を並列に実行するため多数の独立した機能ユニットを使用する。プロセッサは、プログラムにおいて命令レベルの並列化を利用可能にさせ、これにより、2個以上の命令を同時に実行する。本実施形態において、コプロセッサCOPA、COPBおよびCOPCは、異なる個数の発行スロットを含み、すなわち、コプロセッサCOPAは5個の発行スロットを含み、コプロセッサCOPBは15個の発行スロットを含み、コプロセッサCOPCは8個の発行スロットを含む。したがって、これらのコプロセッサは、異なるレベルの命令レベル並列化によって関数を取り扱う能力を備えている。一例として、MPEG符号化/復号化アプリケーションがコプロセッサCOPA、COPBおよびCOPCにマップされる。MPEGアプリケーションは、数種類の関数、すなわち、離散コサイン変換(DCT)関数、量子化関数および動き推定関数で作られる。MPEGアプリケーションは、本発明による仕様を分割する方法を使用して、コプロセッサCOPA、COPBおよびCOPCの全体に分割される。動き推定関数はコプロセッサCOPBにマップされるが、その理由はこの関数が本来的に大規模の命令レベル並列化を含むからである。動き推定はビデオシーケンスの少なくとも二つの異なるフレームを通して行われ、これらの二つのフレームがローカルメモリLM1およびLM2にそれぞれ格納される。DCT関数は、本来的な命令レベル並列化を有し、小規模のローカルメモリ記憶を必要とするので、コプロセッサCOPCにマップされる。量子化関数は、本来的に逐次的な関数であり、すなわち、命令レベルの並列化がない。量子化関数は、ローカルメモリに格納することが最適であるルックアップテーブルを必要とせず、システムバスのトランザクションの回数を減少させる。したがって、量子化関数はコプロセッサCOPAにマップするのが最適である。MPEGアプリケーションを分割した後、それぞれの特定のプロセッサにマップされた部分は、専用ツールを使用して、そのプロセッサの仕様へ別々に変換可能である。その結果として、MPEGアプリケーションを取り扱うターゲットシステム701の最適設計が得られる。
上記の実施形態は本発明の限定ではなく本発明の例示であり、当業者は請求項に記載された事項の範囲から逸脱することなく多数の代替的な実施形態を設計し得ることに注意すべきである。請求項中、括弧内に記載された参照符号は請求項を限定する事項として解釈されるべきではない。用語「含む、具備する(comprising)」は請求項に列挙されていない要素またはステップの存在を除外するものではない。要素の前に置かれた冠詞「a」や「an」はそれらの要素が複数個であることを除外するものではない。本発明は複数の別個の要素を含むハードウェアを用いて、並びに、適切にプログラムされたコンピュータを用いて実施可能である。複数の手段を列挙する装置請求項において、これらの手段の幾つかは全く同一のハードウェアによって具現化できる。単にある特定の手段が相互に異なる従属請求項に記載されていることは、これらの手段の組み合わせを有利になるように使用できないことを示すものではない。
ソースコード断片を走査し構文解析した後に得られた複数の抽象構文木を表す図である。 図1に表された複数の抽象構文木を分割した後に得られた第1および第2の抽象構文木の組を表す図である。 ターゲットシステムを生成する本発明による協調設計方法を表す図である。 分割前に仕様の一部を通るステートメント実行のフローを表す図である。 分割後のステートメント実行のフローを表す図である。 本発明による協調設計方法によって生成された第1のターゲットシステムを表す図である。 本発明による協調設計方法によって生成された第2のターゲットシステムを表す図である。

Claims (19)

  1. ソースコードにおける仕様を分割する方法であって、
    仕様を複数の抽象構文木に変換するステップと、
    前記複数の抽象構文木を第1のプロセッサによって実現されるべき第1の抽象構文木の組と第2のプロセッサによって実現されるべき第2の抽象構文木の組に分割するステップと、
    を備えたことを特徴とする方法。
  2. 前記第2のプロセッサがコプロセッサである、請求項1に記載のソースコードにおける仕様を分割する方法。
  3. 前記第1のプロセッサが汎用プロセッサである、請求項2に記載のソースコードにおける仕様を分割する方法。
  4. 前記第1の抽象構文木の組を前記ソースコードによる第1の部分仕様に変換し、前記第2の抽象構文木の組を前記ソースコードによる第2の部分仕様に変換するステップをさらに含む、請求項1に記載のソースコードにおける仕様を分割する方法。
  5. 前記複数の抽象構文木を第1の抽象構文木の組と第2の抽象構文木の組に分割するステップが、プロファイルデータに基づいて少なくとも一つの抽象構文木をアウトライン化するステップを含む、請求項1に記載のソースコードにおける仕様を分割する方法。
  6. 前記複数の抽象構文木を第1の抽象構文木の組と第2の抽象構文木の組に分割するステップが、プログラマによって与えられた情報に基づいて少なくとも一つの抽象構文木をアウトライン化するステップを含む、請求項1に記載のソースコードにおける仕様を分割する方法。
  7. ターゲットシステムを生成する協調設計方法であって、
    前記ターゲットシステムは、第1のプロセッサと少なくとも第2のプロセッサとを具備し、
    請求項1に記載のソースコードにおける仕様を分割する方法を含む、
    協調設計方法。
  8. ソースコードにおける仕様を分割する方法が、前記第1の抽象構文木の組を前記ソースコードによる第1の部分仕様に変換し、前記第2の抽象構文木の組を前記ソースコードによる第2の部分仕様に変換するステップをさらに含む、
    請求項7に記載のターゲットシステムを生成する協調設計方法。
  9. 前記第2のプロセッサがコプロセッサであり、前記第2の部分仕様が前記コプロセッサの仕様に変換される、請求項8に記載のターゲットシステムを生成する協調設計方法。
  10. 前記第1のプロセッサが汎用プロセッサであり、前記第1の部分仕様がコンパイラを用いてオブジェクトコードに変換される、請求項9に記載のターゲットシステムを生成する協調設計方法。
  11. 前記汎用プロセッサと前記コプロセッサとの間にインタフェースを定義するステップをさらに含む、請求項10に記載のターゲットシステムを生成する協調設計方法。
  12. 前記コプロセッサの仕様がASICの仕様を含む、請求項9に記載の協調設計方法。
  13. 前記コプロセッサの仕様がプログラマブルプロセッサの仕様を含む、請求項9に記載の協調設計方法。
  14. 前記コプロセッサの仕様が再構成可能なプロセッサの仕様を含む、請求項9に記載の協調設計方法。
  15. 前記汎用プロセッサと前記コプロセッサとの間の前記インタフェースがリモート関数呼び出しを含み、
    前記リモート関数呼び出しがパラメータの組を有し、
    前記パラメータの組が、呼び出し先関数の識別子と、呼び出し先関数の入力データを指示する少なくとも一つの参照と、呼び出し先関数の結果データを指示する少なくとも一つの参照とを含む、
    請求項11に記載の協調設計方法。
  16. 前記リモート関数呼び出しのパラメータの組が、呼び出し先関数のリターン状態に関する情報を格納するため使用される記憶場所への参照をさらに含む、請求項15に記載の協調設計方法。
  17. 前記ターゲットシステムがシステムメモリおよびシステムバスをさらに含み、
    前記システムメモリ、前記第1のプロセッサおよび前記第2のプロセッサが前記バスシステムによって接続される、
    請求項7に記載の協調設計方法。
  18. 前記汎用プロセッサがデジタル信号プロセッサである、請求項10に記載の協調設計方法。
  19. 分割コンパイラプログラムがコンピュータシステム上で動かされるとき、請求項1に記載のソースコードにおける仕様を分割する方法のすべてのステップを実施する分割コンパイラプログラムプロダクト。
JP2004524004A 2002-07-25 2003-06-23 ソース間分割コンパイル Pending JP2005534114A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02078038 2002-07-25
PCT/IB2003/002908 WO2004012083A2 (en) 2002-07-25 2003-06-23 Source-to-source partitioning compilation

Publications (1)

Publication Number Publication Date
JP2005534114A true JP2005534114A (ja) 2005-11-10

Family

ID=30775845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004524004A Pending JP2005534114A (ja) 2002-07-25 2003-06-23 ソース間分割コンパイル

Country Status (7)

Country Link
US (1) US7559051B2 (ja)
EP (1) EP1527390A2 (ja)
JP (1) JP2005534114A (ja)
KR (1) KR100958909B1 (ja)
CN (1) CN1672132A (ja)
AU (1) AU2003242950A1 (ja)
WO (1) WO2004012083A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151422A (ja) * 2007-12-19 2009-07-09 Kddi Corp プロセッサデバイスに基づくソースコード変換プログラム及び装置
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
JP2013125419A (ja) * 2011-12-14 2013-06-24 Fuji Xerox Co Ltd ハードウエア/ソフトウエア協調設計装置及びプログラム
JP2015534184A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション コード実行の柔軟なアクセラレーション
JP2018537779A (ja) * 2015-11-19 2018-12-20 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御装置の動作方法ならびに外部バイパスのために設計されている制御装置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457671B2 (en) * 2004-09-30 2008-11-25 Rockwell Automation Technologies, Inc. Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution
US7478376B2 (en) * 2004-12-02 2009-01-13 International Business Machines Corporation Computer program code size partitioning method for multiple memory multi-processing systems
US7487496B2 (en) * 2004-12-02 2009-02-03 International Business Machines Corporation Computer program functional partitioning method for heterogeneous multi-processing systems
JP4867009B2 (ja) * 2004-12-09 2012-02-01 国立大学法人 奈良先端科学技術大学院大学 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置
US7509244B1 (en) * 2004-12-22 2009-03-24 The Mathworks, Inc. Distributed model compilation
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
KR101528415B1 (ko) 2007-11-01 2015-06-11 실리콘 하이브 비.브이. 애플리케이션 프로파일 기반의 asip 설계
US20100037213A1 (en) * 2008-08-07 2010-02-11 Microsoft Corporation Grammar-based generation of types and extensions
US8352244B2 (en) * 2009-07-21 2013-01-08 International Business Machines Corporation Active learning systems and methods for rapid porting of machine translation systems to new language pairs or new domains
US20120096445A1 (en) * 2010-10-18 2012-04-19 Nokia Corporation Method and apparatus for providing portability of partially accelerated signal processing applications
US9489475B2 (en) * 2012-05-31 2016-11-08 Saudi Arabian Oil Company Reservoir simulation with scalable grid computing
US9760346B2 (en) * 2013-05-31 2017-09-12 Microsoft Technology Licensing, Llc Deeply parallel source code compilation
GB2523205B (en) * 2014-03-18 2016-03-02 Imagination Tech Ltd Efficient calling of functions on a processor
KR20160003485A (ko) 2014-07-01 2016-01-11 삼성전자주식회사 원격 함수 호출을 위한 자동 코드 생성
CN104572234A (zh) * 2014-12-29 2015-04-29 杭州华为数字技术有限公司 生成用于并行计算架构的源代码的方法及源到源编译器
US20170168792A1 (en) * 2015-12-15 2017-06-15 Futurewei Technologies, Inc. Space and time aware organization and isolation of components in real time systems
US10503509B2 (en) * 2016-09-30 2019-12-10 Intel Corporation System and method for communication using a register management array circuit

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428793A (en) * 1989-11-13 1995-06-27 Hewlett-Packard Company Method and apparatus for compiling computer programs with interproceduural register allocation
US5276880A (en) * 1989-12-15 1994-01-04 Siemens Corporate Research, Inc. Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
US5535342A (en) * 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
US5615127A (en) * 1994-11-30 1997-03-25 International Business Machines Corporation Parallel execution of a complex task partitioned into a plurality of entities
EP0767544A3 (en) * 1995-10-04 2002-02-27 Interuniversitair Micro-Elektronica Centrum Vzw Programmable modem using spread spectrum communication
EP1065611A3 (en) * 1995-10-23 2006-05-10 Interuniversitair Microelektronica Centrum Vzw A design environment for hardware/software co-design
US5815717A (en) * 1995-10-27 1998-09-29 Authorgenics, Inc. Application program and documentation generator system and method
US5896537A (en) * 1996-05-13 1999-04-20 Siemens Corporate Research, Inc. Partition based alias analyzer for pointers
US5848262A (en) * 1996-06-17 1998-12-08 Hewlett-Packard Company Simulating digital systems by using vector processing
US6061513A (en) * 1997-08-18 2000-05-09 Scandura; Joseph M. Automated methods for constructing language specific systems for reverse engineering source code into abstract syntax trees with attributes in a form that can more easily be displayed, understood and/or modified
US6175957B1 (en) * 1997-12-09 2001-01-16 International Business Machines Corporation Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring
US6857102B1 (en) * 1998-04-07 2005-02-15 Fuji Xerox Co., Ltd. Document re-authoring systems and methods for providing device-independent access to the world wide web
EP0997815A3 (en) * 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
GB9828381D0 (en) * 1998-12-22 1999-02-17 Isis Innovation Hardware/software codesign system
US20030188300A1 (en) * 2000-02-18 2003-10-02 Patrudu Pilla G. Parallel processing system design and architecture
EP1168168A3 (en) * 2000-06-20 2005-04-13 Interuniversitair Microelektronica Centrum Vzw Virtual hardware machine methods and devices
US7343594B1 (en) * 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US20040015816A1 (en) * 2001-01-05 2004-01-22 Hines Kenneth Joseph Coordination synthesis for software systems
US7174536B1 (en) * 2001-02-12 2007-02-06 Iowa State University Research Foundation, Inc. Integrated interactive software visualization environment
US20030037319A1 (en) * 2001-08-20 2003-02-20 Ankur Narang Method and apparatus for partitioning and placement for a cycle-based simulation system
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US7062762B2 (en) * 2001-12-12 2006-06-13 Texas Instruments Incorporated Partitioning symmetric nodes efficiently in a split register file architecture
US20030140337A1 (en) * 2001-12-21 2003-07-24 Celoxica Ltd. System, method, and article of manufacture for data transfer reporting for an application
US7085918B2 (en) * 2003-01-09 2006-08-01 Cisco Systems, Inc. Methods and apparatuses for evaluation of regular expressions of arbitrary size

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151422A (ja) * 2007-12-19 2009-07-09 Kddi Corp プロセッサデバイスに基づくソースコード変換プログラム及び装置
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
JP2013125419A (ja) * 2011-12-14 2013-06-24 Fuji Xerox Co Ltd ハードウエア/ソフトウエア協調設計装置及びプログラム
JP2015534184A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション コード実行の柔軟なアクセラレーション
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
JP2018537779A (ja) * 2015-11-19 2018-12-20 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御装置の動作方法ならびに外部バイパスのために設計されている制御装置

Also Published As

Publication number Publication date
EP1527390A2 (en) 2005-05-04
WO2004012083A3 (en) 2004-12-29
US7559051B2 (en) 2009-07-07
AU2003242950A1 (en) 2004-02-16
US20050246680A1 (en) 2005-11-03
WO2004012083A2 (en) 2004-02-05
KR20050021542A (ko) 2005-03-07
CN1672132A (zh) 2005-09-21
KR100958909B1 (ko) 2010-05-19

Similar Documents

Publication Publication Date Title
KR100958909B1 (ko) 소스 코드에서의 규격을 분할하는 방법 및 목표 시스템을 생성하는 공동-설계 방법
Bhattacharyya et al. Overview of the MPEG reconfigurable video coding framework
Leupers Retargetable code generation for digital signal processors
Paterson A new notation for arrows
US8464214B2 (en) Apparatus, method and system for building software by composition
JP4979875B2 (ja) リターゲッタブルコンパイルシステム及び方法
Wipliez et al. Software code generation for the RVC-CAL language
JPH11249904A (ja) コンパイル方法
EA004196B1 (ru) Управляющий программный продукт и система обработки данных
Zhao et al. Optimizing the memory hierarchy by compositing automatic transformations on computations and data
Gorin et al. LLVM-based and scalable MPEG-RVC decoder
de Araujo Code generation algorithms for digital signal processors
Metcalf The seven ages of fortran
Aditya et al. Elcor's machine description system: Version 3.0
Mattavelli et al. MPEG reconfigurable video coding
Sun et al. Designing high-quality hardware on a development effort budget: A study of the current state of high-level synthesis
Gorin et al. A portable video tool library for MPEG reconfigurable video coding using LLVM representation
Rijpkema et al. Deriving process networks from nested loop algorithms
Liao et al. Code generation and optimization techniques for embedded digital signal processors
Brandner et al. Automatic generation of compiler backends
Piper et al. Generalized parallel programming with divide-and-conquer: The beeblebrox system
Lesser Dynamic control structures and their use in emulation.
Saarikivi et al. Translating C# to Branching Symbolic Transducers.
Caro Generating multithreaded code from Parallel Haskell for symmetric multiprocessors
Tanase et al. Fundamentals and Compiler Framework

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060621

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090623