(57)【特許請求の範囲】
【請求項１】
ホスト処理装置のホストバスに接続可能なコプロセッサであって、
前記ホストバスからスレーブ要求信号を受信するため前記ホストバスに接続されたスレーブ回路と、ホストバスの操作を要求する信号を前記ホストバスに供給するため前記ホストバスに接続され、かつ、前記コプロセッサから前記ホストバスに又は前記ホストバスから前記コプロセッサにデータを転送するため前記ホストバスに接続されたマスタ回路とを含む、前記コプロセッサを前記ホストバスに電気的に接続するホストバス接続回路と、
操作を実行することにより各々が制御信号に応答する２つ又はそれ以上の処理ユニットと、処理ユニット命令を含む制御信号を供給することにより前記処理ユニットを制御し、転送信号を供給することにより前記マスタ回路を制御するコプロセッサ制御回路とを含む処理回路と、
を備え、
前記コプロセッサ制御回路は、
制御保存命令を含むデータを保存するための制御保存回路と、
前記制御保存回路に保存された前記制御保存命令にアクセスする制御保存シーケンサと、
前記制御保存命令が前記制御保存シーケンサによってアクセスされた時に、前記アクセスされた制御保存命令を用いて、前記制御信号及び前記転送信号を含む信号を供給する信号供給回路とを含み、
前記処理回路は更に、
前記コプロセッサ制御回路から前記制御信号を受信するため前記コプロセッサ制御回路に接続され、かつ、該制御信号を前記処理ユニットに供給するため前記処理ユニットに接続され、処理ユニット命令を前記処理ユニットの全ての処理回路に並列に供給する制御信号回路と、
前記コプロセッサ制御回路からの転送信号を受信するため前記コプロセッサ回路に接続され、かつ、該転送信号を前記マスタ回路に供給するため前記マスタ回路に接続された転送信号回路と、
マスタ要求信号を前記マスタ回路から受信するため前記マスタ回路に接続され、該マスタ要求信号に応答して前記処理ユニットによる処理ユニット命令の実行を制御するための同期回路と、
を含み、
前記スレーブ回路は更に、前記制御保存回路のデータを保存するため前記制御保存回路に接続されており、該スレーブ回路は、前記制御保存回路の制御保存命令のシーケンスを保存することにより、及び前記コプロセッサ制御回路に信号を供給することにより、前記スレーブ要求信号のシーケンスに応答して、前記制御保存シーケンサを前記制御保存回路内に保存された制御保存命令のシーケンスにアクセスさせ、前記信号供給回路が処理ユニット命令のシーケンスを含む前記制御信号の組及び転送信号のシーケンスを供給することによって、前記アクセスされた制御保存命令のシーケンスに応答し、
前記マスタ回路が前記転送信号回路からの前記転送信号のシーケンスを受信し、これに応答してホストバスの操作を要求する信号を前記ホストバスに供給し、かつ、前記コプロセッサから前記ホストバスへ、又は前記ホストバスから前記コプロセッサへデータを転送し、
前記処理ユニットの全てが前記処理ユニット命令のシーケンスに応答して操作を並行して実行すると共に、前記マスタ回路が処理ユニットから前記ホストバスに、又は前記ホストバスから１つ又はそれ以上の処理ユニットの組にデータを転送し、これにより前記コプロセッサが前記スレーブ要求信号により要求された前記コプロセッサの操作を実行し、
前記マスタ回路が更に、マスタ要求信号のシーケンスを前記同期回路に供給することにより前記転送信号のシーケンスに応答し、前記同期回路が、前記処理ユニットによる処理ユニット命令の実行を制御することによって前記マスタ要求信号のシーケンスに応答し、これにより処理ユニットから前記ホストバスへ、又は前記ホストバスから１つ又はそれ以上の処理ユニットの組へのデータの転送が、前記処理ユニット及びマスタ回路の同期操作により実行される、
ように構成されたコプロセッサ。
【発明の詳細な説明】
【０００１】
本発明は並列処理装置に関する。
【０００２】
ウィルソン（Ｗｉｌｓｏｎ）の米国特許第５，１２９，０９２号では、画像および空間的に関連のあるデータなどのデータ行列を処理するための単一命令多重データ（ＳＩＭＤ）並列処理装置を開示している。図１および図２に関連して図示しまた解説しているように、この処理装置は隣接する処理ユニット間に直接データ通信リンクを有する隣り合わせ処理ユニットの線型連鎖を含む。
【０００３】
ウィルソン０９２号で図１、図２、図５との関連で図示しまた説明しているように、処理ユニットは８個のグループを構成し、ホストコンピュータと制御装置はどちらもデータバイト線と称する８ビット線経由でこのグループからのデータを送受信可能である。
【０００４】
ウィルソン０９２号では図６Ａおよび図６Ｂとの関連でメモリと加算器（アキュムレータ）間のデータ置換のための置換演算も説明している。
【０００５】
ヒリス（Ｈｉｌｌｉｓ）の米国特許第５，１１３，５１０号ではシンキングマシンズ社（Ｔｈｉｎｋｉｎｇ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ  ）製のＳＩＭＤ並列処理装置であるコネクションマシン（Ｃｏｎｎｅｃｔｉｏｎ  Ｍａｃｈｉｎｅ）において使用するために明らかに開発された多処理装置内のキャッシュメモリを操作するための技術を開示している。図３との関連で図示しまた解説しているように、多処理装置システムのそれぞれの処理装置は対応するキャッシュへ接続している。キャッシュメモリがミス信号を出力すると、バス調停ユニットはそれぞれの連続したキャッシュで現在の更新が実行されている間は更新を実行し得ないことを示す信号を供給して、優先連鎖の中の更新を要求している第１のキャッシュが一時的に他の全ての更新要求を無効にする。更新要求を受信すると、共有メモリは指定されたアドレスのデータを取得してデータレディ信号と、アドレスと、データを出力する。アドレスがキャッシュの問題となるアドレス指定範囲内に有る場合またはキャッシュが更新要求の供給源の場合、キャッシュメモリはアドレスおよびデータ信号を受信し保存する。その結果、全てのキャッシュは任意の範囲検出装置によってのみ制限される主メモリからの更新データを受信する。
【０００６】
本発明では並列処理装置における基本的な問題を取り扱う。
【０００７】
ＳＩＭＤ並列処理装置は、それぞれがメモリ中の自分のデータをアクセス可能な処理ユニットを含む。それぞれの処理装置が独立した命令のシーケンスを実行可能な多重命令多重データ（ＭＩＭＤ）並列処理装置とは異なり、ＳＩＭＤ並列処理装置内の全ての処理ユニットはおなじ命令のストリームを受信する。
【０００８】
ＳＩＭＤ並列処理装置は画像処理などのデータアレイに対する演算に特に有用である。しかし従来のＳＩＭＤ並列処理装置はホスト処理装置のバスへ接続された補助演算装置として効率的な演算を行なうようには設計されていない。幾つかの在来のＳＩＭＤ並列処理装置はデータ入出力について主としてシフトレジスタに頼っており、ホスト処理装置のバスからのデータ受信において互換性がない。その他のＳＩＭＤ並列処理装置は隅角を折り返す回路に水平方向の様式でデータを供給して、ここからそれぞれの処理ユニットへ垂直方向の様式でデータを供給している。別のＳＩＭＤ並列処理装置では、それぞれの処理ユニットのキャッシュメモリはバスを介して共有メモリをアクセス可能だが、多数の処理ユニットのそれぞれをホスト装置のメモリへホスト装置のバスを経由して接続するには実際的とは言えない。
【０００９】
本発明はＳＩＭＤ並列処理装置などの並列処理装置がホスト処理装置のバスのスレーブおよびマスタとなり得るような回路を提供することによってこれとこれに関連した問題を軽減するアーキテクチャの発見に基づくものである。その結果、並列処理装置はホスト処理装置のバスのスレーブとして命令を受信できるがその他の目的たとえばデータを処理ユニットへ入出力するなどではホスト処理装置のバスのマスタとなることが出来る。
【００１０】
本アーキテクチャはホスト処理装置の中央演算処理装置（ＣＰＵ）およびメモリなどのその他の部材も接続されているホストバスへ接続することが出来る補助演算装置として実施可能である。補助演算装置は複数の処理ユニットを含む。補助演算装置はまた補助演算装置を制御しまた処理ユニットを制御するための信号を供給するように接続してある制御回路も含む。最後に、補助演算装置はホスト装置へ接続するためのホストバス接続回路も含む。
【００１１】
ホストバス接続回路はスレーブ回路とマスタ回路を含んでいる。スレーブ回路は補助演算装置の演算を要求するホストバスからの信号を受信し、これに応じて補助演算装置の制御回路へ信号を供給して補助演算装置に要求された演算を実行させる。マスタ回路は補助演算装置の制御回路からデータ転送操作を要求する信号を受信し、これに応じてホストバスへホストバスの操作を要求する信号を供給し、補助演算装置からホストバスへまたはホストバスから補助演算装置へのいずれかにデータを転送し要求されたデータ転送操作を実行する。
【００１２】
上述したような補助演算装置のアーキテクチャは多くの方法で有利である。
【００１３】
処理ユニットへのデータ入出力操作は補助演算装置の通常操作に統合することが可能であり、これによって大きな柔軟性が得られる。たとえば、巨大なアレイの小から大まで異なる大きさの部分を定義するデータが特定の補助演算装置の操作で必要に応じて容易に取り扱うことが出来るように、いろいろな大きさのいずれかのデータブロックを要求に応じて転送することが出来る。さらに、転送はデータブロックからのデータ項目が処理ユニット間で等しく分配されるように実施することが可能である。
【００１４】
柔軟なブロックの大きさとデータ項目を等しく分配する能力は画像処理の用途で特に重要である。これらの特徴のため、画像または異なる大きさの画像の別の部分を定義するデータを処理ユニットへ供給することが出来る。たとえば、それぞれの処理ユニットはメモリ回路を含むように実施可能であり、それぞれのデータの画素または一群の画素を定義しているワードをそれぞれの処理ユニットのメモリ回路内にロードすることが出来る。さらに、それぞれの処理ユニットのメモリ回路は処理ユニットの処理回路の内部レジスタより多くのデータ項目を保存し得るような充分な大きさをとることが出来るので、メモリ回路が処理回路のためのキャッシュ機能を実行できる。処理ユニットは１次元アレイを構成できまた全ての処理ユニットのメモリ回路全部で一枚以上の画像を保存するのに充分な大きさに出来、それぞれの処理ユニットのメモリ回路がそれぞれの画像内のそれぞれの水平方向の画像ブロックからのそれぞれのワードを保存する。それぞれの水平方向の画像ブロックは水平方向の様式で処理ユニットのアレイに充分に適合するだけの小さい単一行または行の一部である。
【００１５】
コプロセッサのアーキテクチャは多数のバス手順およびブロック寸法のいずれにも適合することが出来る。特定のバス手順用のスレーブ回路およびマスタ回路は従来の部材を用いて容易にまた安価に製作可能である。コプロセッサ制御回路は複雑さのあらゆる適切なレベルを提供可能で、たとえばコプロセッサの演算を実行させるために実行されるマイクロ命令を保存する制御保存回路を用いて実施可能である。マイクロ命令はホストバスからスレーブ回路によってロードすることが出来、ホスト処理装置のブロックの大きさに適合するように出来る。
【００１６】
上述のコプロセッサのアーキテクチャによればホストバスの他のマスタからの入力または出力操作の要求に応答するために別個の制御回路を有する必要がなくなる。別のマスタはマスタ回路に入力または出力操作を実行させるようにコプロセッサ制御回路が要求するように制御保存回路内へマイクロ命令をロードすることが出来る。
【００１７】
上述のコプロセッサのアーキテクチャによれば、それぞれの処理ユニットは水平方向のフォーマットでのデータを取り扱うように構成することが出来る。データ項目は水平方向のフォーマットで受信されまた操作が水平方向のフォーマットで実行されることから、隅角で折り返す回路は必要とされない。
【００１８】
図１はホスト処理装置のバスへコプロセッサとして接続することのできる並列処理装置の一般的部材を示す略ブロック図である。
【００１９】
図２Ａは図１のスレーブ回路がコプロセッサの処理要求に応答する一般的動作を示す流れ図である。
【００２０】
図２Ｂは図１のコプロセッサ内の処理ユニットからホストバス上のスレーブ回路へデータを転送するマスタの処理における一般的動作を示す流れ図である。
【００２１】
図２Ｃは図１のコプロセッサ内の一組の処理ユニットへホストバス上のスレーブ回路からデータを転送するマスタの処理における一般的動作を示す流れ図である。
【００２２】
図３はＳｐａｒｃ−Ｓｔａｔｉｏｎ  のＳバスに接続したＳＩＭＤ並列処理装置の実施における部材を示す略ブロック図である。
【００２３】
図４は図３の制御回路の部材を示す略ブロック図である。
【００２４】
図５は図３の処理ユニットの部材を示す略ブロック図である。
【００２５】
図６は図４の制御保存回路にマイクロ命令をロードすることにおける一般的動作を示す流れ図である。
【００２６】
図７は図３のボックスへのクロック信号を制御する部材を示す略ブロック図である。
【００２７】
図８は図７のＤＶＭＡシーケンサをＳバスにまたマスタ回路のその他の回路に接続する線を表わす略ブロック図である。
【００２８】
図９は図７のスレーブシーケンサをＳバスへまたスレーブ回路のその他の部材へ接続する線を示す略ブロック図である。
【００２９】
図１０は図９のスレーブシーケンサがエラーを含む信号にどのように応答するかを示すタイミング図である。
【００３０】
図１１は制御／状態レジスタからデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【００３１】
図１２は制御／状態レジスタ内にＲＵＮビットを書き込む操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【００３２】
図１３は起動用ＰＲＯＭからデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【００３３】
図１４は制御保存回路からデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【００３４】
図１５は制御保存回路へデータを書き込む操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【００３５】
図１６はホスト装置のメモリからデータを読み出すＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答するかを示すタイミング図である。
【００３６】
図１７は図１６の操作の間にパイプライン・レジスタ回路を通るデータの動きを示す略流れ図である。
【００３７】
図１８はホスト装置のメモリからのデータを書き込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答するかを示すタイミング図である。
【００３８】
図１９は図１８の操作の間にパイプライン・レジスタ回路を通るデータの動きを示す略流れ図である。
【００３９】
図２０は複数ワードを読み込むＤＭＡ操作を要求する信号に図８のＤＶＭＡシーケンサがどのように応答を開始するかを示すタイミング図である。
【００４０】
図２１は複数ワードを読み込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答を完了するかを示すタイミング図である。
【００４１】
図２２は図２０および図２１の操作の間にパイプライン・レジスタ回路を通過するデータの動きを示す略流れ図である。
【００４２】
図２３は複数ワードを書き込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答を開始するかを示すタイミング図である。
【００４３】
図２４は複数ワードを書き込むＤＭＡ操作を要求する信号に対して図８のＤＭＶＡシーケンサがどのように応答を完了するかを示すタイミング図である。
【００４４】
図２５は図２３および図２４の操作の間にパイプライン・レジスタ回路を通過するデータの動きを示す略流れ図である。
【００４５】
図１から図２Ｃでは本発明の一般的特徴を図示している。図１では、ホスト処理装置のバスへコプロセッサとして接続可能な並列処理装置の部材を示す。図２Ａではコプロセッサ内の制御回路へデータを供給するスレーブ操作における動作を示す。図２Ｂではホストバス上のスレーブへ処理ユニットからのデータを転送するマスタの操作における動作を示す。図２Ｃでは一組の処理ユニットへホストバス上のスレーブからのデータを転送するマスタの操作における動作を示す。
【００４６】
図１のホスト処理装置は、その他の部材たとえばホスト装置の中央演算処理装置（ＣＰＵ）１４やメモリ１６などを接続可能なホストバス１２を含む。ホストバス１２はホストバス制御回路１８で制御可能である。その他の各種部材たとえば入出力装置や別のコプロセッサなどをホストバス１２に接続することが可能である。
【００４７】
図１のコプロセッサ２０は、処理ユニット２２、コプロセッサ２０を制御するためのコプロセッサ制御回路２４、コプロセッサ２０をホスト装置１０に接続するためのホストバス接続回路３０を含む並列処理装置である。コプロセッサ制御回路２４は処理ユニット２２へ制御信号を供給する。
【００４８】
ホストバス接続回路３０はスレーブ回路３２とマスタ回路３４を含む。
【００４９】
スレーブ回路３２はコプロセッサの操作を要求する信号を受信するようにホストバス１２へ接続されており、この信号はたとえばホスト装置のＣＰＵ１４が供給し得るものである。スレーブ回路３２も要求されたコプロセッサの操作が実行されるようにコプロセッサ制御回路２４へ信号を供給することにより応答するために接続されている。
【００５０】
マスタ回路３４はデータ転送操作を要求する信号を受信するように制御回路２４へ接続されている。これに呼応して、マスタ回路３４はホストバス操作を要求する信号をホストバス１２へ供給する。これらの信号は、たとえばホストバス１２の制御要求を含み、ホストバス制御回路１８はバス制御を許可することによりこれに応答することが出来る。マスタ回路３４はまた１つの処理ユニット２２からホストバス１２へ、またはホストバス１２から少なくとも１つの処理ユニット２２の組へ、要求されたデータ転送が実行されるようにデータを転送する。
【００５１】
図２Ａにおいて、囲み５０の動作では、スレーブ回路３２はホストバス１２からコプロセッサの操作要求を表わす信号を受信している。信号は適用可能なバス手順にしたがってホストバス１２に接続されたマスタが供給できる。囲み５２の動作では、スレーブ回路３２がコプロセッサ制御回路２４へ信号を供給して要求に応答している。この信号は、たとえば制御信号であったり、またはホストバス１２から要求の一部として受信したアドレスまたはその他のデータ項目を含むことが出来る。
【００５２】
図２Ｂにおいて、囲み６０の動作では、コプロセッサ制御回路２４は処理ユニット２２へまたマスタ回路３４へ信号を供給し、マスタ回路３４が処理ユニットの１つからのデータ項目を取得するようにしている。囲み６２の動作では、コプロセッサ制御回路２４はデータ転送操作を要求する信号をマスタ回路３４へ供給している。要求された操作には処理ユニットからのデータ項目をホストバス１２に接続したスレーブへ転送する出力操作が含まれる。囲み６４の動作では、マスタ回路３４はホストバス１２の制御を要求する信号を供給して要求に応答している。ホストバス制御回路１８がマスタ回路３４にホストバスの制御を許可すると、囲み６６の動作で、マスタ回路３４はホストバス１２を経由してスレーブへデータ項目を供給する。
【００５３】
図２Ｃにおいて、囲み７０の動作では、コプロセッサ制御回路２４はデータ転送操作を要求する信号をマスタ回路３４へ供給している。要求された操作にはデータ項目をホストバス１２に接続したスレーブから受信する入力操作が含まれる。囲み７２の動作では、マスタ回路３４はホストバス１２の制御を要求する信号を供給することで要求に応答している。ホストバス制御回路１８がマスタ回路３４にホストバスの制御を許可すると、囲み７４の動作で、マスタ回路３４はホストバス１２を経由してスレーブからデータ項目を受信する。囲み７６の動作では、コプロセッサ制御回路２４はマスタ回路３４および処理ユニット２２へ信号を供給して、マスタ回路３４が少なくとも１つの処理ユニット２２の組へデータ項目を供給するようにしている。
【００５４】
図８から図２５では本発明を実施するために上述の一般的実施の特徴をどのように使用できるかを示している。図８および図９では、ＤＶＭＡシーケンサ２８２およびスレーブシーケンサ２８４がその他の部材にどのように接続されるかを図示している。図１０から図１５では、スレーブシーケンサ２８４が操作要求にどのように応答するかを示している。図１６から図１９ではマスタシーケンサ２８２が単一ワード読み込みと書き出し操作の要求に対してどのように応答するかを示している。図２０から図２５では複数ワード読み込みまたは書き出しが行なわれるようなバースト転送操作の要求に対してどのように応答するかを示している。
【００５５】
上述のように、ＤＶＭＡインタフェース１１２およびスレーブインタフェース１１４はそれぞれに各々のシーケンサつまりＤＶＭＡシーケンサ２８２およびスレーブシーケンサ２８４を用いて実施することが出来る。図８ではＤＶＭＡシーケンサ２８２がＳバス１０２およびその他の部材へどのように接続されるかを示す。図９ではスレーブシーケンサ２８４がＳバス１０２およびその他の部材へどのように接続されるかを示す。
【００５６】
ＤＶＭＡシーケンサ２８２およびスレーブシーケンサ２８４は、サン・マイクロシステムズ社部品番号８００−５９２２−１０、Ｓバス仕様書Ｂ．０版、１９９０年に記載されている要件にしたがってそれぞれ実施し、仕様書からＳバス１０２に供給すべき信号、Ｓバス１０２からの信号に応答するために利用可能な周期、Ｓバス１０２における信号のタイミング、Ｓバス１０２上の信号の手順、および起動用ＰＲＯＭ１１６に必要な内容を決定することが出来る。図８および図９でＣｌｋ  、Ｄ［３１：０］  、ＢＲｅｑ＊  、ＢＧｎｔ＊  、Ｒｄ、Ｓｉｚ［２：０］、Ａｃｋ［２：０］、Ａｓ＊  、ＰＡ［２７：０］、ＳＳｅｌ＊  と印を付けてある線はＳバス仕様書Ｂ．０版から理解できよう。ＤＶＭＡシーケンサ２８２およびスレーブシーケンサ２８４はたとえば、トランジスタを用いてまたは図１０から図２５に関連して詳細を説明したような信号を提供する１つまたはそれ以上のプログラマブルロジックアレイ（ＰＬＡ）を用いてそれぞれ実施することが出来る。説明した実施において、信号は一般にｐｒｏｃＣｌｋ  の昇端でコプロセッサ内部へ進むが、データはレジスタ付トランシーバ１８８を経由してまたいくつかの信号はＣｌｋ  の昇端でＤＶＭＡシーケンサ２８２およびスレーブシーケンサ２８４内部へ進行する。
【００５７】
図８において、ＤＶＭＡシーケンサ２８２はＳバス１０２およびＳバスバッファ１９８を含むその他の部材へ信号を供給する方法を制御するレジスタ兼復号回路１５４からの信号を受信する。図示したように、Ｓバスバッファ１９８はＳバス１０２のＤ［３１：０］  線へ接続されており、Ｓバスバッファ１９８はＳバス１０２のタイミング制約を満足させるようにＤＶＭＡシーケンサ２８２の制御下で動作する。レジスタ付トランシーバ１９４およびＳバスレジスタ１９６は一方でパイプライン段階を提供する。レジスタ付トランシーバ１９４はレジスタ付トランシーバ１２２と協働してケーブル１１８の両端での信号の刻時の信頼性を確保する。
【００５８】
上述のフィールドに加えて、それぞれのマイクロ命令はＤＶＭＡシーケンサ２８２の動作に関連するフィールドを含むことが出来る。単一のビットで現在の周期がＳバスＤＭＡ読取かどうかを示すことが出来る。３ビットのフィールドで大きさを示すために標準Ｓバス符号化を用いるバースト転送の大きさを示すことが出来る。２ビットのフィールドで待機しない状態、バス許可を待機する状態、ＳバススレーブからのＡｃｋ［２：０］線上のワード信号を待機する状態を含めＳバスＤＭＡマスタの周期の状態を示すことが出来る。別の２ビットフィールドで分岐に関する情報を提供でき、これには直前の動作がキャリーまたはボロー信号を提供したこと、直前の動作の結果が０だったこと、直前の動作の結果が否定またはＲｅｔｕｒｎＡｃｋ  だったこと、Ｓバス制御回路がバス許可を下げることによって全てのドライバを停止させ、シーケンサが転送を実行するためにＤＶＭＡシーケンサ２８２を再起動しなければならないような条件を示すための値を有する。
【００５９】
ＤＶＭＡシーケンサ２８２により制御されるそれぞれのデータ転送動作は、Ｓバス１０２の制御要求を出さなければならないことを示すレジスタ兼復号回路１５４からのバス要求信号に応答して開始することが出来る。バス要求信号はＤＶＭＡシーケンサ２８２がＳバス１０２上のＢＲｅｑ＊  線を引き下げるため提供する単一ビットとすることが出来る。同時に、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を供給してレジスタ兼復号回路１５４へのクロック信号の供給を停止させることが出来る。
【００６０】
バス要求信号を供給する前に、レジスタ兼復号回路１５４は要求されたデータ転送動作を準備するために必要とされる全ての他の動作を実行することが出来る。たとえば、アドレスを表わすデータ項目をレジスタ付トランシーバ１９４内に保存し、また書き込み動作のためには書き込むべきデータ項目をレジスタ付トランシーバ１２２内に保存することが出来る。いずれの場合にも、データ項目は処理ユニット１３０から取得することが出来、ユニットの１つが適切なマイクロプロセッサ２２０および２２２の動作を通じてまたはＳＲＡＭ２４０からのデータ項目を取り込むことによってデータ項目を取得でき、またはデータ項目を定数バッファ１９２から取得することが出来る。
【００６１】
バス要求信号を供給する際に、レジスタ兼復号回路１５４は読み取り／書き込み信号およびブロックサイズ信号を供給することも出来る。読み取り／書き込み信号は要求された動作が読み込み動作であるかまたは書き込み動作であるかを表わし、ブロックサイズ信号は転送すべきデータブロックの大きさを表わす。ＢＲｅｑ＊  線を引き下げてＢＧｎｔ＊  線上にＳバス１０２の制御を取得していることを表わす信号を受信したあと、ＤＶＭＡシーケンサ２８２はＳバス１０２のＲｄ線に読み取り／書き込み信号を供給しまたＳバス１０２のＳｉｚ［２：０］線にブロックサイズ信号を供給することも可能である。
【００６２】
ＢＲｅｑ＊  線に応答して、Ｓｐａｒｃ−Ｓｔａｔｉｏｎ  １００内のＳバス制御回路はＤＶＭＡシーケンサ２８２のＢＧｎｔ＊  線を引き下げ、Ｓバス１０２の制御を渡す。ＢＧｎｔ＊  に応答して、ＤＶＭＡシーケンサ２８２は以下に詳細を説明するような信号を供給して要求されたデータ転送動作を実行し、Ｓバス１０２に接続されたスレーブの読み取りまたは書き込みを行なう。読み込み動作中、スレーブがＡｃｋ［２：０］線上に信号を供給し続けて線Ｄ［３１：０］  にデータを供給する場合はいつでもＤＶＭＡシーケンサ２８２がＳバスバッファ１９８へ制御信号を供給してデータを受信する準備が出来ていなければならない。ＤＶＭＡシーケンサ２８２はまたクロック制御論理回路２８０へも信号を送りレジスタ兼復号回路１５４がクロックパルスを受信して受信データを保存するようにＳバスレジスタ１９６を制御することが出来るように準備する必要がある。書き込み動作中、ＤＶＭＡシーケンサ２８２は同様に信号を供給してＳバスレジスタ１９６からのデータがＳバスバッファ１９８を介してＳバスの線Ｄ［３１：０］  へ供給されるようにする。
【００６３】
図８に図示した回路に加えて、図１のマスタ回路３４の機能を実行するために各種の付加回路を用意することが出来る。たとえば、マスタ回路３４は処理ユニット全てに接続した共通データバス１５６を含むことが出来る。図５との関連ですでに説明したように、マスタ回路３４はそれぞれの処理ユニットについて、処理ユニットをデータ供給源であると示すためまたはデータの宛先である一組の処理ユニット内に処理ユニットが存在することを示すために制御回路１２６が信号を供給するレジスタ付トランシーバ２１２を含むことも出来る。
【００６４】
共通データバス１５６とレジスタ付トランシーバ２１２はＳバス１０２との間でのデータ転送経路を提供しており、これはそれぞれの処理ユニットへの独立した線など他の構造より一層効率的であり得る。この経路を通って、データを処理ユニットからレジスタ付トランシーバ１２２へ、またレジスタ付トランシーバ１９４、Ｓバスレジスタ１９６、Ｓバスバッファ１９８を経由してＳバス１０２へ直接転送できる。同様に、Ｓバス１０２からのデータをＳバスバッファ１９８、Ｓバスレジスタ１９６、およびレジスタ付トランシーバ１９４を介してレジスタ付トランシーバ１２２へさらに一組の処理ユニットへ直接転送することが出来る。つまりレジスタ付トランシーバ１２２、レジスタ付トランシーバ１９４、およびＳバスレジスタ１９６は共通データバス１５６とＳバス１０２の間で転送されるデータ項目を保存するためのパイプラインとして機能することになる。図５との関連で前述したように、レジスタ兼復号回路１５４は書き込み可能信号を供給して処理ユニット内のＳＲＡＭ２４０にその組のそれぞれの処理ユニットのレジスタ付トランシーバ２１２からのデータを保存することが出来る。
【００６５】
上述の回路により提供される経路は隅角折り返し回路を含んでいない。これはそれぞれの処理ユニットが水平方向のフォーマットにあるデータを取り扱うように構成されている場合に好適である。
【００６６】
図８の回路はホスト装置ＣＰＵ１４の介在なしに図１のメモリ１６などのメモリに対するダイレクトメモリアクセス（ＤＭＡ）方式読み取りおよび書き込みを実行できる。たとえば、画像処理を実行する上では、マスタ回路１４はホスト装置のＣＰＵとは独立に、マイクロプロセッサ２２０および２２２の要求およびＳＲＡＭ２４０の容量に従い画像の部分を定義するデータの読み取りまたは書き込みが出来る。この能力は連続した画像内の多数のタイルのそれぞれを取り扱うために使用可能である。ＳＲＡＭ２４０はマイクロプロセッサ２２０および２２２の内部レジスタより多くのデータ項目を保存できるため、ＳＲＡＭ２４０を用いてマイクロプロセッサ２２０および２２２のためのデータの取込みが可能である。
【００６７】
図９では、スレーブシーケンサ２８４はＳバス１０２上の線ＳＳｅｌ＊  、ＡＳ＊  、Ｒｄ、Ｓｉｚ［２：０］、ＰＡ［２７：０］で要求された動作を表わす信号を受信する。
【００６８】
Ｓバス１０２はこれに接続しているそれぞれのスレーブに対してＳＳｅｌ＊  線を含む。バス制御回路がスレーブのアドレス空間内の位置を表わす仮想アドレスをＤ［３１：０］  線上で受信すると、バス制御回路はスレーブのＳＳｅｌ＊  線を低値に引き下げることでスレーブによる操作要求を表わす。バス制御回路は仮想アドレスを適切な物理アドレスへ変換しまたＰＡ［２７：０］線上の物理アドレスを供給し、その時点でバス制御回路はＡＳ＊  線を用いて、ＳＳｅｌ＊  、Ｒｄ、およびＳｉｚ［２：０］線が有効でありアドレスがＰＡ［２７：０］上にありまたマスタがＤ［３１：０］  線上の仮想アドレスを供給停止可能であることを示すことが出来る。
【００６９】
ＳＳｅｌ＊  、Ｒｄ、およびＳｉｚ［２：０］線上の信号はスレーブシーケンサ２８４がＳバス１０２、Ｓバスレジスタ１８８、Ｓバスバッファ１９０を含むほかの部材へ信号を供給する方法を制御する。たとえばＳＳｅｌ＊  線とＡＳ＊  線の降端に応答して、スレーブシーケンサ２８４はＳバス１０２のＡｃｋ［２：０］線上に信号を供給し、Ｒｄ、Ｓｉｚ［２：０］、ＰＡ［２７：０］線上の要求がエラーかを示す、または要求された動作を実行する上でＤ［３１：０］  線上で読み込むまたは書き込むことの出来るデータユニットの大きさを示す。Ｓバススレーブは一般に１６ワードブロックまでのバイトサイズとは異なるいくつかの大きさの転送を取り扱う許可を有しているものの、スレーブシーケンサ２８４は限られた能力でのみ実施する必要がある。たとえば、スレーブシーケンサ２８４はワードおよびバイト単位の転送だけを取り扱うことが出来、また線Ａｃｋ［２：０］上にワードまたはバイトを示すことが出来る。
【００７０】
図示したように、Ｓバスバッファ１９０はＳバス１０２のＤ［３１：０］  線に接続されており、Ｓバスバッファ１９０はスレーブシーケンサ２８４の制御下でＳバス１０２のタイミングの制約を満足させるように動作する。Ｓバスレジスタ１８８はＳバス１０２からクロックを供給されているが、スレーブシーケンサ２８４により制御されることでトランシーバ１２４および制御保存回路１５０との間のケーブル１１８両端での信号の刻時の信頼性を確保するようにパイプライン段階を提供する。スレーブシーケンサ２８４はたとえば、Ｓバスレジスタ１８８がデータを受信する方向を決定して、所定の周期の間にこれを有効または無効にすることが出来る。
【００７１】
同様に、アドレスバッファ１８２はＳバス１０２のＰＡ［２７：０］線に接続されており、スレーブシーケンサ２８４の制御下でケーブル１１８経由でＣＳアドレスバッファ１８０へと起動用ＰＲＯＭ１１６へのアドレスを供給する。起動用ＰＲＯＭ１１６はスレーブシーケンサ２８４の制御下にあるバッファ１８４を介してＳバス１０２のＤ［３１：０］  線へ出力を供給する。スレーブシーケンサ２８４はまたバッファ１８４の１ビットを直接駆動して制御／状態レジスタ１６８内のＲＵＮビットの値を示すことの出来る接続も有している。
【００７２】
スレーブシーケンサ２８４はまたクロック制御論理回路２８０とケーブル１１８経由で制御保存回路１５０の書き込み可能線とケーブル１１８経由でＭＡＲ１５２およびＣＳアドレスバッファ１８０の出力イネーブル線へも信号を供給する。出力イネーブル信号はＭＡＲ１５２およびＣＳアドレスバッファ１８０からの出力をゲートする従来回路へ供給して制御保存回路１５０をアクセスするためのアドレスを選択することが出来る。図示した線に加えて、スレーブシーケンサ２８４はトランシーバ１２４へ制御信号を供給するようにも接続してある。
【００７３】
スレーブシーケンサ２８０により制御される動作には、制御保存回路１５０からデータを読み込むまたはデータを書き出す操作、出力／状態レジスタ１６８からデータを読み込むまたはデータを書き出す操作、およびＳバス１０２へ起動用ＰＲＯＭ１１６からデータを読み出す操作が含まれる。必要であればスレーブシーケンサ２８４はアドレスバッファ１８２が線ＰＡ［２７：０］から起動用ＰＲＯＭ１１６へまたＣＳアドレスバッファ１８０へのアドレスを示すデータを提供することが出来るように制御信号を供給することが出来る。アドレスの高次ビットから、スレーブシーケンサ２８４はアドレスが起動用ＰＲＯＭ１１６用か、制御保存回路１５０用か、または制御／状態レジスタ１６８用かを決定できる。たとえば、０から（２５６Ｋ−１）のアドレスは起動用ＰＲＯＭ１１６用、アドレス２５６Ｋから（５１２Ｋ−１）は制御保存回路１５０用、またアドレス５１２Ｋから（７６８Ｋ−１）は制御／状態レジスタ１６８用とすることが出来る。
【００７４】
スレーブシーケンサ２８４は起動用ＰＲＯＭ１１６へ出力イネーブル信号を供給してアドレスバッファ１８２内のデータで示されるアドレスからデータを読み出すことが出来る。次に、スレーブシーケンサ２８４はバッファ１８４に制御信号を供給してＳバス１０２の線Ｄ［３１：０］  上に起動用ＰＲＯＭ１１６からのデータを供給できるようにすることが出来る。起動用ＰＲＯＭ１１６は一度に１バイトを供給するので、スレーブシーケンサ２８４は起動用ＰＲＯＭ１１６用アドレスとＳｉｚ［２：０］線上のワード信号を受信した場合Ａｃｋ［２：０］線上に１バイト信号を供給する。
【００７５】
スレーブシーケンサ２８４はＭＡＲ１５２およびＣＳアドレスバッファ１８０の出力イネーブルへ信号を供給してＣＳアドレスバッファ１８０からのアドレスが制御保存回路１５０へ供給されるようにする。Ｒｄ線に従ってスレーブシーケンサ２８４は制御保存回路１５０の出力イネーブル端子へ動作が読み込みまたは書き込み操作どちらであるかを表わす信号を供給する。スレーブシーケンサ２８４はさらに制御保存回路１５０へまたはここからワードを転送する信号を供給することが出来る。
【００７６】
操作が制御保存回路１５０からの１ワード読み出しの場合スレーブシーケンサ２８４は選択信号をトランシーバ１２４へまた制御信号をＳバスレジスタ１８８とＳバスバッファ１９０へ供給してワードをＳバス１０２の線Ｄ［３１：０］  へ転送することが出来る。スレーブシーケンサ２８４は制御保存回路１５０がコプロセッサとホスト装置のＣＰＵの間のメールボックスとして使用されている場合また診断動作中にも制御保存回路１５０からＳバス１０２へデータを転送することが出来る。
【００７７】
操作が制御保存回路１５０への書き込みの場合、スレーブシーケンサ２８４は制御信号をＳバスバッファ１９０およびＳバスレジスタ１８８へまた選択信号をトランシーバ１２４へ供給することにより、書き込むワードを線Ｄ［３１：０］  から適切なトランシーバ１２４の１つへ転送できる。スレーブシーケンサ２８４の主な機能の１つはＳバス１０２から制御保存回路へこの方法でマイクロ命令を転送することである。スレーブシーケンサ２８４はまた制御保存回路１５０がコプロセッサとホスト装置のＣＰＵの間のメールボックスとして使用中の場合制御保存回路１５０へＳバス１０２からのデータを転送することも出来る。
【００７８】
現行の実施において操作が制御／保存レジスタ１６８の読み取りまたは書き込みの場合、ＲＵＮビットだけが読み出しまたは書き込みされる。スレーブシーケンサ２８４は書き込むべきデータを直接制御／状態レジスタ１６８へ供給するように接続してあり、また制御／状態レジスタ１６８から直接読み込まれるデータを受信するように接続してある。読み込み操作の場合、スレーブシーケンサ２８４はＲＵＮビットの値をバッファ１８４を介して１つまたはそれ以上の線Ｄ［３１：０］  へ供給することが出来る。書き込み操作の場合、ＰＡ［２７：０］線上のアドレスはＲＵＮビットをセットするかまたはクリアするかを表わし、スレーブシーケンサ２８４はセットまたはクリア信号を制御／状態レジスタ１６８へ直接供給することが出来る。
【００７９】
図１０から図１５はスレーブシーケンサ２８４により制御される操作の間にどのように信号が供給されるかを詳細に図示している。図１６から図２５ではＤＶＭＡシーケンサ２８２により制御される操作の間にどのように信号が供給されるかを詳細に図示している。いずれの場合にも、操作を制御するシーケンサ内の論理は受信する信号に基づいて別の部材への信号を供給する。論理は従来のデジタル論理設計の原則にしたがって設計することが出来る。
【００８０】
図１０から図２５に図示した信号の大半は図８および図９を参照して上述したものである。さらに、それぞれのタイミング図はＣｌｋ  信号およびｐｒｏｃＣｌｋ  信号を含んでいる。Ｓバス１０２は図７を参照して上述したようにクロック制御論理回路２８０で受信するＣｌｋ  線を有している。クロック制御論理回路２８０はその結果レジスタ兼復号回路１５４へｐｒｏｃＣｌｋ  信号を供給する。
【００８１】
クロック制御論理回路２８０は３入力の単一ＡＮＤゲートのように動作することが出来る。１つの入力はＳバス１０２からのＣｌｋ  である。もう１つの入力はスレーブシーケンサ２８４が低値にすることでｐｒｏｃＣｌｋ  信号を停止させる線であり、第３の入力はＤＶＭＡシーケンサ２８２が低値にすることでｐｒｏｃＣｌｋ  信号を停止させる線である。従って、ｐｒｏｃＣｌｋ  はスレーブシーケンサ２８４またはＤＶＭＡシーケンサ２８２いずれかにより停止できるが、両方のシーケンサが再開を許可した場合に限って再開することが出来る。ｐｒｏｋＣｌｋ  信号上の不用意なスパイクを防止するため、スレーブシーケンサ２８４およびＤＶＭＡシーケンサ２８２はＳバスのＣｌｋ  信号が低値の間だけクロック制御信号の状態を変更できるようになっている。
【００８２】
図１０は動作中にｐｒｏｃＣｌｋ  信号を停止させることなくスレーブシーケンサにより実行される動作を示している。言い換えれば、動作中のＣｌｋ  線上のそれぞれのパルスがｐｒｏｃＣｌｋ  パルスを発生させるので、コプロセッサがマイクロ命令を実行することになる。
【００８３】
Ｃｌｋ  周期−１の間に、現在のバスマスタはＳｉｚ［２：０］およびＲｄ線上に信号を供給開始し、仮想アドレスＶＡをＤ［３１：０］  線上に供給し続ける。Ｃｌｋ  周期０の間に、ホストバス制御回路はスレーブシーケンサ２８４のＡＳ＊  線とＳＳｅｌ＊  線を低値にする。ホストバス制御回路はまたＰＡ［２７：０］上にＶＡから得られた物理アドレスも供給し現在のバスマスタはＶＡの供給を停止する。
【００８４】
これに応答して、スレーブシーケンサ２８４はＳｉｚ［２：０］上の信号で示されたブロックサイズがスレーブシーケンサ２８４で支持されていない大きさであると決定する。つまりＣｌｋ  周期１の間に、スレーブシーケンサ２８４はエラーを表わす信号をＡｃｋ［２：０］に供給開始する。この信号を検出するとホストバス制御回路はＡＳ＊  線をＣｌｋ  周期２の間に低値にする。Ｃｌｋ  周期２の間にエラー信号の終端を検出すると、ホストバス制御回路はＣｌｋ  周期３の間にＳＳｅｌ＊  を低値にしてＰＡ［２７：０］への物理アドレスの供給を停止する。同様にエラー信号の終端を検出すると、現在のバスマスタはＣｌｋ  周期３の間にＳｉｚ［２：０］およびＲｄへの信号供給を停止する。
【００８５】
図１１から図１５はＣｌｋ  周期０の間に供給される信号がエラーではないとスレーブシーケンサ２８４が決定しそれによって要求された動作を実行し、マイクロ命令の実行を阻止するためにクロック制御論理回路２８０へｐｒｏｃＣｌｋ  信号を停止させる信号を送出する動作を図示している。それぞれの動作が完了すると、スレーブシーケンサ２８４はクロック制御論理回路２８０を開放しｐｒｏｃＣｌｋ  パルスがまた供給されるようにする。
【００８６】
図１１は制御／状態レジスタ１６８のＲＵＮビットを読み取る動作を図示している。Ｃｌｋ  周期１の間にスレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送出してｐｒｏｃＣｌｋ  を停止させ、アドレスバッファ１８２を経由してＣＳアドレスバッファ１８０へＰＡ［２７：０］上の物理アドレスを供給するのに必要な全ての信号を供給する。Ｃｌｋ  周期２および３の間に次のようなことが起こる。物理アドレスは制御／状態レジスタ１６８をアドレスするように接続してあるＣＳアドレスバッファ１８０へ伝えられる。スレーブシーケンサ２８４はＲＵＮビットの値Ｒｅｇ  を制御／状態レジスタ１６８から読み出す。スレーブシーケンサ２８４はまたＲｅｇ  をＲＵＮ線上のバッファ１８４へ供給する。Ｃｌｋ  周期３の間にスレーブシーケンサ２８４はワードが供給されることを表わす信号をＡｃｋ［２：０］に供給する。Ｃｌｋ  周期４の間にスレーブシーケンサ２８４は制御信号をバッファ１８４へ供給することでＲｅｇ  をＤ［３１：０］  線上に供給する。おなじ周期中にスレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送ってマイクロ命令の実行を再開できるようにｐｒｏｃＣｌｋ  を再開させる。
【００８７】
Ｃｌｋ  周期４の開始時にＡｃｋ［２：０］でワード信号を受信すると、ホストバス制御回路はＣｌｋ  周期４の間にＡＳ＊  を低値にする。同様に、現在のバスマスタはＤ［３１：０］  線上に供給された場合にＲｅｇ  を取り扱うように準備することでワード信号に応答する。
【００８８】
図１２は制御／状態レジスタ１６８に書き込む動作、特定すれば制御保存回路１５０のアドレスｎに保存されたマイクロ命令ルーチンの実行を開始するためにＲＵＮビットを設定する動作を示している。上述のように、アドレス０はＲＵＮビットがセットされていない間にＭＡＲ１５２へ読み込まれており、制御保存回路１５０へ繰り返して供給され、制御保存回路は次に実行するｎｏ  ｏｐ  命令を供給する。図１２に図示したのと同様の動作を用いてＲＵＮビットをクリアすることが出来る。
【００８９】
Ｃｌｋ  周期１の間に、スレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送出してｐｒｏｃＣｌｋ  を停止させ、アドレスバッファ１８２を経由してＣＳアドレスバッファ１８０へＰＡ［２７：０］の物理アドレスを供給するのに必要な全ての信号を供給する。おなじ周期中に、現在のバスマスタは制御／状態レジスタ１６８に書き込むデータをＤ［３１：０］  上に供給開始することが出来る。スレーブシーケンサ２８４はＤ［３１：０］  の最上位ビットからまたはこれ以外ではＰＡ［２７：０］のアドレスの高次ビットからＲＵＮビットをセットするかまたはクリアするかを決定することが出来る。
【００９０】
Ｃｌｋ  周期２および３では、スレーブシーケンサ２８４がＤ［３１：０］  の最上位ビットまたはＰＡ［２７：０］のアドレスの高次ビットに従って制御／状態レジスタ１６８のＲＵＮビットをセットするかまたはクリアする信号を供給する。Ｃｌｋ  周期３ではスレーブシーケンサ２８４はＡｃｋ［２：０］上にワード信号を供給する。
【００９１】
Ａｃｋ［２：０］上のワード信号をＣｌｋ  周期４の開始時に受信すると、ホストバス制御回路はＣｌｋ  周期４の間にＡＳ＊  を低値にする。同様に、現在のバスマスタはＤ［３１：０］  上へのデータ供給を停止する。
【００９２】
Ｃｌｋ  周期５の間に、スレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送ってマイクロ命令の実行をＣｌｋ  周期６の間に再開できるようにｐｒｏｃＣｌｋ  を再開させる。ここでアドレス０のマイクロ命令の実行によりアドレスｎをＭＡＲ１５２に読み込ませ、ｎのマイクロ命令がＣｌｋ  周期７の間に取り込まれＣｌｋ  周期８で復号される。つまり、Ｃｌｋ  周期８では、新しいアドレスがマイクロ命令の制御下にＭＡＲ１５２へ読み込まれマイクロ命令の実行を開始したことになる。
【００９３】
図１３は起動用ＰＲＯＭ１１６からのバイトを読み込む動作を示し図１１に図示した動作と非常に良く似ている。主な相違はＣｌｋ  周期２、３、４にみられる。Ｃｌｋ  周期２および３では、スレーブシーケンサ２８４が起動用ＰＲＯＭ１１６へ出力イネーブル信号を供給してアドレスバッファ１８２からのアドレスが起動用ＰＲＯＭ１１６を経由して伝達されまた１バイトを読み出すようにする。Ｃｌｋ  周期３で、スレーブシーケンサ２８４は１バイトを供給することを示す信号をＡｃｋ［２：０］に供給する。Ｃｌｋ  周期４では、スレーブシーケンサ２８４はクロック信号をバッファ１８４へ供給することでそのバイトをＤ［３１：０］  へ供給する。おなじ周期中に、スレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送りマイクロ命令の実行を再開し得るようにｐｒｏｃＣｌｋ  を再開させる。
【００９４】
Ｃｌｋ  周期４の初めにＡｃｋ［２：０］上にバイト信号を受信すると、ホストバス制御回路はＣｌｋ  周期４の間ＡＳ＊  を低値にする。同様に、起動時には通常ホスト装置のＣＰＵである現在のバスマスタが、Ｄ［３１：０］  に供給される場合にそのバイトを取り扱うように準備することでバイト信号に応答する。
【００９５】
図１４はＣｌｋ  周期０の初めにＳｉｚ［２：０］へ現在のバスマスタにより供給される信号で表わされる制御保存回路１５０からのワードを読み取る動作を示す。Ｃｌｋ  周期１の間に、スレーブシーケンサ２８４はクロック制御回路２８０へ信号を送ってｐｒｏｃＣｌｋ  を停止させ、またアドレスバッファ１８２を介してＣＳアドレスバッファ１８０へＰＡ［２７：０］の物理アドレスを供給するのに必要な全ての信号を供給する。Ｃｌｋ  周期２では、スレーブシーケンサ２８４は出力イネーブル信号をＣＳアドレスバッファ１８０へ送出して物理アドレスがＣｌｋ  周期３の間に制御保存回路１５０へ供給されるようにする。
【００９６】
Ｃｌｋ  周期２から４までのそれぞれで、スレーブシーケンサ２８４はＳバスレジスタ１８８およびＳバスバッファ１９０へ制御信号を送出してパイプライン中のどのようなデータでもＤ［３１：０］  へ転送させる。Ｃｌｋ  周期２および３の間また他の図面においても同様な周期の間に供給されたデータは有用なデータであるとは限らないのでジャンク（屑）と称される。Ｃｌｋ  周期３および４の間に、ＣＳアドレスバッファ１８０内の物理アドレスに応答して制御保存回路１５０から読み出されたワードが適切なトランシーバ１２４のひとつを介してＳバスレジスタ１８８へ転送され、さらにＳバスバッファ１９０を通してＣｌｋ  周期４の終までにＤ［３１：０］  へ確実に達するようにする。
【００９７】
Ｃｌｋ  周期３の間に、スレーブシーケンサ２８４はワードをＳバスレジスタ１８８へ保存するための制御信号を供給し、Ａｃｋ［２：０］にワードが供給されることを表わす信号も供給する。Ｃｌｋ  周期４の間に、スレーブシーケンサ２８４はクロック制御論理回路２８０へｐｒｏｃＣｌｋ  を再開させる信号を送出してマイクロ命令の実行を再開させることが出来る。
【００９８】
Ｃｌｋ  周期４の初めにＡｃｋ［２：０］上でワード信号を受信すると、ホストバス制御回路はＣｌｋ  周期４の間ＡＳ＊  を低値にする。同様に、現在のバスマスタはワードがＤ［３１：０］  に供給されるときに取り扱えるように準備することでワード信号に応答する。
【００９９】
図１５は制御保存回路１５０にワードを書き込む動作を示している。Ｃｌｋ  周期１の間に、スレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送出してｐｒｏｃＣｌｋ  を停止させ、またアドレスバッファ１８２を介してＣＳアドレスバッファ１８０へＰＡ［２７：０］上に物理アドレスを供給するために必要な全ての信号を供給する。同一周期中に、現在のバスマスタは制御保存回路１５０へ書き込むワードをＤ［３１：０］  に供給開始する。
【０１００】
Ｃｌｋ  周期２では、スレーブシーケンサ２８４が出力イネーブル信号をＣＳアドレスバッファ１８０に供給して制御保存回路１５０へ物理アドレスが供給されるようにする。おなじ周期中に、スレーブシーケンサ２８４はＳバスレジスタ１８８のＤ［３１：０］  にワードを保存するための制御信号も供給する。
【０１０１】
Ｃｌｋ  周期３の間に、スレーブシーケンサ２８４はＡｃｋ［２：０］にワードが書き込まれつつあることを示す信号を供給する。Ｃｌｋ  周期４では、スレーブシーケンサ２８４は制御保存回路１５０を書き込み可能とするための信号を供給しまた書き込むワードを適切なトランシーバ１２４の１つを経由して制御保存回路１５０へ転送するための信号を供給し、信号が書き込まれる。
【０１０２】
Ａｃｋ［２：０］上にＣｌｋ  周期４の初めにワード信号を受信すると、ホストバス制御回路はＣｌｋ  周期４の間ＡＳ＊  を高値にする。同様に、現在のバスマスタはＤ［３１：０］  上へのワード供給を停止する。
【０１０３】
Ｃｌｋ  周期５の間に、スレーブシーケンサ２８４は出力イネーブル信号を供給して、次のマイクロ命令を取り出すための準備としてＭＡＲ１５２からのアドレスが制御保存回路１５０へ供給されるようにする。おなじ周期中に、スレーブシーケンサ２８４はクロック制御論理回路２８０へ信号を送出しＣｌｋ  周期６の間にマイクロ命令の実行が再開できるようにｐｒｏｃＣｌｋ  を再開させる。
【０１０４】
図１６はスレーブからのワードをレジスタ兼復号回路１５４からの信号に応答して読み出すＤＭＡ動作を図示している。Ｃｌｋ  周期−２（図示していない）では、レジスタ兼復号回路１５４が読み込むべきワードについての仮想アドレスＶＡをレジスタ付トランシーバ１９４を経由してＳバスレジスタ１９６へ転送する動作を完了できる。おなじ周期中に、レジスタ兼復号回路１５４はＤＶＭＡシーケンサ２８２に動作を要求する信号を供給できる。これに応じて、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０にすぐに信号を送ってｐｒｏｃＣｌｋ  を停止させ、ＤＶＭＡシーケンサ２８２が要求された動作を実行し続けるために別のｐｒｏｃＣｌｋ  パルスが必要となるまでマイクロ命令の実行が中断される。つまりｐｒｏｃＣｌｋ  はＣｌｋ  周期−１の間パルス出力されないことになる。
【０１０５】
Ｃｌｋ  周期−１の間、ＤＶＭＡシーケンサ２８２はＢＲｅｑ＊  線を低値にしてＳバス１０２の制御を要求する。これに応じて、Ｓバス制御回路はＤＶＭＡシーケンサ２８２のＢＧｎｔ＊  線をＣｌｋ  周期０の間低値にして、バス制御を許可する。場合によっては、ＢＧｎｔ＊  信号までにさらなる周期が挟まることもあり得る。
【０１０６】
ＢＧｎｔ＊  信号を受信すると、ＤＶＭＡシーケンサ２８２はレジスタ兼復号回路１５４の要求した動作の実行を開始する。Ｃｌｋ  周期１では、ＤＶＭＡシーケンサ２８２はＳｉｚ［２：０］線上にワード信号またＲｄ線上に読み込み信号を供給する。また、ＤＶＭＡシーケンサ２８２はＳバスバッファ１９８に制御信号を供給してＳバスレジスタ１９６からのＶＡがＤ［３１：０］  線上に供給されるようにする。次に、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を送出してｐｒｏｃＣｌｋ  を再開させ、Ｃｌｋ  周期２の間に１つのｐｒｏｃＣｌｋ  パルスが発生するようにして次のマイクロ命令を実行させる。このマイクロ命令の実行では、レジスタ兼復号回路１５４がＳバスレジスタ１９６とレジスタ付トランシーバ１９４を経由してデータを転送する方向を変化させる信号を供給し、データはＳバス１０２からＳバスバッファ１９８を通って受信できるようになる。
【０１０７】
図１６において、Ｓバス制御回路はＶＡをすぐに物理アドレスへ変換し、またＣｌｋ  周期２の間にＰＡ［２７：０］線上に物理アドレスを供給する。場合によっては、物理アドレスの供給までにさらなる周期が挟まることもあり得る。物理アドレスがすでに利用可能であることを示すために、Ｓバス制御回路はＣｌｋ  周期２の間にＡＳ＊  線も低値にする。
【０１０８】
ＡＳ＊  に応答して、ＤＶＭＡシーケンサ２８２はＣｌｋ  周期３と４と５の間にＳバスバッファ１９８へ制御信号を供給し、ＶＡがもはやＤ［３１：０］  に供給されていないことを示す。その結果、スレーブがＣｌｋ  周期４の間にＡｃｋ［２：０］にワード信号を供給すると、Ｄ［３１：０］  上のワードをＣｌｋ  周期５の間にＳバスレジスタ１９６へ転送できる。Ｓバス制御回路はＢＧｎｔ＊  およびＡＳ＊  を高値にすることでワード信号に応答するが、ＤＶＭＡシーケンサ２８２がすでにＳバス１０２を必要としないためこれは許容し得ることである。
【０１０９】
ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を送出してｐｒｏｃＣｌｋ  を再開させることでワード信号に応答し、マイクロ命令のシーケンスが実行されワードの受信と宛先への転送が実行される。レジスタ兼復号回路１５４はＣｌｋ  周期６の間にマイクロ命令を実行し、ワードがＤ［３１：０］  から消去されるまでにＳバスレジスタ１９６内に保存されるように信号を供給する。次のマイクロ命令でレジスタ付トランシーバ１９４ならびに１２２を介して一組の処理ユニットへワードを転送することが出来る。
【０１１０】
図１７は図１６におけるいくつかのＣｌｋ  周期のそれぞれの終端でのパイプライン・レジスタの略図を示している。それぞれの略図では、パイプラインは下端のＳバス１０２へと上端の１つまたはそれ以上の処理ユニットから延出している。最上部のパイプラインの段階は処理ユニットのレジスタ付トランシーバ２１２を表わす。第２の段階はレジスタ付トランシーバ１２２を示す。第３の段階はレジスタ付トランシーバ１９４を示す。第４の段階はＳバスレジスタ１９６を表わす。図１６の動作に関係しないデータは破線で示してある。
【０１１１】
略図３１０は、Ｃｌｋ  周期−４などのＣｌｋ  周期−２より幾らか先に始まり、仮想アドレスＶＡは処理ユニットの１つのレジスタ付トランシーバ２１２に存在する。略図３１２および３１４では、ＶＡはレジスタ付トランシーバ１２２へさらにレジスタ付トランシーバ１９４へ転送されており、パイプラインは図１６のＣｌｋ  周期−２の終端での状態になっている。
【０１１２】
略図３１６では、Ｃｌｋ  周期−１のあとのパイプラインを示し、Ｓバスレジスタ１９６内にＶＡがある。次に、Ｃｌｋ  周期２の終端までに、ＶＡは保存されなくなり、パイプラインは略図３１８に図示したように図１６の動作に関連するデータをまったく含まなくなる。
【０１１３】
略図３２０ではＣｌｋ  周期６以降のパイプラインを示し、Ｓバス１０２からのデータワードはＳバスレジスタ１９６に保存されている。略図３２２、３２４、３２６はＣｌｋ  周期７、８、９でワードがどのように転送されて全処理ユニットのレジスタ付トランシーバ２１２に到達するかを示している。Ｃｌｋ  周期１０では、ワードは一組の処理ユニットのそれぞれのＳＲＡＭ２４０内に書き込まれ、動作を完了できる。
【０１１４】
図１７に図示したいくつかの段階はそれぞれのマイクロ命令を実行した結果として発生することが出来る。たとえば、略図３１０、３１２、３１４、３１６は図１６のＣｌｋ  周期−１より先行する周期において実行したマイクロ命令の結果として発生し、また略図３２０、３２２、３２４、３２６はそれぞれＣｌｋ  周期６、７、８、９で実行したマイクロ命令の結果として発生するものである。略図３１８はマイクロ命令の実行の全ての作用を明示的に図示してはいないが、Ｃｌｋ  周期２で実行したマイクロ命令は前述のように後続のデータ転送方向に影響を有している。
【０１１５】
図１８はレジスタ兼復号回路１５４からの信号に応答してワードを書き込むＤＭＡ動作を図示している。Ｃｌｋ  周期−２（図示していない）において、レジスタ兼復号回路１５４はレジスタ付トランシーバ１９４を経由してＳバスレジスタ１９６に書き込むワードについての仮想アドレスＶＡを転送しまたレジスタ付トランシーバ１２２を経由してレジスタ付トランシーバ１９４に書き込むワードを転送する動作を完了することが出来る。おなじ周期中に、レジスタ兼復号回路１５４はＤＶＭＡシーケンサ２８２に動作を要求する信号を供給できる。これに応じて、ＤＶＭＡシーケンサ２８２はすぐにクロック制御論理回路２８０へ信号を供給してｐｒｏｃＣｌｋ  を停止させ、ＤＶＭＡシーケンサ２８２が要求された動作を実行し続けるために別のｐｒｏｃＣｌｋ  パルスが必要となるまでマイクロ命令の実行が中断される。つまりｐｒｏｃＣｌｋ  はＣｌｋ  周期−１の間はパルス出力されないことになる。
【０１１６】
Ｃｌｋ  周期−１の間、ＤＶＭＡシーケンサ２８２はＢＲｅｑ＊  線を低値にしてＳバス１０２の制御を要求する。これに応じてＳバス制御回路はＤＶＭＡシーケンサ２８２のＢＧｎｔ＊  線をＣｌｋ  周期０の間低値にして、バス制御を許可する。場合によってはＢＧｎｔ＊  信号以前にさらなる周期が挟まることも有り得る。
【０１１７】
ＢＧｎｔ＊  信号を受信すると、ＤＶＭＡシーケンサ２８２はレジスタ兼復号回路１５４の要求した動作を実行開始する。Ｃｌｋ  周期１では、ＤＶＭＡシーケンサ２８２はＳｉｚ［２：０］にワード信号またＲｄに読み取り信号を供給する。また、ＤＶＭＡシーケンサ２８２はＳバスバッファ１９８に制御信号を供給してＳバスレジスタ１９６からのＶＡがＤ［３１：０］  線上に供給されるようにする。次に、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を送出してＣｌｋ  周期２の間にｐｒｏｃＣｌｋ  パルスを１つ供給させ、次のマイクロ命令が実行されるようにする。このマイクロ命令の実行において、レジスタ兼復号回路１５４はレジスタ付トランシーバ１９４からＳバスレジスタ１９６へ書き込むワードを送出する信号を供給して書き込むワードがＳバスバッファ１９８を経由してＳバス１０２へ供給できるようにする。
【０１１８】
図１８では、Ｓバス制御回路はＶＡをすぐに物理アドレスへ変換して、Ｃｌｋ  周期２の間に物理アドレスをＰＡ［２７：０］へ供給する。場合によっては物理アドレスが供給されるまでにさらなる周期が挟まることもあり得る。物理アドレスが利用可能になったことを示すため、Ｓバス制御回路はＣｌｋ  周期２の間にＡＳ＊  も低値にする。
【０１１９】
スレーブがＣｌｋ  周期４の間にＡｃｋ［２：０］にワードを受信したことを表わすワード信号を供給すると、ＤＶＭＡシーケンサ２８２はＣｌｋ  周期５でデータワードの供給を停止する。Ｓバス制御回路はＢＧｎｔ＊  線およびＡＳ＊  線を低値にすることでワード信号にも応答するが、ＤＶＭＡシーケンサ２８２がもはやＳバス１０２を必要としないためこれは許容し得ることである。
【０１２０】
ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０へ信号を送出してｐｒｏｃＣｌｋ  を再開させてワード信号にも応答し、マイクロ命令の通常の実行が再びＣｌｋ  周期５で開始できるようにする。スレーブはすでにＳｉｚ［２：０］とＰＡ［２：０］  を必要としないので、これらの線上の信号は周期６で消去される。
【０１２１】
図１９は図１８のいくつかのＣｌｋ  周期のそれぞれの終端でのレジスタのパイプラインの略図である。
【０１２２】
略図３５０は、Ｃｌｋ  周期−４などＣｌｋ  周期−２より幾らか先に始まり、仮想アドレスＶＡが処理ユニットの１つのレジスタ付トランシーバ２１２に存在している。略図３５２はＣｌｋ  周期−３のことがあり、ＶＡはレジスタ付トランシーバ１２２へ転送されており、書き込むデータワードは処理ユニットの１つのレジスタ付トランシーバ２１２に存在している。略図３５４では、ＶＡはレジスタ付トランシーバ１９４へさらに転送されており、データワードがレジスタ付トランシーバ１２２へ転送されているので、パイプラインは図１８のＣｌｋ  周期−２の終端での状態になっている。
【０１２３】
略図３５６はＣｌｋ  周期−１のあとでのパイプラインを示し、ＶＡはＳバスレジスタ１９６にまたデータワードはレジスタ付トランシーバ１９４にある。次に、Ｃｌｋ  周期２の終端までに、データワードはＳバスレジスタ１９６に到達し略図３５８に図示したようにＳバス１０２へ供給できるようになる。
【０１２４】
図１６から図１９の単一ワードＤＭＡ読み出しおよび書き込み動作は、たとえばカーネルまたはその他の特定のデータを１つまたはそれ以上の処理ユニットとホスト装置のメモリまたは別のメモリ装置の間での転送を行なうためにデバッグしている間に使用することが出来る。
【０１２５】
また図１６および図１９に図示したように単一ワードのＤＭＡ読み出しおよび書き込み動作は図１４および図１５のスレーブ動作と組み合わせることによって処理ユニットとホスト装置のＣＰＵの間または制御保存回路１５０を介して別のバスマスタの間でデータ転送するために使用できる。言い換えれば、スレーブシーケンサ２８４はここへまたはここからＤＭＡ読み出しまたは書き込み動作が実行されるスレーブとなることが出来る。一般に、スレーブシーケンサ２８４が制御保存回路１５０から読み出しまたはここへ書き込んでいるどのＣｌｋ  周期でも、スレーブシーケンサ２８４がクロック制御論理回路２８０へ信号を送出してｐｒｏｃＣｌｋ  を停止させることが出来る。その他のＣｌｋ  周期の間、マスタシーケンサ２８２はマスタ動作を実行するための必要に応じてクロック制御論理回路へ信号を送ってｐｒｏｃＣｌｋ  を再開させることが出来る。
【０１２６】
同様に、図１８および図１９に図示したような単一ワードのＤＭＡ書き込み動作は図１２の場合と類似のスレーブ動作と組み合わせることによってＲＵＮビットをクリアし、コプロセッサが実際にそれ自身を停止させることが出来るようになっている。言い換えれば、レジスタ兼復号回路１５４はＲＵＮビットのクリアを検出してｎｏ  ｏｐ  命令を実行することによりこれに応答することが出来る。
【０１２７】
しかし単一ワードのＤＭＡ読み出しおよび書き込み動作は画像の転送のためには効率的ではない。このような転送は通常大量のワードが関係してくるためである。
【０１２８】
図２０から図２５は複数ワードのＤＭＡ読み出しおよび書き込みを図示している。これらの動作はブロック転送またはバースト転送とも称し、画像の一部または全部を定義するデータの転送において非常に有用であり得る。
【０１２９】
図２０および図２１では、レジスタ兼復号回路１５４からの信号に応答してスレーブから複数ワードを読み出すＤＭＡ動作の開始と終了をそれぞれ示している。図２０においてＣｌｋ  周期４を通る第１の数周期では、図１６のそれと同一であるが、仮想アドレスＶＡがワードブロック内のどのワードを第１に転送するかを示している点で異なっている。
【０１３０】
ブロック転送はＳｉｚ［２：０］で示されるため、スレーブは一連のデータワードを供給することで応答する。スレーブはたとえば、図２０のＣｌｋ  周期５の初めで示したように、各周期に１つのワードを供給できる。スレーブはこれ以外に図２１に図示したように１つおきの周期ごとに１ワードを供給することも出来る。いずれの場合にも、スレーブは図２１のＣｌｋ  周期６に図示したように複数ワードの転送が完了するまで継続することになる。より一般的には、データワード間のほとんどすべての他のクロック周期番号でスレーブにデータの供給または併合を許容することが出来るが、トランザクションが長すぎればバス制御回路がこれを終了させてもよい。マスタはスレーブがＡｃｋ［２：０］上に信号を供給する場合いつでも別のワードを供給できなければならない。
【０１３１】
図２０のＣｌｋ  周期６から１０のそれぞれと図２１のＣｌｋ  周期２、４、６の間、クロック制御論理回路２８０はｐｒｏｃＣｌｋ  パルスを供給してＤＶＭＡシーケンサ２８２からの信号に応答し、レジスタ兼復号回路１５４がマイクロ命令を実行する。これらのマイクロ命令の実行において、レジスタ兼復号回路１５４はＤ［３１：０］  からＳバスレジスタ１９６にデータワードそれぞれを保存するためとパイプラインに沿って処理ユニットへデータワードを進めるために信号を供給する。一方、図２１のＣｌｋ  周期１、３、５の間、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０へ信号を供給してｐｒｏｃＣｌｋ  を停止させる。
【０１３２】
その結果、図２１のＣｌｋ  周期４の間にＡｃｋ［２：０］に最後のワード信号を供給すると、Ｓバス制御回路はＢＧｎｔ＊  とＡＳ＊  線を高値にしてワード信号に応答する。これはＤＶＭＡシーケンサ２８２がもはやＳバス１０２を必要としないため許容し得ることである。ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０へ信号を送ってｐｒｏｃＣｌｋ  を再開させ、処理ユニットへのデータワード転送を完了するためのマイクロ命令がＣｌｋ  周期６から１０の間に実行されるようにする。
【０１３３】
図２２は図２０および図２１のいくつかのＣｌｋ  周期のそれぞれの終端におけるレジスタのパイプラインの略図である。略図３７０および３７２はそれぞれ図１７の略図３１０および３２４と同一である。略図３７４では、図２０のＣｌｋ  周期７のあとのパイプラインを示し、第１のデータワードはレジスタ付トランシーバ１９４に保存されており、第２のデータワードはＳバスレジスタ１９６に保存されている。同様に、略図３７６および３７８はそれぞれ図２０のＣｌｋ  周期８と９のあとのパイプラインを示し、この時点でパイプラインはデータワードで埋められている。Ｃｌｋ  周期９のあとで開始して、それぞれの処理ユニットのレジスタ付トランシーバ２１２に保存されているデータワードは一組の処理ユニットのそれぞれのＳＲＡＭ２４０に保存することが出来る。たとえば、レジスタ兼復号回路１５４はそれぞれのＣｌｋ  周期にマイクロ命令を実行して書き込みイネーブル信号をそれぞれの周期にただ１つの処理ユニットのＳＲＡＭ２４０へ供給し、データワードが均等に分配され１つのデータワードがそれぞれの処理ユニットに格納されるようにすることが出来る。
【０１３４】
スレーブが全てのＣｌｋ  周期でワードを供給する場合、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を供給して、全てのＣｌｋ  周期でｐｒｏｃＣｌｋ  パルスを供給させ、図２０に図示したようにパイプラインを満たしておくことが出来る。スレーブが１つおきのＣｌｋ  周期でデータワードを供給する場合、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を供給して１つおきのＣｌｋ  周期にｐｒｏｃＣｌｋ  パルスを供給させて、Ｄ［３１：０］  からのデータワードが交互のＣｌｋ  周期でＳバスレジスタ１９６に保存されるようにして、図２１に図示したようにパイプラインを満たしておくことが出来る。一般に、ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を送出することによってＤ［３１：０］  にワードが存在することを示すスレーブからのＡｃｋ［２：０］上の信号に応答し、ｐｒｏｃＣｌｋ  パルスを供給することでスレーブがワードを供給するどのような周期にもＤＶＭＡシーケンサ２８２がデータを取り扱えるようにしている。
【０１３５】
略図３８０は図２１のＣｌｋ  周期６のあとのパイプラインを示しており、スレーブからの最後のデータワードＮがＳバスレジスタ１９６に保存されている。略図３８２、３８４、３８６はそれぞれ図２１のＣｌｋ  周期７、８、９のあとのパイプラインを示しており、ワードＮがどのようにレジスタ付トランシーバ２１２に到達し、ここからＳＲＡＭ２４０へ保存されて複数ワードの読み込み動作を完了するかを示している。前述のように、データワードは均等に分配でき、１つのワードがそれぞれの処理ユニットのＳＲＡＭ２４０に保存される。
【０１３６】
スレーブからの複数ワードを保存するために利用できる時間が限られているので、転送が完了するまで複数ワード転送でのワードについての操作を実行するのは通常不可能である。しかしこれが可能だとすると、画像を読み込むとおりに画像を縮小するまたはその他の処理を施すことまたは直前に保存した画像と読み出した画像を比較することが可能となり有利であろう。
【０１３７】
図２３および図２４ではそれぞれレジスタ兼復号回路１５４からの信号に応答してスレーブへ複数ワードを書き込むＤＭＡ動作の開始と終了を図示している。Ｃｌｋ  周期４を通る図２３の第１の数周期は図１８と同一であるが、仮想アドレスＶＡがワードブロック内のどのワードを第１に転送するかを示している点で異なっている。
【０１３８】
ブロック転送はＳｉｚ［２：０］で示されるので、スレーブは図２３のＣｌｋ  周期５で始まるＡｃｋ［２：０］上の一連のワード信号で応答し、それぞれのワード信号でデータワードがスレーブに受信されたことを示す。それぞれのワード信号に応答して、ＤＶＭＡシーケンサ２８２は次のデータワードをＤ［３１：０］  へ供給する。スレーブは図２３に図示したように全周期でＡｃｋ［２：０］にワード信号を供給しまたは図２４に図示したように１つおきにまたは上述のようにワード間の何らかのほかのクロック周期数を有する別の間隔で、図２４のＣｌｋ  周期５で図示したように複数ワードの転送が完了するまで供給することが出来る。
【０１３９】
図２３のＣｌｋ  周期５から１０のそれぞれと図２４の周期０、２、４を除く図２４のＣｌｋ  周期−１、１、３の間、、ＤＶＭＡシーケンサ２８２はクロック制御回路２８０へ信号を送出してそれぞれの周期でｐｒｏｃＣｌｋ  パルスを供給させ、これに応じてレジスタ兼復号回路１５４はマイクロ命令を実行する。これらのマイクロ命令の実行において、レジスタ兼復号回路１５４はＳバスレジスタ１９６とレジスタ付トランシーバ１９４とレジスタ付トランシーバ１２２とそれぞれの処理ユニットのレジスタ付トランシーバ２１２へ信号を供給し、データワードがＳバス１０２に向かい処理ユニットからパイプラインに沿って進むようにする。一方、図２４の周期０、２、４の間、ＤＶＭＡシーケンサ２８２はクロック制御回路２８０に信号を送出してｐｒｏｃＣｌｋ  信号を停止させる。たとえば、レジスタ兼復号回路１５４はそれぞれのＣｌｋ  周期でマイクロ命令を実行して、それぞれのＣｌｋ  周期で別の処理ユニットのレジスタ付トランシーバ２１２へ供給源選択信号を供給し、１つのデータワードがそれぞれの処理ユニットから受信されるようにすることが出来る。
【０１４０】
その結果、スレーブが図２４のＣｌｋ  周期４の間にＡｃｋ［２：０］に最後のワード信号を供給すると、Ｓバス制御回路はＢＧｎｔ＊  とＡｓ＊  線を高値にすることでワード信号に応答するが、これはＤＶＭＡシーケンサ２８２がもはやＳバス１０２を必要としていないため許容し得ることである。ＤＶＭＡシーケンサ２８２はクロック制御論理回路２８０に信号を送出してｐｒｏｃＣｌｋ  を再開させ、通常のマイクロ命令の実行がＣｌｋ  周期５で再開されるようにする。
【０１４１】
図２５は図２３および図２４のいくつかのＣｌｋ  周期のそれぞれの終端でのレジスタのパイプラインの略図を示している。略図４１０および４１２はそれぞれ図１９の略図３５０および３５２と同一である。略図４１４は図２３のＣｌｋ  周期−２のあとのパイプラインを示し、仮想アドレスＶＡがレジスタ付トランシーバ１９４に存在しまたこの後ろのパイプラインがワード１とワード２で埋められている。略図４１６および４１８は図２３のＣｌｋ  周期−１および２のあとのパイプラインをそれぞれ示しており、このあとパイプラインはＡｃｋ［２：０］上のスレーブからのワード信号の準備としてデータワードで埋められている。
【０１４２】
スレーブが図２３のように全てのＣｌｋ  周期でまたは図２４のように１つおきのＣｌｋ  周期でＡｃｋ［２：０］にワード信号を供給すると、ＤＶＭＡシーケンサ２８２は同様に全てのＣｌｋ  周期でまたは１つおきのＣｌｋ  周期でそれぞれＳバス１０２にデータワードを供給することができる。略図４２０、４２２、４２４、４２６ではそれぞれ図２４のＣｌｋ  周期−３、−１、１、３のあとのパイプラインを示しており、ワードＮがどのようにＳバスレジスタ１９６へ到達し、ここからＳバス１０２へ供給されて複数ワードの書き込み動作を完了できるかを示している。
【０１４３】
図１５から図２５の動作を行なうために実行するマイクロ命令は、図６について前述したように、ホスト装置のメモリから制御保存回路１５０へロードすることが出来る。ホスト装置は開始点と長さによるなどで制御保存回路１５０の内容の記録を保存するようにプログラムしておくことが出来る。
【０１４４】
上述の実施はマイクロ命令に条件の検査を行なうことを許可していない。ＤＶＭＡシーケンサ２８２がホストバスを待機している場合はいつでもマイクロ命令の実行を阻止するので、マイクロ命令はホストバス上で遅延が存在しないかのように実行される。
【０１４５】
上述の実施例で示唆されるように、典型的なマイクロ命令のシーケンスはパイプライン中に仮想アドレスを供給することから開始することが出来る。書き込み動作を実行中の場合には、シーケンスはパイプライン中に書き込むべきデータも供給可能である。そのあとでバス制御を要求する。バス制御が受け入れられると、アドレスが供給され、書き込み動作の場合にはデータがパイプラインに送出される。スレーブが書き込み動作に応答すると、データはパイプラインへ供給される。読み込み動作の場合、データはスレーブが供給したかのようにパイプラインから保存される。
【０１４６】
本発明は米国特許第５，０６５，４３７号、米国特許第５，０４８，１０９号、米国特許第５，１２９，０１４号、米国特許第５，１３１，０４９号に記載されている形式の画像処理を含む多くの方法に応用することが出来る。これらの画像処理技術では第１の画像を定義するデータを使用して、浸蝕や拡大といった上述のセラの書籍に記載されている演算などの操作を通じて第２の画像を取得している。このような演算は、たとえばそれぞれが原本画像をシフトしてシフトした画像を取得し次に原本画像からの値とシフトした画像からの値をそれぞれの位置で用いてブール代数演算を実行するような一連の下位演算により実行できる。コプロセッサはこのような演算を上述のようにホストメモリからＤＭＡ操作を通して取得した画像データについて実行することが出来る。
【０１４７】
本発明はその他の各種の演算たとえば画素の計数、グレースケール形態化、歪曲検出、および画像に対するブール演算などを実行するために応用することも可能である。
【０１４８】
本発明は多数の画像を取り扱うようなまたは非常に大きな画像を取り扱うような状況に特に関連する。画像をホストバス経由で転送する能力はこのような状況で非常に重要である。
【０１４９】
本発明はコプロセッサがホストバスのほかのマスタとコプロセッサの制御保存回路を通じて通信するような実施に関連して説明した。本発明はまたその他の通信技術たとえばホストメモリの一領域を介してまたはホスト処理装置への割り込み線を介して実施してもよい。
【０１５０】
本発明は並列処理装置内の処理装置がホストバス上に供給されるアドレスを取得できるような実施に関連して説明した。本発明はまたホストバスへのアドレスを取得するためのその他の技術たとえば特化したアドレス計算回路などを用いて実施してもよい。
【図面の簡単な説明】
【図１】ホスト処理装置のバスへコプロセッサとして接続することのできる並列処理装置の一般的部材を示す略ブロック図である。
【図２】Ａは図１のスレーブ回路がコプロセッサの処理要求に応答する一般的動作を示す流れ図、Ｂは図１のコプロセッサ内の処理ユニットからホストバス上のスレーブ回路へデータを転送するマスタの処理における一般的動作を示す流れ図、Ｃは図１のコプロセッサ内の一組の処理ユニットへホストバス上のスレーブ回路からデータを転送するマスタの処理における一般的動作を示す流れ図である。
【図３】Ｓｐａｒｃ−Ｓｔａｔｉｏｎ  のＳバスに接続したＳＩＭＤ並列処理装置の実施における部材を示す略ブロック図である。
【図４】図３の制御回路の部材を示す略ブロック図である。
【図５】図３の処理ユニットの部材を示す略ブロック図である。
【図６】図４の制御保存回路にマイクロ命令をロードすることにおける一般的動作を示す流れ図である。
【図７】図３のボックスへのクロック信号を制御する部材を示す略ブロック図である。
【図８】図７のＤＶＭＡシーケンサをＳバスにまたマスタ回路のその他の回路に接続する線を表わす略ブロック図である。
【図９】図７のスレーブシーケンサをＳバスへまたスレーブ回路のその他の部材へ接続する線を示す略ブロック図である。
【図１０】図９のスレーブシーケンサがエラーを含む信号にどのように応答するかを示すタイミング図である。
【図１１】制御／状態レジスタからデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【図１２】制御／状態レジスタ内にＲＵＮビットを書き込む操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【図１３】起動用ＰＲＯＭからデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【図１４】制御保存回路からデータを読み出す操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【図１５】制御保存回路へデータを書き込む操作を要求する信号に対して図９のスレーブシーケンサがどのように応答するかを示すタイミング図である。
【図１６】ホスト装置のメモリからデータを読み出すＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答するかを示すタイミング図である。
【図１７】図１６の操作の間にパイプライン・レジスタ回路を通るデータの動きを示す略流れ図である。
【図１８】ホスト装置のメモリからのデータを書き込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答するかを示すタイミング図である。
【図１９】図１８の操作の間にパイプライン・レジスタ回路を通るデータの動きを示す略流れ図である。
【図２０】複数ワードを読み込むＤＭＡ操作を要求する信号に図８のＤＶＭＡシーケンサがどのように応答を開始するかを示すタイミング図である。
【図２１】複数ワードを読み込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答を完了するかを示すタイミング図である。
【図２２】図２０および図２１の操作の間にパイプライン・レジスタ回路を通過するデータの動きを示す略流れ図である。
【図２３】複数ワードを書き込むＤＭＡ操作を要求する信号に対して図８のＤＶＭＡシーケンサがどのように応答を開始するかを示すタイミング図である。
【図２４】複数ワードを書き込むＤＭＡ操作を要求する信号に対して図８のＤＭＶＡシーケンサがどのように応答を完了するかを示すタイミング図である。
【図２５】図２３および図２４の操作の間にパイプライン・レジスタ回路を通過するデータの動きを示す略流れ図である。
【符号の説明】
１０    ホスト処理装置、１２    ホストバス、１４    ＣＰＵ、１６    メモリ、１８ホストバス制御回路、２０    コプロセッサ、２２    処理ユニット、２４    コプロセッサ制御回路、３０    ホストバス接続回路、３２    スレーブ回路、３４    マスタ回路、１００    Ｓｐａｒｃ−Ｓｔａｔｉｏｎ  ワークステーション、１０２    Ｓバス、１１２    ＤＶＭＡインタフェース、１１４    スレーブインタフェース、１１６    起動用ＰＲＯＭ、１１８    ケーブル、１２２    レジスタ付トランシーバ、１２４    トランシーバ１２４、１２６    制御回路、１３０    処理ユニット、１５０    制御保存回路、１５２    ＭＡＲ、１５４    レジスタ兼復号回路、１５６    共通データバス、１８０    ＣＳアドレスバッファ、１８８    Ｓバスレジスタ、１９０    Ｓバスバッファ、１９２    定数バッファ、１９４    レジスタ付トランシーバ、１９６Ｓバスレジスタ、１９８    Ｓバスバッファ、２１２    レジスタ付トランシーバ、２２０    マイクロプロセッサ、２４０    ＳＲＡＭ、２８０    クロック制御論理回路、２８２    ＤＶＭＡシーケンサ、２８４    スレーブシーケンサ
【図１】
0003556966.tif 000002
【図２】
0003556966.tif 000003
【図３】
0003556966.tif 000004
【図４】
0003556966.tif 000005
【図５】
0003556966.tif 000006
【図６】
0003556966.tif 000007
【図７】
0003556966.tif 000008
【図８】
0003556966.tif 000009
【図９】
0003556966.tif 000010
【図１０】
0003556966.tif 000011
【図１１】
0003556966.tif 000012
【図１２】
0003556966.tif 000013
【図１３】
0003556966.tif 000014
【図１４】
0003556966.tif 000015
【図１５】
0003556966.tif 000016
【図１６】
0003556966.tif 000017
【図１７】
0003556966.tif 000018
【図１８】
0003556966.tif 000019
【図１９】
0003556966.tif 000020
【図２０】
0003556966.tif 000021
【図２１】
0003556966.tif 000022
【図２２】
0003556966.tif 000023
【図２３】
0003556966.tif 000024
【図２４】
0003556966.tif 000025
【図２５】
0003556966.tif 000026