JP4006887B2 - コンパイラ、プロセッサおよび記録媒体 - Google Patents

コンパイラ、プロセッサおよび記録媒体 Download PDF

Info

Publication number
JP4006887B2
JP4006887B2 JP15615599A JP15615599A JP4006887B2 JP 4006887 B2 JP4006887 B2 JP 4006887B2 JP 15615599 A JP15615599 A JP 15615599A JP 15615599 A JP15615599 A JP 15615599A JP 4006887 B2 JP4006887 B2 JP 4006887B2
Authority
JP
Japan
Prior art keywords
flag
instruction
processor
parallel
operations
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.)
Expired - Fee Related
Application number
JP15615599A
Other languages
English (en)
Other versions
JP2000347861A (ja
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP15615599A priority Critical patent/JP4006887B2/ja
Publication of JP2000347861A publication Critical patent/JP2000347861A/ja
Application granted granted Critical
Publication of JP4006887B2 publication Critical patent/JP4006887B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、コンパイラとプロセッサと記録媒体とに関し、特にVLIW(Very Long Instruction Word)方式のプロセッサにおけるフラグ制御に関するものおよびそのコンパイラおよびその機械命令プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
近年の電子技術の発展により、高性能なプロセッサが普及し、あらゆる分野で用いられている。そのようなプロセッサでは命令の並列処理により高い性能を達成している。VLIWと呼ばれるアーキテクチャも命令の並列処理の1つの形態であり、VLIWアーキテクチャを採るプロセッサ(以下、「VLIWプロセッサ」という。)は、内部に複数のオペレーションユニットを備え、1つの命令に置かれたスロットと呼ばれる複数のフィールドに指定されたオペレーションを同時並列に実行する。このようなVLIWプロセッサの機械命令プログラムは、コンパイラによって高級言語で記述されたプログラムにおけるオペレーションレベルでの並列性が検出されスケジューリングされた後に生成されたものである。機械命令プログラムは実行コードとも呼ばれる。
【0003】
古典的なVLIWプロセッサは、スロット毎に役割が固定されており、例えば、演算オペレーションを指定する第1スロットとロードストアオペレーションを指定する第2スロットと分岐オペレーションを指定する第3スロットとからなる命令語を有するものがある。このようなVLIWプロセッサでは、演算結果の状態を示すフラグは第1スロットで指定されるオペレーションによってのみ反映される。
【0004】
しかしスロット毎に役割が固定されているため、コンパイラにおいて抽出される並列性の度合いが低くなる。演算とロードストアと分岐のオペレーションは平均すると概ね3分の1ずつの割合で出現するが、局所的なそれらの頻度は大きくばらつくため、例えば演算オペレーションが集中するような場合、上記例示したVLIWプロセッサでは十分な並列度を確保することができない。
【0005】
そこで今日的なVLIWプロセッサでは、スロット毎に役割を固定させない方式をとるものが多い。図17はそのような従来技術におけるVLIW方式のプロセッサの命令構成図である。命令フォーマットは同図(a)に示すように命令は64ビット長であり、それぞれが11ビットの3つのスロットからなり、いずれのスロットも均等にオペレーションを指定することができる。11ビットの各スロットは、5ビットのオペコード(op)と3ビットのソースオペランド(src)と3ビットのデスティネーションオペランド(dst)からなり、同図(b)に示すビット列が割付けられている。ここで、フラグが変化するオペレーションは同時には1つしか指定できないが、いずれのスロットに指定しても構わない。
【0006】
図18は同従来技術におけるプロセッサの概略構成図である。このプロセッサは3つのオペレーションを並列実行し、図17(a)に示すような第1から第3の3つのスロットからなる命令の列で構成されるプログラムがROM41に格納され、それぞれのスロットに書かれたオペレーションが第1命令解読器45から第3命令解読器47で解読された後、第1操作ユニット58から第3操作ユニット60で実行される。第1操作ユニット58から第3操作ユニット60のそれぞれから出力されるフラグ生成のための原始データはセレクタ61において1つが選択され、フラグ生成ユニット62でC、V、N、Zの各フラグが生成され、フラグレジスタ63に各フラグが格納される。セレクタ61における選択は、フラグが変化するオペレーションが指定されたスロットを第1命令解読器45から第3命令解読器47が特定することで達成される。なお、Cフラグは桁上げを、Vフラグはオーバフローを、Nフラグは負数を、Zフラグはゼロを表す。
【0007】
【発明が解決しようとする課題】
しかしながら、上記の従来技術では、全ての演算オペレーションについてフラグが変化するオペコードとフラグが変化しないオペコードとの2種類ずつ持つためにオペコードの長さが長くなって命令長が長くなり、結果的にプログラムサイズが増大するという問題がある。
【0008】
図17に示す例では、四則演算および論理演算オペレーションについてフラグ変化の有無を区分する2種類のオペコードのためにオペコードが5ビット必要になる。一方、オペランドとして8本のレジスタの1つを選択するとすれば、1スロットの長さは、オペコード5ビットとオペランド3ビットの2つを合わせて11ビットになる。3並列の場合、3スロットを32ビットでは表現できず、通常、命令語長は2のべき乗数のビット長で表現するために命令語長が64ビットになり、31ビットもの未使用領域(図17(a)のreservedで表す領域)が生じることになりコード効率が著しく低下する。コード効率とは、一連の操作をどれだけ少ないプログラムサイズで実現できるかという尺度である。
【0009】
そこで、本発明はかかる点に鑑みてなされたものであり、並列度の向上とコード効率の低下の抑止とを両立するコンパイラおよびプロセッサを提供することを目的とする。
【0010】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【0011】
【課題を解決するための手段】
上記課題を解決するために、本発明によれば、コンパイラが操作結果のフラグへの反映の仕方に関するフラグ制御記述を含む機械命令を生成し、プロセッサがフラグ制御記述に従って並列実行による操作結果をフラグに反映する。
【0012】
つまり上記課題を解決するために、本発明のコンパイラは、高級言語プログラムから、複数の操作を同時並列に実行し操作結果をフラグに反映するプロセッサを対象とする長語命令形式の機械命令プログラムを生成するコンパイラであって、1つの機械命令の中に、複数の操作記述と、操作結果の前記フラグへの反映の仕方に関するフラグ制御記述とを含む機械命令を生成する機械命令生成手段を備えることを特徴とする。
【0013】
つまり上記課題を解決するために、本発明のプロセッサは、複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出し、前記操作記述による操作を並列実行するとともに、前記フラグ制御記述に従って前記並列実行による操作結果をフラグに反映することを特徴とする。
【0014】
また本発明のプロセッサは、複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出す命令読出し手段と、前記操作記述を解読し、解読結果に基づいて操作を並列実行する命令解読実行手段と、前記フラグ制御記述に従って、前記命令解読実行手段における操作結果をフラグに反映するフラグ生成保持手段とを備えたことを特徴とする。
【0015】
つまり上記課題を解決するために、本発明の記録媒体は、複数の操作を同時並列に実行し操作結果をフラグに反映するプロセッサによって実行される機械命令プログラムを記録した記録媒体であって、1つの機械命令が、複数の操作記述と、操作結果の前記フラグへの反映の仕方に関するフラグ制御記述とを含む構成であることを特徴とする。
【0016】
また本発明の記録媒体は、プロセッサによって実行される機械命令プログラムを記録した記録媒体であって、同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む長語命令形式の命令を取出す第1ステップと、前記操作記述による操作を並列実行する第2ステップと、前記フラグ制御記述に従って前記並列実行による操作結果をフラグに反映する第3ステップとをプロセッサに実行させるための機械命令プログラムを記録した記録媒体である。
【0017】
上記のコンパイラ、プロセッサまたは記録媒体におけるフラグ制御記述は、同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させる1つを特定する情報で構成されるとしてもよい。
【0018】
上記のコンパイラ、プロセッサまたは記録媒体におけるフラグ制御記述は、同一の機械命令の中に含まれる前記複数の操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成されるとしてもよい。
【0019】
上記のコンパイラ、プロセッサまたは記録媒体におけるフラグ制御記述は、同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させるいくつかを抽出し、抽出された前記いくつかの操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成されるとしてもよい。
【0020】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【0021】
(実施の形態1)
1.コンパイラ
1.1 コンパイラの構成
図1は、本発明の第1の実施形態におけるコンパイラの構成を示すブロック図である。
【0022】
コンパイラ102は、ユーザが記述したC言語プログラムのファイル101を翻訳し、機械命令プログラムのファイル110を出力する。
【0023】
コンパイラ102は、C言語プログラムのファイル101を読込用バッファ104に読み込むファイル読込部103と、読込用バッファ104に読み込まれたC言語プログラムの構文や意味を解析して逐次実行形式の中間コードを生成し逐次中間コード用バッファ106に書き込む構文解析部105と、逐次中間コード用バッファ106に格納された逐次中間コードを入力して命令の3並列実行を目的とする命令のスケジューリングを行い、機械命令プログラムを生成し出力用バッファ108に書き込む機械命令生成部107と、出力用バッファ108に格納された機械命令プログラムをファイル110に出力するファイル出力部109とから構成される。機械命令生成部107を除く各要素は、公知の技術に基づいて構成すればよいのでここでは説明を省略する。
【0024】
図2は、機械命令生成部107の構成を示すブロック図である。機械命令生成部107は、依存関係抽出部120と並列中間コード生成部121とフラグ制御コード生成部122とから構成される。依存関係抽出部120は、逐次中間コード用バッファ106から入力される複数の逐次中間コード間の依存関係を検出してパラメータ化する。並列中間コード生成部121は、依存関係抽出部120で作られた依存関係のパラメータを用いて逐次実行形式の中間コードから並列実行形式の中間コードを生成する。フラグ制御コード生成部122は、並列中間コード生成部121で生成される並列中間コードを対応する機械命令に割り当てるとともに、フラグが変化するオペレーションを含むスロットがあるかどうかに基づいてフラグ制御コードを生成する。フラグ制御コードとは、並列に実行される3つのスロットのいずれのオペレーションの結果をフラグに反映させるかを指定する2ビットのコードであって、01は第1スロット、10は第2スロット、11は第3スロットのオペレーションの結果をフラグに反映させることを指定し、00はいずれのスロットのオペレーションの結果もフラグに反映させないことを指定するものとする。
【0025】
図3は、フラグ制御コード生成部122におけるフラグ制御コードの生成フローを示したフローチャートである。この生成フローは、以下の動作例を用いて詳細に説明する。
【0026】
1.2 コンパイラの動作例
図4は、C言語プログラムの例を示すプログラムリストである。図4のC言語プログラムには、配列変数x[i]と配列変数y[i]との積をiについて累算するいわゆる積和演算を行うループのみが記述されている。
【0027】
以下に、図4のプログラムリストを入力とした場合における上記構成をもつコンパイラの動作について図1から図8を用いて説明する。
【0028】
ファイル読込部103は、ユーザが記述したC言語プログラム101を読み込み、読込用バッファ104に格納する。
【0029】
構文解析部105は、読込用バッファ104に格納されたC言語プログラムを取り出して構文解析を行い、逐次実行形式の中間コードを逐次中間コード用バッファ106に出力する。図5は、このとき逐次中間コード用バッファ106に格納される逐次中間コードプログラムを示したリストである。各コードの意味は以下の通りである。
(逐次中間コード1)
ポインタXの示すメモリ領域から値を取り出して変数xに格納する。
(逐次中間コード2)
ポインタYの示すメモリ領域から値を取り出して変数yに格納する。
(逐次中間コード3)
変数xと変数yとの積を求め一時変数t1に格納する。
(逐次中間コード4)
変数aと一時変数t1との和を求め変数aに格納する。
(逐次中間コード5)
ポインタXを4減らす。
(逐次中間コード6)
ポインタYを4減らす。
(逐次中間コード7)
変数iを1減らす。[F]は、この結果をフラグに反映することを意味する。
(逐次中間コード8)
フラグが「大なり(>)」を満たすならば逐次中間コード1へ分岐する。
【0030】
次に、機械命令生成部107における依存関係抽出部120は、逐次中間コード用バッファ106に格納された逐次中間コード列を取り出し、逐次中間コード間の依存関係を解析してパラメータ化する。図6は、図5に示す逐次中間コードプログラムにおける依存関係のパラメータ化に関する説明図である。逐次中間コード1の実行結果である変数xは逐次中間コード3において参照される。また逐次中間コード1を実行する前に逐次中間コード5を実行してポインタXを更新してはならない。従って、逐次中間コード3および逐次中間コード5は逐次中間コード1に依存する。以上の解析により、図6の依存関係有向グラフのイおよびニと依存関係パラメータP1が決定される。以下同様に、逐次中間コード3および逐次中間コード6は逐次中間コード2に依存し(依存関係有向グラフのロおよびホ、依存関係パラメータP2)、逐次中間コード4は逐次中間コード3に依存し(依存関係有向グラフのハ、依存関係パラメータP3)、逐次中間コード8は逐次中間コード7に依存する(依存関係有向グラフのヘ、依存関係パラメータP7)。依存関係パラメータP4からP6およびP8は他に依存関係を与えないことを示す。
【0031】
続いて、並列中間コード生成部121は、依存関係抽出部120で作られた依存関係のパラメータを用いて逐次実行形式の中間コードから並列実行形式の中間コードを生成する。図7は、図6の依存関係パラメータP1〜P8を用いて図5の逐次中間コードプログラムを並列実行形式に並べ変えた並列中間コードプログラムのリストである。ここで並列度は最大3である。各コードの意味は以下の手順に従って生成される。
(並列中間コード1)
逐次中間コード1および逐次中間コード2は並列に実行可能であるが、他の逐次中間コードはいずれもこれらと依存関係を有するため、並列中間コード1は逐次中間コード1と逐次中間コード2とから構成される。
(並列中間コード2)
逐次中間コード3は、互いに依存関係のない逐次中間コード5および逐次中間コード7と並列に実行可能であるため、並列中間コード2は逐次中間コード3と逐次中間コード5と逐次中間コード7とから構成される。
(並列中間コード3)
逐次中間コード4は、互いに依存関係のない逐次中間コード6および逐次中間コード8と並列に実行可能であるため、並列中間コード3は逐次中間コード4と逐次中間コード6と逐次中間コード8とから構成される。
【0032】
次に、フラグ制御コード生成部122は、並列中間コード生成部121で生成される並列中間コードを対応する機械命令に割り当てるとともに、フラグが変化するオペレーションを含むスロットがあるかどうかに基づいてフラグ制御コードを生成して出力用バッファ108に出力する。図8は、図7の並列中間コードプログラムをもとに生成された機械命令プログラムのリストである。なお、機械命令プログラムは本来0と1のビット列であるが、意味を表すために図8ではニモニック表記してある。各命令とも、セミコロン(;)で区切られた左から、フラグ制御コード、第1スロット、第2スロット、第3スロットである。各命令の意味および生成の手順は以下の通りである。
(命令1)
ポインタXおよびポインタYをレジスタR0およびレジスタR1に割り付け、変数xおよび変数yをレジスタR2およびレジスタR3に割り付ける。命令の第1スロットは逐次中間コード1に相当し、R0の間接参照によるデータをR2に転送するLD操作である。第2スロットは逐次中間コード2に相当し、R1の間接参照によるデータをR3に転送するLD操作である。第3スロットは対応する逐次中間コードがないため、NOP操作となる。NOP操作は、例えばレジスタR7をレジスタR7へ転送するなどの操作で実現されるが、解かりやすくするためにここではNOPと表記する。そしていずれのスロットの操作の結果もフラグに反映しないので、図3におけるステップS301、ステップS303、ステップS305、ステップS307と処理されてフラグ制御コードとして00が生成される。
(命令2)
変数iおよび一時変数t1をレジスタR4およびレジスタR3に割り付ける。命令の第1スロットは逐次中間コード3に相当し、R2とR3の積を求め結果をR3に格納するMUL操作である。第2スロットは逐次中間コード5に相当し、R0から4を引いて結果をR0に格納するSUB操作である。第3スロットは逐次中間コード7に相当し、R4から1を引いて結果をR4に格納するSUB操作である。このとき第3スロットの操作の結果をフラグに反映するので、図3におけるステップS301、ステップS303、ステップS305、ステップS306と処理されてフラグ制御コードとして11が生成される。
(命令3)
変数aをレジスタR5に割り付ける。命令の第1スロットは逐次中間コード4に相当し、R3とR5の和を求め結果をR5に格納するADD操作である。第2スロットは逐次中間コード6に相当し、R1から4を引いて結果をR1に格納するSUB操作である。第3スロットは逐次中間コード8に相当し、フラグが「大なり(>)」を満たすならば2命令前、即ち命令1に分岐するBGT操作である。そしていずれのスロットの操作の結果もフラグに反映しないので、図3におけるステップS301、ステップS303、ステップS305、ステップS307と処理されてフラグ制御コードとして00が生成される。
【0033】
最後に、ファイル出力部109は出力用バッファ108に格納された機械命令プログラムをファイル110に出力する。
【0034】
以上のように、図4のC言語プログラムは図8の機械命令プログラムに変換される。なお、上記動作例では図3における未通過のステップがあるが、第1スロットの操作の結果をフラグに反映する場合は、図3におけるステップS301、ステップS302と処理されてフラグ制御コードとして01が生成され、第2スロットの操作の結果をフラグに反映する場合は、図3におけるステップS301、ステップS303、ステップS304と処理されてフラグ制御コードとして10が生成される。
【0035】
2.プロセッサ
2.1 命令の構成
図9は本発明の第1の実施形態におけるプロセッサの命令構成図である。命令フォーマットは同図(a)に示すように命令は32ビット長であり、2ビットのフラグ制御コードを指示するためのフラグ制御フィールドと、それぞれが10ビットの3つのスロットからなり、いずれのスロットも均等にオペレーションを指定することができる。10ビットの各スロットは、4ビットのオペコード(op)と3ビットのソースオペランド(src)と3ビットのデスティネーションオペランド(dst)からなり、同図(b)に示すビット列が割り付けられている。ここで、フラグが変化するオペレーションは同時には1つしか指定できないが、いずれのスロットに指定しても構わない。第1スロットの操作の結果をフラグに反映するときはフラグ制御コードを01に、第2スロットの操作の結果をフラグに反映するときはフラグ制御コードを10に、第3スロットの操作の結果をフラグに反映するときはフラグ制御コードを11にし、いずれのスロットの操作の結果もフラグに反映しないときはフラグ制御コードを00にする。オペコードは0000のMOV操作から1111のST操作まで16種類が割り当てられている。オペランドは3ビットでレジスタR0からR7の1つを選択する。
【0036】
2.2 プロセッサの構成
図10は、同実施形態におけるプロセッサの概略構成図である。
【0037】
このプロセッサは、命令フェッチステージ(以下、IFステージ)、解読およびレジスタ読出しステージ(以下、DECステージ)、実行ステージ(以下、EXステージ)の3つのステージからなる3段パイプライン構造を成している。
【0038】
図10において、1は機械命令プログラムを格納するROM、2と3と4は機械命令(以下、命令と略す。)の第1スロットと第2スロットと第3スロットの内容を格納するそれぞれI1ラッチとI2ラッチとI3ラッチ、5と6と7はそれぞれI1ラッチ2とI2ラッチ3とI3ラッチ4に保持された命令の第1スロットと第2スロットと第3スロットの内容を解読しプロセッサ各部を制御する第1命令解読器と第2命令解読器と第3命令解読器、8はオペランドを格納するレジスタファイル、9と10と11はそれぞれI1ラッチ2とI2ラッチ3とI3ラッチ4の内容の一部とレジスタファイル8の出力との2入力から1つを選択するD1セレクタとD2セレクタとD3セレクタ、12と13と14はそれぞれD1セレクタ9とD2セレクタ10とD3セレクタ11の出力を格納するD11ラッチとD12ラッチとD13ラッチ、15と16と17はレジスタファイル8の出力を格納するD21ラッチとD22ラッチとD23ラッチ、18はD11ラッチ12およびD21ラッチ15の内容を用いて算術論理演算やロード・ストアなど全ての操作を行う第1操作ユニット、19はD12ラッチ13およびD22ラッチ16の内容を用いて算術論理演算やロード・ストアなど全ての操作を行う第2操作ユニット、20はD13ラッチ14およびD23ラッチ17の内容を用いて算術論理演算やロード・ストアなど全ての操作を行う第3操作ユニットで、第1操作ユニット18と第2操作ユニット19と第3操作ユニット20の出力はともにレジスタファイル8に接続される。21は命令のフラグ制御フィールドの内容を格納するI0ラッチ、22はI0ラッチ21の内容を格納するD0ラッチ、23は第1操作ユニット18から第3操作ユニット20のそれぞれから出力されるフラグ生成のための原始データの1つを選択して出力するセレクタ、24はセレクタ23で選択された原始データに基づいてC、V、N、Zの各フラグを生成するフラグ生成ユニット、25はフラグ生成ユニット24で生成された各フラグを格納するフラグレジスタ、26は第1命令解読器5から第3命令解読器7のいずれかが条件分岐操作を解読した場合にフラグレジスタ25の各フラグの状態に基づいて分岐するか否かを決定する分岐ユニット、27は分岐ユニット26から分岐の指示があればその分岐先に従って命令列をフェッチし、分岐の指示がなければ連続する命令列をシーケンシャルにフェッチする命令フェッチユニットである。
【0039】
セレクタ23は、D0ラッチ22の値が01ならば第1操作ユニット18から出力される原始データを選択し、10ならば第2操作ユニット19から出力される原始データを選択し、11ならば第3操作ユニット20から出力される原始データを選択し、00ならば機能しない。またフラグ生成ユニット24は、D0ラッチ22の値が01ならば第1命令解読器5の指示に従ってセレクタ23が出力する原始データを用いて各フラグを生成し、生成したフラグのみをフラグレジスタ25の対応する位置に格納する。例えば、第1命令解読器5がADD操作を解読する場合は全てのフラグについて、AND操作を解読する場合はNフラグとZフラグとについて、TST操作を解読する場合はZフラグだけについてフラグを生成しフラグレジスタ25を更新する。同様に、D0ラッチ22の値が10ならば第2命令解読器6の指示に従い、11ならば第3命令解読器7の指示に従う。D0ラッチ22の値が00ならばいずれのフラグも更新しない。なお、Cフラグは桁上げを、Vフラグはオーバフローを、Nフラグは負数を、Zフラグはゼロを表す。
【0040】
2.3 プロセッサの動作例
以下に、図8の機械命令プログラムがROM1に格納された場合における上記構成をもつプロセッサの動作について図11を用いて説明する。なお、図8の命令1におけるNOP操作はMOV R7,R7で実現されているものとする。
【0041】
図11は、図8の機械命令プログラムがROM1に格納された場合におけるプロセッサの動作タイミング図である。同図は、プロセッサの動作をパイプラインのIFステージでROM1から読出される命令、DECステージで解読される命令、EXステージで実行される命令をマシンサイクルと呼ばれるタイミング毎に示している。以下、時間が経過する順にタイミング毎にその動作を説明する。
【0042】
(タイミングt1)
・IFステージ:命令1
命令1がROM1から読出され、命令1のフラグ制御コード00および第1スロットから第3スロットがそれぞれI0ラッチ21およびI1ラッチ2からI3ラッチ4に格納される。
【0043】
(タイミングt2)
・DECステージ:命令1
I1ラッチ2に格納された命令1の第1スロットが第1命令解読器5で解読される。解読された結果としてLD操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR0が読出され、読出された値がD11ラッチ12に格納される。同時に、I2ラッチ3に格納された命令1の第2スロットが第2命令解読器6で解読される。解読された結果としてLD操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR1が読出され、読出された値がD12ラッチ13に格納される。さらに同時に、I3ラッチ4に格納された命令1の第3スロットが第3命令解読器7で解読される。解読された結果としてNOP操作(MOV R7,R7)であることが判明する。この解読に基づいてレジスタファイル8からレジスタR7が読出され、読出された値がD13ラッチ14に格納される。これらと同時に、I0ラッチ21の値00がD0ラッチ22に格納される。また分岐ユニット26は第1命令解読器5から第3命令解読器7のいずれもが分岐操作を解読していないことから機能せず、従って命令フェッチユニット27はシーケンシャルなフェッチを続けることになる。
・IFステージ:命令2
命令2がROM1から読出され、命令2のフラグ制御コード11および第1スロットから第3スロットがそれぞれI0ラッチ21およびI1ラッチ2からI3ラッチ4に格納される。
【0044】
(タイミングt3)
・EXステージ:命令1
D11ラッチ12に格納されたレジスタR0の値をアドレスとしてメモリからデータを読み出す操作が第1操作ユニット18にて行われ、読み出しデータはレジスタファイル8のレジスタR2に格納される。同時に、D12ラッチ13に格納されたレジスタR1の値をアドレスとしてメモリからデータを読み出す操作が第2操作ユニット19にて行われ、読み出しデータはレジスタファイル8のレジスタR3に格納される。さらに同時に、D13ラッチ14に格納されたレジスタR7の値をそのまま出力する操作が第3操作ユニット20にて行われ、出力データはレジスタファイル8のレジスタR7に格納される。これらと同時に、D0ラッチ22の値00によりセレクタ23は機能せず、フラグ生成ユニット24はフラグレジスタ25のいずれのフラグも更新しない。
・DECステージ:命令2
I1ラッチ2に格納された命令2の第1スロットが第1命令解読器5で解読される。解読された結果としてMUL操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR2とR3とが読出され、読出された値がそれぞれD11ラッチ12とD21ラッチ15とに格納される。同時に、I2ラッチ3に格納された命令2の第2スロットが第2命令解読器6で解読される。解読された結果としてSUB操作であることが判明する。この解読に基づいて命令中の即値4がD2セレクタ10を経由してD12ラッチ13に格納されるとともに、レジスタファイル8からレジスタR0が読出され、読出された値がD22ラッチ16に格納される。さらに同時に、I3ラッチ4に格納された命令2の第3スロットが第3命令解読器7で解読される。解読された結果としてSUB操作であることが判明する。この解読に基づいて命令中の即値1がD3セレクタ11を経由してD13ラッチ14に格納されるとともに、レジスタファイル8からレジスタR4が読出され、読出された値がD23ラッチ17に格納される。これらと同時に、I0ラッチ21の値11がD0ラッチ22に格納される。また分岐ユニット26は第1命令解読器5から第3命令解読器7のいずれもが分岐操作を解読していないことから機能せず、従って命令フェッチユニット27はシーケンシャルなフェッチを続けることになる。
・IFステージ:命令3
命令3がROM1から読出され、命令2のフラグ制御コード00および第1スロットから第3スロットがそれぞれI0ラッチ21およびI1ラッチ2からI3ラッチ4に格納される。
【0045】
(タイミングt4)
・EXステージ:命令2
D11ラッチ12に格納されたレジスタR2の値とD21ラッチ15に格納されたレジスタR3の値との間で乗算操作が第1操作ユニット18にて行われ、操作結果はレジスタファイル8のレジスタR3に格納される。同時に、D12ラッチ13に格納された値4とD22ラッチ16に格納されたレジスタR0の値との間で減算操作(R0から4を引く)が第2操作ユニット19にて行われ、操作結果はレジスタファイル8のレジスタR0に格納される。さらに同時に、D13ラッチ14に格納された値1とD23ラッチ17に格納されたレジスタR4の値との間で減算操作(R4から1を引く)が第3操作ユニット20にて行われ、操作結果はレジスタファイル8のレジスタR4に格納される。これらと同時に、D0ラッチ22の値11によりセレクタ23は第3操作ユニット20からの原始データ(この場合は、最上位ビットおよびその次位のビットの桁上げ、結果の最上位ビットおよび結果の全ビットがゼロか否かの情報)を選択し、フラグ生成ユニット24は第3命令解読器7からの全フラグ更新の指示に基づきC、V、N、Zフラグを生成しフラグレジスタ25を更新する。Cフラグは最上位ビットからの桁上げを、Vフラグは最上位ビットおよびその次位のビットの桁上げの排他的論理和を、Nフラグは結果の最上位ビットを、Zフラグは結果の全ビットがゼロである情報をフラグとして用いる。
・DECステージ:命令3
I1ラッチ2に格納された命令3の第1スロットが第1命令解読器5で解読される。解読された結果としてADD操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR3とR5とが読出され、読出された値がそれぞれD11ラッチ12とD21ラッチ15とに格納される。同時に、I2ラッチ3に格納された命令3の第2スロットが第2命令解読器6で解読される。解読された結果としてSUB操作であることが判明する。この解読に基づいて命令中の即値4がD2セレクタ10を経由してD12ラッチ13に格納されるとともに、レジスタファイル8からレジスタR1が読出され、読出された値がD22ラッチ16に格納される。さらに同時に、I3ラッチ4に格納された命令2の第3スロットが第3命令解読器7で解読される。解読された結果としてBGT操作であることが判明する。これらと同時に、I0ラッチ21の値00がD0ラッチ22に格納される。また分岐ユニット26は第3命令解読器7がBGT操作を解読していることに基づいて、同じタイミングで更新されたフラグレジスタ25を参照して分岐条件、即ち「大なり(>)」が満たされるか否かを判定し、満たされるならば第3スロット中の即値-2により2命令前からフェッチするように命令フェッチユニット27に指示を与え、満たされないならば命令フェッチユニット27に何も指示を与えず従って命令フェッチユニット27はシーケンシャルなフェッチを続けることになる。なお、BGT操作における分岐条件の判定はCフラグとZフラグの否定との論理積が真ならば条件満足、偽ならば条件不満足として行われる。なおこのタイミングでは条件が満たされるものとする。
【0046】
(タイミングt5)
・EXステージ:命令3
D11ラッチ12に格納されたレジスタR3の値とD21ラッチ15に格納されたレジスタR5の値との間で加算操作が第1操作ユニット18にて行われ、操作結果はレジスタファイル8のレジスタR5に格納される。同時に、D12ラッチ13に格納された値4とD22ラッチ16に格納されたレジスタR1の値との間で減算操作(R1から4を引く)が第2操作ユニット19にて行われ、操作結果はレジスタファイル8のレジスタR1に格納される。さらに同時に、D13ラッチ14に格納された値-2に基づいて分岐操作が第3操作ユニット20にて行われる。これらと同時に、D0ラッチ22の値00によりセレクタ23は機能せず、フラグ生成ユニット24はフラグレジスタ25のいずれのフラグも更新しない。
・IFステージ:命令1
タイミングt4での分岐ユニット26における分岐条件が満たされたことにより、命令フェッチユニット27は再び命令1をROM1から読出し、命令1のフラグ制御コード00および第1スロットから第3スロットがそれぞれI0ラッチ21およびI1ラッチ2からI3ラッチ4に格納される。
【0047】
以下、命令3における分岐条件が満たされなくなるまで、タイミングt2からt5に記す動作を繰り返すことになる。
【0048】
なお、上記の動作例ではフラグ制御コードが11のときだけを説明したが、11以外のときも全く同様である。即ち、フラグ制御コードが01または10の場合は、セレクタ23はそれぞれ第1操作ユニット18または第2操作ユニット19からの原始データを選択し、フラグ生成ユニット24はそれぞれ第1命令解読器5または第2命令解読器6からのフラグ更新の指示に基づき各フラグを生成しフラグレジスタ25を更新する。どのフラグを生成し更新するかはオペコード指定される操作の内容で決まる。
【0049】
3.記録媒体
本発明の記録媒体の実施の形態として、図8の機械命令プログラムを記録した磁気ディスク(フロッピーディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
【0050】
以上のように本実施の形態によれば、スロットに指定できるオペレーションが制限されず並列度の向上が保たれたまま、コンパイラのフラグ制御コード生成部122がフラグを変化させる操作を含むスロットを特定してフラグ制御コードを生成するためにオペコードの長さが短くなって、コード効率が向上する。図17および図18の従来技術では1命令が64ビットであるのに対して本実施形態では1命令が32ビットで同様の機能を指定できることから、コード効率が2倍高くなっていることがわかる。
【0051】
なお、本実施形態のプロセッサでは、3つの命令解読器と3つの操作ユニットを設けて最大3並列実行を達成しているが、これらを4つずつ設けて4並列実行してもよいし、あるいはそれ以上であってもよい。4並列実行の場合は、フラグ制御コードを3ビットにして第1から第4スロットの操作のフラグへの反映といずれのスロットも反映させないこととを指定するようにしてもよいし、フラグ制御コードは2ビットのままにしておいて第1から第4スロットのいずれかの操作をフラグへ反映するようにして、フラグを変化させない場合はフラグ反映が指定されたスロットにはフラグ変化を伴わない操作を指定するようにしてもよいし、同じくフラグ制御コードは2ビットのままにしておいて第1から第3スロットの操作のフラグへの反映といずれのスロットも反映させないこととを指定するようにして、第4スロットの操作はフラグへ反映されないとしてもよい。
【0052】
(実施の形態2)
実施の形態2は、実施の形態1のフラグ制御コードを、第1スロットの操作の結果をフラグに反映させるか、第1と第2スロットの操作の結果をこの順にフラグに反映させるか、第1から第3スロットの操作の結果をこの順にフラグに反映させるか、いずれのスロットの操作もフラグに反映させないかを指定するものに代えたものである。
【0053】
1.コンパイラ
コンパイラの構成および動作は、フラグ制御コード生成部122の動作を除いて実施の形態1に記したものと同じである。フラグ制御コード生成部122は次の原理に基づいて動作する。
【0054】
フラグ制御コード生成部122は、第1スロットの操作の結果をフラグに反映させると判断するとフラグ制御コードを01にし、第1と第2スロットの操作の結果をこの順にフラグに反映させると判断するとフラグ制御コードを10にし、第1から第3スロットの操作の結果をこの順にフラグに反映させると判断するとフラグ制御コードを11にし、いずれのスロットの操作もフラグに反映させないと判断するとフラグ制御コードを00にする。
【0055】
2.プロセッサ
2.1 命令の構成
図12は本発明の第2の実施形態におけるプロセッサの命令構成図である。命令フォーマットは同図(a)に示すように、図9(a)に示す第1の実施形態におけるプロセッサの命令フォーマットと同一であり、同図(b)に示すビット列の内、フラグ制御コードのビット割り付けのみが異なっている。即ち、フラグが変化するオペレーションは同時にいくつも指定できるが、指定できるスロットはフラグを反映させるオペレーションの数により制限される。第1スロットの操作の結果をフラグに反映するときはフラグ制御コードを01に、第1と第2スロットの操作の結果をこの順にフラグに反映するときはフラグ制御コードを10に、第1から第3スロットの操作の結果をこの順にフラグに反映するときはフラグ制御コードを11にし、いずれのスロットの操作の結果もフラグに反映しないときはフラグ制御コードを00にする。
【0056】
2.2 プロセッサの構成
図13は、同実施形態におけるプロセッサの概略構成図である。
【0057】
図13において実施の形態1におけるプロセッサと同一の構成要素には同一の符号を付している。31と32と33は、それぞれ実施の形態1のプロセッサにおける第1命令解読器5と第2命令解読器6と第3命令解読器7の機能に加えて、変化するフラグの種別を識別する2ビットの情報を出力する第1命令解読器と第2命令解読器と第3命令解読器であり、上記2ビットの情報はいずれも、00のときはいずれのフラグも変化しないことを、01のときはZフラグのみが変化することを、10のときはNフラグとZフラグが変化することを、11のときは全てのフラグが変化することを示す。また34は第1命令解読器31からの上記2ビットの情報を保持するD3ラッチ、35は第2命令解読器32からの上記2ビットの情報を保持するD4ラッチ、36は第3命令解読器33からの上記2ビットの情報を保持するD5ラッチである。37は、D3ラッチ34の値(これをG1とする)、D4ラッチ35の値(これをG2とする)、D5ラッチ36の値(これをG3とする)およびD0ラッチ22の内容(これをFCとする)に基づいて、第1操作ユニット18から第3操作ユニット20からの原始データを用いてC、V、N、Zフラグを生成するフラグ生成リオーダユニットである。その他の構成は、実施の形態1におけるプロセッサと同一である。
【0058】
図14はフラグ生成リオーダユニット37の各フラグの生成論理を示した真理値表であり、G1、G2、G3およびFCにより、Cフラグの生成論理SC、Vフラグの生成論理SV、Nフラグの生成論理SNおよびZフラグの生成論理SZを決定する。SCからSZの欄の「1」は各フラグを第1操作ユニット18からの原始データを用いて生成することを示し、「2」は各フラグを第2操作ユニット19からの原始データを用いて生成することを示し、「3」は各フラグを第3操作ユニット20からの原始データを用いて生成することを示し、「0」はフラグを変化させないことを示す。またG1からG3の欄の「**」は無視(don't care)を意味する。原始データは、最上位ビットおよびその次位のビットの桁上げ、結果の最上位ビットおよび結果の全ビットがゼロか否かの情報で構成され、Cフラグは最上位ビットからの桁上げを、Vフラグは最上位ビットおよびその次位のビットの桁上げの排他的論理和を、Nフラグは結果の最上位ビットを、Zフラグは結果の全ビットがゼロである情報をフラグとして用いる点は、第1の実施形態のプロセッサと同じである。
【0059】
2.3 プロセッサの動作例
以下に、図16の命令Aが実行される場合のプロセッサの動作について説明する。
【0060】
命令Aのフラグ制御コードは11、第1スロットはR0とR1の和を求め結果をR1に格納するADD操作、第2スロットはR2とR3の論理和を求め結果をR3に格納するSUB操作、第3スロットはR4とゼロとを比較するTST操作である。
・IFステージ
命令AがROM1から読出され、命令Aのフラグ制御コード11および第1スロットから第3スロットがそれぞれI0ラッチ21およびI1ラッチ2からI3ラッチ4に格納される。
・DECステージ(IFステージの動作のマシンサイクル)
I1ラッチ2に格納された命令Aの第1スロットが第1命令解読器31で解読される。解読された結果としてADD操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR0とR1とが読出され、読出された値がそれぞれD11ラッチ12とD21ラッチ15とに格納される。同時に、I2ラッチ3に格納された命令Aの第2スロットが第2命令解読器32で解読される。解読された結果としてOR操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR2とR3とが読出され、読出された値がそれぞれD12ラッチ13とD22ラッチ16とに格納される。さらに同時に、I3ラッチ4に格納された命令Aの第3スロットが第3命令解読器33で解読される。解読された結果としてTST操作であることが判明する。この解読に基づいてレジスタファイル8からレジスタR4が読出され、読出された値がD23ラッチ17に格納される。これらと同時に、I0ラッチ21の値11がD0ラッチ22に格納され、第1命令解読器31でADD操作が解読されることにより値11(ADD操作は全てのフラグが変化)がD3ラッチ34に格納され、第2命令解読器32でOR操作が解読されることにより値10(OR操作はNフラグとZフラグが変化)がD4ラッチ35に格納され、第3命令解読器33でTST操作が解読されることにより値01(TST操作はZフラグのみが変化)がD5ラッチ36に格納される。また分岐ユニット26は第1命令解読器5から第3命令解読器7のいずれもが分岐操作を解読していないことから機能せず、従って命令フェッチユニット27はシーケンシャルなフェッチを続けることになる。
・EXステージ(DECステージの動作のマシンサイクル)
D11ラッチ12に格納されたレジスタR0の値とD21ラッチ15に格納されたレジスタR1の値との間で加算操作が第1操作ユニット18にて行われ、操作結果はレジスタファイル8のレジスタR1に格納される。同時に、D12ラッチ13に格納されたレジスタR2の値とD22ラッチ16に格納されたレジスタR3の値との間で論理和操作が第2操作ユニット19にて行われ、操作結果はレジスタファイル8のレジスタR3に格納される。さらに同時に、D23ラッチ17に格納されたレジスタR4の値とゼロとの間で比較操作(R4から0を引く)が第3操作ユニット20にて行われ、操作結果はどこにも格納されない。これらと同時に、D0ラッチ22の値11によりFC=11が、D3ラッチ34の値11によりG1=11が、D4ラッチ35の値10によりG2=10が、D5ラッチ36の値01によりG3=01がそれぞれフラグ生成リオーダユニット37に入力され、図15の下から7つ目の欄に示すように、SC=1に基づいて第1操作ユニット18の最上位ビットからの桁上げをCフラグとし、SV=1に基づいて第1操作ユニット18の最上位ビットおよびその次位のビットの桁上げの排他的論理和をVフラグとし、SN=2に基づいて第2操作ユニット19の結果の最上位ビットをNフラグとし、SZ=3に基づいて第3操作ユニット20の結果の全ビットがゼロである情報をZフラグとしてC、V、N、Zフラグを生成しフラグレジスタ25を更新する。このようにフラグ生成リオーダユニット37は、ADD操作とSUB操作とTST操作とをあたかもこの順に逐次実行したかのようにフラグ生成を行う。
【0061】
なお、上記の動作例ではFC=11かつG1=11かつG2=10かつG3=01のときだけを説明したが、これ以外のときも全く同様である。即ち、図14、図15の真理値表に従ってC、V、N、Zフラグのそれぞれを第1操作ユニット18から第3操作ユニット20の原始データを用いて生成すればよい。
【0062】
3.記録媒体
本発明の記録媒体の実施の形態として、図16の命令を記録した磁気ディスク(フロッピーディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
【0063】
以上のように本実施の形態によれば、第1の実施形態と同様にコード効率が向上することに加えて、フラグを変化させる操作の位置とフラグ変化の順序とを特定するフラグ制御コードを生成することにより、複数のスロットでフラグが変化するオペレーションを指定することができ、一層の並列度向上が見込まれる。これは例えば、ADD操作におけるオーバフローの有無とSUB操作における結果の符号とTST操作における比較結果との三者のそれぞれにより多方向に分岐するような場合に、ADD操作のVフラグとSUB操作のNフラグとTST操作のZフラグがいずれもフラグレジスタ25に反映されるため、図16の命令Aのように1つの命令で3つの操作を並列に実行することができるからである。
【0064】
なお、本実施形態のプロセッサでは、1つの操作をフラグに反映させる場合、2つの操作をフラグに反映させる場合、3つの操作をフラグに反映させる場合のそれぞれについて1通りずつを指定できる2ビットのフラグ制御コードを持たせているが、このビット数を増やして、1つの操作をフラグに反映させる場合における操作の選択の3通りと、2つの操作をフラグに反映させる場合における操作の選択と順序の6通りと、3つの操作をフラグに反映させる場合における順序の6通りの全てまたは一部を指定するようにしてもよい。
【0065】
また、3つの命令解読器と3つの操作ユニットを設けて最大3並列実行を達成しているが、これらを4つずつ設けて4並列実行してもよいし、あるいはそれ以上であってもよい。
【0066】
以上、本発明に係るコンパイラ及びプロセッサについて、上記の2つの実施形態に基づいて説明したが、本発明はこれら実施形態に限られないことは勿論である。即ち、
(1)上記の2つの実施形態では、コンパイラにおいて、フラグ制御コード生成部122が機械命令生成時にフラグ制御コードを生成しているが、並列中間コード生成部121が並列中間コード生成時にフラグ制御コードを生成するようにしてもよい。
(2)上記の2つの実施形態のプロセッサは、命令フェッチ、解読、実行の3段パイプラインで構成されるとしているが、パイプラインの段数は何段であってもよいし、パイプラインを採らなくともよい。
【0067】
【発明の効果】
以上の説明から明らかなように、本発明に係るコンパイラ、プロセッサおよび記録媒体は、フラグが変化する操作記述とフラグが変化しない操作記述との2種類を持たせる必要がないために操作記述の長さが長くならず、また機械命令が含み得る操作記述に制限がないために、コード効率の向上と命令並列度の向上とが同時に図られ、特にマルチメディア関連の製品開発において非常に有用であり、マルチメディア関連産業の進歩発展に多大な貢献をするものである。
【図面の簡単な説明】
【図1】実施形態に係るコンパイラの構成を示すブロック図
【図2】同実施形態に係るコンパイラの機械命令生成部107の構成を示すブロック図
【図3】同実施形態に係るコンパイラのフラグ制御コード生成部122におけるフラグ制御コードの生成フローを示したフローチャート
【図4】C言語プログラムの例を示すプログラムリストを示す図
【図5】図4に示すC言語プログラムを入力として与えた場合に、同実施形態に係るコンパイラの逐次中間コード用バッファ106に格納された逐次中間コードプログラムを示したリストを示す図
【図6】図5に示す逐次中間コードプログラムにおける依存関係のパラメータ化に関する説明図
【図7】図4に示すC言語プログラムを入力として与えた場合に、同実施形態に係るコンパイラの並列中間コード生成部121が生成する並列中間コードプログラムを示したリストを示す図
【図8】図4に示すC言語プログラムを入力として与えた場合に、同実施形態に係るコンパイラにより生成された機械命令プログラムを示したリストを示す図
【図9】実施形態1に係るプロセッサの命令構成図
【図10】同実施形態に係るプロセッサの概略構成図
【図11】同実施形態に係るプロセッサの図8の機械命令プログラムに対応した動作タイミング図
【図12】実施形態2に係るプロセッサの命令構成図
【図13】同実施形態に係るプロセッサの概略構成図
【図14】同実施形態に係るプロセッサのフラグ生成リオーダユニット34の各フラグの生成論理を示した真理値表図
【図15】同実施形態に係るプロセッサの機械命令の例示図
【図16】同実施形態に係るプロセッサの機械命令の例示図
【図17】従来技術におけるプロセッサの命令構成図
【図18】同従来技術におけるプロセッサの概略構成図
【符号の説明】
1 ROM
2 I1ラッチ
3 I2ラッチ
4 I3ラッチ
5 第1命令解読器
6 第2命令解読器
7 第3命令解読器
8 レジスタファイル
9 D1セレクタ
10 D2セレクタ
11 D3セレクタ
12 D11ラッチ
13 D12ラッチ
14 D13ラッチ
15 D21ラッチ
16 D22ラッチ
17 D23ラッチ
18 第1操作ユニット
19 第2操作ユニット
20 第3操作ユニット
21 I0ラッチ
22 D0ラッチ
23 セレクタ
24 フラグ生成ユニット
25 フラグレジスタ
26 分岐ユニット
27 命令フェッチユニット
31 第1命令解読器
32 第2命令解読器
33 第3命令解読器
34 D3ラッチ
35 D4ラッチ
36 D5ラッチ
37 フラグ生成リオーダユニット
101 C言語プログラム
102 コンパイラ
103 ファイル読込部
104 読込用バッファ
105 構文解析部
106 逐次中間コード用バッファ
107 機械命令生成部
108 出力用バッファ
109 ファイル出力部
110 機械命令プログラム
120 依存関係抽出部
121 並列中間コード生成部
122 フラグ制御コード生成部

Claims (10)

  1. 高級言語プログラムから、複数の操作を同時並列に実行し操作結果をフラグに反映するプロセッサを対象とする長語命令形式の機械命令プログラムを生成するコンパイル方法であって、
    1つの機械命令の中に、
    複数の操作記述と、
    操作結果の前記フラグへの反映の仕方に関するフラグ制御記述と
    を含む機械命令を生成する機械命令生成ステップ
    を含み
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするコンパイル方法
  2. 高級言語プログラムから、複数の操作を同時並列に実行し操作結果をフラグに反映するプロセッサを対象とする長語命令形式の機械命令プログラムを生成するコンパイル方法であって、
    1つの機械命令の中に、
    複数の操作記述と、
    操作結果の前記フラグへの反映の仕方に関するフラグ制御記述と
    を含む機械命令を生成する機械命令生成ステップ
    を含み
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させるいくつかを抽出し、抽出された前記いくつかの操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするコンパイル方法
  3. 前記機械命令の一語に含まれる前記操作記述の数が、前記プロセッサにより同時並列に実行される操作の最大数に等しい
    ことを特徴とする請求項1または2記載のコンパイル方法
  4. 複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、
    同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出し、
    前記操作記述による操作を並列実行するとともに、
    前記フラグ制御記述に従って前記並列実行による操作結果をフラグに反映し、
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするプロセッサ。
  5. 複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、
    同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出し、
    前記操作記述による操作を並列実行するとともに、
    前記フラグ制御記述に従って前記並列実行による操作結果をフラグに反映し、
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させるいくつかを抽出し、抽出された前記いくつかの操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするプロセッサ。
  6. 複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、
    同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出す命令読出し手段と、
    前記操作記述を解読し、解読結果に基づいて操作を並列実行する命令解読実行手段と、
    前記フラグ制御記述に従って、前記命令解読実行手段における操作結果をフラグに反映するフラグ生成保持手段と
    を備え、
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させる1つを特定する情報で構成され、
    前記命令解読実行手段は、それぞれがフラグを生成するための原始データであって並列に実行できる数に等しい組の原始データを出力し、
    前記フラグ生成保持手段は、
    前記フラグ制御記述に従って、前記命令解読実行手段が出力する前記原始データの組から1つを選択するセレクタと、
    前記セレクタが出力する原始データを用いてフラグデータを生成するフラグ生成手段と、
    前記フラグ生成手段が生成するフラグデータを保持するフラグレジスタとからなる
    ことを特徴とするプロセッサ。
  7. 複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、
    同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出す命令読出し手段と、
    前記操作記述を解読し、解読結果に基づいて操作を並列実行する命令解読実行手段と、
    前記フラグ制御記述に従って、前記命令解読実行手段における操作結果をフラグに反映するフラグ生成保持手段と
    を備え、
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするプロセッサ。
  8. 複数の操作を指定する長語命令形式の命令を実行するプロセッサであって、
    同時並列に実行できる数の操作記述と、操作結果のフラグへの反映の仕方に関するフラグ制御記述とを同時に含む命令を取出す命令読出し手段と、
    前記操作記述を解読し、解読結果に基づいて操作を並列実行する命令解読実行手段と、
    前記フラグ制御記述に従って、前記命令解読実行手段における操作結果をフラグに反映するフラグ生成保持手段と
    を備え、
    前記フラグ制御記述は、
    同一の機械命令の中に含まれる前記複数の操作記述の内から、前記フラグに操作の結果を反映させるいくつかを抽出し、抽出された前記いくつかの操作記述による操作の結果を前記フラグに反映させる順序を特定する情報で構成される
    ことを特徴とするプロセッサ。
  9. 前記命令解読実行手段は、それぞれがどのフラグが変化するかの情報であって並列に実行できる数に等しい組の情報と、それぞれがフラグを生成するための原始データであって並列に実行できる数に等しい組の原始データとを出力し、
    前記フラグ生成保持手段は、
    前記フラグ制御記述と前記情報とに従って、フラグ毎に、前記命令解読実行 手段が出力する前記原始データの組のいずれを用いるかを決定し、決定され た原始データを用いてフラグデータを生成するフラグ生成手段と、
    前記フラグ生成手段が生成するフラグデータを保持するフラグレジスタとからなる
    ことを特徴とする請求項7または8記載のプロセッサ。
  10. 前記フラグ生成手段は、前記フラグ制御記述により特定される順序が後である操作を優先して、前記操作に関するフラグデータを生成することを特徴とする請求項9記載のプロセッサ。
JP15615599A 1999-06-03 1999-06-03 コンパイラ、プロセッサおよび記録媒体 Expired - Fee Related JP4006887B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15615599A JP4006887B2 (ja) 1999-06-03 1999-06-03 コンパイラ、プロセッサおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15615599A JP4006887B2 (ja) 1999-06-03 1999-06-03 コンパイラ、プロセッサおよび記録媒体

Publications (2)

Publication Number Publication Date
JP2000347861A JP2000347861A (ja) 2000-12-15
JP4006887B2 true JP4006887B2 (ja) 2007-11-14

Family

ID=15621560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15615599A Expired - Fee Related JP4006887B2 (ja) 1999-06-03 1999-06-03 コンパイラ、プロセッサおよび記録媒体

Country Status (1)

Country Link
JP (1) JP4006887B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774582B2 (en) 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor

Also Published As

Publication number Publication date
JP2000347861A (ja) 2000-12-15

Similar Documents

Publication Publication Date Title
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
EP1296227B1 (en) Valid instruction dispatching and execution
JP4979875B2 (ja) リターゲッタブルコンパイルシステム及び方法
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
JP4283131B2 (ja) プロセッサ及びコンパイル方法
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
JP2000112758A (ja) 投機的実行中に発生する例外を遅延させるシステム及び方法
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
CN107450888A (zh) 嵌入式数字信号处理器中的零开销循环
US6324639B1 (en) Instruction converting apparatus using parallel execution code
WO2002008893A1 (en) A microprocessor having an instruction format containing explicit timing information
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US20060015855A1 (en) Systems and methods for replacing NOP instructions in a first program with instructions of a second program
US6064818A (en) Straight path optimization for compilers
US20130024672A1 (en) Processing vectors using wrapping propagate instructions in the macroscalar architecture
KR101645001B1 (ko) Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP2001243070A (ja) プロセッサ及び分岐予測方法並びにコンパイル方法
JP3835764B2 (ja) プロセッサおよび記録媒体
US6886091B1 (en) Replacing VLIW operation with equivalent operation requiring fewer issue slots
JP3692793B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP3553845B2 (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
JPH11242599A (ja) コンピュータプログラム製品
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060427

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070820

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100907

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100907

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110907

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120907

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees