(57)【特許請求の範囲】
【請求項１】
少なくとも２つの独立したプロセス（スレッド）の並行処理のためのデータ処理装置において、
プログラムメモリ（１２）を有しており、該メモリ内には、複数のＮ個の独立したプロセスを伴う少なくとも１つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う複数の命令ユニットに関する情報が含まれており、前記複数の命令ユニットは並列に実行可能であり、
分岐制御ユニット（１１）を有しており、該分岐制御ユニットはプログラムメモリ（１２）に接続され該メモリをアドレス指定するものであり、
フラグおよびデータ記憶用のレジスタ（１８）を有しており、該レジスタ（１８）は実行されるプロセスに依存して切換られており、
プログラムフロー制御ユニット（１０）を有しており、該プログラムフロー制御ユニットは、プログラムメモリ（１２）からの命令ユニットのフェッチを制御し、かつ前記分岐制御ユニット（１１）を制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御され、
Ｎ個のインストラクションバッファ（１３，１４）が、プログラムメモリ（１２）の後方に並列に接続され、このプログラムメモリから読出された命令が記憶され、ここでは１つの命令ユニットがインストラクションバッファ（１３，１４）の一方に読み込まれ、異なるプロセスに対応付けられた第２の命令ユニットは、他方のインストラクションバッファ（１３，１４）に読み込まれ、
インストラクション送出選別器（１５）が設けられており、該インストラクション送出選別器は前記プログラムフロー制御ユニット（１０）に接続されて該制御ユニットにより制御され、この制御によって命令がインストラクションバッファ（１３，１４）から読出され、Ｎ個の命令が並行して出力され、
前記インストラクション送出選別器（１５）は、マルチプレクサ論理回路を含んでおり、前記並行性に関する情報に基づいて、第１のインストラクションバッファ（１３，１４）からの１つの命令と第２のインストラクションバッファ（１３，１４）からの１つの命令とが前記インストラクション送出選別器（１５）を介して選択されるか、若しくは前記２つのインストラクションバッファ（１３，１４）の１つから２つの命令が前記インストラクション送出選別器（１５）を介して選択されるように構成されていることを特徴とするデータ処理装置。
【請求項２】
読出された命令の復号化のためにＮ個の命令デコーダ（１６，１７）が設けられている、請求項１記載のデータ処理装置。
【請求項３】
Ｎ個の復号化された命令の実行のために、少なくとも２つの命令実行ユニット（１９，２０）が設けられている、請求項１または２記載のデータ処理装置。
【請求項４】
少なくとも２つのバス（２１，２２）が設けられており、これらのバスはＮ個の命令実行ユニット（１９，２０）にデータ用のメモリ（２３）を結び付けている、請求項１から３いずれか１項記載のデータ処理装置。
【請求項５】
１つまたは複数のタスクの命令が並行に実行可能である、請求項１から４いずれか１項記載のデータ処理装置。
【請求項６】
前記分岐制御ユニット（１１）は、タスクをアドレス指定するアドレスポインタ（PC0）を出力する、請求項１から５いずれか１項記載のデータ処理装置。
【請求項７】
前記分岐制御ユニット（１１）が、
第１のマルチプレクサ（３１）および第２のマルチプレクサ（３２）と、
加算器（３０）と、
Ｎ個のプログラムカウンタ（３２，３３）を有し、
前記プログラムフロー制御ユニット（１０）によって命令ユニットの複数の命令（３５）が加算器（３０）に供給され、該加算器はアドレスポインタ（ＰＣ０）と複数の命令（３５）を加算し、
プログラムジャンプまたは機能呼出しのためのアドレス（３６）とプロセスナンバ（３７）はプログラムフロー制御ユニット（１０）から第１のマルチプレクサ（３１）に供給され、
第１のマルチプレクサ（３１）を用いて前記加算器（３０）の出力信号か、またはプログラムジャンプないし機能呼出しのためのアドレス（３６）がアクティブプロセスに対応付けられたプログラムカウンタに書き込まれ、
供給されたプロセスナンバ（３７）を介して制御される第２のマルチプレクサ（３４）を介して、目下活動化されているプロセスに対応付けられたプログラムカウンタ（３２，３３）の内容が新たなアドレスポインタ（PC0）として出力される、請求項１から６いずれか１項記載のデータ処理装置。
【請求項８】
前記プログラムフロー制御ユニット（１０）は、サブバス（２５）を介してプログラムメモリ（１２）の出力バス（２４）から、
命令の並行処理実行を示す少なくとも１つのビット、および/または
−後続するインストラクションユニットの長さを示すための少なくとも１つのビット、および/または
−インストラクションユニットにおける１つまたは複数のＮＯＰの標識、および/または
−命令のプロセス優先度、
が供給される、請求項１から７いずれか１項記載のデータ処理装置。
【請求項９】
１つのプロセスは、プログラムメモリにファイルされているプロセスナンバ、優先度、メモリアドレスの割当てによって呼出される、請求項１から８いずれか１項記載のデータ処理装置。
【請求項１０】
前記データ処理装置は、ネットワークプロセッサとしてプロトコル層の第１から第７層の処理のために用いられる、請求項１から９いずれか１項記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、少なくとも２つの独立したプロセス（スレッド）の並行処理のためのデータ処理装置に関している。
【０００２】
【従来の技術】
米国特許 US-A 5,941,983 明細書からは、プログラムメモリを備えた独立したプロセスの並行処理のためのデータ処理装置が公知である。このプログラムメモリ内には、多数の独立したプロセス（スレッド）を伴う少なくとも１つのコンパイラプログラムがファイルされており、このコンパイラプログラムには、並行性と複数のプロセス命令を伴う多数のインストラクションユニットに関する情報が含まれている。
【０００３】
WO 99/21088 A1 明細書からは、フラグおよびデータ記憶用のレジスタを備えたスレッド切換論理回路を有するプロセス並行処理のためのデータ処理装置が公知である。
【０００４】
さらに米国特許 US-A 5,404,469 明細書からは、ネスティング技法を用いたデータ処理装置（マルチスレッドマイクロプロセッサ）が公知である。
【０００５】
データ処理装置ないしプロセッサの処理能力と速度は、周知のようにパイプラインとクロック周波数の引上げによって向上させることが可能である。
【０００６】
またハードウエアコストの引き上げ、つまりプロセッサユニットの多重化によってもデータ処理速度の上昇が可能である。これについては実質的に２つのコンセプトが公知であり、詳細にはマルチプロセッサアーキテクチャと命令レベルでの並行処理“ＩＬＰ”（＝Instruction Level Parallelism）である。今日ではこのＩＬＰが並行処理に対するコンセプトとして十分に浸透している。
【０００７】
ＩＬＰコンセプトに対する一例には、テキサスインストルメント社のＣ６ｘ系のＶＬＩＷ（＝Very Large Instruction Word）アーキテクチャがある。またインテル社やヒューレッドパッカード社のＩＡ６４アーキテクチャは、ＩＬＰコンセプトに基づいている。前述した２つのアーキテクチャにおいては、プログラムコードの翻訳期間中に並行処理が定められている。インテル社はそのＩＡ６４アーキテクチャを“ＥＰＩＣ”（＝Explicit Parallel Instruction Computing）と称している。翻訳の際には若干の所定のフラグが並行性の識別のためにセットされており、それによってプロセッサは、並行処理すべき命令をプログラムの流れの中でいつ出現させ、相応に反応すべきかを容易に識別することができる。さらにこの処理は、例えばパワーＰＣプロセッサの超スカラ型アーキテクチャで用いられている完全な並行処理のような二重に設けられたハードウエア構成よりも低コストである。そこではプログラム経過期間の間にまず並行処理が識別され、それに続いて応答が行われている。いずれにせよＩＬＰに基づくゲインは、データ操作と制御操作固有の依存性に制限される。そのような依存性を回避するためには、高コストな処理、例えばプログラミングの際のデータ操作及び制御装置依存性の考慮などが必要なり、これらのことは開発コスト全体の高コスト化につながる。
【０００８】
公知文献“Simultaneous Multithreading:Maximizing Onchip Parallelism von D.M.Tullsen, S.J. Eggers, H.M. Levy, veroeffentlicht auf den Proceedings of 22nd Annular Int. Symposium for Computer Architectures,  1995”からはチップ面での並行性の最大化のために同時多重系コンセプトが提案されている。これに対しては複数の独立したプロセス（スレッド）、命令シーケンスまたはプログラムフローが超スカラタイププロセッサの多重に存在するユニットへ送出される。同時多重の目的のために、並行処理のフル活用のもとでプロセッサの全てのユニットが同時に最大負荷され、それによって長い待ち時間の影響（これは遅いメモリに起因する）がプロセッサの処理能力を低下させる。
【０００９】
シングルチップマルチプロセッサは、公知文献“A singlechip Multiprocessor von L. Hammond, B.A. Nayfeh, K. Olukotun der 1997 in IEEE-Computer P.79-85”に開示されている。この文献では特にパフォーマンスに関する、同時多重系（ＳＭ）とチップマルチプロセッサ（ＣＭＰ）の間の違いに立ち入っている。さらに急速に高められている集積回路の集積密度に基づいて、マルチプロセッサアーキテクチャを並行処理のために用いることが提案されている。
【００１０】
【発明が解決しようとする課題】
本発明の課題は、少なくとも２つの並行処理の実施が可能でかつその際に必要なハードウエアコストも比較的僅かで済む、データ処理装置ないしプロセッサを提供することである。
【００１１】
前記課題は本発明により、プログラムメモリを有しており、該メモリ内には、複数のＮ個の独立したプロセスを伴う少なくとも１つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う複数の命令ユニットに関する情報が含まれており、前記複数の命令ユニットは並列に実行可能であり、分岐制御ユニットを有しており、該分岐制御ユニットはプログラムメモリに接続され該メモリをアドレス指定するものであり、フラグおよびデータ記憶用のレジスタを有しており、該レジスタは実行されるプロセスに依存して切換られており、プログラムフロー制御ユニットを有しており、該プログラムフロー制御ユニットは、プログラムメモリからの命令ユニットのフェッチを制御し、かつ前記分岐制御ユニットを制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御され、Ｎ個のインストラクションバッファが、プログラムメモリの後方に並列に接続され、このプログラムメモリから読出された命令が記憶され、ここでは１つの命令ユニットがインストラクションバッファの一方に読み込まれ、異なるプロセスに対応付けられた第２の命令ユニットは、他方のインストラクションバッファに読み込まれ、インストラクション送出選別器が設けられており、該インストラクション送出選別器は前記プログラムフロー制御ユニットに接続されて該制御ユニットにより制御され、この制御によって命令がインストラクションバッファから読出され、Ｎ個の命令が並行して出力され、前記インストラクション送出選別器は、マルチプレクサ論理回路を含んでおり、前記並行性に関する情報に基づいて、第１のインストラクションバッファからの１つの命令と第２のインストラクションバッファからの１つの命令とが前記インストラクション送出選別器を介して選択されるか、若しくは前記２つのインストラクションバッファの１つから２つの命令が前記インストラクション送出選別器を介して選択されるように構成されて解決される。
【００１２】
【発明の実施の形態】
本発明の別の有利な実施例は、従属請求項に記載される。
【００１３】
このようなデータ処理装置は有利には、例えば通信分野におけるネットワークプロセッサとして、プロトコル層の第１層から第３層の処理のために、ＬＡＮ/ＡＴＭ（Asynchronous Transfer Mode）スイッチ、ＩＰ（Internet Protocol）ルータ、フレームリレー（これは特にＤＳＬ（Digital Subscriber Line）イーサーネット（商標）、ケーブルモデムに基づく）などに用いられ。特に前述したような適用分野においては種々異なるタスクの処理に対して独立したプロセスが頻繁に生じる。そのような並行して処理されるプロセス（マルチスレッドとも称される）は、通信分野では基本的な適用手段として広く活用されている。プログラミング可能なＩＰ/ＡＴＭインターフェース（Internet Protocol/Asynchronous Transfer Mode-Input/Output-Processing-Unit）では例えば独立したプロセスが、様々なデータ処理の制御んために、または分離したデータシフト操作の制御のために実行される。
【００１４】
しかしながら本発明によるデータ処理装置の使用は、前述したような適用分野に限られるのではなく、並行処理が行われるあらゆる分野での適用が可能である。これに対する例として例えば開ループ制御や閉ループ制御への活用やオフィスやプライベートで用いられる一般的なコンピュータでの適用が挙げられる。特に一般的な複数のプロセッサが高いパフォーマンスで並行処理を行うようなケースでは有利となる。
【００１５】
本発明は、少なくとも２つの独立したプロセス（スレッド）の並行処理のためのデータ処理装置において、
プログラムメモリを有し、該メモリ内には、Ｎ個の多数の独立したプロセスを伴う少なくとも１つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う多数のインストラクションユニットに関する情報が含まれており、
分岐制御ユニットを有し、該分岐制御ユニットはプログラムメモリをアドレス指定するものであり、
フラグおよびデータ記憶用のレジスタを有しており、該レジスタは実行されるプロセスに依存して切換られており、
プログラムフロー制御ユニットを有しており、該プログラムフロー制御ユニットは、プログラムメモリからのインストラクションユニットのフェッチを制御し、かつ前記分岐制御ユニットを制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御するように構成されていることを特徴としている。
【００１６】
この本発明の基本的な考察は、独立して並行して実行される処理におけるデータ及びコマンドへの依存性が、個々のプログラムフロー（シングルシーケンシャルプログラムフロー）における並行処理においてよりも僅かなことである。プログラムの機械コードへの翻訳ないしコンパイラにおいては、このプログラムが並行性に関して検査され、並行性の識別に対する特別なフラグないし情報を付される。
【００１７】
これに対してデータ処理装置のアーキテクチャは、個別プログラムアーキテクチャ（Single Thread Architecture）に対してコンバーチブルである。並行に実施される命令は、クロック周期においてプログラムメモリから取り出される。個々の並行プロセス毎に、優先度が割当てられる。データ処理装置が分岐制御ユニット（ブランチコントロールユニット）を介してデータと命令をプログラムメモリから取り出す取出しフェーズ（フェッチフェーズ）の後では、プログラムフロー制御ユニット（フローコントロールユニット）から、所定の優先度と翻訳の際にセットされた並行性に関するフラグないし組込み情報に従ってどのプロセスがまず最初に実行されるべきかが決定される。
【００１８】
この処理のためにデータ処理装置は、並行プログラムの状態変数を記憶するためのレジスタ、例えばプログラムカウンタ、レジスタファイル、ＡＬＵ（Arithmetic Logic Unit）フラグなどを有している。これらのレジスタは、処理すべきプロセスに応じて切換可能であり、実質的にはプロセスデータの記憶のために用いられる（いわゆるコンテクストスイッチ）。
【００１９】
データ処理装置の有利な実施形態においては、Ｎ個の命令緩衝域（インストラクションバッファ）がプログラムメモリの後方に接続され、このプログラムメモリからの命令を記憶する。
【００２０】
並行処理に対しては、インストラクションバッファやプログラムカウンタのような中央ユニットが分岐制御ユニットにおいて目下のアクティブな並行処理に応じて多重化（例えば倍加）される。これに対しては、各並行処理毎に付加的なユニットを設ける必要はなく、単に同時に並行して実行されるプロセスが増えるだけである。例えば１つのプログラムが５つの異なる並行処理を有し、この５つのうちの２つが常に活動化される場合では、中央ユニットの倍加で十分である。高コストのＩＬＰアーキテクチャに比べてこの手法では全体的なハードウエアコストが僅かで済む。並行処理の処理のための専用の構造部分は、命令の取出しのためのユニット（インストラクションバッファ、命令送出選別器）と、分岐のためのユニット（ブランチコントロールユニット）を有している。前述したアーキテクチャにおいてはプログラムキャッシュやデータキャッシュの有無は問わない。
【００２１】
有利には、読出された命令の復号化のためにＮ個の命令デコーダ（１６，１７）が設けられる。
【００２２】
特に有利には、Ｎ個の復号化された命令の実行のために、少なくとも２つの命令実行ユニットが設けられている。
【００２３】
有利には、少なくとも２つのバスが設けられており、これらのバスはＮ個の命令実行ユニットにデータ用のメモリを結び付けている。
【００２４】
１つまたは複数のタスクの命令は、並行に実行可能である。
【００２５】
有利には、分岐制御ユニットは、タスクをアドレス指定するアドレスポインタを出力する。
【００２６】
別の有利な実施形態によれば、分岐制御ユニットは、
−第１のマルチプレクサおよび第２のマルチプレクサと、
−加算器と、
−Ｎ個のプログラムカウンタを有し、この場合
−プログラムフロー制御ユニットによってインストラクションユニットの複数の命令が加算器に供給され、加算器はアドレスポインタと服すの命令を加算し、
−プログラムジャンプまたは機能呼出しのためのアドレスとプロセスナンバはプログラムフロー制御ユニットから第１のマルチプレクサに供給され、
−第１のマルチプレクサを用いて加算器の出力信号か、またはプログラムジャンプないし機能呼出しのためのアドレスがアクティブプロセスに対応付けられたプログラムカウンタに書き込まれ、
−供給されるプロセスナンバを介して制御される第２のマルチプレクサを介して、ちょうど活動化されたプロセスに対応付けられたプログラムカウンタの内容が新たなアドレスポインタとして出力される。
【００２７】
プログラムフロー制御ユニットは有利には、サブバスを介してプログラムメモリの出力バスから、
−命令の並行処理実行の表示のための少なくとも１つのビット、および/または−後続するインストラクションユニットの長さの表示のための少なくとも１つのビット、および/または
−インストラクションユニットにおける１つまたは複数のＮＯＰの標識
−命令のプロセス優先度、
が供給される。
【００２８】
１つのプロセスは有利には、プログラムメモリにファイルされているプロセスナンバ、優先度、メモリアドレスの割当てによって呼出される。
【００２９】
有利にはデータ処理装置は、ネットワークプロセッサとしてプロトコル層の第１から第７層の処理のために、ＬＡＮ/ＡＴＭスイッチ、ＩＰルータに用いられたり、ＤＳＬ、イーサネット、ケーブルモデムに基づくフレーム中継器などに用いられる。特にこれらの適用分野では並行処理は重要なものなので、本発明によるデータ処理装置は有利に活用できる。
【００３０】
【実施例】
次に本発明を図面に基づき以下の明細書で詳細に説明する。なお以下の明細書では分岐制御ユニットは“ブランチコントロールユニット”、プログラムフロー制御ユニットは“フローコントロールユニット”、命令実行ユニットは“エグゼキューションユニット”、命令送出選別器は“インストラクション送出セレクタ”と称する。
【００３１】
図１には、２つのプロセスないしスレッドの並行処理のためのデータ処理装置のブロック回路図が示されている。プログラムメモリ１２にファイルされているプログラムは、ブランチコントロールユニットBCU（分岐制御ユニット）１１からのアドレスポインタPC0を介してアドレス指定される。このブランチコントロールユニット１１では、少なくとも２つのプログラムカウンタが種々のプロセスないしスレッドのために設けられている。これらのプログラムカウンタは、目下活動化されるプロセスに割当てられる。どのプロセスを実行するか、すなわちどのプロセスがデータ処理装置によって処理されるかについては、相応のプログラムカウンタの内容がアドレスポインタPC0として用いられる。
【００３２】
プログラムメモリ１２の後方には、並行して処理すべき２つのプロセスのために２つのインストラクションバッファ（IA）１３，（IB）１４が接続されている。これらのインストラクションバッファは、プログラムメモリから読出された命令を記憶する。
【００３３】
フローコントロールユニット１０（プログラムフロー制御ユニット）は、ブランチコントロールユニット１１とインストラクションバッファ１３，１４を制御している。インストラクションバッファ１３，１４の後方には、インストラクション送出選別器１５が接続されており、この選別器を介してインストラクションバッファ１３，１４からの命令が２つのインストラクションデコーダ１６，１７に対して多重化される。
【００３４】
インストラクションデコーダ１６，１７には、並行して実行されるプロセスのゼロフラグ、キャリィフラグ、オーバーフローフラグの記憶のためのレジスタ１８が設けられている。このレジスタ１８は、アクティブなプロセスのデータと状態を記憶するための少なくとも２つのレジスタファイルを有している。
【００３５】
前記レジスタ１８には、２つのエグゼキューションユニット(EX1)１９、(EX2 )２０が（命令実行ユニット）が後置接続されている。これらの２つのユニットは命令の実行のために用いられる。これに対してこの２つのユニット(EX1)１９、(EX2 )２０にはそれぞれ２つのバス（BUS1）21と（BUS2） 22が接続されており、これらのバスを介して、データのファイルされているメモリ２３にアクセスされる。このメモリ２３は有利にはＲＡＭである。
【００３６】
以下では前述した装置の機能を説明する。
【００３７】
プログラムコードは、固定長でコード化される。プロセスのプログラムは必ずしも分離される必要はなく、１つのプログラムに統一されていてもよい。１つのプロセスないしスレッドのスタートポイントは、ジャンプに相応し、プロセスナンバないしスレッドナンバのセットのための付加的な機能と一緒に組合わされる。そのようなスタートポイントのフォーマットは、以下の通りである。
【００３８】
RUN Thread＿nr Priority Jump＿Adr
つまりこのプロセスは、命令RUNによって呼出される。この場合はさらにスレッドナンバThread＿nr,優先度Priority,プログラムメモリ内のプロセスコードを示すジャンプアドレスJump＿Adrが割当てられる。
【００３９】
これらの命令は常に、１つもしくは２つの命令からなるユニットに束ねられて記憶される。コンパイラの時点においては、ＩＬＰが次のことを検査する。すなわち複数の命令を有するユニットが並行処理可能であるかどうかを検査する。このことは、１つまたは複数のプログラムのコンパイラの期間中に、どの命令が相互に十分に独立して並行処理可能であるかが検査されることを意味する。その後で２つの独立した命令が１つのユニットにパッキングされる。さらに、異なるユニットの命令を実行することも可能である。それによりいずれにせよ１つのユニットの複数の命令が並行に処理可能となり、場合によっては異なるユニットないしスレッドの命令も並行処理可能となる。各インストラクションユニットは、後続するユニットの長さを示すフラグを有している。このフラグに依存してアドレスポインタは算出される。このアドレスポインタＰＣ０を介したプログラムメモリ１２のアドレス指定の際に、インストラクションユニットの最大長をアドレス指定可能であるビット幅が与えられる。
【００４０】
プログラムメモリからの命令の取出し（インストラクションフェッチ）は、以下のように行われる。プログラムメモリ１２がアドレスポインタＰＣ０によってアドレス指定され（このアドレスポインタＰＣ０はこれに対してインストラクションユニットの開始アドレスを示す）、その後で１つのインストラクションユニットがインストラクションバッファ１３ないし１４の一方に読み込まれる。引続きさらなるインストラクションユニットが読出され、前記インストラクションバッファ１３，１４のもう一方に書き込まれる。その際第２のインストラクションユニットは、第１のインストラクションユニットとは別のプロセスに所属する。それにより２つのアクティブなプロセスが処理可能となる。全体的には２つ以上のプロセスが存在することも可能であるが、当該実施例ではプロセッサは２つのアクティブなプロセスだけを並行処理する。相応のインストラクションユニットの多重化によって、インストラクションバッファ、インストラクションデコーダおよびエグゼキューションユニットは、２つ以上のプロセスをアクティブにする、つまり並行処理してもよい。いずれにせよフェッチ周期毎に２つのインストラクションユニットがプログラムメモリ１２からインストラクションバッファ１３，１４へ伝送される。
【００４１】
インストラクション送出選別器１５（これはマルチプレクサ論理回路を含んでいる）を介して、インストラクションバッファ１３，１４からはインストラクションユニットの命令もしくはＮＯＰ（No Operation）が送出される。これらの命令もしくはＮＯＰは、インストラクションデコーダ１６，１７に復号化のために供給さえる。この場合１つのインストラクションユニットから２つの命令、すなわちインストラクションバッファ１３または１４から２つの命令が選択されてもよいし、インストラクションバッファ１３，１４からそのつど１つの命令がインストラクション送出選別器１５を介して選択されてもよい。インストラクション送出選別器１５から送出された命令がＮＯＰである場合には、当該プロセッサはパワーダウンモードに入る。
【００４２】
インストラクションバッファ１３，１４並びにインストラクション送出選別器１５からの命令の送出と選択は、フローコントロールユニット１０から制御される。このことは図２に基づいて説明する。プログラムメモリ１２から読出されたインストラクションユニットは、コマンドバスを介してインストラクションバッファ１３，１４に供給される。インストラクションユニットからは以下に述べる情報がコマンドバス２５を介してフローコントロールユニット１０に供給される。
【００４３】
−複数の命令の並行処理の示すビットもしくは後続のインストラクションユニットの長さを示すビット（固定長を有するプログラムコードのケースではいずれにせよ長さの標識は必要ない）
−インストラクションユニットにおける１つまたは複数のＮＯＰの標識（この場合１つのＮＯＰは、他のプロセスの別の命令によって置換え可能である）
−目下のプロセス、つまりスレッドバス２８を介したプロセスナンバ
−２つのプロセスの優先度
フローコントロールユニット１０は、Fetch＿Ctrバス２６を介してインストラクションバッファ１３，１４を制御し、Issue＿Selectバス２７を介してインストラクション送出選別器１５を制御する。フローコントロールユニット１０の内部状態は、２つのプロセスのうちのインストラクションバッファ１３，１４に残っている命令の数を示唆する。フローコントロールユニット１０は以下の出力信号を送出する。
【００４４】
−プログラムカウンタの増分のための信号（この信号は１つの命令を有するインストラクションユニットに対しては０であり、２つの命令を有するインストラクションユニットに対しては２である）
−Fetch＿Ctrバス２６を介した、インストラクションバッファ１３，１４の作動許可のためのFetch＿Ctr信号
−Issue＿Selectバス２７を介したインストラクション送出選別器１５の制御のためのIssue＿Select信号
インストラクション送出選別器１５に後置接続されているインストラクションデコーダ１６，１７は、供給された命令を復号化する。そのつどのプロセスのプロセスナンバと優先度はレジスタ１８に記憶される。
【００４５】
図３にはブランチコントロールユニット１１の構造が示されている。このブランチコントロールユニット１１は、加算器３０を有しており、この加算器はアドレスポインタPC0と、インストラクションユニットバス３５を介して供給された信号Ｍとを加算する。この信号Ｍは、１つの命令を有するインストラクションユニットに対しては１であり、２つの命令を有するインストラクションユニットに対しては２である。それによって目下のプログラムカウンタ値は１または２だけ増分される。つまりいくつの命令を有するインストラクションユニットが読出されたかに依存して増分が行われる。加算器３０の出力値は、第１のマルチプレクサ３１に供給される。この第１のマルチプレクサ３１は、２つのプログラムカウンタ３２，３３のうちの一方におけるジャンプと機能呼出しの制御のために、加算器３０から供給された信号と、Br＿Ctrバス３６を介して供給された信号の間で切換を行う。どのプログラムカウンタに書き込まれるかは、Thread＿バス３７を介して供給されたプロセスナンバTNrに依存する。２つのアクティブなプロセスの各々には１つのプログラムカウンタが対応付けられる。すなわち例えばプロセスナンバ４の２つの命令を有するインストラクションユニットがプログラムメモリから読出されたならば、信号Ｍは２であり、第１のマルチプレクサはPC0＋２の値をプログラムカウンタPC1 ３３に書き込む。このプログラムカウンタはプロセスナンバ４に割当てられている。第２のマルチプレクサ３４を介して２つのプログラムカウンタ３２，３３のうちの１つからアドレスポインタPC0が送出される。プロセスナンバは、２つのプログラムカウンタのどれを出力させるかも制御している。
【００４６】
図４には、フローコントロールユニット１０の状態ダイヤグラムが示されている。このフローコントロールユニットは、４つの異なる状態を有しており、これらはそれぞれ異なる値Ａ，Ｂであらわされている。値ＡとＢは、いくつの命令がまだインストラクションバッファIA１３ないしIB１４に存在しているかを示している。図示の状態ダイヤグラムではプロセスＡの優先度が、プロセスＢの優先度よりも大きい。
【００４７】
このダイヤグラム中には各状態遷移においてどのアクションが実行されるか、つまりインストラクション送出選別器１５によってインストラクションバッファIA１３ないしIB１４から値Ａおよび/またはＢの１つまたは２つが出力されるか、またはプログラムメモリからインストラクションバッファIA１３ないしIB１４へ１つまたは２つの命令がロードないし再ロードされるかが示されている。ＮＯＰがインストラクション送出選別器１５から送出されてもよい。２ＡとＳＢは、インストラクションバッファIA１３ないしIB１４から２つの値が送出されるかあるいはこれらにロードされることを意味する。相応に１Ａおよび１Ｂは１つの値だけの送出ないしロード（再ロード）を意味している。
【図面の簡単な説明】
【図１】本発明によるデータ処理装置のブロック回路図である。
【図２】プログラムメモリとプログラムフロー制御ユニットと命令送出選別器の詳細なブロック回路図である。
【図３】分岐制御ユニットのブロック回路図である。
【図４】プログラムフロー制御ユニットの作動を説明するための状態ダイヤグラムである。
【符号の説明】
１０    プログラムフロー制御ユニットFCU
１１    分岐制御ユニット（ブランチコントロールユニット）
１２    プログラムメモリ
１３    インストラクションバッファIA
１４    インストラクションバッファIB
１５    インストラクション送出選別器
１６    インストラクションデコーダIDEC1
１７    インストラクションデコーダIDEC2
１８    レジスタ
１９    エグゼキューションユニットEX1
２０    エグゼキューションユニットEX2
２１    バスBUS1
２２    バスBUS2
２３    メモリ
【図１】
0003702184.tif 000002
【図２】
0003702184.tif 000003
【図３】
0003702184.tif 000004
【図４】
0003702184.tif 000005