(57)【要約】【課題】データを伴うトランザクションのノード間の送信に際して、データの伴わないトランザクションに対して優先度の区別なく送信させるとともに、データを伴うトランザクション送信におけるレイテンシ増大を抑制すること。【解決手段】ノード１０１，１０２間で送信を行うトランザクションの種類を検知１１７することにより、データサイクルを伴わないトランザクションについては１本の通信路１１５を用いて送信し、データサイクルを伴うトランザクションについては前記データを複数のサブデータパケットに分割して各々の前記サブデータパケットを複数本の通信路１１５を用いて送信する。【選択図】　　　　図１
2004054419.tif 000002
【特許請求の範囲】
【請求項１】
１以上のプロセッサ、メモリ、前記プロセッサ及び前記メモリを制御するコントローラ、を内在した複数のノードと、前記複数のノード間を互いに結合した２本以上の通信路と、を備えたノード間トランザクション処理装置において、
前記プロセッサは、メモリアドレスを指定してリード又はライトのリクエストトランザクションを発行し、前記メモリアドレスが前記プロセッサと同一ノード内のメモリに含まれる場合に、当該メモリに対し直接にリクエストトランザクションを渡し、
前記メモリアドレスが前記プロセッサとは異なるノードのメモリに含まれる場合に、前記通信路によってリクエストトランザクションを、前記メモリアドレスを含むメモリを有するノード宛に送信して宛先ノードのメモリに渡し、
前記リクエストトランザクションを受取ったメモリは前記リクエストトランザクションがリードの場合前記メモリアドレスで指定されるメモリの情報を読み出し、リード完了通知トランザクションと共にリードデータを、前記リクエストトランザクションを発行したプロセッサに対して送信し、前記リクエストトランザクションがライトの場合前記メモリアドレスで指定されるメモリに前記プロセッサから送信されたライトデータを書き込み、ライト完了通知トランザクションを前記リクエストを発行したプロセッサに対して送信し、
ノード間の通信を要するリクエストトランザクション又は完了通知トランザクションについて、リードリクエストトランザクション又はライト完了通知トランザクションは前記メモリアドレスに基づいて決定される１本の通信路によって通信を行い、
ライトデータを含むライトリクエストトランザクション又はリードデータを含むリード完了通知トランザクションは、前記トランザクションに含まれるデータを複数個のサブデータパケットに分割し、前記サブデータパケットを各々対応する通信路を用いて送信し、受け側のノード内のコントローラで前記サブデータパケットを元のライトリクエストトランザクション又はリード完了通知トランザクションに復元する
ことを特徴とするノード間トランザクション処理装置。
【請求項２】
請求項１において、
前記ノード間の通信を要するトランザクションがライトリクエストトランザクション又はリード完了通知トランザクションであることを検知して、前記ノード間の通信路数Ｋと前記ライトリクエストトランザクション又は前記リード完了通知トランザクションに含まれるデータサイクル数Ｍとによって、前記サブデータパケットへの分割数Ｎを決定する
ことを特徴とするノード間トランザクション処理装置。
【請求項３】
請求項１又は２において、
前記トランザクションがライトリクエストトランザクション又はリード完了通知トランザクションである場合、前記通信路のサブデータパケットの先頭には前記トランザクションのヘッダ情報を付加し、
前記付加されたヘッダ情報は前記通信路毎で同一内容を有している
ことを特徴とするノード間トランザクション処理装置。
【請求項４】
請求項１、２又は３に記載のノード間トランザクション処理装置を内在する半導体パッケージ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムに関し、特に、処理効率を考慮したノード間トランザクション処理に関する。
【０００２】
【従来の技術】
近年、主にマルチメディアデータ転送を目的としたインタフェースとして、高速データ転送、リアルタイム転送を実現するシリアルバスが規格化されている。通常これはネットワーク通信分野で広く利用されているが、コンピュータシステムの分野においてもプロセッサバスを内在する複数のノード間を結合する手段としてシリアルバスが利用可能である。特に、ラックマウントを目的とする薄型サーバでは前記プロセッサバスを含むノード単位に基板が構成され、前記ノード間をコネクタで接続して高Ｗａｙ数サーバを実現する上でシリアルバスは有効な手段である。
【０００３】
しかしノード内のプロセッサバスの高速性と比較するとシリアルバスの転送速度は低く、ノード間を渡る通信量が増加することによりシステム全体のスループットを落としたり、或いは転送データのサイクル数そのものが長いことによりレイテンシを増大させるなどの性能低下を引き起こす。
【０００４】
特開平１１−１７７６７号公報に記載されたシリアルインタフェース回路では、シリアルバスを介して転送するパケットを第１種パケット、第２種パケットと分類し、データ等容量の大きいものを第１種、コマンドを第２種として第２種に分類されるパケットを優先的に転送することでコマンド転送のレイテンシ増大をできるだけ抑制するノード間の転送を実現している。
【０００５】
【発明が解決しようとする課題】
プロセッサバスを内在する複数ノード間において、一般にノード間の通信は自ノードに存在しないメモリの内容をリード又はライトすることを目的に発行される。このとき発行された前記リード又はライトのリクエストが完了し、対象となるメモリからの必要データのリードが完了する或いは前記メモリへのデータライトが完了することにより、次のリクエストが発行可能となるケースも多い。
【０００６】
このようなシステムでは上記手法のようにリクエスト（コマンド）だけを優先的に送信しても結局データの送信を待たなければならずシステム全体の性能を上げるのは難しい。
【０００７】
本発明は、データを伴うリクエストトランザクション又はレスポンストランザクションのノード間の送信に際して、データの伴わないリクエストトランザクション又はレスポンストランザクションに対して優先度の区別なく送信させるとともに、データを伴うトランザクション送信におけるレイテンシ増大を抑制し、システム全体の性能を向上するトランザクション処理装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明のトランザクション処理装置は、ノード間の通信を要するトランザクションがリードリクエストトランザクション、ライトリクエストトランザクション、リード完了通知トランザクション、ライト完了通知トランザクションのいずれであるかを検知する手段と、検知手段による検知結果に基づき、前記トランザクションがリードリクエストトランザクションないしライト完了通知トランザクションの場合に分割によるオーバーヘッド削減のため１本の通信路により送信する手段と、前記トランザクションがライトリクエストトランザクションないしリード完了通知トランザクションの場合に前記転送するトランザクションに含まれるデータをサブデータパケットに分割し、前記サブデータパケットを各々対応する複数の通信路により送信することによってトランザクションの通信に係るレイテンシを削減する手段と、を具備したことを特徴とする。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態に係るトランザクション処理装置について、図面を参照しながら詳細に説明する。図１は本発明の実施形態に係るノード間トランザクション処理装置の２ノードから成るシステムの構成例を示す図であり、図２は本発明の実施形態に係るノード間トランザクション処理装置の４ノードから成るシステムの構成例を示す図である。また、図３は本実施形態に係るノード間トランザクション処理を１本の伝送路で実現した装置の動作例を示すタイムチャートであり、図４は本実施形態に係るノード間トランザクション処理を２本の伝送路で実現した装置の動作例を示すタイムチャートである。
【００１０】
図１における２個のノード１０１，１０２から成るコンピュータシステムの例において、各ノードは同一のプロセッサバス１０３に接続される複数個のプロセッサ１０４と、メモリ１０５と、前記プロセッサないし前記メモリ等を制御するコントローラ１０６と、複数個（本例では２個）の通信インタフェース［１］１０７及び通信インタフェース［２］１０８を有し、前記ノードは同じく同一プロセッサバス１０９に接続されるプロセッサ１１０、メモリ１１１、コントローラ１１２、通信インタフェース［１］１１３、通信インタフェース［２］１１４を有する他のノードと複数本（本例では２対４本）の通信路１１５によって結合される。
【００１１】
１本の通信路は１ビットないしｎビットの幅を持つシリアルバスで構成する。前記システムにおいて２個のノード１０１，１０２は同一の構成であり、いずれのプロセッサ１０４，１１０からもリクエストトランザクションの発行が可能であるが、説明を容易にするため、ここではノード１０１のプロセッサ１０４からリクエストトランザクションが発行されるケースについて説明する。
【００１２】
ここで、本実施形態において用いられるノード間トランザクションについて説明する。ノード間トランザクションの種類としては、リクエスト（要求）トランザクションとレスポンス（応答）トランザクションがあり、リクエストトランザクションにはリードトランザクションとライトとライトトランザクションがあって、前記ライトトランザクションにはデータが付加されている。また、レスポンストランザクションにはリード完了通知トランザクションとライト完了通知トランザクションがあって、前記リード完了通知トランザクションにはデータが付加されている。すなわち、ノード間トランザクションの内で、ライトリクエストトランザクションとリード完了通知トランザクションには、データが付加されている。
【００１３】
本発明の実施形態の特徴の１つは、その詳細は後述するが、このデータの付加されたトランザクションに対して当該データをサブデータパケットに分割してそれぞれのサブデータパケットを複数のノード間通信路に分けて送信することにより（データ付加されていないトランザクションは１本の通信路で送信する）、トランザクション通信のレイテンシを削減することである。
【００１４】
再び、図１において、プロセッサ１０４から発行されたリードないしライトのリクエストトランザクションは前記トランザクションの宛先メモリアドレスによって、前記宛先メモリアドレスが前記プロセッサと同一ノード１０１内のメモリ１０５に含まれる場合、前記メモリに対し直接リクエストを渡し、前記メモリアドレスが前記プロセッサとは異なるノード１０２のメモリ１１１に含まれる場合、ノード間を接続する通信路１１５によってリクエストトランザクションを送信して宛先ノード１０２のメモリ１１１にリクエストを渡す。
【００１５】
一方、前記リクエストトランザクションを受取ったメモリ１１１は、前記リクエストトランザクションがリードリクエストの場合、前記メモリアドレスで指定されるメモリの情報を読み出し、リード完了通知トランザクションと共にリードデータを通信路１１５によって前記リクエストトランザクションを発行したプロセッサ１０４に対して送信する。また、前記リクエストトランザクションがライトリクエストの場合、前記メモリアドレスで指定されるメモリに前記プロセッサから送信されたライトデータを書き込み、ライト完了通知トランザクションを通信路１１５によって前記リクエストを発行したプロセッサ１０４に対して送信する。
【００１６】
次に、前記通信路１１５を用いた本実施形態に関する送信手法について詳細に説明する。通信路１１５を用いたノード間通信の制御は各々のノード１０１，１０２が有するコントローラ１０６，１１２によって実現する。ここでも前記コントローラはいずれの前記ノードでも同一構成であるが、説明を容易にするためリクエスト送信ノード１０１のコントローラ１０６については送信制御を実現するための回路のみ図示し、リクエスト受信ノード１０２のコントローラ１１２については受信制御を実現するための回路のみ図示している。ここで、コントローラやプロセッサを含めたノード１０１，１０２の回路構成を半導体パッケージとして一体的に形成しても良い。
【００１７】
まず、トランザクションの送信制御を実現する回路について説明する。ノード１０１のプロセッサ１０４が発行するノード１０２のメモリ１１１宛のリードないしライトリクエストトランザクションは、まずコントローラ１０６内の送信バッファ１１６に記憶される。ノード１０１内で先行するノード間トランザクション通信が終了すると、次にノード間トランザクション通信を行う対象のトランザクションを前記送信バッファより読み出す。検知回路１１７は読み出したトランザクションの種類が、リードリクエストであるかライトリクエストであるかを検知し、前記トランザクションがリードリクエストの場合、データが付加されていないのでトランザクション分割部１１８に対し「分割無」の通知を行い、また、前記トランザクションがライトリクエストの場合、データが付加されているので（付加されたデータをサブデータパケットに分割する必要があるので）前記トランザクション分割部１１８に対し「分割有」の通知を行う。
【００１８】
前記トランザクション分割部１１８では前記検知回路１１７より「分割無」の通知を受取ると、送信バッファ１１６より読み出したリードトランザクションのメモリアドレスに従いアドレスインタリーブでノード間転送を行う通信路１１５を１本決定し、前記通信路に対応する通信インタフェース［１］１０７又は通信インタフェース［２］１０８を用いて前記トランザクションを送信する。すなわち、リードリクエストはデータの付加されていないトランザクションであるので、１本の通信路で送信して他の通信路は空けておく。
【００１９】
一方、前記トランザクション分割部１１８で前記検知回路１１７より「分割有」の通知を受取ると、前記トランクション分割部１１８は次に分割数判定回路１１９からの分割数の指定を待つ。前記分割数判定回路１１９では、ノード間の通信路数Ｋ（図１に示す例では送信用には２本）と送信バッファより読み出したライトトランザクションに含まれるデータサイクル数Ｍによってデータの分割数Ｎを次の通り決定する。Ｋ＞Ｍの場合分割数Ｎ＝Ｍ、Ｋ≦Ｍの場合分割数Ｎ＝Ｋとする。具体例で説明すると、通信路数Ｋが３本で、データがデータ量の少ない２サイクルとデータ量の多い１０サイクルのトランザクションがある場合に、前者のデータ分割数Ｎは２であり、後者のデータ分割数Ｎは３である。トランザクション分割部１１８は分割数判定回路１１９から分割数の指定を受取ると、送信バッファ１１６より読み出したライトトランザクションに含まれるデータを以下の要領でサブデータパケットに分割する。
【００２０】
ここで、図３を参照して、ノードのシステム内送信とノード間の伝送路送信についての情報転送を具体例で説明する。規格にしたがって例えば、システム内では１サイクルで１６バイト幅を処理でき、伝送路では４バイト幅を１サイクルとして処理できる場合、図３に示すように伝送路送信ではシステム内のヘッダ情報もデータも４つに分ける必要がある。図３に示すように、システム内で１サイクルのヘッダ情報３０１と８サイクルのデータ３０２からなるトランザクション３０３は、伝送路送信においては、１サイクルの処理バイト幅が１／４となっているので、トランザクション３０３は３６（９サイクル×４）サイクルとなっている。
【００２１】
次に、上述したサブデータパケットの具体的な分割手法を説明する。すなわち、具体例を以って云えば、ノード間の通信インタフェースが［１］、［２］、［３］と３本であって、８サイクルのデータであった場合に、各インタフェースに８サイクルデータを如何に振り分けるかがサブデータパケットの分割ということである。結論的に云えば、図３を参照すると、インタフェース［１］にはＤ１、Ｄ４、Ｄ７を、インタフェース［２］にはＤ２、Ｄ５、Ｄ８を、インタフェース［３］にはＤ３、Ｄ６を分割配分し、それぞれのサブデータパケットの先頭にヘッダ情報Ｈを付けることになる。このサブデータパケットのヘッダ情報はそれぞれが同一の内容を持っていて、システム内でのヘッダ情報と１サイクル内の処理バイト幅は異なるがパケット統合後の内容は同一のものである。
【００２２】
以上のサブデータパケットの分割を一般的概念で記述すると、以下の通りとなる。前記ライトトランザクションはメモリアドレスを含む１サイクルのリクエストヘッダ情報とＭサイクルのデータから成るものとする。このとき前記リクエストヘッダサイクルＨは分割するＮ個全てのサブデータパケットの先頭に置き、前記ＭサイクルのデータＤ（１）、Ｄ（２）、…、Ｄ（Ｍ）は、サブデータパケット１に対しｄ（ｙ）＝Ｄ（ｘＮ＋１）、サブデータパケット２に対しｄ（ｙ）＝Ｄ（ｘＮ＋２）、…、サブデータパケットＮに対しｄ（ｙ）＝Ｄ（ｘＮ＋Ｎ）を置くよう分割を行う（ここでｘは０以上の整数、ｙは各々のサブデータパケットのデータに順に付した番号とする）。以上のようにして分割を行ったサブデータパケット１からサブデータパケットＮを各々対応する通信インタフェース［１］から通信インタフェース［Ｎ］を用いて送信する。
【００２３】
次に、トランザクションの受信制御を実現する回路について説明する。受信ノード１０２では通信路１１５により送信されたトランザクションないしサブデータパケットは、送信ノード１０１の通信インタフェース［１］１０７、通信インタフェース［２］１０８に各々対応して通信インタフェース［１］１１３、通信インタフェース［２］１１４にて受信する。受信したトランザクションないしサブデータパケットは、まずヘッダ検出部１２０においてリードリクエストトランザクションであるかライトリクエストトランザクションのサブパケットであるかを判断する。前記判断結果がリードリクエストトランザクションの場合前記トランザクションはそのままトランザクション統合部１２１を通過して受信バッファ１２２に記憶される。前記受信バッファに記憶されたリクエストトランザクションは順次宛先メモリ１１１に渡される。
【００２４】
一方、前記ヘッダ検出部１２０においてライトリクエストトランザクションのサブパケットであると判断した場合で、比較回路１２３にはまだヘッダサイクルが記憶されていない場合、前記サブパケットは前記ライトリクエストトランザクションを分割した１個目のサブパケットであると判断し、前記比較回路１２３にヘッダサイクルを記憶する。また、トランザクション統合部１２１に前記受信サブパケットのヘッダサイクルを通知すると共に、前記ヘッダサイクルから元のライトトランザクションのデータサイクル数Ｍを検知し、前記トランザクション統合部から受信バッファ１２２のＭ個分データ格納領域の確保を行う。次に、前記ヘッダサイクルに続くデータｄ（ｙ）はトランザクション統合部１２１において、受信した通信インタフェース［１］から通信インタフェース［Ｎ］の番号［ｉ］に対応してデータＤ（（ｙ−１）Ｎ＋ｉ）を復元し、前記受信バッファの対応する領域に記憶する。前述の例で具体的に云えば、通信インタフェース［１］に対応してＤ１、Ｄ４、Ｄ７を復元し、このデータＤ１、Ｄ４、Ｄ７は受信バッファの８個分確保した領域の第１、第４、第７の領域に記憶されることとなる。
【００２５】
さらに、前記ヘッダ検出部１２０においてライトリクエストトランザクションのサブパケットであると判断した場合で、比較回路１２３にすでにヘッダサイクルが記憶されている場合、受信したヘッダサイクルと前記記憶されているヘッダサイクルとの比較を行う。比較の結果同一ヘッダサイクルではないと判断した場合は、新たに１個目のサブパケットを受信したと判断して上記と同じ処理を行う。また比較の結果同一ヘッダサイクルであると判断した場合トランザクション統合部１２１にはヘッダサイクルの通知を行わず、前記比較回路１２３より前記トランザクション統合部１２１に対し統合指示を通知することによってヘッダサイクルに続くデータｄ（ｙ）に対し上記と同様にデータＤ（（ｙ−１）Ｎ＋ｉ）を復元し、受信バッファ１２２の対応する領域に記憶する。
【００２６】
トランザクション統合部１２１ではまた、最初のヘッダサイクルの通知時にこれから統合を行おうとするトランザクションの分割数を検知し、比較回路１２３から通知される統合指示が前記分割数に達したことによって全分割サブデータパケットを受信したと判断し、受信バッファ１２２へのデータの記憶を完了する。前記受信バッファに記憶されたリクエストトランザクションは順次宛先メモリ１１１に渡される。
【００２７】
図２は４個のノード２０１〜２０４から成るコンピュータシステムの例を示す。各ノードの構成は図１に示すものと同一であり、図２の例は各ノードが通信インタフェース［１］から通信インタフェース［４］２０５〜２０８を有し、各々他のノードと中継装置［１］から中継装置［４］２０９〜２１２を介する４対の通信路２１３によって結合される。なお、図２では送信と受信の一対の通信路を一本の実線で示している。このようにシステムを構成するノード数を４ノード、８ノード、…、ｎノードと増やした場合でも、中継装置を介して或いは多段構成される中継装置を介してノード間の複数の通信路による結合を持つことにより、図１にて説明したトランザクション処理装置の実現が可能である。
【００２８】
以上説明したように、本発明の実施形態では、１回のノード間トランザクション転送に係るレイテンシを削減する効果が得られる。この効果について、図３及び図４を用いて説明する。
【００２９】
図３はヘッダ情報３０１に続く８サイクルのデータ３０２から成るトランザクション３０３を１個の伝送路を用いて送信するケースを示しており、伝送路のデータ幅（規格で例えば、１サイクルで４バイト）がシステム内（規格で例えば、１サイクルで１６バイト）に比べ１／４である例を挙げている。前記ケースでは伝送路に対しデータを送信するためのデータ送信時間３０４に３６サイクルを要し、次に前記伝送路に対し送信開始するまでの間の送信完了待ち遅延３０５は２７サイクルを要する（次回のトランザクションにとってのレイテンシが２７サイクル増大する）ことが判る。
【００３０】
これに対して、図４は図３と同じ能力の伝送路２本を用いてトランザクションを送信するケースを示しており、前記ケースでは伝送路に対するデータ送信時間４０１は２０サイクル、送信完了待ち遅延４０２は１１サイクルに改善されていることが判る。
【００３１】
【発明の効果】
本発明によれば、ノード間の通信を要するトランザクションに含まれるデータをサブデータパケットに分割して複数の通信路で送信することによって、トランザクションの通信に係るレイテンシを削減することができる。
【００３２】
また、ノード間で送信するトランザクションの種類を検知することによりノード間のデータ無しトランザクション転送のオーバーヘッドは増加させずに、データトランザクション転送のレイテンシを削減するノード間トランザクション処理装置の実現が可能である。
【図面の簡単な説明】
【図１】本発明の実施形態におけるノード間トランザクション処理装置の２ノードから成るシステムの構成例を示す図である。
【図２】本発明の実施形態に係るノード間トランザクション処理装置の４ノードから成るシステムの構成例を示す図である。
【図３】本実施形態に係るノード間トランザクション処理を１本の伝送路で実現した装置の動作例を示すタイムチャートである。
【図４】本実施形態に係るノード間トランザクション処理を２本の伝送路で実現した装置の動作例を示すタイムチャートである。
【符号の説明】
１０１，１０２　ノード
１０３，１０９　プロセッサバス
１０４，１１０　プロセッサ
１０５，１１１　メモリ
１０６，１１２　コントローラ
１０７，１０８，１１３，１１４　通信インタフェース
１１５　通信路
１１６　送信バッファ
１１７　トランザクション種類検知回路
１１８　トランザクション分割部
１１９　データ分割数判定回路
１２０　サブデータパケットヘッダ検出部
１２１　トランザクション結合部
１２２　受信バッファ
１２３　ヘッダサイクル比較回路
２０１〜２０４　ノード
２０５〜２０８　通信インタフェース
２０９〜２１２　中継装置
２１３　通信路
３０１　ヘッダ情報
３０２　データ
３０３　トランザクション
３０４，４０１　データ送信時間
３０５，４０２　送信完了待ち遅延
【図１】
2004054419.tif 000003
【図２】
2004054419.tif 000004
【図３】
2004054419.tif 000005
【図４】
2004054419.tif 000006