JP2007156557A - Parallel processor - Google Patents
Parallel processor Download PDFInfo
- Publication number
- JP2007156557A JP2007156557A JP2005346951A JP2005346951A JP2007156557A JP 2007156557 A JP2007156557 A JP 2007156557A JP 2005346951 A JP2005346951 A JP 2005346951A JP 2005346951 A JP2005346951 A JP 2005346951A JP 2007156557 A JP2007156557 A JP 2007156557A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution unit
- operation mode
- processor
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
Description
本発明は、拡張命令によって複数のプロセッサを並列動作させる並列プロセッサに関する。特に、単一のプロセッサ動作による処理モードと複数のプロセッサの並列動作による処理モードにおける命令について、命令メモリの利用効率を向上させるための技術に関する。 The present invention relates to a parallel processor in which a plurality of processors are operated in parallel by an extension instruction. In particular, the present invention relates to a technique for improving instruction memory utilization efficiency for instructions in a processing mode by a single processor operation and a processing mode by a parallel operation of a plurality of processors.
近年では、電子機器にプロセッサを組み込んで高性能化が図られているが、このような電子機器に求められる処理能力が年々高くなってきることから、組み込みプロセッサ自身の処理能力も、年々高いものが求められるようになってきている。このため、最近の組み込みプロセッサには、命令レベルの並列度(ILP:Instruction Level Parallelism)を向上させるスーパースカラ・アーキテクチャや、超長命令語(VLIW:Very Long Instruction Word)アーキテクチャなどの手法を採用しているものがある。 In recent years, high performance has been achieved by incorporating a processor in an electronic device. However, since the processing capability required for such an electronic device is increasing year by year, the processing capability of the embedded processor itself is also increasing year by year. Has come to be required. For this reason, techniques such as a superscalar architecture that improves instruction level parallelism (ILP) and a very long instruction word (VLIW) architecture are adopted for recent embedded processors. There is something that is.
一方、組み込みプロセッサが実装される機器側では、機器のコストを低減させることと、機器の電力消費を低減させることが求められている。このため、組み込みプロセッサにスーパースカラ・アーキテクチャを採用した場合、命令の依存関係を命令実行時にチェックする機構と、動的に実行順序を制御する機構などが必要となって、回路が複雑化してチップサイズが大きくなってコストアップとなり、また消費電力が高くなる課題がある。また、組み込みプロセッサにVLIWアーキテクチャを採用した場合、同時並列に実行する命令がない時には該当する命令スロットに対して、データ処理などを行わせない無操作(NOP:No OPeration)命令を配置する必要がある為、命令メモリの利用効率が低下する課題があった。 On the other hand, on the device side where the embedded processor is mounted, it is required to reduce the cost of the device and reduce the power consumption of the device. For this reason, when the superscalar architecture is adopted for the embedded processor, a mechanism for checking the dependency relation of instructions at the time of instruction execution and a mechanism for dynamically controlling the execution order are required. There is a problem that the size is increased, the cost is increased, and the power consumption is increased. Further, when the VLIW architecture is adopted for the embedded processor, it is necessary to arrange a no operation (NOP) instruction that does not perform data processing or the like in the corresponding instruction slot when there is no instruction to be executed simultaneously in parallel. For this reason, there is a problem in that the use efficiency of the instruction memory is lowered.
これに対して、命令区切り情報を設けて、命令を可変長として命令メモリの利用効率向上を図ったVLIWアーキテクチャのプロセッサ技術が知られている(例えば、特許文献1参照。)。 On the other hand, a processor technology of the VLIW architecture in which instruction delimiter information is provided and the instruction memory is variable length to improve the use efficiency of the instruction memory is known (see, for example, Patent Document 1).
更に、VLIWアーキテクチャのプロセッサに動作モードを設けて、単一のプロセッサが動作するモードでは命令処理を行わない他のプロセッサに対するNOP命令を命令メモリに配置不要として、命令メモリの利用効率向上を図る技術が知られている(例えば、特許文献2参照。)。
しかしながら、前記特許文献1に開示される各命令に命令区切り情報を付加する方法では、処理命令以外の情報が命令メモリに配置されるため命令メモリの利用効率が低下する問題がある。また、前記特許文献2に開示される並列プロセッサは、単一プロセッサが動作するモードでは、他のプロセッサに対するNOP命令を不要として命令利用効率向上を図ることができる。しかし、処理用途に適した複数種類のプロセッサを内蔵して、それらのプロセッサを適宜並列動作させて消費電力の低下と処理性能の向上を実現するようにした並列プロセッサでは、多ビットの拡張命令で並列動作を指示する場合に、動作させないプロセッサに対するNOP命令が必要となり、命令メモリの利用効率が低下する課題があった。
However, the method of adding instruction delimiter information to each instruction disclosed in
本発明は、上記課題を解決するためになされたもので、動作モードを設けてVLIW動作モード時の拡張命令の命令長を可変として、命令メモリの利用効率の高い並列プロセッサを提供することを目的とする。 The present invention has been made to solve the above-described problems, and an object of the present invention is to provide a parallel processor having a high instruction memory utilization efficiency by providing an operation mode and changing the instruction length of an extended instruction in the VLIW operation mode. And
上記目的を達成するために、本発明の並列プロセッサは、少なくとも第1および第2のプロセッサで構成され、各プロセッサで実行される命令を同一サイクルにおいて並列にパイプライン処理する並列プロセッサであって、前記第1のプロセッサに設けられる第1の命令実行部および命令フェッチ供給部と、前記第2のプロセッサに設けられる第2の命令実行部と、前記第1の命令実行部およびまたは前記第2の命令実行部で実行される命令を記憶する命令メモリとを備え、前記命令フェッチ供給部は、前記命令メモリから前記命令を読み出すためのアドレスを指定するカウンタ手段と、前記命令メモリから読み出した前記命令を保持する命令バッファ手段と、前記命令メモリの読出し動作に応じて前記第1の命令実行部および前記第2の命令実行部を動作させる第1の動作モードと、前記第2の命令実行部を動作させる第2の動作モードの制御情報を出力する動作モード制御手段と、所定ビット長のNOP命令を生成するNOP命令生成手段と、前記動作モード制御手段からの前記動作モードの制御情報に基づいて、前記第1の動作モードの場合は、前記第1の命令実行部に前記命令バッファ手段からの前記命令の一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給するとともに、前記第2の命令実行部に前記命令の残りの一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給し、前記第2の動作モードの場合は、前記命令バッファ手段からの前記命令の一部又は全部を前記第2の命令実行部に供給する命令供給手段とを具備することを特徴とする。 In order to achieve the above object, a parallel processor of the present invention is a parallel processor that includes at least a first processor and a second processor and pipelines instructions executed in each processor in parallel in the same cycle, A first instruction execution unit and an instruction fetch supply unit provided in the first processor; a second instruction execution unit provided in the second processor; the first instruction execution unit and / or the second An instruction memory for storing instructions to be executed by the instruction execution unit, wherein the instruction fetch supply unit includes counter means for designating an address for reading the instructions from the instruction memory, and the instructions read from the instruction memory Instruction buffer means for holding the first instruction execution unit and the second instruction in response to a read operation of the instruction memory. A first operation mode for operating the execution unit; an operation mode control means for outputting control information for the second operation mode for operating the second instruction execution unit; and a NOP instruction for generating a NOP instruction having a predetermined bit length Based on the control information of the operation mode from the generation unit and the operation mode control unit, in the case of the first operation mode, a part of the instruction from the instruction buffer unit is sent to the first instruction execution unit. And an instruction consisting of the remaining part of the instruction and the NOP instruction from the NOP instruction generation means to the second instruction execution unit. And in the second operation mode, an instruction supply means for supplying a part or all of the instructions from the instruction buffer means to the second instruction execution section. The features.
本発明によれば、拡張命令によって複数のプロセッサを並列動作させる並列プロセッサにおいて、動作させないプロセッサに供給する無操作(NOP)命令を命令メモリに埋め込むことを不要とするとともに、並列動作時の拡張命令の命令長を可変とすることで高い処理性能が必要な関数の処理では複数のプロセッサを並列動作させることができ、また他の関数では、必要に応じた数のプロセッサを並列動作させるような命令長の命令を選択してプログラムを記述したことで、命令メモリの利用効率の高い並列プロセッサを提供することができる。 According to the present invention, in a parallel processor in which a plurality of processors are operated in parallel by an extension instruction, it is not necessary to embed a no-operation (NOP) instruction to be supplied to a processor that is not operated in the instruction memory, and an extension instruction during parallel operation In the processing of functions that require high processing performance by making the instruction length variable, multiple processors can operate in parallel, and in other functions, instructions that operate as many processors as necessary in parallel By selecting a long instruction and describing a program, it is possible to provide a parallel processor with high instruction memory utilization efficiency.
以下、本発明の実施例を説明する。 Examples of the present invention will be described below.
本発明の第1の実施例を、図1乃至図6を参照して説明する。 A first embodiment of the present invention will be described with reference to FIGS.
図1は、第1の実施例に係る並列プロセッサを内蔵したプロセッサのブロック図である。図2は、並列プロセッサを動作させる「拡張命令」の命令フォーマットを示す図である。図3は、「拡張命令」を含む命令列を示す図である。図4は、命令メモリ上の「拡張命令」の配置状況を示す図である。図5は、パイプラインプロセッサのステージ構成を示す図である。図6は命令フェッチ・命令供給ユニットの構成を示すブロック図である。 FIG. 1 is a block diagram of a processor incorporating a parallel processor according to the first embodiment. FIG. 2 is a diagram showing an instruction format of an “extended instruction” for operating the parallel processor. FIG. 3 is a diagram illustrating an instruction sequence including an “extended instruction”. FIG. 4 is a diagram showing a state of arrangement of “extension instructions” on the instruction memory. FIG. 5 is a diagram showing a stage configuration of the pipeline processor. FIG. 6 is a block diagram showing the configuration of the instruction fetch / instruction supply unit.
図1に示すプロセッサ1は、命令メモリ100を内蔵し、例えばコアプロセッサ200とコプロセッサ#1(300)とコプロセッサ#2(400)とから構成される並列プロセッサである。そして、コアプロセッサ200が単独で動作するコア動作モードと、コアプロセッサ200とコプロセッサ#1(300)およびまたはコプロセッサ#2(400)が連携して、1つのVLIWプロセッサとして動作するVLIW(並列)動作モードを有する。
The
命令メモリ100は、コアプロセッサ200がデコードし実行する「基本命令」と、コアプロセッサ200とコプロセッサ#1(300)およびまたはコプロセッサ#2(400)がデコードし実行する「拡張命令」から構成される(オブジェクト)プログラムを記憶する。プログラムは、図示しないがプロセッサ1に接続された外部記憶装置から命令メモリ100に適宜ロードされる。
The
コアプロセッサ200は、命令メモリ100へ次に実行する命令のメモリアドレスを出力して命令を読込み(フェッチ)、読込んだ命令をコアプロセッサ200とコプロセッサ#1(300)およびまたはコプロセッサ#2(400)に供給する命令フェッチ・命令データ供給ユニット500と、命令フェッチ・命令データ供給ユニット500の動作制御情報を記憶する制御情報記憶部600と、読込んだ命令をデコード実行するデコード実行部700とからなるパイプライン構成のプロセッサである。
The
命令フェッチ・命令データ供給ユニット500は、次に実行する命令のメモリアドレスを生成または選択して命令メモリ100に出力して命令を読込む。この時、制御情報記憶部600からの制御情報がコア動作モードであれば命令メモリ100から読込む命令は「基本命令」であり、コアプロセッサ200のデコード実行部700に「基本命令」を供給する。
The instruction fetch / instruction
また、制御情報記憶部600からの制御情報が並列動作モードであれば、命令メモリ100から読込む前記制御情報で指定されるサイズ(長さ)の命令は「拡張命令」であり、その「拡張命令」のコプロセッサ用の命令フィールド(コプロ)の内容に基づく命令をコプロセッサ#1(300)のデコード実行部710およびまたはコプロセッサ#2(400)のデコード実行部720に供給する。同時に、当該「拡張命令」にコアプロセッサ200用の命令フィールド(コア)が含まれれば、その命令フィールドの内容に基づく命令をコアプロセッサ200のデコード実行部700に供給する。
If the control information from the control information storage unit 600 is the parallel operation mode, the instruction of the size (length) specified by the control information read from the
制御情報記憶部600には、デコード実行部700で実行された命令によって設定されるプロセッサ1の動作モードや、コアプロセッサ200やコプロセッサ#1(300)およびまたは#2(400)で実行される拡張命令の命令長の制御情報が記憶され、プロセッサ1の命令読出し動作において命令フェッチ・命令データ供給ユニット500に制御情報を出力する。なお、電源投入やリセット信号などで制御情報記憶部600の記憶内容は初期化されて、基本命令を読込み実行するコア動作モードの制御情報を出力するが、割込み信号などに基づく割込み処理で記憶内容が初期化される場合は、制御情報記憶部600の記憶内容が図示していない特定の記憶部に保存されて、割込み処理からの復帰が可能なように構成されている。
The control information storage unit 600 is executed by the operation mode of the
デコード実行部700は、命令フェッチ・命令データ供給ユニット500から供給される命令をデコードし実行する。この命令には、一般的な組込みプロセッサが有する命令が含まれていて、デコード実行部700は、プロセッサ1内に設けられているデータポートやデータメモリとの間の読出しや書込みやデータ演算処理などを行う。それ以外に、プロセッサ1のプログラム処理順序や処理状態を制御する各種レジスタやフラグなどの記憶部との間の読出しや書込み等を行う。
The
コプロセッサ#1(300)のデコード実行部710とコプロセッサ#2(400)のデコード実行部720は、コアプロセッサ200の命令フェッチ・命令データ供給ユニット500から供給される命令をデコードし実行する。このような構成とすることで、プロセッサ1は、プロセッサ1が実装される機器の用途に適した特定のデータ処理を実行する(例えば、データ処理を高速、高精度、低消費電力で実現するような回路を有するコプロセッサを用いて)プロセッサを実現する。
The
なお、図示しないが、コプロセッサ#1(300)およびまたは#2(400)は、コアプロセッサ200へ割込みなどの信号を出力する他に、コアプロセッサ200からコプロセッサ#1(300)およびまたは#2(400)内のレジスタなどへのデータ入出力が可能なバスで接続されている。また、以下の説明では各コプロセッサは32ビット長の命令を読込み動作するものとする。
Although not shown, the coprocessor # 1 (300) and / or # 2 (400) outputs a signal such as an interrupt to the
図2に示す命令メモリ100に記憶される「拡張命令」の命令フォーマットは、命令長が異なるタイプと、命令フィールド構成が異なるタイプとが存在する。例えば、命令F1a(800)と命令F2a(810)は、命令長が32ビットの拡張命令フォーマットである。また、命令F1b(820)と命令F2b(830)は、命令長が64ビットの拡張命令フォーマットである。
The instruction format of the “extended instruction” stored in the
さらに、命令F1a(800)と命令F1b(820)の拡張命令フォーマットは、「コア」命令フィールドと「コプロ」命令フィールドによって構成されていて、この内の「コア」命令フィールドにコアプロセッサ200がデコード実行する命令がセットされる。これにより、コアプロセッサ200とコプロセッサ#1(300)およびまたは#2(400)とで同時並列にデータ処理などを行わせることができる。
Further, the extended instruction format of the instruction F1a (800) and the instruction F1b (820) includes a “core” instruction field and a “co-pro” instruction field, and the
これに対し、命令F2a(810)と命令F2b(830)の拡張命令フォーマットは、「コプロ」命令フィールドのみで構成されていて、そのフィールドにコプロセッサ#1(300)のデコード実行部710およびまたはコプロセッサ#2(400)のデコード実行部720でデコードし実行される命令がセットされる。
On the other hand, the extended instruction format of the instruction F2a (810) and the instruction F2b (830) includes only a “co-pro” instruction field, and the
次に、図6に示す命令フェッチ・命令データ供給ユニット500の詳細な構成について説明する。命令フェッチ・命令データ供給ユニット500は、プログラムカウンタ510、メモリ要求制御ユニット520、命令バッファ530、命令データ供給ユニット540、NOP命令生成回路550、命令長・動作モード制御回路560、加算回路570、選択回路580等から構成されている。
Next, a detailed configuration of the instruction fetch / instruction
プログラムカウンタ510は、プロセッサ1が次に読出す命令のアドレスを記憶していて命令メモリ100と加算回路570に読出しアドレスを出力する。メモリ要求制御ユニット520は、プロセッサ1の命令フェッチ動作において、命令メモリ100へ命令フェッチ要求を出力する。なお、プロセッサ1では命令フェッチ動作において、制御ユニットや信号の図示を省略するが命令バッファ530が命令メモリ100から読出された命令を入力し、プログラムカウンタ510が選択回路580の出力を次の読み出すアドレスとして入力するように制御される。命令バッファ530は、命令メモリ100から読込んだ命令を保持し命令データ供給ユニット540に出力する。NOP命令生成回路550は、生成したNOP命令を命令データ供給ユニット540に出力する。
命令データ供給ユニット540は、命令バッファ530から入力した命令およびまたはNOP命令生成回路550からのNOP命令をコアプロセッサ200、コプロセッサ#1(300)およびまたは#2(400)に出力する。命令長・動作モード制御回路560は、制御情報記憶部600からの指令に基づいて命令データ供給ユニット540の命令長および動作モードを制御し、また、命令長情報は加算回路570にも出力する。加算回路570は、命令長・動作モード制御回路560からの命令長情報を受けてプログラムカウンタ510のアドレス値に所定値を加算して次の読出しアドレスを生成して選択回路580に出力する。選択回路580は、加算回路570からのアドレスとデコード実行部700から出力される分岐先アドレスが入力され、デコード実行部700から出力される分岐成立情報に基づいて次の読出しアドレスを1つ選択してプログラムカウンタ510に出力する。
The instruction
次に、図3乃至図6を参照しながら、命令メモリ100から読み出した命令を各プロセッサに供給する命令フェッチ・命令データ供給ユニット500の動作の詳細を説明する。
Next, the details of the operation of the instruction fetch / instruction
図3に示すプログラムシーケンスを構成するプログラムは、「基本命令」または「拡張命令」を用いて記述され、プロセッサ1のコアプロセッサ200とコプロセッサ#1(300)およびまたは#2(400)で実行処理される。
The programs constituting the program sequence shown in FIG. 3 are described using “basic instructions” or “extended instructions” and executed by the
なお、このプログラムの「基本命令2」は、命令で指定するレジスタの内容が分岐先アドレスであり、動作モードをコア動作モードから並列動作モードに変更するサブルーチン分岐命令(JSRV)である。また、分岐先アドレスとなるレジスタの内容の中で分岐先アドレス指定に使用されない最下位ビットを用いて、分岐先アドレスの「拡張命令」の命令長を指定する。即ち、分岐命令の分岐先アドレス中の最下位ビットが「1」の場合、分岐先アドレスの「拡張命令」は64ビット長(図2の命令F1bまたはF2b)のタイプであり、また前記最下位ビットが「0」の場合、分岐先アドレスの「拡張命令」は32ビット長(図2の命令F1aまたはF2a)のタイプである。
The “
更に、このプログラム例では「基本命令2」の分岐先アドレス中の最下位ビットが「1」となるように「基本命令1」より前の命令で設定しているので、分岐先アドレスの「拡張命令1」以降の命令の命令長は64ビットのタイプとなる。
Furthermore, in this program example, since the least significant bit in the branch destination address of “
ここで、分岐命令の分岐先アドレス中の最下位ビットを用いて分岐先の「拡張命令」の命令語長を指定してもプログラム実行で混乱がない理由は、命令メモリ100が8ビット(バイト)単位でアドレスが付与され、最短の命令長の基本命令が16ビットのプロセッサでは、一般的に、命令がロードされるアドレスは偶数番地となるように制限するからで、分岐先アドレスの最下位ビットはアドレス指定で使用されないためである。
Here, even if the instruction word length of the “extended instruction” at the branch destination is specified using the least significant bit in the branch destination address of the branch instruction, the
図4に示す命令メモリ100上の命令の配置の状況は、図3で示したプログラムシーケンスを機械語に変換して、命令メモリ100にロードした時の様子を示す。
The instruction arrangement state on the
次に、「基本命令1」を命令メモリ100から読込む時の動作から説明する。プロセッサ1は、例えば図5(A)に示す5段のパイプライン構成のプロセッサであるとし、さらに説明を簡単にするため、「基本命令1」の読込み時にデコード実行部700で実行されている命令と図3に示される「基本命令2」以外の「基本命令」および「拡張命令」は、分岐動作を伴う命令でなく、また、以下の動作説明の期間に割込みなども発生しないものとする。
Next, the operation when the “
図5(A)の第1のサイクルで、命令フェッチ・命令データ供給ユニット500のプログラムカウンタ510にアドレス値「0x100」(0xは16進表示であることを示す)がセットされ、このプログラムカウンタ510のアドレス値が命令メモリ100に出力され、続いてメモリ要求制御ユニット520から命令メモリ100へ読出し信号がフェッチ要求として出力される。
In the first cycle of FIG. 5A, an address value “0x100” (0x indicates hexadecimal display) is set in the
これにより命令メモリ100は、0x100番地の内容を命令バッファ530に出力し、命令バッファ530は「基本命令1」を読込む。
As a result, the
次に、命令データ供給ユニット540は、この時制御情報記憶部600から出力される動作モード情報がコア動作モードであるため、命令バッファ530に読込まれた「基本命令1」を、コアプロセッサ200のデコーダ実行部700に供給するとともに、NOP命令生成回路550で生成されたNOP命令(無操作命令)をコプロセッサ#1(300)のデコード実行部710およびコプロセッサ#2(400)のデコード実行部720に供給する。
Next, since the operation mode information output from the control information storage unit 600 at this time is the core operation mode, the instruction
命令長・動作モード制御回路560は、「基本命令1」を読込む時、動作モードがコア動作モードで、かつ「基本命令1」の命令長が16ビット(2バイト)であるため、加算回路570へ「2」を加える命令長情報を出力する。そして、加算回路570でプログラムカウンタ510のアドレス値に「2」を加えたアドレス値「0x102」が生成される。このアドレス値は、デコード実行部700で実行されている命令が分岐命令でないので選択回路580を介してプログラムカウンタ510に入力され、命令バッファ530への「基本命令1」の読込み動作とともにプログラムカウンタ510に書込まれ、次に読込む命令のメモリアドレスとして命令メモリ100に出力される。
When reading “
次に、図5(A)の第2サイクルで、第1サイクルと同様に、命令メモリ100の「0x102」番地から命令バッファ530に読込まれた「基本命令2」は命令フェッチ・命令データ供給ユニット500から、コアプロセッサ200のデコーダ実行部700に供給されるとともに、NOP命令生成回路550で生成されたNOP命令をコプロセッサ#1(300)のデコード実行部710およびコプロセッサ#2(400)のデコード実行部720に供給される。また同様に加算回路570で生成されたアドレス値「0x104」は、デコード実行部700でデコードされ実行されている「基本命令1」が分岐命令でないので選択回路580を介してプログラムカウンタ510にセットされ、そのアドレス値が命令メモリ100に出力される。
Next, in the second cycle of FIG. 5A, as in the first cycle, “
次に、図5(A)の第3サイクルで、命令メモリ100の「0x104」番地から命令バッファ530に読込まれた「基本命令3」は命令フェッチ・命令データ供給ユニット500から、コアプロセッサ200のデコーダ実行部700に供給されるとともに、NOP命令生成回路550で生成されたNOP命令をコプロセッサ#1(300)のデコード実行部710およびコプロセッサ#2(400)のデコード実行部720に供給される。同時に、デコード実行部700は第2サイクルで読込まれた「基本命令2」(JSRV)を、デコード(命令解釈)し実行する。
Next, in the third cycle of FIG. 5A, “
この「基本命令2」(JSRV)は、条件分岐命令でなく分岐が成立する分岐命令であるので、デコード実行部700は、基本命令2が指定するレジスタ(通常コアプロセッサ200の汎用レジスタ)に記憶された値(ここでは「0x409」とする)を分岐先アドレスとし、分岐成立であることを分岐成立情報として命令フェッチ・命令データ供給ユニット500に出力する。この時選択回路580は、分岐先アドレスとしてレジスタの値「0x409」の最下位ビットを「0」としたアドレス値「0x408」が入力され、選択回路580の選択制御入力には分岐成立が入力される。これにより選択回路580は、次の読出しアドレスとして分岐先アドレス「0x408」をプログラムカウンタ510に出力する。分岐先アドレス「0x408」は、命令バッファ530への「基本命令3」の読込み動作とともにプログラムカウンタ510に書込まれ、次に読込む命令のメモリアドレスとして命令メモリ100に出力される。また、制御情報記憶部600の動作モードの制御情報はコア動作モードから並列動作モードに変更されるとともに、制御情報記憶部600の命令長制御情報にはレジスタに記憶された分岐先アドレスの最下位ビットの値(ここでは「1」)が書込まれる。
Since this “
分岐が成立する分岐命令が実行されたので、第3サイクルで命令メモリ100から読込まれデコード実行部700に供給された「基本命令3」のパイプライン動作は、キャンセル(破棄)される。また、このサブルーチン分岐命令は、サブルーチンからの復帰の動作が正常に行えるよう、サブルーチン命令の実行において一般的に知られた動作であるプログラムカウンタ510のアドレス値などの保存動作を行う他に、サブルーチン分岐命令実行時の動作モードと命令長の情報の保存動作も行なう。サブルーチンからの復帰動作は復帰命令(RET)で行ない、この復帰命令は、プログラムカウンタ510に保存したアドレス値を設定するなどの一般的に知られた復帰動作の他に、制御情報記憶部600に保存した動作モードと命令長の情報を設定する。このようにすることで、復帰動作後に実行するサブルーチン分岐命令の直後の命令は、サブルーチン分岐命令実行時の動作モード、命令長で実行される。
Since the branch instruction that establishes the branch is executed, the pipeline operation of “
次に、第4サイクルで、命令フェッチ・命令データ供給ユニット500は、第3サイクルで設定された命令長64ビットの並列動作モードで動作して、命令メモリ100の「0x408」番地からの「拡張命令1」を命令バッファ530に読込む。この読込んだ「拡張命令1」の命令フォーマットは図2のF1bタイプであるので、命令データ供給ユニット540は、16ビット長の「コア」フィールドに基づく命令を、コアプロセッサ200のデコード実行部700に供給するとともに、48ビット長の「コプロ」フィールドに基づく命令を、コプロセッサ#1(300)のデコード実行部710およびコプロセッサ#2(400)のデコード実行部720に供給する。
Next, in the fourth cycle, the instruction fetch / instruction
ここで、前記命令データ供給ユニット540は、制御情報記憶部600からの命令長と動作モードの制御情報に基づき、命令バッファ530から読込んだ命令を命令供給制御に必要な範囲でデコード(解釈)し、読込んだ命令の命令フィールドとNOP命令生成回路550の出力とを組み合わせて命令データを生成する機能があり、デコード回路および選択(セレクタ)回路から構成されている。
Here, the instruction
前記「拡張命令1」は、コプロセッサ#1(300)とコプロセッサ#2(400)にそれぞれ個別に命令を指定するタイプの命令のため、命令データ供給ユニット540は、「コプロ」フィールドの上位24ビットにNOP命令生成回路550からの8ビットのNOP命令(全て「0」)を付加して、32ビット長の命令データを生成してコプロセッサ#1(300)に供給する。同様に、「コプロ」フィールドの下位24ビットに8ビットのNOP命令を付加して32ビット長の命令データを生成してコプロセッサ#2(400)に供給する。
The “
次に、第4サイクルで「拡張命令1」を読込む時、制御情報記憶部600には次の動作モードが並列動作モードで命令長が64ビット(8バイト)であることが記憶されている。これを受けて命令長・動作モード制御回路560は、加算回路570に「8」を加算する命令長情報を出力する。これにより、加算回路570は、プログラムカウンタ510からのアドレス値に「8」を加えたアドレス値「0x410」を生成し、選択回路580を介してプログラムカウンタ510にセットする。そして、命令バッファ530への「拡張命令1」の読込み動作とともに、プログラムカウンタ510から次に読込む命令のメモリアドレスとして命令メモリ100に出力される。
Next, when “
次に、第5サイクルで第4サイクルと同様に、命令フェッチ・命令データ供給ユニット500が動作して命令メモリ100の「0x410」番地から「拡張命令2」が命令バッファ530に読込まれる。読込んだ「拡張命令2」の命令フォーマットが、図2のF2bタイプであるので、命令データ供給ユニット540は、NOP命令生成回路550からの16ビット長のNOP命令をコアプロセッサ200のデコード実行部700に供給するとともに、64ビット長の「コプロ」フィールドに基づく2つの命令をそれぞれコプロセッサ#1(300)、#2(400)のデコード実行部710、720に供給する。
Next, in the fifth cycle, as in the fourth cycle, the instruction fetch / instruction
即ち「拡張命令2」は、コプロセッサ#1(300)とコプロセッサ#2(400)にそれぞれ個別に命令を指定するタイプの命令のため、命令データ供給ユニット540は、64ビットの「コプロ」フィールドの上位32ビットを命令データとしてコプロセッサ#1(300)に供給し、その下位32ビットを命令データとしてコプロセッサ#2(400)に供給する。
That is, since the “
次に、第5サイクルの「拡張命令2」を読込む時、制御情報記憶部600には動作モードが並列動作モードで命令長が8バイトであることが記憶されている。これを受けて命令長・動作モード制御回路560は、加算回路570に「8」を加える命令長情報を出力する。これにより加算回路570は、プログラムカウンタ510のアドレス値に「8」を加えたアドレス値「0x418」を生成し選択回路580を介してプログラムカウンタ510にセットする。そして、命令バッファ530への「拡張命令2」の読込み動作とともに、プログラムカウンタ510から次に読込む命令のメモリアドレスが命令メモリ100に出力される。
Next, when the “
次に、第6サイクルで第4サイクルと同様に、命令フェッチ命令・データ供給ユニット500が動作して、命令メモリ100の「0x418」番地から「拡張命令3」が命令バッファ530に読込まれる。読込んだ「拡張命令3」の命令フォーマットが、図2のF1bタイプであるので、命令データ供給ユニット540は、16ビット長の「コア」フィールドに基づく命令を、コアプロセッサ200のデコード実行部700に供給するとともに、48ビット長の「コプロ」フィールドに基づく命令を、コプロセッサの#1(300)、#2(400)のデコード実行部710、720に供給する。
Next, in the sixth cycle, as in the fourth cycle, the instruction fetch instruction /
前記「拡張命令3」は、「拡張命令1」と同様に、コプロセッサ#1(300)とコプロセッサ#2(400)にそれぞれ個別に命令を指定するタイプの命令のため、命令データ供給ユニット540は、「コプロ」フィールドの上位24ビットにNOP命令生成回路550からの8ビットのNOP命令パターンを付加して、32ビット長の命令データを生成してコプロセッサ#1(300)に供給する。同様に、「コプロ」フィールドの下位24ビットに8ビットのNOP命令パターンを付加して、32ビット長の命令データを生成してコプロセッサ#2(400)に供給する。
The “
上述では、並列動作モード時の各プロセッサへの命令供給状況を64ビット長の「拡張命令」を用いた例で説明したが、プロセッサ1は、「基本命令2」の分岐命令JSRVの分岐アドレスの最下位ビットを「0」として、32ビット長の「拡張命令」を用いて並列動作プログラムを作成することができる。
In the above description, the instruction supply status to each processor in the parallel operation mode has been described by using the example of the 64-bit “extended instruction”. However, the
32ビット長の「拡張命令」が読込まれる時、命令フェッチ・命令データ供給ユニット500は、図2に示すF1aタイプまたはF2aタイプから「コプロ」フィールドが16ビット長または32ビット長であると判断する。したがって、命令フェッチ・命令データ供給ユニット500は、16ビット長の時はNOP命令生成回路550からの16ビットのNOP命令パターンを付加し、32ビット長の時はその32ビットの命令をコプロセッサの一方(例えば、コプロセッサ#1(300))に供給し、他方のコプロセッサ(例えば、コプロセッサ#2(400))にNOP命令生成回路550からの32ビットのNOP命令を供給するように動作する。
When a 32-bit “extended instruction” is read, the instruction fetch / instruction
上述の説明では、プロセッサ1の動作モードを変更する命令としてサブルーチン分岐命令を用いている。これは、以下のようなプログラムシーケンス列において、動作モード変更を分岐命令でない命令1で行わせると問題が生じるからである。
In the above description, a subroutine branch instruction is used as an instruction for changing the operation mode of the
: :
命令1 基本命令
命令2 基本命令
命令3 拡張命令
命令4 拡張命令
: :
上記プログラムシーケンス例で、例えば5段のパイプライン構成のプロセッサでは、上述の説明と同様に第1サイクルで読込まれた「命令1」の基本命令が第2サイクルでデコードされ実行されて動作モード制御レジスタ書込まれるが、命令の読込み動作モードが切り替わるのは第3サイクルからとなる。第2サイクルで読込まれる「命令2」は、基本命令として読込まれ、続く第3サイクルにおいて「命令3」が拡張命令として読込まれて、第4サイクルに「命令3」がコプロセッサを含めてデコードされ並列動作が行われる。
::
In the example of the above program sequence, for example, in a processor having a five-stage pipeline configuration, the basic instruction of “
しかしながら、パイプライン構成のプロセッサでは性能向上のため、パイプラインステージ数を増加させることが行われる。例えば、メモリアクセスに時間を要するシステムで用いられるプロセッサでは、パイプラインステージ構成を図5(A)の5段構成から図5(B)に示すような7段構成としてサイクルタイムを短くして性能向上が図られる。 However, in a pipelined processor, the number of pipeline stages is increased to improve performance. For example, in a processor used in a system that requires time for memory access, the pipeline stage configuration is changed from a five-stage configuration shown in FIG. 5A to a seven-stage configuration shown in FIG. Improvement is achieved.
低速のメモリを用いるために、プロセッサのパイプライン構成を7段構成に変更すると、5段構成のパイプラインプロセッサとは異なり、第1サイクルで読込まれた動作モード変更命令の「命令1」がデコードされ実行されるのは第3サイクルであり、動作モードが変更されるのは、第4サイクルからとなる。このため、第3サイクルで読込まれる「命令3」は、拡張命令ではなく基本命令として読込まれることになり、オブジェクトレベルでの互換性が失われる問題が生じる。
If the processor pipeline configuration is changed to a seven-stage configuration in order to use a low-speed memory, unlike the five-stage pipeline processor, “
上述した第1の実施例のように、動作モード変更をサブルーチン分岐命令で行わせるようにすることで、並列動作制御プログラム部分を関数のように記述することができて、プログラム記述の見通しが良くなるだけでなく、オブジェクトレベルでの互換性を維持することができる。 As in the first embodiment described above, the operation mode is changed by the subroutine branch instruction, so that the parallel operation control program part can be described like a function and the prospect of program description is good. In addition, compatibility at the object level can be maintained.
更にまた、以上のように命令が供給されて並列プロセッサが動作するため、並列プロセッサで無操作のプロセッサに対応したNOP命令を命令メモリに配置する必要がなく、さらに、複数のコプロセッサを同時並列に動作させて、高い処理性能が要求されるプログラムと一方のコプロセッサを動作させることで処理性能が達成できるプログラムが混在する時に、適切な命令長の拡張命令を選択してプログラムを記述できるので、命令メモリの利用効率の高い並列プロセッサを提供できる。 Furthermore, since instructions are supplied as described above and the parallel processor operates, it is not necessary to place a NOP instruction corresponding to a non-operating processor in the parallel processor in the instruction memory, and a plurality of coprocessors can be simultaneously parallelized. When a program that requires high processing performance and a program that can achieve processing performance by operating one coprocessor are mixed, the program can be described by selecting an extension instruction with an appropriate instruction length. A parallel processor with high instruction memory utilization efficiency can be provided.
なお、上記説明では、分岐命令の分岐先アドレス中の最下位ビットで、分岐先の「拡張命令」の命令長を指定するとしたが、命令長を指定する分岐命令(例えば、32ビット長の場合はJSRV32、64ビット長の場合はJSRV64)を定義して、分岐先の「拡張命令」の命令長を指定するようにしてもよい。 In the above description, the least significant bit in the branch destination address of the branch instruction specifies the instruction length of the branch destination “extended instruction”. However, a branch instruction that specifies the instruction length (for example, a 32-bit length) May be defined as JSRV32, or JSRV64 in the case of a 64-bit length, and specify the instruction length of the “extended instruction” at the branch destination.
更になお、上記説明では、64ビット長の拡張命令のコプロフィールドを2つのコプロセッサに供給する時、「コプロ」フィールドを均等に分割して、不足部分はNOP命令パターンを付加してそれぞれ32ビット長の命令を供給するとしたが、コプロセッサ#1(300)とコプロセッサ#2(400)の処理機能や命令指定内容などに応じて「コプロ」フィールドを異なる長さに分割して必要な長さの各コプロセッサ用の命令を生成して供給するようにしてもよい。また、32ビット長の拡張命令の場合、一方のコプロセッサに動作指定命令を供給するとしたが、「コプロ」フィールドを分割して、2つのコプロセッサにそれぞれ命令として供給してもよく、更にまた2つのコプロセッサに個別の命令を供給するとしたが、2つのコプロセッサに同じ内容の命令を供給するようにしてもよい。 Furthermore, in the above description, when supplying a co-profile of a 64-bit extended instruction to two co-processors, the “co-pro” field is divided evenly, and the NOP instruction pattern is added to the shortage portion to 32 bits each. Although a long instruction is supplied, the “co-pro” field is divided into different lengths according to the processing functions of the coprocessor # 1 (300) and the coprocessor # 2 (400), the instruction designation contents, etc. The instructions for each coprocessor may be generated and supplied. In the case of an extended instruction having a 32-bit length, an operation designation instruction is supplied to one coprocessor. However, the “co-pro” field may be divided and supplied to two coprocessors as instructions. Although individual instructions are supplied to the two coprocessors, instructions having the same contents may be supplied to the two coprocessors.
次に、本発明の第2の実施例に係る並列プロセッサを、図7乃至図9を参照して説明する。図7は、第2の実施例に係るプロセッサ2のブロック図である。図8は、その命令フェッチ・命令供給ユニット501の構成を示すブロック図である。図9は、制御情報記憶部601に設定される命令供給パターン情報の構成を示す図である。
Next, a parallel processor according to a second embodiment of the present invention will be described with reference to FIGS. FIG. 7 is a block diagram of the
図8に示す第2の実施例に係る命令フェッチ・命令供給ユニット501においては、上記第1の実施例に係るプロセッサ1の命令フェッチ・命令データ供給ユニット500と同一部分には同一符号を付し、詳細な説明を省略する。
In the instruction fetch /
この第2の実施例のプロセッサ2と命令フェッチ・命令データ供給ユニット501が、第1の実施例のプロセッサ1と命令フェッチ・命令データ供給ユニット500と異なる点は、制御情報記憶部601に命令供給パターン情報を記憶しておき、制御情報記憶部601から命令フェッチ・命令データ供給ユニット500に命令長、動作モード情報に加えて命令供給パターン情報が出力される構成としている点である。即ち、命令長・動作モード・命令供給パターン制御回路561から命令データ供給ユニット541に命令長、動作モード情報に加えて命令供給パターン情報が入力される。
The difference between the
このプロセッサ2では、並列動作モードとなる以前の命令で、制御情報記憶部601に命令供給パターン情報を設定する。命令供給パターン情報は、図9に示すようにコプロセッサ毎に2ビット長フィールドから構成される。並列動作モード時、命令データ供給ユニット541は、拡張命令の「コプロ」フィールドの値を命令供給パターンに従って命令として構成して、コプロセッサ#1(300)のデコード実行部710、およびコプロセッサ#2(400)のデコード実行部720に供給する。
In the
例えば、各コプロセッサに対応した命令供給パターンが「00」である時は、NOP命令生成回路550で生成されたNOP命令がそれぞれのコプロセッサのデコード実行部に供給される。また、各コプロセッサに対応した命令供給パターンが「01」である時は、拡張命令の「コプロ」フィールドの分割された後半のパターンと不足のビット数のNOP命令パターンから構成される命令が各コプロセッサのデコード実行部に供給される。また、各コプロセッサに対応した命令供給パターンが「10」である時は、拡張命令の「コプロ」フィールドの分割された前半のパターンと不足のビット数のNOP命令パターンから構成される命令が各コプロセッサのデコード実行部に供給される。また、各コプロセッサに対応した命令供給パターンが「11」である時は、拡張命令の「コプロ」フィールド全体と不足のビット数のNOP命令パターンから構成される命令が各コプロセッサのデコード実行部に供給されるように命令データ供給ユニット541が制御される。
For example, when the instruction supply pattern corresponding to each coprocessor is “00”, the NOP instruction generated by the NOP
このように、コプロセッサ#1(300)およびコプロセッサ#2(400)への命令供給を柔軟に制御できるため、拡張命令は、内蔵したコプロセッサの個数分のコプロフィールドを設ける必要がなくなり、更にどちらか一方のコプロセッサを動作させて並列動作させるような場合は、コプロフィールドをそれぞれのコプロセッサ用の命令として使用することができて、命令メモリの利用効率の高い並列プロセッサを提供できる。 As described above, since the instruction supply to the coprocessor # 1 (300) and the coprocessor # 2 (400) can be flexibly controlled, it is not necessary to provide coprofiles corresponding to the number of built-in coprocessors. Further, when either one of the coprocessors is operated and operated in parallel, the coprofiled can be used as an instruction for each coprocessor, and a parallel processor with high use efficiency of the instruction memory can be provided.
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々、変形して実施できることは勿論である。 The present invention is not limited to the above-described embodiments, and it is needless to say that various modifications can be made without departing from the spirit of the invention.
例えば、無操作のプロセッサにNOP命令生成して供給するのではなく、命令実行を停止させる信号を供給するようにしてもよい。このようにすれば、命令メモリの利用効率が高いだけでなく、コプロセッサへの命令供給回路およびデコード回路などの動作を停止させることができて、低消費電力のプロセッサを提供できる。 For example, a signal for stopping instruction execution may be supplied instead of generating and supplying a NOP instruction to a non-operating processor. In this way, not only the use efficiency of the instruction memory is high, but also the operation of the instruction supply circuit, the decode circuit, etc. to the coprocessor can be stopped, and a low power consumption processor can be provided.
1、2 並列プロセッサ
100 命令メモリ
200 コアプロセッサ
300 コプロセッサ#1
400 コプロセッサ#2
500、501 命令フェッチ・命令データ供給ユニット
510 プログラムカウンタ
520 メモリ要求制御ユニット
530 命令バッファ
540、541 命令データ供給ユニット
550 NOP命令生成回路
560 命令長・動作モード制御回路
561 命令長・動作モード・命令供給パターン制御回路
570 加算回路
580 選択回路
600、601 制御情報記憶部
700、710、720 デコード実行部
1, 2
400
500, 501 Instruction fetch / instruction
Claims (5)
前記第1のプロセッサに設けられる第1の命令実行部および命令フェッチ供給部と、
前記第2のプロセッサに設けられる第2の命令実行部と、
前記第1の命令実行部およびまたは前記第2の命令実行部で実行される命令を記憶する命令メモリとを備え、
前記命令フェッチ供給部は、
前記命令メモリから前記命令を読み出すためのアドレスを指定するカウンタ手段と、
前記命令メモリから読み出した前記命令を保持する命令バッファ手段と、
前記命令メモリの読出し動作に応じて前記第1の命令実行部および前記第2の命令実行部を動作させる第1の動作モードと、前記第2の命令実行部を動作させる第2の動作モードの制御情報を出力する動作モード制御手段と、
所定ビット長のNOP命令を生成するNOP命令生成手段と、
前記動作モード制御手段からの前記動作モードの制御情報に基づいて、前記第1の動作モードの場合は、前記第1の命令実行部に前記命令バッファ手段からの前記命令の一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給するとともに、前記第2の命令実行部に前記命令の残りの一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給し、前記第2の動作モードの場合は、前記命令バッファ手段からの前記命令の一部又は全部を前記第2の命令実行部に供給する命令供給手段と
を具備することを特徴とする並列プロセッサ。 A parallel processor configured by at least a first processor and a second processor, and executing pipeline processing of instructions executed by the processors in parallel in the same cycle;
A first instruction execution unit and an instruction fetch supply unit provided in the first processor;
A second instruction execution unit provided in the second processor;
An instruction memory for storing instructions executed by the first instruction execution unit and / or the second instruction execution unit;
The instruction fetch supply unit
Counter means for designating an address for reading the instruction from the instruction memory;
Instruction buffer means for holding the instruction read from the instruction memory;
A first operation mode for operating the first instruction execution unit and the second instruction execution unit in response to a read operation of the instruction memory; and a second operation mode for operating the second instruction execution unit. Operation mode control means for outputting control information;
NOP instruction generation means for generating a NOP instruction having a predetermined bit length;
Based on the control information of the operation mode from the operation mode control means, in the case of the first operation mode, a part of the instruction from the instruction buffer means and the NOP instruction are sent to the first instruction execution unit. Supplying an instruction comprising the NOP instruction from the generating means, and supplying an instruction comprising the remaining part of the instruction and the NOP instruction from the NOP instruction generating means to the second instruction execution unit; In the second operation mode, a parallel processor comprising: an instruction supply means for supplying a part or all of the instructions from the instruction buffer means to the second instruction execution unit.
分岐命令により前記動作モード制御手段の前記制御情報を設定し、前記分岐命令により規定される分岐先アドレスの一部に含まれる命令長を指定する情報に従って前記第1および第2の動作モードにおける前記命令の命令長を切り替えることを特徴とする請求項1に記載の並列プロセッサ。 The instruction fetch supply unit
The control information of the operation mode control means is set by a branch instruction, and the first and second operation modes in the first and second operation modes according to information specifying an instruction length included in a part of a branch destination address defined by the branch instruction. 2. The parallel processor according to claim 1, wherein the instruction length of the instruction is switched.
分岐先の命令の命令長を指定する分岐命令により前記動作モード制御手段の前記制御情報を設定し、前記分岐命令により指定される命令長を指定する情報に従って前記第1および第2の動作モードにおける前記命令の命令長を切り替えることを特徴とする請求項1に記載の並列プロセッサ。 The instruction fetch supply unit
The control information of the operation mode control means is set by a branch instruction that specifies the instruction length of the branch destination instruction, and the first and second operation modes are set according to the information that specifies the instruction length specified by the branch instruction. The parallel processor according to claim 1, wherein the instruction length of the instruction is switched.
前記第1のプロセッサに設けられる第1の命令実行部および命令フェッチ供給部と、
前記第2のプロセッサに設けられる第2の命令実行部と、
前記第3のプロセッサに設けられる第3の命令実行部と、
前記第1の命令実行部、前記第2の命令実行部およびまたは前記第3の命令実行部で実行される命令を記憶する命令メモリとを備え、
前記命令フェッチ供給部は、
前記命令メモリから前記命令を読み出すためのアドレスを指定するカウンタ手段と、
前記命令メモリから読み出した前記命令を保持する命令バッファ手段と、
前記命令メモリの読出し動作に応じて前記第1の命令実行部および前記第2の命令実行部およびまたは前記第3の命令実行部を動作させる第1の動作モードと、前記第2の命令実行部および第3の命令実行部を動作させる第2の動作モードの制御情報を出力する動作モード制御手段と、
所定ビット長のNOP命令を生成するNOP命令生成手段と、
前記動作モード制御手段からの前記動作モードの制御情報に基づいて、前記第1の動作モードの場合は、前記第1の命令実行部に前記命令バッファ手段からの前記命令の一部を供給するとともに、前記第2およびまたは前記第3の命令実行部に前記命令の残りの一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給し、前記第2の動作モードの場合は、前記命令バッファ手段からの前記命令の一部を前記第2の命令処理部に供給し前記命令の残りを前記第3の命令実行部に供給する命令供給手段と
を具備することを特徴とする並列プロセッサ。 A parallel processor configured by at least a first, a second and a third processor and pipelined in parallel in the same cycle for instructions executed by each processor;
A first instruction execution unit and an instruction fetch supply unit provided in the first processor;
A second instruction execution unit provided in the second processor;
A third instruction execution unit provided in the third processor;
An instruction memory for storing instructions executed by the first instruction execution unit, the second instruction execution unit, and / or the third instruction execution unit;
The instruction fetch supply unit
Counter means for designating an address for reading the instruction from the instruction memory;
Instruction buffer means for holding the instruction read from the instruction memory;
A first operation mode for operating the first instruction execution unit and the second instruction execution unit and / or the third instruction execution unit in accordance with a read operation of the instruction memory; and the second instruction execution unit. And an operation mode control means for outputting control information of the second operation mode for operating the third instruction execution unit,
NOP instruction generation means for generating a NOP instruction having a predetermined bit length;
Based on the control information of the operation mode from the operation mode control means, in the case of the first operation mode, a part of the instruction from the instruction buffer means is supplied to the first instruction execution unit. , Supplying the second and / or the third instruction execution unit with an instruction comprising the remaining part of the instruction and the NOP instruction from the NOP instruction generation means, and in the case of the second operation mode, And a command supply means for supplying a part of the instructions from the instruction buffer means to the second instruction processing section and supplying the remainder of the instructions to the third instruction execution section. Processor.
前記第1のプロセッサに設けられた第1の命令実行部および命令フェッチ供給部と、
前記第2のプロセッサに設けられた第2の命令実行部と、
前記第1の命令実行部およびまたは前記第2の命令実行部で実行される命令を記憶する命令メモリとを備え、
前記命令フェッチ供給部は、
前記命令メモリから前記命令を読み出すためのアドレスを指定するカウンタ手段と、
前記命令メモリから読み出した前記命令を保持する命令バッファ手段と、
前記命令メモリの読出し動作に応じて前記第1の命令実行部および前記第2の命令実行部を動作させる第1の動作モードと、前記第2の命令実行部を動作させる第2の動作モードの動作モード制御情報と、前記第1および第2の命令実行部に前記命令を供給する方法を規定するパターン制御情報とを出力する制御手段と、
所定ビット数のNOP命令を生成するNOP命令生成手段と、
前記制御手段からの前記動作モード制御情報および前記パターン制御情報に基づいて、前記第1の動作モードの場合は、前記第1の命令実行部に前記命令バッファ手段からの前記命令の一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給するとともに、前記第2の命令実行部に前記命令の残りの一部と前記NOP命令生成手段からの前記NOP命令とからなる命令を供給し、前記第2の動作モードの場合は、前記命令バッファ手段からの前記命令の一部又は全部を前記第2の命令実行部に供給する命令供給手段と
を具備することを特徴とする並列プロセッサ。 A parallel processor configured by at least a first and a second processor and pipelined in parallel in the same cycle for instructions executed by each processor;
A first instruction execution unit and an instruction fetch supply unit provided in the first processor;
A second instruction execution unit provided in the second processor;
An instruction memory for storing instructions executed by the first instruction execution unit and / or the second instruction execution unit;
The instruction fetch supply unit
Counter means for designating an address for reading the instruction from the instruction memory;
Instruction buffer means for holding the instruction read from the instruction memory;
A first operation mode for operating the first instruction execution unit and the second instruction execution unit in response to a read operation of the instruction memory; and a second operation mode for operating the second instruction execution unit. Control means for outputting operation mode control information and pattern control information defining a method of supplying the instruction to the first and second instruction execution units;
NOP instruction generation means for generating a NOP instruction having a predetermined number of bits;
Based on the operation mode control information and the pattern control information from the control means, in the case of the first operation mode, a part of the instructions from the instruction buffer means and the part of the instructions from the instruction buffer means An instruction consisting of the NOP instruction from the NOP instruction generation means is supplied, and an instruction consisting of the remaining part of the instruction and the NOP instruction from the NOP instruction generation means is supplied to the second instruction execution unit. And in the second operation mode, a parallel processor comprising: an instruction supply means for supplying a part or all of the instructions from the instruction buffer means to the second instruction execution unit. .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005346951A JP2007156557A (en) | 2005-11-30 | 2005-11-30 | Parallel processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005346951A JP2007156557A (en) | 2005-11-30 | 2005-11-30 | Parallel processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007156557A true JP2007156557A (en) | 2007-06-21 |
Family
ID=38240882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005346951A Pending JP2007156557A (en) | 2005-11-30 | 2005-11-30 | Parallel processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007156557A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011034189A (en) * | 2009-07-30 | 2011-02-17 | Renesas Electronics Corp | Stream processor and task management method thereof |
-
2005
- 2005-11-30 JP JP2005346951A patent/JP2007156557A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011034189A (en) * | 2009-07-30 | 2011-02-17 | Renesas Electronics Corp | Stream processor and task management method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0968463B1 (en) | Vliw processor processes commands of different widths | |
US6490673B1 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
JP2816248B2 (en) | Data processor | |
JP4986431B2 (en) | Processor | |
EP2015174B1 (en) | Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
US6950926B1 (en) | Use of a neutral instruction as a dependency indicator for a set of instructions | |
CN108139911B (en) | Conditional execution specification of instructions using conditional expansion slots in the same execution packet of a VLIW processor | |
JP3781519B2 (en) | Instruction control mechanism of processor | |
EP1378824A1 (en) | A method for executing programs on multiple processors and corresponding processor system | |
JP4800582B2 (en) | Arithmetic processing unit | |
JP2009526300A (en) | Instruction set for microprocessors | |
JP2007156557A (en) | Parallel processor | |
US9201657B2 (en) | Lower power assembler | |
US20150095616A1 (en) | Data processor | |
JP2003005954A (en) | Data processor and method for controlling the same | |
JP5068529B2 (en) | Zero-overhead branching and looping in time-stationary processors | |
JPH11282674A (en) | Processor | |
US20110225395A1 (en) | Data processing system and control method thereof | |
JP5644571B2 (en) | Processor | |
JP3729142B2 (en) | Parallel processing unit | |
JP2008040658A (en) | Information processor and method for increasing information processing speed | |
JP2002163104A (en) | Microcomputer | |
JP2004005738A5 (en) | ||
JP2004005738A (en) | Data processor, and instruction set expansion method |