JP2006520034A - 一連のコンピュータ命令の変換 - Google Patents

一連のコンピュータ命令の変換 Download PDF

Info

Publication number
JP2006520034A
JP2006520034A JP2006502563A JP2006502563A JP2006520034A JP 2006520034 A JP2006520034 A JP 2006520034A JP 2006502563 A JP2006502563 A JP 2006502563A JP 2006502563 A JP2006502563 A JP 2006502563A JP 2006520034 A JP2006520034 A JP 2006520034A
Authority
JP
Japan
Prior art keywords
instructions
instruction
processor
original
processors
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.)
Withdrawn
Application number
JP2006502563A
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 JP2006520034A publication Critical patent/JP2006520034A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

単一のプロセッサのための一連のオリジナル命令(20)が、実行のために異なるタイプの複数のプロセッサ(12、16)にわたって配分される実施命令に変換される。一連のオリジナル命令(20)は、プロセッサのそれぞれ(12、16)に割り当てられる連続するセクション(22a〜c、24a、b)に分割される。オペランド転送命令がセクション(22a〜c、24a、b)に付加され、セクション(22a〜c、24a、b)間のデータ依存性をサポートする。割り当ては、オリジナル命令が実施されるときオペランド転送のためのコストを含みオリジナル命令の実行コスト要素の集積を最小にするように一連のオリジナル命令で連続するセクション(22a〜c、24a、b)間の境界の位置を選択することを含む。境界の位置は、異なる境界の位置の中で、探索から決定されることが望ましい。

Description

コンピュータ・プログラムは、通常一連の機械語命令をもつファイルの形態で配布されている。例えばJAVAプログラムは一連のバイト・コードとして配布されている。従来(仮想的な)機械語命令は、命令を「理解する」単一のプロセッサによって連続して実行されたが、1つのプロセッサのためのプログラムの機械語命令を目的プロセッサのために変換(翻訳)し、目的プロセッサで変換した命令を実行することも知られている。例えばJAVAバイト・コード・プログラムは、一プロセッサが直接実行するためのネイティブ命令に変換されることもある。変換を伴わない場合では、プロセッサはJAVAバイト・コード・プログラムを実行するためにインタープリタプログラムを走らせなければならないであろう。JAVAホット・スポットは、JAVAプログラムのセクションを選択的にネイティブ命令に変換するための技術である。JAVAホット・スポットは、プログラムの異なる部分が解釈される頻度を検知し、最も頻繁に実行される部分を後々の直接実行のためにネイティブ命令に変換する。したがって、JAVAプログラムを実行するプロセッサは、最も頻繁に実行されるプログラムの部分を直接実行でき、実行頻度の小さい命令は、解釈プログラムを実行することによって間接的に実行される。
他の展開では、異なるプロセッサを含む、非均一な処理システムを提供することが知られてきたが、それは命令を実行するための、命令に依存する別のコストを招いている。例えば米国特許第4,638,427号が、高位(major)および低位(minor)プロセッサの使用を教示している。タスク・プログラムには、高位プロセッサのための命令が供給される。低位プロセッサは、タスク・プログラムからの命令を実行する能力を有し、その場合その命令のいくつかあるいは全部がエミュレーションを必要とする。米国特許第4,638,427号が、下位プログラムでタスク・プログラムを実行するときに必要となる追加命令の数で表されたタスク・プログラムのための親和性値(affinity value)を計算することを教示している。タスクの親和性値は、タスクを上位プロセッサで走らせるか下位プロセッサで走らせるか選択するために使用される。PCT特許出願WO98/19238もヘテロジニアスな処理システムを開示している。このシステムでは、異なるプロセッサは、一般的には異なる命令セットを有する。プログラムの様々なスレッドは、異なるプロセッサのためにコンパイルされ、それによってスレッドは、プロセッサのそれぞれによって実行される。
これら刊行物はどれも、(仮想)機械語命令のプログラムをヘテロジニアスなプロセッサによるネイティブ実行(native execution)のための命令に変換する可能性については議論していない。しかし、JAVAは,一般的に複数スレッドをサポートしている。あるいは、異なるプロセッサへのタスクの割り当てを選択するための親和性値を使用して、異なるスレッド(タスク)のための命令を異なるプロセッサのためのネイティブ命令に変換できることも考えられる。これでもヘテロジニアスなプロセッサ・システムの最適な使用ではない。
単一のプロセッサのためのプログラムからの一連の命令を、複数のヘテロジニアスなプロセッサを含むシステムにおいて、効率的な実行のための実行命令に変換する方法を提供することがとりわけ本発明の目的である。
本発明による方法は、請求項1に述べられている。プログラムのそれぞれのセクションが、それぞれのプロセッサのための命令に変換され、セクション間の転送の位置は、異なるプロセッサにわたって配布された命令を実行する集積コストの最小化に依存して選択される。
その方法は、例えばJAVAバイト・コードのプログラムに適用される。したがって、任意のコンピュータで実行することができるプログラムを、互いに異なる複数のプロセッサをもつ特定のコンピュータで最適に走るように適用される。
集積コストを最小化する境界位置の組み合わせの選択は、コスト要因が一旦定義されれば、どのような形であれ行うことができる。第1の実施形態では、特定のプロセッサでオリジナル命令を実行するのに必要な命令を実施する回数と共に増加する実行コスト要因を使用する。したがって、オリジナル命令を実施するために必要な命令実行回数を最小にするようにセクション間の境界が決められる。第2の実施形態では、特定のプロセッサで消費されるエネルギの量と共に増加する実行コスト要因を使用する。したがって、実施命令を実行するために必要な電力消費量を最小にするようにセクション間の境界が決められる。
異なるプロセッサで実施されるセクション間の境界の位置は、探索において、複数のプロセッサの1つの代替プロセッサのために命令グループを実施するためのオペランド転送命令のコストを含む集積コスト要因を評価し比較して決定することが好ましい。探索は、異なる境界をもつ代替パスを累加的に構築することによって、かつ劣等パス(inferior path)が、劣等パスをさらにいくら累加的に延長してもよりよいパスに向上することができないことが明らかになったときには、劣等パスを削除することにより、行われることが好ましい。一実施形態では、オリジナル命令は、ベーシック・ブロックごとに割り当てられる(オリジナル命令内の一分岐目標から次の分岐目標へ)。実際的なプログラムでは、これが、境界の最適性に深刻な影響を及ぼすことなしに探索を簡素化することが分かっている。したがって、プログラム構成を使用して、オリジナル命令を異なるプロセッサで実施するためのもっとも費用効率がよい方式を選択する。
一実施形態では、プロセッサの内の1つはVLIW(非常に長い命令語)プロセッサであり、命令実施ごとに複数のオリジナル命令を実施する能力がある。この場合、オリジナル命令を単一のVLIW命令に組み合わせることによりコストを削減できる。
これらおよびこの他の有利な態様を以下の図を使用してより詳細に説明する。
インターネットからJAVAプログラムを受け取り、JAVAプログラムからのバイト・コードをネイティブ命令に変換し、それによって変換したプログラムの実行が2つの異なるプロセッサで交互に進行するシステムに関して本発明を説明する。しかし、本発明はJAVAプログラムに限定されるものではないことを理解されたい。例えば、本発明はX86命令のプログラムにも同様に適応できる。同じように、2つより大きな数のプロセッサも使用できる。
図1は、ヘテロジニアスな処理システムの一例を示している。システムは、命令メモリ11、14、第1のプロセッサ12、第2のプロセッサ16、データ・メモリ18およびバス19を含む。物事をはっきりとさせるために、出力が命令メモリ11、14に接続された別の命令変換ユニット10が示されているが、実際にはプロセッサ12、16のうちの1つが変換ユニットとして働くこともあり、命令メモリがバス19に接続されること、命令メモリ11、14が、両方のプロセッサ12、16のためのデータ・メモリ18の一部、または結合されたメモリの一部のこともあることを理解されたい。命令メモリ11、14はプロセッサ12、16に接続されている。プロセッサ12、16およびメモリ18は、バス19を介して接続されている。
第1のプロセッサ12は、処理ユニット120およびレジスタ・ファイル122を含むように示されている。同様に第2のプロセッサ16は処理ユニット160およびレジスタ・ファイル162を含む。一例として、第2のプロセッサは、VLIWプロセッサであり、レジスタ・ファイル162が複数ポートを有し複数のオペランドを供給し、処理ユニット160内の複数の機能ユニット(別途には示されていない)から同時に複数の結果を受け取り、第2のプロセッサ16の命令メモリが異なる機能ユニットに同時に命令を出力する。対照的に、第1のプロセッサ12は、単一のコマンドを1つずつ処理するための回路を含むように示されている。
作動中、命令変換ユニット10は、外部接続からプログラムを受け取る(例えばインターネットを介して)。プログラムは、単一のプロセッサのための一連の命令、例えば全てJAVA(仮想)マシンで実行するための一連のバイト・コードを含む。命令変換ユニット10は、一連の命令を第1および第2のプロセッサ11,16のために変換する。第1または第2のプロセッサ12、16のためにバイト・コードの単一の命令への変換が可能であることが頻繁であり、又プロセッサの1つがVLIWプロセッサのときには、プロセッサ12、16の1つのために複数のバイト・コードを単一の命令に変換することさえできる。しかし、ある場合には、一連の複数命令をバイト・コードの変形として使用することが必要である。
図2は、オリジナル・プログラムからの一連のオリジナル命令20と、第1のプロセッサ12のための命令ブロック23a〜cに変換されるセクション22a〜cと、第2のプロセッサ16のために変換される命令の命令ブロック25a、bに変換されるセクション24a、bとを象徴的に表している。一連のオリジナル命令20は、最上部から最下部に進行する。シリーズ20の最初のセクションは、第1のプロセッサ12のための命令の第1のセクション22aに変換される。シリーズ20の第2のセクションは、第2のプロセッサ16のための命令の第2のセクション24aに変換される。シリーズ20の第3のセクションは、第1のプロセッサ12のための命令の第3のセクション22bに変換される、等々である。
プロセッサ12か16のための命令が生成されるブロック23a〜c、25a、bの外にある斜線セクションでは「その他の」プロセッサ12、16は、関連する命令を実行しない。関連するプロセッサ12、16のための命令メモリ11、14が、NOP(無演算命令(No Operation命令)を含むこともある。これらのセクションでは、関連するプロセッサを低電力消費モードに切り替えるためのいくつかの命令を使用することもある。
変換後、プログラムは、2つのプロセッサ12、16の組み合わせで実行され、22a〜c、24a、bの間の境界では第2のプロセッサ16が第1のプロセッサ12に取って代わるまたはその逆が起こる。プロセッサ12、16は、命令メモリ11、14から変換された命令を読み出し、変換された命令を実行するが、それはレジスタ・ファイル122、162からオペランドを読み出すこと、結果をレジスタ・ファイル122および162へ書き込むこと、ならびにある命令のためにメモリ18内のデータを読み出し、書き込むことを含む。
オリジナル・シリーズ20からの命令の変換とは別に、セクション22a〜c、24a、bを実施するブロックは、プロセッサ12、16のレジスタ・ファイル間でオペランド・データを転送する追加転送命令を含むこともある。セクション間でデータに依存性がある場合、必要に応じて命令変換ユニット10が、このような追加の転送命令を生成する。つまり、プロセッサ12、16のうちの第1のプロセッサによって実行される、セクション22a〜c、24a、bの一セクションからの命令が、プロセッサ12、18のうちの異なる第2のプロセッサによって実行される、他のセクションからの命令の結果であるオペランドを使用する場合、命令変換ユニット10は、1つまたは複数の転送命令を加えてその結果をプロセッサの2番目のものからプロセッサの第1のものに転送する。プロセッサ12、16のうちの1つまたは複数がパイプライン処理されるときには、セクションを実施するブロックの間にNOPを挿入して、次のセクションで必要とするデータが利用可能になるまでプロセッサはどのような命令も実行しないようにすることがさらに必要になるかもしれない。
命令変換ユニット10は、異なるプロセッサのためにセクション22a〜c、24a、bの間で移転の位置を選択しなくてはならない。つまり、全て単一のプロセッサのための命令である一連のオリジナル命令を、異なるプロセッサ12、16で命令を実行するために、どこで細分(subdivide)するか選択しなくてはならない。命令変換ユニット10は、コスト関数を最小にするようにこれらの位置の選択を実行しなくてはならない。いくつかの代替実施形態は、このコスト関数のために存在する。
第1の実施形態では、一連の命令を実施するために必要な命令サイクルの合計数を表す命令サイクル・カウント、つまり変換された命令に追加の転送命令を加えた命令のために必要なサイクルの数が使用される。(サイクル当たり1つの命令を実行するプロセッサでは、この数は命令の数に等しい)。転送命令をカウントしない場合、もちろん、最小数のサイクルで実施されるプロセッサ12、16が各命令のために使用される結果になるはずであるが、転送命令が必要であるために切り替えに対してある閾値が存在する。第1の実施形態では、プロセッサ12、16の命令サイクルは同じ長さを有するものと仮定している。より一般的には、一連の命令を実行するために必要な持続時間が使用されている。
第2の実施形態では、異なるプロセッサで実行されるサイクルは、コスト関数で別々に重み付けされ、例えば、VLIWプロセッサで実行される命令にはより重い重み付けがなされ機会コストに対応する。したがって、最も軽く重み付けされた、プロセッサのうちの1つが、実施のための「好まれる」プロセッサである。より重く重み付けされた、プロセッサのうちの1つが選ばれるのは、通常、処理速度を十分に早くして、より重い重みづけおよび追加が必要な転送命令に対抗することができるプロセッサだけである。これは、例えば、より軽く重み付けされたプロセッサで複数の命令によってのみ実施することができる命令に対して起こることがある。
他の実施形態では、電力消費がコスト関数で重み付けされる。プロセッサ12、16の1つ(例えばVLIWプロセッサ)が、命令の実行当たり他方のプロセッサに比べより多くの電力を消費する場合には、対応して、そのプロセッサによって実行される命令にコスト関数でより重い重みを割り当てる。この重みは、NOP(無演算)命令を実行するのに必要な電力と、他の命令を実行するのに必要な電力との間の違い、あるいは命令を実行しないときにはプロセッサを低電力モードに切り替えることができる場合には、命令実行中に消費する電力と低電力モードでの消費電力との違いを表すこともある。したがって、より重く重み付けされた、プロセッサのうちの1つが選択されるのは処理スピードを十分に上げてより大きな電力消費に対抗できるときだけである。
セクション間の境界位置を選択するために様々なテクニックを使用できる。第1の実施形態では、ある探索技術が使用され、一連のオリジナル命令20をセクション22a〜c、24a、bに細分化した複数の異なるものを検討し、その複数の細分(subdivision)の各々に対する集積コストを評価して最も低いコストをもつ細分を選択する。このような探索を実施する多くの方式が存在する。
実施形態の1タイプについてより詳細に説明する。この実施形態は「パス」を考慮する。パスPは、プロセッサ12、16のうちのどちらで命令が実施されるのかを一連のオリジナル命令20からの各命令に対して説明する。パスの一表現例は、
P=(1、1、2、2、1、1)
である。
この意味するところは、シリーズ20からの第1、2、5および6番目のオリジナル命令が順番に第1のプロセッサ12で実施され、第3および第4の命令が第2のプロセッサ16で実施されることである。
パスPは、累積的に構築され、先ず部分パスP(i)が、シリーズ20からの命令で、シリーズ20のith番目を含む命令までのものに対して構築される(パスは、その命令を含む命令までのものが実施されるプロセッサを記述する)。セクションパスP(i)から、各々にプロセッサ12,16の異なる一つの「x」を割り当てることにより、命令を実施するための延長パスP(i+l)=(P(i)|x)を構築できる(シンボル「|」は、先行のパスの終端にxを添付することを意味する)。
その命令を含み、その命令までのものを選択されたプロセッサで実施するためのコストにオペランドのための転送命令を加えた合計である集積コストA(P(i))を各パスP(i)に対して計算できる。パスP(i+l)の集積コストAは、このパスがそれから構築されたパスP(i)のコストに関して再起的に表現される。
A((P(i)|x))=A(P(i))+C(i+l、x)+T
ここで、C(i+l、x)は、プロセッサ「x」でシリーズ20からの命令(i+1)を実施するためのコスト、「T」は、シリーズの命令(i+1)にとって必要である限りオペランドをプロセッサxに転送するための転送命令のコストである。
原則として、考慮する必要のある異なるパスの数は、シリーズ20内の命令の数に従って指数的に増加し、選択するプロセッサがN個(図1の実施形態では、N=2である)あるときには、パスP(i)がN個存在する。しかし、これら多くのパスは、下記を考慮することによって発見的(heuristically)に削減できる。第1のパスP(i)と第2のパスP’(i)を比較するとき、パスの集積コスト同士間の差が、第1のパスの後でith番目の命令以後依然として必要となる全てのオペランドが同じプロセッサで少なくとも利用可能であることを保証するために命令を転送するための転送コストTallより大きい場合、第2のパスの後では、A(P(i))−A(P’(i))<Tallゆえに、常に第1のパスの方が良いことに気づくであろう。
この場合、第2のパスP’(i)から派生するいかなるパスも第1のパスA(P(i))から派生する最良のパスよりコストが低いことは有り得ないのでそれを考慮する必要はない。したがって、考慮しなくてはならないパスの数は相当に削減することができる。
例えば、第1のパスP=(1、1、2、2、2、2)は、A=5のコスト(1で示され第1のプロセッサ12で実行される各命令に対して1、2で示され第2のプロセッサ16で実行される各命令に対して0.5、さらに第1のプロセッサ12から第2のプロセッサ16にオペランドを転送するために1)を有することもある。第2のパスP’=(1、1、1、1、1、1)は、コストA=6(各命令につき1)を有することもある。ここで、第2のプロセッサ16にパスPの後にだけ置かれた1つの結果のみが、後のオペランドとして必要で、かつこのオペランドを転送するコストが1かそれより小さい場合には、第2のパスP’が、第1のパスPより低コストになることは決してない。したがって、第2のパスP’は考慮から除外できる。
原則として、この形の削減では検討中のパスの各対の比較を必要とする。しかし、各パスに対して上限U(P(i))を計算し、プロセッサ12、16の任意の組み合わせを使用してパスP(i)から先に進むために必要な転送コストを出すことによって、もっと少ない仕事量で厳格ではないが削減を行うことができる。検討中の全てのパスP(i)の上限から、合計値A(P(i))+U(P(i))から最小和MINが決定される。A(P(i))>MIN
である場合には、パスP(i)は拒否されることもある。
上限の決定には、ithの命令までに生成され、この命令以降も必要となる「生きている」オペランドの数を決定することを伴う。効率に程度の差はあるが、コスト関数の本質に依存して様々な代替実施が可能である。コスト関数が、ほとんどのタイプの命令に対して概して特定の一プロセッサを好むのであれば、好まれるプロセッサで未だに利用可能でない全ての生きているオペランドをそのプロセッサに転送するコストを集計することによって上限U’を計算できる。前の様に、A+U’の最低値MINを全てのパスの間で決められる。次いで、好みのプロセッサよりも他のプロセッサでどの生きているオペランドが使用可能であるか決定し、好みのプロセッサから他のプロセッサにこれら生きているオペランドを転送するのに必要な命令を転送するためのコストを集計することにより、各パスに対するヘッドスタート・コスト(head start cost)H(P(i))を計算できる。ここで、A(P(i))−H(P(i))>MIN’であれば、パスは拒否されることもある。
パスの数を削減するための条件が同一であれば、パスは拒否されることもある。
図3は、セクション間の境界を選択するためのフロー・チャートを示している。フロー・チャートは初期ステップ30で始まり、一連のオリジナル命令20内の変換されなければならないあらゆる命令に対して繰り返される一連のステップがこれに続く。初期ステップ30では、空のパスを1つ含むパスの初期セットが生成され、生きているオペランドのセットが空のセットに初期化される。命令カウントがゼロにセットされる。初期ステップの後、第1のステップ31が実行される。
第1のステップ31では、命令カウントiが増分され、全ての可能なプロセッサ「x」を前のパス{P(i−l)}からの全ての先行パスに付加することにより新しいパス{P(i)}のセットが生成され、命令カウントiで指示された命令が実行される。第2のステップ32では、関連するパスに対するプロセッサxで命令iを実施するためのコストと、その命令のオペランドで先行するパスの後でそのプロセッサで利用可能でないものを転送するためのコストとを加算することによって、各パスP(i)に対する集積コストAを決定する。第3のステップ33では、命令iによって生成された、後の命令が使用する結果を加え、命令iの後の命令が使用しないオペランドを除去することにより、生きているオペランドのセットをアップデートする。第4のステップ34では、生きているオペランドに対する転送コストの上限Uが各パスについて決められる(例えば、好まれるプロセッサ12への転送コスト)。5番目のステップでは、パスの中でA+Uの最小値が決められる。第6のステップ36では、最小値MINより高いコストを有する(例えば、パスAの集積コストからヘッドスタート・コストを差し引いた値が最低値MINより高い)パスが、パスのセットから除去される。第7のステップ37では、一連のオリジナル命令20からのいずれかの命令が実施されるように残されているかどうかがテストされる。もしそうであれば、ステップ31から処理が繰り返される。そうでなければ、第8のステップ38が実行され、その中で最低の集積コストをもつパスが選択され、セクション22a〜c、24a、b内の細分を制御するために使用される。
続いて、選択されたパスで選択されたそれぞれのプロセッサで実施される、シリーズ20からの命令を実施する命令が生成される。さらに必要な転送命令が生成され、例えばプロセッサ12または16内にあるレジスタ・ファイル122または162内の一レジスタからのデータがデータ・メモリ18に、データ・メモリ18からのデータが他のプロセッサ12または16内のレジスタ・ファイル122、162に転送される。原則として転送命令は、関連するオペランドを生成する命令と、そのオペランドを使用する命令の間のどこに存在してもよい。
図3のフロー・チャートは、有利な実施形態を提供しているが、セクション内の細分を選択するためのプロセスの一例であることを理解されたい。セクション間の境界の探索を異なる方式で実施するがそれでもセクション中で最も低いコストの細分をもたらすか、あるいは細分探索のためのより少ない仕事量で最適に近い細分をもたらすことができる近似法を使用する多くの代替策が可能である。
例えば、同じ先行パスから生成された異なるパスを比較することにより、新しく生成されたいくつかのパスを直ちに排除することが可能なこともある。すなわち、同じプロセッサを使用する、部分パスP(i)の最後の命令iを除く全ての命令に対する異なるいくつかの実施をそれら同士の間で限定比較してもよい。このケースでは命令iを、そのオペランドが利用可能でないプロセッサで実施することを考慮する必要はないが、それは命令iをそのプロセッサで実施するコストが他のプロセッサでのものより大きくなく、実施した命令の結果を転送するコストがそのオペランドを他のプロセッサに転送するコストより大きくない場合である。この限定比較を使用して考慮が必要なパスの数を削減してもよい。
他の例として、多くのオペランドは、それらが生成された後では少数の命令の内部で使用されるか、プログラムを通して使用されるという事実を利用してもよい。この結果、集積コストAの「記憶」は、比較的短い:命令iまでの最後のいくつかの命令のためのプロセッサの選択で同じであるパスの集積コストは、一般的に同じ量で増加する(つまり、前の命令に対する差異に無関係)。これを使用して、命令iまでの所定の数の命令に対して同じであるパスのサブセットを比較し、最も低い集積コストを有するサブセットの一つを保持するのに使用することができる。
好まれるプロセッサ12が、命令実施に対して平均してより低いコストを有するとき、シリーズ20のセクションへの最適細分は、ほとんどの命令を好まれるプロセッサに割り当てがちであるが、より低いコストで他のプロセッサ16で実施することができる命令の周りに別途割り当てられた命令の小さな島を伴う。
図4がこれを利用する処理のフロー・チャートを示している。第1のステップ41で、シリーズ20、12からの命令iが、より低いコストで好まれていないプロセッサ16で実施することができる命令であるかどうか決められる。そうでなければ、第2のステップ42が実行され、命令カウントを増し、命令iを実行した結果がおよび/または転送されたオペランドが、どこで利用可能であるか記録する。第2のステップ42に続くのは全ての命令が処理されたかどうかテストするための第3のステップ43である。そうでなければ、処理は、第1のステップ41から繰り返される。
第1のステップ41が、シリーズ20 12からの命令iが、より低いコストで好まれないプロセッサ16で実施することができる命令であることを決定すると、第4のステップ44が実行される。第4のステップ44が、好まれないプロセッサによる命令の実施コストにオペランドを転送するための転送命令のコストと好まれるプロセッサ12からのおよびそのプロセッサへの結果を加えたものが、好まれるプロセッサ12による実施コストより少ないと決定した場合には第5のステップ45が実行され、命令iが好まれないプロセッサ16に割り当てられ、第2のステップ42がこれに続く。それ以外は、第6のステップ46が実行され、最初命令iと、iに初期化される補助命令ポインタjを含む命令のリストを設定する。
第7のステップ47では、命令jから所定の距離(例えば次の命令j+iにすぎない、または2命令j+1、j+2の範囲内)内にある命令で、命令iと同じ好まれないプロセッサ16でより少ないコストで実施することができる命令が、次の命令のために探索される。何も探せない場合には次のステップ42が実行される。このような命令が見つかった場合には、第8のステップ48が実行され、その中で、見つかった命令がリストに加えられ、jは、見つかった命令のカウントにセットされる。命令リスト内の命令を合わせて実施するコストにオペランドを転送するのに必要な転送命令のコストと、好まれるプロセッサ12からのおよびそのプロセッサへの結果を加えたものが好まれるプロセッサ12での実施コストより少ないかテストする。そうである場合には、ステップ45を実施して命令カウントを適切に増加する。そうでない場合には、第7のステップ47から処理を繰り返す。
図3および4のフロー・チャートは、有利な実施形態を提供しているが、セクション22a〜c、24a、b内で細分を選択するための処理の一例にすぎないことを理解されたい。多くの代替実施形態が可能であり、例えば、代替処理は、適切に変形した転送コスト計算方法で、シリーズ20の命令を全て逆に探索するか、あるいは命令のための処理命令の全部を実行する代わりに、全ての命令に対して1つまたは複数のステップが先ず実行されることもある。
以上、一連の入力オリジナル命令20からの各命令は、1つまたは複数の命令としてプロセッサ12か16で実施されるという想定のもとで本発明を説明してきたが、ある状況の下ではシリーズ20からの複数の命令は、1つのプロセッサ、例えばVLIWプロセッサ16で単体の命令として実施されることもあることを理解されたい。このような実施が、実行時間でコストを評価するときコストを著しく削減することは明白である。
この場合、セクション22a〜c、24a、bを選択するための処理を少し変形しなくてはならない。シリーズ20内の関連する複数の命令が、例えばそのシリーズ20内で、この複数の命令で構成されている仮想VLIW命令に取って代わられ、したがって非VLIWプロセッサによる命令の実施は、この仮想VLIW命令をいくつかの連続する命令によって行う実施、つまりシリーズからのオリジナル命令の実施として取り扱われることもある。もちろん、このような仮想VLIW命令に合体できる、異なる命令の組み合わせを探ることも可能である。
仮想的VLIW命令への組み合わせのためのシリーズ20からの命令の選択は、セクション22a〜c、24a、b間の境界の探索と組み合わせてもよいことはもちろんである。シリーズ20からの選択されたグループの命令がVLIWに組み合わされるところで例えば異なるパスP(i)を生成することによってこれを行うことができる。この場合、集積コストの計算には、一般的にVLIW命令内の第1の命令に加えられるこれら命令に対する追加コストを含まない(あるいは、VLIW命令内の追加命令を実行するコストを表す適切に変形されたコスト計算を含む)。
以上、シリーズ20からの命令は、プロセッサ12、16で順番に実行される、つまり連続する命令は、それらが異なるプロセッサで実行されるとしても連続して実施されるものと仮定してきた。もちろん、データの依存性が並行実行を可能にすればこれは必要ではない。これは、探索中にも当てはまり、例えば命令を、パスP(i)内の、異なるプロセッサで走る先行命令と並行して実行できれば、パス内の命令に対して実行時間コストを加算しない。
同様に、データの依存性がそれを可能にすればシリーズ12内の命令が再配置されることもある。例えば好まれないプロセッサ16でより少ないコストで実行することができる命令をこの方式で纏め、セクションを形成し、あるいは各々がシリーズ20からの複数の命令を実施する1つまたは複数の連続するVLIW命令を形成するとき、これがより低い実行コストを可能にする。最低でも、重いデータ依存性をもつ命令を纏めることは、セクション境界の探索をより効率的にする。
探索処理を、特定の命令iを使用して説明してきたが、より大きなユニットの命令を使用できることを理解されたい。例えば、命令が、ベーシック・ブロック内で異なるプロセッサに割り当てられることが好ましいことが分かっている(ベーシック・ブロックとは、シリーズ20のサブシリーズで分岐目標から始まり、次の分岐命令の直前で終わる)。ベーシック・ブロックの命令を全体として同じプロセッサに割り当てることによって最適に近いコストを実現できることが分かっている。これを使用して、個々の命令の代わりにベーシック・ブロックに対するパスを作ることによってセクションの境界をより効率よく探索することができる。
以上、シリーズ20を実施するもの以外の命令は走らせる必要はないと仮定してきた。しかし、本発明から逸脱することなく、1つまたは複数のタスクからの命令をプロセッサに予め割り当てることもできる。この割り当てが、プロセッサ12、16を、ある命令サイクルにおいて自由に追加命令を実行できるようにしておく場合には、プロセッサ12か16がなお自由であるサイクルでシリーズ20を命令をもって実施することができる。このような実施のための探索は、例えば、プロセッサ12か16が既に割り当てられた命令を有しているサイクルで、プロセッサ12か16による命令の実行に対して法外に高いコストを割り当てることによって実施されることがある。この場合、命令を実行するのに費用効果的なプロセッサが、その命令を予定することができるとき特定のサイクルで、自由ではないことが起こることがある。その結果、命令を適切度の低いプロセッサで実施することがより費用効果的であることもある。しかし、最も費用効果の高いプロセッサが自由になるまで何もしないことがより費用効果が高いこともある。これが、その他のプロセッサに何もしないようにさせる(例えばNOP命令を実行する)。したがって、この探索で、費用効果的なプロセッサを利用できるまで待つために一連のオリジナル命令20の実施にアイドル命令を追加挿入することがある。このような何もしないこと(idle)は、探索処理に挿入されたこのような何もしないことを伴うパスP(i)を含むことによって対応される。
このように、インターネットを介して受け取られたJAVAプログラムは、利用可能なサイクルでプロセッサ12、16によって実行される、固定タスクを差し挟んで実行されるこれらプロセッサのネイティブ命令として実行されることがある。これは、これらJAVAプログラムを実行するための特別なプロセッサを必要としないという利点を有する。これは特に埋め込み式プロセッサをもつ装置、例えばそれによって効率よくJAVAプログラムを実行するテレビジョン・セット、移動電話、家庭用品または個人用ケア用品で特に有利である。
ヘテロジニアスな処理システムを示す図である。 一連の命令および変換された命令を示す図である。 プログラムを変換するためのフロー・チャートである。 プログラムを変換するためのさらなるフロー・チャートである。
符号の説明
10 命令変換ユニット
11、14 命令メモリ
12、16 プロセッサ
18 データ・メモリ
19 バス
120 処理ユニット
122 レジスタ・ファイル
160 処理ユニット
162 レジスタ・ファイル

Claims (16)

  1. 単一のプロセッサのための一連のオリジナル命令からの命令を生成して、複数のプロセッサにわたって配分される前記オリジナル命令を実施するための方法であって、少なくとも2つの前記プロセッサが、それぞれのオリジナル命令を実行するための実行コスト要素に依存するオリジナル命令において異なり、前記命令が、
    前記一連のオリジナル命令を、前記プロセッサのそれぞれに割り当てられる連続するセクションに分割し、
    前記プロセッサの前記少なくとも2つに割り当てられる前記セクションからのオリジナル命令を、前記シリーズからの前記命令を実施するこれらプロセッサのための実施命令に変換し、
    オペランド転送命令を前記セクションに付加して前記セクション間のデータ依存性をサポートし、
    前記オリジナル命令が実施されるとき前記オペランド転送命令のためのコストを含み、前記オリジナル命令の実施コスト要素の集積を実質的に最小にするように、前記割り当てが、前記一連のオリジナル命令で、代替境界位置のなかからの連続するセクション間で境界位置を選択することを含む、
    オリジナル命令を実施するための方法。
  2. 前記選択において、特定のプロセッサのための前記それぞれのオリジナル命令のために使用される前記実行コスト要素が、前記特定のプロセッサで前記オリジナル命令を実施するのに使用される実施命令を実行するために必要な持続時間と共に増加する、請求項1に記載の方法。
  3. 前記選択において、特定のプロセッサのための前記それぞれのオリジナル命令のために使用される前記実行コスト要素が、前記特定のプロセッサで前記オリジナル命令を実施するために必要な実施命令を実行するために特定のプロセッサによって消費されるエネルギと共に増加する、請求項1に記載の方法。
  4. 前記境界位置の前記選定が、連続するグループでその各々の少なくとも1つのオリジナル命令を通してステップを実施し、前記代替のプロセッサのために前記グループを実施するためのオペランド転送命令のコストを含め集積コスト要素を評価し、比較する探索を含む請求項1に記載の方法。
  5. 前記グループが、一連のオリジナル命令内のオリジナル命令のベーシック・ブロックである請求項4に記載の方法。
  6. 前記オリジナル命令がJAVAバイト・コードである請求項1に記載の方法。
  7. 前記実施命令を前記プロセッサで実行することを含む請求項1に記載の方法。
  8. 前記複数のプロセッサのうちの第1のプロセッサが、実施命令ごとに複数のオリジナル命令を実施する能力があるVLIWプロセッサであり、より多くのオリジナル命令が同じ実施命令に組み合わされるにつれて、前記複数のプロセッサのうちの前記第1のプロセッサ上で前記オリジナル命令を実施するための前記コスト要素が減少する、前記第1のプロセッサに割り当てられたセクションからの複数のオリジナル命令をVLIW実施命令へ組合せることを備える請求項1に記載の方法。
  9. 前記複数のプロセッサのうちの第2のプロセッサが、実施命令当たり最大でオリジナル命令1つを実施する能力を有し、前記それぞれのオリジナル命令に対する実行コスト要素が、前記複数のプロセッサのうちの前記第2のプロセッサのために使用され、その実行コスト要素が、前記第1または第2のプロセッサで使用される実施命令当たりの前記複数のプロセッサのうちの前記第1のプロセッサのための実行コスト要素より少ない請求項8に記載の方法。
  10. 前記境界位置の前記選定が、
    特定のオリジナル命令までのそれぞれのオリジナル命令を、前記複数のプロセッサのうちのそれぞれで実施するように割り当てる、異なる割り当てパスを累加的に構築し、
    前記複数のパスの第1のパスに対する第1の集積コストと、前記複数のパスの第2のパスに対する第2の集積コストに、前記第2のパスの後に少なくとも前記第1のパスの後と同じ方式で必要なオペランドを利用可能にするためのコストを加えた値とを比較し、
    前記第2の集積コストが、前記第1の集積コストより少ない時には、前記第1のパスを考慮から削除すること、
    を備える請求項1に記載の方法。
  11. 第2のパスの後で、前記必要なオペランドを前記複数のプロセッサのうちの好まれる1つで使用可能にするための第1のコストと、第1のパスの後で前記複数のプロセッサのうちの好まれる1つ以外のプロセッサで使用可能であり、第2のパスの後で前記プロセッサの好まれる1つ以外のプロセッサで使用可能である前記必要なオペランドのセットを作るための第2のコストを計算することによって、前記第1のコストと前記第2のコストが比較される請求項10に記載の方法。
  12. コンピュータに前記請求項の何れか1つの方法を行わせる命令をもつコンピュータ・プログラム製品。
  13. 前記請求項の何れか1つの方法を実行するためにプログラムされたコンピュータ。
  14. データ処理装置であって、
    単一のプロセッサのための一連のオリジナル命令のための入力部と、
    複数のプロセッサであって、少なくともそのうちの2つのプロセッサが、それぞれのオリジナル命令を実施するためのオリジナル命令に依存する実行コスト要素の点で異なる複数のプロセッサと、
    前記複数のプロセッサにわたって配布された前記オリジナル命令を実施するために命令を生成する変換ユニットであって、前記変換ユニットが、
    前記一連のオリジナル命令を、前記複数のプロセッサのそれぞれに割り当てられる連続したセクションに分割し、
    前記少なくとも2つのプロセッサに割り当てられた前記セクションからの前記オリジナル命令を、前記一連のオリジナル命令からの前記命令を実施するこれらのプロセッサのための実施命令に変換し、
    オペランド転送命令を前記セクションに付加して、前記セクション間のデータ依存性をサポートするようにアレンジされており、
    前記オリジナル命令が実施されるとき前記オペランド転送命令のためのコストを含み、その実施コスト要素の集積を実質的に最小にするように前記割り当てが、前記一連のオリジナル命令で、複数の代替境界位置の間からの前記複数のセクションのうちの連続するものの間で境界位置を選択することを含むデータ処理装置。
  15. 前記変換装置が、前記オリジナル命令を実施するために前記命令を生成するようにプログラムされた前記複数のプロセッサのうちの1つである請求項14に記載のデータ処理装置。
  16. 前記境界位置の前記選定が、連続するグループでその各々の少なくとも1つのオリジナル命令を通してステップを実施し、前記代替のプロセッサのために前記グループを実施するためのオペランド転送命令のコストを含め集積コスト要素を評価し、比較する探索を含む請求項14に記載のデータ処理装置。
JP2006502563A 2003-02-20 2004-02-05 一連のコンピュータ命令の変換 Withdrawn JP2006520034A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03290421 2003-02-20
PCT/IB2004/050078 WO2004073376A2 (en) 2003-02-20 2004-02-05 Translation of a series of computer instructions

Publications (1)

Publication Number Publication Date
JP2006520034A true JP2006520034A (ja) 2006-08-31

Family

ID=32892994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006502563A Withdrawn JP2006520034A (ja) 2003-02-20 2004-02-05 一連のコンピュータ命令の変換

Country Status (6)

Country Link
US (1) US8146063B2 (ja)
EP (1) EP1597673B1 (ja)
JP (1) JP2006520034A (ja)
CN (1) CN100395709C (ja)
AT (1) ATE556372T1 (ja)
WO (1) WO2004073376A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120055353A (ko) * 2010-11-23 2012-05-31 삼성전자주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US8108843B2 (en) * 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
JP2009528611A (ja) * 2006-03-02 2009-08-06 エヌエックスピー ビー ヴィ 条件分岐中における最適化されたコンパイル法
WO2009101976A1 (ja) * 2008-02-15 2009-08-20 Nec Corporation プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4638427A (en) 1984-04-16 1987-01-20 International Business Machines Corporation Performance evaluation for an asymmetric multiprocessor system
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
US5588118A (en) * 1991-08-21 1996-12-24 Zilog, Inc. Single chip dual processor
US5418953A (en) 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US6513057B1 (en) * 1996-10-28 2003-01-28 Unisys Corporation Heterogeneous symmetric multi-processing system
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7065750B2 (en) * 1999-02-17 2006-06-20 Elbrus International Method and apparatus for preserving precise exceptions in binary translated code
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
GB9920676D0 (en) * 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
US7418580B1 (en) * 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
EP1290555A2 (en) * 2000-03-20 2003-03-12 Koninklijke Philips Electronics N.V. Method of executing a computer program with an interpreter, computer system and computer program product
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US7158571B2 (en) * 2000-12-11 2007-01-02 Sony Corporation System and method for balancing video encoding tasks between multiple processors
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
US7181732B2 (en) * 2001-11-14 2007-02-20 Sun Microsystems, Inc. Method and apparatus for facilitating lazy type tagging for compiled activations
US7024538B2 (en) * 2001-12-21 2006-04-04 Hewlett-Packard Development Company, L.P. Processor multiple function units executing cycle specifying variable length instruction block and using common target block address updated pointers
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
US7536682B2 (en) * 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
US20060150171A1 (en) * 2004-12-28 2006-07-06 Ceva D.S.P. Ltd. Control words for instruction packets of processors and methods thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
KR20120055353A (ko) * 2010-11-23 2012-05-31 삼성전자주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
KR101703328B1 (ko) * 2010-11-23 2017-02-07 삼성전자 주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
US9612867B2 (en) 2010-11-23 2017-04-04 Samsung Electronics Co., Ltd. Apparatus and method for data partition and allocation in heterogeneous multi-processor environment

Also Published As

Publication number Publication date
CN1751292A (zh) 2006-03-22
US20060179423A1 (en) 2006-08-10
ATE556372T1 (de) 2012-05-15
EP1597673A2 (en) 2005-11-23
US8146063B2 (en) 2012-03-27
EP1597673B1 (en) 2012-05-02
CN100395709C (zh) 2008-06-18
WO2004073376A3 (en) 2005-07-28
WO2004073376A2 (en) 2004-09-02

Similar Documents

Publication Publication Date Title
JP3916680B2 (ja) プロセッサ
US7007271B2 (en) Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
US5937188A (en) Instruction creation device
US5339420A (en) Partitioning case statements for optimal execution performance
US5946491A (en) Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds
WO2015105606A1 (en) Register allocation for vectors
KR20150059894A (ko) 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
JPH11288376A (ja) キャッシュにおけるコ―ド変換方法
EP2796990A2 (en) Apparatus and method for supporting multi-modes of processor
JP2006520034A (ja) 一連のコンピュータ命令の変換
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
CN1853164B (zh) 用于开发dsp编译器构件块的组合方法
GB2133595A (en) Vector processor
US8510529B2 (en) Method for generating program and method for operating system
JPH0816871B2 (ja) プログラム翻訳装置およびプログラム翻訳方法
US20100211760A1 (en) Apparatus and method for providing instruction for heterogeneous processor
JP5810918B2 (ja) スケジューリング装置、スケジューリング方法及びプログラム
CN102265257B (zh) 程序变换装置及程序变换方法
WO2012069010A1 (zh) 静态存储的分配方法和装置
KR102365306B1 (ko) 데이터 처리장치 및 벡터 스캔 연산의 수행방법
US7269827B2 (en) Method and apparatus for compiling code
Ottoni et al. Improving offset assignment through simultaneous variable coalescing
US6086632A (en) Register optimizing compiler using commutative operations
JP2023166881A (ja) コンパイラプログラム、情報処理装置およびコンパイラ方法
Mui Optimizing memory access for the Architecture Exploration System (ARIES)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070205

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070511

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080220