(57)【要約】【目的】　ワークステション等のシステムバスにおいて、同一のアダプタから特定のアダプタに対して、複数のスプリットリード要求を同時に発行できる手段を設け、バスの処理性能を向上させる。【構成】　バスのプロトコルとして、一つのバスアダプタ４０５，４０８，４０９，４１０に論理的に複数のモジュールＩＤを割り振るとともに、応答サイクルのモジュールＩＤ情報により、起動元のバスアダプタ４０５がリードデータの順序保証を行う。【効果】　同一のアダプタからのリードアクセスの並列処理が可能となるので、システムバスアクセスの応答時間の向上が図れる。【選択図】図６
2004078998.tif 000002
【特許請求の範囲】
【請求項１】
　情報処理装置であって、第１のモジュールと、前記第１のモジュールが接続され、スプリットプロトコルを採用した第１の信号線と、第２のモジュールと、前記第２のモジュールが接続され、スプリットプロトコルを採用した第２の信号線と、前記第１の信号線と前記第２の信号線とを階層的に接続したバスアダプターとを有することを特徴とする情報処理装置。
【請求項２】
　請求項１記載の情報処理装置であって、前記第１のモジュールは、前記転送要求を前記第1の信号線、前記バスアダプターおよび前記第２の信号線を介して前記第２のモジュールへデータを転送することを特徴とする情報処理装置。
【請求項３】
　請求項1記載の情報処理装置であって、前記バスアダプターに接続された第３の信号線と前記第３の信号線に接続された第３のモジュールを有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、パーソナルコンピュータ、ワークステーション等の情報処理装置に係わり、特に、システムバスとしてアドレスとデータが多重化され、リードアクセス動作の起動サイクルと応答サイクルが、間に別の転送を挿入することで分離が可能であるスプリット転送プロトコルをサポートしたバス制御方式、および、これを用いたコンピュータシステムに関する。
【背景技術】
【０００２】
　上記技術分野においては従来、システムバスとして、例えば、「Ｆｕｔｕｒｅｂｕｓ＋ Ｐ８９６．１ Ｌｏｇｉｃａｌ Ｌａｙｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ」（１９９０，ＩＥＥＥ）などのように、リードアクセス動作の起動サイクルと応答サイクルが、間に別の転送を挿入することで分離が可能であるスプリット転送プロトコルをサポートしたバスが多く用いられている。その理由としては、リードアクセス動作の起動サイクルと応答サイクルの間に他のモジュールの転送の挿入を可能とすることで、バスの使用効率および応答性を向上させることが挙げられる。スプリット転送の典型的なタイミング例を図１３に示す。図１３は従来のスプリットリードアクセスタイミング例で、ＡＤＤＴ［０：６３］は８バイト幅の多重化されたアドレス／データバス、ＡＤＲＶはアドレス／データバスＡＤＤＴ［０：６３］上に有効なアドレスが出力されていることを示すアドレスバリッド信号、ＤＡＴＡＶはアドレス／データバスＡＤＤＴ［０：６３］上に有効なデータが出力されていることを示すデータバリッド信号である。Ｆｕｔｕｒｅｂｕｓ＋などの従来のバスでスプリットリードアクセスを行う場合には、まず起動元のモジュールがバス使用権を獲得した後、アドレスバリッド信号ＡＤＲＶを有効にし、アクセス先のアドレスをＡＤＤＴ［０：６３］で指定する。そのとき同時に、モード指定制御信号線により現在起動中のアクセスがスプリットリードアクセスであることをアクセス先モジュールに伝える（１３０１のタイミング）。この後、バス使用権を放棄し、起動サイクルを終了する。一方、この起動を受け取ったアクセス先のモジュールはリードデータが準備できた時点で、バス使用権を獲得し、アドレスバリッド信号ＡＤＲＶを有効にし、アクセス先のアドレスをＡＤＤＴ［０：６３］で指定する。そのとき同時に、モード指定制御信号線により現在起動中の転送がスプリットリードアクセスの応答であることを起動元モジュールに伝える（１３０２のタイミング）。次に、データバリッド信号ＤＡＴＡＶを有効にし、ＡＤＤＴ［０：６３］上に有効なリードデータを出力する。この後、アクセス先のモジュールはバス使用権を放棄し、応答サイクルを終了する。起動元のモジュールは、アクセス先のモジュールが出力するモード指定制御信号線およびアクセス先のアドレスにより、自分の起動したアクセスに対する応答であることを判断し、その応答データを取り込むという一連の制御を行っていた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
　近年、小型化、低価格化のため、バスの信号線を削減を図り、アドレスとデータを多重化したバスが多くなってきている。この場合、図１３の従来例のように、スプリットリードアクセスの応答転送時に、アクセス先のアドレスを出力するサイクルを設けると、アドレスとデータの多重化により、アドレスサイクル分だけ余計にバスを占有することになり、バスの使用効率低下や応答時間の増大を招くという問題が生じる。
【０００４】
　本発明の目的は、このような問題を解決し、バスの使用効率を向上、応答時間を減少させることにより、高性能なバス制御方式を提供することにある。
【課題を解決するための手段】
【０００５】
　上記目的を達成するため本発明は、バスに接続できる各モジュールにモジュールＩＤを指定する手段を設ける。さらに、少なくとも２つ以上階層的に接続した複数バス構造のシステムにおいては、モジュールＩＤを他の階層のバス上に存在する個々のモジュールに対しても割り付ける。そして、他の階層のバス上に存在するモジュールからのアクセスをシステムバス上に流す場合、インタフェースをとるアダプタに、そのモジュールに対して割り付けられたシステムバス上のモジュールＩＤを付加してリードアクセスの起動をかける手段を設ける。一方、起動をかけたモジュールが応答を受け取る場合、付加されたモジュールＩＤに従い、他の階層のバス上に存在するモジュールにさかのぼって応答を返す手段を設ける。
【０００６】
　他の階層のバス上に存在する個々のモジュールに対して割り付けられたモジュールＩＤをシステムバス上に流すことにより、たとえシステムバスのインタフェースとしては同一のアダプタであっても、システムバスに対して異なるモジュールＩＤでリード要求を発行することで、リード応答の入れ替わりも、応答サイクルのモジュールＩＤによりアダプタが見分けることができる。すなわち、マルチプロセッサシステム等において、それぞれのプロセッサが行うＩ／Ｏアクセスを１つずつまでなら並行してシステムバス上に発行することができるので、システムバスのアクセスの応答時間が低減される。
【発明の効果】
【０００７】
　本発明によれば、それぞれのモジュールが行うアクセスを、アクセスの順序が保証をしながら、連続してシステムバス上に発行し、並列処理することができ、システムバスのアクセスの応答時間の低減が図れるという効果がある。さらに、マルチプロセッサシステム等においても、それぞれのプロセッサが行うＩ／Ｏアクセスを少ないピン数で同様に処理できる。また、本発明によれば、転送時に指定するモジュールＩＤは、物理的なアダプタと全く切り離して設定することができるため、必要度の高いモジュールに集中的にモジュールＩＤを割り当てることができ、システムに対応できる柔軟性を高めるという効果がある。
【発明を実施するための最良の形態】
【０００８】
　図１は、本発明の第１の実施例におけるスプリットリードアクセスタイミングを示す図である。本実施例においては、アクセス先のアドレスを出力するサイクルを削除し、それをリードデータを受取る識別子（モジュールＩＤ）で代用している。起動サイクルは図１３の従来例と同様、まず起動元のモジュールがバス使用権を獲得した後、アドレスバリッド信号ＡＤＲＶを有効にし、アクセス先のアドレスをＡＤＤＴ［０：６３］で指定する。そのとき同時に、モード指定制御信号線により現在起動中のアクセスがスプリットリードアクセスであることをアクセス先モジュールに伝える（１０５のタイミング）。この後、バス使用権を放棄し、起動サイクルを終了する。一方、この起動を受け取ったアクセス先のモジュールはリードデータが準備できた時点で、バス使用権を獲得した後、いきなりデータバリッド信号ＤＡＴＡＶを有効にし、ＡＤＤＴ［０：６３］上に有効なリードデータを出力する。そのとき同時に、モード指定制御信号線により現在起動中の転送がスプリットリードアクセスの応答であることを起動元モジュールに伝える（１０６のタイミング）。この後、アクセス先のモジュールはバス使用権を放棄し、応答サイクルを終了する。起動元のモジュールは、アクセス先のモジュールが出力するモード指定制御信号線およびアクセス元のモジュールを表すモジュールＩＤ（ＳＩＮＫＭＯＤ：スプリットリードの応答先モジュールの識別子）により、自分の起動したアクセスに対する応答であることを判断し、その応答データを取り込むという一連の制御を行う。本実施例のように、ＳＩＮＫＭＯＤが４ビットあれば１６モジュールを指定できる。具体的には、図２に示すように、バスに接続されるバスアダプタ毎に１つずつモジュールＩＤが割り当てられる。図２は、階層バス構造をとったシステム構成例で、２０１、２０２は高速プロセッサバス、２０３、２０４は高速プロセッサバスとのインタフェースを行うバスアダプタ、２０５はシステムバス、２０６、２０７、２０８はＩＯバスとのインタフェースを行うバスアダプタ、２０９、２１０、２１１はＩＯバスである。本実施例ではバスアダプタ２０３、２０４、２０６、２０７、２０８にそれぞれ”０”、”１”、”２”、”３”、”４”のようにバスアダプタ毎に１つずつモジュールＩＤが割り当てられている。
【０００９】
　ところで、第１の実施例のような制御を行うバスがシステムに応用されるとき、多くの場合は、階層バス構造をとったシステム構成になる。図３は、このときのスプリットリードアクセスのデータの流れ図を示した図で、３０１、３０２、３０３はプロセッサ（Ｐ１、Ｐ２、Ｐ３）、３０４はマルチプロセッサ対応のプロセッサバス、３０５はプロセッサバス３０４とシステムバス３０７のインタフェースを行うバスアダプタ、３０６はメインメモリ、３０７はシステムバス、３０８はシステムバス３０７とＩＯバス３１１のインタフェースを行うバスアダプタ、３０９はシステムバス３０７とＩＯバス３１２のインタフェースを行うバスアダプタ、３１０はシステムバス３０７とＩＯバス３１３のインタフェースを行うバスアダプタ、３１１、３１２、３１３はＩＯバス、３１４、３１５はＩＯバス３１１上のＩＯ、３１６、３１７は３ＩＯバス３１２上のＩＯ、３１８、３１９はＩＯバス３１３上のＩＯである。ここで、バスアダプタ毎に１つずつモジュールＩＤが割り当てると、例えば、バスアダプタ３０５には”０”、バスアダプタ３０８には”１”、バスアダプタ３０９には”２、”バスアダプタ３１０には”３”のようになる。このとき、プロセッサ１、プロセッサ２、プロセッサ３は独立にシステムバスにつながっているＩＯに対して独立にリード要求を発行する。このとき、図３のようなバスシステムにおいては、モジュールＩＤを無制限にシステムバス３０７上に発行していくと、もしアクセスしようとしているＩＯバス３１１がスプリット転送をサポートしているとアクセス時間の早いＩＯからの応答が先に返ってくる可能性があり、モジュールＩＤを参照しただけでは、アクセスの順序が保証できないという問題がある（本例では応答サイクルのＳＩＮＫＭＯＤはすべて”０”で返ってくる）。すなわち、他の階層のバスが上記従来のバスと同様にスプリット転送プロトコルをサポートしていると、応答データの順序を保証するために、１つのバスアダプタから１つのリード要求しか発行できなくなる。これは特にマルチプロセッサシステムの場合などに生じる。
【００１０】
　本発明の第２の実施例は、マルチプロセッサシステムにおいて、それぞれのプロセッサが行うＩ／Ｏアクセスを連続してシステムバス上に発行し、並列化することで、このような問題をさらに解決するものである。以下、本発明の第２の実施例について説明する。
【００１１】
　図４は本実施例のシステム構成のブロック図で、４０１、４０２、４０３はプロセッサ（Ｐ１、Ｐ２、Ｐ３）、４０４はマルチプロセッサ対応のプロセッサバス、４０５はプロセッサバス４０４とシステムバス４０７のインタフェースを行うバスアダプタ、４０６はメインメモリ、４０７はシステムバス、４０８はシステムバス４０７とＩＯバス４１１のインタフェースを行うバスアダプタ、４０９はシステムバス４０７とＩＯバス４１２のインタフェースを行うバスアダプタ、４１０はシステムバス４０７とＩＯバス４１３のインタフェースを行うバスアダプタ、４１１、４１２、４１３はＩＯバス、４１４、４１５はＩＯバス４１１上のＩＯ、４１６、４１７はＩＯバス４１２上のＩＯ、４１８、４１９はＩＯバス４１３上のＩＯである。ここで、本実施例のシステムバス接続可能なバスアダプタ数を４とする。ただし、本発明では、モジュール識別子として、４ビット割り付けるとする。これにより、論理的には、１６のモジュールを識別できることになる。本発明では、プロセッサ４０１には”０”、プロセッサ４０２には”１”、プロセッサ４０３には”２”、メインメモリ４０６には”３”、バスアダプタ４０８には”４”、バスアダプタ４０９には”５”、バスアダプタ４１０には”６”のようにモジュールＩＤを割り振る。アダプタ４０５は、プロセッサ４０１から４０３からのＩＯアクセス要求を、各プロセッサ１つ以内なら並列してシステムバス４０７上に発行する。
【００１２】
　図５は、図４のシステム構成でのアクセスタイムチャートを示すもので、プロセッサ４０１から４０３からのアクセス先がすべてモジュール４０８とし、プロセッサ４０１から４０３からのアクセス先のＩＯのアクセスタイムがそれぞれ１２、９、６サイクルであると仮定したときのものである。サイクル５０１はリードの起動サイクルで、バスマスタはバスアダプタ４０５、リードデータの応答先であるＳＩＮＫＭＯＤは”０”（起動元はプロセッサ４０１であることを示す）を示している。サイクル５０２はリードの起動サイクルで、バスマスタはバスアダプタ５、リードデータの応答先であるＳＩＮＫＭＯＤは”１”（起動元はプロセッサ４０２であることを示す）を示している。
【００１３】
　サイクル５０３はリードの起動サイクルで、バスマスタはバスアダプタ４０５、リードデータの応答先であるＳＩＮＫＭＯＤは”２”（起動元はプロセッサ４０３であることを示す）を示している。サイクル５０４はリードの応答サイクルで、バスマスタはバスアダプタ４０８、リードデータの応答先であるＳＩＮＫＭＯＤは”２”を示している。このとき、バスアダプタ４０５はＳＩＮＫＭＯＤの”２”をみて、取り込んだデータをプロセッサ４０３に返すような制御を行う。このときのデータの流れを図８に示す。サイクル５０５はリードの応答サイクルで、バスマスタはバスアダプタ４０８、リードデータの応答先であるＳＩＮＫＭＯＤは”１”を示している。このとき、バスアダプタ４０５はＳＩＮＫＭＯＤの”１”をみて、取り込んだデータをプロセッサ４０２に返すような制御を行う。このときのデータの流れを図７に示す。サイクル５０６はリードの応答サイクルで、バスマスタはバスアダプタ４０８、リードデータの応答先であるＳＩＮＫＭＯＤは”０”を示している。このとき、バスアダプタ４０５はＳＩＮＫＭＯＤの”０”をみて、取り込んだデータをプロセッサ４０１に返すような制御を行う。このときのデータの流れを図６に示す。また、メインメモリにモジュールＩＤを割り振れば、ＤＭＡ（ダイレクトメモリアクセス）の指定も容易になる（図９）。
【００１４】
　ここで本発明の第１、第２の実施例によるスプリットリード競合時のサイクル数を図１０に示す。（ａ）は第１の実施例のプロトコルを用いた場合のサイクル数、（ｂ）は第２の実施例のプロトコルを用いた場合のサイクル数である。１００１、１００７はプロセッサ１のＩＯアクセスの起動サイクル、１００２、１００８はプロセッサ１のＩＯアクセスの応答サイクル、１００３、１００９はプロセッサ１のＩＯアクセスの起動サイクル、１００４、１０１０はプロセッサ１のＩＯアクセスの応答サイクル、１００５、１０１１はプロセッサ１のＩＯアクセスの起動サイクル、１００６、１０１２はプロセッサ１のＩＯアクセスの応答サイクルである。このように、第１の実施例のように、同一アダプタからの複数リードの起動が許さないと、すべてのリードアクセスがシリアライズされ、合計２７サイクルかかる。一方、第２の実施例のように、並列起動が行えば、１２サイクルとなり、リードアクセスの応答性がさらに向上する。
【００１５】
　ところで、上記第１、第２の実施例の説明においては、スプリットリードアクセスの応答先をＳＩＮＫＭＯＤという識別子で示したが、第３の実施例として、スプリットリードアクセスの応答元の識別子を本発明の応答先と同様に指定できるようにすると、応答先の識別子（ＳＩＮＫＭＯＤ）が同一であっても識別子の異なる複数の応答元に対して、同時にスプリットリード要求を発行することも可能となる。その場合の応答元識別子は、図１１、図１２に示すように、ＩＯ４１４、ＩＯ４１５にそれぞれモジュールＩＤ”７”、”８”を割付け、その応答元識別子の情報により、バスアダプタ４０５が順序保証をする制御を行えば良い。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施例のバスプロトコルによるスプリットリードアクセスのデータの流れ図。
【図２】階層バスシステムの構成例。
【図３】第１の実施例をそのまま階層バスシステムに用いたときのバスプロトコルによるスプリットリードアクセスのデータの流れ図。
【図４】本発明の第２の実施例のシステム構成のブロック図。
【図５】本発明の第２の実施例のスプリットリードアクセス競合タイムチャート。
【図６】本発明の第２の実施例のデータの流れ図（１）。
【図７】本発明の第２の実施例のデータの流れ図（２）。
【図８】本発明の第２の実施例のデータの流れ図（３）。
【図９】本発明の第２の実施例のデータの流れ図（４）。
【図１０】スプリットリード競合時のサイクル数を示す図。
【図１１】本発明の第３の実施例のデータの流れ図（１）。
【図１２】本発明の第３の実施例のデータの流れ図（２）。
【図１３】従来のバスプロトコルによるスプリットリードアクセスのデータの流れ図。
【符号の説明】
【００１７】
４０１，４０２，４０３…プロセッサ、
４０４…プロセッサバス、
４０５…バスアダプタ、
４０６…メインメモリ
４０７…システムバス、
４０８，４０９，４１０…バスアダプタ、
４１１，４１２，４１３…ＩＯバス、
４１４，４１５…ＩＯバス１１上のＩＯ、
４１６、４１７…ＩＯバス１２上のＩＯ、
４１８、４１９…ＩＯバス１３上のＩＯ。
【図１】
2004078998.tif 000003
【図２】
2004078998.tif 000004
【図３】
2004078998.tif 000005
【図４】
2004078998.tif 000006
【図５】
2004078998.tif 000007
【図６】
2004078998.tif 000008
【図７】
2004078998.tif 000009
【図８】
2004078998.tif 000010
【図９】
2004078998.tif 000011
【図１０】
2004078998.tif 000012
【図１１】
2004078998.tif 000013
【図１２】
2004078998.tif 000014
【図１３】
2004078998.tif 000015