JP3702184B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3702184B2 JP3702184B2 JP2001005672A JP2001005672A JP3702184B2 JP 3702184 B2 JP3702184 B2 JP 3702184B2 JP 2001005672 A JP2001005672 A JP 2001005672A JP 2001005672 A JP2001005672 A JP 2001005672A JP 3702184 B2 JP3702184 B2 JP 3702184B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- control unit
- instructions
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
Description
【発明の属する技術分野】
本発明は、少なくとも2つの独立したプロセス(スレッド)の並行処理のためのデータ処理装置に関している。
【0002】
【従来の技術】
米国特許 US-A 5,941,983 明細書からは、プログラムメモリを備えた独立したプロセスの並行処理のためのデータ処理装置が公知である。このプログラムメモリ内には、多数の独立したプロセス(スレッド)を伴う少なくとも1つのコンパイラプログラムがファイルされており、このコンパイラプログラムには、並行性と複数のプロセス命令を伴う多数のインストラクションユニットに関する情報が含まれている。
【0003】
WO 99/21088 A1 明細書からは、フラグおよびデータ記憶用のレジスタを備えたスレッド切換論理回路を有するプロセス並行処理のためのデータ処理装置が公知である。
【0004】
さらに米国特許 US-A 5,404,469 明細書からは、ネスティング技法を用いたデータ処理装置(マルチスレッドマイクロプロセッサ)が公知である。
【0005】
データ処理装置ないしプロセッサの処理能力と速度は、周知のようにパイプラインとクロック周波数の引上げによって向上させることが可能である。
【0006】
またハードウエアコストの引き上げ、つまりプロセッサユニットの多重化によってもデータ処理速度の上昇が可能である。これについては実質的に2つのコンセプトが公知であり、詳細にはマルチプロセッサアーキテクチャと命令レベルでの並行処理“ILP”(=Instruction Level Parallelism)である。今日ではこのILPが並行処理に対するコンセプトとして十分に浸透している。
【0007】
ILPコンセプトに対する一例には、テキサスインストルメント社のC6x系のVLIW(=Very Large Instruction Word)アーキテクチャがある。またインテル社やヒューレッドパッカード社のIA64アーキテクチャは、ILPコンセプトに基づいている。前述した2つのアーキテクチャにおいては、プログラムコードの翻訳期間中に並行処理が定められている。インテル社はそのIA64アーキテクチャを“EPIC”(=Explicit Parallel Instruction Computing)と称している。翻訳の際には若干の所定のフラグが並行性の識別のためにセットされており、それによってプロセッサは、並行処理すべき命令をプログラムの流れの中でいつ出現させ、相応に反応すべきかを容易に識別することができる。さらにこの処理は、例えばパワーPCプロセッサの超スカラ型アーキテクチャで用いられている完全な並行処理のような二重に設けられたハードウエア構成よりも低コストである。そこではプログラム経過期間の間にまず並行処理が識別され、それに続いて応答が行われている。いずれにせよILPに基づくゲインは、データ操作と制御操作固有の依存性に制限される。そのような依存性を回避するためには、高コストな処理、例えばプログラミングの際のデータ操作及び制御装置依存性の考慮などが必要なり、これらのことは開発コスト全体の高コスト化につながる。
【0008】
公知文献“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”からはチップ面での並行性の最大化のために同時多重系コンセプトが提案されている。これに対しては複数の独立したプロセス(スレッド)、命令シーケンスまたはプログラムフローが超スカラタイププロセッサの多重に存在するユニットへ送出される。同時多重の目的のために、並行処理のフル活用のもとでプロセッサの全てのユニットが同時に最大負荷され、それによって長い待ち時間の影響(これは遅いメモリに起因する)がプロセッサの処理能力を低下させる。
【0009】
シングルチップマルチプロセッサは、公知文献“A singlechip Multiprocessor von L. Hammond, B.A. Nayfeh, K. Olukotun der 1997 in IEEE-Computer P.79-85”に開示されている。この文献では特にパフォーマンスに関する、同時多重系(SM)とチップマルチプロセッサ(CMP)の間の違いに立ち入っている。さらに急速に高められている集積回路の集積密度に基づいて、マルチプロセッサアーキテクチャを並行処理のために用いることが提案されている。
【0010】
【発明が解決しようとする課題】
本発明の課題は、少なくとも2つの並行処理の実施が可能でかつその際に必要なハードウエアコストも比較的僅かで済む、データ処理装置ないしプロセッサを提供することである。
【0011】
前記課題は本発明により、プログラムメモリを有しており、該メモリ内には、複数のN個の独立したプロセスを伴う少なくとも1つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う複数の命令ユニットに関する情報が含まれており、前記複数の命令ユニットは並列に実行可能であり、分岐制御ユニットを有しており、該分岐制御ユニットはプログラムメモリに接続され該メモリをアドレス指定するものであり、フラグおよびデータ記憶用のレジスタを有しており、該レジスタは実行されるプロセスに依存して切換られており、プログラムフロー制御ユニットを有しており、該プログラムフロー制御ユニットは、プログラムメモリからの命令ユニットのフェッチを制御し、かつ前記分岐制御ユニットを制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御され、N個のインストラクションバッファが、プログラムメモリの後方に並列に接続され、このプログラムメモリから読出された命令が記憶され、ここでは1つの命令ユニットがインストラクションバッファの一方に読み込まれ、異なるプロセスに対応付けられた第2の命令ユニットは、他方のインストラクションバッファに読み込まれ、インストラクション送出選別器が設けられており、該インストラクション送出選別器は前記プログラムフロー制御ユニットに接続されて該制御ユニットにより制御され、この制御によって命令がインストラクションバッファから読出され、N個の命令が並行して出力され、前記インストラクション送出選別器は、マルチプレクサ論理回路を含んでおり、前記並行性に関する情報に基づいて、第1のインストラクションバッファからの1つの命令と第2のインストラクションバッファからの1つの命令とが前記インストラクション送出選別器を介して選択されるか、若しくは前記2つのインストラクションバッファの1つから2つの命令が前記インストラクション送出選別器を介して選択されるように構成されて解決される。
【0012】
【発明の実施の形態】
本発明の別の有利な実施例は、従属請求項に記載される。
【0013】
このようなデータ処理装置は有利には、例えば通信分野におけるネットワークプロセッサとして、プロトコル層の第1層から第3層の処理のために、LAN/ATM(Asynchronous Transfer Mode)スイッチ、IP(Internet Protocol)ルータ、フレームリレー(これは特にDSL(Digital Subscriber Line)イーサーネット(商標)、ケーブルモデムに基づく)などに用いられ。特に前述したような適用分野においては種々異なるタスクの処理に対して独立したプロセスが頻繁に生じる。そのような並行して処理されるプロセス(マルチスレッドとも称される)は、通信分野では基本的な適用手段として広く活用されている。プログラミング可能なIP/ATMインターフェース(Internet Protocol/Asynchronous Transfer Mode-Input/Output-Processing-Unit)では例えば独立したプロセスが、様々なデータ処理の制御んために、または分離したデータシフト操作の制御のために実行される。
【0014】
しかしながら本発明によるデータ処理装置の使用は、前述したような適用分野に限られるのではなく、並行処理が行われるあらゆる分野での適用が可能である。これに対する例として例えば開ループ制御や閉ループ制御への活用やオフィスやプライベートで用いられる一般的なコンピュータでの適用が挙げられる。特に一般的な複数のプロセッサが高いパフォーマンスで並行処理を行うようなケースでは有利となる。
【0015】
本発明は、少なくとも2つの独立したプロセス(スレッド)の並行処理のためのデータ処理装置において、
プログラムメモリを有し、該メモリ内には、N個の多数の独立したプロセスを伴う少なくとも1つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う多数のインストラクションユニットに関する情報が含まれており、
分岐制御ユニットを有し、該分岐制御ユニットはプログラムメモリをアドレス指定するものであり、
フラグおよびデータ記憶用のレジスタを有しており、該レジスタは実行されるプロセスに依存して切換られており、
プログラムフロー制御ユニットを有しており、該プログラムフロー制御ユニットは、プログラムメモリからのインストラクションユニットのフェッチを制御し、かつ前記分岐制御ユニットを制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御するように構成されていることを特徴としている。
【0016】
この本発明の基本的な考察は、独立して並行して実行される処理におけるデータ及びコマンドへの依存性が、個々のプログラムフロー(シングルシーケンシャルプログラムフロー)における並行処理においてよりも僅かなことである。プログラムの機械コードへの翻訳ないしコンパイラにおいては、このプログラムが並行性に関して検査され、並行性の識別に対する特別なフラグないし情報を付される。
【0017】
これに対してデータ処理装置のアーキテクチャは、個別プログラムアーキテクチャ(Single Thread Architecture)に対してコンバーチブルである。並行に実施される命令は、クロック周期においてプログラムメモリから取り出される。個々の並行プロセス毎に、優先度が割当てられる。データ処理装置が分岐制御ユニット(ブランチコントロールユニット)を介してデータと命令をプログラムメモリから取り出す取出しフェーズ(フェッチフェーズ)の後では、プログラムフロー制御ユニット(フローコントロールユニット)から、所定の優先度と翻訳の際にセットされた並行性に関するフラグないし組込み情報に従ってどのプロセスがまず最初に実行されるべきかが決定される。
【0018】
この処理のためにデータ処理装置は、並行プログラムの状態変数を記憶するためのレジスタ、例えばプログラムカウンタ、レジスタファイル、ALU(Arithmetic Logic Unit)フラグなどを有している。これらのレジスタは、処理すべきプロセスに応じて切換可能であり、実質的にはプロセスデータの記憶のために用いられる(いわゆるコンテクストスイッチ)。
【0019】
データ処理装置の有利な実施形態においては、N個の命令緩衝域(インストラクションバッファ)がプログラムメモリの後方に接続され、このプログラムメモリからの命令を記憶する。
【0020】
並行処理に対しては、インストラクションバッファやプログラムカウンタのような中央ユニットが分岐制御ユニットにおいて目下のアクティブな並行処理に応じて多重化(例えば倍加)される。これに対しては、各並行処理毎に付加的なユニットを設ける必要はなく、単に同時に並行して実行されるプロセスが増えるだけである。例えば1つのプログラムが5つの異なる並行処理を有し、この5つのうちの2つが常に活動化される場合では、中央ユニットの倍加で十分である。高コストのILPアーキテクチャに比べてこの手法では全体的なハードウエアコストが僅かで済む。並行処理の処理のための専用の構造部分は、命令の取出しのためのユニット(インストラクションバッファ、命令送出選別器)と、分岐のためのユニット(ブランチコントロールユニット)を有している。前述したアーキテクチャにおいてはプログラムキャッシュやデータキャッシュの有無は問わない。
【0021】
有利には、読出された命令の復号化のためにN個の命令デコーダ(16,17)が設けられる。
【0022】
特に有利には、N個の復号化された命令の実行のために、少なくとも2つの命令実行ユニットが設けられている。
【0023】
有利には、少なくとも2つのバスが設けられており、これらのバスはN個の命令実行ユニットにデータ用のメモリを結び付けている。
【0024】
1つまたは複数のタスクの命令は、並行に実行可能である。
【0025】
有利には、分岐制御ユニットは、タスクをアドレス指定するアドレスポインタを出力する。
【0026】
別の有利な実施形態によれば、分岐制御ユニットは、
−第1のマルチプレクサおよび第2のマルチプレクサと、
−加算器と、
−N個のプログラムカウンタを有し、この場合
−プログラムフロー制御ユニットによってインストラクションユニットの複数の命令が加算器に供給され、加算器はアドレスポインタと服すの命令を加算し、
−プログラムジャンプまたは機能呼出しのためのアドレスとプロセスナンバはプログラムフロー制御ユニットから第1のマルチプレクサに供給され、
−第1のマルチプレクサを用いて加算器の出力信号か、またはプログラムジャンプないし機能呼出しのためのアドレスがアクティブプロセスに対応付けられたプログラムカウンタに書き込まれ、
−供給されるプロセスナンバを介して制御される第2のマルチプレクサを介して、ちょうど活動化されたプロセスに対応付けられたプログラムカウンタの内容が新たなアドレスポインタとして出力される。
【0027】
プログラムフロー制御ユニットは有利には、サブバスを介してプログラムメモリの出力バスから、
−命令の並行処理実行の表示のための少なくとも1つのビット、および/または−後続するインストラクションユニットの長さの表示のための少なくとも1つのビット、および/または
−インストラクションユニットにおける1つまたは複数のNOPの標識
−命令のプロセス優先度、
が供給される。
【0028】
1つのプロセスは有利には、プログラムメモリにファイルされているプロセスナンバ、優先度、メモリアドレスの割当てによって呼出される。
【0029】
有利にはデータ処理装置は、ネットワークプロセッサとしてプロトコル層の第1から第7層の処理のために、LAN/ATMスイッチ、IPルータに用いられたり、DSL、イーサネット、ケーブルモデムに基づくフレーム中継器などに用いられる。特にこれらの適用分野では並行処理は重要なものなので、本発明によるデータ処理装置は有利に活用できる。
【0030】
【実施例】
次に本発明を図面に基づき以下の明細書で詳細に説明する。なお以下の明細書では分岐制御ユニットは“ブランチコントロールユニット”、プログラムフロー制御ユニットは“フローコントロールユニット”、命令実行ユニットは“エグゼキューションユニット”、命令送出選別器は“インストラクション送出セレクタ”と称する。
【0031】
図1には、2つのプロセスないしスレッドの並行処理のためのデータ処理装置のブロック回路図が示されている。プログラムメモリ12にファイルされているプログラムは、ブランチコントロールユニットBCU(分岐制御ユニット)11からのアドレスポインタPC0を介してアドレス指定される。このブランチコントロールユニット11では、少なくとも2つのプログラムカウンタが種々のプロセスないしスレッドのために設けられている。これらのプログラムカウンタは、目下活動化されるプロセスに割当てられる。どのプロセスを実行するか、すなわちどのプロセスがデータ処理装置によって処理されるかについては、相応のプログラムカウンタの内容がアドレスポインタPC0として用いられる。
【0032】
プログラムメモリ12の後方には、並行して処理すべき2つのプロセスのために2つのインストラクションバッファ(IA)13,(IB)14が接続されている。これらのインストラクションバッファは、プログラムメモリから読出された命令を記憶する。
【0033】
フローコントロールユニット10(プログラムフロー制御ユニット)は、ブランチコントロールユニット11とインストラクションバッファ13,14を制御している。インストラクションバッファ13,14の後方には、インストラクション送出選別器15が接続されており、この選別器を介してインストラクションバッファ13,14からの命令が2つのインストラクションデコーダ16,17に対して多重化される。
【0034】
インストラクションデコーダ16,17には、並行して実行されるプロセスのゼロフラグ、キャリィフラグ、オーバーフローフラグの記憶のためのレジスタ18が設けられている。このレジスタ18は、アクティブなプロセスのデータと状態を記憶するための少なくとも2つのレジスタファイルを有している。
【0035】
前記レジスタ18には、2つのエグゼキューションユニット(EX1)19、(EX2 )20が(命令実行ユニット)が後置接続されている。これらの2つのユニットは命令の実行のために用いられる。これに対してこの2つのユニット(EX1)19、(EX2 )20にはそれぞれ2つのバス(BUS1)21と(BUS2) 22が接続されており、これらのバスを介して、データのファイルされているメモリ23にアクセスされる。このメモリ23は有利にはRAMである。
【0036】
以下では前述した装置の機能を説明する。
【0037】
プログラムコードは、固定長でコード化される。プロセスのプログラムは必ずしも分離される必要はなく、1つのプログラムに統一されていてもよい。1つのプロセスないしスレッドのスタートポイントは、ジャンプに相応し、プロセスナンバないしスレッドナンバのセットのための付加的な機能と一緒に組合わされる。そのようなスタートポイントのフォーマットは、以下の通りである。
【0038】
RUN Thread_nr Priority Jump_Adr
つまりこのプロセスは、命令RUNによって呼出される。この場合はさらにスレッドナンバThread_nr,優先度Priority,プログラムメモリ内のプロセスコードを示すジャンプアドレスJump_Adrが割当てられる。
【0039】
これらの命令は常に、1つもしくは2つの命令からなるユニットに束ねられて記憶される。コンパイラの時点においては、ILPが次のことを検査する。すなわち複数の命令を有するユニットが並行処理可能であるかどうかを検査する。このことは、1つまたは複数のプログラムのコンパイラの期間中に、どの命令が相互に十分に独立して並行処理可能であるかが検査されることを意味する。その後で2つの独立した命令が1つのユニットにパッキングされる。さらに、異なるユニットの命令を実行することも可能である。それによりいずれにせよ1つのユニットの複数の命令が並行に処理可能となり、場合によっては異なるユニットないしスレッドの命令も並行処理可能となる。各インストラクションユニットは、後続するユニットの長さを示すフラグを有している。このフラグに依存してアドレスポインタは算出される。このアドレスポインタPC0を介したプログラムメモリ12のアドレス指定の際に、インストラクションユニットの最大長をアドレス指定可能であるビット幅が与えられる。
【0040】
プログラムメモリからの命令の取出し(インストラクションフェッチ)は、以下のように行われる。プログラムメモリ12がアドレスポインタPC0によってアドレス指定され(このアドレスポインタPC0はこれに対してインストラクションユニットの開始アドレスを示す)、その後で1つのインストラクションユニットがインストラクションバッファ13ないし14の一方に読み込まれる。引続きさらなるインストラクションユニットが読出され、前記インストラクションバッファ13,14のもう一方に書き込まれる。その際第2のインストラクションユニットは、第1のインストラクションユニットとは別のプロセスに所属する。それにより2つのアクティブなプロセスが処理可能となる。全体的には2つ以上のプロセスが存在することも可能であるが、当該実施例ではプロセッサは2つのアクティブなプロセスだけを並行処理する。相応のインストラクションユニットの多重化によって、インストラクションバッファ、インストラクションデコーダおよびエグゼキューションユニットは、2つ以上のプロセスをアクティブにする、つまり並行処理してもよい。いずれにせよフェッチ周期毎に2つのインストラクションユニットがプログラムメモリ12からインストラクションバッファ13,14へ伝送される。
【0041】
インストラクション送出選別器15(これはマルチプレクサ論理回路を含んでいる)を介して、インストラクションバッファ13,14からはインストラクションユニットの命令もしくはNOP(No Operation)が送出される。これらの命令もしくはNOPは、インストラクションデコーダ16,17に復号化のために供給さえる。この場合1つのインストラクションユニットから2つの命令、すなわちインストラクションバッファ13または14から2つの命令が選択されてもよいし、インストラクションバッファ13,14からそのつど1つの命令がインストラクション送出選別器15を介して選択されてもよい。インストラクション送出選別器15から送出された命令がNOPである場合には、当該プロセッサはパワーダウンモードに入る。
【0042】
インストラクションバッファ13,14並びにインストラクション送出選別器15からの命令の送出と選択は、フローコントロールユニット10から制御される。このことは図2に基づいて説明する。プログラムメモリ12から読出されたインストラクションユニットは、コマンドバスを介してインストラクションバッファ13,14に供給される。インストラクションユニットからは以下に述べる情報がコマンドバス25を介してフローコントロールユニット10に供給される。
【0043】
−複数の命令の並行処理の示すビットもしくは後続のインストラクションユニットの長さを示すビット(固定長を有するプログラムコードのケースではいずれにせよ長さの標識は必要ない)
−インストラクションユニットにおける1つまたは複数のNOPの標識(この場合1つのNOPは、他のプロセスの別の命令によって置換え可能である)
−目下のプロセス、つまりスレッドバス28を介したプロセスナンバ
−2つのプロセスの優先度
フローコントロールユニット10は、Fetch_Ctrバス26を介してインストラクションバッファ13,14を制御し、Issue_Selectバス27を介してインストラクション送出選別器15を制御する。フローコントロールユニット10の内部状態は、2つのプロセスのうちのインストラクションバッファ13,14に残っている命令の数を示唆する。フローコントロールユニット10は以下の出力信号を送出する。
【0044】
−プログラムカウンタの増分のための信号(この信号は1つの命令を有するインストラクションユニットに対しては0であり、2つの命令を有するインストラクションユニットに対しては2である)
−Fetch_Ctrバス26を介した、インストラクションバッファ13,14の作動許可のためのFetch_Ctr信号
−Issue_Selectバス27を介したインストラクション送出選別器15の制御のためのIssue_Select信号
インストラクション送出選別器15に後置接続されているインストラクションデコーダ16,17は、供給された命令を復号化する。そのつどのプロセスのプロセスナンバと優先度はレジスタ18に記憶される。
【0045】
図3にはブランチコントロールユニット11の構造が示されている。このブランチコントロールユニット11は、加算器30を有しており、この加算器はアドレスポインタPC0と、インストラクションユニットバス35を介して供給された信号Mとを加算する。この信号Mは、1つの命令を有するインストラクションユニットに対しては1であり、2つの命令を有するインストラクションユニットに対しては2である。それによって目下のプログラムカウンタ値は1または2だけ増分される。つまりいくつの命令を有するインストラクションユニットが読出されたかに依存して増分が行われる。加算器30の出力値は、第1のマルチプレクサ31に供給される。この第1のマルチプレクサ31は、2つのプログラムカウンタ32,33のうちの一方におけるジャンプと機能呼出しの制御のために、加算器30から供給された信号と、Br_Ctrバス36を介して供給された信号の間で切換を行う。どのプログラムカウンタに書き込まれるかは、Thread_バス37を介して供給されたプロセスナンバTNrに依存する。2つのアクティブなプロセスの各々には1つのプログラムカウンタが対応付けられる。すなわち例えばプロセスナンバ4の2つの命令を有するインストラクションユニットがプログラムメモリから読出されたならば、信号Mは2であり、第1のマルチプレクサはPC0+2の値をプログラムカウンタPC1 33に書き込む。このプログラムカウンタはプロセスナンバ4に割当てられている。第2のマルチプレクサ34を介して2つのプログラムカウンタ32,33のうちの1つからアドレスポインタPC0が送出される。プロセスナンバは、2つのプログラムカウンタのどれを出力させるかも制御している。
【0046】
図4には、フローコントロールユニット10の状態ダイヤグラムが示されている。このフローコントロールユニットは、4つの異なる状態を有しており、これらはそれぞれ異なる値A,Bであらわされている。値AとBは、いくつの命令がまだインストラクションバッファIA13ないしIB14に存在しているかを示している。図示の状態ダイヤグラムではプロセスAの優先度が、プロセスBの優先度よりも大きい。
【0047】
このダイヤグラム中には各状態遷移においてどのアクションが実行されるか、つまりインストラクション送出選別器15によってインストラクションバッファIA13ないしIB14から値Aおよび/またはBの1つまたは2つが出力されるか、またはプログラムメモリからインストラクションバッファIA13ないしIB14へ1つまたは2つの命令がロードないし再ロードされるかが示されている。NOPがインストラクション送出選別器15から送出されてもよい。2AとSBは、インストラクションバッファIA13ないしIB14から2つの値が送出されるかあるいはこれらにロードされることを意味する。相応に1Aおよび1Bは1つの値だけの送出ないしロード(再ロード)を意味している。
【図面の簡単な説明】
【図1】本発明によるデータ処理装置のブロック回路図である。
【図2】プログラムメモリとプログラムフロー制御ユニットと命令送出選別器の詳細なブロック回路図である。
【図3】分岐制御ユニットのブロック回路図である。
【図4】プログラムフロー制御ユニットの作動を説明するための状態ダイヤグラムである。
【符号の説明】
10 プログラムフロー制御ユニットFCU
11 分岐制御ユニット(ブランチコントロールユニット)
12 プログラムメモリ
13 インストラクションバッファIA
14 インストラクションバッファIB
15 インストラクション送出選別器
16 インストラクションデコーダIDEC1
17 インストラクションデコーダIDEC2
18 レジスタ
19 エグゼキューションユニットEX1
20 エグゼキューションユニットEX2
21 バスBUS1
22 バスBUS2
23 メモリ
Claims (10)
- 少なくとも2つの独立したプロセス(スレッド)の並行処理のためのデータ処理装置において、
プログラムメモリ(12)を有しており、該メモリ内には、複数のN個の独立したプロセスを伴う少なくとも1つのコンパイラプログラムがファイルされており、該コンパイラプログラムには、並行性と複数のプロセス命令を伴う複数の命令ユニットに関する情報が含まれており、前記複数の命令ユニットは並列に実行可能であり、
分岐制御ユニット(11)を有しており、該分岐制御ユニットはプログラムメモリ(12)に接続され該メモリをアドレス指定するものであり、
フラグおよびデータ記憶用のレジスタ(18)を有しており、該レジスタ(18)は実行されるプロセスに依存して切換られており、
プログラムフロー制御ユニット(10)を有しており、該プログラムフロー制御ユニットは、プログラムメモリ(12)からの命令ユニットのフェッチを制御し、かつ前記分岐制御ユニット(11)を制御し、かつ命令の出力を命令内に含まれているプログラムコンパイル時間に対して組入れられている情報に依存して制御され、
N個のインストラクションバッファ(13,14)が、プログラムメモリ(12)の後方に並列に接続され、このプログラムメモリから読出された命令が記憶され、ここでは1つの命令ユニットがインストラクションバッファ(13,14)の一方に読み込まれ、異なるプロセスに対応付けられた第2の命令ユニットは、他方のインストラクションバッファ(13,14)に読み込まれ、
インストラクション送出選別器(15)が設けられており、該インストラクション送出選別器は前記プログラムフロー制御ユニット(10)に接続されて該制御ユニットにより制御され、この制御によって命令がインストラクションバッファ(13,14)から読出され、N個の命令が並行して出力され、
前記インストラクション送出選別器(15)は、マルチプレクサ論理回路を含んでおり、前記並行性に関する情報に基づいて、第1のインストラクションバッファ(13,14)からの1つの命令と第2のインストラクションバッファ(13,14)からの1つの命令とが前記インストラクション送出選別器(15)を介して選択されるか、若しくは前記2つのインストラクションバッファ(13,14)の1つから2つの命令が前記インストラクション送出選別器(15)を介して選択されるように構成されていることを特徴とするデータ処理装置。 - 読出された命令の復号化のためにN個の命令デコーダ(16,17)が設けられている、請求項1記載のデータ処理装置。
- N個の復号化された命令の実行のために、少なくとも2つの命令実行ユニット(19,20)が設けられている、請求項1または2記載のデータ処理装置。
- 少なくとも2つのバス(21,22)が設けられており、これらのバスはN個の命令実行ユニット(19,20)にデータ用のメモリ(23)を結び付けている、請求項1から3いずれか1項記載のデータ処理装置。
- 1つまたは複数のタスクの命令が並行に実行可能である、請求項1から4いずれか1項記載のデータ処理装置。
- 前記分岐制御ユニット(11)は、タスクをアドレス指定するアドレスポインタ(PC0)を出力する、請求項1から5いずれか1項記載のデータ処理装置。
- 前記分岐制御ユニット(11)が、
第1のマルチプレクサ(31)および第2のマルチプレクサ(32)と、
加算器(30)と、
N個のプログラムカウンタ(32,33)を有し、
前記プログラムフロー制御ユニット(10)によって命令ユニットの複数の命令(35)が加算器(30)に供給され、該加算器はアドレスポインタ(PC0)と複数の命令(35)を加算し、
プログラムジャンプまたは機能呼出しのためのアドレス(36)とプロセスナンバ(37)はプログラムフロー制御ユニット(10)から第1のマルチプレクサ(31)に供給され、
第1のマルチプレクサ(31)を用いて前記加算器(30)の出力信号か、またはプログラムジャンプないし機能呼出しのためのアドレス(36)がアクティブプロセスに対応付けられたプログラムカウンタに書き込まれ、
供給されたプロセスナンバ(37)を介して制御される第2のマルチプレクサ(34)を介して、目下活動化されているプロセスに対応付けられたプログラムカウンタ(32,33)の内容が新たなアドレスポインタ(PC0)として出力される、請求項1から6いずれか1項記載のデータ処理装置。 - 前記プログラムフロー制御ユニット(10)は、サブバス(25)を介してプログラムメモリ(12)の出力バス(24)から、
命令の並行処理実行を示す少なくとも1つのビット、および/または
−後続するインストラクションユニットの長さを示すための少なくとも1つのビット、および/または
−インストラクションユニットにおける1つまたは複数のNOPの標識、および/または
−命令のプロセス優先度、
が供給される、請求項1から7いずれか1項記載のデータ処理装置。 - 1つのプロセスは、プログラムメモリにファイルされているプロセスナンバ、優先度、メモリアドレスの割当てによって呼出される、請求項1から8いずれか1項記載のデータ処理装置。
- 前記データ処理装置は、ネットワークプロセッサとしてプロトコル層の第1から第7層の処理のために用いられる、請求項1から9いずれか1項記載のデータ処理装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10000960.3 | 2000-01-12 | ||
DE10000960A DE10000960C1 (de) | 2000-01-12 | 2000-01-12 | Datenverarbeitungsvorrichtung |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001249807A JP2001249807A (ja) | 2001-09-14 |
JP3702184B2 true JP3702184B2 (ja) | 2005-10-05 |
Family
ID=7627270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001005672A Expired - Fee Related JP3702184B2 (ja) | 2000-01-12 | 2001-01-12 | データ処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20010016899A1 (ja) |
EP (1) | EP1117037B1 (ja) |
JP (1) | JP3702184B2 (ja) |
KR (1) | KR100417482B1 (ja) |
CN (1) | CN1147786C (ja) |
DE (2) | DE10000960C1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050195743A1 (en) * | 2000-04-03 | 2005-09-08 | P-Cube Ltd. | Real time charging of pre-paid accounts |
US7042886B2 (en) * | 2001-12-06 | 2006-05-09 | P-Cube Ltd. | Apparatus, method, and computer program for wire-speed classification and pre-processing of data packets in an ATM network |
US7254632B2 (en) * | 2002-04-26 | 2007-08-07 | P-Cube Ltd. | Apparatus and method for pattern matching in text based protocol |
EP1504362A4 (en) * | 2002-05-10 | 2007-10-31 | Microsoft Corp | COOPERATION OF SIMULTANEOUS, DISTRIBUTED NETWORKS OF EQUIPMENT |
US20050240380A1 (en) * | 2004-03-31 | 2005-10-27 | Jones Kenneth D | Reducing context memory requirements in a multi-tasking system |
CN100489783C (zh) * | 2004-06-28 | 2009-05-20 | 李晓波 | 在单计算机上可在同一时刻执行多道程序的方法及系统 |
US7599361B2 (en) * | 2004-07-02 | 2009-10-06 | P-Cube Ltd. | Wire-speed packet management in a multi-pipeline network processor |
US7400585B2 (en) * | 2004-09-23 | 2008-07-15 | International Business Machines Corporation | Optimal interconnect utilization in a data processing network |
WO2006097735A2 (en) * | 2005-03-15 | 2006-09-21 | Bae Systems Plc | Parallel data processing apparatus and method in a multicarrier communication system |
JP4404065B2 (ja) * | 2006-04-12 | 2010-01-27 | ヤマハ株式会社 | デジタル信号処理装置 |
US7996520B2 (en) | 2007-09-19 | 2011-08-09 | Cisco Technology, Inc. | Behavioral classification of communication sessions using active session initiation |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2911278B2 (ja) * | 1990-11-30 | 1999-06-23 | 松下電器産業株式会社 | プロセッサ |
GB9123271D0 (en) * | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
US5404469A (en) * | 1992-02-25 | 1995-04-04 | Industrial Technology Research Institute | Multi-threaded microprocessor architecture utilizing static interleaving |
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
JP3547482B2 (ja) * | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
US5812811A (en) * | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
US5944816A (en) * | 1996-05-17 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute multiple threads including interrupt service routines |
CN1280714C (zh) * | 1996-08-27 | 2006-10-18 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
US5913925A (en) * | 1996-12-16 | 1999-06-22 | International Business Machines Corporation | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order |
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US6170051B1 (en) * | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
US6105051A (en) * | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6324639B1 (en) * | 1998-03-30 | 2001-11-27 | Matsushita Electric Industrial Co., Ltd. | Instruction converting apparatus using parallel execution code |
US6317820B1 (en) * | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6272616B1 (en) * | 1998-06-17 | 2001-08-07 | Agere Systems Guardian Corp. | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths |
JP2000305781A (ja) * | 1999-04-21 | 2000-11-02 | Mitsubishi Electric Corp | Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体 |
US6404752B1 (en) * | 1999-08-27 | 2002-06-11 | International Business Machines Corporation | Network switch using network processor and methods |
-
2000
- 2000-01-12 DE DE10000960A patent/DE10000960C1/de not_active Expired - Fee Related
- 2000-12-21 EP EP00127959A patent/EP1117037B1/de not_active Expired - Lifetime
- 2000-12-21 DE DE50014979T patent/DE50014979D1/de not_active Expired - Lifetime
-
2001
- 2001-01-11 CN CNB011013931A patent/CN1147786C/zh not_active Expired - Fee Related
- 2001-01-11 KR KR10-2001-0001605A patent/KR100417482B1/ko not_active IP Right Cessation
- 2001-01-12 JP JP2001005672A patent/JP3702184B2/ja not_active Expired - Fee Related
- 2001-01-12 US US09/760,405 patent/US20010016899A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
DE50014979D1 (de) | 2008-04-03 |
DE10000960C1 (de) | 2001-12-20 |
CN1304088A (zh) | 2001-07-18 |
JP2001249807A (ja) | 2001-09-14 |
CN1147786C (zh) | 2004-04-28 |
EP1117037A2 (de) | 2001-07-18 |
EP1117037A3 (de) | 2005-08-10 |
KR20010070512A (ko) | 2001-07-25 |
EP1117037B1 (de) | 2008-02-20 |
US20010016899A1 (en) | 2001-08-23 |
KR100417482B1 (ko) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2500036B2 (ja) | ハイブリッドパイプライン接続プロセッサおよびその処理方法 | |
US8533433B2 (en) | Microprocessor for executing byte compiled java code | |
US5233694A (en) | Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously | |
Caspi et al. | A streaming multi-threaded model | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
US6205543B1 (en) | Efficient handling of a large register file for context switching | |
JP3816961B2 (ja) | バーチャルマシン命令を処理するためのデータ処理装置 | |
US5446849A (en) | Electronic computer which executes squash branching | |
JP2000330790A (ja) | コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム | |
EA004196B1 (ru) | Управляющий программный продукт и система обработки данных | |
JP3702184B2 (ja) | データ処理装置 | |
JPH04309131A (ja) | 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置 | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
KR100472706B1 (ko) | 복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서 | |
JP2004192021A (ja) | マイクロプロセッサ | |
JP2000353091A (ja) | コンピュータシステムにおける命令実行方法およびコンピュータシステム | |
JP5068529B2 (ja) | 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング | |
JP3102399B2 (ja) | データ処理装置及び方法 | |
Ostheimer | Parallel Functional Computation on STAR: DUST— | |
US20100153688A1 (en) | Apparatus and method for data process | |
JP2861234B2 (ja) | 命令処理装置 | |
Gepner | Overview of ia-64 explicitly parallel instruction computing architecture | |
JPH04227541A (ja) | プロセッサ及びループ制御機能処理方法 | |
Verhulst | Non-sequential processing: history and future of bridging the semantic gap left by the von Neumann architecture. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040617 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040901 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050421 |
|
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: 20050706 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050715 |
|
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: 20080722 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090722 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090722 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100722 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110722 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110722 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120722 Year of fee payment: 7 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120722 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120722 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130722 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |