(57)【特許請求の範囲】
【請求項１】
データ・プロセッサ・コントローラであって、
当該データ・プロセッサ・コントローラに接続されたデータ・プロセッサのためにデータ処理オペレーションを生成し、準備し、発行するためのデータ・プロセッサ・コントローラにおいて、
第１速度でデータ・プロセッサ命令を生成する命令生成手段と、
前記第１速度で前記データ・プロセッサ命令を受取り、これらの命令を逓倍することによって前記データ・プロセッサ命令を準備し、その逓倍された命令を、前記第１速度よりも速い第２速度で前記データ・プロセッサに対して発行し、かつ、前記データ・プロセッサ命令の準備をそれらの発行から分離するように構成された命令加速手段と、を備え、
ここで、前記命令加速手段は、前記命令生成手段からの前記データ・プロセッサ命令の受取と非同期に命令が反復された入れ子構成ブロックを発行し、同時に、前記逓倍された前記データ・プロセッサ命令として後に発行される他のタイプの前記データ・プロセッサ命令を準備するように構成され、
前記命令加速手段は、前記命令加速手段を前記命令生成手段から非同期に動作可能とするために非干渉化するデカプラと、前記データ・プロセッサ命令の入れ子構成ブロックを格納するためのデータメモリとを有するデータ・プロセッサ・コントローラ。
【請求項２】
請求項１のデータ・プロセッサ・コントローラであって、前記命令加速手段は、前記命令生成手段で生成された前記データ・プロセッサ命令のバンド幅を増加するように構成されたバンド幅逓倍器であるデータ・プロセッサ・コントローラ。
【請求項３】
請求項１又は２のデータ・プロセッサ・コントローラであって、前記命令生成手段は、前記命令加速手段に対してブロック命令を書き込むように構成されているデータ・プロセッサ・コントローラ。
【請求項４】
請求項１〜３のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、前記データ・プロセッサ命令の個々の命令を反復するように構成されているデータ・プロセッサ・コントローラ。
【請求項５】
請求項１〜４のいずれか一項のデータ・プロセッサ・コントローラであって、前記データ・プロセッサ命令は、前記命令加速手段の動作を制御するための命令を含むデータ・プロセッサ・コントローラ。
【請求項６】
請求項５のデータ・プロセッサ・コントローラであって、前記命令生成手段によって生成される前記データ・プロセッサ命令は、反復制御情報とパラメータとを含むデータ・プロセッサ・コントローラ。
【請求項７】
請求項１〜６のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段の反復動作は、命令のブロックを、決定的回数又は非決定的回数反復するように構成されているデータ・プロセッサ・コントローラ。
【請求項８】
請求項１〜７のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段の前記反復動作は、前記命令生成手段のステータスと、前記データ・プロセッサのステータスとに依存するように構成されているデータ・プロセッサ・コントローラ。
【請求項９】
請求項１〜８のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令ブロックの各反復に異なるスカラ値を受取り、入力するように構成されているデータ・プロセッサ・コントローラ。
【請求項１０】
請求項１〜９のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、複合化フォーマットで前記データ・プロセッサ命令を生成するように構成され、前記命令加速手段は前記複合化フォーマットの前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているデータ・プロセッサ・コントローラ。
【請求項１１】
請求項１〜１０のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、前記データ・プロセッサ命令の圧縮ストリームを生成するように構成され、前記命令加速手段は前記命令ストリームを圧縮解凍するように構成されているデータ・プロセッサ・コントローラ。
【請求項１２】
請求項１１のデータ・プロセッサ・コントローラであって、前記命令加速手段は、圧縮解凍のためのアドレス生成タグを格納するように構成されているデータ・プロセッサ・コントローラ。
【請求項１３】
請求項１〜１２のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、マイクロプロセッサ又はデジタル信号プロセッサであるデータ・プロセッサ・コントローラ。
【請求項１４】
請求項１〜１３のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段、前記命令加速手段及び前記データ・プロセッサは、制御プロセッサによって委任される複数のタスクを取り扱うコプロセッサを構成するデータ・プロセッサ・コントローラ。
【請求項１５】
請求項１４のデータ・プロセッサ・コントローラであって、前記データ・プロセッサと前記制御プロセッサとは、一つのプロセッサに一体化されているデータ・プロセッサ・コントローラ。
【請求項１６】
請求項１〜１５のいずれか一項のデータ・プロセッサ・コントローラであって、前記デカプラは、入力FIFOを含むデータ・プロセッサ・コントローラ。
【請求項１７】
請求項１〜１６のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令をリニアに取り出すように構成された命令取り出しエンジンを含むデータ・プロセッサ・コントローラ。
【請求項１８】
データ・プロセッサ・コントローラであって、
当該データ・プロセッサ・コントローラに接続されたデータ・プロセッサに対してデータ処理オペレーションを発行し、準備し、提供することによって、前記データ・プロセッサを制御するデータ・プロセッサ・コントローラにおいて、
第１速度でデータ・プロセッサ命令を発行する第１プロセッサと、
前記第１プロセッサによって発行された前記データ・プロセッサ命令を受取り、これらデータ・プロセッサ命令を逓倍することによって前記データ・プロセッサに対する提供用に前記データ・プロセッサ命令を準備し、前記逓倍された前記データ・プロセッサ命令を、前記第１速度よりも速い第２速度で前記データ・プロセッサに対して提供し、且つ、前記データ・プロセッサ命令の前記準備を前記逓倍された前記データ・プロセッサ命令の前記提供から分離する逓倍手段と、を備え、
ここで、前記逓倍手段は、前記第１プロセッサからの前記データ・プロセッサ命令の受け取りと非同期に、命令が反復された入れ子構成ブロックを提供し、同時に、前記逓倍された前記データ・プロセッサ命令として後に発行される他のタイプの前記データ・プロセッサ命令を準備するように構成され、
そして前記逓倍手段は、前記逓倍手段を前記第１プロセッサから非同期に動作可能とするために非干渉化するデカプラと、前記データ・プロセッサ命令の前記入れ子構成ブロックを格納するためのデータメモリとを有するデータ・プロセッサ・コントローラ。
【請求項１９】
請求項１８のデータ・プロセッサ・コントローラであって、前記逓倍手段は、バンド幅逓倍器であり、該バンド幅逓倍器によって生成された前記データ・プロセッサ命令のバンド幅は、前記第１プロセッサによって発行された前記データ・プロセッサ命令のバンド幅から増大されるデータ・プロセッサ・コントローラ。
【請求項２０】
請求項１９のデータ・プロセッサ・コントローラであって、前記第１プロセッサは、前記データ・プロセッサ命令を圧縮するように構成され、前記バンド幅逓倍器は、圧縮された前記データ・プロセッサ命令を圧縮解凍するように構成されているデータ・プロセッサ・コントローラ。
【請求項２１】
請求項１９又は２０のいずれかのデータ・プロセッサ・コントローラであって、前記第１プロセッサは、バンド幅逓倍器制御情報を前記データ・プロセッサ命令に追加するように構成され、前記バンド幅逓倍器は、前記バンド幅逓倍器制御情報に依って、前記データ・プロセッサ命令を逓倍するように構成されているデータ・プロセッサ・コントローラ。
【請求項２２】
請求項１９又は２０のいずれかのデータ・プロセッサ・コントローラであって、前記バンド幅逓倍器は、前記データ・プロセッサと前記第１プロセッサとからステータス／演算結果情報を受取るように構成されているデータ・プロセッサ・コントローラ。
【請求項２３】
請求項２２のデータ・プロセッサ・コントローラであって、前記バンド幅逓倍器は、前記データ・プロセッサと前記第１プロセッサから受取った前記ステータス情報に依って、前記データ・プロセッサ命令を逓倍するように構成されているデータ・プロセッサ・コントローラ。
【請求項２４】
請求項１９〜２３のいずれか一項のデータ・プロセッサ・コントローラであって、前記第１プロセッサは、前記データ・プロセッサ命令を含むデータと命令とのストリームを生成するように構成され、前記逓倍手段は、前記データ・プロセッサ用の前記逓倍化された前記データ・プロセッサ命令を含む逓倍化されたデータ及び情報のストリームを生成するように構成されているデータ・プロセッサ・コントローラ。
【請求項２５】
請求項１８〜２４のいずれか一項のデータ・プロセッサ・コントローラであって、前記第１プロセッサは、前記データ・プロセッサ命令を複合化フォーマットで生成するように構成され、前記逓倍手段は、これらの複合化された前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているデータ・プロセッサ・コントローラ。
【請求項２６】
請求項１８〜２５のいずれか一項のデータ・プロセッサ・コントローラであって、前記データ・プロセッサは、単一命令ストリーム多重データ（ＳＩＭＤ）データ・プロセッサであるデータ・プロセッサ・コントローラ。
【請求項２７】
請求項１８〜２６のいずれか一項のデータ・プロセッサ・コントローラであって、前記第１プロセッサはマイクロプロセッサ又はデジタル信号プロセッサであるデータ・プロセッサ・コントローラ。
【請求項２８】
請求項１８〜２７のいずれか一項のデータ・プロセッサ・コントローラであって、該データ・プロセッサ・コントローラと前記データ・プロセッサとは、一つのシリコン・デバイスに一体形成されているデータ・プロセッサ・コントローラ。
【請求項２９】
バンド幅逓倍器であって、該バンド幅逓倍器に接続されたデータ・プロセッサを制御するためのデータ・プロセッサ命令を逓倍するバンド幅逓倍器において、該バンド幅逓倍器は、
第１データ幅を有する通信チャンネルを介して前記データ・プロセッサ命令を受取る入力手段と、
前記入力手段に接続されて前記データ・プロセッサのための出力命令を準備し、出力する逓倍手段と、を有し、
前記逓倍手段は、前記データ・プロセッサのための前記出力命令の前記準備を、前記データ・プロセッサに対する前記出力命令から分離して行うように構成されると共に、前記データ・プロセッサのための前記出力命令を生成するために、受け取られた前記データ・プロセッサ命令の入れ子構成ブロックを逓倍するものであり、
前記データ・プロセッサのための前記出力命令は、前記１データ幅よりも大きな第２データ幅を有する、
ここで、前記入力手段は、前記データ・プロセッサ命令の受取りから前記逓倍手段を非同期に動作可能とするために非干渉化するデカプラを含み、
前記逓倍手段は、前記データ・プロセッサ命令の前記受取りと非同期に命令の入れ子構成ブロックを反復し、同時に、前記逓倍された命令として後に前記データ・プロセッサに出力される他のタイプのデータ・プロセッサ命令を準備するように構成され、そして、
前記バンド幅逓倍器は、命令の前記入れ子構成ブロックを格納するためのデータメモリと、前記入れ子構成命令ブロックを前記データメモリ内に保持し、それらを前記データ・プロセッサに反復して送信するための反復制御ロジック手段とを有するバンド幅逓倍器。
【請求項３０】
請求項２９のバンド幅逓倍器であって、前記データ・プロセッサ命令は、前記逓倍手段の動作を制御するための命令を含むバンド幅逓倍器。
【請求項３１】
請求項２９又は３０のバンド幅逓倍器であって、前記逓倍手段は、前記入力手段によって受取られた前記データ・プロセッサ命令に含まれる個々の命令を反復するための命令反復手段を有するバンド幅逓倍器。
【請求項３２】
請求項３０のバンド幅逓倍器であって、前記逓倍手段は、前記入力手段によって受取られた前記データ・プロセッサ命令に含まれる個々の命令を反復するための命令反復手段を有し、前記入力手段によって受取られた前記データ・プロセッサ命令は、命令反復制御情報を含み、前記命令反復手段は、前記命令反復制御情報を使用して個々のデータ・プロセッサ命令を反復するように構成されているバンド幅逓倍器。
【請求項３３】
請求項２９〜３２のいずれか一項のバンド幅逓倍器であって、前記バンド幅逓倍手段は、前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するためのブロック反復手段を有するバンド幅逓倍器。
【請求項３４】
請求項３０のバンド幅逓倍器であって、前記バンド幅逓倍手段は、前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するためのブロック反復手段を有し、前記入力手段によって受取られた前記データ・プロセッサ命令は、ブロック反復制御情報を含み、前記ブロック反復手段は、前記ブロック反復制御情報を使用して前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するように構成されているバンド幅逓倍器。
【請求項３５】
請求項３３又は３４のバンド幅逓倍器であって、前記入力手段によって受取られる前記データ・プロセッサ命令は、アドレスフィールドを含み、前記ブロック反復手段は、前記ブロック命令の反復に依って、前記アドレスフィールドを変更するように構成されているバンド幅逓倍器。
【請求項３６】
請求項２９〜３５のいずれか一項のバンド幅逓倍器であって、前記入力手段は、複合化フォーマットで前記データ・プロセッサ命令を受取るように構成され、前記逓倍手段は、これら複合化された前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているバンド幅逓倍器。
【請求項３７】
請求項２９〜３６のいずれか一項のバンド幅逓倍器であって、更に、前記入力手段によって受取られた圧縮命令を圧縮解凍するための命令取り出し手段を有するバンド幅逓倍器。
【請求項３８】
請求項３７のバンド幅逓倍器であって、前記入力手段は、それが受取る前記データ・プロセッサ命令にタグを追加するように構成され、前記命令取り出し手段は前記タグを使用して前記命令を圧縮解凍するように構成されているバンド幅逓倍器。
【請求項３９】
請求項２９〜３８のいずれか一項のバンド幅逓倍器であって、前記デカプラは、ＦＩＦＯを有するバンド幅逓倍器。
【請求項４０】
請求項２９〜３９のいずれか一項のバンド幅逓倍器であって、更に、前記データ・プロセッサの演算結果又はステータスを読み出し、これを制御プロセッサに書き込む出力バッファを有するバンド幅逓倍器。
【請求項４１】
請求項２９〜４０のいずれか一項のバンド幅逓倍器であって、前記入力手段は、前記データ・プロセッサ命令を有するデータと命令のストリームを受取るように構成され、前記逓倍手段は、前記データ・プロセッサのための前記逓倍化された前記データ・プロセッサ命令を含む逓倍されたデータ及び命令のストリームを生成するように構成されているバンド幅逓倍器。
【請求項４２】
データ・プロセッサを制御するためのデータ・プロセッサ命令を発行し、準備し、提供する方法であって、
第１速度で前記データ・プロセッサ命令を発行する発行工程と、
前記発行された前記データ・プロセッサ命令を読み出す読出工程と、
前記データ・プロセッサ命令の入れ子構成ブロックをデータメモリに格納する格納工程と、
前記データ・プロセッサ命令の前記入れ子構成ブロックを逓倍する逓倍工程を有して前記データ・プロセッサのためのデータ・プロセッサ命令を準備する準備工程と、
前記逓倍化された前記データ・プロセッサ命令を、前記第１速度よりも速い第２速度で前記データ・プロセッサに書き込む書込工程と、
前記準備工程を前記書込工程から分離する分離工程と、を有し、
ここで、前記準備工程は、前記読出工程と非同期に前記データ・プロセッサ命令の入れ子構成ブロックを反復し、同時に、後の前記データ・プロセッサへの書き込みのために他のタイプのデータ処理命令を準備する工程を含み、
前記読出工程は、前記逓倍工程を前記発行工程から非同期に動作可能とするために非干渉化する工程を含む方法。
【請求項４３】
請求項４２の方法であって、前記逓倍工程は、前記第１速度で発行された前記データ・プロセッサ命令のバンド幅から、前記第２速度で生成された前記データ・プロセッサ命令のバンド幅に増加させる工程を含む方法。
【請求項４４】
請求項４２又は４３の方法であって、前記発行工程は、前記データ・プロセッサ命令を圧縮する工程を含む方法。
【請求項４５】
請求項４２〜４４のいずれかの方法であって、前記逓倍工程は、前記データ・プロセッサ命令を圧縮解凍する工程を含む方法。
【請求項４６】
請求項４２〜４５のいずれか一項の方法であって、前記発行工程は、複合化フォーマットで前記データ・プロセッサ命令を生成する工程を含み、前記読出工程は、この複合化された命令を非複合化フォーマットに分離する工程を含む方法。
【請求項４７】
請求項４２〜４６のいずれか一項の方法であって、前記発行工程は、前記バンド幅逓倍手段の動作を制御するための命令を含む命令を発行する工程を含む方法。
【請求項４８】
請求項９〜１７のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令ブロックの各反復に入力するための異なるスカラ値を格納するためのＦＩＦＯを含むデータ・プロセッサ・コントローラ。
【請求項４９】
請求項９〜１７のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、適切なスカラ値が受け取られるまで、前記命令の反復ブロックの発行を一時停止するように構成されているデータ・プロセッサ・コントローラ。
【請求項５０】
請求項１〜２８、４８、４９のいずれか一項のデータ・プロセッサ・コントローラ、又は、請求項２９〜４１のいずれか一項のバンド幅逓倍器を含む、或いは、請求項４２〜４７のいずれか一項の方法によって作動するように構成された、プロセッサ制御デバイス又は装置。
【発明の詳細な説明】
本発明は、概して、コンピュータ技術に於ける並列処理、より具体的には、単一命令多重データ（ＳＩＭＤ）データ・プロセッサ等の並列式コンピュータのために命令を生成するためのシステム、装置及び方法に関する。
並列処理は、大半の挑戦的な科学及び工学的問題の計算要求に答えるべくますます利用されている。というのは、そのような問題に必要とされる計算性能は、通常、汎用の直列式コンピュータによって提供されるよりも数桁大きなものであるからである。並列処理の発達によって、画像処理、人工神経回路網、気象予報、及び原子炉の計算を含む広い範囲の用途が開かれている。
異なるモードの演算をサポートするために異なる並列式コンピュータアーキテクチャが使用されるが、非常に一般的には、並列式コンピュータのコアコンポーネントには、それぞれが単数又は複数のデータメモリと、オペランドレジスタとを備えた複数の処理素子（ＰＥ）からなるネットワークが含まれ、前記各処理素子は、相互接続網（ＩＮ）を介して相互接続されている。
並列処理に対する最も広く研究されているアプローチの一つは、アレイ・プロセッサに関するものであり、これは、多重データストリームプロセッサ処理される単一命令ストリーム（単一命令多重データ、又はＳＩＭＤプロセッサとして知られている）に於いて一般的に実施されている。ＳＩＭＤプロセッサの基本処理ユニットは、処理素子（ＰＥ）、メモリ素子（Ｍ）、制御ユニット（ＣＵ）そして相互接続網（ＩＮ）である。その作動に於いて、前記ＣＵは、プログラムから命令シーケンスを取り出し、これをデコードし、次に、すべてのＰＥを、それらに対して制御信号を放送することによって同期させる。これに対して、一つの共通の命令ストリームの制御下で作動するＰＥは、同じ命令を、但し、それぞれがそれ自身のメモリから取り出した異なるデータに対して実行する。前記相互接続網は、処理装置とメモリとの間のデータ通信を容易にする。従って、ＳＩＭＤプロセッサに於ける並列化のキーは、一つの命令が、単数ではなく複数のオペランドに対して同時操作にすることにある。
標準的な構成に於いて、ＳＩＭＤプロセッサは、ホストコンピュータに取り付けられ、このホストコンピュータは、ユーザの観点から見れば、フロントエンドシステムである。ホストコンピュータの役割は、コンパイルを実行すること、プログラムをロードすること、入出力（Ｉ／Ｏ）処理を行うこと、そして、その他のオペレーティング・システム機能を実行することである。
本出願人によって製造販売されているＳＩＭＤプロセッサの一例である、ＡｓｐｅｘTMＡＳＰTM（連想ストリングプロセッサ：Ａｓｓｏｃｉａｔｉｖｅ Ｓｔｒｉｎｇ Ｐｒｏｃｅｓｓｏｒ）データ・プロセッサは、典型的な機器構成に於いて、並列で、１０００ないし１００，０００のデータアイテムを処理することができる。前記ＡＳＰの現行の実施形態の主要な特徴は、以下である。
○  ８．１ｍｍ  ×  ９．３ｍｍサイズの一つのデバイス上に２５６個の処理素子から１４．５ｍｍ  ×  １３．５ｍｍのサイズの一つのデバイス上に１１５２個の処理素子。
○  毎秒２０Ｍ−５０Ｍの命令（２０−５０ＭＩＰＳ）速度で作動する８０−８２ビット幅のＤＰＣインターフェース。
○  ４０−１００ＭＨｚのクロック速度。
既に実施されているＡＳＰは、３２ビットのコントロールフィールドと、３２ビットのデータフィールドと１２ビットのアクティビティフィールドとから成る７６ビット幅の命令によって制御される。このＡＳＰは、受取られた各命令に対して、２つ（逐次的に実行される）の演算を実行する。これをサポートするために、前記コントロールフィールドは、更に、副命令フィールドＡ，Ｂに分割されている。前記ＡＳＰへのデータＩ／Ｏは、高速チャンネルを使用するが、それは、又、制御ユニットに対して３２ビット幅の値に戻すことができ、制御ユニットによってモニタ可能な４本のステータス線を有する。
前記ＡＳＰは、ビット逐次（一度に１ビット）式又はビット並列（一度に多数のビット）式にＡＰＥのデータに対して演算を行うことができる。演算は、一つのオペランドがすべてのＡＰＥで同じ値である場合には、スカラ−ベクトル演算、その他すべての場合にはベクトル−ベクトル演算、として分類される。ベクトル−ベクトル演算の場合、制御ユニットは、命令中のオペランドアドレスを供給しなければならず、これらは通常、ビット逐次式に行われる。スカラ−ベクトル演算の場合、制御ユニットは、共通の、即ち、スカラな、オペランドの値と、命令中の第２オペランドのアドレスとを供給する必要があり、これらは、ビット逐次式又は並列式に行われる。両方の場合に於いて、その演算結果のアドレスも、命令中に含まれている必要がある。
ＳＩＭＤプロセッサを制御する目的の為に、アーキテクチャの範囲は、二つのケース、即ち、スタンドアローンとコプロセッサ、とによって限定されているものと見なすことが出来る。その他のアーキテクチャは、これら二つの基本的ケースのバリエーション、複合又は多重構成である。スタンドアローン、コプロセッサ及び中間アーキテクチャに共通する制御ユニットは、データ・プロセッサ・コントローラ（ＤＰＣ）である。後に明らかになるように、ＤＰＣは制御ステートメントを実行し、ＳＩＭＤプロセッサに対して命令を発行する。
添付の図面の図１に図示されているスタンドアローン構成は、二つのブロック、即ち、データを操作するＳＩＭＤプロセッサと、ＳＩＭＤプロセッサに命令を発行し、これによってこのＳＩＭＤプロセッサの動作を制御するＤＰＣ、とから成る。スタンドアローン構成の特徴は、データＩ／ＯがＳＩＭＤプロセッサに直接につながっていることにある。オプションの外部命令及びステータスチェックは、ＤＰＣを出入りする。
図２に図示されているコプロセッサ構成は、ＤＰＣを介して、より一般的な単一命令ストリームで単一データを演算するプロセッサ（単一命令単一データ又はＳＩＳＤプロセッサとして知られている）として具体化されたより一般的なプロセッサに接続されている。前記ＤＰＣとＳＩＭＤプロセッサとの組み合わせは、ＳＩＳＤプロセッサに対するコプロセッサと見なすことができる。
ＳＩＳＤプロセッサには、その複雑性に於いて、ＡＲＭ等のプロセッサコアから、インテル社のペンティアムやサン社のＳＰＡＲＣ等のマイクロプロセッサ、更に、ＩＢＭ／Ａｐｐｌｅ  ＰＣやＳｕｎ／ＤＥＣワークステーション（すべて認証商標）等の完全な機械まである。
ＳＩＳＤによる所与のプログラムの実行中、システムの組織は、ＳＩＳＤが或る種のタスクを、それらのパラメータと共に、コプロセッサに委任するように構成される。ＤＰＣとＳＩＭＤとの間に於けるこのタスクの分割は、スタンドアローンの場合も同じである。コプロセッサがその割り当てられたタスクを実行している間、ＳＩＳＤプロセッサはプログラムの実行を続け、その全体の結果として、プログラムステップは、そのプログラムの実行をＳＩＳＤプロセッサのみに依存した場合よりも早く完了する。たとえば、画像処理アプリケーションに於いて、プログラムは、一つの画像のすべての画素を値Ｘで割るステートメントを含み、ＳＩＳＤプロセッサは、このステートメントと値Ｘの実行をコプロセッサに割り当てる。同様に、たとえば、そのプログラムの別の部分がその画像の二次元重畳を実行するならば、このタスクも、その実行をコプロセッサに割り当てられるであろう。
特に、ＤＰＣの主要な属性は以下の通りである。
○  ＳＩＭＤプロセッサに対して、通常は毎秒２０−１００Ｍ命令の非常に高速で命令を供給する。
○  通常、数百ビット幅のビット幅の大きな命令を生成する。
○  データプロセッサからのステータス情報を処理する。
現在に於いて、公知のＤＰＣは、二つの大きなカテゴリ、（ｉ）ダイレクトプロセッサドライブ、と（ｉｉ）カスタムマイクロ−コードシーケンサー、のいずれかに分類される。
ダイレクトマイクロプロセッサドライブは、データ・プロセッサ命令を生成し、アセンブルするために、プログラム内蔵マイクロプロセッサ又はデジタル信号プロセッサ（ＤＳＰ）装置で実行されるソフトウェアを使用した多目的で単純なＤＰＣソリューションを提供する。図３は、そのようなソリューションを図示している。前記ＳＩＭＤプロセッサのＭ−ビット幅の命令とＮ−ビット幅のステータス／演算結果インターフェースは、Ｐビット幅のインターフェースへのレジスタを介してマイクロプロセッサ／ＤＳＰのアドレス／データバス又はＩ／Ｏチャンネルに接続され、一般に、Ｍおよび／又はＮは、Ｐよりも大きい。その使用に於いて、ソフトウェアプログラムは、それに一度にＰビット書き込むことによって各データ・プロセッサ命令を組み立て、すべてのＭビットが書き込まれると、その命令が発行される。同様に、Ｎ−ビットステータス／演算結果データがセグメント単位で読まれる。
上記ダイレクトマイクロプロセッサドライブ法の汎用性は、マイクロプロセッサ／ＤＳＰによるデータ・プロセッサ命令の直接生成から来るものである。しかしながら、その主要な欠点は、それぞれのＭ−ビット命令の命令を書き込む必要による命令生成速度が遅いことにあり、最新のマイクロプロセッサ／ＤＳＰでさえもその書き込み速度は比較的遅い。その結果、ＤＳＰの動作速度は、ＳＩＭＤが動作可能な速度よりも遅れ、従って、ＳＩＭＤプロセッサの処理能力は利用されないままとなる。
次にカスタムマイクロ−コードシーケンサーＤＰＣに言及すると、これらは、完全なアプリケーション、又は、一つのアプリケーションを構築するためにアセンブル可能な単純なタスクを実行するマイクロルーチンのライブラリによってマイクロコード化された、カスタムマイクロ−コードシーケンサー又はビット−スライスシーケンサーアーキテクチャを使用している。前記マイクロコードは、通常、ハードワイヤードされているか、若しくは、アプリケーションの実行前にダウンロードされるが、或る種のＤＰＣは、アプリケーションが実行させている間にそのマイクロコードを変更する機構を備えている。
図４は、単純化されたマイクロ−コードＤＰＣソリューションを図示している。これは、４つのブロック、即ち、１）マイクロ−コードシーケンサー、２）演算プロセッサユニット（ＡＰＵ）、３）データ・プロセッサ命令マルチプレクサ（ＤＰＭＸ）及び４）命令バッファ、から成る。これら各ユニットを説明すると、
１）マイクロ−コードシーケンサーは、それがベースデータ・プロセッサ命令を生成するという意味に於いて、ＤＰＣを制御する。該シーケンサーは、前記アドレス生成ユニットによってアドレスされるマイクロ−コードを保持する非常に幅広で高速のメモリを備え、その出力はレジスタされ、次に、シーケンサーのアドレス生成ユニット及び他のＤＰＣブロックを制御するか、若しくは、データ・プロセッサ命令を含むマイクロ−オーダフィールドに分割される。前記アドレス生成ユニットは、呼、ブランチ、決定型及び非決定型ループを実行するための専用ロジックを有する。それは、ＤＰＣ又はＳＩＭＤプロセッサの状態に基づいて決定を行うことを可能にするテスト入力を有し、更に、ブランチアドレス又はループカウント値をロードするためのデータ入力を有する。
２）前記ＡＰＵは、一般的な算術演算を行う。これには、前記命令バッファからのパラメータ、ＳＩＭＤプロセッサからの演算結果、前記マイクロ−コードシーケンサーからのリテラル、をロードすることができる。その演算結果は、シーケンサーを制御するため、若しくは、データ・プロセッサ命令をパラメタライズするために使用される。しばしば、ＡＰＵは、データ・プロセッサ命令のオペランド／演算結果アドレスフィールドの生成と、データ・プロセッサがスカラ−ベクトル演算を行っている時には、そのスカラ値を操作する機能を有する。実際には、ＤＰＣは、それぞれが特定の一つの機能又は複数組の機能に割り当てられた、プライベートデータ経路を備えた多数のＡＰＵを備えたものとされる。たとえば、典型的なマイクロ−コードシーケンサーＤＰＣは、特定の機能専用とされた４ないし６のＡＰＵと、非常に高速のランダムアクセススタチックメモリから成る２００ビット幅のマイクロ−コード記憶装置とを有する。
３）前記ＤＰＭＸは、前記マイクロ−コードシーケンサーによって作り出されたベースデータ・プロセッサ命令をパラメタライズし、その命令のいくつかの部分をＡＰＵレジスタから取り出された値と置換する。
４）前記命令バッファは、ＤＰＣの外部制御手段を提供し、そのパラメータと共にタスク請求が、バッファから取り出され、演算結果とステータス情報がバッファに格納される。バッファは、単純なレジスタ、小型メモリ、又は先入れ先出し（ＦＩＦＯ）メモリとして構成することができる。スタンドアローンの場合、命令バッファはオプションである。
カスタムマイクロ−コードシーケンサーアーキテクチャを備えたＤＰＣの一例は、ＡｓｐｅｘTMＭｉｃｒｏｓｙｓｔｅｍｓ  ＬＡＣ−１００１TMカードである。このカードは、５０ナノ秒毎に８０ビットデータ命令を生成する。これは、３４０ｍｍ  ×  ３６７ｍｍのサイズで、５ボルトで１２アンペアの消費電力である。
カスタムマイクロ−コードシーケンサーの主要な利点は、その動作速度である。しかしながら、これは、そのフレキシビリティの欠如と、回路の複雑性とによって相殺されてしまう。このようなＤＰＣソリューションは、それを行うようにマイクロコード化されたタスクのみしか行うことが出来ず、マイクロ−コードのフレキシビリティは、それをアプリケーション特定にし、その有用性を限定するハードウエアの機能とデータ経路とによって限定される。更に、回路の複雑性によって、ＤＰＣは、大きく、高価で電力消費量が大きいという欠点を持つ。
回路の複雑性から特に生じる欠点は、数多くの望ましくないノックオン作用を有する。先ず、その回路設計は精密なものでなければならず、従って、多数のコンポーネントを製造、組み立て、コード化、テストしなければならない。必然的に、その回路は比較的大きなものとなり（典型的には、約１２５０ｃｍ2）、従って、ＰＣベース又はＯＥＭ仕様に不適な「ビッグ・ボックス（“ｂｉｇ  ｂｏｘ”）装置が必要となる。別の重要な問題は信頼性であり、複雑で多数のコンポーネントから成る回路では、これは常に問題となる。
これらの要因全部によって、コストが増加することは明白であり、これにより、この技術の利用可能性が劇的に限定されてしまう。たとえば、回路コストによって、３Ｄ医療用撮像システムは、１００万ポンド〜１０００万ポンドになり、それでも、まだ理想的なリアルタイム性能基準を満たすことができない。
このような背景に対して、本発明は、カスタムマイクロ−コードシーケンサー方式の性能と、ダイレクトマイクロプロセッサドライブ方式のフレキシビリティとを、ダイレクトドライブ方式のサイズ及びコスト、又はそれらに近いサイズ、コストで達成するＤＰＣを提供することを目的とする。
この目的の為に、本発明は、高速、即ち、その命令生成バンド幅を増加する回路に対して、低速で生成されたマイクロプロセッサ命令を供給する。ここで「速度」という用語は、所与の時間中に生成される命令の数を意味し、「命令生成バンド幅」という用語は、所与の時間中に生成される命令ビットの数を意味する。
本発明は、スタンドアローンの場合とコプロセッサの場合との両方に適用可能である。スタンドアローンのケースに於いて、ＤＰＣが、データ・プロセッサ命令を含むプログラムの制御ステートメントを実行し、これらデータ・プロセッサ命令を逓倍し、その逓倍されたデータ・プロセッサ命令を、データを操作するデータ・プロセッサに送る。逓倍化データ・プロセッサ命令の生成速度は、プログラムのステートメントの実行速度よりも速い。
コプロセッサのケースに於いては、ＳＩＳＤプロセッサがプログラムを実行し、いくつかのタスクを、ＤＰＣとデータ・プロセッサから成るコプロセッサに委任する。ＤＰＣは、データ・プロセッサ命令を逓倍し、それらをデータ・プロセッサに対して、ＤＰＣがＳＩＳＤプロセッサから前記データ・プロセッサ命令を受取る速度よりも速い速度で送る。
本発明は、データ・プロセッサ命令ストリーム又は、典型的なアプリケーションによって作り出される命令ブロックの二つの特性を利用することができる。第１に、個々の命令と命令ブロックとを繰り返すことが可能である。第２に、命令ストリームを圧縮することができる。データ・プロセッサ命令ストリーム中の大半のループが、各反復中に於いて、そのオペランド／演算結果アドレス又は（スカラ−ベクトル演算の場合）スカラ値のいずれかが変化することを認識することによって、性能を更に増すことが可能である。
前記データ・プロセッサ命令には、逓倍回路の作動を制御するための特定の命令を含ませることができる。このようにすることにより、前記回路に、その回路が実行することが要求されうる特定のタスクセットをプリロードする必要がなくなる。むしろ、データ・プロセッサ命令に特定の命令を含ませることによって、ＤＰＣによって生成される命令ストリームを、ラン・タイムで、必要とされる特定の逓倍プロセスに関するなんら特定の知識無しで、データ・プロセッサに適したフォーマットに逓倍することが可能となる。従って、本発明のデータ・プロセッサ・コントローラは、非常にフレキシブルで、しかも、高価となりうる複雑な追加回路を必要としない。
本発明の逓倍化の側面の別の見方は、逓倍回路によって受取られるデータ・プロセッサ命令が、拡張されることによって多数化されるということである。この特徴によって、データ・プロセッサ命令生成器と、逓倍回路と、そのデータ・プロセッサ自身との間の物理的データ経路を、最大効率で完全に使用することが可能となり、各データ経路はその最適能力で作動する。加えて、前記データ・プロセッサ命令を複合フォーマットで生成し、これらがデータ・プロセッサに非複合フォーマットで到達する前に、前記逓倍回路によって分離することができる。従って、データ・プロセッサ命令生成器は、それら経路の内の最も遅い経路によってその全体の性能が制限されること無く、比較的小さなバンド幅の経路に沿って前記逓倍回路へ、又、比較的大きなバンド幅の経路に沿って逓倍回路からデータ・プロセッサへ命令を出力することができる。
換言すると、本発明は、データ・プロセッサを制御するデータ・プロセッサ・コントローラであって、第１速度でデータ・プロセッサ命令を発行する第１プロセッサと、前記第１プロセッサによって発行された前記データ・プロセッサ命令を受取り、これらのデータ・プロセッサ命令を逓倍し、その逓倍化データを前記第１速度よりも速い第２速度で前記データ・プロセッサに送る多重化手段とを有する、ものを提供する。
その一態様に於いて、本発明は、データ・プロセッサ・コントローラであって、第１速度でデータ・プロセッサ命令を生成するための命令生成手段と、前記第１速度で前記データ・プロセッサ命令を受取り、かつ、これらの命令を逓倍し、その逓倍化された命令を、前記第１速度よりも速い第２速度で前記データ・プロセッサに転送するように構成された命令加速手段とを有するものを提供する。
同じ発明概念内に於いて、本発明は、更に、データ・プロセッサを制御するデータ・プロセッサ命令を逓倍するためのバンド幅逓倍器を含み、該バンド幅逓倍器は、命令を受取る入力手段と、前記入力手段によって受取られた命令に含まれるデータ・プロセッサ命令を逓倍するためのバンド幅逓倍手段とを有する。
本発明は、更に、データ・プロセッサを制御する方法にまで拡張され、この方法は、第１速度でデータ・プロセッサ命令を発行する工程と、前記データ・プロセッサ命令を読み取る工程と、前記データ・プロセッサ命令を逓倍する工程と、そして、前記第１速度よりも速い第２速度で前記逓倍化データ・プロセッサ命令を書き込む工程とを有する。
上述した本発明の要旨、又、その好適実施例に関する以下の記載は、添付の図面を参照して読まれることによってより良く理解されるであろう。本発明を例示する目的で、図面には、現在に於いて好適とされる実施例が図示されているが、本発明は、ここに開示された特定の構成に限定されるものではない、と理解される。
図中：
図１は、従来技術のスタンドアローンのケースを示すブロック図、
図２は、従来技術のコプロセッサのケースを示すブロック図、
図３は、従来技術のダイレクトマイクロプロセッサドライブデータ・プロセッサコプロセッサ（ＤＰＣ）を示すブロック図、
図４は、従来技術のカスタムマイクロ−コードシーケンサーＤＰＣを示すブロック図、
図５は、本発明の実施例に依るＤＰＣアーキテクチャを示すブロック図、
図６は、図５に示したＤＰＣに使用されるバンド幅逓倍器を示すブロック図、
図７は、図６に示したバンド幅逓倍器に使用されるブロック反復エンジンを示すブロック図、
図８は、本発明の別実施例に依るバンド幅逓倍器を示すブロック図、
図９は、本発明の更に別の実施例に依るＤＰＣアーキテクチャを示すブロック図、
図１０は、図９のＤＰＣに使用されるバンド幅逓倍器を示すブロック図、そして
図１１は、図１０に示したバンド幅逓倍器に使用されるブロック反復エンジンを示すブロック図である。
図１−４は、従来技術を概観するのに導入部に於いて説明した。次に図５を参照して、これは、スタンドアローンのケースに於ける本発明の一好適実施例に依るデータ・プロセッサ・コントローラ（ＤＰＣ）アーキテクチャを示している。このＤＰＣアーキテクチャは、データ・プロセッサ５０５と、更に、マイクロプロセッサ５０１とバンド幅逓倍器５０３とから成るＤＰＣとを有する。前記データ・プロセッサ５０５は、単一命令ストリーム多重データ（ＳＩＭＤ）プロセッサである。前記マイクロプロセッサ５０１は、デジタル信号プロセッサ（ＤＳＰ）とすることができる。
コプロセッサのケースに於いて、前記ＤＰＣアーキテクチャは、更に、前記データ・プロセッサを制御するＤＰＣに接続された単一命令単一データ（ＳＩＳＤ）プロセッサを有する。実際には、前記ＳＩＳＤプロセッサとＤＰＣの役割を果す一つのＳＩＳＤプロセッサからシステムを構築することが可能であるが、ＳＩＳＤプロセッサが実行するべき多数のタスクを有して、前記バンド幅逓倍器に対して供給するのに十分な時間を費やすことが出来ない場合には、二つのＳＩＳＤプロセッサ、即ち、一つはＳＩＳＤプロセッサとして、他は、ＤＰＣマイクロプロセッサとして、を使用することになるであろう。
図５に図示されているように、前記データ・プロセッサのＭビット幅命令５０７及びＮビット幅ステータス／演算結果インターフェース５０９は、前記バンド幅逓倍器５０３を介して、マイクロプロセッサ５０１のアドレス／データバス又はＩ／Ｏチャンネル５１１へのＰビット幅インターフェースに接続されている。一般に、Ｍおよび／又はＮは、Ｐよりも大きなものとなる。
前記マイクロプロセッサ５０１内のプログラムは、データ・プロセッサ命令と、バンド幅逓倍器５０３のための制御情報とを組み合わせたＭ*ビット幅の命令を組み立て、これの組み合わせＭ*ビット幅命令を、一度にＰビット、即ち、Ｐビット幅ワード、の圧縮フォーマットで前記バンド幅逓倍器５０３に書き込む。このように完全な圧縮された命令が書き込まれると、バンド幅逓倍器５０３は、それを使用して、データ・プロセッサ５０５に対してＭビット幅命令列５０７を生成する。データ・プロセッサ５０５の前記Ｎビットステータス／演算結果５０９は、マイクロプロセッサ５０１によって一度にＰビット読み取られる。
前記組み合わせＭ*ビット命令がループの各反復に対して異なるスカラ値を要求する前記データ・プロセッサ命令ストリーム中のループを表わすものである場合、前記マイクロプロセッサ５０１のソフトウェアプログラムは、更に、そのスカラ値の列をバンド幅逓倍器５０３に送らなければならない。この列も、又、一度にＰビット書き込まれる。
図６は、図５に示したバンド幅逓倍器５０３の一好適実施例のブロック図である。バンド幅逓倍器５０３は、以下の５つの要素を有する。
１．マイクロプロセッサ５０１がバンド幅逓倍器５０３とデータ・プロセッサ５０５との回路に対して非同期的に動作することを可能にする入力ＦＩＦＯ６０１、
２．前記入力ＦＩＦＯ６０１から圧縮命令を読み出し、それらを圧縮解凍する命令取り出しエンジン（ＩＦＥ）６０３、
３．一連の命令を反復するブロック反復エンジン（ＢＲＥ）６０５、
４．個々の命令を反復する命令反復エンジン（ＩＲＥ）６０７、そして
５．前記マイクロプロセッサ５０１と前記データ・プロセッサ５０５とに接続された出力バッファ６０９。
前記入力ＦＩＦＯ６０１には、前記マイクロプロセッサ５０１によって生成された圧縮組み合わせＭ*ビット命令を構成するＰビット幅のワード列から成る一ブロックの情報と、それに関連するスカラデータ値がロードされる。各ワードは、それが前記命令のどの部分を示すものであるかを定義するタグとともに、前記入力ＦＩＦＯ６０１に格納される。このタグの値は、二つの方法で得ることができる。これは、前記マイクロプロセッサ５０１によって書き込まれたワードの一部とすることができる。或いは、それは、たとえば、前記マイクロプロセッサ５０１がそこに書き込みを行うアドレスから派生されるもの、等の前記ワードに対する追加、とすることができる。
単一のバッファの代りに入力ＦＩＦＯ６０１を使用することによって、前記バンド幅逓倍器５０３は、前記マイクロプロセッサ５０１に対して非同期的に作動することが可能となる。このことの具体的な利点は、マイクロプロセッサ５０１が、バンド幅逓倍器５０３が次の命令を生成し、ロードするべく、既にロードされた命令から長い列を生成している時間を利用することが出来ることにある。換言すると、前記ＦＩＦＯは、パイプライン処理、即ち、バンド幅逓倍器５０３によるデータ・プロセッサ命令の生成と、マイクロプロセッサ５０１による命令の生成とローディングとの間の重複、を可能にする。
前記ＩＦＥ６０３は、入力ＦＩＦＯ６０１から、Ｐ*ビット幅ワードの列、タグ付きＰビット幅ワード、としての圧縮命令、を読み取る。次に、ＩＦＥ６０３は、そのワードが命令のどのフィールドを表わすものであるかを確認するためにそのタグを使用することによって、その圧縮された命令を圧縮解凍する。この解凍圧縮プロセスの終わりに於いて特定されなかった、命令のフィールドは、そのデフォルト値か、若しくは、以前にロードされた値のいずれかにセットされる。データ・プロセッサループ中での使用のために提供されるすべてのスカラ値が、前記ＩＦＥ６０３によって前記命令ストリームから分離され、前記スカラ書き込みＦＩＦＯ６１１に格納される。
前記ＢＲＥ６０５は、ＩＦＥ６０３から圧縮解凍された命令を受取る。図７は、このＢＲＥ６０５の詳細を図示している。該ＢＲＥ６０５は、ＩＦＥ６０３から圧縮解凍済み命令を受け入れ、それらをバッファメモリ７０１に格納する。それは、このバッファメモリ７０１から、ＩＲＥ６０７に命令を送り、オプションとして、命令中のいくつかのフィールドを、ＢＲＥレジスタ７０３からの取り出された値と置換する。即ち、ＩＲＥ６０７に一つの命令が送られた時、それは、バッファメモリ７０１から廃棄されるが、反復制御ロジック７０５は、複数の命令のブロック又は入れ子構造ブロックをバッファメモリ７０１内に保持することを可能にし、決定反復回数（即ち、ＦＯＲループ）、又は、非決定反復回数（即ち、ＲＥＰＥＡＴループ）を、ＩＲＥ６０７に送られることを可能にする。データ・プロセッサ５０５とマイクロプロセッサ５０１からのステータス線７０７が、前記ＲＥＰＥＡＴループを終端させるために使用される。
命令のオペランド／演算結果アドレスフィールドが、一つのブロックの各反復毎に変化することを可能にするべく、ＢＲＥ６０５は、その値がマルチプレクサ７０５によってＩＲＥ６０７命令に多重化可能な、単数又は複数のレジスタ７０３を含む。ＢＲＥ命令中のフィールドによって、これらのレジスタ７０３のプレロード、ポストインクリメント、ポストデクレメントが制御される。同じ命令に於いて、一つのレジスタを、ロードし、使用し、変更することが可能である。前記制御ロジック７０５は、ブロックの第２の次の反復で、レジスタ７０３のプレロードを禁止する。
ブロックの各反復についてスカラ値の変更を可能にするために、前記ＢＲＥ６０５は、更に、前記スカラ書き込みＦＩＦＯ６１１から取り出された値を、前記マルチプレクサ７０９を使用して、ＩＲＥ６０７命令に多重化することもできる。
図６に戻って、前記ＩＲＥ６０７は、ＢＲＥ６０５からの命令を受け入れ、それから、ゼロ又はそれ以上の同じデータ・プロセッサ命令の列を生成する。制御ロジックによって、この列の長さを決定的なものにするか、もしくは、外部条件、典型的にはデータ・プロセッサステータスが有効になるまで、または有効な間、継続させることが可能である。ＩＲＥ６０７は、ＢＲＥ６０５から命令が入手可能でない時には、データ・プロセッサ５０５非作動命令を発行する。
それぞれの命令が多数の逐次的に実行される副命令に分割される、前記ＡＳＰ等のデータ・プロセッサを制御する場合、前記ＩＲＥ６０７を拡張して、各副命令が、全体の命令の各反復内に於いて、個々に反復されることを可能にしてもよい。
前記出力バッファ６０９は、前記マイクロプロセッサ５０１が、前記バンド幅逓倍器５０３のステータスを読み取るか、若しくは、前記データ・プロセッサ５０５からの演算結果又はステータスを読み取るための手段を提供する。制御ロジックによって、マイクロプロセッサ５０１は、前記データ・プロセッサ５０５と前記バンド幅逓倍器５０３と同期化することが可能である。前記出力バッファ６０９は、単純なレジスタ、小型メモリ又はＦＩＦＯとして構成可能である。
上述したバンド幅逓倍器の変形例が図８に図示されている。この実施例に於いて、前記ＩＦＥ６０３は、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を追加することによって拡張され、これによって、それに、メモリ８０１から、圧縮命令又はスカラデータ値を直接に取り出す能力が付与されている。これによって、マイクロプロセッサ５０１は、ブロックの詳細以外を、バンド幅逓倍器５０３にコードをロードする負担がなくなり、これにより、通常、マイクロプロセッサ９０１によって達成可能なものよりも、より速い持続入力命令速度が可能となる。
従って、本発明は以下を実現する。
○  データ・プロセッサ命令が、マイクロコード化されたルーチンを呼び出す代りに、マイクロプロセッサ又はＤＳＰ装置によって、ラン・タイムで生成されること、
○  データ・プロセッサ命令がマイクロプロセッサ又はＤＳＰ装置によって生成可能な速度を逓倍する回路が使用されていること、
○  命令生成バンド幅を逓倍する技術。
本発明の主要な利点は次の通りである。
○  ＤＰＣプログラミングのフレキシビリティ。ＤＰＣの能力は、カスタムマイクロ−コードシーケンサー設計によって提供されるファシリティに限定されない。
○  サイズとパワー。この新しいＤＰＣは、従来世代のものの１２４８平方ミリと６０Ｗの消費電力に比較して、６０平方ミリ以下の有効面積で、２００ミリワットの消費電力のシリコンデバイスとして容易に実施することが可能である。
○  コストと信頼性。この新しいＤＰＣは、数１０ポンドの単一のシリコン・デバイスとして実施することができる。そのような単一デバイスソリューションは、数百ものデバイスを含む従来のソリューションよりも遥かに信頼性が高いものとなる。
これらの利点によって、多数の新しい用途領域が開かれる。本発明によって、大量並列処理の、“ｂｉｇ  ｂｏｘ”カスタム装置からカードベースのＯＥＭマーケット（たとえば、ＶＭＥ及びＰＣカードベースのシステムビルダー）への移行（ｍｏｖｅ）が可能となる。新しいＤＰＣの小さなサイズと必要電力とによって、複数のデータ・プロセッサをＰＣ及びワークステーションコンピュータのコアプロセッサに一体化することが可能になるであろう。これによって、更に、そのようなデスクトップ・コンピュータが新たな用途に応じることが可能となるであろう。その一例は、３Ｄ医療用撮像レンダリング市場である。これらの用途をサポート可能な現在のシステムは、１００万ないし１０００万ポンドするが、適切なリアルタイム性能を提供することができない。一体化された複数のデータ・プロセッサを備えたデスクトップ・コンピュータは、１万ないし１０万ポンドのリアルタイム性能を提供することが出来るであろう。最後に、この新しいＤＰＣのプログラミングフレキシビリティと、必要なサイズと消費電力が小さいことによって、ＤＰＣとデータ・プロセッサとを一体化することが可能となる。この一体化により、デバイスから大きなバンド幅のデータ・プロセッサ命令を送る必要がなくすことによって、新たなレベルのデータ・プロセッサ性能が可能となるであろう。
前記ＤＰＣプログラミングフレキシビリティは、前記マイクロプロセッサがラン・タイムでデータ・プロセッサ命令を間接的に生成し、そのハードウエアが割り当てられたタスクを実行することしかできないプリロードされたマイクロ−コードルーチンを単純に呼び出すことに限定されないことから達成されるものである。
サイズと消費電力の低減は、次によって達成される。
○  それぞれが単純な制御の多数のステージへの明確な分離を備えたバンド幅逓倍器の単純性。ＢＲＥでさえも、改造ＲＡＭベースのＦＩＦＯとマルチプレクサといくつかのローディング可能なレジスタとによって実現可能である。これは、大半のＤＰＣ構成の心臓部の完全なマイクロ−コードシーケンサーよりも遥かに単純である。
○  より複雑なＤＰＣ機能を果すマイクロプロセッサのフレキシビリティと能力、従って、特定の機能のための専用のハードウエアソリューションがなくなる。
○  ＩＦＥによる命令のリニアな取り出し。これによって、ブロック／バーストモード転送が可能となり、更にこれによりより小型のメモリ技術を使用することが可能となる。
全体のシステムコストは、ＤＰＣの小さなサイズのみならず、ＤＰＣが、ブロック／バースト転送を使用してより安価なメモリデバイスとインターフェースすることが出来、これによって、高速のスタチックメモリに対する必要性がなくなること、とによって低減される。
例１
以下は、図５−７に図示されたＤＰＣシステムを使用した例である。特定の用途のためにデータ・プロセッサ５０５に対して供給する必要がある命令列は以下の通りである。
｛Ａ，｛Ｂ｝３２，Ｃ，Ｄ｝１６
ここで、Ａ，Ｂ，Ｃ及びＤは、データ・プロセッサ命令であり、｛...｝Ｎは、前記中かっこ内の命令をＮ回繰り返すことを意味する。Ａは、オペランド１のアドレスによってパラメタライズされ、Ｃは、オペランド２のアドレスによってパラメタライズされ、Ｄは、その演算結果によってパラメタライズされる。
マイクロプロセッサ５０１によって生成される必要がある各非圧縮命令は、以下のフォーマットを有する。
＜データ・プロセッサ命令＞＜ＩＲＥ制御＞＜ＢＲＥ制御＞＜ＢＲＥパラメータ＞
ここで、前記データ・プロセッサ命令は、３２ビットのフィールド（ａ，ｂ＆ｃ）を有すると仮定され、ｂとｃとは、ＢＲＥパラメータによって置き換えられるか、もしくは、デフォルト値をとる。ＩＲＥ制御、ＢＲＥ制御及びＢＲＥパラメータは、追加の６４ビットを必要とすると仮定される。従って、各非圧縮命令は１６０ビットを必要とする。
前記マイクロプロセッサ５０１によって生成される必要がある各非圧縮命令は以下の通りである。
Ａ（ａ，ｂ，ｃ）＆ブロックの開始＆ＢＲＥ制御＆オペランド１のＢＲＥパラメータ
Ｂ（ａ，ｂ，ｃ）＆命令を３２回反復
Ｃ（ａ，ｂ，ｃ）＆ＢＲＥ制御＆オペランド２のＢＲＥパラメータ
Ｄ（ａ，ｂ，そ
）＆ブロックを１６回反復＆ＢＲＥ制御＆演算結果のＢＲＥパラメータ
前記マイクロプロセッサ５０１によって圧縮された時、これらの命令はたとえば次のようになる。
Ａ（ａ）＆ブロックの開始＆ＢＲＥ制御＆オペランド１のＢＲＥパラメータ（９６ビット）
Ｂ（ａ）＆命令を３２回反復（６４ビット）
Ｃ（ａ，ｃ）＆ＢＲＥ制御＆オペランド２のＢＲＥパラメータ（１２８ビット）
Ｄ（ａ）＆ブロックを１６回反復＆ＢＲＥ制御＆演算結果のＢＲＥパラメータ（９６ビット）
従って、５６０（＝（１＋１*３２＋１＋１）*１６）９６ビットデータ・プロセッサ命令を生成するために、マイクロプロセッサ５０１は、バンド幅逓倍器５０３に対して、１２（＝３＋２＋４＋３）の３２ビット幅ワードから成るブロック命令を書き込まなければならない。
上記１２の３２ビットワードは、前記入力ＦＩＦＯによって追加されたタグと共に、入力ＦＩＦＯ６０１を介してＩＦＥ６０３によって受け入れられる。ＩＦＥ６０３は、これらのワードを、前記タグを利用して圧縮解凍し、４つの１６０ビット幅命令を生成する。従って、このステージで、命令生成バンド幅に於いて４*１６０／１２*３２＝１．６７倍、加速される。
前記圧縮解凍された４つの１６０ビット幅命令は、次に、ＢＲＥ６０５によって受け入れられ、これは、これらの圧縮解凍命令に含まれている前記ＢＲＥ制御情報とＢＲＥパラメータとを使用して４つの１２８ビット幅命令のブロックを１６回繰り返す。従って、このステージで（１６*４*１２８*／（４*１６０）＝１２．８倍にまで、加速される。
前記ＢＲＥ６０５によって発行された４つの１２８ビット幅命令は、ＩＲＥ６０７によって受け入れられ、これは、その受取られた４つの１２８ビット幅命令に含まれるＩＲＥ制御情報を利用して前記データ・プロセッサ５０５に３５（＝１＋１*３２＋１＋１）の９６ビット幅の命令を発行する。従って、このステージで、（３５*９６／（４*１２８）＝６．６５倍にまで加速される。
結局、この例に於いては、前記バンド幅逓倍器５０３は、１４０（＝１．６７*１２．８*６．５６）倍以上の加速を達成した。
この例は、又、前記入力ＦＩＦＯ６０１の目的を際立たせている。もしも上記命令が、単独で生成されるならば、前記ループを解する第１回目で、ＩＦＥ６０３とＩＲＥ６０７とに依る加速のみが得られるが、この前に、類似の命令列があるならば、ＢＲＥ６０５は、プレローディングされているはずであり、フル加速が得られるであろう。
例２
μＬＡＣTM（ｍｉｃｒｏ  ｌｏｗ-ｌｅｖｅｌ  ａｓｓｏｃｉａｔｉｖｅ  ｓｔｒｉｎｇ  ｐｒｏｃｅｓｓｏｒ  ｃｏｎｔｒｏｌｌｅｒマイクロ低レベル連想ストリングプロセッサ・コントローラ）は、前述したように、そのＡＳＰ（連想ストリングプロセッサ）データ・プロセッサ用として本出願人によって設計、製造された本発明の一実施例である。このμＬＡＣは、毎３３ナノ秒毎に一つのデータ・プロセッサ命令を生成する。入力ＦＩＦＯ１００１及び出力バッファ１０１３を除き、μＬＡＣは、２００ミリワットを消費する有効面積６５ｃｍ2の一つの１μｍシリコンデバイスとして構成される。
図９に図示されているように、前記μＬＡＣ９０３は、マイクロプロセッサ９０１とＡＳＰ９０５との間に接続されている。図１０は、μＬＡＣ９０３のブロック図を示している。μＬＡＣ９０３に関する以下の簡略化された記載に於いて、従来ＩＲＥと呼ばれていたものは、副命令がＡＳＰ９０５に対で発行されること、そして、出力バッファ１０１３がスカラ読み出しＦＩＦＯ１０１５によって補足されているという事実を反映するべく、今回、スロット反復エンジン（ＳＲＥ）１００７と呼称される。更に、前記スカラ読み出しＦＩＦＯ１０１１は、ＩＦＥ１００３から供給されるのではなく、前記マイクロプロセッサ９００１に直接に接続され、このＦＩＦＯ１０１１から取り出された値は、ＢＲＥ１００５によってではなく、ＳＲＥ１００７によって前記ＳＲＥ命令にマージされる。
前記入力ＦＩＦＯ１００１を介して、前記μＬＡＣ命令は、それを３２ビット幅のワード列に分割することによってローディングされ、各ワードを１６のアドレスの一つに書き込む。書き込まれたデータ値と使用されたアドレスとは、３６ビットの値へと結合され、これがＦＩＦＯ１００１に格納される。前記アドレスは、そのデータ値が命令のどの部分を表わすかを定義するタグを生成するのに使用される。
前記ＩＦＥ１００３は、前記入力ＦＩＦＯ１００１又はライブラリメモリ１００９からの命令を読み出し、圧縮解凍する。圧縮解凍は、前記４ビットタグを使用して、他の３２ビットがその命令のどのフィールドを表わすものであるかを同定することによって行われる。該圧縮解凍プロセスの最後に於いて特定されなかった命令のフィールドは、そのデフォルト値、又は、前にロードされた時の値にセットされる。前記ＩＦＥ１００３は、２つの主要なタイプの命令、即ち、ＢＲＥ及びライブラリメモリ、を扱う。ＢＲＥ命令は、ＢＲＥ１００５に送られる。ライブラリメモリ命令は、ＩＦＥ１００３に対して、ＦＩＦＯ１００１の代りに、ライブラリメモリ１００９から命令ブロックを取り出すように指示する。ＢＲＥ１００５は、これらの圧縮解凍された命令を受取る。
図１１は、前記ＢＲＥ１００５の詳細を図示している。ＩＦＥ１００３からの命令は、バッファメモリ１１０１に格納される。このバッファメモリ１１０１は、通常は、各命令を、それが出力された時に破棄するが、同時に、命令ブロックを保持し、繰り返し反復することを許容する改造ＦＩＦＯである。このために使用される方法は、ブロックマーカレジスタ１１０３である。このレジスタは、ノーマルのＦＩＦＯ動作モードでは、読み出しポインタ１１０５に従う。一つのブロックの始まりをマークするために、前記ブロックマーカ１１０３は、そのブロックが始まるアドレスを示す状態で、凍結される。一つのブロックを反復するためには、前記読み出しポインタ１１０５は、前記ブロックマーカ１１０３からローディングされる。前記書き込みポインタ１１０７とブロックマーカ１１０３とを比較することによって、ＦＩＦＯ−フル状態を検出することができる。前記読み出し及び書き取りポインタを比較することによって、ＦＩＦＯ−エンプティ状態を検出することができる。
前記バッファメモリ１１０１の出力は下記のフィールドに分割される。
＜ＡＳＰ及びＳＲＥ命令＞＜ＢＲＥ制御＞＜ＢＲＥパラメータ＞
前記ＢＲＥ制御フィールドは、制御ロジック１１０９を駆動する。前記制御ロジック１１０９は、命令ブロックを前記バッファメモリ内に保持し、決定反復回数（即ち、ＦＯＲループ）又は非決定反復回数（即ち、ＲＥＰＥＡＴループ）反復することを可能にする。前記ＡＳＰ９０５とマイクロプロセッサ９０１とからの外部ステータス線１１１１を使用して前記ＲＥＰＥＡＴループを終端させる。前記ＢＲＥパラメータは、ＦＯＲループの数を決定する。前記制御ロジック１１０９は、更に、前記ｓｆａ１，ｓｆａ２，ｓｆａ３及びｓｒａレジスタの、プレローディング、ポストインクレメンティング、及びポストデクレメンティングを制御し、ブロックの第２とその後の反復時に於けるプレローディングを禁止する。
四つのレジスタ１１１３全部が、ＢＲＥパラメータフィールドから取り出された値でローディングされる。ｓｆａ１，ｓｆａ２及びｓｆａ３レジスタからの出力は、マルチプレクサ１１１５によって前記ＡＳＰ命令のオペランド／演算結果アドレスフィールドに多重化される。前記ｓｒａレジスタの出力は、ＢＲＥパラメータフィールドからの一つのビットをＡＳＰ命令に多重化するのに使用される。
図１０に戻って、前記ＳＲＥ１００７は、前記ＢＲＥ１００５から命令を受取り、それから、ＡＳＰ命令列を生成する。制御ロジックによって、この列の長さを決定的なものにするか、若しくは、何らかの条件が有効になるまで、又は、有効である間、継続することを可能にする。この条件は、たとえば、ＡＳＰステータス信号の状態、あるいは、前記スカラ書き込みＦＩＦＯ１０１１のエンプティフラグ、又は、前記スカラ読み出しＦＩＦＯ１０１５のフルフラッグとすることができる。前記ＳＲＥ１００７は、ＢＲＥ１００５から命令が入手不能である時には、ＡＳＰ９０５に対して非作動命令を発行する。
この生成されたＡＳＰ命令のデータ及びアクティビティフィールドは、変わらないが、その制御フィールドは以下の列のいずれかでありうる。
｛ａ｝，｛ｂ｝
又は
｛｛ａ｝，ｂ｝
ここで、｛｝は、ゼロ回又はそれ以上の回数反復することを意味し、ａｂは、そこから列が生成されたＡＳＰ制御対である。実際には、ゼロ長列は生成されず、その代りに、非作動ＡＳＰ制御対が生成される。前記μＬＡＣのこの実施例は、次の列はサポートしない。
｛ａ，｛ｂ｝｝
或いは、より一般的なケースとして
｛｛ａ｝，{ｂ}｝
前記ＳＲＥ１００７は、前記スカラ書き込みＦＩＦＯ１０１１から取り出された値を、ＡＳＰ命令のデータフィールドに多重化することもできる。
前記スカラ読み出しＦＩＦＯ１０１５は、前記マイクロプロセッサ９０１が、ＡＳＰ９０５から演算結果を非同期的に読み取るための手段を提供する。
前記出力バッファ１０１３は、前記マイクロプロセッサ９０１が、前記μＬＡＣ９０３のステータス又はＡＳＰ９０５のステータスを読み込むための手段を提供する。
前記出力バッファ１０１３の制御ロジックによって、μＬＡＣ９０３が、すべての命令のローディングをその読み出しの前に完了しているようにすることによって、ＡＳＰステータスの読み出しが完了することを許容する前に、マイクロプロセッサ９０１とＡＳＰ９０５とを同期化する。
以下は、μＬＡＣのマイクロプロセッサインターフェースの完全な記載である。
μＬＡＣインターフェースに対するマイクロプロセッサは、下記のレジスタから成る。
0003851989.tif 000002
0003851989.tif 000003
すべてのレジスタは、どのビットフィールドが使用されているかに拘わらず、３２ビット幅のワードとしてアクセスされる。
ＢＲＥ命令ワードを書き込む時、ＢｒｅＩＷ１に書き込みを行うことによって、その命令はＢＲＥ１００５に伝送される。もしも、最後の命令が伝送されてからなんらその他の命令ワードが書き込まれなかった場合には、それらのワードに対してデフォルト値が使用される。ＢＲＥパラメータワードは、その最後に書き込まれた値を保持する。
ライブラリメモリ呼び出し、ロード、又はダンプを開始する時、そのデータのビット３からビット１８が、開始アドレスとして使用され、ビット１９から３１は、ブロック長として使用される。ブロック長は、１..８１９１の範囲でなければならない。ライブラリメモリ操作は、以下のように定義される。
呼び出し    ＬＭ  ＝＞ＢＲＥ
ロード      ＩＳＭ＝＞ＬＭ
ダンプ      ＬＭ  ＝＞ＩＳＭ
ライブラリメモリロードが開始された時、アドレス０から８のレジスタの一つに書き込まれた次のＮのワード（ここで、Ｎはブロック長）は、それが書き込まれたアドレスとともにライブラリメモリ１００９に格納される。これらのＮのワードが書き込まれた時、通常の動作が再開される。
ライブラリメモリダンプが開始されると、Ｎのワードをアドレス０のレジスタ０から読み取る必要があり、これは、ライブラリメモリ１００９に格納されたデータに対応する。それぞれのワードが読み取られた後、アドレス１のレジスタを読み取ることができ、これは、そのワードに関連するアドレスを含む。
ライブラリメモリ呼び出しが開始されると、Ｎのワードを、前記ライブラリメモリから取り出し、これらが関連するアドレスに書き込まれる。ライブラリメモリ呼び出しは、１レベルの深さに入れ子構造にすることができる。尚、ライブラリメモリ呼び出しには、２クロックサイクルが必要であり、その一つで、前記開始アドレスとブロックカウント値を書き込み、他方で、ライブラリメモリ１００９のパイプライン遅延を許容する。
データを前記スカラ書き込みＦＩＦＯ１０１１に書き込む時、４つのタグビットを、各ワードに関連付けることができる。これらは、データが書き込まれたアドレスに応じてセットされる。これらのタグビットの使用法はまだ定義されていない。
前記スカラ読み出しＦＩＦＯ１０１５からデータを読み取る時、各ワードがレジスタ１６から読み取られた後、４つの関連するタグビットを、レジスタ１７から読み取ることができる。
前記ＢＲＥレジスタ制御ワードは、以下のように作成される。前記ＡＧバス制御ワードＡがビットパターン１０ｘｘｘｘｘｘｘｘｘｘ０１ｘｘ（ＩｎｉｔＳｅａｒｃｈＯｒＡｄｄＳｅｒｉａｌ，ＣｌｅａｒＳｅｒｉａｌ，ＩｎｉｔＷｒｉｔｅＳｅｒｉａｌ，ｏｒＩｎｉｔＲｅａｄに対応）を含む時、前記ＡＧバスリテラルデータの上位１６ビットが、ＢＲＥレジスタ動作を制御するのに使用され、これらは、以下のフィールドに分割される。
0003851989.tif 000004
前記ａＳｅｌフィールドは、どのＢＲＥレジスタが、ａＩｎｃ，ａＤｅｃ及びａＬｏａｄフィールドによって作用されるかを選択し、以下のように、レジスタコンテンツの命令ストリームへの多重化を制御する。
0003851989.tif 000005
前記ｂＳｅｌフィールドは、どのＢＲＥレジスタが、ｂＩｎｃ，ｂＤｅｃ及びｂＬｏａｄフィールドによって作用されるかを選択し、以下のように、レジスタコンテンツの命令ストリームへの多重化を制御する。
0003851989.tif 000006
ａＬｏａｄ又はｂＬｏａｄが真のとき、選択されたＢＲＥレジスタは、下記のＢＲＥパラメータがロードされる。
0003851989.tif 000007
ローディングは、レジスタのコンテンツがデータワードに多重化される前に行われ、これに対してインクレメンティングとデクレメンティングとは後で行われる。
前記ｓｒＩｎｖフィールドは、前記スカラレジスタの出力が、データ又は命令ワードに多重化される前に、逆転されることを可能にする。
前記ＢＲＥ制御ワードは、下記のビットフィールドに分割される。
0003851989.tif 000008
前記ループ入口フラグはルーブの始まりを示し、ループ出口フラグはループの終わりを示す。これらは、共に、同じ命令中で起りうる。
前記ループカウンタロードソースは、以下の通りである。
0003851989.tif 000009
ループ出口条件は以下の通りである。
0003851989.tif 000010
前記ループカウンタは、ループの最初に於いて、選択された初期値をプリロードされ、そのループの１周毎にデクレメントされる。ループカウント値は、デクレメントされる前にテストされる。
ＢＲＥ１００５は、マッチ回答線のいずれかをテストする前に、ループの最後の命令が完了するのを待つ。これは、前記ループランデブフラグをテストする前に、ＩＳＭとループランデブを行う。
前記ＳＲＥ制御ワードは下記のビットフィールドに分割される。
0003851989.tif 000011
前記反復モードは下記の通りである。
0003851989.tif 000012
ｍ及びｎの値は、下記のように、反復タイプによって選択される。
0003851989.tif 000013
尚、上記ｔｒ１又はｔｒ２シフト制御が駆動される時、両方のＡＧバス制御ワードが影響される。
待ちソースは以下の通りである。
0003851989.tif 000014
もしも待ちが選択されると、その選択された待ち条件が満たされるまで、ｎｏ−ｏｐｓを命令ストリームに挿入する。これは、関連の命令が実行される前に行われる。
前記データ待ちソースを選択することによって、適切ＦＩＦＯに対するデータの読み出し又は書き込みが行われる。データ読み出しの場合、これは、前記スカラ読み出しＦＩＦＯ１０１５である。データ書き込みの場合、これは、下記のように、データソースによって選択される。
0003851989.tif 000015
三元書き込みデータのためのマスクビットは、適切なＦＩＦＯ又は、リテラルデータのいずれかから取り出すことができる。これは、下記のように、データマスクによって選択される。
0003851989.tif 000016
前記ＬＡＣ命名は以下の通りである。
0003851989.tif 000017
前記ＳＲＥ及びＡＧバスステータスレジスタは、下記のビットから成る。
0003851989.tif 000018
本発明は、その必須特徴から逸脱することなく、その他の具体的態様で実施可能である。本発明について、本発明の精神及び範囲を示すものとして、上述した具体的記載ではなく、むしろ付随の請求項及びその他のここに開示された一般的記載が参照されるべきである。
【図１】
0003851989.tif 000019
【図２】
0003851989.tif 000020
【図３】
0003851989.tif 000021
【図４】
0003851989.tif 000022
【図５】
0003851989.tif 000023
【図６】
0003851989.tif 000024
【図７】
0003851989.tif 000025
【図８】
0003851989.tif 000026
【図９】
0003851989.tif 000027
【図１０】
0003851989.tif 000028
【図１１】
0003851989.tif 000029