以下、本発明の実施形態について、図面を参照しながら説明する。
(実施形態1)
図1は本発明の実施形態1にかかるデータ転送装置の概略構成図である。
まず、図1の各要素の説明を行う。図1において、101はバスブリッジ、102はブリッジ制御部、103はバス調停部、104はアドレス・データ制御部である。105は連想メモリ制御部、106は連想メモリ、107はアドレス比較部である。108は第2の連想メモリである。この実施形態1の例は、第2の連想メモリ108を含んだ構成としている。第2の連想メモリの働きは、ローカルバスから受け付けたデータ転送要求の示す転送元アドレスが連想メモリ106に記憶したアドレスに含まれていない場合に、データ転送要求に対して転送処理が完了していないアドレスを示すデータ有効情報を記憶しておくものであり、未処理のデータ転送要求を一時的に保持しておく効果を持つ。その後、システムバス上のデバイス間で転送されているアドレスとデータのバッファリング処理において取り込まれたアドレスがデータ有効情報の示すアドレスであるか否かを確認することにより、未処理のデータ転送要求にかかるデータが取りこまれたか否かを確認することができる。データ有効情報の示すアドレスと一致する場合は取りこんだデータをローカルバスに対してデータ転送要求に対応するデータとして転送する処理が可能となる。
109から112は連想メモリ106の各エントリの構成要素であり、109はエントリ番号、110はアドレス情報、111はデータ情報、112は有効ビットである。また、113から116は第2の連想メモリ108の構成要素であり、113はアドレス情報、114はデータ情報、115はアドレス有効ビット、116はデータ有効ビットである。
次に、117から124は連想メモリ106と連想メモリ制御部105の間の信号線であり、117はライトエントリセレクト信号線、118はライトイネーブル信号線、119はライトアドレス情報信号線、120はライトデータ情報信号線、121はリードエントリセレクト信号線、122はリードアドレス情報信号線、123はリードデータ情報信号線、124は有効ビット信号線である。
125はプロトコルチェッカ、126および127はチップセレクト信号線、128は出力イネーブル信号線、129はデータ・アクノリッジ信号線であり、CPU1とプロトコルチェッカ125の間の信号線である。130はリクエスト信号線、131はアクノリッジ信号線、132はシステムバス、133はCPU、134はバス調停部、135は主記憶装置、136はI/O機器、137はローカルバス、138はI/O機器、139はリクエスト信号線、140はアクノリッジ信号線である。
このうち、バスブリッジ101、CPU133、主記憶装置135、I/O機器136はシステムバス132上で接続しており、また、バスブリッジ101、I/O機器138、はローカルバス137上で接続している。
バスブリッジ101全体の動作は、CPU133からローカルバス137上のデバイスへのアクセスサイクルがシステムバス132上で発生した場合、そのサイクルをローカルバス137上のサイクルに変換する。また、I/O機器138からシステムバス132上の主記憶装置135へのアクセスサイクルが発生した場合、バス調停部103からリクエスト信号線130を通じてバス調停部134にシステムバス132の使用権のリクエストを出し、アクノリッジ信号線131を通じてアクノレッジを受け取ると、そのサイクルをシステムバス132上のサイクルに変換する。
ブリッジ制御部102、バス調停部103、アドレス・データ制御部104、連想メモリ制御部105、連想メモリ106、アドレス比較部107、第2の連想メモリ108はバスブリッジ101の内部に存在する構成要素である。
ブリッジ制御部102は、バスブリッジ101全体の動作の制御を行うものである。
バス調停部103は、バスブリッジ101とI/O機器138のローカルバス使用権の調停を行うものである。
アドレス・データ制御部104は、システムバス132上のサイクルとローカルバス137上のサイクルとの変換を相互に行う機能を持つ。また、連想メモリ制御部105、アドレス比較部107、第2の連想メモリ108とも接続し、連想メモリ制御部105とのアドレス、データの入出力を制御するものである。
連想メモリ制御部105は、連想メモリ106へのデータ入出力の制御を行うものであり、連想メモリ106とライトエントリセレクト信号線117、ライトイネーブル信号線118、ライトアドレス情報信号線119、ライトデータ情報信号線、リードエントリセレクト信号線120、リードエントリセレクト信号線121、リードアドレス情報信号線122、リードデータ情報信号線123、有効ビット124で接続されている。また、第2の連想メモリ108とも接続され、データの入出力の制御を行う。また、内部にチップセレクト信号線126、127、出力イネーブル信号線128およびデータ・アクノリッジ信号線129と接続されたプロトコルチェッカ125をもち、バスサイクルを検知し、システムバス132上のサイクルがリードサイクルのときは、これらの信号線から連想メモリ106もしくは第2の連想メモリ108にデータを転送するタイミングであると判別する。
チップセレクト信号線126は、CPU133から主記憶装置135へのチップセレクト信号線であり、チップセレクト信号線127は、CPU133からI/O機器136へのチップセレクト信号線である。
連想メモリ106は4つのエントリからなり、各エントリはエントリ番号109、アドレス情報110、データ情報111、有効ビット112から成る。ライトイネーブル信号線118がオンのとき、ライトエントリセレクト信号線117で指定されたエントリ番号をもつエントリのアドレス情報110、データ情報111を、それぞれライトアドレス情報信号線119の値と、ライトデータ情報信号線120の値で上書きすると同時に、有効ビット112をオンにする。また、リードエントリセレクト信号線121で指定されたエントリ番号をもつエントリのアドレス情報110、データ情報111を、それぞれリードアドレス情報信号線122と、リードデータ情報信号線123にドライブする。
バス調停部103とバス調停部134はリクエスト信号線130とアクノリッジ信号線131で接続されている。また、バス調停部103はI/O機器138とリクエスト信号線139およびアクノリッジ信号線140で接続されている。
アドレス比較部107はアドレス・データ制御部104および連想メモリ制御部105と接続されており、双方から受けるアドレスの値が一致するとき、ブリッジ制御部102に通知する。
第2の連想メモリ108は、連想メモリ制御部105と接続され、ローカルバスからのデータ転送要求に対して該当するデータが連想メモリ106に含まれていない場合に連想メモリ制御部105から当該データ転送要求にかかるアドレスが書き込まれる。当該アドレスをアドレス情報113に保持し、アドレス有効ビット115をオンにする。また、データが書き込まれると、それをデータ情報114に保持し、データ有効ビット116をオンにする。このアドレス有効ビット115、データ有効ビット116がオンとなることにより未処理のデータ転送要求が存在していることが示される。バッファリング処理が進み、データ転送要求にかかるデータが取り込まれる際、第2の連想メモリ108から該当するアドレスおよびデータが読み出されると、連想メモリ制御部105にアドレス情報113の値とデータ情報114の値を転送し、同時にアドレス有効ビット115およびデータ有効ビット116をオフにする。
CPU133は内部に持っているバス調停部134がCPU133にシステムバス132の使用権を与えているとき、主記憶装置135、I/O機器136、I/O機器138のいずれかにアクセスしてデータの入出力を行い、また、これらのデータを用いて演算処理を行う。
なお、この例では、主記憶装置135にはアドレス0から6FFFのアドレス空間が割り当てられているとする。
また、I/O機器136はアドレス7000から7FFFのアドレス空間が割り当てられているとする。
バス調停部134はCPU133とバスブリッジ101のシステムバス132の使用権の調停を行う。
次に、本実施形態1のデータ転送装置の動作を図を用いて説明する。
図2は本実施形態1の動作を表すフロー図である。図2において、201は、システムバスサイクル発生判別処理であり、202は、データバッファリング処理であり、203は、ローカルバスリクエスト発生判別処理であり、204は、バッファデータ転送処理である。
システムバスサイクル発生判別処理201は、アドレス・データ制御部104において、システムバス132上にサイクルが発生しているかどうかを判別する処理であり、サイクルが発生しているとき、データバッファリング処理202に移行し、発生していないとき、ローカルバスリクエスト発生判別処理203に移行する。つまり、システムバス132にバスサイクルが発生している場合にはシステムバス132上で転送されているデータを連想メモリ106に取りこむためのデータバッファリング処理202に移行し、システムバス132にバスサイクルが発生していない場合には、ローカルバスからのリクエストによるデータ転送処理のためにバス調停が実行されているのか否かを判定する処理に移行する。
データバッファリング処理202は、システムバス132上のサイクルで転送されているデータを連想メモリ106もしくは第2の連想メモリ108にバッファリングする処理であり、この処理を終えると、ローカルバスリクエスト発生判別処理203に移行する。
ローカルバスリクエスト発生判別処理203は、バス調停部103において、リクエスト信号線139がアサートされているかどうかを判別する処理であり、リクエストが発生しているとき、バッファデータ転送処理204に移行し、発生していないとき、システムバスサイクル発生判別処理201に戻って処理を続行する。
バッファデータ転送処理204は、ローカルバス137からのデータ転送要求に対して、データを連想メモリ106もしくは第2の連想メモリ108にバッファリングされているデータを転送する処理であり、この処理を終えると、システムバスサイクル発生判別処理201に戻って処理を続行する。
次に、上記のデータバッファリング処理202を詳しく示す。図3はデータバッファリング処理202の詳しい動作を表すフロー図である。図3において、301は、バスブリッジターゲット判別処理、302は、システムバスターゲット処理、303は、アドレス保持処理、304は、アドレス有効ビット判別処理、305は、第2の連想メモリアドレス情報判別処理、306は、サイクル判別処理、307は、第2の連想メモリデータ情報転送処理、308は、ターゲット判別処理、309は、第2の連想メモリOE同期データ情報転送処理、310は、第2の連想メモリDACK同期データ情報転送処理、311は、第2の連想メモリデータ情報有効化処理、312は、エントリ番号選択処理、313は、アドレス情報転送処理、314は、サイクル判別処理、315は、データ情報転送処理、316は、ターゲット判別処理、317は、OE同期データ情報転送処理、318は、DACK同期データ情報転送処理である。
バスブリッジターゲット判別処理301は、アドレス・データ制御部104において、バスブリッジ101が現在のシステムバス132上のサイクルのターゲットであるかどうかを判別する処理であり、ターゲットであるとき、システムバスターゲット処理302に移行し、ターゲットでないとき、アドレス保持処理303に移行する。つまり、バスブリッジ101が現在のシステムバス132上のサイクルのターゲットである場合とは、システムバスからローカルバス上のリソースにアクセスが要求されている場合を指し、この場合は、システムバスターゲット処理302に進み、バッファリング処理202を一旦終了させることとなる。
システムバスターゲット処理302は、アドレス・データ制御部104において、バスブリッジ101が現在のシステムバス132上のサイクルのターゲットとして応答する処理であり、この処理を終えると、このデータバッファリング処理202を終了する。
アドレス保持処理303は、アドレス・データ制御部104において、システムバスからドライブされたアドレス信号線の値を保持する処理であり、この処理を終えると、アドレス有効ビット判別処理304に移行する。
アドレス有効ビット判別処理304は、連想メモリ制御部105において、現在未処理であるデータ転送要求が存在していることを示すアドレス有効ビット115がオンかオフかを判別する処理である。オンであるとき、今回のバッファリング処理において取り込むデータが未処理であるデータ転送要求にかかるものであるか否かを確認すべく、第2の連想メモリアドレス情報判別処理305に移行し、オフであるとき、現在未処理であるデータ転送要求は存在していないので今回のバッファリング処理において取り込むデータを連想メモリ106に格納するためエントリ番号選択処理312に移行する。
第2の連想メモリアドレス情報判別処理305は、アドレス比較部107において、アドレス保持処理303で保持されたアドレスと、アドレス情報113に保持されたアドレスとが一致するかどうかを判別する処理であり、一致するとき、今回のバッファリング処理において取り込むデータが未処理であるデータ転送要求にかかるものであるのでサイクル判別処理306に移行し、一致しないとき、今回のバッファリング処理において取り込むデータが未処理であるデータ転送要求にかかるものではないので、取り込んだデータを連想メモリ106に格納するためエントリ番号選択処理312に移行する。
サイクル判別処理306は、アドレス・データ制御部104において、現在のシステムバス132上のサイクルがリードサイクルであるかどうかを判別する処理で、リードサイクルであるとき、ターゲット判別処理308に移行し、そうでないとき、第2の連想メモリデータ情報転送処理307に移行する。つまり、リードサイクルである場合にはシステムバス上のどのリソースから当該情報が読み出されるのかを判別する処理に移行し、リードサイクルでなく書き込みサイクルである場合には現在データ線にドライブされている情報を取り込む処理に移行する。
第2の連想メモリデータ情報転送処理307は、第2の連想メモリ108において、アドレス情報113にアドレスを書き込む処理であり、この処理を終えると、第2の連想メモリデータ情報有効化処理311に移行する。
ターゲット判別処理308は、プロトコルチェッカ125において、チップセレクト信号線126、127からバスターゲットが主記憶装置135であるか、I/O機器136であるかを判別する処理であり、主記憶装置135であるとき、第2の連想メモリOE同期データ情報転送処理309に移行し、I/O機器136であるとき、第2の連想メモリDACK同期データ情報転送処理310に移行する。
第2の連想メモリOE同期データ情報転送処理309は、連想メモリ制御部105およびプロトコルチェッカ125において、出力イネーブル信号線128がアサートされたとき、アドレス・データ制御部104からドライブされているデータ線の値を第2の連想メモリ108のデータ情報114に書き込む処理であり、この処理を終えると、第2の連想メモリデータ情報有効化処理311に移行する。
第2の連想メモリDACK同期データ情報転送処理310は、連想メモリ制御部105およびプロトコルチェッカ125において、データ・アクノリッジ信号線129がアサートされたとき、システムバス132のデータ信号線にドライブされているの値をアドレス・データ制御部104を通じて、第2の連想メモリ108のデータ情報114に書き込む処理であり、この処理を終えると、第2の連想メモリデータ情報有効化処理311に移行する。
第2の連想メモリデータ情報有効化処理311は、連想メモリ制御部105において、第2の連想メモリ108のデータ有効ビット116をオンにする処理であり、この処理を終えると、データバッファリング処理202を終了する。
エントリ番号選択処理312は、連想メモリ制御部105において、アドレス保持処理204で保持されたアドレスの値から、エントリを選択する処理であり、ここでは、具体的に、アドレスの下位4ビットの16進数表現での値が0、8の場合、0を選択し、それ以外の場合、1を選択し、選択した値をライトエントリセレクト信号線117にドライブする処理である。この処理を終えると、アドレス情報転送処理313に移行する。
アドレス情報転送処理313は、連想メモリ制御部105において、ライトアドレス情報信号線119にアドレス保持処理204で保持されたアドレスをドライブする処理であり、この処理を終えると、サイクル判別処理314に移行する。
サイクル判別処理314は、アドレス・データ制御部104において、現在のシステムバス132上のサイクルがリードサイクルであるかどうかを判別する処理で、リードサイクルであるとき、ターゲット判別処理316に移行し、そうでないとき、データ情報転送処理315に移行する。つまり、リードサイクルである場合にはシステムバス上のどのリソースから情報が読み出されるのかを判別する処理に移行し、リードサイクルでなく書き込みサイクルである場合には現在データ線にドライブされている情報を取り込む処理に移行する。
データ情報転送処理315は、連想メモリ制御部105において、ライトデータ情報信号線120にデータをドライブし、また、ライトイネーブル信号線118をアサートし、連想メモリ106にアドレス情報とデータ情報を書込む処理であり、この処理終えると、データバッファリング処理202を終了する。
ターゲット判別処理316は、プロトコルチェッカ125において、チップセレクト信号線126、127からバスターゲットが主記憶装置135であるか、I/O機器136であるかを判別する処理であり、主記憶装置135であるとき、OE同期データ情報転送処理317に移行し、I/O機器136であるとき、DACK同期データ情報転送処理318に移行する。
OE同期データ情報転送処理317は、連想メモリ制御部105およびプロトコルチェッカ125において、出力イネーブル信号線128がアサートされたとき、アドレス・データ制御部104からドライブされているデータ線の値をライトデータ情報信号線120にドライブし、ライトイネーブル信号線118をオンにする処理であり、この処理を終えると、データバッファリング処理202を終了する。
DACK同期データ情報転送処理318は、連想メモリ制御部105およびプロトコルチェッカ125において、データ・アクノリッジ信号線129がアサートされたとき、アドレス・データ制御部104からドライブされているデータ線の値をライトデータ情報信号線120にドライブし、ライトイネーブル信号線118をオンにする処理であり、この処理を終えると、データバッファリング処理202を終了する。
以上が図2のデータバッファリング処理202の詳しい動作である。
次に、図2のバッファデータ転送処理204を詳しく説明する。図4はバッファデータ転送処理204の詳しい動作を表すフロー図である。
図4において、401は、ローカルバスアイドル判別処理であり、402は、アクノリッジアサート処理であり、403は、サイクル判別処理であり、404は、第2の連想メモリデータ判別処理であり、405は、第2の連想メモリデータ転送処理であり、406は、バッファデータ判別処理であり、
407は、バッファデータ転送処理であり、408は、アドレス判別処理であり、
409は、システムバスリクエスト処理であり、410は、システムバスアクノリッジ判別処理であり、411は、システムバスマスタ処理であり、412は、ローカルバスターゲット処理であり、413は、第2の連想メモリアドレス情報有効化処理であり、414は、ローカルバスリトライ応答処理であり、415は、アクノリッジディアサート処理である。
ローカルバスアイドル判別処理401は、バス調停部103において、ローカルバス137がアイドル状態か、もしくはリクエストを受けているローカルバスマスタに現在アクノリッジを出しているかどうかを判別する処理であり、ローカルバス137がアイドル状態か、もしくはリクエストを受けているローカルバスマスタに現在アクノリッジを出しているとき、アクノリッジアサート処理402に移行し、そうでないとき、引き続きローカルバスアイドル判別処理401にとどまる。
アクノリッジアサート処理402は、バス調停部103において、アクノリッジ信号線140をアサートする処理であり、この処理を終えるとサイクル判別処理403に移行する。
サイクル判別処理403は、ブリッジ制御部102においてローカルバス137のサイクル発生を監視し、発生したサイクルがリードサイクルであるかどうかを判別する処理であり、リードサイクルであれば第2の連想メモリデータ判別処理404に移行し、そうでないときアドレス判別処理408に移行する。つまり、ローカルバスがリードサイクルにあれば、ローカルバス上にデータを転送する処理に移行し、リードサイクルでない場合はシステムバス132上のリソースへの書き込み要求であるのでバス調停部134に対してバス調停のリクエストをアサートする処理に移行する。
第2の連想メモリデータ判別処理404は、連想メモリ制御部105において、今回転送するデータが、現在データ転送が未処理であるデータ転送要求としてエントリされたものであるか否かを調べる処理であり、データ有効ビット116がオンのときは、アドレス情報113の値をアドレス比較部107に転送し、アドレス比較部107においてローカルバス137でドライブされているアドレスと一致するかどうかを判別する。一致した場合は、第2の連想メモリデータ転送処理405に移行する。一致しない場合、連想メモリ106中に今回転送するデータが存在するかを確認するため、バッファデータ判別処理406に移行する。また、データ有効ビット116がオフの場合は、現在データ転送が未処理であるデータ転送要求がないので、バッファデータ判別処理406に移行する。
第2の連想メモリデータ転送処理405は、連想メモリ制御部105において、データ情報114からデータを読み出し、アドレス・データ制御部104において、そのデータをローカルバス137にドライブしてローカルバスのサイクルに応答する処理であり、この処理を終えるとバッファデータ転送処理204を終了する。
バッファデータ判別処理406は、連想メモリ制御部105において、ローカルバス137でドライブされているアドレスに該当するエントリ番号の有効ビット112がオンのとき、アドレス情報110からアドレスをアドレス比較部107に転送し、アドレス比較部107において、ローカルバス137でドライブされているアドレスと一致するかどうかを判別する処理で、一致する場合、バッファデータ転送処理407に移行し、一致しない場合、アドレス判別処理408に移行する。つまり、この場合は連想メモリ106内にバッファリングされているデータによってはデータ転送要求に応えることができないため、実際にシステムバス132上のリソースにアクセスする必要があるか否かを確認する処理に移行する。ローカルバス137でドライブされているアドレスに該当するエントリ番号の有効ビット112がオフのとき、アドレス判別処理408に移行する。
バッファデータ転送処理407は、連想メモリ制御部105において、連想メモリ制御部105において、バッファデータ判別処理406で一致したアドレス情報110をもつ連想メモリ106内のエントリのデータ情報111からデータを読み出し、アドレス・データ制御部104において、そのデータをローカルバス137にドライブしてローカルバスのサイクルに応答する処理であり、この処理を終えるとバッファデータ転送処理204を終了する。
アドレス判別処理408は、アドレス・データ制御部104において、ローカルバス137にドライブされたアドレスをデコードし、このアドレスがシステムバス132上のデバイスに割り当てられたメモリ空間にあるとき、システムバスリクエスト処理409に移行し、そうでないとき、バッファデータ転送処理204を終了する。
システムバスリクエスト処理409は、バス調停部103において、リクエスト信号線130をアサートする処理であり、この処理を終えるとシステムバスアクノリッジ判別処理410に移行する。
システムバスアクノリッジ判別処理410は、バス調停部103において、アクノリッジ信号線131がアサートされたかどうかを判別する処理であり、アクノリッジ信号131がアサートされたとき、システムバスマスタ処理411に移行し、そうでないとき、第2の連想メモリアドレス情報有効化処理413に移行する。
システムバスマスタ処理411は、アドレス・データ制御部104において、システムバス132にサイクルを発生させ、ローカルバス137から受けているデータ転送要求をシステムバス上に起こす処理であり、この処理を終えるとローカルバスターゲット処理412に移行する。
ローカルバスターゲット処理412は、アドレス・データ制御部104において、システムバスマスタ処理411で起こしたデータ転送要求の結果をローカルバス137にドライブする処理であり、この処理を終えるとバッファデータ転送処理204を終了する。
第2の連想メモリアドレス情報有効化処理413は、連想メモリ制御部105において、ローカルバス137にドライブされたアドレスをアドレス情報113に転送し、アドレス有効ビット115をオンにする処理であり、この処理を終えると、ローカルバスリトライ応答処理414に移行する。
ローカルバスリトライ応答処理414は、アドレス・データ制御部104において、ローカルバス137に対し、リトライ応答する処理であり、この処理を終えるとアクノリッジディアサート処理415に移行する。
アクノリッジディアサート処理415は、バス調停部103において、アクノリッジ信号線140をディアサートする処理であり、この処理を終えるとバッファデータ転送処理204を終了する。
以上が、図2に示したバッファデータ転送処理204の処理である。
次に、本実施形態1のデータ転送装置の動作を実際のデータ転送を例に説明する。
図5は本実施形態1のデータを用いた動作の一例を示すタイミングチャートを示す図である。
図5において、501は、リクエスト信号線130の状態であり、502は、アクノリッジ信号線131の状態であり、503は、システムバス132のアドレス線の状態であり、504は、システムバス132のデータ線の状態であり、505は、システムバス132のリード/ライト信号線の状態であり、506は、チップセレクト信号線126の状態であり、507は、出力イネーブル信号線128の状態であり、508は、チップセレクト信号線127の状態であり、509は、データ・アクノリッジ信号線129の状態であり、510は、ライトエントリセレクト信号線117の状態であり、511は、ライトイネーブル信号線118の状態であり、512は、ライトアドレス情報信号線119の状態であり、513は、ライトデータ情報信号線120の状態であり、514は、連想メモリ106のエントリ0のアドレス情報110の状態であり、515は、連想メモリ106のエントリ0のデータ情報111の状態であり、516は、連想メモリ106のエントリ1のアドレス情報110の状態であり、517は、連想メモリ106のエントリ1のデータ情報111の状態であり、518は、アドレス有効ビット115の状態であり、519は、アドレス情報113の状態であり、520は、データ有効ビット116の状態であり、521は、データ情報114の状態であり、522は、リードエントリセレクト信号線121の状態であり、523は、リードアドレス情報信号線122の状態であり、524は、リードデータ情報信号線123の状態であり、525は、リクエスト信号線139の状態であり、526は、アクノリッジ信号線140の状態であり、527は、ローカルバス137のリード/ライト信号線の状態であり、528は、ローカルバス137のアドレス線の状態であり、529は、ローカルバス137のデータ線の状態であり、530は、ローカルバス137でのブリッジ101の応答状態である。
まず、システムバスサイクル発生判別処理201で、551から553に示すように、アドレス4020にデータdatawを書込むサイクルが発生しているので、データバッファリング処理202に移行する。
次に、データバッファリング処理202では、まず、バスブリッジターゲット判別処理301が実行されるが、554に示すように、チップセレクト信号線127がアサートされており、バスブリッジ101はこのサイクルのターゲットではないので、アドレス保持処理303に移行する。
次に、アドレス保持処理303では、アドレス・データ制御部104の内部にアドレス4020を保持し、アドレス有効ビット判別処理304に移行する。
次に、アドレス有効ビット判別処理304では、555に示すように、アドレス有効ビット115がオフであるので、エントリ番号選択処理312に移行する。
次に、エントリ番号選択処理312では、アドレス4020からエントリ番号0を選択し、556に示すように、ライトエントリセレクト信号線117に0をドライブし、アドレス情報転送処理313に移行する。
次に、アドレス情報転送処理313では、557に示すように、ライトアドレス情報信号線119にアドレス4020をドライブし、サイクル判別処理314に移行する。
次に、サイクル判別処理314では、553に示すように、このサイクルがライトサイクルであることから、データ情報転送処理315に移行する。
次に、データ情報転送処理315では、558に示すように、ライトデータ情報信号線120にデータdatawをドライブし、また、559に示すように、ライトイネーブル信号線118をアサートし、560、561に示すように、連想メモリ106のエントリ0のアドレス情報110とデータ情報111にそれぞれアドレス4020とデータdatawを書込み、データバッファリング処理202を終了する。
次に、ローカルバスリクエスト発生判別処理203では、562に示すように、リクエスト信号線139がアサートされていないので、システムバスサイクル発生判別処理201に戻る。
次に、システムバスサイクル発生判別処理201で、563、564に示すように、アドレス4000のデータを読み出すサイクルが発生しているので、データバッファリング処理202に移行する。
データバッファリング処理202では、バスブリッジターゲット判別処理301からアドレス情報転送処理313までは、アドレスの値が違うだけで、上に述べたアドレス4020にデータdatawを書込むサイクルの場合と同様の処理がなされる。
次に、サイクル判別処理314では、564に示すように、このサイクルがリードサイクルであることから、ターゲット判別処理316に移行する。
次に、ターゲット判別処理316では、554に示すように、チップセレクト信号線127がアサートされていることから、I/O機器136がバスターゲットであると判別し、DACK同期データ情報転送処理318に移行する。
次に、DACK同期データ情報転送処理318では、565に示すように、データ・アクノリッジ信号線129がアサートされたとき、566に示すように、データdata0をライトデータ情報信号線120にドライブし、567に示すように、ライトイネーブル信号線118をオンにし、568、569に示すように、連想メモリ106のエントリ0のアドレス情報110とデータ情報111にそれぞれアドレス4000とデータdata0を書込み、データバッファリング処理202を終了し、ローカルバスリクエスト発生判別処理203に移行する。
次に、ローカルバスリクエスト発生判別処理203では、570に示すように、リクエスト信号線139がアサートされているので、バッファデータ転送処理204に移行する。
次に、バッファデータ転送処理204では、まず、ローカルバスアイドル判別処理401が実行されるが、ローカルバス137はアイドル状態にあるので、アクノリッジアサート処理402に移行する。
次に、アクノリッジアサート処理402では、571に示すように、アクノリッジ信号線140をアサートし、サイクル判別処理403に移行する。
次に、サイクル判別処理403では、572に示すように、ローカルバス137で発生したサイクルがリードサイクルであるので、第2の連想メモリデータ判別処理404に移行する。
次に、第2の連想メモリデータ判別処理404では、573に示すように、データ有効ビット116がオフなので、バッファデータ判別処理406に移行する。
次に、バッファデータ判別処理406では、574に示すように、ローカルバス137でドライブされているアドレス4008に該当するエントリ番号0のアドレス情報110のアドレスが568に示すように、4000であり、4008と一致しないので、アドレス判別処理408に移行する。
次に、アドレス判別処理408では、ローカルバス137にドライブされたアドレス4008をデコードし、このアドレスがシステムバス132上のデバイスに割り当てられたメモリ空間にあるので、システムバスリクエスト処理409に移行する。
次に、システムバスリクエスト処理409では、575に示すように、リクエスト信号線130をアサートし、システムバスアクノリッジ判別処理410に移行する。
次に、システムバスアクノリッジ判別処理410では、576に示すように、アクノリッジ信号線131がアサートされていないので、第2の連想メモリアドレス情報有効化処理413に移行する。
次に、第2の連想メモリアドレス情報有効化処理413では、577、578に示すように、ローカルバス137にドライブされたアドレス4008をアドレス情報113に転送し、アドレス有効ビット115をオンにし、ローカルバスリトライ応答処理414に移行する。
次に、ローカルバスリトライ応答処理414では、579に示すように、ローカルバス137に対し、リトライ応答し、アクノリッジディアサート処理414に移行する。
次に、アクノリッジディアサート処理414では、580に示すように、アクノリッジ信号線140をディアサートし、バッファデータ転送処理204を終了し、システムバスサイクル発生判別処理201に戻る。
次に、システムバスサイクル発生判別処理201では、564、581に示すように、システムバス132上に、アドレス4008のリードサイクルが発生しているので、データバッファリング処理202に移行する。
次に、データバッファリング処理202では、まず、バスブリッジターゲット判別処理301が実行されるが、554に示すように、チップセレクト信号線127がアサートされており、バスブリッジ101はこのサイクルのターゲットではないので、アドレス保持処理303に移行する。
次に、アドレス保持処理303では、アドレス・データ制御部104の内部にアドレス4008を保持し、アドレス有効ビット判別処理304に移行する。
次に、アドレス有効ビット判別処理304では、578に示すように、アドレス有効ビット115がオンであるので、第2の連想メモリアドレス情報判別処理305に移行する。
次に、第2の連想メモリアドレス情報判別処理305では、アドレス保持処理204で保持されたアドレス4008と、577に示すように、アドレス情報113に保持されたアドレス4008とが一致するので、サイクル判別処理306に移行する。
次に、サイクル判別処理306では、564に示すように、リードサイクルなので、ターゲット判別処理308に移行する。
次に、ターゲット判別処理308では、554に示すように、チップセレクト信号線127がアサートされているので、バスターゲットがI/O機器136であると判別し、第2の連想メモリDACK同期データ情報転送処理310に移行する。
次に、第2の連想メモリDACK同期データ情報転送処理310では、582に示すように、データ・アクノリッジ信号線129がアサートされたとき、583に示す、データ信号線の値data2が、584に示すように、データ情報114に書込まれ、第2の連想メモリデータ情報有効化処理311に移行する。
次に、第2の連想メモリデータ情報有効化処理311では、585に示すように、第2の連想メモリ108のデータ有効ビット116をオンにし、データバッファリング処理202を終了し、ローカルバスリクエスト発生判別処理203に移行する。
続いて、586、587に示すように、アドレス400Cとデータdata3がエントリ1に書込まれ、さらに、588、589に示すように、アドレス4010とデータdata4がエントリ0に書込まれた後、ローカルバスリクエスト発生判別処理203で、590に示す、リクエスト信号線139のアサートが判別され、バッファデータ転送処理204に移行する。
次に、バッファデータ転送処理204では、まず、ローカルバスアイドル判別処理401が実行されるが、ローカルバス137はアイドル状態にあるので、アクノリッジアサート処理402に移行する。
次に、アクノリッジアサート処理402では、591に示すように、アクノリッジ信号線140をアサートし、サイクル判別処理403に移行する。
次に、サイクル判別処理403では、592に示すように、ローカルバス137で発生したサイクルがリードサイクルであるので、第2の連想メモリデータ判別処理404に移行する。
次に、第2の連想メモリデータ判別処理404では、585に示すように、データ有効ビット116がオンなので、577に示す、アドレス情報113の値4008と、593に示す、ローカルバス137でドライブされているアドレス4008が一致するので、第2の連想メモリデータ転送処理405に移行する。
次に、第2の連想メモリデータ転送処理405では、データ情報114から、584に示すデータdata2を読み出し、594に示すように、ローカルバス137のデータ信号線にドライブしてバッファデータ転送処理204を終了する。
この後、595に示すように、ローカルバス137上にアドレス400Cへのリードサイクルが発生しているとき、バッファデータ判別処理406で、586に示す、エントリ番号1のアドレス情報110のアドレス400Cとローカルバス137でドライブされているアドレス400Cが一致していると判別され、バッファデータ転送処理407に移行する。
次に、バッファデータ転送処理407では、エントリ1のデータ情報111から、587に示すデータdata3を読み出し、596に示すように、ローカルバス137のデータ信号線にドライブする。
なお、連想メモリ106のエントリ数は2としたが、1であっても、また、3以上であってもよい。エントリ数が大きいほど効果は大きいが、ブリッジの回路規模が大きくなる。
(実施形態2)
上記の実施形態1に示したデータ転送装置および方法では、ローカルバス137上にはバスブリッジ101以外にはI/O機器138しかデバイスが存在していない例を説明したが、他にもデバイスが存在して、それらのデバイス間でデータ転送が行われるとき、それをバスブリッジ内の別のバッファに保持することにより、システムバス132からこのデータへのアクセスが発生したとき、ローカルバス137にアクセスすることなく、バッファからデータを転送することができる。また、別のバッファを設けることにより、ローカルバス137上のデバイス間で転送され、保持されたデータが、システムバス132上のデバイス間で転送され、保持されるデータで上書きされることがない。図6はそのようなローカルバス用の連想メモリ603を含むバスブリッジの概念図である。図1では、システムバス用の連想メモリ106のみが設けられた構成であったが、本実施形態2の図6の構成では、システムバス用の連想メモリ106に加え、ローカルバス用の連想メモリ604も設けられている。
図6において、601は、バスブリッジであり、602は、ブリッジ制御部であり、603は、連想メモリ制御部であり、604は、連想メモリであり、605は、アドレス比較部であり、606は、第2の連想メモリ、607は、バス調停部であり、608は、DMAコントローラであり、609は、リクエスト信号線であり、610は、アクノリッジ信号線であり、611は、メモリである。
バスブリッジ601は、システムバス132上で転送されるアドレスとデータを連想メモリ106に保持し、また、ローカルバス137上で転送されるアドレスとデータを連想メモリ604に保持し、システムバス132上のサイクルでローカルバス137上のアドレスからのデータ転送要求が発生して、そのデータが連想メモリ604に保持されている場合は、ローカルバスにサイクルを発生させることなく、連想メモリ604に保持されたデータをシステムバス132上に転送する。
ブリッジ制御部602は、バスブリッジ601全体の動作の制御を行う。
連想メモリ制御部603は、連想メモリ604、第2の連想メモリ606と接続し、I/O機器138、DMAコントローラ608、メモリ611の間で転送されるアドレスおよびデータを連想メモリ604もしくは第2の連想メモリ606に転送する。また、CPU133からメモリ611へのリードサイクルが発生した場合、ドライブされているアドレスが連想メモリ604もしくは第2の連想メモリ606に保持されていれば、連想メモリ604もしくは第2の連想メモリ606からデータを読み出し、アドレス・データ制御部104に転送する。
第2の連想メモリ606は、実施形態1で説明した第2の連想メモリ108と同様のものである。連想メモリ制御部603と接続され、ローカルバスからのデータ転送要求に対して該当するデータが連想メモリ604に含まれていない場合に連想メモリ制御部603から当該データ転送要求にかかるアドレスが書き込まれるものである。
バスブリッジ601は、連想メモリ106とは別に連想メモリ604を持っているので、例えばDMAコントローラ608からメモリ611へ書込まれるデータを連想メモリ604に保持することにより、CPU133からこのデータへのアクセスが発生したとき、メモリ611にアクセスすることなく、連想メモリ604からデータを転送することができる。また、このデータが、システムバス132上のデバイス間で転送され、保持されるデータで上書きされることがない。
ローカルバス用の連想メモリ604を中心としたデータ転送処理の詳しい処理動作は、実施形態1で説明したシステムバス用の連想メモリ106を中心としたデータ転送処理の詳しい処理動作と同様に考えることができる。