JP2003140910A - Vliwプロセッサにおけるバイナリトランスレーション方法 - Google Patents

Vliwプロセッサにおけるバイナリトランスレーション方法

Info

Publication number
JP2003140910A
JP2003140910A JP2001338865A JP2001338865A JP2003140910A JP 2003140910 A JP2003140910 A JP 2003140910A JP 2001338865 A JP2001338865 A JP 2001338865A JP 2001338865 A JP2001338865 A JP 2001338865A JP 2003140910 A JP2003140910 A JP 2003140910A
Authority
JP
Japan
Prior art keywords
check
processor
resource
instruction
resource conflict
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
JP2001338865A
Other languages
English (en)
Inventor
Satoru Nishimoto
哲 西本
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001338865A priority Critical patent/JP2003140910A/ja
Publication of JP2003140910A publication Critical patent/JP2003140910A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】ソフトウェアによって資源の競合を回避する必
要があるVLIWプロセッサ上でのバイナリトランスレ
ーションにおける命令スケジューリングの処理時間を削
減する。 【解決手段】複数の命令でライトポート等の資源を共有
し、かつ実行時に前記資源が競合した際にパイプライン
のストールや競合を回避するための機能を持たないプロ
セッサをホストプロセッサとするバイナリトランスレー
ションにおいて、前記ホストプロセッサに、資源の競合
が発生したか否かだけを検出する機能と競合が発生した
ことを表す資源競合チェックレジスタを設け,バイナリ
トランスレーションにおける命令のスケジューリング時
に,ハードウェアの資源チェック機能を使って実際に命
令を実行することで資源の競合をチェックする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムに関し、特に特定のプロセッサ用に作成されたプロ
グラムを、前記とは別のプロセッサ上で実行するため
の,バイナリトランスレーション方法に関する。
【0002】
【従来の技術】近年、特定のプロセッサ(以下ターゲッ
トプロセッサと呼ぶ)向けに作成されたコードを、ユー
ザーが変更することなく,別のプロセッサ(これをホス
トプロセッサと呼ぶ)上で実行することを可能にする、
バイナリトランスレーション技術が注目されている。バ
イナリトランスレーションにはプログラムの実行前にタ
ーゲットプロセッサ向けコードをホストプロセッサ向け
コードに変換する静的バイナリトランスレーションと、
プログラムの実行時にターゲットプロセッサ向けコード
をホストプロセッサ向けコードに変換する、実行時バイ
ナリトランスレーションがある。以下ではバイナリトラ
ンスレーションを,実行時バイナリトランスレーション
の意味で使用する。
【0003】米国トランスメタ社は、バイナリトランス
レーション技術を用いたCRUSOEと呼ぶプロセッサ
を2000年1月に発表した。このプロセッサは、命令
セットが異なる米国Intel社のX86プロセッサ向
けプログラムを、ユーザーが変更することなく,前記C
RUSOEチップ上で実行できるという特徴があり、か
つVLIW方式を採用によるハードウェアの簡単化によ
って,ターゲットプロセッサであるX86プロセッサよ
りも低消費電力であるという特徴を持つ。2000年9
月以降多くのPCメーカーが,X86互換の低消費電力
プロセッサとして前記CRUSOEをノートPCに採用
している。
【0004】CRUSOEについては、日経エレクトロ
ニクス2001年2月26日号の133ページに技術概
要が説明されている。これによると、CRUSOEで
は、コードモーフィングと呼ぶバイナリトランスレーシ
ョンソフトウェア(バイナリトランスレータ)をROM
に格納し、PCが立ち上がるとまずこのコードモーフィ
ングが実行され、その後実行されるBIOSやOSやア
プリケーションのコードがこのコードモーフィングによ
って実行時にCRUSOEのコードに変換され実行され
る。
【0005】コードモーフィングでは、まず実行する命
令列が主記憶から読み込まれる。この命令が、ホストコ
ードに未変換ならば、命令列をデコードし、内部命令に
変換し、最適化を行なった後にホストコードに変換し、
変換後のコードをホストプロセッサ上で実行する。この
とき変換したホストコードは、トランスレーションキャ
ッシュと呼ぶ主記憶のある領域に格納する。前記の読み
込んだ命令が既に変換済みの命令であるならば、そのま
まホストプロセッサ上で実行する。この処理をプログラ
ムが終了するまで繰り返す。
【0006】実行時バイナリトランスレーションには以
下のような利点がある。 (1)ソフトウェアの更新によって、命令セットや低消
費電力などマイクロプロセッサの仕様を変更できる。 (2)オブジェクトコードレベルの互換性を保ちながら
新しいハードウェアを導入しやすくなる。 (3)従来のスーパースカラ型プロセッサよりも高い性
能を発揮できる可能性がある。
【0007】(1)は、従来のスーパースカラプロセッ
サがハードウェアで行なってきた、並列に実行できる命
令の検出といった機能をソフトウェアで行なうことによ
り、ハードウェアが簡単になり、消費電力を低減できる
ことによる。(2)は、バイナリトランスレーションに
より、過去に作成された別プロセッサ向けのプログラム
を、新たに開発したプロセッサ上でそのまま実行できる
ため、従来のプロセッサの命令セットや仕様に制限され
ることなく、性能を向上させるためのさまざまな機能を
持たせた新たなプロセッサの開発が容易になるためであ
る。(3)は、従来のスーパースカラプロセッサでは、
ハードウェア量の制約から、並列実行できる命令の検出
は狭い範囲に限られていたが、バイナリトランスレーシ
ョンでは並列性の検出をソフトウェアが行なうので,並
列実行できる命令を検出するための範囲を大きくするこ
とができることに起因する。
【0008】バイナリトランスレーションは,実行時に
コードを変換するためのオーバーヘッドのために,ター
ゲットプロセッサによる実行に比べて性能が低下するこ
とが問題であった。プロセッサの性能は一般に以下の式
で与えられる。 演算性能 = 動作周波数 * 1サイクルに実行される平
均命令数 これを前記CRUSOEに当てはめると、 演算性能 = 動作周波数 * 1/{1命令の実行に必要
なサイクル数+トランスレーションキャッシュのミス率
*バイナリトランスレーションのオーバーヘッド} 動作周波数はハードウェアの単純化によって向上する。
1命令の実行に必要なサイクル数は,コードモーフィン
グによって命令スケジューリングの範囲を従来のハード
ウェアによって行なっていた場合よりも拡大することが
できる。トランスレーションキャッシュのミス率は,ト
ランスレーションキャッシュの容量の増大によって解決
できる。トランスレーションのオーバーヘッドは,再利
用率の高い命令に絞った最適化の実施および最適化処理
時間の削減により性能を向上させる。
【0009】前記CRUSOEでは、前記の並列実行可
能な命令を増加させるために、ゲートつきストアバッフ
ァと呼ぶ特別なハードハードウェアを備えている。この
ハードウェアについては、米国および日本で以下の特許
を出されている。 米国特許''Combing hardware and
Software to provide an i
mproved microprocessor'' N
o:6031992 日本特許 ''先進のマイクロプロセッサのためのゲート
格納バッファ'' 特表2001-507151これには、コードモー
フィングにおけるコード最適化時に,例外が発生する可
能性がある命令も分岐の前に移動させて並列度を上げる
が,実際にアーキテクチャレジスタやメモリへの反映
は,例外が発生しないことが判明する時点まで遅延させ
る方法が述べられている。
【0010】前記バイナリトランスレーションのオーバ
ーヘッドを削減するためには,最適化処理時間を削減す
ることが重要である。従来の静的なコンパイラでは,コ
ード最適化処理時間は実行時の性能には影響がなかった
が,バイナリトランスレーションでは実行時にコードの
変換および最適化を行なうので、最適化処理にかかる時
間がプログラムの実行時間に含まれ,性能低下の原因と
なる。
【0011】バイナリトランスレーションにおけるコー
ド最適化において重要かつ処理時間の大きな処理に,命
令スケジューリングがある。これは最適化対象の命令列
から並列に実行できる命令を検出し,命令の並べ変えを
行なう処理である。命令スケジューリングは,例えば図
1(A)に示す処理を行なう。図1の(A)ではまず3
行目で与えられた命令列に対してDAGと呼ぶ依存グラ
フを作り,DAG内で未スケジュールのノードの内,優
先度が最大の命令から順に,DAG内の命令の命令スケ
ジューリングが終了するまで4行目以降のループを繰り
返す。
【0012】前記CRUSOEプロセッサは,VLIW
方式のプロセッサである.近年ハードウェアの簡単化を
主な目的として,並列実行可能な演算を,従来のスーパ
ースカラ方式のようなハードウェアに代わって,ソフト
ウェア(コンパイラ)で検出し,VLIW命令中に明示
するようなVLIW方式のプロセッサが製品化されてい
る。
【0013】VLIWプロセッサには、並列実行可能な
複数の演算命令をVLIW命令よって明示するという共
通の特徴があるが、実際の実現方法には、(1)プロセ
ッサの資源の管理をハードウェアが行なう方式と、
(2)資源管理の多くの部分をコンパイラ(ソフトウェ
ア)に任せる方式の、2つの方向がある。前者の例とし
ては米国インテル社のIA―64アーキテクチャや,前
記CRUSOEプロセッサがある。
【0014】IA―64アーキテクチャでは、VLIW
命令間の依存関係はハードウェアが検出し、必要があれ
ばパイプラインをストールさせる。後者の例としては、
特開平11―65844で開示されているVLIWプロ
セッサがある。
【0015】特開平11―65844で示されるVLI
Wプロセッサでは、パイプラインのバイパス機能を使う
か否かを、命令によって指示する方法が開示されてい
る。データ依存がある先行命令Aと後続命令Bがあると
き、AとBの間に必要なサイクル数を命令Aのレイテン
シーと呼ぶ。パイプラインのバイパスとは、命令Aの結
果がレジスタに書かれた後で、命令Bがレジスタから依
存するデータを読むのではなく、演算器から出た命令A
の結果をレジスタに書く処理と並行して後続の命令Bに
該当データを転送する処理である。前記の特許では、命
令毎にバイパス機能を使うか、レジスタから読むかを指
定し、ハードウェアはこの指定に基づいてバイパスとレ
ジスタのセレクトを行なう。
【0016】前記(2)に分類にされる、プロセッサ資
源の管理をコンパイラに任せるようなVLIWプロセッ
サにおける、コンパイラが管理する資源の1つに、レジ
スタのリードポートおよびライトポートがある。この種
のプロセッサでは前記のポートの競合の回避をハードウ
ェアでは行なわないため、競合時のパイプラインのスト
ール処理や,競合を回避するためのハードウェアが不要
になるといった利点がある反面,実行時に資源の競合が
発生すると実行結果が不正になるという問題がある。こ
のようなプロセッサでは,ソフトウェア(コンパイラ)
が,命令のスケジューリングによって,実行時にハード
ウェア資源の競合が発生しないことを保証する必要があ
る。
【0017】
【発明が解決しようとする課題】従来技術で述べたよう
に,バイナリトランスレーションによる性能の低下を少
なくするには,オーバーヘッドの原因である最適化処
理,特に命令スケジューリングの処理時間を削減するこ
とが重要である。またバイナリトランスレーションを適
用するホストプロセッサが前記資源管理をソフトウェア
が保証する必要があるプロセッサの場合は,ホストプロ
セッサが前記CRUSOEやIA―64アーキテクチャ
の場合は必要なかった資源管理処理のオーバーヘッドが
加わるため,この資源管理が新たなオーバーヘッドとな
る。
【0018】図1(B)は,ソフトウェアで資源管理を
する必要があるプロセッサ向け命令スケジューリングに
おける資源管理処理を示したものである。この処理は,
前述の図1の(A)の最内ループ(7行目)から呼び出
され,指定された位置に命令を配置できるかを判定す
る。
【0019】本発明は、資源の管理をソフトウェアが保
証する必要があるプロセッサをホストプロセッサとする
バイナリトランスレーションにおいて、図1(B)に示
す命令スケジューリングの資源競合チェックの処理時間
を削減することを目的としている。
【0020】
【課題を解決するための手段】本発明では、前記課題を
解決するために、ソフトウェアによって行なっていた資
源の競合のチェックを、バイナリトランスレーション時
にハードウェアによって行なうことにより、バイナリト
ランスレーションのオーバーヘッドを低減する。
【0021】具体的には、資源が競合した際のパイプラ
インのストールや回避するための機能を持たないホスト
プロセッサに、資源の競合が発生したか否かだけを検出
する手段と、前記資源競合の検出手段によって検出した
競合発生の有無を保持するための資源競合チェックレジ
スタを設け、さらに前記資源チェックレジスタは、プロ
セッサが資源の競合をチェック中であることを表すCO
NFLICT_CHECKレジスタと、資源境遇チェッ
クを行なう残りサイクル数を表すREMAIN_CYC
LE_COUNTERレジスタと、資源競合チェックの
結果を保持するCHECK_RESULTレジスタを設
ける。
【0022】前記ホストプロセッサは、前記CONFL
ICT_CHECKレジスタの値が0ならば通常のモー
ドで命令を実行し、前記CONFLICT_CHECK
レジスタの値が1ならば、資源競合チェックモードで命
令を実行し、前記資源チェック用のモードでは、レジス
タのリードおよびライトは行なわず、リクエストだけを
演算パイプラインに流すだけで実際の演算は行なわず、
命令フェッチ以外のメモリアクセスは行なわない。
【0023】前記ホストプロセッサ上でバイナリトラン
スレーションを行なう場合、バイナリトランスレーショ
ン内の命令スケジューリング処理の一つのステップであ
る、命令をあるサイクルに配置できるか否かを資源の競
合の有無を用いて判定するステップにおいて、ホストプ
ロセッサ上で実際に資源競合をチェックする命令列を資
源競合チェックモードにて実行し、その実行結果得られ
る資源競合の有無を、前記資源競合レジスタを用いて検
出する。
【0024】
【発明の実施の形態】(第1の実施形態)図9、図1
0、図11は、本発明のバイナリトランスレータを実行
するVLIW方式のホストプロセッサ(以下ホストプロ
セッサと呼ぶ)の説明図である。本発明を適用するホス
トプロセッサは、レジスタのライトポート等のプロセッ
サ資源の競合のチェックをハードウェアでは行なわない
プロセッサである。例えば演算結果をレジスタに書き込
むためのライトポートを複数の演算器で共有しており、
同時には1つの演算結果しか書き込めないプロセッサで
あり,かつ同時に複数の演算結果を書き込む要求が来た
場合は、ハードウェアによってそれを検出して、パイプ
ラインをストールさせるなどの回避処理を行なわないプ
ロセッサである。また資源だけでなくレジスタのライト
アフターリード、ライトアフターライトといったハザー
ドによるパイプラインのストールも、レイテンシーが不
確定なロード命令以外に対しては行わないプロセッサで
ある。このようなプロセッサでは、ソフトウェアによっ
て命令の順序を変更する等により実行時に資源が競合し
ないことを保証する必要がある。前記プロセッサでは、
競合が発生時のパイプラインのストールや競合回避のた
めのハードウェアが不要となることで,動作周波数を向
上できるなどのメリットがある。
【0025】図9はホストプロセッサの全体構成であ
る。図9の(A)はオンチップマルチプロセッサ方式の
プロセッサであり、図9の(B)はシングルプロセッサ
方式である。プロセッサ901は複数のプロセッサコア
902と資源競合チェック用のレジスタからなり、プロ
セッサ905はプロセッサコア906と資源競合チェッ
ク用のレジスタ907から構成される。
【0026】第一の実施形態では、図9の(A)のシン
グルチップマルチプロセッサ構成で実施する場合につい
て説明し、第二の実施形態では図9の(B)のシングル
プロセッサ構成で実施する場合について説明する。
【0027】図10は、図9のプロセッサコア902お
よび906の内部構成を表したものである。各プロセッ
サコアは全て1002と同様の構成をとる。プロセッサ
コア1002は、命令フェッチユニット1003、命令
レジスタ1004、デコードユニット1005、演算装
置1006、1007、レジスタファイル1008から
構成される。命令フェッチユニット1003は命令キャ
ッシュから命令をフェッチし、毎サイクル1つのVLI
W命令を命令レジスタ1004にセットする。図10
は、1VLIW命令が2個の演算命令から構成される、
2演算命令同時実行が可能なVLIWプロセッサを表し
ている。命令レジスタにセットされたVLIW命令はオ
ペレーション#0とオペレーション#1から構成されて
おり、それぞれが独立した命令として演算器で実行され
る。オペレーション#0、オペレーション#1はそれぞ
れデコードユニット1005においてデコードされ、そ
れぞれ演算器1006、1007で実行される。
【0028】図11は、図10の演算器1006、10
07の構成図である。1101のVLIW命令中のオペ
レーション0および1はそれぞれ演算器1103および
1004で実行される。ここでは1103の演算器0
は、3ステージからなる演算器であり、1104の演算
器1は、1ステージからなる演算器の例を示している。
これらの演算器は演算終了後に結果をレジスタファイル
1110に格納する際にライトポート1109を共有す
る。したがって、1103の演算器0と1104の演算
器1の結果が同時にライトポート1109を使用しない
ように、ソフトウェアによって保証する必要がある。図
11の例では1103の演算器0を使用する命令の2サ
イクル後に1104の演算器1を使用する命令を配置し
ないように命令をスケジューリングする。
【0029】図2は前記ホストプロセッサ上で本発明の
バイナリトランスレーションを行なうシステムの構成を
示したものである。201は前記ホストプロセッサを表
すハードウェア部である。202はバイナリトランスレ
ータである。202のバイナリトランスレータによっ
て、ターゲットプロセッサ用に作成されたコードをホス
トプロセッサのコードに変換して、変換後のコードをホ
ストプロセッサのハードウェア部201で実行する。2
03はターゲットプロセッサ用のオペレーティングシス
テムであり、204は、ターゲットプロセッサ上のター
ゲットオペレーティングシステム用に作成されたアプリ
ケーションプログラムである。
【0030】図3は、図2の202のバイナリトランス
レータの処理の概要を示したものである。ホストプロセ
ッサで実行しようとするコードは主記憶301内の実行
する命令コード302に格納されている。
【0031】バイナリトランスレータによって変換され
たコードも格納される。バイナリトランスレータは,ま
ずこれから実行しようとする命令コード302が既に変
換済みか否かを304で判定する。ここで既にホストプ
ロセッサ用のコードに変換済みの場合は主記憶309の
変換後のコード310をホストプロセッサ311の実行
ユニット312で実行する。実行しようとする命令コー
ド302が未変換の場合は命令変換部305においてタ
ーゲットプロセッサ用のコードからホストプロセッサ用
のコードに変換する。
【0032】命令変換部305では、入力されたターゲ
ットプロセッサ用のコードをまず306でデコードし、
その後307でバイナリトランスレータの内部命令に変
換し、最後に308でコードの最適化を行なう。最適化
処理308内では命令スケジュール部313において並
列に実行できる命令を検出し、同時に実行できる命令か
らVLIW命令を生成する。前記従来技術で示したよう
にこのバイナリトランスレーションを行なうプロセッサ
の性能を向上させるには、コードの最適化における処理
時間の削減が重要である。本発明ではこの最適化処理3
08内の命令スケジューリング部313の処理時間を削
減する方法に関するものである。最適化されたコードは
主記憶309の変換後のコード310に格納され、ホス
トプロセッサ312の実行ユニット311で実行され
る。図4は、本発明に関わる図3のコード最適化処理3
08内の最適化処理の一部である命令スケジュール部3
13の処理を示したものである。命令スケジュール部に
は最適化対象の命令の集合が入力され、スケジュール単
位毎に命令スケジュールを実施する。命令スケジュール
は、分岐命令から分岐命令までの命令列である基本ブロ
ックや、複数の基本ブロックを単位として行なう。
【0033】まず409では全てのスケジュール単位が
スケジュール済みかどうか検査する。スケジュール済み
ならば処理を終了する(408)。未スケジュールのス
ケジュール単位があれば、402以降で未スケジュール
単位に対する命令スケジュールを行なう。
【0034】402ではまず命令のスケジュール結果を
格納するデータ構造であるスケジュール表を作成し、ス
ケジュール単位内の命令間の依存関係を表す依存グラフ
(DAG)を作成する。DAGの各ノードは命令を表し
ノード間のエッジは命令間の依存関係を表す。エッジに
はノード間に依存がある場合に最低限離してスケジュー
ルすべきレイテンシーと呼ぶ値も格納する。
【0035】403では前記DAG内の全てのノードが
スケジュール済みかどうか検査する。全てのノードがス
ケジュール済みならば410において現在のスケジュー
ル単位をスケジュール済みとし、409に戻り次の未ス
ケジュール単位の処理を行なう。DAG内に未スケジュ
ールのノードがあれば、404以降で未スケジュールノ
ードのスケジュールを行なう。
【0036】404ではDAG内の未スケジュールノー
ド内で、プライオリティーが最大のノードをMAX_S
CHEDULE_NODEとし、CURRENT_CY
CLEを、MAX_SCHEDULE_NODEをスケ
ジュール可能な最小サイクルとして、405以降でMA
X_READY_NODEを配置できるサイクル を決
定する。ここでスケジュール可能な最小サイクルはDA
Gノード間の依存関係とノード間のレイテンシーから決
定する。
【0037】405では命令が使用するプロセッサ資源
の競合を検査して、MAX_READY_NODEをC
URRENT_CYCLEに実際に配置できるか決定す
る。本発明に関わるホストプロセッサで必要な資源競合
の回避は、405の資源競合のチェックにおいて行な
う。
【0038】前記資源競合チェックにおいて既にスケジ
ュール表に配置されている命令と、これから配置しよう
としているMAX_READY_NODEが使用する資
源が競合する場合は、406で、スケジュールを試みる
サイクルを1サイクル増加させて、405に戻り再びス
ケジュールできるかどうか検査する。
【0039】405で資源の競合が無い場合は、407
において実際にスケジュール表のCURRENT_CY
CLEにMAX_READY_NODEを配置し、MA
X_READY_NODEをスケジュール済みとし、4
03に戻り未スケジュールノードのスケジュールを行な
う。
【0040】本発明は、VLIW方式のホストプロセッ
サで必要となる405の資源競合のチェックにかかる処
理時間を削減する方法に関するものである。図5、図
6、図7、図8は、この資源競合のチェックに関する説
明図である。図5、図6は従来のソフトウェアによる資
源競合チェックの処理フローであり、図7、図8は、本
発明の資源競合チェックの処理フローである。以下では
まず従来はソフトウェアによる資源競合チェックにつ
いて説明し、その後本発明の方法について説明する。
【0041】図5は、図4の405の資源競合チェック
の処理の主制御の処理フローである。ここでは単に50
2において図6の資源競合チェックルーチンを呼び出
し、その結果によって配置の可否を決定する。
【0042】図6はソフトウェアによる資源競合チェッ
クの処理フローである。602ではMAX_READY
_NODEを現在スケジュールしようとしている命令と
し、SCHEDULEを配置するスケジュール表とし、
CURRENT_CYCLEをMAX_READY_N
ODEを配置しようとしているサイクルとし、LAST
_CYCLEをMAX_READY_NODEが資源を
使用するサイクル数とする。またカウンタIを0で初期
化する。
【0043】603では、サイクルIがLAST_CY
CLEを超えているかどうか、すなわちMAX_REA
DY_NODEの資源を使用する全サイクルがチェック
済みかどうかを調べる。チェック済みならば、資源の競
合が発生していないことを表すので612で資源の競合
無しを返す。一方603においてサイクルIが資源競合
チェックが必要なサイクルであるならば、604以降で
サイクルIの資源競合をチェックする。
【0044】604ではENTRYをSCHEDULE
のCYCLE+Iサイクル目のエントリとする。またM
AX_READY_NODEがサイクルIで使用する資
源の集合をRES_SETとする。605以降では、E
NTRYで既に使用されている資源と、MAX_REA
DY_NODEがIサイクル目に使用する資源(RES
_SET)が競合するかどうかを調べる。
【0045】605ではRES_SETから一つの資源
を取り出し、RESとする。606ではRESが存在し
なければIサイクルでの資源競合のチェックは終了した
ことを表しており、607でIを1サイクル増加させて
603から再チェックを行なう。606でチェックすべ
き資源(RES)が存在すれば608以降でRESがこ
のサイクルで使用可能かどうか検査する。
【0046】608ではRES_NUMをMAX_RE
ADY_NODEがサイクルIで使用する資源RESの
数とし、REMAIN_NUMをENTRY内の資源R
ESの残りの使用可能数とする。609ではRES_N
UMとREMAIN_NUMを比較して、MAX_RE
ADY_NODEで使用する資源が残されているかどう
かチェックする。
【0047】残っていれば610でRESをチェック済
みとして605に戻り、他の資源をチェックする。60
7において資源が既に使用されていれば、資源が競合す
るので、611において資源競合有りを返す。
【0048】ソフトウェアによる資源競合のチェックで
は図6の2重ループの処理を行なうことになる。図7、
図8は、図5、図6のソフトウェアによる資源競合チェ
ック処理をハードウェアによって行なう第一の実施形態
の処理フローである。
【0049】図7は、図5の従来の資源競合チェック処
理の主制御に対する本発明の資源競合チェック処理の主
制御である。図7、図8を説明する前に、図9、図10
を用いてホストプロセッサ本実施例のホストプロセッサ
について説明し、図13を用いて前記ホストプロセッサ
上の資源チェックを行なう場合の概要を説明する。
【0050】図9の(A)は、第一の実施形態のシング
ルチップマルチプロセッサある。図9(A)は1チップ
上に2個のプロセッサコア902と資源競合チェックレ
ジスタ903と、主記憶904から構成される。
【0051】図10は図9のプロセッサ901の構成を
示したものである。1001のプロセッサコア0および
1002のプロセッサコア1の内部は同様の構成であ
る。資源競合チェックレジスタは、両プロセッサコアか
ら参照可能なレジスタ郡であり、内部にCONFLIC
T_CHECKレジスタ1010、CHECK_RES
ULTレジスタ1011、REMAIN_CYCLE_
COUNTER1012を持つ。
【0052】図13は、図9の(A)のプロセッサ構成
において本発明の資源競合チェック処理の概要を示した
ものである。図13の(A)は現在スケジュールしよう
としている命令列に対する依存グラフ(DAG)であ
る。1301〜1303はDAGのノードでありそれぞ
れ命令を表す。ノード間のエッジは依存関係を表してお
り、この例ではOP1とOP2、OP2とOP3の間に
はそれぞれレイテンシーが1の依存があることを表して
いる。これは各命令は最低1サイクル離さなければなら
ないことを表している。
【0053】図13(B)は、図13(A)のDAGに
対して本発明の資源競合チェックを用いた命令スケジュ
ールの概要の説明図である。1308は図9(A)のプ
ロセッサ901を表している。1305のP0および1
306のP1は図9のプロセッサコア902に対応し、
同様に1307の資源競合チェックレジスタは図9の9
03に対応する。図13(B)はプロセッサコアP0に
おいて、バイナリトランスレータを実行する場合であ
る。(B1)(B2)はOP2を各サイクルにスケジュ
ールする場合主記憶の内容であり、(B3)はOP2の
スケジュール後の、OP3スケジュールする場合の主記
憶の内容の変化を示したものである。
【0054】まず(B1)では、すでにOP1がSCH
EDULE_TOPにスケジュールされた状態で、OP
2のスケジュールを試みている。バイナリトランスレー
タが実行されている1305のプロセッサコアP0で
は、OP2をOP1の次のサイクル仮配置する。次に空
き状態の1306のプロセッサコアP1のプログラムカ
ウンタにSCHEDULE_TOPをセットして、P1
に命令列1314、1315を実行させる。このときP
1では、OP2が資源を使用するサイクル数1313で
示されるサイクルだけ命令を実行する。P1での実行で
は、資源が競合した場合もパイプラインのストールなど
の処理は行なわず、単に競合が発生したかどうかだけレ
ジスタに登録する。また、P1での命令の実行では、レ
ジスタの読み書きや、命令フェッチ以外でのメモリアク
セスを抑止し、単にリクエストをパイプラインに流すだ
けとする。OP1とOP2の実行中に、競合が発生した
場合は資源競合チェックレジスタ1307にビットをセ
ットする。
【0055】P0はP1での資源競合チェックが終了す
るまで待ち、P1での実行が終了すると、競合チェック
結果が格納されている資源競合チェックレジスタを調べ
る。
【0056】(B2)は競合が発生したケースであり、
この場合はOP2を配置する場所を1サイクル遅らせO
P1の2サイクル後とする。この状態で再び命令をP1
で実行し、前回と同様に競合の有無をチェックする。
【0057】(B3)は競合が発生しなかったケースで
あり、この場合はP0は次にスケジュールすべき命令O
P3のスケジュールを試みる。
【0058】次に図7、図8を用いて本発明の資源競合
チェックの処理フローについて説明する。702では資
源競合チェックを行なうプロセッサが現在空き状態かど
うかを検査する。空き状態でなければ、703で通常の
ソフトウェアによる資源競合チェックを行なう。703
の処理は具体的には、図6の処理である。702におい
て空きプロセッサがあれば、704で空きプロセッサで
の資源競合チェックを行なう。704の具体的な処理は
図8である。資源競合チェックが終了すると、競合の有
無を返す。
【0059】図8は、図7の704に示す空きプロセッ
サによる資源競合チェック処理である。MAX_REA
DY_NODEで示される命令をスケジュール表のCU
RRENT_CYCLEに配置できるかどうかをチェッ
クする。802ではMAX_READY_NODEをS
CHEDULEのCURRENT_CYCLEに仮配置
する。CHECK_START_CYCLEを資源競合
チェックを開始するサイクルとする。またCHECK_
START_ARDを資源競合チェックを開始する命令
のアドレスとする。次に803において、別プロセッサ
コアで資源競合チェックを実行するサイクル数を表す、
図10の1012のREMAIN_CYCLE_COU
NTERに、CURRENT_CYCLE−CHECK
_START_CYCLEの値をセットする。
【0060】次に資源競合チェックを実施する空きプロ
セッサのプログラムカウンタにCHECK_START
_ADRをセットする。これにより資源競合チェックを
行なう別プロセッサは上記アドレスから命令の実行を開
始し、REMAIN_CYCLE_COUNTERにセ
ットされた数の命令の実行が終了するまで、資源競合チ
ェックのために命令を実行する。
【0061】804は、別プロセッサによる資源競合チ
ェックの終了を待つためのループである。ここでは図1
0の1010のCONFLICT_CHECKレジスタ
の値が0になるまでループを繰り返す。この値が0にな
ると、805において、資源競合チェックの結果が格納
されている図10の1011のCHECK_RESUL
Tレジスタの値を検査する。値が0ならば競合なしと
し、1ならば競合有りとする。図4の406においてM
AX_READY_NODEをスケジュールするサイク
ルを1サイクル遅らせて再度資源競合チェックを試み
る。
【0062】図11、図12、図14は、前記の資源競
合チェック処理で使用する資源競合チェックレジスタの
実装例である。
【0063】図14は、図10および図12の資源競合
チェックレジスタと信号のタイミングである。図14の
(A)は資源競合チェック中に資源競合が発生しなかっ
た場合であり、(B)は競合が発生した場合である。図
14の(A)ではまず図8の803のREMAIN_C
YCLE_COUNTERへのセット命令によって、1
401のCOUNTER_SET信号が立つ。REMA
IN_CYCLE_COUNTER1205には、次の
サイクルで、資源競合のチェック用に実行するサイクル
数がセットされる。資源競合チェック中であることを表
すCONFLICT_CHECK1207は、COUN
TER_SET信号が立った次のサイクルから立ち、R
EMAIN_CYCLE_COUNTER1205が0
になった3サイクル後に0になる。この信号が立つこと
でCHECK_RESULT信号1208をリセットす
る。これは最後に発行した命令が演算パイプラインを抜
けるまでは資源競合をチェックするためである。競合が
発生しなかった場合は、REMAIN_CYCLE_C
OUNTER1205が0になることによって資源競合
チェックを終了する。STOP_CHECK信号120
6は、REMAIN_CYCLE_COUNTER12
05が0になったサイクルにたち、資源競合チェック用
の命令の発行を抑止する。
【0064】図14の(B)は、資源の競合が発生した
場合のタイミングを表している。資源競合が発生したこ
とを表すCHECK_RESULT信号1208が立つ
と、次のサイクルでREMAIN_CYCLE_COU
NTER1205が0になり、それによりCONFLI
CT_CHECKなどの一連の信号が落ちる。これによ
り競合が発生した時点で資源競合チェックを終了する。
【0065】図11、図12は図14のタイミングの実
装例である。図11は前述したとおり、演算器のリクエ
スト信号1102のパイプラインステージを表したもの
である。資源競合のチェックではレジスタのリード・ラ
イトおよび命令フェッチ以外によるメモリアクセスは行
なわず、リクエストのみを使用する。またロード・スト
アによってキャッシュやメモリをアクセスしないので、
命令はストールすることなく、パイプラインを流れる。
【0066】この例では1103の演算パイプライン0
と1104の演算パイプライン1によって共有されてい
るレジスタのライトポート1109が競合する可能性の
ある資源である。ANDゲート1111はこのライトポ
ート1109へのリクエスト1115と1116のAN
Dをとり、1ならばリクエストが競合したことを表すS
TAGE_CONFLICT信号1112を立てる。こ
の競合検出信号によってパイプラインのストールといっ
た処理は行なわない。STAGE_CONFLICT信
号1112と、命令を演算器に発行したことを表すIS
SUE1114は、資源競合チェックレジスタ1113
に入力する。図12は、図11の資源競合チェックレジ
スタ1113の構成例である。図12は、REMAIN
_CYCLE_COUNTER1205を制御するRE
MAIN_CYCLE_COUNTER回路1218
と、CONFLICT_CHECKレジスタ1207を
制御するCONFLICT_CHECK回路1219
と、CHECK_RESULTレジスタ1208を制御
するCHECK_RESULT回路1220と、STO
P_CONFLICT_CHECK信号1206を制御
するSTOP_CONFLICT_CHECK回路12
21からなる。
【0067】REMAIN_CYCLE_COUNTE
R回路1218は、セレクタ1222と、セレクト信号
生成回路1203と、REMAIN_CYCLE_CO
UNTERラッチ1205からなる。セレクタ1222
にはカウンタ初期値'0'かまたは、図8の803でセッ
トするREMAIN_CYCLE_COUNTERの値
であるCOUNTER_SET_VALUEかまたは、
REMAIN_CYCLE_COUNTER−1かまた
はホールドかのいずれかをセレクトする。セレクト信号
生成回路1203はCOUNTER_SET1201、
ISSUE1114、COUNTER_RESET12
02、REMAIN_CYCLE_COUNTER12
05が0であることを示す信号1223のCOUNTE
R_IS_0、資源競合が発生したこと表す信号CONF
LICT1209を入力としてセレクト信号SELEC
T1224を作成する。セレクト信号生成回路1203
では、REMAIN_CYCLE_COUNTER12
05をリセットする信号であるCOUNTER_RES
SET1202が立っているかまたは、競合が発生した
ことを表すCONFLICT信号111が立っていれ
ば、'0'をセレクトする。前記が成り立たなくてかつC
OUNTER_SET信号1201が立っていればCO
UNTER_SET_VALUE1204をセレクトす
る。前記が成り立たなくてかつREMAIN_CYCL
E_COUNTER1205が0でなくかつ命令が発行
されていれば、 REMAIN_CYCLE_COUN
TERをデクリメントする。それ以外はREMAIN_
CYCLE_COUNTERをホールドする。
【0068】CONFLICT_CHECK回路121
9では、REMAIN_CYCLE_COUNTERと
0との比較結果を1211のラッチE1、1212のラ
ッチE2、1213のラッチE3にディレイさせたもの
のORをとった結果をCONFLICT_CHECKラ
ッチ1207にセットする。ラッチE1〜E3はパイプ
ラインの最大ステージ長分だけ設ける。これにより資源
競合チェックを行なう最終命令(現在スケジュールして
いる命令)を発行後、その命令がパイプラインから出る
までを資源競合チェック中とする。
【0069】CHECK_RESULT回路1220に
は、図11の資源が競合したことを表すSTAGE_C
ONFLICT信号1112を入力する。一度競合が発
生すると、リセットがかかるまでそれを保持する。セレ
クタのセレクト信号1214は、1211のラッチE1
が立ったサイクルだけ1となる。これによりCHECK
_RESULTをリセットする。
【0070】STOP_CONFLICT_CHECK
回路1221はREMAIN_CYCLE_COUNT
ER1205が0になったサイクルに立つ。こ信号によ
り命令の発行を抑止する。これによりISSUE信号1
114が0にする。 (第2の実施形態)第一の実施形態では、本発明のホス
トプロセッサを1チップ上に複数載せたシングルチップ
マルチプロセッサ構成において、本発明のハードウェア
による資源競合チェックを用いた命令スケジューリング
を行なうバイナリートランスレーション方法について説
明した。以下で説明する第二の実施形態では、1チップ
上に1個のホストプロセッサを載せたシングルプロセッ
サ構成における、本発明のハードウェアによる資源競合
チェックを用いた命令スケジューリングを行なうバイナ
リトランスレーション方法について説明する。なお、以
下の説明にない部分は全て第一の実施形態と同様であ
る。
【0071】図9(B)は、本実施形態のシングルチッ
プ構成のホストプロセッサ905の説明図である。ホス
トプロセッサ905は、図10に示す前記第一の実施形
態と同様のプロセッサコア906と、図10に示す前記
第一の実施形態と同様の資源チェック用レジスタ907
と主記憶908から構成される。
【0072】図15は、自プロセッサによる資源競合チ
ェック処理の主制御である。本処理は図4の405から
呼ばれる。1501では図16に示すプロセッサによる
資源競合チェック処理を実行し、チェック結果に基づい
て命令の配置可、不可を返す。
【0073】図16は、図15の1501から呼ばれる
自プロセッサによる資源競合チェック処理の説明図であ
る。MAX_READY_NODEで示される命令をス
ケジュール表のCURRENT_CYCLEに配置でき
るかどうかをチェックする。1602ではMAX_RE
ADY_NODEをSCHEDULEのCURRENT
_CYCLEに仮配置する。CHECK_START_
CYCLEを資源競合チェックを開始するサイクルとす
る。またCHECK_START_ARDを資源競合チ
ェックを開始する命令のアドレスとする。
【0074】1603では、資源競合チェックを実行す
るサイクル数を表す、図10の1012のREMAIN
_CYCLE_COUNTERに、CURRENT_C
YCLE−CHECK_START_CYCLEの値を
セットする。次にCHECK_START_ADRに分
岐する。前記分岐命令の飛び先での処理が終了すると、
前記分岐命令の次の命令に制御を戻すために、前記分岐
命令を実行する直前に通常の関数呼び出しと同様にリタ
ーンアドレスを分岐命令の次の命令にセットする。
【0075】分岐先では、1602で指定した命令列を
資源競合チェックのために実行する。分岐先で実施した
資源競合チェックの結果は第一の実施形態と同様に資源
競合チェックレジスタのCHECK_RESULTレジ
スタに格納される。分岐先から制御が戻ってきた160
4では前記CHECK_RESULTレジスタの内容を
検査し、競合の有無を返す。
【0076】本実施形態における資源競合の検出と資源
競合チェックレジスタの構成は第一の実施形態と同様で
ある。資源競合チェックレジスタのCONFLICT_
CHECKレジスタが立っている間は資源競合のチェッ
ク中であり、ホストプロセッサは第一の実施形態と同様
に通常の動作とは異なる資源競合チェック用の動作を行
なう。具体的には前記CONFLICT_CHECKレ
ジスタが立っている間は、レジスタのリード、ライト
と、命令フェッチ以外のメモリアクセスは行なわず、パ
イプラインにリクエストのみを流す。これによりレジス
タの退避回復は不要になる。
【0077】図17は、1603の分岐命令の分岐先で
のホストプロセッサの動作、すなわち資源競合チェック
中のホストプロセッサの動作の説明図である。1701
では毎サイクル資源競合チェック中であることを表すC
ONFLICT_CHECKレジスタをチェックし、1
である間はプログラムカウンタが指す命令を発行する。
前記CONFLICT_CHECKが0になると、プロ
グラムカウンタを前記1603で分岐元でセットしたリ
ターンアドレスに変更し、分岐元に制御を移す。
【0078】
【発明の効果】複数の命令でライトポート等の資源を共
有し、かつ実行時に前記資源が競合した際にパイプライ
ンのストールや競合を回避するための機能を持たないプ
ロセッサをホストプロセッサとするバイナリトランスレ
ーションにおいて、前記ホストプロセッサに、資源の競
合が発生したか否かだけを検出する機能を設け,バイナ
リトランスレーションにおける命令スケジューリング時
に,資源競合のチェックをソフトウェアで行なう代わり
に、前記ハードウェアの資源チェック機能を使って実際
に命令を実行することによって資源の競合をチェックさ
せることにより、バイナリトランスレーションにおける
性能低下の要因の一つであるコード最適化の処理時間を
削減することができる。
【図面の簡単な説明】
【図1】コンパイラにおける命令スケジューリング処理
の説明図である。
【図2】本発明のバイナリトランスレーションを実行す
るシステムの構成図である。
【図3】本発明のバイナリトランスレータの構成図であ
る。
【図4】本発明のバイナリトランスレータの命令スケジ
ュール部の処理フローの説明図である。
【図5】従来の命令スケジュール処理における資源競合
チェック処理の主制御の説明図である。
【図6】従来の命令スケジュール処理における資源競合
チェック処理フローの説明図である。
【図7】本発明の資源競合チェック処理の主制御の説明
図である。
【図8】本発明のハードウェアによる資源競合チェック
処理フローの説明図である。
【図9】本発明の2つの実施形態を表すホストプロセッ
サの構成図である。
【図10】本発明の資源競合チェック結果を保持するレ
ジスタおよびホストプロセッサの構成図である。
【図11】本発明のホストプロセッサにおける資源競合
の検出方法の説明図である。
【図12】本発明の資源競合チェックレジスタの構成図
である。
【図13】本発明の資源競合チェックの概要の説明図で
ある。
【図14】本発明の資源競合チェックレジスタの信号の
タイミング図である。
【図15】自プロセッサにおける資源競合チェック処理
の主制御の説明図である。
【図16】自プロセッサにおける資源競合チェック処理
の説明図である。
【図17】自プロセッサによる資源競合チェック処理に
おけるプロセッサの命令発行動作である。
【符号の説明】
205・・・ホストプロセッサ、302・・・実行する
命令コード、303・・・バイナリトランスレータ、3
05・・・命令変換部、308・・・コード最適部、3
13・・・命令スケジュール部、310・・・変換後の
命令コード、401・・・命令スケジュールループ、4
05・・・命令スケジュールにおける資源競合チェック
処理の呼び出し、502・・・従来のソフトウェアによ
る資源競合チェック処理の呼び出し、702・・・空き
状態の別プロセッサコアがあるか否かの検査、704・
・・資源競合を別プロセッサで実際に実行させてチェッ
クする処理の呼び出し、802・・・別プロセッサで資
源競合チェックを行なうための各種設定、803・・・
資源競合チェックレジスタの設定、804・・・資源競
合チェックの終了待ちループ、805・・・資源競合の
有無の検査、901・・・シングルチップマルチプロセ
ッサ構成のホストプロセッサ、905・・・シングルプ
ロセッサ構成のホストプロセッサ、903、908・・
・資源競合チェックレジスタ、1010・・・CONF
LICT_CHECKレジスタ、1011・・・CHE
CK_RESULTレジスタ、1012・・・REMA
IN_CYCLE_COUNTERレジスタ、1111
・・・ライトポート資源の競合の発生を検査するAND
ゲート、1109・・・競合する資源(ライトポー
ト)、1218・・・REMAIN_CYCLE_CO
UNTERレジスタ制御回路、1219・・・CONF
LICT_CHECKレジスタ制御回路、1220・・
・CHECK_RESULTレジスタ制御回路、122
1・・・STOP_CONFLICT_CHECK信号
制御回路、1501・・・シングルプロセッサでのハー
ドウェアによる資源競合チェック処理の呼び出し、16
02・・・自プロセッサでの資源競合チェックのための
資源競合チェックレジスタの設定、1603・・・自プ
ロセッサでの資源競合チェック処理への分岐、1604
・・・自プロセッサでの資源競合チェック処理の結果の
検査、1703・・・資源競合チェック用の命令実行終
了時のプログラムカウンタの変更処理

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】複数の命令でライトポート等のプロセッサ
    資源を共有し、かつ実行時に前記資源が競合した際にパ
    イプラインのストールや競合を回避するための機能を持
    たないVLIW方式のプロセッサをホストプロセッサと
    するとき、前記ホストプロセッサとは異なるプロセッサ
    (ターゲットプロセッサ)用の命令コードを前記ホスト
    プロセッサ用のコードに変換するバイナリトランスレー
    ション方法であって、前記バイナリトランスレーション
    が、前記ホストプロセッサとは別のプロセッサ(ターゲ
    ットプロセッサ)用の命令コードを既にホストプロセッ
    サ用のコードに変換済みか否かを判定する第1のステッ
    プと、変換済みであれば変換済みの命令コードをホスト
    プロセッサ上で実行する第2のステップと、前記第1の
    ステップで未変換ならば、未変換のターゲットプロセッ
    サ用の命令コードをデコードする第3のステップと、前
    記デコードした命令コードをホストプロセッサ用のコー
    ドに変換する第4のステップと、前記ホストプロセッサ
    用コードに対してコード最適化を行なう第5のステップ
    と、最適化したコードをホストプロセッサ上で実行する
    第6のステップを持つ時において、前記バイナリトラン
    スレーションの第5のステップのコード最適化処理内で
    実施する命令スケジュール処理における資源競合の有無
    の検出を、実際にホストプロセッサ上で命令を実行する
    ことによって検査することを特徴とするバイナリトラン
    スレーション方法。
  2. 【請求項2】請求項1バイナリトランスレーション方法
    であって、ホストプロセッサが、資源の競合のみを検出
    する手段と、前記資源競合の検出手段によって検出した
    競合発生の有無を保持するための資源競合チェックレジ
    スタを備え、前記第5のステップで行なう資源競合検査
    において、資源の競合を検査する命令列を実際にホスト
    プロセッサ上で実行させ、前記実行時における資源競合
    の有無を、前記競合を検出するための手段と競合の有無
    を保持するための資源競合チェックレジスタを用いて検
    査することを特徴とする、請求項1のバイナリトランス
    レーション方法。
  3. 【請求項3】請求項2バイナリトランスレーション方法
    であって、ホストプロセッサが備える資源競合チェック
    レジスタが、プロセッサが資源の競合をチェック中であ
    ることを表すCONFLICT_CHECKレジスタ
    と、資源境遇チェックを行なう残りサイクル数を表すR
    EMAIN_CYCLE_COUNTERレジスタと、
    資源競合チェックの結果を保持するCHECK_RES
    ULTレジスタを備え、前記ホストプロセッサは、前記
    CONFLICT_CHECKレジスタの値が0ならば
    通常のモードで命令を実行し、前記CONFLICT_
    CH ECKレジスタの値が1ならば、資源競合チェッ
    クモードで命令を実行し、前記資源チェック用のモード
    では、レジスタのリードおよびライトは行なわず、リク
    エストだけを演算パイプラインに流すだけで実際の演算
    は行なわず、命令フェッチ以外のメモリアクセスは行な
    わず、前記第5のステップの資源競合チェックにおい
    て、CONFLICT_CHECKレジスタが1の状態
    でホストプロセッサ上で命令を実行することにより資源
    競合の有無を検出することを特徴とする、請求項2のバ
    イナリトランスレーション方法。
  4. 【請求項4】請求項3のバイナリトランスレーション方
    法であって、適用するホストプロセッサが1チップ上に
    複数のプロセッサコア載せたシングルチップマルチプロ
    セッサで構成され、1つのプロセッサコア上でバイナリ
    トランスレーションを実施し、別の空きプロセッサコア
    上で、バイナリトランスレーション内で実施する資源競
    合チェック処理をおこなうことを特徴とする請求項3の
    バイナリトランスレーション方法。
  5. 【請求項5】請求項3のバイナリトランスレーション方
    法であって、適用するホストプロセッサが1チップ上に
    1つのプロセッサコア載せたシングルプロセッサで構成
    され、バイナリトランスレーションを実施するホストプ
    ロセッサ上で、前記バイナリトランスレーション内で実
    施する資源競合チェック処理を行なうことを特徴とする
    請求項3のバイナリトランスレーション方法。
  6. 【請求項6】請求項4のバイナリトランスレーション方
    法であって、1つのプロセッサコア上で前記バイナリト
    ランスレーションが実行される時に、前記バイナリトラ
    ンスレーション内の命令スケジューリングにおいて実行
    される資源競合チェック処理が、前記バイナリトランス
    レーションを実行しているプロセッサコアとは別の、空
    き状態のプロセッサコアが否かを調べる第1のステップ
    と、空きプロセッサがなければソフトウェアで資源競合
    のチェックを行なう第2ステップと、前記空きプロセッ
    サがある場合は、資源競合チェックを開始する命令のア
    ドレスと、資源競合チェックを行なうサイクル数を資源
    競合チェックレジスタに格納する第3のステップと、前
    記資源競合チェックを実行する空きプロセッサコアのプ
    ログラムカウンタに前記資源競合チェックを開始するア
    ドレスをセットし、前記空き状態の別プロセッサコア上
    で前記資源競合チェックを開始するアドレスから資源競
    合チェックサイクル間の命令を、資源競合チェックモー
    ドで実行する第4のステップと、前記第4のステップの
    後に、前記別プロセッサコアでの資源競合チェックが終
    了するまで待つ第5のステップと、前記別プロセッサコ
    アでの資源競合チェックが終了した後で、資源の競合が
    発生したかどうか、資源競合チェックレジスタを検査す
    る第6のステップとを持つことを特徴とする、請求項4
    のバイナリトランスレーション方法。
  7. 【請求項7】請求項5のバイナリトランスレーション方
    法であって、ホストプロセッサ上で前記バイナリトラン
    スレーションが実行される時に、前記バイナリトランス
    レーション内の命令スケジューリングにおいて実行され
    る資源の競合チェック処理が、資源競合チェックを開始
    する命令のアドレスと、資源競合チェックを実行するサ
    イクル数を資源競合チェックレジスタに格納する第1の
    ステップと、前記レジスタに格納した後で、前記資源競
    合チェックを開始するアドレスに分岐する第2のステッ
    プと、分岐後の戻りアドレスを前記分岐命令の直後の命
    令アドレスとする第3のステップ、前記分岐後に、ホス
    トプロセッサが前記資源競合チェック開始アドレスか
    ら、前記資源競合チェックサイクル数の間の命令を資源
    競合チェックモードで実行し、資源競合チェックサイク
    ル間の命令の実行が終了した後で、前記分岐前にセット
    した戻りアドレスに分岐する第4のステップと、戻りア
    ドレスに分岐した後で前記資源チェックモードで実行し
    た資源競合チェック結果が格納されている資源競合チェ
    ックレジスタの値を検査する第5のステップから構成さ
    れることを特徴とする、請求項5のバイナリトランスレ
    ーション方法。
JP2001338865A 2001-11-05 2001-11-05 Vliwプロセッサにおけるバイナリトランスレーション方法 Pending JP2003140910A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001338865A JP2003140910A (ja) 2001-11-05 2001-11-05 Vliwプロセッサにおけるバイナリトランスレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001338865A JP2003140910A (ja) 2001-11-05 2001-11-05 Vliwプロセッサにおけるバイナリトランスレーション方法

Publications (1)

Publication Number Publication Date
JP2003140910A true JP2003140910A (ja) 2003-05-16

Family

ID=19153292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001338865A Pending JP2003140910A (ja) 2001-11-05 2001-11-05 Vliwプロセッサにおけるバイナリトランスレーション方法

Country Status (1)

Country Link
JP (1) JP2003140910A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552313B2 (en) 2003-12-22 2009-06-23 Nec Electronics Corporation VLIW digital signal processor for achieving improved binary translation
CN102566979A (zh) * 2011-12-02 2012-07-11 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器系统
US9207922B2 (en) 2013-01-28 2015-12-08 Samsung Electronics Co., Ltd. Compiling method and apparatus for scheduling block in pipeline
CN106575220A (zh) * 2014-08-29 2017-04-19 高通股份有限公司 多个经集群极长指令字处理核心
US10782974B2 (en) 2015-11-25 2020-09-22 Samsung Electronics Co., Ltd. VLIW interface device and method for controlling the same

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552313B2 (en) 2003-12-22 2009-06-23 Nec Electronics Corporation VLIW digital signal processor for achieving improved binary translation
CN102566979A (zh) * 2011-12-02 2012-07-11 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器系统
US9207922B2 (en) 2013-01-28 2015-12-08 Samsung Electronics Co., Ltd. Compiling method and apparatus for scheduling block in pipeline
CN106575220A (zh) * 2014-08-29 2017-04-19 高通股份有限公司 多个经集群极长指令字处理核心
US10782974B2 (en) 2015-11-25 2020-09-22 Samsung Electronics Co., Ltd. VLIW interface device and method for controlling the same

Similar Documents

Publication Publication Date Title
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
KR950003552B1 (ko) 프로그램 가능한 제어기
US9311095B2 (en) Using register last use information to perform decode time computer instruction optimization
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US7000094B2 (en) Storing stack operands in registers
EP0747816A2 (en) Method and system for high performance multithread operation in a data processing system
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JP4230504B2 (ja) データプロセッサ
WO2015024452A1 (zh) 一种分支预测方法及相关装置
JP2002116908A (ja) ネイティブおよび非ネイティブの命令集合間相互呼び出し
US7302557B1 (en) Method and apparatus for modulo scheduled loop execution in a processor architecture
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
TW202009692A (zh) 在中央處理單元(cpu)中執行指令的方法
EP1444571B1 (en) Hidden job start preparation in an instruction-parallel processor system
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
CN114579188A (zh) 一种risc-v向量访存处理系统及处理方法
US20140129805A1 (en) Execution pipeline power reduction
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
JP2003140910A (ja) Vliwプロセッサにおけるバイナリトランスレーション方法
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US20140136818A1 (en) Fetch less instruction processing (flip) computer architecture for central processing units (cpu)
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
WO2021036173A1 (zh) 解释执行字节码指令流的方法及装置
JP4631442B2 (ja) プロセッサ