バス制御方法
【目的】バスの使用効率を向上する。
【構成】スレーブとなるモジュール101に対してリードアクセスを行うモジュール(マスタ)100は、BREQ61信号によりバス使用権をバスアービタに要求すると共に、LC信号63により次のサイクルがマスタが使用する最後のサイクルである旨を伝える。そして、BGRANT信号62によってバス使用を許可されたら、次のサイクルでアドレスをシステムバスのA/D50を用いてスレーブ101に転送することによりリードアクセスを起動し、バス使用権を手放す。スレーブ101は、転送されたアドレスを受付けることができなかった場合にのみ、受付けられなかったアドレスの転送サイクルの2サイクル後にRETRY信号55をアサートする。RETRY信号55がアサートされたサイクルの2サイクル前に転送を実行したモジュール100は、2サイクル前に実行した転送を再度実行する。
【効果】転送するアドレスを受付ける用意のできているモジュールに対しては1サイクルのみでアドレスの転送を実現することができる。
【構成】スレーブとなるモジュール101に対してリードアクセスを行うモジュール(マスタ)100は、BREQ61信号によりバス使用権をバスアービタに要求すると共に、LC信号63により次のサイクルがマスタが使用する最後のサイクルである旨を伝える。そして、BGRANT信号62によってバス使用を許可されたら、次のサイクルでアドレスをシステムバスのA/D50を用いてスレーブ101に転送することによりリードアクセスを起動し、バス使用権を手放す。スレーブ101は、転送されたアドレスを受付けることができなかった場合にのみ、受付けられなかったアドレスの転送サイクルの2サイクル後にRETRY信号55をアサートする。RETRY信号55がアサートされたサイクルの2サイクル前に転送を実行したモジュール100は、2サイクル前に実行した転送を再度実行する。
【効果】転送するアドレスを受付ける用意のできているモジュールに対しては1サイクルのみでアドレスの転送を実現することができる。
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、パーソナルコンピュータやワークステーション等の情報処理システムに関し、特に、情報処理システムのバスの制御技術に関するものである。
【0002】
【従来の技術】情報処理システムにおいて、バス上に接続された複数のモジュールが共通クロックに同期してデータを転送する同期バスの制御技術としては、たとえば、特開昭61ー11872号公報記載の技術等が知られている。
【0003】このような従来の同期バスの制御について説明する。
【0004】図16に、従来の同期バス制御技術によるバス上のデータ転送のタイミングを示す。
【0005】図中、CLKはバスに接続された各々のモジュールが共通に有するデータ転送用同期クロック、A/Dは多重化されたアドレスおよびデータ、ADRVはA/D上のアドレスが有効であることを示すアドレスバリッド信号、WRITEはライトアクセスの指定信号で、A/D上のデータが有効であることも併せて示している。また、WAITはスレーブ側のバッファがデータを受け付けられる状態になっていないことをマスター側に伝えるウエイト信号である。
【0006】このような信号から構成されるバスを用いて、1のモジュールが他のモジュールにライトアクセスを行う場合は、まず、バスマスタがA/D上のアドレスが有効であることを示すアドレスバリッド信号ADRVをアサートすると同時にA/D上にアクセス先のアドレスを出力する。
【0007】一方、このアドレスのデコード結果とライトアクセスの指定信号WRITEにより、自モジュールに対するライトアクセスであることを検知したスレーブモジュールは、データを取り込む準備ができている場合は同期クロックCLKのタイミングでA/D上の有効データを取り込む。もしスレーブモジュールがデータを取り込む準備ができていない場合は、データを受け付ける状態になっていないことをマスター側に伝えるウエイト信号WAITによりデータサイクルの延長を要求する。
【0008】マスタモジュールはウエイト信号がアサートされている場合は、この間、データサイクルを延長する。スレーブモジュールはデータを取り込む準備ができた時点で同期クロックCLKのタイミングでA/D上の有効データを取り込み、ウエイト信号をネゲートする。そして、マスタモジュールは、ウエイト信号がネゲートされたらデータサイクルを打切り、アクセスを終了する。
【0009】このように、従来の同期バスの制御技術によれば、ハンドシェイク式にデータ転送が可能か否かをウエイト信号によって伝え合いつつ、データ転送を行っていた。
【0010】
【発明が解決しようとする課題】しかし、従来の技術によれば、データ転送を行う場合に、データの転送に先立ち、ウエイトサイクルを挿入しているので、ウエイトサイクルの分だけオーバヘッドが生じ、データ転送速度が低下すると共に、バスの占有時間が増大し、バスの使用効率が低下するという問題があった。
【0011】そこで、本発明は、データ転送のオーバヘッドを低減することにより、バス使用効率の向上を図ることのできるバスの制御方法を提供することを目的とする。
【0012】
【課題を解決するための手段】前記目的達成のために、本発明は、バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの成否を確認することを特徴とするバス制御方法を提供する。
【0013】また、本発明は、前記目的達成のために、マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかったモジュ−ルは、転送の再実行を要求するリトライ要求を、受付けることのできなかった転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルに実行した転送を再度実行することを特徴とするバス制御方法を提供する。
【0014】また、さらに、本発明は、マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータに転送誤りがあった場合に、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告より転送誤りが発生した転送の内容を確認することを特徴とするバス制御方法を提供する。
【0015】
【作用】本発明に係るバス制御方法によれば、たとえば、マスタは、バスの使用権を獲得したらスレ−ブの状態を確認することなしに、アドレスもしくはデータをスレ−ブに転送する転送サイクルを実行し、転送の成否を確認することなしにバスの使用権を放棄する。一方、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの転送の成否を確認し、もし、転送が成功していない場合にのみ、対策を講じる。
【0016】したがい、マスタよりの転送を受け入れる用意のあるスレ−ブに対する転送は、実際にアドレスやデータを転送するサイクルのみで実現でき、バスの使用効率を向上することができる。
【0017】
【実施例】以下、本発明に係る情報処理システムの一実施例について説明する。
【0018】まず、図1に本実施例に係る情報処理システムの構成を示す。
【0019】図示するように、本実施例に係る情報処理システムは、システムバス50〜60と、これに接続する複数のモジュール0〜7(100〜107)と、各モジュール100〜107間のバス使用権を調停するバスアービタ108と、各モジュール100〜107に接続するI/Oバス100、I/Oバスに接続するI/O装置とを有している。また、各モジュール100〜107には、単独のI/O装置のみが接続することもある。各モジュールは、システムバスインタフェース装置を内蔵し、システムバス50〜60と、図示せざるI/OバスもしくはI/O装置との間のデータ転送を仲介する。
【0020】また、図中、61はモジュール0からバスアービタ108に対してバス使用権を要求するためのバス権要求信号(BREQ0)、62はバスアービタ108からモジュール0(100)にバス使用の許可を与えるバス使用許可信号(BGRANT0)、63はモジュール0(100)からバスアービタ108に対して次のサイクルがバス使用の最終サイクルであることを伝えるラストサイクル信号(LC0)である。同様に、64はモジュール1(101)からバスアービタ108に対するバス権要求信号(BREQ1)、65はバスアービタ108からモジュール1(101)に対するバス使用許可信号(BGRANT1)、66はモジュール1(101)からバスアービタ108に対して最終サイクルであることを伝えるラストサイクル信号(LC1)、67はモジュール7(107)からバスアービタ108に対するバス権要求信号(BREQ7)、68はバスアービタ108からモジュール7(107)に対するバス使用許可信号(BGRANT7)、69はモジュール7(107)からバスアービタ108に対して最終サイクルであることを伝えるラストサイクル信号(LC7)である。
【0021】また、システムバスにおいて、50はアドレスおよびデータバス(A/D)、51はアクセスの種類を指定するコマンド信号(CMD)、52はA/D上のアドレスが有効であることを示すアドレスバリッド信号(ADRV)、53はA/D上のデータが有効であることを示すデータバリッド信号(DATAV)、54はスレーブ側がアドレスもしくはデータを確かに受け取ったことをマスタ側に伝えるトランザクションアクノリッジ信号(TACK)、55はスレーブ側のマスタ側に対するリトライ要求信号(RETRY)、56はスレーブ側からマスタ側に対するトランザクションに同期したエラー報告信号であるシンクロナスエラー(SERR)、57はトランザクションに同期しないエラー報告信号であるアシンクロナスエラー(AERR)、58はシンクロナスエラー56およびアシンクロナスエラー57と同時に出力して診断用トランザクション以外を凍結するフリーズ信号(FRZ)、59はフリーズ中の診断用トランザクションによるエラー回復が終了後フリーズ信号を解除するためのバスリセット信号(BRST)、60は各モジュールに共通に供給される同期用クロック信号(CLK)である。
【0022】次に、図2に、各モジュールの内部構成を示す。
【0023】図中、1がバス制御を担うシステムバスインタフェース装置であって、システムバス50〜60と、図示せざるI/OバスもしくはI/O装置との間に接続され、両者間のデータ転送を仲介する。
【0024】2はシステムバスインタフェース装置1内部のシステムバス制御部、3はシステムバスインタフェース装置1を介して接続されるI/OバスもしくはI/O装置を制御する制御部である。また、4は、システムバス制御部2とI/OバスもしくはI/Oの制御部3間のインタフェースを整合させる変換部、5はバスアービトレーション制御部、6はエラー制御部、7はシステムバス制御部、8はリトライ制御部、9は受けデータ用バッファ、10はアドレス変換部、11はデータ変換部、12はプロトコル変換部、13はアドレス入出力部、14はデータ入出力部、15はI/O(バス)制御部、16は出力用最終段バッファ、17は入力用初段バッファ、18はアドレス出力バッファ、19〜22はバーストライト用データバッファ、23は入力アドレスバッファ、24は入力アドレス、データチェック用バッファ、25はアービトレーション制御信号、26はアドレスバス、27はデータバス、28は制御信号、29はデータのパリティ等より転送誤りを検出するエラーチェッカーである。
【0025】以下、このような情報処理システムにおけるデータ転送動作について説明する。
【0026】まず、リードアクセス動作について説明する。本実施例では、リードアクセスを、読み出し要求側がアドレスをシステムバスに出力する起動シーケンスと、被要求側が受け取ったアドレスに応えデータをシステムバスに出力する応答シーケンスより実現する。また、本実施例においては、起動シーケンスと応答シーケンスが独立したスプリット動作によりリードアスセス動作を実現する。
【0027】本実施例においては、あるモジュールがリードアクセス動作を行う場合、まず、バス権要求信号(BREQ)によりバスアービタ108に対しバス使用権を要求する。また、このとき同時にラストサイクル信号(LC)を出力し、バスアービタ108に対し1サイクルでバス権を放棄することを予告する。
【0028】そして、バス使用許可信号(BGRANT)がアサートされたらアドレス等をシステムバスに出力し、バス使用を終了する。
【0029】図3には、モジュール0(100)からモジュール3(103)までが、リードアクセスのために、同時にBREQをアサートした場合について示した。
【0030】図示するように、モジュール0(100)からモジュール3までが同時にBREQをアサートしている。ただし、モジュール0(100)、モジュール1(101)、モジュール2、モジュール3の順でバス使用の優先順位が高いものとする。
【0031】図示するように、第3サイクル、第4サイクル、第5サイクル、第6サイクルと、バスマスタがモジュール0(100)、モジュール1(101)、モジュール2、モジュール3の順に切り換わっている。すなわち、バスマスタが1サイクルごとに切り替わってもアイドルサイクルが挿入されない。
【0032】図3に、リードアクセスを起動するシーケンスを示す。
【0033】図示するように、このシーケンスにおいて、リードアクセスのために、BREQとLCをアサートした起動モジュールは、バスアービタ108からバス使用許可信号(BGRANT)を受けるとA/D上のアドレスが有効であることを示すアドレスバリッド信号(ADRV)52を有効にし、アドレスデータバス(A/D)50にアクセス先のアドレスを出力する。また、同時に、アクセスの種類がリードアクセスであるということをコマンド信号(CMD)51に出力し、起動シーケンスを終了する。なお、リードアクセスの起動サイクルは図中第4サイクルとなっている。
【0034】次に、応答シーケンスを図5に示す。
【0035】リードアクセスのコマンドおよびアドレスを受け取ったモジュールは応答するべきデータが準備できた時点でバス権を獲得した後、A/D上のデータが有効であることを示すデータバリッド信号(DATAV)53を有効にし、アドレスおよびデータバス(A/D)50に応答データを出力する。また、同時に、アクセスの種類がリード応答アクセスであるということをコマンド信号(CMD)51に出力する。応答サイクルは、図中第7サイクルである。
【0036】なお、ここでバーストリード時のリードアクセスの応答シーケンスを図5に示しておく。図中、応答サイクルは第5から第8サイクルである。
【0037】以上のように、本実施例においては、従来のようなウエイト信号等を用いずに、各モジュールの受けデータ用バッファ(図1、9)が、いつでもデータを取り込み可能と仮定し、バス権獲得後は、転送を必ず1データもしくは1アドレスあたり1サイクルで行い、バス占有時間を減らし、バス使用効率を向上させている。
【0038】なお、ライトアクセスのシーケンスにおいても、図7に示すように、アドレス転送、データ転送をともに1サイクルずつで終了させることができる。アドレス等を転送し、ライトアクセスを起動する起動サイクルが第4サイクル、データ等を転送する応答サイクルが第5サイクルである。
【0039】また、バーストライト時のシーケンスにおいても、図8に示すように、転送サイクルを必ず1データもしくはアドレスあたり1サイクルで行うことができる。図8中、アドレスを転送する起動サイクルが第3サイクル、これに応え4つのデータを転送する応答サイクルが第4から第7サイクルである。
【0040】さて、前述したように、各モジュールの受けデータ用バッファ(図1、9)が、いつでもデータを取り込み可能と仮定し、バス権獲得後は、転送サイクルを必ず1データもしくはアドレスあたり1サイクルで行うようにしたが、バッファの容量にも限りがあるため連続でライトアクセス等が行われるとバッファがオーバフローしデータを受けきれなくなる場合が有りえる。
【0041】そこで、本実施例では、スレーブ側がアドレスもしくはデータを確かに受け取ったことをマスタ側に伝えるトランザクションアクノリッジ信号(TACK)54、スレーブ側がマスタ側に再送を要求するリトライ要求信号(RETRY)55、スレーブ側がマスタ側にエラーの発生をトランザクションに同期して報告するシンクロナスエラー(SERR)56を設けた。また、これらの信号は、必ず、マスタ側よりの転送サイクルの2サイクル後にスレーブ側が出力することとし、そのマスタ側よりのトランザクションが成功したか否かをマスタ側が認識できるようにした。
【0042】また、各モジュールはトランザクションの起動をかけられた時点で、バッファが当該トランザクションによってオーバフローするか否かを判別することができるので、スレーブ側モジュールのリトライ要求信号(RETRY)55のアサートはトランザクションの先頭のサイクルに対してのみ行う。なお、バーストライトもしくはバーストリード時には、トランザクションの先頭のサイクルでCMDにバースト転送量の情報を含めるので、この場合も、各モジュールはトランザクションの起動をかけられた時点で、バッファが当該トランザクションによってオーバフローするか否かを判別することができる。
【0043】リードアクセスに対するリトライのシーケンス例を図9に示す。
【0044】図示した例では、1回目の起動サイクル(第4サイクル)に対して、第6サイクルにスレーブからRETRYをアサートし、これに対しマスタが第11サイクルで再度起動サイクルを実行しリトライを成功させている。
【0045】次に、転送エラーが起こった場合のシーケンス例を図10に示す。
【0046】図示した例は、バーストライトアクセスの2つめのデータ転送サイクル(第6サイクル)でパリディエラーが起こった場合で、スレーブ側からマスタ側に対するトランザクションに同期したエラー報告信号であるシンクロナスエラー(SERR)56が、パリディエラーが起こったサイクルの2サイクル後(第8サイクル)にスレーブ側より出力されている。また、スレーブ側モジュールは、エラー報告をおこなうのと同時に、フリーズ信号(FRZ)58によりバスを凍結する。一方、シンクロナスエラー(SERR)56がアサートされると、マスター側は、シンクロナスエラー(SERR)56がアサートされタイミングと、記憶しておいた過去に実行した各サイクルについての情報より、エラー発生サイクル、エラーアドレスなどを求め、ロギング情報として保持する。
【0047】また、シンクロナスエラー(SERR)56がアサートされると、いずれかのモジュールに接続したプロセッサ等、エラー回復処理を担う所定の装置がマスター側のモジュールが保持したエラー発生サイクル、エラーアドレスなどのロギング情報をもとにエラーを回復(第9サイクルから第18サイクルの間のどこかのタイミング)した後、バスリセット信号(BRST)59によりフリーズを解除し、通常のトランザクションをリスタートさせる(第24サイクル以降)。
【0048】このように、本実施例においては、マスタ側は、トランザクションに完全に同期したエラー報告を受けるので、どのサイクルでエラーが起こったかという情報までロギングすることができ、その後のエラーの解析、エラーの回復処理を容易にすることができる。
【0049】ところで、次に、このようなプロトコルを有するシステムバスを用いて、複数のモジュールに対して同時にライトを行う放送型トランザクションであるブロードキャストを行う場合について説明する。
【0050】このような放送型トランザクションにおいては、同時に複数モジュールに対してライトすることが必須であるため、一部のモジュールのみがバッファのオバーフローを起こしライトできたモジュールとそうでないモジュールが生じてしまう場合が有りえる。
【0051】そこで、本実施例においては、ブロードキャスト時には、マスタは必ず転送サイクルの2サイクル後までバス権を保持したままで待ち、リトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56がないかを確認するようにする。
【0052】また、ここで、トランザクションアクノリッジ信号(TACK)54、リトライ要求信号(RETRY)55、シンクロナスエラー報告(SERR)56が、複数のモジュールによって同時にアサートする可能性があるため、ワイヤードOR信号として準備しておく。そして、マスタは、リトライ要求があればバス権を保持したままでもう一度同じアクセスサイクルを実行するようにする。一方、転送を受け取った各スレ−ブも、必ず転送サイクルの2サイクル後まで、転送されたデータの処理を開始せずに保持したままで待ち、他のスレ−ブよりのリトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56がないかを確認し、リトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56があった場合には、受け取ったデータを廃棄する。
【0053】ブロードキャストアクセス動作時のシーケンス例を図11、図12に示す。
【0054】図11は、1度のブロードキャストアクセスで成功した例で、図12はブロードキャストアクセスで成功した例を示している。
【0055】図11に示す例では、転送サイクルの2サイクル後までバス権を保持したままで待っても、リトライ要求信号(RETRY)55、シンクロナスエラー報告(SERR)56がない場合、マスタは、LCを発行し、バス権を手放している。
【0056】一方、図12に示す例では、第3サイクルおよび第7サイクルでマスタが起動をかけたブロードキャストアクセスに対して第5、第9サイクルでRETRYがアサートされている。マスタは、各RRETRYのアサートに対して、第7、第11サイクルでリトライの起動をかけ、3回目のリトライに対しては第13サイクルでRRETRYがアサートされず、最終転送サイクルの2サイクル後の第14サイクルまでにエラー報告もなかったことを確認してLCを発行しバス権を手放してトランザクションを終了している。
【0057】ここで、図13に、ブロードキャストアクセスを行うマスタの実行する手順を示しておく。図示するように、マスタは、150で処理を開始後、151で全モジュールを対象とした放送型のライトアクセスを実行する。そして、152で151にたいするリトライ要求があるかどうかを判定し、あれば151にもどり全モジュールを対象とした放送型のライトアクセスを再実行する。152で151にたいするリトライ要求がなければ153で2サイクル待って全スレーブがエラーなくデータを受け取ったかどうかを確認し、154でエラー報告を受ければ155に遷移してエラー処理を行い、エラー報告がなければ156で終了する。
【0058】なお、連続ライトアクセスを受けるモジュ−ルが、階層の異なるバス間のプロトコル変換を行うバスコンバ−タである場合には、当該モジュ−ルは、最後のサイクルのデ−タまでバッファ内に受け取ったことを確認してから異なる階層のバスへの転送を開始するようにする。
【0059】ところで、前述したように、リトライ要求が返ってくるサイクルは起動サイクルの2サイクル後となるため、図14に示すように、同一モジュールから特定のモジュールに対して連続してライトアクセス(第3および第5サイクルで起動)を行うような場合、バスインタフェース装置の都合で1番目のライトアクセスがバッファのオーバフロー等により受付けられなかったのにもかかわらず、2番目のライトアクセスが引き続きマスタ側より行われる。そして、この2番目のライトアクセスのみが受け付けられる可能性がある。すなわち、アクセスの順序が保証されない場合が生じえる。
【0060】そこで、本実施例においては、同一モジュールから特定のモジュールに対して連続ライトアクセスを行うような場合は、起動をかけるバスインタフェース装置において、連続ライトの場合は、ライトアクセス終了後は必ず2サイクル待って、リトライ要求が返ってこないことを確認した後、次のライトアクセスを起動するようにする。
【0061】図15に同一モジュールから特定のモジュールに対して連続ライトアクセスを行う場合のシーケンス例を示す。
【0062】図示した例では、マスタは第4サイクルで1度目のライトアクセスを終了した後に、第5サイクルにリトライ要求がアサートされないことを確認した後、第7サイクルに2番目のアクセスを起動している。
【0063】なお、本実施例において、リトライ要求、アクノリッジ、エラー報告を2サイクル後に行っている理由は、システムバスの負荷を極力低減し、転送の同期用クロックであるCLKの周波数を高くすることを可能とするために、エラーチェッカー(図1、29)等を直接システムバスに接続しないことに起因するものである。
【0064】以上、説明してきたように、本実施例に係る情報処理システムによれば、相手モジュールのデータ受け付けの可否を確認するためのレディ制御などのハンドシェイクを行わず、また、データ転送元が転送先であるスレーブのアクノリッジ信号を確認することなしに転送サイクルを終了するので、バスの使用効率を向上することができると共に、アクセス速度を向上することができる。
【0065】また、エラー処理に関しては、トランザクションの各々のサイクルに同期したエラー報告を行うので、エラー報告をうけたマスタモジュールが、エラーが発生したサイクルの個所まで詳細にロギングをとることができ、エラー発生後の回復処理を容易にすることができる。
【0066】
【発明の効果】以上のように、本発明によれば、データ転送のオーバヘッドを低減することにより、バス使用効率の向上を図ることのできるバスの制御方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係る情報処理システムの構成を示すブロック図である。
【図2】システムバスインタフェース装置の構成を示すブロック図である。
【図3】リードアクセスのためのバス権要求が競合した場合のシーケンスを示すタイムチャートである。
【図4】リードアクセスの起動シーケンスを示すタイムチャートである。
【図5】リードアクセスの応答シーケンスを示すタイムチャートである。
【図6】バースト転送によるリードアクセスの起動シーケンスを示すタイムチャートである。
【図7】ライトアクセスのシーケンスを示すタイムチャートである。
【図8】バースト転送によるライトアクセスのシーケンスを示すタイムチャートである。
【図9】リードアクセスのリトライシーケンスを示すタイムチャートである。
【図10】転送エラー発生時のシーケンスを示すタイムチャートである。
【図11】ブロードキャスアクセス時のシーケンスを示すタイムチャートである。
【図12】ブロードキャスアクセス時のリトライシーケンスを示すタイムチャートである。
【図13】ブロードキャスアクセス時にマスタが行う手順を示すフローチャートである。
【図14】通常のライトアクセスと同様の連続ライトアクセスを行った場合のリトライシーケンスを示すタイムチャートである。
【図15】連続ライトアクセスのシーケンスを示すタイムチャートである。
【図16】従来のバス制御技術によるライトアクセスのシーケンスを示すタイミングチャートである。
【符号の説明】
1・・・システムバスインタフェース装置
2・・・システムバス制御部
3・・・制御部
4・・・変換部
5・・・バスアービトレーション制御部
6・・・エラー制御部
7・・・システムバス制御部
8・・・リトライ制御部
9・・・受けデータ用バッファ
10・・・アドレス変換部
11・・・データ変換部
12・・・プロトコル変換部
13・・・アドレス入出力部
14・・・データ入出力部
15・・・I/O(バス)制御部
16・・・出力用最終段バッファ
17・・・入力用初段バッファ
18・・・アドレス出力バッファ
19、20、21、22・・・バーストライト用データバッファ
23・・・入力アドレスバッファ
24・・・入力アドレス、データチェック用バッファ
25・・・アービトレーション制御信号
26・・・アドレスバス
27・・・データバス
28・・・制御信号
29・・・エラーチェッカー
50・・・データバス(A/D)
51・・・コマンド信号(CMD)
52・・・アドレスバリッド信号(ADRV)
53・・・データバリッド信号(DATAV)
54・・・トランザクションアクノリッジ信号(TACK)
55・・・リトライ要求信号(RETRY)
56・・・シンクロナスエラー(SERR)
57・・・アシンクロナスエラー(AERR)
58・・・フリーズ信号(FRZ)
59・・・バスリセット信号(BRST)
60・・・同期用クロック信号(CLK)
【0001】
【産業上の利用分野】本発明は、パーソナルコンピュータやワークステーション等の情報処理システムに関し、特に、情報処理システムのバスの制御技術に関するものである。
【0002】
【従来の技術】情報処理システムにおいて、バス上に接続された複数のモジュールが共通クロックに同期してデータを転送する同期バスの制御技術としては、たとえば、特開昭61ー11872号公報記載の技術等が知られている。
【0003】このような従来の同期バスの制御について説明する。
【0004】図16に、従来の同期バス制御技術によるバス上のデータ転送のタイミングを示す。
【0005】図中、CLKはバスに接続された各々のモジュールが共通に有するデータ転送用同期クロック、A/Dは多重化されたアドレスおよびデータ、ADRVはA/D上のアドレスが有効であることを示すアドレスバリッド信号、WRITEはライトアクセスの指定信号で、A/D上のデータが有効であることも併せて示している。また、WAITはスレーブ側のバッファがデータを受け付けられる状態になっていないことをマスター側に伝えるウエイト信号である。
【0006】このような信号から構成されるバスを用いて、1のモジュールが他のモジュールにライトアクセスを行う場合は、まず、バスマスタがA/D上のアドレスが有効であることを示すアドレスバリッド信号ADRVをアサートすると同時にA/D上にアクセス先のアドレスを出力する。
【0007】一方、このアドレスのデコード結果とライトアクセスの指定信号WRITEにより、自モジュールに対するライトアクセスであることを検知したスレーブモジュールは、データを取り込む準備ができている場合は同期クロックCLKのタイミングでA/D上の有効データを取り込む。もしスレーブモジュールがデータを取り込む準備ができていない場合は、データを受け付ける状態になっていないことをマスター側に伝えるウエイト信号WAITによりデータサイクルの延長を要求する。
【0008】マスタモジュールはウエイト信号がアサートされている場合は、この間、データサイクルを延長する。スレーブモジュールはデータを取り込む準備ができた時点で同期クロックCLKのタイミングでA/D上の有効データを取り込み、ウエイト信号をネゲートする。そして、マスタモジュールは、ウエイト信号がネゲートされたらデータサイクルを打切り、アクセスを終了する。
【0009】このように、従来の同期バスの制御技術によれば、ハンドシェイク式にデータ転送が可能か否かをウエイト信号によって伝え合いつつ、データ転送を行っていた。
【0010】
【発明が解決しようとする課題】しかし、従来の技術によれば、データ転送を行う場合に、データの転送に先立ち、ウエイトサイクルを挿入しているので、ウエイトサイクルの分だけオーバヘッドが生じ、データ転送速度が低下すると共に、バスの占有時間が増大し、バスの使用効率が低下するという問題があった。
【0011】そこで、本発明は、データ転送のオーバヘッドを低減することにより、バス使用効率の向上を図ることのできるバスの制御方法を提供することを目的とする。
【0012】
【課題を解決するための手段】前記目的達成のために、本発明は、バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの成否を確認することを特徴とするバス制御方法を提供する。
【0013】また、本発明は、前記目的達成のために、マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかったモジュ−ルは、転送の再実行を要求するリトライ要求を、受付けることのできなかった転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルに実行した転送を再度実行することを特徴とするバス制御方法を提供する。
【0014】また、さらに、本発明は、マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータに転送誤りがあった場合に、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告より転送誤りが発生した転送の内容を確認することを特徴とするバス制御方法を提供する。
【0015】
【作用】本発明に係るバス制御方法によれば、たとえば、マスタは、バスの使用権を獲得したらスレ−ブの状態を確認することなしに、アドレスもしくはデータをスレ−ブに転送する転送サイクルを実行し、転送の成否を確認することなしにバスの使用権を放棄する。一方、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの転送の成否を確認し、もし、転送が成功していない場合にのみ、対策を講じる。
【0016】したがい、マスタよりの転送を受け入れる用意のあるスレ−ブに対する転送は、実際にアドレスやデータを転送するサイクルのみで実現でき、バスの使用効率を向上することができる。
【0017】
【実施例】以下、本発明に係る情報処理システムの一実施例について説明する。
【0018】まず、図1に本実施例に係る情報処理システムの構成を示す。
【0019】図示するように、本実施例に係る情報処理システムは、システムバス50〜60と、これに接続する複数のモジュール0〜7(100〜107)と、各モジュール100〜107間のバス使用権を調停するバスアービタ108と、各モジュール100〜107に接続するI/Oバス100、I/Oバスに接続するI/O装置とを有している。また、各モジュール100〜107には、単独のI/O装置のみが接続することもある。各モジュールは、システムバスインタフェース装置を内蔵し、システムバス50〜60と、図示せざるI/OバスもしくはI/O装置との間のデータ転送を仲介する。
【0020】また、図中、61はモジュール0からバスアービタ108に対してバス使用権を要求するためのバス権要求信号(BREQ0)、62はバスアービタ108からモジュール0(100)にバス使用の許可を与えるバス使用許可信号(BGRANT0)、63はモジュール0(100)からバスアービタ108に対して次のサイクルがバス使用の最終サイクルであることを伝えるラストサイクル信号(LC0)である。同様に、64はモジュール1(101)からバスアービタ108に対するバス権要求信号(BREQ1)、65はバスアービタ108からモジュール1(101)に対するバス使用許可信号(BGRANT1)、66はモジュール1(101)からバスアービタ108に対して最終サイクルであることを伝えるラストサイクル信号(LC1)、67はモジュール7(107)からバスアービタ108に対するバス権要求信号(BREQ7)、68はバスアービタ108からモジュール7(107)に対するバス使用許可信号(BGRANT7)、69はモジュール7(107)からバスアービタ108に対して最終サイクルであることを伝えるラストサイクル信号(LC7)である。
【0021】また、システムバスにおいて、50はアドレスおよびデータバス(A/D)、51はアクセスの種類を指定するコマンド信号(CMD)、52はA/D上のアドレスが有効であることを示すアドレスバリッド信号(ADRV)、53はA/D上のデータが有効であることを示すデータバリッド信号(DATAV)、54はスレーブ側がアドレスもしくはデータを確かに受け取ったことをマスタ側に伝えるトランザクションアクノリッジ信号(TACK)、55はスレーブ側のマスタ側に対するリトライ要求信号(RETRY)、56はスレーブ側からマスタ側に対するトランザクションに同期したエラー報告信号であるシンクロナスエラー(SERR)、57はトランザクションに同期しないエラー報告信号であるアシンクロナスエラー(AERR)、58はシンクロナスエラー56およびアシンクロナスエラー57と同時に出力して診断用トランザクション以外を凍結するフリーズ信号(FRZ)、59はフリーズ中の診断用トランザクションによるエラー回復が終了後フリーズ信号を解除するためのバスリセット信号(BRST)、60は各モジュールに共通に供給される同期用クロック信号(CLK)である。
【0022】次に、図2に、各モジュールの内部構成を示す。
【0023】図中、1がバス制御を担うシステムバスインタフェース装置であって、システムバス50〜60と、図示せざるI/OバスもしくはI/O装置との間に接続され、両者間のデータ転送を仲介する。
【0024】2はシステムバスインタフェース装置1内部のシステムバス制御部、3はシステムバスインタフェース装置1を介して接続されるI/OバスもしくはI/O装置を制御する制御部である。また、4は、システムバス制御部2とI/OバスもしくはI/Oの制御部3間のインタフェースを整合させる変換部、5はバスアービトレーション制御部、6はエラー制御部、7はシステムバス制御部、8はリトライ制御部、9は受けデータ用バッファ、10はアドレス変換部、11はデータ変換部、12はプロトコル変換部、13はアドレス入出力部、14はデータ入出力部、15はI/O(バス)制御部、16は出力用最終段バッファ、17は入力用初段バッファ、18はアドレス出力バッファ、19〜22はバーストライト用データバッファ、23は入力アドレスバッファ、24は入力アドレス、データチェック用バッファ、25はアービトレーション制御信号、26はアドレスバス、27はデータバス、28は制御信号、29はデータのパリティ等より転送誤りを検出するエラーチェッカーである。
【0025】以下、このような情報処理システムにおけるデータ転送動作について説明する。
【0026】まず、リードアクセス動作について説明する。本実施例では、リードアクセスを、読み出し要求側がアドレスをシステムバスに出力する起動シーケンスと、被要求側が受け取ったアドレスに応えデータをシステムバスに出力する応答シーケンスより実現する。また、本実施例においては、起動シーケンスと応答シーケンスが独立したスプリット動作によりリードアスセス動作を実現する。
【0027】本実施例においては、あるモジュールがリードアクセス動作を行う場合、まず、バス権要求信号(BREQ)によりバスアービタ108に対しバス使用権を要求する。また、このとき同時にラストサイクル信号(LC)を出力し、バスアービタ108に対し1サイクルでバス権を放棄することを予告する。
【0028】そして、バス使用許可信号(BGRANT)がアサートされたらアドレス等をシステムバスに出力し、バス使用を終了する。
【0029】図3には、モジュール0(100)からモジュール3(103)までが、リードアクセスのために、同時にBREQをアサートした場合について示した。
【0030】図示するように、モジュール0(100)からモジュール3までが同時にBREQをアサートしている。ただし、モジュール0(100)、モジュール1(101)、モジュール2、モジュール3の順でバス使用の優先順位が高いものとする。
【0031】図示するように、第3サイクル、第4サイクル、第5サイクル、第6サイクルと、バスマスタがモジュール0(100)、モジュール1(101)、モジュール2、モジュール3の順に切り換わっている。すなわち、バスマスタが1サイクルごとに切り替わってもアイドルサイクルが挿入されない。
【0032】図3に、リードアクセスを起動するシーケンスを示す。
【0033】図示するように、このシーケンスにおいて、リードアクセスのために、BREQとLCをアサートした起動モジュールは、バスアービタ108からバス使用許可信号(BGRANT)を受けるとA/D上のアドレスが有効であることを示すアドレスバリッド信号(ADRV)52を有効にし、アドレスデータバス(A/D)50にアクセス先のアドレスを出力する。また、同時に、アクセスの種類がリードアクセスであるということをコマンド信号(CMD)51に出力し、起動シーケンスを終了する。なお、リードアクセスの起動サイクルは図中第4サイクルとなっている。
【0034】次に、応答シーケンスを図5に示す。
【0035】リードアクセスのコマンドおよびアドレスを受け取ったモジュールは応答するべきデータが準備できた時点でバス権を獲得した後、A/D上のデータが有効であることを示すデータバリッド信号(DATAV)53を有効にし、アドレスおよびデータバス(A/D)50に応答データを出力する。また、同時に、アクセスの種類がリード応答アクセスであるということをコマンド信号(CMD)51に出力する。応答サイクルは、図中第7サイクルである。
【0036】なお、ここでバーストリード時のリードアクセスの応答シーケンスを図5に示しておく。図中、応答サイクルは第5から第8サイクルである。
【0037】以上のように、本実施例においては、従来のようなウエイト信号等を用いずに、各モジュールの受けデータ用バッファ(図1、9)が、いつでもデータを取り込み可能と仮定し、バス権獲得後は、転送を必ず1データもしくは1アドレスあたり1サイクルで行い、バス占有時間を減らし、バス使用効率を向上させている。
【0038】なお、ライトアクセスのシーケンスにおいても、図7に示すように、アドレス転送、データ転送をともに1サイクルずつで終了させることができる。アドレス等を転送し、ライトアクセスを起動する起動サイクルが第4サイクル、データ等を転送する応答サイクルが第5サイクルである。
【0039】また、バーストライト時のシーケンスにおいても、図8に示すように、転送サイクルを必ず1データもしくはアドレスあたり1サイクルで行うことができる。図8中、アドレスを転送する起動サイクルが第3サイクル、これに応え4つのデータを転送する応答サイクルが第4から第7サイクルである。
【0040】さて、前述したように、各モジュールの受けデータ用バッファ(図1、9)が、いつでもデータを取り込み可能と仮定し、バス権獲得後は、転送サイクルを必ず1データもしくはアドレスあたり1サイクルで行うようにしたが、バッファの容量にも限りがあるため連続でライトアクセス等が行われるとバッファがオーバフローしデータを受けきれなくなる場合が有りえる。
【0041】そこで、本実施例では、スレーブ側がアドレスもしくはデータを確かに受け取ったことをマスタ側に伝えるトランザクションアクノリッジ信号(TACK)54、スレーブ側がマスタ側に再送を要求するリトライ要求信号(RETRY)55、スレーブ側がマスタ側にエラーの発生をトランザクションに同期して報告するシンクロナスエラー(SERR)56を設けた。また、これらの信号は、必ず、マスタ側よりの転送サイクルの2サイクル後にスレーブ側が出力することとし、そのマスタ側よりのトランザクションが成功したか否かをマスタ側が認識できるようにした。
【0042】また、各モジュールはトランザクションの起動をかけられた時点で、バッファが当該トランザクションによってオーバフローするか否かを判別することができるので、スレーブ側モジュールのリトライ要求信号(RETRY)55のアサートはトランザクションの先頭のサイクルに対してのみ行う。なお、バーストライトもしくはバーストリード時には、トランザクションの先頭のサイクルでCMDにバースト転送量の情報を含めるので、この場合も、各モジュールはトランザクションの起動をかけられた時点で、バッファが当該トランザクションによってオーバフローするか否かを判別することができる。
【0043】リードアクセスに対するリトライのシーケンス例を図9に示す。
【0044】図示した例では、1回目の起動サイクル(第4サイクル)に対して、第6サイクルにスレーブからRETRYをアサートし、これに対しマスタが第11サイクルで再度起動サイクルを実行しリトライを成功させている。
【0045】次に、転送エラーが起こった場合のシーケンス例を図10に示す。
【0046】図示した例は、バーストライトアクセスの2つめのデータ転送サイクル(第6サイクル)でパリディエラーが起こった場合で、スレーブ側からマスタ側に対するトランザクションに同期したエラー報告信号であるシンクロナスエラー(SERR)56が、パリディエラーが起こったサイクルの2サイクル後(第8サイクル)にスレーブ側より出力されている。また、スレーブ側モジュールは、エラー報告をおこなうのと同時に、フリーズ信号(FRZ)58によりバスを凍結する。一方、シンクロナスエラー(SERR)56がアサートされると、マスター側は、シンクロナスエラー(SERR)56がアサートされタイミングと、記憶しておいた過去に実行した各サイクルについての情報より、エラー発生サイクル、エラーアドレスなどを求め、ロギング情報として保持する。
【0047】また、シンクロナスエラー(SERR)56がアサートされると、いずれかのモジュールに接続したプロセッサ等、エラー回復処理を担う所定の装置がマスター側のモジュールが保持したエラー発生サイクル、エラーアドレスなどのロギング情報をもとにエラーを回復(第9サイクルから第18サイクルの間のどこかのタイミング)した後、バスリセット信号(BRST)59によりフリーズを解除し、通常のトランザクションをリスタートさせる(第24サイクル以降)。
【0048】このように、本実施例においては、マスタ側は、トランザクションに完全に同期したエラー報告を受けるので、どのサイクルでエラーが起こったかという情報までロギングすることができ、その後のエラーの解析、エラーの回復処理を容易にすることができる。
【0049】ところで、次に、このようなプロトコルを有するシステムバスを用いて、複数のモジュールに対して同時にライトを行う放送型トランザクションであるブロードキャストを行う場合について説明する。
【0050】このような放送型トランザクションにおいては、同時に複数モジュールに対してライトすることが必須であるため、一部のモジュールのみがバッファのオバーフローを起こしライトできたモジュールとそうでないモジュールが生じてしまう場合が有りえる。
【0051】そこで、本実施例においては、ブロードキャスト時には、マスタは必ず転送サイクルの2サイクル後までバス権を保持したままで待ち、リトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56がないかを確認するようにする。
【0052】また、ここで、トランザクションアクノリッジ信号(TACK)54、リトライ要求信号(RETRY)55、シンクロナスエラー報告(SERR)56が、複数のモジュールによって同時にアサートする可能性があるため、ワイヤードOR信号として準備しておく。そして、マスタは、リトライ要求があればバス権を保持したままでもう一度同じアクセスサイクルを実行するようにする。一方、転送を受け取った各スレ−ブも、必ず転送サイクルの2サイクル後まで、転送されたデータの処理を開始せずに保持したままで待ち、他のスレ−ブよりのリトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56がないかを確認し、リトライ要求信号(RETRY)55がないか、シンクロナスエラー報告(SERR)56があった場合には、受け取ったデータを廃棄する。
【0053】ブロードキャストアクセス動作時のシーケンス例を図11、図12に示す。
【0054】図11は、1度のブロードキャストアクセスで成功した例で、図12はブロードキャストアクセスで成功した例を示している。
【0055】図11に示す例では、転送サイクルの2サイクル後までバス権を保持したままで待っても、リトライ要求信号(RETRY)55、シンクロナスエラー報告(SERR)56がない場合、マスタは、LCを発行し、バス権を手放している。
【0056】一方、図12に示す例では、第3サイクルおよび第7サイクルでマスタが起動をかけたブロードキャストアクセスに対して第5、第9サイクルでRETRYがアサートされている。マスタは、各RRETRYのアサートに対して、第7、第11サイクルでリトライの起動をかけ、3回目のリトライに対しては第13サイクルでRRETRYがアサートされず、最終転送サイクルの2サイクル後の第14サイクルまでにエラー報告もなかったことを確認してLCを発行しバス権を手放してトランザクションを終了している。
【0057】ここで、図13に、ブロードキャストアクセスを行うマスタの実行する手順を示しておく。図示するように、マスタは、150で処理を開始後、151で全モジュールを対象とした放送型のライトアクセスを実行する。そして、152で151にたいするリトライ要求があるかどうかを判定し、あれば151にもどり全モジュールを対象とした放送型のライトアクセスを再実行する。152で151にたいするリトライ要求がなければ153で2サイクル待って全スレーブがエラーなくデータを受け取ったかどうかを確認し、154でエラー報告を受ければ155に遷移してエラー処理を行い、エラー報告がなければ156で終了する。
【0058】なお、連続ライトアクセスを受けるモジュ−ルが、階層の異なるバス間のプロトコル変換を行うバスコンバ−タである場合には、当該モジュ−ルは、最後のサイクルのデ−タまでバッファ内に受け取ったことを確認してから異なる階層のバスへの転送を開始するようにする。
【0059】ところで、前述したように、リトライ要求が返ってくるサイクルは起動サイクルの2サイクル後となるため、図14に示すように、同一モジュールから特定のモジュールに対して連続してライトアクセス(第3および第5サイクルで起動)を行うような場合、バスインタフェース装置の都合で1番目のライトアクセスがバッファのオーバフロー等により受付けられなかったのにもかかわらず、2番目のライトアクセスが引き続きマスタ側より行われる。そして、この2番目のライトアクセスのみが受け付けられる可能性がある。すなわち、アクセスの順序が保証されない場合が生じえる。
【0060】そこで、本実施例においては、同一モジュールから特定のモジュールに対して連続ライトアクセスを行うような場合は、起動をかけるバスインタフェース装置において、連続ライトの場合は、ライトアクセス終了後は必ず2サイクル待って、リトライ要求が返ってこないことを確認した後、次のライトアクセスを起動するようにする。
【0061】図15に同一モジュールから特定のモジュールに対して連続ライトアクセスを行う場合のシーケンス例を示す。
【0062】図示した例では、マスタは第4サイクルで1度目のライトアクセスを終了した後に、第5サイクルにリトライ要求がアサートされないことを確認した後、第7サイクルに2番目のアクセスを起動している。
【0063】なお、本実施例において、リトライ要求、アクノリッジ、エラー報告を2サイクル後に行っている理由は、システムバスの負荷を極力低減し、転送の同期用クロックであるCLKの周波数を高くすることを可能とするために、エラーチェッカー(図1、29)等を直接システムバスに接続しないことに起因するものである。
【0064】以上、説明してきたように、本実施例に係る情報処理システムによれば、相手モジュールのデータ受け付けの可否を確認するためのレディ制御などのハンドシェイクを行わず、また、データ転送元が転送先であるスレーブのアクノリッジ信号を確認することなしに転送サイクルを終了するので、バスの使用効率を向上することができると共に、アクセス速度を向上することができる。
【0065】また、エラー処理に関しては、トランザクションの各々のサイクルに同期したエラー報告を行うので、エラー報告をうけたマスタモジュールが、エラーが発生したサイクルの個所まで詳細にロギングをとることができ、エラー発生後の回復処理を容易にすることができる。
【0066】
【発明の効果】以上のように、本発明によれば、データ転送のオーバヘッドを低減することにより、バス使用効率の向上を図ることのできるバスの制御方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係る情報処理システムの構成を示すブロック図である。
【図2】システムバスインタフェース装置の構成を示すブロック図である。
【図3】リードアクセスのためのバス権要求が競合した場合のシーケンスを示すタイムチャートである。
【図4】リードアクセスの起動シーケンスを示すタイムチャートである。
【図5】リードアクセスの応答シーケンスを示すタイムチャートである。
【図6】バースト転送によるリードアクセスの起動シーケンスを示すタイムチャートである。
【図7】ライトアクセスのシーケンスを示すタイムチャートである。
【図8】バースト転送によるライトアクセスのシーケンスを示すタイムチャートである。
【図9】リードアクセスのリトライシーケンスを示すタイムチャートである。
【図10】転送エラー発生時のシーケンスを示すタイムチャートである。
【図11】ブロードキャスアクセス時のシーケンスを示すタイムチャートである。
【図12】ブロードキャスアクセス時のリトライシーケンスを示すタイムチャートである。
【図13】ブロードキャスアクセス時にマスタが行う手順を示すフローチャートである。
【図14】通常のライトアクセスと同様の連続ライトアクセスを行った場合のリトライシーケンスを示すタイムチャートである。
【図15】連続ライトアクセスのシーケンスを示すタイムチャートである。
【図16】従来のバス制御技術によるライトアクセスのシーケンスを示すタイミングチャートである。
【符号の説明】
1・・・システムバスインタフェース装置
2・・・システムバス制御部
3・・・制御部
4・・・変換部
5・・・バスアービトレーション制御部
6・・・エラー制御部
7・・・システムバス制御部
8・・・リトライ制御部
9・・・受けデータ用バッファ
10・・・アドレス変換部
11・・・データ変換部
12・・・プロトコル変換部
13・・・アドレス入出力部
14・・・データ入出力部
15・・・I/O(バス)制御部
16・・・出力用最終段バッファ
17・・・入力用初段バッファ
18・・・アドレス出力バッファ
19、20、21、22・・・バーストライト用データバッファ
23・・・入力アドレスバッファ
24・・・入力アドレス、データチェック用バッファ
25・・・アービトレーション制御信号
26・・・アドレスバス
27・・・データバス
28・・・制御信号
29・・・エラーチェッカー
50・・・データバス(A/D)
51・・・コマンド信号(CMD)
52・・・アドレスバリッド信号(ADRV)
53・・・データバリッド信号(DATAV)
54・・・トランザクションアクノリッジ信号(TACK)
55・・・リトライ要求信号(RETRY)
56・・・シンクロナスエラー(SERR)
57・・・アシンクロナスエラー(AERR)
58・・・フリーズ信号(FRZ)
59・・・バスリセット信号(BRST)
60・・・同期用クロック信号(CLK)
【特許請求の範囲】
【請求項1】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの転送の成否を確認することを特徴とするバス制御方法。
【請求項2】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかったモジュ−ルは、転送の再実行を要求するリトライ要求を、受付けることのできなかった転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルに実行した転送を再度実行することを特徴とするバス制御方法。
【請求項3】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータに転送誤りがあった場合に、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告より転送誤りが発生した転送の内容を確認することを特徴とするバス制御方法。
【請求項4】請求項2記載のバス制御方法であって、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかった前記モジュ−ルは、前記マスタが前記転送サイクルを連続して実行した場合には、前記マスタが連続して実行した転送サイクルのうちの先頭の転送サイクルから所定数後のサイクルにおいてのみ、前記リトライ要求を他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルから連続して実行した転送を再度実行することを特徴とするバス制御方法。
【請求項5】請求項3記載のバス制御方法であって、エラ−回復処理を実行するエラ−処理手段を備え、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、前記エラ−報告と同時に、診断用のトランザクション以外のバス上のトランザクションを凍結するフリーズ信号を他の全てのモジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告の送出タイミングより、転送誤りが発生した転送サイクルおよび転送アドレスについての情報を求め、ロギング情報として保持すると共にエラ−回復処理の実行を前記エラ−処理手段に送出し、前記エラ−処理手段は、前記ロギング情報をもとにエラーを回復した後、バス上の通常のトランザクションを再開させるバスリセット信号を他の各モジュ−ルに送出することを特徴とするバス制御方法。
【請求項6】請求項1記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのアクノレッジ報告を確認するまで、前記所定数のサイクル、バスの使用権を保持し、当該転送サイクルに対するスレ−ブよりのアクノレッジ報告を確認した後に次の転送サイクルを実行することを特徴とするバス制御方法。
【請求項7】請求項2記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのリトライ要求の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、リトライ要求があった場合には、当該転送サイクルで実行した転送の再実行を、次の転送サイクルの実行に優先して実行することを特徴とするバス制御方法。
【請求項8】請求項3記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのエラ−報告の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、エラ−報告のないことを確認した後に、次の転送サイクルを実行することを特徴とするバス制御方法。
【請求項9】請求項2記載のバス制御方法であって、スレ−ブとして、転送誤りのあるアドレスもしくはデータを受け取った前記モジュ−ルは、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、前記マスタは、複数のスレーブに対して同時にデータの書き込みのための同報転送を行う場合には、当該転送を実行する転送サイクルに対する各スレ−ブよりのエラ−報告およびリトライ要求の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、いずれかのスレ−ブからリトライ要求があった場合には、全てのスレーブに対する同報転送を再度実行し、いずれかのスレ−ブからエラ−報告があった場合には所定のエラ−回復処理を実行し、各スレ−ブは、前記同報転送時には、マスタよりのデータの転送を受け取った後、当該転送を受け取った転送サイクルに対する他のスレ−ブよりのリトライ要求およびエラー報告の送出の有無を確認するまで、前記所定数のサイクル、転送されたデータを保持し、いずれかのスレ−ブからのリトライ要求もしくはエラ−報告の送出があった場合には、保持したデータを廃棄することを特徴とするバス制御方法。
【請求項1】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータについての転送サイクルのそれぞれに対して、受領を報告するアクノレッジ報告を、対応する転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、アクノレッジ報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたアクノレッジ報告より実行した転送サイクルの転送の成否を確認することを特徴とするバス制御方法。
【請求項2】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかったモジュ−ルは、転送の再実行を要求するリトライ要求を、受付けることのできなかった転送サイクルから所定数後のサイクルにおいて他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルに実行した転送を再度実行することを特徴とするバス制御方法。
【請求項3】バスと、バスに接続された複数のモジュールを有する情報処理システムにおいて、バスの使用権を獲得したモジュ−ル(マスタ)が前記バスを制御して転送先のモジュ−ル(スレ−ブ)にアドレスおよびデータを、各モジュ−ルに共通のクロックに同期して転送するバス制御方法であって、前記マスタは、バスの使用権を獲得したらアドレスもしくはデータをスレ−ブに転送する転送サイクルを実行してバスの使用権を放棄し、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、受け取ったアドレスもしくはデータに転送誤りがあった場合に、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告より転送誤りが発生した転送の内容を確認することを特徴とするバス制御方法。
【請求項4】請求項2記載のバス制御方法であって、スレ−ブでありながら、転送されたアドレスもしくはデータを受け付けることができなかった前記モジュ−ルは、前記マスタが前記転送サイクルを連続して実行した場合には、前記マスタが連続して実行した転送サイクルのうちの先頭の転送サイクルから所定数後のサイクルにおいてのみ、前記リトライ要求を他の全モジュ−ルに送出し、リトライ要求が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、前記所定数前のサイクルから連続して実行した転送を再度実行することを特徴とするバス制御方法。
【請求項5】請求項3記載のバス制御方法であって、エラ−回復処理を実行するエラ−処理手段を備え、スレ−ブとして、転送されたアドレスもしくはデータを受け取った前記モジュ−ルは、前記エラ−報告と同時に、診断用のトランザクション以外のバス上のトランザクションを凍結するフリーズ信号を他の全てのモジュ−ルに送出し、エラ−報告が送出されたサイクルより前記所定数前のサイクルにマスタとして転送を実行したモジュ−ルは、当該送出されたエラ−報告の送出タイミングより、転送誤りが発生した転送サイクルおよび転送アドレスについての情報を求め、ロギング情報として保持すると共にエラ−回復処理の実行を前記エラ−処理手段に送出し、前記エラ−処理手段は、前記ロギング情報をもとにエラーを回復した後、バス上の通常のトランザクションを再開させるバスリセット信号を他の各モジュ−ルに送出することを特徴とするバス制御方法。
【請求項6】請求項1記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのアクノレッジ報告を確認するまで、前記所定数のサイクル、バスの使用権を保持し、当該転送サイクルに対するスレ−ブよりのアクノレッジ報告を確認した後に次の転送サイクルを実行することを特徴とするバス制御方法。
【請求項7】請求項2記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのリトライ要求の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、リトライ要求があった場合には、当該転送サイクルで実行した転送の再実行を、次の転送サイクルの実行に優先して実行することを特徴とするバス制御方法。
【請求項8】請求項3記載のバス制御方法であって、前記マスタは、アドレスもしくはデータをスレ−ブに連続して転送する場合には、転送サイクルの実行後に、当該転送サイクルに対するスレ−ブよりのエラ−報告の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、エラ−報告のないことを確認した後に、次の転送サイクルを実行することを特徴とするバス制御方法。
【請求項9】請求項2記載のバス制御方法であって、スレ−ブとして、転送誤りのあるアドレスもしくはデータを受け取った前記モジュ−ルは、転送誤りの発生を報告するエラ−報告を、前記転送誤りがあったサイクルから所定数後のサイクルにおいて、他の全モジュ−ルに送出し、前記マスタは、複数のスレーブに対して同時にデータの書き込みのための同報転送を行う場合には、当該転送を実行する転送サイクルに対する各スレ−ブよりのエラ−報告およびリトライ要求の有無を確認するまで、前記所定数のサイクル、バスの使用権を保持し、いずれかのスレ−ブからリトライ要求があった場合には、全てのスレーブに対する同報転送を再度実行し、いずれかのスレ−ブからエラ−報告があった場合には所定のエラ−回復処理を実行し、各スレ−ブは、前記同報転送時には、マスタよりのデータの転送を受け取った後、当該転送を受け取った転送サイクルに対する他のスレ−ブよりのリトライ要求およびエラー報告の送出の有無を確認するまで、前記所定数のサイクル、転送されたデータを保持し、いずれかのスレ−ブからのリトライ要求もしくはエラ−報告の送出があった場合には、保持したデータを廃棄することを特徴とするバス制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図11】
【図14】
【図16】
【図10】
【図12】
【図13】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図11】
【図14】
【図16】
【図10】
【図12】
【図13】
【図15】
【公開番号】特開平5−324544
【公開日】平成5年(1993)12月7日
【国際特許分類】
【出願番号】特願平4−123569
【出願日】平成4年(1992)5月15日
【出願人】(000005108)株式会社日立製作所 (27,607)
【公開日】平成5年(1993)12月7日
【国際特許分類】
【出願日】平成4年(1992)5月15日
【出願人】(000005108)株式会社日立製作所 (27,607)
[ Back to top ]