JP2005251210A - Processor and recording medium - Google Patents
Processor and recording medium Download PDFInfo
- Publication number
- JP2005251210A JP2005251210A JP2005075625A JP2005075625A JP2005251210A JP 2005251210 A JP2005251210 A JP 2005251210A JP 2005075625 A JP2005075625 A JP 2005075625A JP 2005075625 A JP2005075625 A JP 2005075625A JP 2005251210 A JP2005251210 A JP 2005251210A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- buffer
- slot
- latch
- nop
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
Description
本発明は、コンパイラとプロセッサと記憶媒体とに関し、特に単一命令方式またはVLIW(Very Long Instruction Word)方式のプロセッサの実行コード効率を向上させる技術に関するものを含む。 The present invention relates to a compiler, a processor, and a storage medium, and particularly relates to a technique for improving the execution code efficiency of a single instruction type or VLIW (Very Long Instruction Word) type processor.
近年の電子技術の発展により、高性能なプロセッサが普及し、あらゆる分野で用いられている。そのようなプロセッサでは命令の並列処理により高い性能を達成している。VLIWと呼ばれるアーキテクチャも命令の並列処理の1つの形態であり、VLIWアーキテクチャを採るプロセッサ(以下、「VLIWプロセッサ」という。)は、内部に複数の演算器を備え、1つの命令に置かれたスロットと呼ばれる複数のフィールドに指定されたオペレーションを同時並列に実行する。このようなVLIWプロセッサの機械命令プログラムは、コンパイラによって高級言語で記述されたプログラムにおけるオペレーションレベルでの並列性が検出されスケジューリングされた後に生成されたものである。機械命令プログラムは実行コードとも呼ばれる。 Due to recent developments in electronic technology, high-performance processors have become widespread and are used in all fields. Such processors achieve high performance by parallel processing of instructions. An architecture called VLIW is also a form of parallel processing of instructions. A processor using the VLIW architecture (hereinafter referred to as “VLIW processor”) has a plurality of arithmetic units inside and is a slot placed in one instruction. The operations specified in multiple fields called are executed simultaneously in parallel. Such a machine instruction program of the VLIW processor is generated after the parallelism at the operation level in a program written in a high-level language is detected and scheduled by a compiler. A machine instruction program is also called an execution code.
(第1の従来技術)
図21は、第1の従来技術におけるプロセッサの構成図である。
(First prior art)
FIG. 21 is a block diagram of a processor in the first prior art.
第1の従来技術におけるプロセッサは2つのオペレーションを並列実行するもので、図5に示すような第1と第2の2つのスロットからなる命令列で構成されるプログラムがROM1に格納され、それぞれのスロットに書かれたオペレーションが第1命令解読器4と第2命令解読器5とで解読された後、第1演算器13と第2演算器14とで実行される。
The processor in the first prior art executes two operations in parallel, and a program comprising an instruction sequence consisting of first and second slots as shown in FIG. After the operation written in the slot is decoded by the
(第2の従来技術)
図22は、第2の従来技術におけるプロセッサの構成図である。
(Second prior art)
FIG. 22 is a block diagram of a processor in the second prior art.
第2の従来技術におけるプロセッサは3つのオペレーションを並列実行するものだが、基本的な考え方は第1の従来技術におけるプロセッサと同一であり、図14に示すような第1から第3の3つのスロットからなる命令列で構成されるプログラムがROM41に格納され、それぞれのスロットに書かれたオペレーションが第1命令解読器45から第3命令解読器47で解読された後、第1演算器58から第3演算器60で実行される。つまり、1つの命令を構成するスロットの数が増えたに過ぎない。
Although the processor in the second prior art executes three operations in parallel, the basic idea is the same as the processor in the first prior art, and the first to third three slots as shown in FIG. Is stored in the ROM 41, and the operations written in the respective slots are decoded by the first instruction decoder 45 by the third instruction decoder 47, and then the
しかしながら、上記の従来技術ではいずれも、命令中に置かれたノーオペレーションコード(nopコード)によってプログラムサイズが増大する問題がある。
なお、プログラムサイズの増大はコード効率の低下とも表現される。VLIWプロセッサの命令の各スロットにはプロセッサが備える複数の演算器に対応したオペレーションが指定されるが、オペレーションの依存関係等により、常に並列実行可能なスロットの数だけのオペレーションがスケジューリングできるとは限らないからである。有効なオペレーションが置けない場合、コンパイラはそのスロットにnopコードを生成する。
However, any of the above conventional techniques has a problem that the program size increases due to a no-operation code (nop code) placed in the instruction.
An increase in program size is also expressed as a decrease in code efficiency. Each slot of the instruction of the VLIW processor is assigned an operation corresponding to a plurality of arithmetic units provided in the processor. However, due to the dependency of the operation etc., it is not always possible to schedule the operation as many as the number of slots that can be executed in parallel. Because there is no. If a valid operation cannot be placed, the compiler generates nop code in that slot.
上記の第1の従来技術では、例えば図5に示すように、命令2ではBとCの2つの有効なオペレーションを指定することができるが、命令1では第2スロットに有効なオペレーションを指定することができずにnopとなっている。また上記の第2の従来技術では、例えば図14に示すように、命令1では第2と第3スロットに、命令2では第3スロットに有効なオペレーションを指定することができずにnopとなっている。このように一般にVLIWプロセッサは、命令の並列度が増すほど挿入されるnopコードの数が増加し、コード効率がさらに悪化するという問題がある。これは、コンパイラにおいて全スロットに有効なオペレーションがスケジューリングできる確率が並列度に逆比例することに起因する。
In the first prior art described above, for example, as shown in FIG. 5, two effective operations B and C can be specified in the
そこで、本発明はかかる点に鑑みてなされたものであり、命令中の無駄領域を低減するコンパイラとプロセッサとを提供することを第1の目的とする。 Accordingly, the present invention has been made in view of such a point, and a first object thereof is to provide a compiler and a processor that reduce a useless area in an instruction.
また、本発明の第2の目的は、VLIWプロセッサにおける命令の並列度の向上に伴うnopコードの増大を軽減するコンパイラとプロセッサとを提供することである。 A second object of the present invention is to provide a compiler and a processor that can reduce an increase in nop code accompanying an increase in the degree of instruction parallelism in a VLIW processor.
本願発明のコンパイラは、高級言語プログラムからプロセッサが同時に並列実行できる複数の操作を長語命令形式の命令を生成したのち、命令に含まれるnopをnopよりも後に実行される有効な操作に置き換え、有効な操作を削除するとともに、置き換えたことを示す情報を付加することを特徴するものである。これにより、nopを有効なオペレーションに置き換えることができ、コードサイズを縮小化できる。 The compiler of the present invention generates a long-word instruction format from a plurality of operations that can be executed in parallel by a processor from a high-level language program, and then replaces nop included in the instruction with an effective operation executed after nop, It is characterized in that information indicating that a valid operation is deleted and replaced is added. Thereby, nop can be replaced with a valid operation, and the code size can be reduced.
また、このような命令を実行するプロセッサは、命令中の蓄積ビットの値に基づいて命令を一旦蓄積バッファに格納したのち、蓄積バッファに蓄積された命令を実行することを特徴とするプロセッサである。 A processor that executes such an instruction is a processor that temporarily stores an instruction in an accumulation buffer based on the value of an accumulation bit in the instruction and then executes the instruction accumulated in the accumulation buffer. .
以上の説明から明らかなように、本発明によればnopを減少させることができ、コードサイズを小さくすることができる。 As apparent from the above description, according to the present invention, the nop can be reduced and the code size can be reduced.
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
(実施の形態1)
実施の形態1は、nopの代わりに有効なオペレーションが配置された命令を一旦蓄積しその後実行するもので、コードサイズの減少を図るものである。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
(Embodiment 1)
In the first embodiment, an instruction in which an effective operation is arranged instead of nop is temporarily stored and then executed, and the code size is reduced.
1.コンパイラ
図1は、コンパイラの構成を示すブロック図である。
1. Compiler FIG. 1 is a block diagram showing a configuration of a compiler.
コンパイラ102は、ユーザが記述したC言語プログラム101を翻訳し、機械命令プログラム112を出力する。
The compiler 102 translates the
コンパイラ102は、C言語プログラム101を読込用バッファ104に読み込むファイル読込部103と、読込用バッファ104に読み込まれたC言語プログラムの構文や意味を解析して中間コードを生成し中間コード用バッファ106に書き込む構文解析部105と、中間コード用バッファ106に格納された中間コードを入力して命令の2並列実行を目的とする命令のスケジューリングを行い、未圧縮の機械命令プログラムを生成し暫定出力バッファ108に書き込む機械命令生成部107と、暫定出力バッファ108に格納された未圧縮の機械命令プログラムを圧縮して目的とする機械命令プログラムを生成し出力用バッファ110に書き込む機械命令圧縮部109と、出力用バッファ110に格納された機械命令プログラムをファイルに出力するファイル出力部111とから構成される。ここで「機械命令プログラムの圧縮」とは、機械命令プログラムの各命令に含まれるnopコードを有効なオペレーションに置き換えることを言う。この圧縮を行う機械命令圧縮部109を除く各要素は、公知の技術に基づいて構成すればよいのでここでは説明を省略する。機械命令圧縮部109は、以下に詳細に説明するが、次の原理に基づいて動作する。
The compiler 102 reads the
命令の順に未圧縮の機械命令プログラムを検索して、同順の第1スロットのnopコードと第2スロットのnopコードとのペアを抽出し、このnopコードペアの第1スロットおよび第2スロットを、該ペア以降に最初に現れる有効オペレーションのペアの第1スロットおよび第2スロットのオペレーションでそれぞれ置き換え、置き換えたことをマーキングするとともに、置き換えに使った有効オペレーションのペアを削除する。これにより、2つの有効なオペレーションを含む命令を、これよりも前に存在するnopの代わりに配置し、nopを削減するものである。 The uncompressed machine instruction program is searched in the order of the instructions, the pair of the nop code of the first slot and the nop code of the second slot in the same order is extracted, and the first slot and the second slot of this nop code pair are extracted. Then, the first operation and the second operation of the pair of valid operations appearing first after the pair are respectively replaced and marked as being replaced, and the pair of valid operations used for the replacement is deleted. As a result, an instruction including two valid operations is arranged in place of the nop existing before this, and the nop is reduced.
図2から図4は、機械命令圧縮部109の処理フローを示したフローチャートである。
機械命令圧縮部109の処理フローは、以下の動作例を用いて詳細に説明する。
2 to 4 are flowcharts showing the processing flow of the machine
The processing flow of the machine
1.1 機械命令圧縮部109の動作例
図5は、未圧縮の機械命令プログラムの例示図であり、機械命令生成部107が上記した第1の従来技術にならって生成したものである。
1.1 Example of Operation of Machine Instruction Compression Unit 109 FIG. 5 is an exemplary diagram of an uncompressed machine instruction program, which is generated by the machine
命令は第1と第2の2つのスロットで構成され、AからJの記号は有効なオペレーションが、nopはnopコードが生成されていることを示す。 The instruction consists of first and second slots, the symbols A to J indicate a valid operation, and nop indicates that nop code is generated.
図6は、圧縮された機械命令プログラムの例示図であり、機械命令圧縮部109が図5の未圧縮の機械命令プログラムを以下の手順で圧縮したものである。
FIG. 6 is a view showing an example of a compressed machine instruction program. The machine
命令は第1と第2の2つのスロットで構成され、各スロットは1ビットの蓄積ビットとオペレーション(OP)フィールドとからなる。AからJの記号は図5と同様、有効なオペレーションを示す。 The instruction is composed of first and second slots, and each slot includes one accumulation bit and an operation (OP) field. Symbols A to J indicate valid operations as in FIG.
以下に、図5のプログラムを入力とした場合における機械命令圧縮部109の動作について図2から図6を用いて説明する。
The operation of the machine
図2に示すように、先ず初期化を行う。初期化は、命令ポインタNを最初の命令、即ち図5の命令1に合わせること、命令先取カウンタmを1にすること、第1スロットnopカウンタC1および第2スロットnopカウンタC2を0にすること、第1スロットバッファカウンタB1を0にすること、第2スロットバッファカウンタB2を0にすることである(ステップS201)。ここで、N、m、C1、C2、B1、B2は機械命令圧縮部109の内部的に作られたパラメータである。
As shown in FIG. 2, initialization is first performed. Initialization is performed by setting the instruction pointer N to the first instruction, that is, the
次に、Nで示される命令、即ち図5の命令1の型を評価する。命令1は第1スロットが有効なオペレーションAで第2スロットがnopコードなので、「OP(1):nop(2)型」が該当し処理Aへ飛ぶ(ステップS202)。(1)、(2)は第1スロット、第2スロットを意味する。
Next, the instruction indicated by N, that is, the type of
図3に示す処理Aでは、最初に第2スロットnopカウンタC2をインクリメントしC2=1と、第2スロットバッファカウンタB2をインクリメントしB2=1とする(ステップS301)。次いで機械命令圧縮部109の内部的に作られたパラメータC1Xに第1スロットnopカウンタC1の値を代入し、C1X=0となる(ステップS302)。次いで(N+m)で示される命令、即ち図5の命令2の型を評価する。命令2は第1、第2スロットがそれぞれ有効なオペレーションA、Bなので、「OP(1):OP(2)型」が該当しステップS312へ飛ぶ(ステップS303)。今、B2=1でB2≦2を満たしているが、ステップS307のC1X≧1を満たさず(C1=0)次にステップS305へ飛ぶ。ここで、C1X≧1を条件としているのは、OP(1):OP(2)をOP(1):NOP(2)に置き換えるというように、第2スロットのみを置き換えることにより新たに置き換え対象が生成されることを防止するためである。すなわち、この条件を付加することにより、OP(1):OP(2)は最終的にはNOP(1):NOP(2)に置き換えられ、削除されることになる。また、B2≦2を条件としているのは、後述する図7に示すプロセッサは第1、2スロットそれぞれについて2組のバッファを備えており、これを越える置き換えを防止するためである。ここでは(N+m)で示される命令、即ち図5の命令2は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを2にして次の命令に進め、ステップS303に戻る(ステップS306)。
In process A shown in FIG. 3, first, the second slot nop counter C2 is incremented to C2 = 1, and the second slot buffer counter B2 is incremented to B2 = 1 (step S301). Next, the value of the first slot nop counter C1 is substituted into the internally generated parameter C1X of the machine
次に(N+m)で示される命令、今度は図5の命令3の型を評価する。命令3は第1スロットが有効なオペレーションDで第2スロットがnopコードなので、「OP(1):nop(2)型」が該当しステップS305へ飛ぶ(ステップS303)。(N+m)で示される命令、即ち図5の命令3は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを3にして次の命令に進め、ステップS303に戻る(ステップS306)。
Next, the instruction indicated by (N + m), this time the type of
次に(N+m)で示される命令、今度は図5の命令4の型を評価する。命令4は第1スロットがnopコードで第2スロットが有効なオペレーションEなので、「nop(1):OP(2)型」が該当しステップS304へ飛ぶ(ステップS303)。ここでC1Xに1が足されてC1X=1になる(ステップS304)。(N+m)で示される命令、即ち図5の命令4は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを4にして次の命令に進め、ステップS303に戻る(ステップS306)。
Next, the instruction indicated by (N + m), this time the type of
次に(N+m)で示される命令、即ち図5の命令5の型を評価する。命令5は第1、第2スロットがそれぞれ有効なオペレーションF、Gなので、「OP(1):OP(2)型」が該当しステップS312へ飛ぶ(ステップS303)。今、B2=1でB2≦2を満たしており、かつステップS307のC1X≧1(C1X=1)を満たしてステップS308へ飛ぶ。ここでOP(2)は有効なままなのでステップS309へ飛び(ステップS308)、Nで示される命令、即ち図5の命令1の第1スロットの蓄積ビットを”0”にセットするとともに、第2スロットの蓄積ビットを”1”にセットしてOPフィールドをnopの代わりにオペレーションGで埋める。このように、OP(2)が有効であることを確認しているのは、OP(2)が存在していてもすでにnopの代わりに配置され、実質的には存在しない命令である場合があるからである。こうして図6の命令1が生成される。続いて(N+m)で示される命令、即ち図5の命令5のOP(2)を無効にする(ステップS309)。このときOP(1)はまだ有効なままなので処理Aを終了し、ステップS206へ飛ぶ(ステップS310)。なお、後述するが、OP(1)が無効であるとき(すでに置き換えられているとき)、ステップS311で命令を削除する。
Next, the instruction indicated by (N + m), that is, the type of
処理Aから戻って、Nで示される命令、即ち図5の命令1は最後の命令でないでのステップS207に移り(ステップS206)、命令ポインタNを次の命令、即ち図5の命令2に進め、命令先取カウンタmを1に戻し、ステップS202へ戻る(ステップS207)。
Returning from the processing A, the instruction indicated by N, that is, the
引き続いてNで示される命令、即ち図5の命令2の型を評価する。命令2は上記の通り「OP(1):OP(2)型」が該当しステップS205に移る(ステップS202)。ここでNで示される命令、即ち図5の命令2の第1および第2スロットの蓄積ビットを”0”にセットする。こうして図6の命令2が生成される。続いてNで示される命令、即ち図5の命令2は最後の命令でないでのステップS207に移り(ステップS206)、命令ポインタNを次の命令、即ち図5の命令3に進め、命令先取カウンタmを1に戻し、ステップS202へ戻る(ステップS207)。
Subsequently, the instruction indicated by N, ie, the type of
引き続いてNで示される命令、即ち図5の命令3の型を評価する。命令3は上記の通り「OP(1):nop(2)型」が該当し処理Aへ飛ぶ(ステップS202)。
Subsequently, the instruction indicated by N, that is, the type of
処理Aでは、最初に第2スロットnopカウンタC2をインクリメントしC2=2と、第2スロットバッファカウンタB2をインクリメントしB2=2とする(ステップS301)。次いでパラメータC1Xに第1スロットnopカウンタC1の値を代入し、C1X=0となる(ステップS302)。次いで(N+m)で示される命令、即ち図5の命令4の型を評価する。命令4は上記の通り「nop(1):OP(2)型」が該当しステップS304へ飛ぶ(ステップS303)。ここでC1Xに1が足されてC1X=1になる(ステップS304)。(N+m)で示される命令、即ち図5の命令4は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを2にして次の命令に進め、ステップS303に戻る(ステップS306)。
In the process A, first, the second slot nop counter C2 is incremented to C2 = 2, and the second slot buffer counter B2 is incremented to B2 = 2 (step S301). Next, the value of the first slot nop counter C1 is substituted into the parameter C1X, so that C1X = 0 (step S302). Next, the instruction indicated by (N + m), that is, the type of
次に(N+m)で示される命令、即ち図5の命令5の型を評価する。命令5は上記の通り「OP(1):OP(2)型」が該当しステップS307へ飛ぶ(ステップS303)。今、C1X=1なのでC1X≧1を満たしてステップS308へ飛ぶ。ここでOP(2)は以前に無効にされているのでステップS305へ飛ぶ(ステップS308)。(N+m)で示される命令、即ち図5の命令5は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを3にして次の命令に進め、ステップS303に戻る(ステップS306)。
Next, the instruction indicated by (N + m), that is, the type of
次に(N+m)で示される命令、即ち図5の命令6の型を評価する。命令6は第1スロットがnopコードで第2スロットが有効なオペレーションHなので、「nop(1):OP(2)型」が該当しステップS304へ飛ぶ(ステップS303)。ここでC1Xに1が足されてC1X=2になる(ステップS304)。(N+m)で示される命令、即ち図5の命令6は最後の命令でないのでステップS306へ移り(ステップS305)、命令先取カウンタmを4にして次の命令に進め、ステップS303に戻る(ステップS306)。
Next, the instruction indicated by (N + m), that is, the type of the
次に(N+m)で示される命令、即ち図5の命令7の型を評価する。命令7は第1、第2スロットがそれぞれ有効なオペレーションI、Jなので、「OP(1):OP(2)型」が該当しステップS312へ飛ぶ(ステップS303)。今、B2=2でB2≦2を満たしており、かつステップS307のC1X≧1(C1X=2)を満たしてステップS308へ飛ぶ。ここでOP(2)は有効なままなのでステップS309へ飛び(ステップS308)、Nで示される命令、即ち図5の命令3の第1スロットの蓄積ビットを”0”にセットするとともに、第2スロットの蓄積ビットを”1”にセットしてOPフィールドをnopの代わりにオペレーションJで埋める。こうして図6の命令3が生成される。続いて(N+m)で示される命令、即ち図5の命令7のOP(2)を無効にする(ステップS309)。このときOP(1)はまだ有効なままなので処理Aを終了し、ステップS206へ飛ぶ(ステップS310)。
Next, the instruction indicated by (N + m), that is, the type of the
処理Aから戻って、Nで示される命令、即ち図5の命令3は最後の命令でないでのステップS207に移り(ステップS206)、命令ポインタNを次の命令、即ち図5の命令4に進め、命令先取カウンタmを1に戻し、ステップS202へ戻る(ステップS207)。
Returning from the process A, the instruction indicated by N, that is, the
引き続いてNで示される命令、即ち図5の命令4の型を評価する。命令4は上記の通り「nop(1):OP(2)型」が該当し処理Bへ飛ぶ(ステップS202)。
Subsequently, the instruction indicated by N, that is, the type of
処理Bでは、最初に第1スロットnopカウンタC1をインクリメントしC1=1と、第1スロットバッファカウンタB1をインクリメントしB1=1とする(ステップS401)。次いで機械命令圧縮部109の内部的に作られたパラメータC2Xに第2スロットnopカウンタC2の値を代入し、C2X=2となる(ステップS402)。次いで(N+m)で示される命令、即ち図5の命令5の型を評価する。命令5は上記の通り「OP(1):OP(2)型」が該当しステップS412へ飛ぶ(ステップS403)。今、B1=1でB1≦2を満たしており、かつステップS407のC2X≧1(C2X=2)を満たしてステップS408へ飛ぶ。ここでOP(1)は有効なままなのでステップS409へ飛び(ステップS408)、Nで示される命令、即ち図5の命令4の第2スロットの蓄積ビットを”0”にセットするとともに、第1スロットの蓄積ビットを”1”にセットしてOPフィールドをnopの代わりにオペレーションFで埋める。こうして図6の命令4が生成される。続いて(N+m)で示される命令、即ち図5の命令5のOP(1)を無効にする(ステップS409)。次にOP(2)は以前に無効にされているのでステップS411へ飛ぶ(ステップS410)。ここで(N+m)で示される命令、即ち図5の命令5を削除し、第1スロットnopカウンタC1および第2スロットnopカウンタC2をデクリメントしC1=0、C2=1と、第1スロットバッファカウンタB1および第2スロットバッファカウンタB2をデクリメントしB1=0、B2=1となる(ステップS411)。これで処理Bを終了し、ステップS206へ飛ぶ。
In the process B, first, the first slot nop counter C1 is incremented to C1 = 1, and the first slot buffer counter B1 is incremented to B1 = 1 (step S401). Next, the value of the second slot nop counter C2 is substituted into the internally generated parameter C2X of the machine
処理Bから戻って、Nで示される命令、即ち図5の命令4は最後の命令でないでのステップS207に移り(ステップS206)、命令ポインタNを次の命令、即ち図5の命令6(命令5は削除された)に進め、命令先取カウンタmを1に戻し、ステップS202へ戻る(ステップS207)。
Returning from the process B, the instruction indicated by N, that is, the
引き続いてNで示される命令、即ち図5の命令6の型を評価する。命令6は上記の通り「nop(1):OP(2)型」が該当し処理Bへ飛ぶ(ステップS202)。
Subsequently, the instruction indicated by N, that is, the type of
処理Bでは、最初に第1スロットnopカウンタC1をインクリメントしC1=1と、第1スロットバッファカウンタB1をインクリメントしB1=1になる(ステップS401)。次いでパラメータC2Xに第2スロットnopカウンタC2の値を代入し、C2X=1となる(ステップS402)。次いで(N+m)で示される命令、即ち図5の命令7の型を評価する。命令7は上記の通り「OP(1):OP(2)型」が該当しステップS412へ飛ぶ(ステップS403)。今、B1=1でB1≦2を満たしており、かつステップS407のC2X≧1(C2X=1)を満たしてステップS408へ飛ぶ。ここでOP(1)は有効なままなのでステップS409へ飛び(ステップS408)、Nで示される命令、即ち図5の命令6の第2スロットの蓄積ビットを”0”にセットするとともに、第1スロットの蓄積ビットを”1”にセットしてOPフィールドをnopの代わりにオペレーションIで埋める。こうして図6の命令5が生成される。続いて(N+m)で示される命令、即ち図5の命令7のOP(1)を無効にする(ステップS409)。次にOP(2)は以前に無効にされているのでステップS411へ飛ぶ(ステップS410)。ここで(N+m)で示される命令、即ち図5の命令7を削除し、第1スロットnopカウンタC1および第2スロットnopカウンタC2をデクリメントしC1=0、C2=0と、第1スロットバッファカウンタB1、第2スロットバッファカウンタB2をデクリメントしB1=0、B2=0となる(ステップS411)。これで処理Bを終了し、ステップS206へ飛ぶ。
In the process B, the first slot nop counter C1 is first incremented to C1 = 1, and the first slot buffer counter B1 is incremented to B1 = 1 (step S401). Next, the value of the second slot nop counter C2 is substituted into the parameter C2X, so that C2X = 1 (step S402). Next, the instruction indicated by (N + m), that is, the type of the
処理Bから戻って、Nで示される命令、即ち図5の命令6は最後の命令なので(命令7は削除された)全ての処理を終了する(ステップS206)。
Returning from the process B, since the instruction indicated by N, that is, the
以上のように、図5の未圧縮の機械命令プログラムは図6に示す圧縮された機械命令プログラムに変換される。なお、上記動作例で図3および図4における未通過のステップがあるが、図3および図4は2つのスロットについて相補的であるので説明を省略する。 As described above, the uncompressed machine instruction program shown in FIG. 5 is converted into the compressed machine instruction program shown in FIG. In the above operation example, there are unpassed steps in FIG. 3 and FIG. 4, but FIG. 3 and FIG.
2.プロセッサ
図7は、プロセッサの概略構成図である。
2. Processor FIG. 7 is a schematic configuration diagram of a processor.
このプロセッサは、命令フェッチステージ(以下、IFステージ)、解読およびレジスタ読出しステージ(以下、DECステージ)、実行ステージ(以下、EXステージ)の3つのステージからなる3段パイプライン構造を成している。 This processor has a three-stage pipeline structure composed of three stages: an instruction fetch stage (hereinafter referred to as IF stage), a decoding and register read stage (hereinafter referred to as DEC stage), and an execution stage (hereinafter referred to as EX stage). .
図7において、1は機械語プログラムを格納するROM、2と3は機械語命令(以下、命令と略す)の第1スロットと第2スロットの内容を格納するそれぞれI1ラッチとI2ラッチ、4と5はそれぞれI1ラッチ2とI2ラッチ3に保持された命令の第1スロットと第2スロットの内容を解読しプロセッサ各部を制御する第1命令解読器と第2命令解読器、6はオペランド格納するレジスタファイル、7と8はそれぞれI1ラッチ2とI2ラッチ3の内容の一部とレジスタファイル6の出力との2入力から1つを選択するD1セレクタとD2セレクタ、9と10はそれぞれD1セレクタ7とD2セレクタ8の出力を格納するD11ラッチとD12ラッチ、11と12はレジスタファイル6の出力を格納するD21ラッチとD22ラッチ、13はD11ラッチ9およびD21ラッチ11の内容を用いて算術論理演算を行う第1演算器、14はD12ラッチ10およびD22ラッチ12の内容を用いて算術論理演算を行う第2演算器で、第1演算器13と第2演算器14の出力はともにレジスタファイル6に接続される。15と16はそれぞれI1ラッチ2とI2ラッチ3に保持された命令の第1スロットと第2スロットの内容を保持するIB11バッファとIB12バッファで、両者を合わせてIB1バッファと記す。17と18はそれぞれI1ラッチ2とI2ラッチ3に保持された命令の第1スロットと第2スロットの内容を保持するIB21バッファとIB22バッファで、両者を合わせてIB2バッファと記す。IB1バッファおよびIB2バッファへは各スロットの蓄積ビットが”1”の時に内容が取込まれる。23、24はIB1バッファまたはIB2バッファをいずれかを選択して出力するセレクタ、19はROM1から読出された命令の第1スロットの内容またはセレクタ23のいずれかを選択してI1ラッチ2に出力するI1セレクタ、20はROM1から読出された命令の第2スロットの内容またはセレクタ24のいずれかを選択してI2ラッチ3に出力するI2セレクタ、21、22はI1ラッチ2、I2ラッチ3に格納されたデータの蓄積ビットが”1”のときnop(No Operation)を出力するnop生成器、25、26は蓄積ビットが”1”となったときは書き込み信号を”0”、”1”と反転して出力し、蓄積ビットが”0”のときは”0”を出力する書き込み信号生成器、27、28は命令の蓄積完了を検出するAND回路、29は蓄積した命令をデコード・実行する場合に命令フェッチを止めるための信号等を生成するOR回路、30、31はクロックドバッファである。なお、nop生成器21、22はI1ラッチ2、I2ラッチ3の出力のそれぞれのビットと、蓄積ビットを反転したものとの論理積を演算するAND回路で構成されており、蓄積ビットが”1”のときは、nopを意味する(00・・・0)2を出力する。また、書き込み信号生成器25、26はT形フリップフロップとAND回路からなり、正転出力とT型フリップフロップのトリガ入力(I1ラッチ2、I2ラッチ3の蓄積ビット)との論理積をとるAND回路の出力をIB11バッファ15、IB12バッファ16への書き込み信号とし、反転出力とT型フリップフロップのトリガ入力との論理積をとるAND回路の出力をIB21バッファ17、IB22バッファ18への書き込み信号としている。
In FIG. 7, 1 is a ROM for storing a machine language program, 2 and 3 are I1 and I2 latches for storing the contents of the first and second slots of machine language instructions (hereinafter abbreviated as instructions), respectively.
レジスタファイル6は、レジスタR0からR7の汎用レジスタを含み、読出し4ポート、書込み2ポートを有する。即ち、同時に4つのレジスタ(重複は可)の読出しと2つのレジスタ(重複は不可)の書込みを許す。D1セレクタ7およびD2セレクタ8はそれぞれ第1命令解読器4および第2命令解読器5の指示により、命令に即値などの定数値を伴う場合はこれを選択する。
The
このプロセッサはいわゆるVLIW(Very Long Instruction Word)形式の命令に基づいており、1つの命令で2つの演算などの操作が定義される。第1スロットのオペレーションは、I1ラッチ2に格納され第1命令解読器4で解読され第1演算器13で実行される。また第2スロットのオペレーションは、I2ラッチ3に格納され第2命令解読器5で解読され第2演算器14で実行される。このようにして同時に2つの操作を実行するためVLIW形式のプロセッサは効率が高い。
This processor is based on instructions in the so-called VLIW (Very Long Instruction Word) format, and operations such as two operations are defined by one instruction. The operation of the first slot is stored in the
2.1 プロセッサの動作例
以下に、図6の機械命令プログラムがROM1に格納された場合における上記構成をもつプロセッサの動作について図8を用いて説明する。
2.1 Example of Processor Operation Hereinafter, the operation of the processor having the above configuration when the machine instruction program of FIG. 6 is stored in the
図8は、図6の機械命令プログラムがROM1に格納された場合におけるプロセッサの動作タイミング図である。同図は、プロセッサの動作をパイプラインのIFステージでROM1から読出される命令、DECステージで解読される命令、EXステージで実行される命令と、IB1バッファおよびIB2バッファが保持する命令をマシンサイクルと呼ばれるタイミング毎に示している。以下、時間が経過する順にタイミング毎にその動作を説明する。なお図中、「:」はスロットの区切りを表し、左が第1スロット、右が第2スロットを意味し、「−」は有効なオペレーションが保持されていないもしくは作用していないことを表す。
FIG. 8 is an operation timing chart of the processor when the machine instruction program of FIG. 6 is stored in the
また、初期状態として、IB11バッファ15、IB12バッファ16、IB21バッファ17、IB22バッファ18はリセットされているものとする。
In the initial state, it is assumed that the IB11 buffer 15, the
(タイミングt1)・IFステージ:命令1
命令1がROM1から読出され、第1スロット(蓄積ビットが”0”でオペレーションA)がI1ラッチ2に、第2スロット(蓄積ビットが”1”でオペレーションG)がI2ラッチ3に格納される。すなわち、IBバッファにはまだオペレーションが蓄積されていない(蓄積ビットが”1”でない)ので、I1SEL19、I2SEL20はいずれも、ROM1からの出力を選択し出力する。
(Timing t1) • IF stage:
(タイミングt2)・DECステージ:命令1
蓄積ビットが”1”であるI2ラッチ3の内容(蓄積ビットが”1”でオペレーションG)がIB12バッファ16に取込まれる。具体的には、蓄積ビットが”1”であるため、書き込み信号生成器26によりIB12バッファ16の書き込み信号がイネーブルとなり、I2ラッチ3の内容がIB12バッファ16に蓄積されることとなる。また、I2ラッチ3に格納された命令1の第2スロットの蓄積ビットが”1”であるため、nop生成器22はnop(00・・・0)2を出力し、第2命令解読器5はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
(Timing t2)-DEC stage:
The contents of the
一方、I1ラッチ2に格納された命令1の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションAであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。
・IFステージ:命令2
命令2がROM1から読出され、第1スロット(蓄積ビットが”0”でオペレーションB)がI1ラッチ2に、第2スロット(蓄積ビットが”0”でオペレーションC)がI2ラッチ3に格納される。
On the other hand, the first slot of the
-IF stage:
(タイミングt3)・EXステージ:命令1
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションAの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、オペレーションGは蓄積ビットが”1”でnop生成器22によりnopに無効化されているため、第2演算器14は作用しない。
・DECステージ:命令2
I1ラッチ2に格納された命令2の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションBであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。一方、I2ラッチ3に格納された命令2の第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションCであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。このとき、オペレーションB,Cいずれの蓄積ビットも”0”であるため、いずれのIBバッファの書き込み信号もイネーブルとならず、書き込みは行われない。
・IFステージ:命令3
命令3がROM1から読出され、第1スロット(蓄積ビットが”0”でオペレーションD)がI1ラッチ2に、第2スロット(蓄積ビットが”1”でオペレーションJ)がI2ラッチ3に格納される。
(Timing t3)-EX stage:
The operands stored in the
-DEC stage:
The first slot of the
-IF stage:
(タイミングt4)・EXステージ:命令2
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションBの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションCの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
・DECステージ:命令3
蓄積ビットが”1”であるI2ラッチ3の内容(蓄積ビットが”1”でオペレーションJ)がIB22バッファ18に取込まれる。具体的には、蓄積ビットが”1”であるため、IB12バッファ16またはIB22バッファ18にデータの書き込みをしようとするが、すでにIB12バッファ16にはデータを書き込んだので、書き込み信号生成器26によりIB22バッファ18の書き込み信号がイネーブルになる。また、I2ラッチ3に格納された命令3の第2スロットの蓄積ビットが”1”であるため、nop生成器22はnopを出力し、第2命令解読器5はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
(Timing t4)-EX stage:
The operands stored in the
-DEC stage:
The contents of the
一方、I1ラッチ2に格納された命令3の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションDであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。
・IFステージ:命令4
命令4がROM1から読出され、第1スロット(蓄積ビットが”1”でオペレーションF)がI1ラッチ2に、第2スロット(蓄積ビットが”0”でオペレーションE)がI2ラッチ3に格納される。
On the other hand, the first slot of the
-IF stage:
(タイミングt5)・EXステージ:命令3
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションDの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、オペレーションJは蓄積ビットが”1”でnop生成器22によりnopに無効化されているため第2演算器14は作用しない。
・DECステージ:命令4
蓄積ビットが”1”であるI1ラッチ2の内容(蓄積ビットが”1”でオペレーションF)がIB11バッファ15に取込まれる。具体的には、蓄積ビットが”1”であるため、書き込み信号生成器25によりIB11バッファ15の書き込み信号がイネーブルとなり、I1ラッチ2の内容がIB11バッファ15に蓄積されることとなる。また、I2ラッチ2に格納された命令4の第1スロットの蓄積ビットが”1”であるため、nop生成器21はnopを出力し、第1命令解読器4はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
(Timing t5)-EX stage:
The operands stored in the
-DEC stage:
The contents of the
一方、I2ラッチ3に格納された命令4の第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションEであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。・IFステージ:IB1バッファ蓄積命令
IB11バッファ15とIB12バッファ16との蓄積ビットが共に”1”であるため、AND回路27は蓄積バッファにデータが蓄積されたとして”1”を出力し、さらにOR回路29が命令フェッチを中断すべく”1”を出力する。これにより、命令フェッチは中断される。これとともに、IB11バッファ15の蓄積ビットが”1”であるので、セレクタ23、24はIB1バッファを選択・出力する。さらにOR回路29の出力により、I1セレクタ19、I2セレクタ20はそれぞれIB11バッファ15、IB21バッファ16を選択し、蓄積された命令はI1ラッチ2、I2ラッチ3に格納される。これにより、IB11バッファ15およびIB21バッファ16に格納された命令を使用したことになるので、クロックドバッファ30によりタイミングを調整して、IB11バッファ15およびIB21バッファ21の内容をリセットし、蓄積ビットを”0”とする。なお、ここではバッファそのものをリセットしているが、蓄積ビットのみを”0”としても良い。なお、図面では省略しているが、I1セレクタ19およびI2セレクタ20は蓄積された命令を選択するときは蓄積ビットを”0”にして、I1ラッチ2、I2ラッチ3に出力する。nop生成器21、22が蓄積された命令をnopに無効化する事を防止するためである。また、セレクタ23、24の切り換え信号をIB11バッファ15の蓄積ビットのみとしているのは、蓄積された命令が実行されるときは常にIB11バッファ15およびIB12バッファ16(またはIB21バッファ17およびIB22バッファ18)の蓄積ビットが”1”となっているため、IB12バッファ16の蓄積ビットまでを見る必要はなく、またIB1バッファに蓄積された命令を実行するということはIB2バッファに蓄積された命令はまだ実行しない状態を意味するからである。このため、IB11バッファ15の蓄積ビットに限らず、いずれかの蓄積ビットの値により切り換え信号とできる。
On the other hand, the second slot of the
(タイミングt6)・EXステージ:命令4
オペレーションFは蓄積ビットが”1”でnop生成器21によりnopに無効化されているため、第1演算器13は作用しない。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションEの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
・DECステージ:IB1バッファ蓄積命令
I1ラッチ2に格納された第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションFであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。一方、I2ラッチ3に格納された第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションGであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。
・IFステージ:命令5
命令5がROM1から読出され、第1スロット(蓄積ビットが”1”でオペレーションI)がI1ラッチ2に、第2スロット(蓄積ビットが”0”でオペレーションH)がI2ラッチ3に格納される。
(Timing t6)-EX stage:
In the operation F, since the accumulation bit is “1” and the
DEC stage: IB1 buffer accumulation instruction The first slot stored in the
-IF stage:
(タイミングt7)・EXステージ:IB1バッファ蓄積命令
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションFの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションGの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
・DECステージ:命令5
蓄積ビットが”1”であるI1ラッチ2の内容(蓄積ビットが”1”でオペレーションI)がIB21バッファ17に取込まれる。具体的には、蓄積ビットが”1”であるため、IB11バッファ15またはIB21バッファ17にデータの書き込みをしようとするが、すでにIB11バッファ15にはデータを書き込んだので、書き込み信号生成器25によりIB21バッファ17の書き込み信号がイネーブルとなる。また、I1ラッチ2に格納された命令5の第1スロットの蓄積ビットが”1”であるため、nop生成器21はnopを出力し、第1命令解読器4はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
(Timing t7) EX stage: IB1 buffer accumulation instruction Operands stored in the
-DEC stage:
The contents of the
一方、I2ラッチ3に格納された命令5の第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションHであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。・IFステージ:IB2バッファ蓄積命令
IB21バッファ17とIB22バッファ18との蓄積フラグが共に”1”であるため、AND回路27は蓄積バッファにデータが蓄積されたとして”1”を出力し、さらにOR回路29が命令フェッチを中断すべく”1”を出力する。これにより、命令フェッチは中断される。これとともに、IB11バッファ15の蓄積ビットが”0”である(IB2バッファに蓄積された命令が存在する可能性がある)ので、セレクタ23、24はIB2バッファを選択・出力する。さらに、OR回路29の出力によりI1セレクタ19、I2セレクタ20はそれぞれIB21バッファ17、IB22バッファ18を選択し、蓄積された命令はI1ラッチ2、I2ラッチ3に格納される。これにより、IB21バッファ17およびIB22バッファ18に格納された命令を使用したことになるので、クロックドバッファ31によりタイミングを調整して、IB21バッファ17およびIB22バッファ18の内容をリセットし、蓄積フラグを”0”とする。
On the other hand, the second slot of the
(タイミングt8)・EXステージ:命令5
オペレーションIは蓄積ビットが”1”でnop生成器21によりnopに無効化されているため、第1演算器13は作用しない。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションHの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
・DECステージ:IB2バッファ蓄積命令
I1ラッチ2に格納された第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションIであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。一方、I2ラッチ3に格納された第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションJであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。
(Timing t8)-EX stage:
In the operation I, since the accumulation bit is “1” and the
DEC stage: IB2 buffer accumulation instruction The first slot stored in the
(タイミングt9)・EXステージ:IB2バッファ蓄積命令
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションIの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションJの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
(Timing t9) EX stage: IB2 buffer accumulation instruction Operands stored in the
3.記録媒体
本発明の記録媒体の実施の形態として、図6の機械命令プログラム112を記録した磁気ディスク(フレキシブルディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
3. Recording Medium As an embodiment of the recording medium of the present invention, a magnetic disk (flexible disk, hard disk, etc.), optical disk (CD-ROM, PD, etc.), magneto-optical disk, semiconductor memory (semiconductor memory ( ROM and flash memory).
以上のように本実施の形態によれば、コンパイラの機械命令圧縮部109が、同順の第1スロットのnopコードと第2スロットのnopコードとのペアを抽出し、このnopコードペアの第1スロットおよび第2スロットを、該ペア以降に最初に現れる有効オペレーションのペアの第1スロットおよび第2スロットのオペレーションでそれぞれ置き換え、置き換えに使った有効オペレーションのペアを削除することにより命令中の無駄領域が低減され、プログラムサイズの削減を図ることができる。
As described above, according to the present embodiment, the machine
また本実施の形態のプロセッサによれば、散在する従来のnopコードの位置に埋められた有効オペレーションを蓄積するIB1バッファおよびIB2バッファを設け、IB1バッファまたはIB2バッファのいずれかに有効オペレーションが2つ揃った時点でこれを実行することにより、従来の処理性能を保つつ圧縮された機械命令プログラムの実行が可能である。 Further, according to the processor of the present embodiment, an IB1 buffer and an IB2 buffer for accumulating effective operations buried in the positions of scattered conventional nop codes are provided, and there are two effective operations in either the IB1 buffer or the IB2 buffer. By executing this when it is ready, it is possible to execute a compressed machine instruction program while maintaining the conventional processing performance.
さらに本実施の形態によれば、従来のnopコードの位置に該nopコードと同じスロットにある有効オペレーションを埋めるという考え方に基づくため、第1スロットと第2スロットとの間でオペレーションを相互に転送する必要がなくなりプロセッサの構成が簡単になるという効果を有する。具体的には、I1ラッチ2のオペレーションはIB11バッファ15またはIB21バッファ17にのみ蓄積し、それらに蓄積したオペレーションはI1ラッチ2にのみ戻せばよく、逆にI2ラッチ3のオペレーションはIB12バッファ16またはIB22バッファ18にのみ蓄積し、それらに蓄積したオペレーションはI2ラッチ3にのみ戻せばよいため、第1スロットと第2スロットとの間の転送路および転送制御手段を必要としない。
Furthermore, according to the present embodiment, since the effective operation in the same slot as the nop code is filled in the position of the conventional nop code, the operations are transferred between the first slot and the second slot. There is an effect that the configuration of the processor is simplified. Specifically, the operation of the
なお、本実施形態のプロセッサでは、I1セレクタ19およびI2セレクタ20をそれぞれI1ラッチ2およびI2ラッチ3の入力側に設けているが、それぞれI1ラッチ2およびI2ラッチ3の出力側に設け、第1命令解読器4および第命令2解読器5の入力を選択するようにしてもよい。このようにする際は、IB1バッファおよびIB2バッファへの入力をIFステージにおいてROM1から直接行うように変更しなければならないが、IB1バッファおよびIB2バッファへの取り込みやI1セレクタ19およびI2セレクタ20の選択については本実施形態と同様に蓄積ビットの値で制御すればよい。
In the processor of this embodiment, the
また、本実施形態のプロセッサでは、IB1バッファとIB2バッファとの2つの蓄積バッファを設けているが、いかなる数であってもよい。蓄積バッファの数が多くなるほどnopコードを有効オペレーションで埋める機会が増加し、プログラムサイズの一層の削減が図れる。このことは、例えば本実施形態のプロセッサにおけるIB2バッファがないものとすると、図5の命令3の第2スロットのnopコードは有効オペレーションで埋められないことから容易に伺い知れる。
Further, in the processor of the present embodiment, two storage buffers, the IB1 buffer and the IB2 buffer, are provided, but any number is possible. As the number of storage buffers increases, the opportunity to fill the nop code with valid operations increases, and the program size can be further reduced. For example, if there is no IB2 buffer in the processor of this embodiment, the nop code of the second slot of the
(実施の形態2)
実施の形態2は、実施の形態1から、nopコードのスロットの有効オペレーションでの埋め方の自由度を高めたものである。
(Embodiment 2)
The second embodiment is higher than the first embodiment in that the degree of freedom in filling the nop code slot in the effective operation is increased.
1.コンパイラ
コンパイラの構成は、機械命令圧縮部109の動作を除いて実施の形態1に記したものと同じである。機械命令圧縮部109は図10から図12に示すもので、次の原理に基づいて動作する。
1. Compiler The configuration of the compiler is the same as that described in the first embodiment except for the operation of the machine
命令の順に未圧縮の機械命令プログラムを検索して、第1スロットと第2スロットのいずれかにかかわらず出現順序が連続する2つのnopコードを抽出し、これらのnopコードのスロットを、該2つのnopコードの以降に最初に現れる有効オペレーションのペアの第1スロットおよび第2スロットのオペレーションでそれぞれ置き換え、置き換えたことをマーキングするとともに、置き換えに使った有効オペレーションのペアを削除し、削除されたペアの直前の命令の第1スロットと第2スロットのいずれかに削除したことをマーキングする。すなわち、実施の形態1のコンパイラでは各スロット毎にnopを削除していたが、本実施の形態におけるコンパイラはスロットを意識せず、nopを出現順に有効なオペレーションに置き換えるものである。このため、いずれかのスロットにnopが集中していた場合でも有効なオペレーションに置き換えることができる。 An uncompressed machine instruction program is searched in the order of instructions, and two nop codes whose appearance order is continuous regardless of either the first slot or the second slot are extracted. Replaced with the operations of the first slot and second slot of the first valid operation pair that appears first after the two nop codes, marking the replacement, and deleting the deleted valid operation pair that was used for the replacement Mark deleted in either the first slot or the second slot of the instruction immediately preceding the pair. That is, the nop is deleted for each slot in the compiler of the first embodiment, but the compiler in the present embodiment is unaware of the slot and replaces the nop with an effective operation in the order of appearance. For this reason, even if nop is concentrated in any slot, it can be replaced with an effective operation.
1.1 機械命令圧縮部109の動作例
図9は、圧縮された機械命令プログラムの例示図であり、機械命令圧縮部109が図5の未圧縮の機械命令プログラムを上述の手順で圧縮したものである。圧縮された命令は第1と第2の2つのスロットで構成され、各スロットは蓄積ビットと位置ビットとオペレーション(OP)フィールドとからなる。AからJの記号は有効なオペレーションを示す。蓄積ビットと位置ビットは次のようにエンコードしている。
00、01 何もしない10 IB1バッファに蓄積すべし11 IB2バッファに蓄積すべし
具体的に説明すると、図5の命令5のオペレーションFとオペレーションGとを命令1と命令3とのnopコードのスロットに埋め、命令7のオペレーションIとオペレーションJとを命令4と命令6とのnopコードのスロットに埋め、埋められた以上のスロットの蓄積ビットを01にセットし、命令5と命令7とを削除する。オペレーションFとオペレーションGとオペレーションIとオペレーションJとは、この順にIB1バッファの第1スロット、第2スロット、IB2バッファの第1スロット、第2スロットに蓄積されることを前提にしており、削除された命令5の直前の命令4の第2スロットの蓄積ビットには10を、削除された命令7の直前の命令6の第2スロットの蓄積ビットには11をセットする。その他のスロットの蓄積ビットは00である。このようにして生成された機械命令プログラムが図9に示すものである。なお図9の命令5は図5の命令6から生成したものである。
1.1 Example of Operation of Machine
00, 01
図10と図2とを比べると、nopカウンタが1つである点(S501)、位置ビットをセットする点(S505)が異なる。nopカウンタを1つとしたのは、本実施の形態では、実施の形態1とは異なりスロットを意識する必要がないからである。ただし、このnopカウンタは図2のnopカウンタとは全く異なる用途に使用されるもので、位置ビットの値を決定するためにnopが出願する度に”0”、”1”を繰り返すものである。 10 and FIG. 2 are different in that there is one nop counter (S501) and a position bit is set (S505). The reason why the number of nop counters is one is that in the present embodiment, unlike the first embodiment, it is not necessary to be aware of the slot. However, this nop counter is used for a completely different purpose from the nop counter of FIG. 2, and repeats “0” and “1” every time nop applies to determine the value of the position bit. .
図11、12は図3、4と基本的に同じであるが、位置ビットの値をnopカウンタによって決定しているところが大きく異なる(S609,S709)。また、前述したnopカウントの用途のため、命令を削除したときはC=0とする点も異なる(S611,S711))。 11 and 12 are basically the same as FIGS. 3 and 4, except that the position bit value is determined by a nop counter (S609, S709). Further, because of the use of the above-described nop count, C = 0 is also different when an instruction is deleted (S611, S711).
2.プロセッサ
図13は、プロセッサのIFステージ部分の概略構成図である。
2. Processor FIG. 13 is a schematic configuration diagram of the IF stage portion of the processor.
DECステージおよびEXステージの図示していない部分は図7と同じ構成であり、また実施の形態1と同一の構成要素には同一の符号を付している。図7と比べると、セレクタ32、33を有している点が異なる。すなわち、位置ビットの値により、I1ラッチ2に格納された命令であってもIB12バッファ16またはIB22バッファ18に、I2ラッチ3に格納された命令であってもIB11バッファ15またはIB21バッファ17に命令を蓄積することが可能となり、実施の形態1と比べてさらにnopを軽減することができる。他の動作は、実施の形態1と同じであるため説明は省略する。
Portions not shown of the DEC stage and the EX stage have the same configuration as in FIG. 7, and the same components as those in the first embodiment are denoted by the same reference numerals. Compared with FIG. 7, the difference is that it has
3.記録媒体
本発明の記録媒体の実施の形態として、図9の機械命令プログラムを記録した磁気ディスク(フレキシブルディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
3. Recording Medium As an embodiment of the recording medium of the present invention, a magnetic disk (flexible disk, hard disk, etc.), an optical disk (CD-ROM, PD, etc.), a magneto-optical disk, a semiconductor memory (ROM) recording the machine instruction program of FIG. And flash memory).
以上のように本実施の形態によれば、コンパイラの機械命令圧縮部109が、第1スロットと第2スロットのいずれかにかかわらず出現順序が連続する2つのnopコードを抽出し、このnopコードスロットを、該2つのnopコードの以降に最初に現れる有効オペレーションのペアの第1スロットおよび第2スロットのオペレーションでそれぞれ置き換え、置き換えに使った有効オペレーションのペアを削除することにより命令中の無駄領域が低減され、プログラムサイズの削減を図ることができる。
As described above, according to the present embodiment, the machine
また本実施の形態のプロセッサによれば、散在する従来のnopコードの位置に埋められた有効オペレーションを蓄積するIB1バッファおよびIB2バッファを設け、実行させるべき位置の直前の命令中の蓄積ビットでIB1バッファまたはIB2バッファのいずれかを指定して蓄積したオペレーションを実行することにより、従来の処理性能を保つつ圧縮された機械命令プログラムの実行が可能である。 In addition, according to the processor of the present embodiment, an IB1 buffer and an IB2 buffer for accumulating valid operations buried in the positions of scattered conventional nop codes are provided, and the IB1 buffer stores the IB1 buffer in the instruction immediately before the position to be executed. By executing the accumulated operation by designating either the buffer or the IB2 buffer, it is possible to execute the compressed machine instruction program while maintaining the conventional processing performance.
さらに本実施の形態によれば、スロットの位置にかかわらず出現順にnopコードを有効オペレーションで埋めるという考え方に基づくため、nopコードが第1スロットと第2スロットとのいずれにあるかを識別する必要がなくなり、コンパイラの構成が実施の形態1のものより簡単になるという効果を有する。 Furthermore, according to the present embodiment, since it is based on the idea that nop codes are filled with valid operations in the order of appearance regardless of the position of the slot, it is necessary to identify whether the nop code is in the first slot or the second slot This has the effect that the configuration of the compiler becomes simpler than that of the first embodiment.
なお、本実施形態のプロセッサでは、I1セレクタ19およびI2セレクタ20をそれぞれI1ラッチ2およびI2ラッチ3の入力側に設けているが、それぞれI1ラッチ2およびI2ラッチ3の出力側に設け、第1解読器4および第2解読器5の入力を選択するようにしてもよい。このようにする際は、IB1バッファおよびIB2バッファへの入力をIFステージにおいてROM1から直接行うように変更し、ROM1から読出された命令の蓄積ビットの値によってIB1セレクタ31とIB2セレクタ32とを制御するように変更しなければならないが、IB1バッファおよびIB2バッファへの取り込みやI1セレクタ19およびI2セレクタ20の選択については本実施形態と同様に蓄積ビットの値で制御すればよい。
In the processor of this embodiment, the
また、本実施形態のプロセッサでは、IB1バッファとIB2バッファとの2つの蓄積バッファを設けているが、いかなる数であってもよい。蓄積バッファの数が多くなるほどnopコードを有効オペレーションで埋める機会が増加し、プログラムサイズの一層の削減が図れる。このことは、例えば本実施形態のプロセッサにおけるIB2バッファがないものとすると、図5の命令4の第1スロットのnopコードは有効オペレーションで埋められないことから容易に伺い知れる。
Further, in the processor of the present embodiment, two storage buffers, the IB1 buffer and the IB2 buffer, are provided, but any number is possible. As the number of storage buffers increases, the opportunity to fill the nop code with valid operations increases, and the program size can be further reduced. For example, if there is no IB2 buffer in the processor of the present embodiment, the nop code of the first slot of the
(実施の形態3)
実施の形態3は、2つのスロットしかない命令で3つのオペレーションを並列実行するVLIWアーキテクチャのコンパイラおよびプロセッサである。
(Embodiment 3)
The third embodiment is a VLIW architecture compiler and processor that execute three operations in parallel with an instruction having only two slots.
1.コンパイラ
コンパイラの構成は、機械命令生成部107と機械命令圧縮部109との動作を除いて実施の形態1に記したものと同じである。機械命令生成部107は、中間コード用バッファ106に格納された中間コードを入力して命令の3並列実行(実施の形態1は2並列実行)を目的とする命令のスケジューリングを行い、未圧縮の機械命令プログラムを生成し暫定出力バッファ108に書き込む。機械命令圧縮部109は次の原理に基づいて動作する。
1. Compiler The configuration of the compiler is the same as that described in the first embodiment except for the operations of the machine
命令の順に未圧縮の機械命令プログラムを検索して、第3スロットを除く第1スロットと第2スロットのいずれかにかかわらず出現順序が連続する3つのnopコードを抽出し、これらのnopコードのスロットを、該3つのnopコードの以降に最初に現れる3つの有効オペレーションが指定される命令の第1スロットから第3スロットのオペレーションでそれぞれ置き換え、置き換えたことをマーキングするとともに、置き換えに使った3つの有効オペレーションが指定される命令を削除し、削除されたペアの直前の命令の第1スロットと第2スロットのいずれかに削除したことをマーキングする。 An uncompressed machine instruction program is searched in the order of instructions, and three nop codes whose appearance order is continuous regardless of either the first slot or the second slot except the third slot are extracted. The slot is replaced with the first to third slot operations of the designated instruction, and the three valid operations appearing first after the three nop codes are marked, and the 3 used for the replacement Instructions with one valid operation are deleted and marked as deleted in either the first slot or the second slot of the instruction immediately preceding the deleted pair.
1.1 機械命令圧縮部109の動作例
図15は、圧縮された機械命令プログラムの例示図であり、機械命令圧縮部109が図14の未圧縮の機械命令プログラムを上述の手順で圧縮したものである。圧縮された命令は第1と第2の2つのスロットで構成され、各スロットは2ビットの蓄積ビットとオペレーション(OP)フィールドとからなる。AからHの記号は有効なオペレーションを示す。蓄積ビット(左側)と実行ビット(右側)の2ビットは次のようにエンコードしている。
00 何もしない10 オペレーションは置き換えられたものであり、IBバッファに第1、第2、第3スロットの順に逐次蓄積すべし01 直後の命令が削除されたので、IBバッファの命令を実行すべし11 (未使用)
具体的に説明すると、図14の命令5のオペレーションFとオペレーションGとオペレーションHとを命令1の第2スロットと命令3の第2スロットと命令4の第1スロットとのnopコードのスロットに埋め、埋められた以上のスロットの蓄積ビットを01にセットし、命令5を削除する。オペレーションFとオペレーションGとオペレーションHとは、この順にIBバッファの第1スロット、第2スロット、第3スロットに蓄積されることを前提にしており、削除された命令5の直前の命令4の第2スロットの蓄積ビットは”1”と実行ビットは”0”とセットする。その他のスロットの蓄積ビットは”0”と実行ビットは”0”とセットする。このようにして生成された機械命令プログラムが図15に示すものである。なお「IBバッファ」は次に説明する。
1.1 Example of Operation of Machine
00
Specifically, operation F, operation G, and operation H of
2.プロセッサ
図16は、プロセッサの概略構成図である。
2. Processor FIG. 16 is a schematic configuration diagram of a processor.
図7と比べると、2つのスロットしかない命令で3つのオペレーションを並列実行するために、2つのスロットの命令をIB3バッファ41を含む3つのバッファに蓄積することにより内部で3つのスロットの命令に変換するものである。そして、3つ目のスロットの命令を与えるためのI3ラッチ38、nop生成器39、第3命令解読器40を有し、さらに3つ目のスロットの命令を実行するためのD3セレクタ34、D13ラッチ35、D23ラッチ36及び第3演算器37を有する点で異なる。また、リングカウンタ42により、IB1バッファ15、IB2バッファ16、IB3バッファ41の書き込み信号を順にイネーブルにする。
Compared to FIG. 7, in order to execute three operations in parallel with an instruction having only two slots, the instructions in the two slots are stored in the three buffers including the IB3 buffer 41 so that the instructions in the three slots are internally stored. To convert. It has an I3 latch 38 for giving an instruction of the third slot, a
2.1 プロセッサの動作例
以下に、図15の機械命令プログラムがROM1に格納された場合における上記構成をもつプロセッサの動作について図17を用いて説明する。
2.1 Example of Processor Operation Hereinafter, the operation of the processor having the above configuration when the machine instruction program of FIG. 15 is stored in the
図17は、図15の機械命令プログラムがROM1に格納された場合におけるプロセッサの動作タイミング図である。同図は、プロセッサの動作をパイプラインのIFステージでROM41から読出される命令、DECステージで解読される命令、EXステージで実行される命令と、IBバッファが保持する命令をマシンサイクルと呼ばれるタイミング毎に示している。以下、時間が経過する順にタイミング毎にその動作を説明する。なお図中、「:」はスロットの区切りを表し、左が第1スロット、中央が第2スロット、右が第3スロットを意味し、「−」は有効なオペレーションが保持されていないもしくは作用していないことを表す。
FIG. 17 is an operation timing chart of the processor when the machine instruction program of FIG. 15 is stored in the
(タイミングt1)
初期状態として、IB1バッファ15、IB2バッファ16、IB3バッファ41がリセットされ、それぞれに(0・・・00)2が格納されているものとする。また、リングカウンタ42も初期状態として(001)2にセットされ、I1ラッチ2またはI2ラッチ3に蓄積ビットが”1”の最初のオペレーションが格納されると(100)2となり、IB1バッファ15にオペレーションが蓄積されることとなる。
・IFステージ:命令1
命令1がROM1から読出され、第1スロット(オペレーションA)がI1ラッチ2に、第2スロット(オペレーションF)がI2ラッチ3に格納される。I3ラッチ38にはIB3バッファ41の(0・・・00)2が格納される。
(Timing t1)
As an initial state, it is assumed that the IB1 buffer 15, the
-IF stage:
The
(タイミングt2)・DECステージ:命令1
蓄積ビットが”1”であるI2ラッチ3の内容(オペレーションF)がIB1バッファ15に取込まれる。具体的には、蓄積ビットが”1”である最初のオペレーションなのでリングカウンタ42が(100)2を出力することにより、IB1バッファ15の書き込み信号がイネーブルとなり、I2ラッチ3の内容がIB1バッファ15に蓄積される。
(Timing t2)-DEC stage:
The contents (operation F) of the
I1ラッチ2に格納された命令1の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションAであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。一方、I2ラッチ3に格納された命令1の第2スロットの蓄積ビットが”1”であるため、nop生成器22はnopを出力し、第2命令解読器5はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。また、3つのスロットの命令を実行する場合以外は第3演算器37を動作させる必要がないため、実行ビットが”0”のときは、nop生成器39はnopを出力する。
・IFステージ:命令2
命令2がROM1から読出され、第1スロット(オペレーションB)がI1ラッチ2に、第2スロット(オペレーションC)がI2ラッチ3に格納される。I3ラッチ31には再びIB3バッファ41の(0・・・00)2が格納される。
The first slot of the
-IF stage:
The
(タイミングt3)・EXステージ:命令1
D11ラッチ9とD21ラッチ11に格納されたオペランドを第1演算器13に入力してオペレーションAの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、第2演算器14と第3演算器37はnop生成器22、39により無効化されているため作用しない。
・DECステージ:命令2
I1ラッチ2に格納された命令2の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションBであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ11に格納される。一方、I2ラッチ3に格納された命令2の第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションCであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ10とD22ラッチ12に格納される。また、I3ラッチ38の実行ビットは”0”であるため、nop生成器39はnopを出力し、第3命令解読器40はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
・IFステージ:命令3
命令3がROM1から読出され、第1スロット(蓄積ビットが(00)2でオペレーションD)がI1ラッチ2に、第2スロット(蓄積ビットが(01)2でオペレーションG)がI2ラッチ3に格納される。I3ラッチ38には再びIB3バッファ41の(0・・・00)2が格納される。
(Timing t3)-EX stage:
The operands stored in the
-DEC stage:
The first slot of the
-IF stage:
(タイミングt4)・EXステージ:命令2
D11ラッチ9とD21ラッチ55に格納されたオペランドを第1演算器13に入力してオペレーションBの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、D12ラッチ11とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションCの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。また、第3演算器37はnop生成器39により無効化されているので作用しない。
・DECステージ:命令3
蓄積ビットが(10)2であるI2ラッチ3の内容(オペレーションG)がIB2バッファ16に取込まれる。具体的には、タイミングt1とほとんど同様の動作であるが、IB1バッファ15にはすでにオペレーションFが蓄積されているので、リングカウンタ42が(010)2を出力することにより、IB2バッファ16の書き込み信号がイネーブルとなり、IB2バッファ16にオペレーションが蓄積される。
(Timing t4)-EX stage:
The operands stored in the
-DEC stage:
The contents (operation G) of the
I1ラッチ2に格納された命令3の第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションDであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ55に格納される。一方、I2ラッチ3に格納された命令3の第2スロットの蓄積ビットが”1”であるため、nop生成器22はnopを出力し、第2命令解読器5はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。また、実行フラグは”0”であるため、nop生成器39はnopを出力し、第3命令解読器40はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
・IFステージ:命令4
命令4がROM1から読出され、第1スロット(オペレーションH)がI1ラッチ2に、第2スロット(オペレーションE)がI2ラッチ3に格納される。I3ラッチ38には再びIB3バッファ41の(0・・・00)2が格納される。
The first slot of the
-IF stage:
The
(タイミングt5)・EXステージ:命令3
D11ラッチ9とD21ラッチ55に格納されたオペランドを第1演算器13に入力してオペレーションDの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、第2演算器14と第3演算器37とはnop生成器22、39により無効化されているので作用しない。
・DECステージ:命令4
蓄積ビットが”1”であるI1ラッチ2の内容(オペレーションH)がIB3バッファ41に取込まれる。このとき、IB1バッファ15、IB2バッファ16には既にオペレーションが蓄積されているので、リングカウンタ42は(001)2を出力することによりIB3バッファ41の書き込み信号がイネーブルとなり、IB3バッファ41にオペレーションが蓄積される。また、I1ラッチ2に格納された命令4の第1スロットの蓄積ビットが”1”であるため、nop生成器21はnopを出力し、第1命令解読器4はEXステージで実質的に何らの動作もしないようなデコード結果を出力する。
(Timing t5)-EX stage:
The operands stored in the
-DEC stage:
The contents (operation H) of the
一方、I2ラッチ3に格納された命令4の第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションEであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ11とD22ラッチ12に格納される。また、実行フラグは”0”であるため、nop生成器39はnopを出力し、第3命令解読器40は実行ステージで実質的に何らの動作もしないようなデコード結果を出力する。
・IFステージ:IBバッファ蓄積命令
I2ラッチ3に格納された命令4の第2スロットの実行ビットが”1”であるため、命令フェッチ制御部により命令フェッチを中断する。これとともに、I1セレクタ19、I2セレクタ20がそれぞれIB1バッファ15、IB2バッファ16を選択し、I1ラッチ2、I2ラッチ3、I3ラッチ38にはIB1バッファ15、IB2バッファ16、IB3バッファ41の内容が格納される。そして、I3ラッチ38の実行ビットが”1”となると、IBバッファの内容をリセットする。
On the other hand, the second slot of the
IF stage: IB buffer accumulation instruction Since the execution bit of the second slot of the
(タイミングt6)・EXステージ:命令4
第1演算器13、第3演算器37はnop生成器21、nop生成器39により無効化されているので作用しない。一方、D12ラッチ10とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションEの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
・DECステージ:IBバッファ蓄積命令
I1ラッチ2に格納された第1スロットが第1命令解読器4で解読される。解読された結果としてオペレーションFであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD11ラッチ9とD21ラッチ55に格納される。一方、I2ラッチ3に格納された第2スロットが第2命令解読器5で解読される。解読された結果としてオペレーションGであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD12ラッチ11とD22ラッチ12に格納される。また、I3ラッチ3に格納された第3スロットが第3命令解読器40で解読される。すなわち、実行ビットが”1”であるため、nop生成器39はI3ラッチ38の内容をそのまま出力し、解読された結果としてオペレーションHであることが判明する。この解読に基づいてレジスタファイル6から汎用レジスタが読出され、読出された値または命令中の定数値がD13ラッチ35とD23ラッチ36に格納される。
(Timing t6)-EX stage:
The
DEC stage: IB buffer storage instruction The first slot stored in the
(タイミングt7)・EXステージ:IBバッファ蓄積命令
D11ラッチ9とD21ラッチ55に格納されたオペランドを第1演算器13に入力してオペレーションFの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。一方、D12ラッチ11とD22ラッチ12に格納されたオペランドを第2演算器14に入力してオペレーションGの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。また、D13ラッチ35とD23ラッチ36に格納されたオペランドを第3演算器37に入力してオペレーションHの演算を行う。演算結果は必要に応じてレジスタファイル6の汎用レジスタに格納する。
(Timing t7) EX stage: IB buffer accumulation instruction Operands stored in the
3.記録媒体
本発明の記録媒体の実施の形態として、図15の機械命令プログラムを記録した磁気ディスク(フレキシブルディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
3. Recording Medium As an embodiment of the recording medium of the present invention, a magnetic disk (flexible disk, hard disk, etc.), an optical disk (CD-ROM, PD, etc.), a magneto-optical disk, a semiconductor memory (ROM) recording the machine instruction program of FIG. And flash memory).
以上のように本実施の形態によれば、コンパイラの機械命令圧縮部109が、第3スロットを除く第1スロットと第2スロットのいずれかにかかわらず出現順序が連続する3つのnopコードを抽出し、これらのnopコードのスロットを、該3つのnopコードの以降に最初に現れる3つの有効オペレーションが指定される命令の第1スロットから第3スロットのオペレーションでそれぞれ置き換え、置き換えに使った3つの有効オペレーションが指定される命令を削除することにより命令中の無駄領域が低減され、プログラムサイズの削減を図ることができる。特に本実施の形態によれば、従来3つのスロットからなる命令で3並列実行していた所を、従来nopコードとなるスロットを利用して2つスロットからなる命令で実行できるため、極めてコード効率が高い。上記に示した動作例では、図12の3スロット×5命令=15スロットが、図15の2スロット×4命令=8スロットに圧縮されていることがわかる。
As described above, according to the present embodiment, the machine
また本実施の形態のプロセッサによれば、散在する従来のnopコードの位置に埋められた有効オペレーションを蓄積するIBバッファを設け、実行させるべき位置の直前の命令中の蓄積ビットでIBバッファを指定して蓄積したオペレーションを実行することにより、従来の処理性能を保ちつつ圧縮された機械命令プログラムの実行が可能である。 Further, according to the processor of the present embodiment, an IB buffer for storing valid operations buried in the positions of scattered conventional nop codes is provided, and the IB buffer is designated by the storage bit in the instruction immediately before the position to be executed. By executing the accumulated operations, it is possible to execute the compressed machine instruction program while maintaining the conventional processing performance.
なお、本実施形態のプロセッサでは、I1セレクタ19およびI2セレクタ20をそれぞれI1ラッチ2およびI2ラッチ43の入力側に設けているが、それぞれI1ラッチ2およびI2ラッチ3の出力側に設け、第1命令解続器4および第2命令解読器4の入力を選択するようにしてもよい。このようにする際は、IBバッファへの入力をIFステージにおいてROM1から直接行うように変更し、ROM1から読出された命令の蓄積ビットの値によってIBセレクタ66を制御するように変更しなければならないが、IBバッファへの取り込みやI1セレクタ19およびI2セレクタ20の選択については本実施形態と同様に蓄積ビットの値で制御すればよい。
In the processor of this embodiment, the
また、本実施形態のプロセッサでは、IBバッファという1つの蓄積バッファを設けているが、複数設けてもよい。蓄積バッファの数が多くなるほどnopコードを有効オペレーションで埋める機会が増加し、プログラムサイズの一層の削減が図れる。 In the processor of this embodiment, one storage buffer called an IB buffer is provided, but a plurality of storage buffers may be provided. As the number of storage buffers increases, the opportunity to fill the nop code with valid operations increases, and the program size can be further reduced.
さらにまた、本実施形態のプロセッサでは、3つの命令解読器と3つの演算器を設けて最大3並列実行を達成しているが、これらを4つずつ設けて4並列実行してもよいし、あるいはそれ以上であってもよい。4並列実行の場合は、本実施形態と同様に2つスロットからなる命令の未圧縮時にnopコードとなるスロットを4つ利用して有効オペレーションを埋めてもよいし、3つスロットからなる命令の未圧縮時にnopコードとなるスロットを4つ利用して有効オペレーションを埋めてもよい。但し前者の場合、IBバッファをもう1スロット分だけ多く備える必要がある。前者は後者に比べて未圧縮時にnopコードとなるスロットが極めて多い場合に有効で、相当のコード効率の向上が望める。このようにすることにより、VLIWプロセッサにおける命令の並列度が向上しても、nopコードの増大を大幅に軽減することができる。 Furthermore, in the processor of the present embodiment, three instruction decoders and three arithmetic units are provided to achieve a maximum of three parallel executions, but four of these may be provided and four parallel executions may be performed, Or more than that. In the case of four parallel executions, as in the present embodiment, four slots that become nop codes may be used when an instruction consisting of two slots is uncompressed, and valid operations may be filled. The valid operation may be filled using four slots that become nop codes when not compressed. However, in the former case, it is necessary to provide more IB buffers for one slot. The former is effective when the number of slots that become nop codes when uncompressed is very large compared to the latter, and a considerable improvement in code efficiency can be expected. By doing so, the increase in nop code can be greatly reduced even if the parallelism of instructions in the VLIW processor is improved.
(実施の形態4)
実施の形態4は、実施の形態3から、第3スロットのオペレーションだけを第1あるいは第2スロットのnopコードのスロットに埋めるように変えたものである。
(Embodiment 4)
The fourth embodiment is different from the third embodiment in that only the operation of the third slot is filled in the slot of the nop code of the first or second slot.
1.コンパイラ
コンパイラの構成は、機械命令圧縮部109の動作を除いて実施の形態3に記したものと同じである。機械命令圧縮部109は次の原理に基づいて動作する。
1. Compiler The configuration of the compiler is the same as that described in the third embodiment except for the operation of the machine
命令の順に未圧縮の機械命令プログラムを検索して、第3スロットを除く第1スロットと第2スロットのいずれかにかかわらず1つのnopコードを抽出し、このnopコードのスロットを、該nopコードの以降に最初に現れる第3スロットに有効オペレーションが指定される命令の該オペレーションで置き換え、置き換えたことをマーキングするとともに、置き換えに使った有効オペレーションが指定される命令の第3スロットを削除し、該命令の第1スロットと第2スロットのいずれかに削除したことをマーキングする。 An uncompressed machine instruction program is searched in the order of instructions, one nop code is extracted regardless of any of the first slot and the second slot excluding the third slot, and the slot of the nop code is defined as the nop code. The third slot appearing first after this is replaced with the operation of the instruction in which the valid operation is specified, marking the replacement, and deleting the third slot of the instruction in which the valid operation used for the replacement is specified, The deletion is marked in either the first slot or the second slot of the instruction.
1.1 機械命令圧縮部109の動作例
図18は、圧縮された機械命令プログラムの例示図であり、機械命令圧縮部109が図12の未圧縮の機械命令プログラムを上述の手順で圧縮したものである。圧縮された命令は第1と第2の2つのスロットで構成され、各スロットは2ビットの蓄積ビットとオペレーション(OP)フィールドとからなる。AからHの記号は有効なオペレーションを、nopは有効でないnopコードを示す。蓄積ビットの2ビットは次のようにエンコードしている。
00 何もしない01 オペレーションは置き換えられたものであり、IBバッファに蓄積すべし10 第3スロットが削除されたので、第3スロットにはIBバッファのオペレーションを実行すべし11 (未使用)
具体的に説明すると、第3スロットに置かれたオペレーションである、図14の命令5のオペレーションHを、命令1の第2スロットのnopコードのスロットに埋め、埋められたスロットの蓄積ビットを01にセットし、命令5の第3スロットを削除する。オペレーションHは、IBバッファに蓄積されることを前提にしており、第3スロットが削除された命令5の第2スロットの蓄積ビットには10をセットする(第1スロットの蓄積ビットであってもよい)。その他のスロットの蓄積ビットは00である。このようにして生成された機械命令プログラムが図18に示すものである。ここでは、命令3の第2スロットと命令4の第1スロットのnopコードは置き換えられずに残っている。なお「IBバッファ」は次に説明する。
1.1 Example of Operation of Machine
00 No
More specifically, the operation H of the
2.プロセッサ
図19は、プロセッサのIFステージ部分の概略構成図である。
2. Processor FIG. 19 is a schematic configuration diagram of the IF stage portion of the processor.
DECステージおよびEXステージの図示していない部分は図16と同じ構成であり、また図16と同一の構成要素には同一の符号を付している。このプロセッサは、図14に示すものと比べると、IBバッファ50を1つだけ有するものである点で異なる。このため、図16と比べるとIBバッファが1つで足りることはもちろんの事、3つのバッファに左から蓄積するためのセレクタ41、42が不要となり回路が簡単化できる。動作は、蓄積先がIBバッファ50に固定される以外は、実施の形態3と同じであるため説明は省略する。
Portions not shown of the DEC stage and the EX stage have the same configuration as in FIG. 16, and the same components as those in FIG. 16 are denoted by the same reference numerals. This processor differs from that shown in FIG. 14 in that it has only one
3.記録媒体
本発明の記録媒体の実施の形態として、図18の機械命令プログラムを記録した磁気ディスク(フレキシブルディスクやハードディスクなど)、光ディスク(CD-ROMやPDなど)、光磁気ディスク、半導体メモリ(ROMやフラッシュメモリなど)がある。
3. Recording Medium As an embodiment of the recording medium of the present invention, a magnetic disk (flexible disk, hard disk, etc.), an optical disk (CD-ROM, PD, etc.), a magneto-optical disk, a semiconductor memory (ROM) recording the machine instruction program of FIG. And flash memory).
以上のように本実施の形態によれば、コンパイラの機械命令圧縮部109が、第3スロットを除く第1スロットと第2スロットのいずれかにかかわらず1つのnopコードを抽出し、このnopコードのスロットを、該nopコードの以降に最初に現れる第3スロットに有効オペレーションが指定される命令の該オペレーションで置き換え、置き換えに使った有効オペレーションが指定される命令の第3スロットを削除することにより命令中の無駄領域が低減され、プログラムサイズの削減を図ることができる。特に本実施の形態によれば、従来3つのスロットからなる命令で3並列実行していた所を、従来nopコードとなるスロットを利用して2つスロットからなる命令で実行できるため、極めてコード効率が高い。上記に示した動作例では、図12の3スロット×5命令=15スロットが、図18の2スロット×5命令=10スロットに圧縮されていることがわかる。
As described above, according to the present embodiment, the machine
また本実施の形態のプロセッサによれば、従来のnopコードの位置に埋められた有効オペレーションを蓄積するIBバッファを設け、命令中の蓄積ビットでIBバッファを指定して該命令のオペレーションと蓄積したオペレーションとを並列に実行することにより、従来の処理性能を保つつ圧縮された機械命令プログラムの実行が可能である。 In addition, according to the processor of the present embodiment, an IB buffer for accumulating valid operations buried in the position of the conventional nop code is provided, and the IB buffer is specified by the accumulation bit in the instruction and stored with the operation of the instruction. By executing the operations in parallel, it is possible to execute a compressed machine instruction program while maintaining the conventional processing performance.
なお、本実施形態のプロセッサでは、IBバッファという1つの蓄積バッファを設けているが、複数設けてもよい。蓄積バッファの数が多くなるほどnopコードを有効オペレーションで埋める機会が増加し、プログラムサイズの一層の削減が図れる。例えば、命令3の第2スロットと命令4の第1スロットのnopコードは置き換えられずに残っているが、未圧縮(図14)の命令5の直後に第3スロットに有効オペレーションが置かれた命令が1つ後続する場合、または2つ後続する場合、それぞれ、これらのnopコードの一方または両方をその有効オペレーションで埋めることができる。
In the processor of this embodiment, one storage buffer called an IB buffer is provided, but a plurality of storage buffers may be provided. As the number of storage buffers increases, the opportunity to fill the nop code with valid operations increases, and the program size can be further reduced. For example, the nop code of the second slot of
さらにまた、本実施形態のプロセッサでは、3つの命令解読器と3つの演算器を設けて最大3並列実行を達成しているが、これらを4つずつ設けて4並列実行してもよいし、あるいはそれ以上であってもよい。4並列実行の場合は、本実施形態と同様に2つスロットからなる命令の未圧縮時にnopコードとなるスロットを2つ利用して有効オペレーションを埋めてもよいし、3つスロットからなる命令の未圧縮時にnopコードとなるスロットを1つ利用して有効オペレーションを埋めてもよい。但し前者の場合、IBバッファをもう1スロット分だけ多く備える必要がある。前者は後者に比べて未圧縮時にnopコードとなるスロットが極めて多い場合に有効で、相当のコード効率の向上が望める。このようにすることにより、VLIWプロセッサにおける命令の並列度が向上しても、nopコードの増大を大幅に軽減することができる。 Furthermore, in the processor of the present embodiment, three instruction decoders and three arithmetic units are provided to achieve a maximum of three parallel executions, but four of these may be provided and four parallel executions may be performed, Or more than that. In the case of 4-parallel execution, as in the present embodiment, two slots that become nop codes may be used when an instruction consisting of two slots is uncompressed, and valid operations may be filled. A valid operation may be filled using one slot that becomes a nop code when uncompressed. However, in the former case, it is necessary to provide more IB buffers for one slot. The former is effective when the number of slots that become nop codes when uncompressed is very large compared to the latter, and a considerable improvement in code efficiency can be expected. By doing so, the increase in nop code can be greatly reduced even if the parallelism of instructions in the VLIW processor is improved.
以上、本発明に係るコンパイラ及びプロセッサについて、上記の4つの実施形態に基づいて説明したが、本発明はこれら実施形態に限られないことは勿論である。即ち、
(1)上記の4つの実施形態では、1つの命令に2つまたは3つのオペレーションを指定するVLIW形式のアーキテクチャとしているが、1つの命令で1つのオペレーションを指定するVLIW形式でないアーキテクチャでもよい。
As mentioned above, although the compiler and processor concerning this invention were demonstrated based on said 4 embodiment, of course, this invention is not limited to these embodiment. That is,
(1) In the above-described four embodiments, the architecture is a VLIW format in which two or three operations are specified in one instruction. However, an architecture other than the VLIW format in which one operation is specified by one instruction may be used.
特に、固定長命令の場合には未使用領域を持つ命令が多く定義されることがある。例えば、MIPS RISCアーキテクチャによるプロセッサ“R3000”は32ビット固定長命令を実行するが、このプロセッサの演算命令は図23(a)に示すように、12ビットのオペレーションフィールド(「op1」と「op2」で示す)とそれぞれが5ビットの3つのレジスタフィールド(ソースオペランドの「rs」および「rt」と、デスティネーションオペランドの「rd」で示す)から構成され、さらに5ビットの「res」で示す未使用領域を有する。本発明によれば、このような単一オペレーション命令中に生じる無駄領域の発生も回避される。具体的には、図23(b)に示すようにコンパイラが6つの命令Aから命令Fのそれぞれの未使用領域a〜fを利用して、命令F以降に実行されるべき1つの命令を分割して配置するとともにこの命令を削除し、プロセッサ内に設けた命令蓄積レジスタにこれらを順に蓄積し、命令Fの実行後にこのレジスタの内容を実行する。こうすることにより、プログラム中の無駄領域が解消されコード効率が向上する。また、命令蓄積レジスタの内容の実行は、命令Fの直後でなく命令Fに続く他の命令の実行後でもよいし、また命令Fと並列に実行してもよい。特に後者の思想は、1つの命令で1つのオペレーションを指定するVLIW形式でないアーキテクチャにおいて局所的ではあるが2つのオペレーションを指定するVLIW形式のアーキテクチャを実現できるため有用である。また、このような命令蓄積レジスタを複数設けることにより、さらに3並列以上のVLIWアーキテクチャも実現可能である。なお、6つの命令Aから命令Fは必ずしもすき間なく連続している必要はない。 In particular, in the case of fixed-length instructions, many instructions having unused areas may be defined. For example, the processor “R3000” based on the MIPS RISC architecture executes a 32-bit fixed-length instruction. The arithmetic instruction of this processor is a 12-bit operation field (“op1” and “op2” as shown in FIG. 23A). ) And three 5-bit register fields (source operands “rs” and “rt” and destination operand “rd”), and 5 bits of “res”. Has a use area. According to the present invention, it is possible to avoid occurrence of a waste area that occurs during such a single operation instruction. Specifically, as shown in FIG. 23B, the compiler divides one instruction to be executed after the instruction F by using the unused areas a to f of the six instructions A to F. The instruction is deleted, this instruction is deleted, these are stored in order in an instruction storage register provided in the processor, and the contents of this register are executed after the instruction F is executed. By doing so, the useless area in the program is eliminated and the code efficiency is improved. The contents of the instruction storage register may be executed not immediately after the instruction F but after execution of another instruction following the instruction F, or may be executed in parallel with the instruction F. In particular, the latter idea is useful because it is possible to realize a VLIW-type architecture that specifies two operations although it is local in an architecture that does not specify a single operation with a single instruction. Further, by providing a plurality of such instruction storage registers, it is possible to realize a VLIW architecture of three or more parallels. Note that the six instructions A to F do not necessarily have to be continuous without gaps.
(2)上記の4つの実施形態では、命令蓄積レジスタ(IB1バッファ、IB2バッファ、IBバッファが相当)を読出すと同時に内容を消去しているが、消去せずに複数回読出して再利用してもよい。例えば、実施の形態3および実施の形態4では2ビットの蓄積ビットが11である状態を使用していないのでこれを利用し、蓄積ビットが11の時はIBバッファを消去せずに実行する、とすることができる。こうすることにより、例えばプログラムがループを構成するような同じ命令を繰り返し実行する場合に、度々同じ命令を何度もIBバッファに蓄積する必要がなくなり、一層コード効率がよくなる。また、命令蓄積レジスタを、読出した直後に内容が消去されるものと消去されず再利用可能なものと2種類設けることも可能である。 (2) In the above four embodiments, the instruction storage register (IB1 buffer, IB2 buffer, and IB buffer is equivalent) is read and erased at the same time, but is read and reused multiple times without being erased. May be. For example, the third and fourth embodiments do not use the state where the two accumulated bits are 11, so this is used, and when the accumulated bit is 11, the IB buffer is executed without being erased. It can be. By doing so, for example, when the program repeatedly executes the same instruction that constitutes a loop, it is not necessary to repeatedly store the same instruction in the IB buffer many times, and the code efficiency is further improved. It is also possible to provide two types of instruction storage registers, one whose contents are erased immediately after reading and one which can be reused without being erased.
(3)上記の4つの実施形態では、コンパイラにおいて、機械命令生成部107が一旦、従来と同じ機械命令プログラムを生成した後に機械命令圧縮部109がこれを圧縮しているが、両者の機能を一体にして、従来と同じ機械命令プログラムを生成することなく目的の圧縮された機械命令プログラムを直接生成するようにしてもよい。
(3) In the above-described four embodiments, in the compiler, the machine
(4)上記の4つの実施形態のプロセッサは、命令フェッチ、解読、実行の3段パイプラインで構成されるとしているが、パイプラインの段数は何段であってもよいし、パイプラインを採らなくともよい。 (4) The processors of the above four embodiments are configured by a three-stage pipeline of instruction fetch, decoding, and execution. However, the number of pipeline stages may be any number, and a pipeline is adopted. Not necessary.
1、41 ROM
2、42 I1ラッチ
3、43 I2ラッチ
4、45 第1命令解読器
5、46 第2命令解読器
6、48 レジスタファイル
7、49 D1セレクタ
8、50 D2セレクタ
9、52 D11ラッチ
10、53 D12ラッチ
11、55 D21ラッチ
12、56 D22ラッチ
13、58 第1演算器
14、59 第2演算器
15、33 IB11バッファ
16、34 IB12バッファ
17、35 IB21バッファ
18、36 IB22バッファ
19、64 I1セレクタ
20、65 I2セレクタ
21、37、67、72 制御回路
31 IB1セレクタ
32 IB2セレクタ
44 I3ラッチ
47 第3命令解読器
51 D3セレクタ
54 D13ラッチ
57 D23ラッチ
60 第3演算器
61 IB1バッファ
62 IB2バッファ
63 IB3バッファ
66 IBセレクタ
71 IBバッファ
101 C言語プログラム
102 コンパイラ
103 ファイル読込部
104 読込用バッファ
105 構文解析部
106 中間コード用バッファ
107 機械命令生成部
108 暫定出力用バッファ
109 機械命令圧縮部
110 出力用バッファ
111 ファイル出力部
112 機械命令プログラム
1, 41 ROM
2, 42
Claims (6)
前記命令中の蓄積ビットの値に基づいて前記命令を一旦蓄積バッファに格納したのち、前記蓄積バッファに蓄積された命令を実行することを特徴とするプロセッサ。 In a processor that simultaneously executes instructions in multiple slots in parallel,
A processor which stores an instruction once in an accumulation buffer based on a value of an accumulation bit in the instruction and then executes the instruction accumulated in the accumulation buffer.
前記命令を蓄積する蓄積バッファを有し、
前記命令は命令をすぐに実行するか一旦蓄積するかを制御する蓄積ビットを有し、
前記命令中の蓄積ビットの値に基づいて前記命令を一旦蓄積バッファに格納したのち、前記蓄積バッファに蓄積された命令を実行することを特徴とするプロセッサ。 In a processor that simultaneously executes instructions in multiple slots in parallel,
A storage buffer for storing the instructions;
The instruction has a storage bit that controls whether the instruction is executed immediately or stored once;
A processor which stores an instruction once in an accumulation buffer based on a value of an accumulation bit in the instruction and then executes the instruction accumulated in the accumulation buffer.
前記命令を蓄積する蓄積バッファを有し、
前記命令は命令をすぐに実行するか一旦蓄積するかを制御する蓄積ビットといずれの蓄積バッファに蓄積するかを制御する位置ビットを有し、
前記命令中の蓄積ビットと位置ビットの値に基づいて前記命令を一旦蓄積バッファに格納したのち、前記蓄積バッファに蓄積された命令を実行することを特徴とするプロセッサ。 In a processor that simultaneously executes instructions in multiple slots in parallel,
A storage buffer for storing the instructions;
The instruction has an accumulation bit that controls whether the instruction is executed immediately or is temporarily accumulated, and a position bit that controls which accumulation buffer is accumulated.
A processor, wherein the instruction is temporarily stored in the accumulation buffer based on the value of the accumulation bit and the position bit in the instruction, and then the instruction accumulated in the accumulation buffer is executed.
前記命令を蓄積する前記スロットの数よりも多い蓄積バッファを有し、
前記命令は命令をすぐに実行するか一旦蓄積するかを制御する蓄積ビットを有し、
前記命令中の蓄積ビットの値に基づいて前記命令を一旦蓄積バッファに格納したのち、前記蓄積バッファに蓄積された命令を実行することを特徴とするプロセッサ。 In a processor that simultaneously executes instructions in multiple slots in parallel,
Having more storage buffers than the number of slots for storing the instructions;
The instruction has a storage bit that controls whether the instruction is executed immediately or stored once;
A processor which stores an instruction once in an accumulation buffer based on a value of an accumulation bit in the instruction and then executes the instruction accumulated in the accumulation buffer.
前記機械命令は複数の操作記述と、命令を即座に実行するか蓄積するかを制御する蓄積ビットとを含むことを特徴とする機械命令を記録した記録媒体。 A recording medium recording machine instructions to be executed by a processor,
The machine instruction includes a plurality of operation descriptions and a storage bit for controlling whether the instruction is immediately executed or stored.
前記機械命令は複数の操作記述と、命令を即座に実行するか蓄積するかを制御する蓄積ビットと、どこに蓄積するかを示す位置ビットとを含むことを特徴とする機械命令を記録した記録媒体。
A recording medium recording machine instructions to be executed by a processor,
The machine instruction includes a plurality of operation descriptions, an accumulation bit for controlling whether the instruction is immediately executed or accumulated, and a position bit indicating where the instruction is accumulated. .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005075625A JP3835764B2 (en) | 2005-03-16 | 2005-03-16 | Processor and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005075625A JP3835764B2 (en) | 2005-03-16 | 2005-03-16 | Processor and recording medium |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25075498A Division JP3692793B2 (en) | 1998-09-04 | 1998-09-04 | Compiler, processor and recording medium |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005251210A true JP2005251210A (en) | 2005-09-15 |
JP2005251210A5 JP2005251210A5 (en) | 2005-10-27 |
JP3835764B2 JP3835764B2 (en) | 2006-10-18 |
Family
ID=35031559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005075625A Expired - Fee Related JP3835764B2 (en) | 2005-03-16 | 2005-03-16 | Processor and recording medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3835764B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007316901A (en) * | 2006-05-25 | 2007-12-06 | Sanyo Electric Co Ltd | Control information supply device and control information compression method |
JP2007316900A (en) * | 2006-05-25 | 2007-12-06 | Sanyo Electric Co Ltd | Control information supply device and control information compression method |
CN100394403C (en) * | 2006-05-31 | 2008-06-11 | 杭州华三通信技术有限公司 | Limited processor storage access method, system and accessible storage unit |
-
2005
- 2005-03-16 JP JP2005075625A patent/JP3835764B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007316901A (en) * | 2006-05-25 | 2007-12-06 | Sanyo Electric Co Ltd | Control information supply device and control information compression method |
JP2007316900A (en) * | 2006-05-25 | 2007-12-06 | Sanyo Electric Co Ltd | Control information supply device and control information compression method |
JP4646853B2 (en) * | 2006-05-25 | 2011-03-09 | 三洋電機株式会社 | Control information supply device |
JP4646854B2 (en) * | 2006-05-25 | 2011-03-09 | 三洋電機株式会社 | Control information supply device |
CN100394403C (en) * | 2006-05-31 | 2008-06-11 | 杭州华三通信技术有限公司 | Limited processor storage access method, system and accessible storage unit |
Also Published As
Publication number | Publication date |
---|---|
JP3835764B2 (en) | 2006-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5512803B2 (en) | Data processing apparatus and method for handling vector instructions | |
JP5057256B2 (en) | Data processing apparatus, data processing system, and data processing method | |
KR102311619B1 (en) | Method and apparatus for enabling a processor to generate pipeline control signals | |
US9081564B2 (en) | Converting scalar operation to specific type of vector operation using modifier instruction | |
TW201403472A (en) | Optimizing register initialization operations | |
KR20130100900A (en) | Conditional compare instruction | |
US11366669B2 (en) | Apparatus for preventing rescheduling of a paused thread based on instruction classification | |
TW201349111A (en) | Branch misprediction behavior suppression on zero predicate branch mispredict | |
WO2017021675A1 (en) | Element size increasing instruction | |
JP3835764B2 (en) | Processor and recording medium | |
KR100308512B1 (en) | Specialized millicode instruction for editing functions | |
KR100322726B1 (en) | Specialized millicode instruction for translate and test | |
KR100317769B1 (en) | Specialized millicode instructions for packed decimal division | |
JP3692793B2 (en) | Compiler, processor and recording medium | |
KR100837400B1 (en) | Method and apparatus for processing according to multi-threading/out-of-order merged scheme | |
JP4444305B2 (en) | Semiconductor device | |
KR100322725B1 (en) | Millicode flags with specialized update and branch instruction | |
JP2001243070A (en) | Processor and branch predicting method and compile method | |
JP3915019B2 (en) | VLIW processor, program generation device, and recording medium | |
JP2014238832A (en) | Operand generation in at least one processing pipeline | |
CN112947999B (en) | Method and device for expanding instruction function of reduced instruction set computer | |
JP4006887B2 (en) | Compiler, processor and recording medium | |
JP4703735B2 (en) | Compiler, code generation method, code generation program | |
De Souza et al. | On the scheduling algorithm of the dynamically trace scheduled VLIW architecture | |
JP3512707B2 (en) | Microcomputer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050902 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050907 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060510 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060626 |
|
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: 20060720 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060721 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090804 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100804 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110804 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110804 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120804 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |