(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムにおけるバス・エージェント間データ転送方法であって、
第１のバス・エージェントによって、該第１のバス・エージェントから第２のバス・エージェントへのデータ転送を制御する制御信号を第１のバス・エージェントから第２のバス・エージェントへ前記コンピュータ・システムのバス・クロックによりクロック動作する第１の転送プロトコルで転送することと、
第１のバス・エージェントによって、前記制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ第２の転送プロトコルで転送すること
とを含み、
該第２の転送プロトコルによるデータの転送は前記第２のバス・エージェントが前記バス・クロックと非同期に前記データをサンプリングすることを可能にさせるものであり、前記データは前記バス・クロックの１つの周期内で前記第１のバス・エージェントによって生成された複数のストローブ信号に同期しており、前記各ストローブ信号は個別ストローブ線路上にあり、各ストローブ信号は転送されるデータの個々のチャンクを前記第２のバス・エージェントがラッチするために使用されるものである、
ことを特徴とする方法。
【請求項２】
コンピュータ・システムにおけるバス・エージェント間データ転送装置であって、
第１のバス・エージェントから第２のバス・エージェントへのデータ転送を制御する制御信号を第１のバス・エージェントから第２のバス・エージェントへ前記コンピュータ・システムのバス・クロックによりクロック動作する第１の転送プロトコルで転送するよう動作可能なバスを備え、
前記バスはさらに、前記バス・クロックの１つの周期内で複数のストローブ信号を前記第１のバス・エージェントが生成することによって、前記制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ第２の転送プロトコルで転送するよう動作可能であり、前記ストローブ信号は前記第２のバス・エージェントが前記バス・クロックと非同期に前記データをサンプリングすることを可能にさせるものであり、前記データは複数のストローブ信号に同期され、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は転送されるデータの個別のチャンクを前記第２のバス・エージェントがラッチするために使用されることを特徴とする装置。
【請求項３】
複数のバス・エージェントのうちの第１のバス・エージェントから複数のバス・エージェントのうちの第２のバス・エージェントへのデータ転送を制御する１以上の制御信号を、前記第１のバス・エージェントによって、該第１のバス・エージェントから前記第２のバス・エージェントへバス・クロックに基づく共通クロック・プロトコルに従って転送することと、
前記１以上の制御信号に対応するデータを、前記第１のバス・エージェントによって、該第１のバス・エージェントから前記第２のバス・エージェントへソース同期データ転送プロトコルに従って転送することであって、前記バス・クロックと非同期に前記データを前記第２のバス・エージェントがサンプリングすることを可能にさせるために、前記バス・クロックの１つの周期内で複数のストローブ信号を前記第１のバス・エージェントが生成することを含んでおり、前記データは前記複数のストローブ信号に同期し、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は転送されるデータの個別のチャンクを前記第２のバス・エージェントがラッチするために使用されることとを含むことを特徴とするバス・エージェント間データ転送方法。
【請求項４】
第１のバス・エージェントによって、バス・トランザクションの所定のフェーズを示す制御信号を第１のバス・エージェントから第２のバス・エージェントへバス・クロックによりクロック動作する第１の転送プロトコルに従って転送することと、
第１のバス・エージェントによって、前記バス・トランザクションに関連するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ第１のバス・エージェントによって前記バス・クロックの１つの周期内で複数のストローブ信号を生成する第２の転送プロトコルに従って、転送することであって、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記複数のストローブ信号により前記第２のバス・エージェントが前記バス・クロックと非同期にデータをサンプリングすることを可能にすることとを含むことを特徴とするバス・エージェント間データ転送方法。
【請求項５】
コンピュータ・システムの第１のバス・エージェントによって、該第１のバス・エージェントから前記コンピュータ・システムの第２のバス・エージェントへのデータ転送を制御する制御信号を該第１のエージェントから前記第２のエージェントへ前記コンピュータ・システムのバス・クロックのレートにて転送することと、
前記制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ前記バス・クロックのレートの２倍のレートで転送することであって、このデータの転送が、
前記第１のバス・エージェントによって、前記バス・クロックの１つの周期内で第１のストローブと第２のストローブを生成するとともに、該第１のストローブを第１のストローブ線路上で、前記第２のストローブを第２のストローブ線路上で転送することと、
前記第２のバス・エージェントが、第１のデータ・チャンクを前記第１のストローブのタイミングでラッチすることと、
前記第２のバス・エージェントが、第２のデータ・チャンクを前記第２のストローブのタイミングでラッチすることと
を含むことを特徴とするバス・エージェント間データ転送方法。
【請求項６】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに接続した第１のバス・エージェント及び第２のバス・エージェントとを備え、
前記第１のバス・エージェントが制御信号を前記第２のバス・エージェントへ前記バス・クロックのレートで転送し、
前記第１のバス・エージェントがデータ信号の個別のチャンクを前記第２のバス・エージェントへ前記バス・クロックの複数倍のレートで転送するため、前記バス・クロックの１つの周期内で前記第１のバス・エージェントが複数のストローブ信号を生成し、前記データ信号の個別のチャンクは該生成された複数のストローブ信号に同期され、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は前記データ信号の個別のチャンクを前記第２のバス・エージェントがラッチするために使用されることを特徴とするコンピュータ・システム。
【請求項７】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・エージェントに転送するバス・コントローラを備え、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて前記バス・エージェントに転送することであって前記第２群の信号のうちの少なくとも２つの信号をサンプリングするために前記バス・コントローラが前記バス・クロックの１つの周期内で少なくとも２つのストローブ信号を生成することを含んでおり、前記第２群の信号のうちの少なくとも２つの信号は前記少なくとも２つのストローブ信号に同期しており、前記少なくとも２つのストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は前記第２群の信号のうちの少なくとも２つの信号のそれぞれを前記バス・エージェントがラッチするために使用され、前記第２群の信号のうちの少なくとも２つの信号は共通クロック周波数の少なくとも２倍のレートで転送されることを特徴とするバス・エージェント間データ転送装置。
【請求項８】
第１のバス・エージェントから第２のバス・エージェントへのデータ転送を制御するとともに、バス・クロックに同期した複数の制御信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラであって、前記複数の制御信号をバス・トランザクションの複数のフェーズ中に通信する前記バス・コントローラと、
前記バス・コントローラは第２群の信号を、該第２群の信号の２つのストローブ信号を生成することを含む、ソース同期プロトコルを用いて転送し、前記第２群の２つの信号は前記２つのストローブ信号に同期しており、前記２つのストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群の２つの信号は前記バス・トランザクションの前記複数のフェーズの中のデータ・フェーズでのみ転送され、前記第２群の２つの信号を前記共通クロック周波数の２倍で転送し、前記２つのストローブ信号は前記バス・クロックのバス・クロック周期のほぼ２５％点とほぼ７５％点にてストローブ遷移をもたらすよう整列されており、前記バス・コントローラが前記バス・クロックのほぼ立ち上がり点と前記バス・クロック周期のほぼ５０％点で前記第２群の信号を転送し、
前記複数の制御信号は前記第２群の信号を介して有効情報が送られたことを前記第２のバス・エージェントに示すための少なくとも一つの制御信号を含むことを特徴とするバス・エージェント間データ転送装置。
【請求項９】
バス・エージェントへのデータ転送を制御するとともにバス・クロックに同期した複数の制御信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラであって、前記複数の制御信号をバス・トランザクションの複数のフェーズ中に通信する前記バス・コントローラを備え、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号は前記バス・クロックの１つの周期内で前記バス・コントローラが生成する複数のストローブ信号に同期させてあり、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号が前記第２群の信号の個別のチャンクを前記バス・エージェントがラッチするために使用され、前記第２群の信号は前記バス・トランザクションの前記複数のフェーズの内のデータ・フェーズ中にのみ転送し、前記第２群の信号は前記共通クロック周波数の倍数のレートで転送し、
前記複数の制御信号が前記ソース同期プロトコルを用いて有効情報が転送されたことを前記バス・エージェントに示すため共通クロック・プロトコルで転送される少なくとも一つの制御信号を含み、この少なくとも一つの制御信号は前記有効情報が転送される前記データ・フェーズ中に共通クロック・プロトコルを用いてアサートされることを特徴とするバス・エージェント間データ転送装置。
【請求項１０】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・トランザクションの複数のフェーズ中に転送するバス・コントローラを備え、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号が前記複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は個別のＮ個のデータ要素を受信側エージェントがラッチするために使用され、前記第２群の信号は前記バス・トランザクションの前記複数のフェーズのデータ・フェーズにのみ転送され、前記第２群の信号は前記共通クロック周波数のＮ倍のレートで転送されるものであり、前記第２群の信号は前記共通クロック周波数の１クロック周期に等しい信号転送時間期間中にて転送されるＮ個のデータ要素を有し、前記複数のストローブ信号は前記Ｎ個のデータ要素それぞれのほぼ中心点にてストローブ遷移をもたらすよう整列されていることを特徴とするバス・エージェント間データ転送装置。
【請求項１１】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・トランザクションの複数のフェーズ中に転送するバス・コントローラを備え、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号は複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群の信号は前記バス・トランザクションの前記複数のフェーズの内のデータ・フェーズ中にのみ転送され、前記第２群の信号は前記共通クロック周波数の２倍で転送され、前記第２群の信号は前記共通クロック周波数の１クロック周期に等しい信号転送時間期間中に転送する２つのデータ要素を有し、第１のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ始期に転送し、第２のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ５０％点で転送し、前記複数のストローブ信号のうちの第１のストローブ信号は前記信号転送時間期間のほぼ２５％点にて遷移させ、前記複数のストローブ信号のうちの第２のストローブ信号は前記信号転送時間期間のほぼ７５％点にて遷移させ、
前記複数の制御信号が前記第２群の信号を介して有効情報が転送されたことを示す少なくとも１つの制御信号を含むことを特徴とするバス・エージェント間データ転送装置。
【請求項１２】
バス・コントローラを介してバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送することと、
前記バス・コントローラを介して第２群の信号をソース同期プロトコルを用いて転送することであって、前記第２群の信号を前記バス・クロックの１つの周期内で前記バス・コントローラが生成する複数のストローブ信号に同期させ、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記複数のストローブ信号に応答して受信側エージェントが前記第２群の信号をラッチすることとを含み、
前記第２群の信号を前記共通クロック周波数の倍数にて転送し、前記複数のストローブ信号が相補的波形を有する１以上のストローブ信号対を含むことを特徴とする転送方法。
【請求項１３】
バス・コントローラを結合した制御バスを介してバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送することであって、前記第１群の信号がバス・トランザクションの複数のフェーズにおいて通信される複数の制御信号を含み、
前記バス・コントローラを結合したデータバスを介してデータ信号群をソース同期プロトコルを用いて転送することであって、前記データ信号群は複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記データ信号群は前記バス・トランザクションの前記複数のフェーズの内の所定のフェーズ中に転送され、前記データ信号群は前記共通クロック周波数の２倍で転送され、前記複数のストローブ信号は前記バス・クロックのバス・クロック周期のほぼ２５％点とほぼ７５％点でストローブ遷移をもたらすよう整列させてあり、前記バス・コントローラは前記データ信号群を前記バス・クロックのほぼ立ち上がり点と前記バス・クロック周期のほぼ５０％点で転送することとを含み、
前記複数の制御信号が、前記共通クロック・プロトコルで前記制御バスと前記データバスとに結合したターゲットへ転送されて前記ソース同期プロトコルを用いて有効情報が転送されたことを示す少なくとも一つの制御信号を含むことを特徴とする転送方法。
【請求項１４】
バス・コントローラを介してバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送することであって、前記第１群の信号がバス・トランザクションの複数のフェーズ中に通信される複数の制御信号を含み、
前記バス・コントローラを介して第２群の信号をソース同期プロトコルを用いて転送することであって、前記第２群の信号は前記バス・クロックの１つの周期内で前記バス・コントローラが生成する複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号が個別データ・チャンクを受信側エージェントがラッチする際に使用され、前記第２群の信号は前記バス・トランザクションの前記複数フェーズのデータ・フェーズ中にのみ転送され、前記第２群の信号は前記共通クロック周波数の倍数で転送することとを含み、
前記複数の制御信号が前記共通クロック・プロトコルで転送されてソース同期プロトコルを用いて有効情報が転送されたことを示す少なくとも１つの制御信号を含み、この少なくとも一つの制御信号を前記有効情報が転送されるフェーズ中にアサートすることを特徴とする転送方法。
【請求項１５】
バス・コントローラを介してバス・クロックに同期した第１群の信号であってバス・トランザクションの複数のフェーズ中に通信される複数の制御信号を含む第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送することと、
前記バス・コントローラを介して第２群の信号をソース同期プロトコルを用いて転送することとを含む転送方法であって、
前記第２群の信号が複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は個別のＮ個のデータ要素を受信側エージェントがラッチする際に使用され、前記第２群の信号は前記バス・トランザクションの前記複数のフェーズの内のデータ・フェーズ中にのみ転送され、前記第２群の信号は前記共通クロック周波数のＮ倍で転送され、前記第２群の信号は前記バス・クロックの１クロック周期に等しい信号転送時間期間にて転送されるＮ個のデータ要素を有し、前記複数のストローブ信号は前記Ｎ個のデータ要素のそれぞれのほぼ中心点にてストローブ遷移をもたらすよう整列されていることを特徴とする転送方法。
【請求項１６】
バス・コントローラを介してバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・エージェントに転送することであって、前記第１群の信号がバス・トランザクションの複数のフェーズ中に通信する複数の制御信号を含み、
前記バス・コントローラを介して第２群の信号をソース同期プロトコルを用いて前記バス・エージェントに転送することであって、前記第２群の信号は複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群の信号は前記バス・トランザクションの複数のフェーズの内のデータ・フェーズ中にのみ転送され、前記第２群の信号は前記共通クロック周波数の２倍で転送され、前記第２群の信号は前記バス・クロックの１クロック周期に等しい信号転送時間期間内に転送する二つのデータ要素を有し、第１のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ始期に転送し、第２のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ５０％点で転送し、前記複数のストローブ信号を前記信号転送時間期間のほぼ２５％点と前記信号転送時間期間のほぼ７５％点にて遷移するよう整列させたこととを含み、
前記複数の制御信号が前記ソース同期プロトコルを用いて有効情報が転送されたことを示す、共通クロック・プロトコルで転送される少なくとも１つの制御信号を含むことを特徴とする転送方法。
【請求項１７】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合したプロセッサで、バス・コントローラを含む前記プロセッサとを備え、
前記バス・コントローラが前記バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・エージェントに転送し、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて前記バス・エージェントに転送し、前記第２群の信号は前記バス・クロックの１つの周期内で前記バス・コントローラが生成する複数のストローブ信号に同期させてあり、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記複数のストローブ信号にしたがって前記バス・エージェントが前記第２群の信号をラッチするものであり、前記第２群の信号を共通クロック周波数の複数倍にて転送し、前記複数のストローブ信号が相補的波形を有する１以上のストローブ信号対を含むことを特徴とするコンピュータ・システム。
【請求項１８】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合したプロセッサであって、バス・コントローラを含むプロセッサと
を備え、
前記バス・コントローラがバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いてバス・エージェントに転送し、前記第１群の信号がバス・トランザクションの複数のフェーズ中に通信される複数の制御信号を含み、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて前記バス・エージェントに転送し、前記第２群の信号は複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群の信号を前記バス・トランザクションの前記複数のフェーズの内のデータ・フェーズにのみ転送し、前記第２群の信号を前記共通クロック周波数の２倍で転送し、前記複数のストローブ信号は前記バス・クロックのバス・クロック周期のほぼ２５％点とほぼ７５％点でストローブ遷移をもたらすよう整列させ、前記バス・コントローラが前記第２群の信号を前記バス・クロックのほぼ立ち上がり点と前記バス・クロック周期のほぼ５０％点で転送し、
前記共通クロック・プロトコルで転送される少なくとも１つの制御信号を含む前記複数の制御信号がソース同期プロトコルを用いて有効情報が転送されたことを前記バス・エージェントに示すことを特徴とするコンピュータ・システム。
【請求項１９】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合したプロセッサであって、バス・コントローラを含むプロセッサと
を備え、
前記バス・コントローラがバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送し、前記第１群の信号がバストランザクションの複数のフェーズ中に通信する複数の制御信号を含み、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号は前記バス・クロックの１つの周期内で前記バス・コントローラが生成する複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号が個別データ・チャンクを受信側エージェントがラッチするためにあり、前記第２群の信号は前記バス・トランザクションの前記複数のフェーズの内のデータ・フェーズ中にのみ転送し、前記第２群の信号は共通クロック周波数の倍数にて転送され、
前記複数の制御信号が前記ソース同期プロトコルを用いて有効情報が転送されたことを示す、共通クロック・プロトコルで転送される少なくとも１つの制御信号含み、この少なくとも一つの制御信号は前記有効情報が転送されるフェーズ中にアサートされることを特徴とするコンピュータ・システム。
【請求項２０】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合したプロセッサであって、バス・コントローラを含むプロセッサと
を備え、
前記バス・コントローラがバス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送し、前記第１群の信号はバス・トランザクションの複数のフェーズ中に通信される複数の制御信号を含み、
前記バス・コントローラは第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号は複数のストローブ信号に同期しており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号は個別のＮ個のデータ要素を受信側エージェントがラッチするためにあり、前記第２群の信号は前記バス・トランザクションの前記複数フェーズの内のデータ・フェーズ中にのみ転送され、前記第２群の信号は前記共通クロック周波数のＮ倍にて転送され、前記第２群の信号が前記バス・クロックの１クロック周期に等しい信号転送時間期間中に転送するＮ個のデータ要素を有し、前記複数のストローブ信号は前記Ｎ個のデータ要素のそれぞれのほぼ中心点にてストローブ遷移をもたらすよう整列されていることを特徴とするコンピュータ・システム。
【請求項２１】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合するプロセッサと、
前記バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラであって、前記第１群の信号がバス・トランザクションの複数のフェーズ中に通信される複数の制御信号を含む、バス・コントローラとを備え、
前記バス・コントローラが第２群の信号をソース同期プロトコルを用いて転送し、前記第２群の信号は複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群の信号は前記バス・トランザクションの複数のフェーズの内の所定のフェーズにのみ転送され、前記第２群の信号は前記共通クロック周波数の２倍で転送され、前記第２群の信号は前記バス・クロックの１クロック周期に等しい信号転送時間期間内に転送する２つのデータ要素を有し、第１のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ始期に転送し、第２のデータ要素を前記第２群の信号を介して前記信号転送時間期間のほぼ５０％点で転送し、前記複数のストローブ信号の第１のストローブ信号は前記信号転送時間期間のほぼ２５％点にて遷移させ、前記複数のストローブ信号の第２のストローブ信号は前記信号転送時間期間のほぼ７５％点にて遷移させ、
前記複数の制御信号が前記ソース同期プロトコルを用いて有効情報が転送されたことを示す、共通クロック・プロトコルで転送される少なくとも１つの制御信号を含むことを特徴とするコンピュータ・システム。
【請求項２２】
バス・コントローラであって、
複数の制御信号をバス・トランザクションの複数のフェーズのうちの幾つかにて転送する第１の複数の信号インタフェースであって、前記複数の制御信号を共通クロック・プロトコルに従い共通クロック周波数にて転送する前記第１の複数の信号インタフェースと、
複数の情報信号を前記バス・トランザクションの前記複数のフェーズのうちの１つのフェーズ中に転送する第２の複数の信号インタフェースであって、共通クロックの１つの周期において複数の情報信号の内の２つのデータをサンプリングするために、複数のストローブ信号を該共通クロックの１つの周期内で生成し、前記複数の情報信号を複数のストローブ信号と併せ転送し、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記複数の情報信号をソース同期プロトコルで転送し、前記複数のストローブ信号が相補的波形を有する１以上のストローブ信号対を含む前記第２の複数の信号インタフェースとを備えることを特徴とするバス・コントローラ。
【請求項２３】
コンピュータ・システムにおけるバス・エージェント間でのデータ転送方法であって、
第１のバス・エージェントによって、転送すべきデータに関する制御信号を第１のバス・エージェントから第２のバス・エージェントへ前記コンピュータ・システムのバス・クロックによりクロック動作する第１の転送プロトコルで転送することと、
前記第１のバス・エージェントによって、前記制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ第２の転送プロトコルで転送することであって、この転送がさらに、
前記バス・クロックと非同期にかつ該バス・クロックの１つの周期内で、前記第２のバス・エージェントがデータをサンプリングするために使用するストローブ信号を前記第１のバス・エージェントが複数生成することと、
前記データの中の複数のデータ・チャンクのそれぞれを複数の分離されたストローブ線上に生成される前記それぞれのストローブ信号に同期させ、該それぞれのストローブ信号に応答して、該複数のそれぞれのデータ・チャンクを前記第２のバス・エージェントがラッチすること
とを含む方法。
【請求項２４】
コンピュータ・システムにおけるバス・エージェント間データ転送装置であって、
転送すべきデータに関する制御信号を第１のバス・エージェントから第２のバス・エージェントへ、前記コンピュータ・システムのバス・クロックによりクロック動作する第１の転送プロトコルで、転送するよう動作可能なバスを備え、
前記バスは、さらに、
前記制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ第２の転送プロトコルで転送するよう動作可能であり、前記第２の転送プロトコルは、前記バス・クロックと非同期にかつ該バス・クロックの１つの周期内で、前記第２のバス・エージェントがデータをサンプリングするために使用するストローブ信号を前記第１のバス・エージェントが複数生成するものであり、前記データの複数のデータ・チャンクのそれぞれを複数の分離されたストローブ線上に生成される前記それぞれのストローブ信号に同期させ、該それぞれのストローブ信号に応答して、該複数のデータ・チャンクのそれぞれを前記第２のバス・エージェントがラッチする
ことを特徴とする装置。
【請求項２５】
転送すべきデータに関する１以上の制御信号を複数のバス・エージェントのうちの第１のバス・エージェントから前記複数のバス・エージェントのうちの第２のバス・エージェントへバス・クロックに基づく共通クロック・プロトコルに従って、該第１のバス・エージェントによって、転送することと、
前記第１のバス・エージェントによって、前記１以上の制御信号に対応するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへソース同期転送プロトコルで転送することであって、前記バス・クロックと非同期にかつ該バス・クロックの１つの周期内で、前記第２のバス・エージェントにデータをサンプリングさせるためのストローブ信号を前記第１のバス・エージェントが複数生成することと、前記データの複数のデータ・チャンクのそれぞれを複数の分離されたストローブ線上に生成される前記それぞれのストローブ信号に同期させ、該それぞれのストローブ信号に応答して、該複数のデータ・チャンクを前記第２のバス・エージェントにラッチさせることとを行わせるソース同期転送プロトコルで転送することと
を含む方法。
【請求項２６】
バス・トランザクションの１つのフェ−ズを示す制御信号を第１のバス・エージェントから第２のバス・エージェントへバス・クロックによりクロック動作する第１の転送プロトコルに従って、該第１のバス・エージェントによって、転送することと、
前記第１のバス・エージェントによって、前記バス・トランザクションに関連するデータを前記第１のバス・エージェントから前記第２のバス・エージェントへ、前記バス・クロックの１つの周期内で該第１のバス・エージェントによって生成される複数のストローブ信号を含む第２の転送プロトコルに従って転送することであって、前記複数のストローブ信号のそれぞれは個別ストローブ線路上に生成されるものであり、前記複数のストローブ信号により前記第２のバス・エージェントが前記バス・クロックに非同期にデータをサンプリングさせることと
を含む方法。
【請求項２７】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラを備え、
前記バス・コントローラが第２群の信号を、前記バス・クロックの１つの周期内で、該第２群の信号の少なくとも２つの信号を受信側バス・エージェントがサンプリングするための少なくとも２つのストローブ信号を前記バス・コントローラが生成するソース同期プロトコルを用いて転送し、前記第２群の信号の少なくとも２つの信号は該生成される少なくとも２つのストローブ信号に同期されており、前記少なくとも２つのストローブ信号のそれぞれは個別ストローブ線路上にあり、これらのストローブ信号に応答して前記第２群の信号の少なくとも２つの信号を前記受信側バス・エージェントがラッチして、前記第２群の信号の少なくとも２つの信号を前記共通クロック周波数の少なくとも２倍の速度にて転送することを特徴とする装置。
【請求項２８】
バス・クロックに同期した複数の転送すべき第２群の信号に関する制御信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラであって、前記複数の制御信号をバス・トランザクションの複数のフェーズ中に通信する前記バス・コントローラと、
前記バス・コントローラは前記第２群の信号を、ソース同期プロトコルを用いて転送し、前記ソース同期プロトコルは、該第２群の信号のうちの２つの信号を受信側装置がサンプリングするための２つのストローブ信号を、前記バス・コントローラが前記バス・クロックの１つの周期内で生成することを含み、前記第２群のうちの２つの信号は前記生成された２つのストローブ信号に同期されており、前記２つのストローブ信号のそれぞれは個別ストローブ線路上にあり、前記第２群のうちの２つの信号を前記バス・トランザクションの前記複数のフェーズのうちのデータ・フェーズ中にのみ転送し、前記第２群の信号のうちの２つの信号を前記共通クロック周波数の２倍で転送し、前記２つのストローブ信号は前記バス・クロックのバス・クロック周期のほぼ２５％点とほぼ７５％点にてストローブ遷移をもたらすよう整列させ、前記バス・コントローラが前記バス・クロックのほぼ立ち上がり点と前記バス・クロック周期のほぼ５０％点で前記第２群の２つの信号を転送し、
前記複数の制御信号は前記第２群のうちの２つの信号が転送されたことを前記受信側装置に示す少なくとも１つの制御信号を含むことを特徴とする装置。
【請求項２９】
バス・コントローラであって、
複数の情報信号の転送に関する複数の制御信号をバス・トランザクションの複数のフェーズのうちの幾つかのフェーズにて転送する第１の複数の信号インタフェースであって、前記複数の制御信号を共通クロック・プロトコルに従い共通クロック周波数にて転送する前記第１の複数の信号インタフェースと、
複数の情報信号を前記バス・トランザクションの前記複数のフェーズのうちの１つのフェーズ中に転送する第２の複数の信号インタフェースであって、この第２の複数の信号インターフェースは前記複数の情報信号を、ソース同期プロトコルを用いて複数のストローブ信号と併せ転送し、前記ソース同期プロトコルは、前記複数の情報信号を受信側バス・エージェントがサンプリングするための前記複数のストローブ信号を、前記第２の複数の信号インターフェースが前記共通クロックの１つの周期内で生成することを含み、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、前記複数のストローブ信号が相補的波形を有する１以上のストローブ信号対を含む、前記第２の複数の信号インタフェースとを備えることを特徴とするバス・コントローラ。
【請求項３０】
Ｎ個のフェーズを有するバス・トランザクションそれぞれのフェーズに第１の複数の信号を、第１のエージェントから第２のエージェントに、該第１のエージェントによって転送することであって、前記第１の複数の信号を共通クロック・プロトコルに従う共通クロック周波数にて転送することと、
前記第１のエージェントによって、第２の複数の信号を前記バス・トランザクションのＮ個のフェーズとは別のデータ・フェーズ中に転送することとを含み、
このデータ・フェーズ中の転送が、前記第２の複数の信号を前記第２のエージェントがサンプリングするための複数のストローブ信号を、前記第１のエージェントが前記共通・クロックの１つの周期内で生成して、前記第２の複数の信号を前記第２のエージェントに転送し、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号に応答して前記それぞれの第２群の信号を前記第２のエージェントがラッチすることを特徴とする転送方法。
【請求項３１】
コンピュータ・システムであって、
バスと、
共通クロックと、
複数のバス・トランザクションについて複数のフェーズごとに第１の複数の信号を転送し受信する第１の複数の信号インタフェースであって、前記複数の制御信号を共通クロック・プロトコルに従う前記共通クロックの周波数にて転送する前記第１の複数の信号インタフェースと、
前記複数のフェーズのデータ・フェーズ中に第２の複数の信号を転送する第２の複数の信号インタフェースであって、この第２の複数の信号インターフェースは前記第２の複数の信号を、ソース同期プロトコルを用いて複数のストローブ信号と併せ転送し、前記ソース同期プロトコルは、前記第２の複数の信号を受信側バス・エージェントがサンプリングするための前記複数のストローブ信号を、前記第２の複数の信号インタフェースが前記共通クロックの１つの周期内で生成することを含み、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にある、前記第２の複数の信号インタフェースとを備えることを特徴とするコンピュータ・システム。
【請求項３２】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送するバス・コントローラであって、前記第１群の信号が、ソース同期プロトコルを用いて第２群の信号が転送されたことを受信側装置に示す前記バス・クロックに同期した少なくとも一つの信号を含む前記バス・コントローラを備え、
前記バス・コントローラは前記第２群の信号を、ソース同期プロトコルを用いて転送し、前記ソース同期プロトコルは、前記第２群の信号を前記受信側装置がサンプリングするためのストローブ信号群を、前記バス・コントローラが前記バス・クロックの１つの周期内で生成することを含み、前記第２群の信号は前記生成されたストローブ信号群に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号に応答して前記それぞれの第２群の信号を前記受信側装置がラッチすることを特徴とする装置。
【請求項３３】
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて第１のエージェントから第２のエージェントに、該第１のエージェントによって転送することであって、前記第１群の信号が、ソース同期プロトコルを用いた、第２群の信号が転送されたことを第２のエージェントに示す前記バス・クロックに同期した少なくとも１つの信号を含んでおり、
前記第１のエージェントによって、前記第２群の信号を、前記ソース同期プロトコルを用いて第２のエージェントに転送し、このソース同期プロトコルは、前記第２群の信号を前記第２のエージェントがサンプリングするためのストローブ信号群を、前記第１のエージェントが前記バス・クロックの１つの周期内で生成することを含み、前記第２群の信号は前記ストローブ信号群に同期させてあり、前記ストローブ信号群のそれぞれのストローブ信号は個別ストローブ線路上にあり、各ストローブ信号に応答して前記それぞれの第２群の信号を前記第２のエージェントがラッチすることを特徴とする方法。
【請求項３４】
コンピュータ・システムであって、
バスと、
バス・クロックと、
前記バスに結合したプロセッサで、バス・コントローラを含む前記プロセッサとを備え、
前記バス・コントローラが前記バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送し、前記第１群の信号が、ソース同期プロトコルを用いて第２群の信号を転送したことを受信側装置に示す前記バス・クロックに同期した少なくとも１つの信号を含み、
前記バス・コントローラが前記第２群の信号を、前記ソース同期プロトコルを用いて転送し、このソース同期プロトコルは、前記第２群の信号を前記受信側装置がサンプリングするためのストローブ信号群を、前記バス・コントローラが前記バス・クロックの１つの周期内で生成することを含み、前記第２群の信号は前記生成したストローブ信号群に同期されており、前記ストローブ信号群のそれぞれのストローブ信号は個別ストローブ線路上にあり、各ストローブ信号に応答して前記それぞれの第２群の信号を前記受信側装置がラッチすることを特徴とするコンピュータ・システム。
【請求項３５】
バス・コントローラであって、
バス・クロックに同期した第１群の信号を共通クロック周波数の共通クロック・プロトコルを用いて転送する第１のバス・インタフェースと、
第２群の信号を複数のフェーズを有したバス・トランザクションの所定のフェーズで転送する第２のバス・インタフェースであって、この第２のバス・インターフェースは前記第２群の信号を、ソース同期プロトコルを用いて転送し、前記ソース同期プロトコルは、前記第２群の信号を受信側装置がサンプリングするための複数のストローブ信号を、前記第２のバス・インタフェースが前記バス・クロックの１つの周期内で生成することを含み、前記第２群の信号は前記複数のストローブ信号に同期されており、前記複数のストローブ信号のそれぞれは個別ストローブ線路上にあり、各ストローブ信号に応答して前記それぞれの第２群の信号を前記受信側装置がラッチする、ものである前記第２のバス・インタフェースとを備えることを特徴とするバス・コントローラ。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、コンピュータ・システムにおけるデータ転送の分野に関する。
【０００２】
（発明の背景）
現代のコンピュータ・システムは一般に、それぞれシステム・バスに結合された多数のエージェントを含んでいる。一般に、エージェントは、各エージェントをバスに結合する多数のピンを備えた集積回路パッケージである。エージェントには、たとえば、プロセッサ、メモリ・デバイス、大容量記憶デバイスなどが含まれることがある。コンピュータ・システムが適切に動作するために、エージェントはバスを介して互いに有効に通信することができなければならない。
【０００３】
既存のコンピュータ・システムは一般に、データをコンポーネントまたはエージェントの間で事前に定めたクロッキング・スキームに従って転送する。システム・バス・クロックは一般に、送信デバイスから受信デバイスへデータをクロックする。したがって、データを１つのデバイスから別のデバイスへ転送するには、システム・バス・クロックの少なくとも１つの完全なクロック・サイクルを要する。
【０００４】
しかし、データ転送速度を上げるために、データをソース同期式で転送することもできる。ソース同期転送では、ストローブがデータ転送と共に送信される。このストローブは、一般にシステム・バス・クロックの周期よりも短い時間周期で、データを受信デバイス内にラッチする。
【０００５】
ソース同期ラッチ・プロトコルは、より大きい周波数でバスを動作させる。たとえば、共通クロック転送では１チャンクを駆動するのに要する時間で、バス上では２チャンクのデータを駆動することができる。
【０００６】
結果として、転送される信号数に対応して増加することのなく、データを転送する帯域幅を増大させるために、ソース同期プロトコルを使用してデータを転送し、共通クロック・プロトコルを使用して制御信号を転送するシステムを提供することが有利となる。
【０００７】
（発明の概要）
本発明は、コンピュータ・システムにおいてバス・エージェントの間でデータを転送する方法および装置を提供する。本発明は、制御信号を第１のエージェントから第２のエージェントへ、第１の転送プロトコルを介して転送すること、および、この制御信号に対応するデータを第１のエージェントから第２のエージェントへ、第２の転送プロトコルを介して転送することを含む。
【０００８】
（詳細な説明）
コンピュータ・システムにおいて、共通クロック・プロトコルを介して制御信号を転送し、ソース同期プロトコルを介してデータを転送する方法および装置を説明する。制御信号の転送は、システム・バス・クロックによってクロックされ、データの移行は、データ・ソースによって転送されたストローブによってクロックされる。
【０００９】
図１は、マルチ・プロセッサ・コンピュータ・システムのブロック図であり、本発明の実施形態で使用できるものである。コンピュータ・システム１００は、バス１０１に結合された、プロセッサ、バス・ブリッジ、メモリ・デバイス、周辺デバイスなどの異なるエージェントの間の通信のためのプロセッサ・メモリ・バス１０１を含む。プロセッサ・メモリ・バス１０１は、調停バス、アドレスバス、データバスおよび制御バス（図示せず）を含む。一実施形態では、各プロセッサ１０２、１０３、１０４および１０５は、一般にレベル１（Ｌ１）キャッシュ・メモリと呼ばれ、一時的にデータおよび命令を格納する小容量で極度に高速な内部キャッシュ・メモリ（図示せず）を関連するプロセッサと同じ集積回路上に含む。また、より大容量のレベル２（Ｌ２）キャッシュ・メモリ１０６がプロセッサ１０５に結合され、プロセッサ１０５が使用するためのデータおよび命令を一時的に格納する。他の実施形態では、メモリ１０６などのＬ２キャッシュを、プロセッサ１０２〜１０５のいずれか１つに結合することができる。
【００１０】
プロセッサ・メモリ・バス１０１でメモリおよび入力／出力（Ｉ／Ｏ）サブシステムへのアクセスを行うことができる。メモリ・コントローラ１２２がプロセッサ・メモリ・バス１０１に結合され、プロセッサ１０２〜１０５のための情報および命令を格納するランダム・アクセス・メモリ（ＲＡＭ）または他の動的記憶デバイス１２１（一般にメイン・メモリと呼ばれる）へのアクセスを制御する。表示デバイス１３２、キーボード・デバイス１３３、カーソル制御デバイス１３４、ハード・コピー・デバイス１３５、および大容量記憶デバイス１３６が、システムＩ／Ｏバス１３１およびプロセッサ・メモリ・バス１０１へ、バス・ブリッジ１２４を介して結合される。ブリッジ１２４がプロセッサ・メモリ・バス１０１およびシステムＩ／Ｏバス１３１へ結合されている。ブリッジ１２４は、プロセッサ・メモリ・バス１０１またはＩ／Ｏバス１３１のいずれかにあるデバイスが他のバス上のデバイスとの間でデータにアクセスあるいはデータを転送するための、通信経路またはゲートウェイとなっている。ブリッジ１２４は、システムＩ／Ｏバス１３１とプロセッサ・メモリ・バス１０１との間のインタフェースである。Ｉ／Ｏバス１３１は、情報を周辺デバイス１３２〜１３６の間で通信する。
【００１１】
プロセッサ１０２〜１０５、バス・ブリッジ１２４、大容量記憶デバイス１２５、およびメモリ・コントローラ１２２は、それぞれバス・コントローラ１３８を含む。バス・コントローラ１３８は、それを含むエージェントがプロセッサ・メモリ・バス１０１の制御を有するとき、プロセッサ・メモリ・バス１０１を介した通信を制御する。
【００１２】
本発明の一実施形態では、プロセッサ・メモリ・バス１０１でのバスの動作が、オペレーション、トランザクション、およびフェーズと階層的に編成される。オペレーションは、自然に整列された記憶場所を読み取ることなど、ソフトウェアに対してアトミックに見えるバスのプロシージャである。オペレーションを実行するには通常１つのトランザクションが必要であるが、多数のトランザクションが必要になることもある。それは、要求および応答が異なるトランザクションである遅延応答の場合、あるいは、ソフトウェアがアトミックになると予想する非線形のメモリ操作の場合である。この実施形態では、トランザクションは、応答フェーズ中の要求バス調停からトランザクション（たとえば、標準または暗黙のライトバック応答）の完了まで、単一の要求に関するバスの動作のセットである。
【００１３】
一実施形態では、トランザクションは最大６つの異なるフェーズからなる。しかし、あるフェーズは、トランザクションおよび応答のタイムに基づいて任意選択である。あるいは、追加のフェーズを追加することもできる。フェーズは特定の信号グループを使用して、特定タイプの情報を通信する。ある実施態様では、これらのフェーズは次のようになる。
調停フェーズ
要求フェーズ
エラー・フェーズ
スヌープ・フェーズ
応答フェーズ
データ転送フェーズ
【００１４】
一実施形態では、データ転送フェーズは任意選択であり、トランザクションがデータを転送中の場合に使用される。データ・フェーズは、（たとえば、書込みトランザクションの）要求を開始する時点でデータが使用可能である場合、要求開始である。データ・フェーズは、（たとえば、読取りトランザクションの）トランザクション応答を生成する時点でデータが使用可能である場合、開始される応答である。トランザクションは、開始データ転送要求と開始データ転送応答を共に含むことができる（たとえば、暗黙のライトバックへ変換される書込み）。
【００１５】
本発明の一実施形態では、調停フェーズ、要求フェーズ、エラー・フェーズ、スヌープ・フェーズ、および応答フェーズに関して転送された信号は、共通クロック・プロトコルを介して転送される（すなわち、システム・バスによってクロックされる）。これについては、以下でより詳細に説明する。しかし、データ転送フェーズ中に転送されたデータは、クロック・サイクルにつきより大量のデータを転送するためにソース同期プロトコルを介して転送される。これについても、以下でより詳細に説明する。
【００１６】
異なるトランザクションからの異なるフェーズは重なり合うことができるので、バスの使用をパイプライン化してバスの性能を向上させることができる。図２は、２つのトランザクションの重なり合うフェーズの一例を示す。図２を参照すると、トランザクションは調停フェーズで開始し、ここで要求エージェントがバスの所有者となる。調停フェーズは、次のトランザクションを駆動中のエージェントがまだバスを所有しない場合にのみ、発生することが必要である。ある実施態様では、所有権は、バスの要求エージェントへ、所有権が要求されてから調停フェーズの２クロック・サイクル以上で授与される。
【００１７】
第２のフェーズは要求フェーズであり、ここでバスの所有者が要求およびアドレス情報をバス上で駆動する。ある実施態様では、要求フェーズは、バスの所有権が授与された後の１つまたは複数のクロック・サイクルであり（調停フェーズがあるとすれば）、２クロック・サイクルの長さである。第１のクロックで、アドレス信号が、トランザクション・タイプ、およびメモリ・アクセスのスヌーピングを開始するために十分な情報と共に与えられる。第２のクロックでは、データ転送がデータ・バスの幅より小さい場合にデータのどのバイトを転送すべきかを識別するために使用されるバイト・イネーブル、遅延応答が要求へ与えられるイベントにおいてトランザクションを一意的に識別するために使用されるトランザクション識別子、および要求されたデータ転送の長さが、他のトランザクション情報と共に駆動される。
【００１８】
トランザクションの第３のフェーズは、エラー・フェーズである。エラー・フェーズは、要求によって引き起こされたパリティ・エラーなどのいかなる即時エラーをも示す。エラーが発見された場合、エラー信号が、エラー・フェーズ中に、トランザクション内でこのエラーを検出したエージェントによってアサートされる。一実施形態によれば、エラーが示されたとき、トランザクションは即時に落とされ（つまり、トランザクションがそれ以上パイプラインで進行しない）、そのトランザクションを発行したエージェントによって再駆動することができる。エージェントがトランザクションを再発行するかどうかは、エージェント自体に応じて決定される。ある実施態様では、エラー・フェーズは要求フェーズ後の３クロック・サイクルである。
【００１９】
一実施形態では、エラー・フェーズ内のエラーのためにキャンセルされていないあらゆるトランザクションが、スヌープ・フェーズを有する。スヌープ・フェーズは、トランザクション内でアクセスされたキャッシュ・ラインが有効でないか、有効であるか、あるいはいずれかのエージェントのキャッシュ内で修正された（不正）かを示す。ある実施態様では、スヌープ・フェーズは要求フェーズから４クロック・サイクル以上である。
【００２０】
バスのスヌープ・フェーズはスヌープ・イベントがバス上で発生するスヌープ・ウィンドウを決める。スヌープ・イベントは、バスを介してスヌープ結果を転送および／または受信するエージェントを参照する。スヌープ・フェーズ中に駆動する必要があるスヌープ結果を有するエージェントは、これらのスヌープ結果をスヌープ・イベントとしてスヌープ・ウィンドウ中に駆動する。バスに結合されたすべてのスヌーピング・エージェントは、結果を駆動するエージェントを含めて、これらのスヌープ結果をスヌープ・イベントとしてスヌープ・ウィンドウ中に受信する。ある実施態様では、スヌープ・ウィンドウは単一のバス・クロックである。
【００２１】
応答フェーズは、トランザクションが失敗したか成功したか、応答が即時か遅延か、トランザクションが再試行されるかどうか、または、トランザクションがデータ・フェーズを含むかどうかを示す。トランザクションが応答開始データフェーズを含む場合、これは応答フェーズと一致するデータ転送フェーズに入る。
【００２２】
トランザクションがデータ・フェーズを有していない場合、このトランザクションは応答段階で完了する。要求エージェントが、転送する書込みデータを有しているか、あるいは要求された読取りデータを有している場合、トランザクションはデータ・フェーズを有し、これは前者の場合に応答フェーズを越えて拡張することができ、後者の場合に応答フェーズと一致するかあるいはそれを越えて拡張する。データ・フェーズは、トランザクションがデータ転送を要求する場合にのみ発生する。データ・フェーズは（たとえば、メモリ・コントローラまたは別のプロセッサによって）応答開始または要求開始にすることができる。
【００２３】
バスは、バス・トランザクションを２つの独立したトランザクションに分割することによって、遅延トランザクションを調整する。第１のトランザクションは、要求エージェントによる要求および応答エージェントによる応答を含む。応答は、応答エージェントが応答する準備ができている場合、要求データ（または完了信号）を送信することを含む。この場合、バス・トランザクションが終了する。しかし、応答エージェントがバス・トランザクションを完了する準備ができていない場合、応答エージェントが遅延応答を、バスを介して応答フェーズ中に送信することができる。遅延応答を送信することによって、他のトランザクションを発行し、このトランザクションの完了によって延滞されないようにすることができる。応答エージェントが遅延バス・トランザクションを完了する準備ができたとき、応答エージェントはバスの所有権を調停し、バス上で要求されたデータ（または完了信号）を含む遅延応答トランザクションを送信する。
【００２４】
この実施形態では、バスがパイプラインの性質を有するので、多数のトランザクションを、バスの異なるフェーズに、異なる時間に置くことができる。たとえば、あるトランザクションをスヌープ・フェーズに置くことができ、第２のトランザクションはエラー・フェーズにあり、第３のトランザクションは要求フェーズにあるということが可能である。したがって、エラー信号および要求信号は、異なるトランザクションに対応していても、共に同時にバス上で発行することができる。
【００２５】
本発明の一実施形態では、最大１６のトランザクションをバス上でいかなる特定の時間でも未処理にすることができ、最大１６のトランザクションをいかなる特定の時間でも遅延した応答に対して待つことができる。
【００２６】
また、本発明の一実施形態は、暗黙のライトバックもサポートしており、これは読取りまたは書込みトランザクションの一部である。暗黙のライトバックは、要求エージェントが、バスに結合されたキャッシュ内に修正された状態で格納されているキャッシュ・ラインの要求をバスに出したときに発生する。たとえば、エージェントはバスを介して８バイトのデータ（または、キャッシュ・ライン以下のある他の量のデータ）の書込みトランザクションを実行することができるが、これらの８バイトを含むキャッシュ・ラインは、修正された状態で、別のエージェントのキャッシュ内に格納されている。この状況では、キャッシュ・ラインを修正された状態で含むキャッシュ（または、このキャッシュに結合されたエージェント）が、「ヒット修正」信号をバス上に、このトランザクションのスヌープ・フェーズ中に発行する。要求エージェントは８バイトの書込みデータをバス上に配置し、これが目標エージェントによって検索される。次いで、このトランザクションの応答フェーズと一致して、キャッシュ・ラインを修正された状態で含むキャッシュが、このキャッシュ・ラインをバスに書き込む。このキャッシュ・ラインは、ある実施態様では３２または６４バイトである。次いで、要求エージェントによって書き込まれなかったキャッシュ・ライン内のデータのいずれもが、元のデータ転送からの書込みデータと併合される。
【００２７】
暗黙のライトバックは、読取りトランザクションで発生することもある。たとえば、要求エージェントは、バス上のメモリ・コントローラを目標とするがスヌーピング・エージェントのキャッシュ・メモリ内の修正されたキャッシュ・ラインもヒットする、読取りトランザクションを実行することができる。この例では、スヌーピング・エージェントがソース・エージェントとなり、要求されたデータを暗黙のライトバックとしてメモリ・コントローラに提供し、メモリ・コントローラはライトバック・データをメイン・メモリに格納する。この例ではまた、要求エージェントが暗黙のライトバック・データをバスから取る（データの「つかみ取り」と呼ばれる）。しかし、代替実施形態では、メモリ・コントローラがつかみ取りを実行することができ、この場合はキャッシュ・ラインが要求エージェントによってバスから取られ、メモリ・コントローラによってバスから取られることも取られないこともある。
【００２８】
図３は、本発明の一実施形態による、制御信号を転送するための共通クロック・トランザクション中にバス上で発生することを示すタイミング図である。本明細書のタイミング図では、正方形の記号は信号が駆動されること示し、円の記号は信号がサンプリングされる（ラッチされる、あるいは取り込まれる）ことを示し、三角形の記号は信号が受信あるいは観察されることを示す。
【００２９】
本明細書では、信号名に、ＡＤＳ＃など大文字を使用する。１組の関連信号の信号は、アドレス・ビット４でＡ４など、数値の接尾辞によって区別される。ある範囲の数値接尾辞を包含する１組の信号は、たとえば、データ・ビット０から６３まででＤ［６３−０］と示される。接尾辞「＃」は、信号がアクティブで低いことを示す。接尾辞「＃」がついていない場合は、信号がアクティブで高いことを示す。ある信号がアクティブである論理レベルは、特定の実施形態についてのみ選択されるものであり、本発明に必須のものではない。「アサートされた」という用語は、信号がそのアクティブな論理レベルに駆動されることを示す。「アサート解除された」という用語は、信号がそのインアクティブな論理レベルに駆動されることを示す。
【００３０】
バス・クロック信号ＢＣＬＫ６００は、その立上りエッジでアクティブである。クロック・サイクルＴ１の開始点で、信号Ａ＃６０２がバス上にアサートされる。Ｔ２の開始点で、ＢＣＬＫ６００が信号Ａ＃６０２をラッチする。Ｔ３の開始点で、Ａ＃６０２のラッチングに応答してＢ＃６０４がアサートされる。Ａ＃６０２は、Ｔ２で、状態をその本来のインアクティブな状態に変更する。図３から、Ａ＃６０２がアサートされてから２ＢＣＬＫ６００サイクル後に、Ａ＃６０２に応答してＢ＃６０４がアサートされることが分かる。
【００３１】
図４は、一実施形態による、データを転送するためのソース同期データ転送を示すタイミング図である。結果として、本発明では、共通クロック・プロトコルを介してデータを転送することに比較して、バス・クロック・サイクルにつきより大量のデータの転送が可能である。４チャンクのデータの例に示すように、Ｄ１、Ｄ２、Ｄ３およびＤ４が送受信される。ＢＣＬＫ６００は、図３に示す共通クロック・トランザクションとまったく同じようにその標準周波数で動作する。図４に示すソース同期プロトコルによれば、データが送信され、ストローブＳＴＢｐ［３：０］＃３１０およびＳＴＢｎ［３：０］＃３１２でラッチされて、妥当な信号フライト時間で、共通クロック転送速度の２倍の転送速度が可能となる。ソース同期ラッチ・プロトコルは、バスを、ＢＣＬＫ６００の周波数の２倍で操作する。２チャンクのデータがバス上へ、共通クロック転送では１チャンクを駆動するのに要する時間で駆動される。したがって、帯域幅を２倍にして、これに対応して転送信号数が増加することのないようにすることができる。
【００３２】
表ＩＶで説明するように、共にアクティブである信号ＤＲＤＹＳ＃４２８およびＤＲＤＹ＃４２６は、送信側がデータをソース同期１２８ビット・モードで送信中であることを示す。Ｄ＃３０２は、駆動側が見るようなデータ信号を含む。Ｄ＃３０８は、受信側が見るようなデータ信号を含む。ＳＴＢｐ［３：０］＃３０４およびＳＴＢｎ［３：０］＃３０６は、ストローブ信号の駆動側が見るようなストローブ信号である。ＳＴＢｐ［３：０］＃３１０およびＳＴＢｎ［３：０］＃３１２は、データおよびストローブ信号の受信側が見るようなストローブ信号である。バス・クロックの立上りエッジと５０％ポイントでは共に、駆動側が新しいデータを送信する。バス・クロックの２５％ポイントおよび７５％ポイントでは共に、駆動側が中心の差動ストローブＳＴＢｐ［３：０］＃３０４およびＳＴＢｎ［３：０］＃３０６を送信する。受信側は、データをストローブと共に決定的に取り込む。
【００３３】
一実施形態では、駆動側がＤ［６３：０］＃３０２を駆動する前にＳＴＢｐ［３：０］＃３０４を事前駆動する。駆動側は、立上りおよび立下りエッジを、ＳＴＢｐ［３：０］＃３０４およびＳＴＢｎ［３：０］＃３０６上に、データを中心に送信する。駆動側は、最後のデータが送信された後でストローブをアサート解除する。受信側は、有効なデータを、ＢＣＬＫ６００に非同期な、両方のストローブ信号と共に取り込む。ＢＣＬＫ６００に同期する信号（ＤＲＤＹＳ＃４２８およびＤＲＤＹ＃４２６）は、受信側に対して、有効なデータが送信されたことを示す。図４は、両方のエージェントで１２８ビットのデータ転送が可能である場合に、ＢＣＬＫ６００に関して、図３に示す共通クロック・プロトコルによる場合の半分の時間で、データを転送できることを示す。
【００３４】
図５は、本発明の一実施形態によるエージェントをより詳細に示すブロック図である。エージェント４００は、データ幅標識４０１、内部制御論理４０２、バス・コントローラ１３８、データ・バッファ４０４および４０６、およびマルチプレクサ４０３、４０５および４０８を含む。
【００３５】
データ幅標識４０１は、エージェント４００がサポートするデータ転送幅の標識である。一実施形態では、データ幅標識４０１は、エージェント４００がサポートするデータ転送を符号化する２ビット値である。一実施形態によるデータ幅標識４０１は、事前に構成された値である。標識４０１は、エージェント４００の特定のピンを、システム・リセット周期でサンプリングされる特定の所定の電圧レベルに結合させるなど、幅広い範囲の従来のいかなる方法でも事前に構成することができる。他の実施形態では、データ幅標識４０１を再構成可能にすることができる。たとえば、データ幅標識４０１をメモリ・デバイスに格納することができ、あるいは、ソフトウェアによって書き込むことができる構成レジスタの一部にすることができる。バス・コントローラ１３８は、エージェント４００とバス１０１の間のインタフェースとなる。バス・コントローラ１３８は、様々な制御およびアドレス信号をバス１０１の間で転送し、バス１０１へ、かつバス１０１からのデータの転送も制御する。図示のように、バス１０１は６４ビットの幅のデータ・バスを有する。他の実施形態では、他のバス幅を使用することができる。
【００３６】
本発明で使用する信号の概要を、以下の表Ｉに示す。これらの信号の相互作用については、以下でより完全に論ずる。表Ｉは、本発明で使用する信号の概要であるが、エージェント４００またはバス１０１によって転送される信号の網羅的なリストではなく、本発明にもっとも適切な信号を含むものである。
【表１】
0004598270.tif 000002
【表２】
0004598270.tif 000003
【００３７】
エージェント４００は、２組のデータ・バッファ４０４および４０６も含む。エージェント４００は、２組の入力バッファ４０６および２組の出力バッファ４０４を含む。しかし、代替実施形態では、異なる２組のバッファを有するのではなく、入力にも出力にも使用することができる、より多くあるいはより少ないデータ・バッファを含むことができる。
【００３８】
データ・バッファ４０４は、エージェント４００から別のエージェントへバス１０１を介して転送中のデータを、一時的に格納する。本発明の一実施形態によれば、各データ・バッファ４０４は４つの別々のバッファ４０４ａ、４０４ｂ、４０４ｃおよび４０４ｄを含み、それぞれが６４ビットのデータを格納することができる。各データ・バッファ４０４は、マルチプレクサ４０３へ入力される。マルチプレクサ４０３はバス・コントローラ１３８によって制御されるので、バス・コントローラ１３８が、データのどの６４ビット部分がデータ・ラインＤ［６３：３２］＃４１８およびＤ［３１：０］＃４１９へいずれかの特定の時に提供されるかを、制御することができる。次いでマルチプレクサ４０３の出力が第２のマルチプレクサ４０５へ入力され、マルチプレクサ４０５もバス・コントローラ１３８によって制御される。マルチプレクサ４０５は６４ビットのデータをマルチプレクサ４０３から取り、上位３２ビットまたは下位３２ビットのいずれかをデータ・ラインＤ［３１：０］＃４１９上へ配置する。一実施形態では、データ・ラインＤ［３１：０］＃４１９上に配置された３２ビットのグループが、バス・コントローラ１３８から受信された制御信号に依存しており、これらの信号は、以下でより詳細に論ずるように、トランザクションのデータ転送幅に依存している。また、一実施形態によれば、マルチプレクサ４０３からの上位３２ビットは、データ・ラインＤ［６３：３２］＃４１８上へも配置されるので、この上位３２ビットが、６４ビット幅のデータ転送のためにデータ・バス上で使用可能となる。
【００３９】
データ・バッファ４０６は、別のエージェントからエージェント４００へバス１０１を介して転送中のデータを、一時的に格納する。本発明の一実施形態によれば、各データ・バッファ４０６は４つの別々のバッファを含み、それぞれが６４ビットのデータを格納することができる。バッファ４０６およびマルチプレクサ４０８は、本質的にバッファ４０４およびマルチプレクサ４０３および４０５と同じものであるが、ただしこれらは反対方向に働くことが異なる（つまり、これらは、データをバスへ転送するのではなく、バスからデータを格納するように動作する）。データがＤ［３１：０］＃ライン４１９および場合によってはＤ［６３：３２］＃ライン４１８から受信され、マルチプレクサ４０８を介してデータ・バッファ４０６の１つに入れられる。マルチプレクサ４０８は、６４ビットのデータをバッファ４０６へ提供するか、あるいは３２ビットのデータを上位または下位３２ビットとしてバッファ４０６へ提供する。これはバス・コントローラ１３８からの制御信号に基づいて行われ、これらの信号は、以下でより詳細に論ずるように、トランザクションのデータ転送幅に依存している。
【００４０】
さらに、データがバス・クロックに非同期で転送されたことを考慮すると、このデータはエージェント４００によって、クロック・サイクル境界に交差するウィンドウ内で受信されることになる。したがって、受信されたデータは、エージェント４００によってアクセスされるまで、バッファ４０６内のデスキュー・ラッチ（図示せず）にラッチされる。さらに、バス・コントローラ１３８が一般に共通クロック信号を使用して、いつこのデータがエージェント４００からアクセスされるかを決定することによって、受信されたデータをエージェント４００のクロックと再同期させる。再同期化を実行するための一実施形態のより詳細な説明は、特許出願「Ｓｏｕｒｃｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｉｎｔｅｒｆａｃｅ  Ｂｅｔｗｅｅｎ  Ｍａｓｔｅｒ  ａｎｄ  Ｓｌａｖｅ  Ｕｓｉｎｇ  ａ  Ｄｅｓｋｅｗ  Ｌａｔｃｈ」、出願日１９９７年５月６日、第０８／８５２，４３８号で見ることができる。
【００４１】
本発明の一実施形態では、エージェントがデータを転送する際に、ソース同期プロトコルと共通クロック・プロトコルのどちらを介するかを動的に変更することができる。つまり、バス・トランザクションに関係するすべてのエージェントがソース同期転送プロトコルをサポートしている場合、データはそれに従って転送される。そうでない場合、データは共通クロック・プロトコルを介して転送される。
【００４２】
たとえば、本発明の一実施形態では、エージェント４００が要求をバス上に発行中のとき、エージェント４００は、エージェント４００がサポートするデータ転送幅を指示する。一実施形態では、要求フェーズの第２のクロック・サイクルでアサートされたＲＥＱ［４：３］＃を使用して、この指示がＲＥＱ［４：０］＃４１４で符号化される。この実施態様でサポートされる特定のデータ転送幅の符号化を、以下の表ＩＩに示す。「０」はインアクティブな信号を示し、「１」はアクティブな信号を示す。
【表３】
0004598270.tif 000004
【００４３】
エージェント４００によって与えられる適切な指示は、データ幅標識４０１に基づいている。一実施形態では、データ幅標識４０１が、表ＩＩに示す４つの符号化の１つを格納し、これをバス・コントローラ１３８によって直接バス上に配置することができる。エージェント４００が、バスに結合された別のエージェントによって発行された要求の目標である場合、エージェント４００も、目標エージェントとして、エージェント４００がサポートするデータ転送幅を指示する。一実施形態では、この指示は、ＤＲＤＹ＃４２６、ＤＲＤＹＳ＃４２８、ＴＲＤＹ＃４２０およびＴＲＤＹＳ＃４２２の１つまたは複数の組み合わせを使用して行われる。これらの信号によって提供される指示の概要を、要求エージェントがサポートするものとして示したものに基づいて、以下の表ＩＩＩに示す。
【表４】
0004598270.tif 000005
【００４４】
ＤＲＤＹ＃４２６およびＤＲＤＹＳ＃４２８信号は、転送が共通クロック・プロトコルに従うか、ソース同期プロトコルに従うかも示す。これを以下の表ＩＶに要約する。
【表５】
0004598270.tif 000006
【００４５】
本発明の実施形態では、異なるエージェントが最大３２、６４または１２８ビットの転送をサポートし、上記の表ＩＩＩで論じたような信号を使用するが、トランザクションに関与するエージェントは、バス・コントローラ１３８内で、要求エージェントがサポートするものとして示されたデータ転送幅が３２または６４ビットであるか、６４または１２８ビットであるかのレコードを維持する。応答開始トランザクションでは、ＤＲＤＹ＃４２６およびＤＲＤＹＳ＃４２８のレコードが保持される。要求開始トランザクションまたは暗黙のライトバック・トランザクションでは、ＴＲＤＹ＃４２０およびＴＲＤＹＳ＃４２２信号のレコードが保持される。このレコードが保持されることによって、ＴＲＤＹ＃４２０およびＴＲＤＹＳ＃４２２をアサートして、元の要求に応じて６４ビットまたは１２８ビットのいずれかの転送を示すことができる。スヌーピング・エージェントが、ＴＲＤＹ＃４２０およびＴＲＤＹＳ＃４２２信号を監視する。エージェント４００がバス上で、エージェントのキャッシュ内の修正されたキャッシュ・ラインをヒットする要求をスヌープした場合、エージェント４００は後にライトバック・データをバス上に配置中となるが、エージェント４００でサポートするデータ転送データ幅を示す。一実施形態では、この指示が、ＤＲＤＹ＃４２６およびＤＲＤＹＳ＃４２８信号の１つまたは複数を使用して提供される。ＴＲＤＹ＃４２０信号およびＴＲＤＹＳ＃４２２信号が、上述のように、目標エージェントによってアサートされる。これらの信号によって提供される指示の概要を、要求エージェントと目標エージェントが共にサポートするものとして示したデータ転送幅に基づいて、以下の表Ｖに示す。
【表６】
0004598270.tif 000007
【００４６】
図６は、ソース同期プロトコルに従った、６４バイト読取りトランザクションと暗黙のライトバックのイベントを示すタイミング図である。この実施形態では、データ・バスが６４ビット幅なので、トランザクションがそれぞれ６４ビットの別々の８チャンクの転送を必要とする。
【００４７】
図６の例では、要求エージェントがＡＤＳ＃４１０をＴ１でアサートして、６４バイトの読取りトランザクションを開始する。Ｔ２で、要求エージェントがあるビットの要求信号｛ＲＥＱ｝４１４をアサートして、６４バイトの長さ、およびそれが６４ビット／１２８ビットのエージェントであることを示す。Ｔ５のスヌープ・フェーズ中に、ＨＩＴＭ＃４１６がスヌーピング・エージェントによってアサートされる。Ｔ７で、応答エージェントがＴＲＤＹＳ＃４２２およびＴＲＤＹ＃４２０をアサートして、ライトバック・データを受け入れる準備ができていること、および１２８ビットのデータ・トランザクションをソース同期モードで実行できることを示す。応答または目標エージェントが、受信した元の要求に基づいて適切なＴＲＤＹ＃／ＴＲＤＹＳ＃信号を駆動する責任を負うため、スヌーピング・エージェントからこの負担がなくなる。Ｔ８で、スヌーピング・エージェントが、アサートされたＴＲＤＹＳ＃４２２およびＴＲＤＹ＃４２０と、アサート解除されたＤＢＳＹ＃４２４をサンプリングする。Ｔ９で、スヌーピング・エージェントが、ＤＢＳＹ＃４２４およびＳＢＳＹ＃４８４をアサートすることによってデータ・フェーズを開始する。スヌーピング・エージェントは、Ｔ９の７５％ポイントで、ＳＴＢｐ［３：０］＃４８０を事前駆動する。
【００４８】
スヌーピング・エージェントは、ＤＲＤＹＳ＃４２８およびＤＲＤＹ＃４２６をアサートし、有効なデータを、Ｄ［６３：０］＃６０８の立上りエッジ、およびＴ１０とＴ１３の間のＢＣＬＫ６００の５０％ポイントで駆動することによって、有効データ転送を開始する。２つの６４ビット・チャンクのデータが、ＢＣＬＫ６００の１クロック周期で、バス上へ駆動される。スヌーピング・エージェントは、立上りおよび立下りエッジを、ＳＴＢｐ［３：０］＃４８０とＳＴＢｎ［３：０］＃４８２上で、Ｔ１０とＴ１３の間のＢＣＬＫ６００の２５％および７５％ポイント（各データ転送の中心）で駆動する。スヌーピング・エージェントは、立上りエッジをＳＴＢｐ［３：０］＃４８０上で、Ｔ１４の２５％ポイントで駆動して、バスを次のエージェントへ引き渡す。
【００４９】
スヌーピング・エージェントがストローブを駆動してから約１クロック・サイクル後、中心のストローブが要求および応答エージェントに到達してデータを取り込む。到達する各ストローブの対で、新しいチャンクのデータが、要求および応答エージェントのバッファ内に取り込まれる。Ｔ１１で、要求および応答エージェントがＤＲＤＹＳ＃４２８およびＤＲＤＹ＃４２６をサンプリングし、データが送信されたことを知る。そのしばらく後、要求エージェントおよび応答エージェントが、データをＢＣＬＫ６００ドメイン内にラッチする。したがって、図６は、ソース同期プロトコルを使用して、１２８ビットのデータを６４ビットのバスの１クロック周期で送信するバス・エージェントを示す。
【００５０】
上述の明細書では、本発明を、特定の例示的実施形態を参照して説明した。たとえば、本発明を、特定のシステム構成、信号符号化、およびデータ転送幅を参照して説明した。様々な修正および変更は、以下の特許請求の範囲で述べるような本発明の幅広い精神および範囲から外れることなく、本明細書で説明したような特定の細部に行うことができる。
【図面の簡単な説明】
【図１】  本発明による多数のエージェント・コンピュータ・システムのブロック図である。
【図２】  本発明の一実施形態によるトランザクション・フェーズの図である。
【図３】  共通クロック・ラッチ・プロトコルを示すタイミング図である。
【図４】  本発明の一実施形態によるソース同期ラッチ・プロトコルを示すタイミング図である。
【図５】  本発明の一実施形態によるエージェントのブロック図である。
【図６】  本発明の一実施形態による、ソース同期転送を使用した、暗黙のライト・バックを伴う読取り６４バイト・トランザクションを示すタイミング図である。
【図１】
0004598270.tif 000008
【図２】
0004598270.tif 000009
【図３】
0004598270.tif 000010
【図４】
0004598270.tif 000011
【図５】
0004598270.tif 000012
【図６】
0004598270.tif 000013