(57)【要約】【課題】複数のグラフィックカード間の画像表示の同期を制御する技術を提供する。【解決手段】ホストに装着された複数のグラフィックカードのうちの１つは，マスタのグラフィックカード２０ａとなる。マスタのグラフィックカード２０ａのマスタ同期制御部２１０において，同期タイミング監視部２１２は，自グラフィックカード２０ａによる画像出力の同期タイミングを監視する。同期パケット生成部２１３は，同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間を対象とするバストランザクションのパケットである同期パケットを生成する。同期パケット発行部２１４は，同期パケットを，自グラフィックカード２０ａが装着されたホストのバスに発行する。同期パケットは，ホストのバスを介して，他のグラフィックカードに送られる。【選択図】図３
2014182329.tif 000002
【特許請求の範囲】
【請求項１】
自グラフィックカードによる画像出力の同期タイミングを監視する同期タイミング監視部と，
同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間を対象とするバストランザクションのパケットを生成する同期パケット生成部と，
前記パケットを，自グラフィックカードが装着されたホストコンピュータのバスに発行する同期パケット発行部とを備える
ことを特徴とする同期制御装置。
【請求項２】
前記特定のメモリ空間をマルチキャストのバストランザクションの対象に設定するマルチキャスト設定部を備える
ことを特徴とする請求項１に記載の同期制御装置。
【請求項３】
前記パケットには，アイソクロナス転送の優先制御が指定されている
ことを特徴とする請求項１または請求項２に記載の同期制御装置。
【請求項４】
グラフィックカードが，
自グラフィックカードによる画像出力の同期タイミングを監視し，
同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間を対象とするバストランザクションのパケットを生成し，
前記パケットを，自グラフィックカードが装着されたホストコンピュータのバスに発行する処理を実行する
ことを特徴とする同期制御方法。
【請求項５】
グラフィックカードに，
自グラフィックカードによる画像出力の同期タイミングを監視し，
同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間を対象とするバストランザクションのパケットを生成し，
前記パケットを，自グラフィックカードが装着されたホストコンピュータのバスに発行する
処理を実行させるための同期制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，複数のグラフィックカード間の同期を制御する同期制御装置，同期制御方法および同期制御プログラムに関するものである。
【背景技術】
【０００２】
複数の表示装置を並べて配置して大きな画面を作り，それぞれの表示装置で分割された各部分の映像を表示することで，複数の表示装置を並べた大きな画面で１つの映像を表示することが行われている。このことは，例えば，映像表示の処理を行うコンピュータに複数のグラフィックカードを装着し，複数の表示装置を接続することで，実現される。
【０００３】
なお，複数の表示パネルに接続されるビデオデータ用のシリアルインタフェースに同期信号を埋め込む技術が知られている。また，周囲４方向にインタフェースが設けられたインタフェースで隣接するディスプレイ間を接続し，各ディスプレイ間におけるデータ転送を可能とするマルチディスプレイ装置の技術が知られている。また，マルチ画面のつなぎ目についてオーバーラップ処理を行う技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１４５３５３号公報
【特許文献２】特開２００３−２８０６２４号公報
【特許文献３】特開平１０−８３１７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように複数の表示装置を並べて１つの画面として動作させる場合，各表示装置間の画像表示を同期させる必要がある。
【０００６】
例えば，近年，テレビ番組，映画，ゲーム等で３Ｄ表示するコンテンツが増えてきており，それにともなって，３Ｄ表示機能を備えた家庭用テレビやＰＣ（Personal computer ）の普及が進んでいる。３Ｄ表示を実現する技術にはいくつかの技術があるが，基本的には右目用と左目用の画像が１つの画面に表示され，利用者には，装着された眼鏡を通して，右目には右目用の画像のみが，左目には左目用の画像のみが見えるようにされている。右目用の画像と左目用の画像とには視差が与えられており，それぞれの画像をそれぞれの目でみることで，立体視できるようになっている。
【０００７】
このような３Ｄ表示を実現する技術の中に，利用者が装着する眼鏡にシャッター機能を備えさせたものがある。この技術では，テレビに右目用の画像が表示されている場合には，眼鏡の右目のシャッターが開いて左目のシャッターが閉じ，テレビに左目用の画像が表示されているときは，眼鏡の左目のシャッターが開いて右目のシャッターが閉じる仕組みとなっている。例えば，１／６０秒ごとに右目用の画像と左目用の画像とが切り替えられて表示され，それに応じて該当する側のシャッターが開かれることで，画像の立体視が実現される。画像の切り替えと眼鏡のシャッターの開閉タイミングとの間にずれがあると，利用者は立体視することができない。
【０００８】
上記の複数の表示装置を並べた画面で３Ｄ表示を行う場合，並べられた表示装置間での画像表示にずれがあると，ある表示装置の表示画像については立体視できるが，別の表示装置の表示画像については立体視できないという問題が発生する可能性がある。そのため，複数の表示装置による画像表示を，より高い精度で同期させる技術が望まれている。
【０００９】
一側面では，本発明は，複数のグラフィックカード間の画像表示の同期を制御する技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１態様では，同期制御装置は，自グラフィックカードによる画像出力の同期タイミングを監視する同期タイミング監視部と，同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間を対象とするバストランザクションのパケットを生成する同期パケット生成部と，該パケットを自グラフィックカードが装着されたホストコンピュータのバスに発行する同期パケット発行部とを備える。
【発明の効果】
【００１１】
本発明の態様では，複数のグラフィックカード間の画像表示の同期が可能となる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態による表示システムの構成例を示す図である。
【図２】本実施の形態によるＰＣＨの仕組みを説明する図である。
【図３】本実施の形態によるグラフィックカードの機能構成例を示す図である。
【図４】本実施の形態によるマルチキャスト空間の設定を説明する図である。
【図５】本実施の形態による同期パケットの例を示す図である。
【図６】本実施の形態による同期パケットの発行を説明する図である。
【図７】本実施の形態による同期制御を説明する図である。
【図８】本実施の形態のマスタのグラフィックカードのマスタ同期制御部による同期制御処理フローチャートである。
【図９】本実施の形態のスレーブのグラフィックカードのスレーブ同期制御部による同期制御処理フローチャートである。
【図１０】本実施の形態によるＰＣＩｅのバーチャルチャネルのプライオリティ定義の例を示す図である。
【図１１】本実施の形態の固定プライオリティによる同期パケット転送の例を説明する図である。
【図１２】本実施の形態によるＰＣＩｅのタイムベースドＱｏＳの仕組みの例を説明する図である。
【図１３】本実施の形態のアービトレーションテーブルと均等プライオリティによる同期パケット転送の例を説明する図である。
【発明を実施するための形態】
【００１３】
以下，本実施の形態について，図を用いて説明する。
【００１４】
図１は，本実施の形態による表示システムの構成例を示す図である。
【００１５】
図１に示す本実施の形態による表示システムは，例えば，複数の表示装置を並べて作った画面に，３Ｄの画像表示を行うコンピュータシステムである。図１に示す表示システムにおいて，ホスト１０は，画像表示の処理を行う，例えばタワー型のＰＣなどのコンピュータである。ホスト１０は，ＣＰＵ（Central Processing Unit ）１１，メモリ１２，ＰＣＨ（Platform Controller Hub ）１３，スロット１４（ａ〜ｄ）を備える。
【００１６】
ＣＰＵ１１は，中央処理装置であり，システム制御の中心的な役割を果たす。ＣＰＵ１１にはメモリコントローラが含まれており，記憶装置であるメモリ１２と接続されている。ＰＣＨ１３は，ノースブリッジとサウスブリッジの機能を統合したチップである。ＰＣＨ１３は，ハードディスクやキーボードなどの周辺機器とＣＰＵ１１とのインタフェースを取り持つ。ＰＣＨ１３は，オプションカード用のインタフェースとして，ＰＣＩｅ（Peripheral Component Interconnect Express ）のインタフェースを備える。図１に示す例では，ＰＣＨ１３は，４ポートのＰＣＩｅインタフェースを備える。スロット１４は，例えばオプションスロットや拡張スロットなどと呼ばれ，オプションカードが装着される。
【００１７】
グラフィックカード２０は，オプションカードの一種であり，映像を信号として入出力する機能を持つ。グラフィックカード２０は，ビデオカードやグラフィックボードなどとも呼ばれる。オプションカードは，拡張カードや拡張ボードなどとも呼ばれ，コンピュータの機能を拡張するカードである。図１に示す例では，グラフィックカード２０は，３Ｄ映像の入出力を行うカードであるものとする。なお，グラフィックカード２０は，独自に制御部とメモリとを備えており，ファームウェア等のプログラムを実行可能である。
【００１８】
ＬＣＤ（Liquid Crystal Display）パネル３０（ａ〜ｄ）は，表示装置である。図１に示すように，各ＬＣＤパネル３０（ａ〜ｄ）は，それぞれグラフィックカード２０（ａ〜ｄ）に接続されている。図１に示す表示システムでは，表示する画像がホスト１０で４つの画像に分割され，それぞれの画像がグラフィックカード２０（ａ〜ｄ）を介してＬＣＤパネル３０（ａ〜ｄ）に出力される。
【００１９】
一般に，グラフィックカード２０は，独立したクロックを持ち，それによって個々独立したタイミングで動作する。そのため，グラフィックカード２０間で，ＬＣＤパネル３０への出力の同期制御を行う必要がある。同期制御が行われないと，グラフィックカード２０間でＬＣＤパネル３０への出力にずれが発生する可能性があり，正確な３Ｄ表示ができない。
【００２０】
図２は，本実施の形態によるＰＣＨの仕組みを説明する図である。
【００２１】
ＰＣＨ１３において，バス１３０は，ＰＣＩｅバスなどの，ＣＰＵ１１とデバイス（周辺機器）とを接続する汎用バスである。本実施の形態の例では，各スロット１４に装着される各グラフィックカード２０が，バス１３０から，ＰＣＩからＰＣＩｅのバス変換を経て接続されている。
【００２２】
ＰＣＨ１３において，各ＰＣＩｅのインタフェースは，それぞれＰＣＩｅブリッジ１３１（ａ〜ｅ）を備え，そのＰＣＩｅブリッジ１３１によってバックボーンであるＰＣＩのバス１３０からブリッジされている。ＰＣＩｅブリッジ１３１は，ＰＣＩブリッジイメージのブリッジである。個々のＰＣＩｅのスロット１４がＰＣＩｅブリッジ１３１を必要とするのは，一つには，ＰＣＩｅのデバイスのアドレスを決定するためである。ＰＣＩｅブリッジ１３１があることで，それがホスト１０側からのアドレス設定の受け皿として働き，各スロット１４に装着されたデバイスに対してアドレスを設定でき，ホスト１０側からの個々のデバイスを特定したアクセスが可能になる。
【００２３】
個々のデバイスの間にＰＣＩｅブリッジ１３１が存在することで，各デバイスはそれぞれそれ専用のバスセグメント内に存在することになる。各デバイスは，ＯＳ（Operating System）から，それぞれ専用のメモリ空間，Ｉ／Ｏ（Input/Output）空間のリソース配分を受け，その空間内へのバストランザクションは，原則としてユニキャストのスタイルがとられる。したがって，通常は，あるターゲットのデバイスに対して発行されたバストランザクションが，別のデバイスで受け取られることはない。
【００２４】
なお，バストランザクションは，バス１３０を介して行われるリードやライトなどの一連の処理である。
【００２５】
ＰＣＩｅは，マルチキャスト機能も有している。本実施の形態では，マルチキャストのバストランザクションを利用して，画像表示の同期タイミングの通知を行う。より具体的には，マスタとなるグラフィックカード２０の何れかが，周期的な画像表示の同期タイミングで，特定のメモリ空間に対するバストランザクションのマルチキャストを行うことで，他のグラフィックカード２０に対する同期タイミングの通知を行う。同期タイミングの通知を受け取ったグラフィックカード２０は，その通知を表示フレームの開始トリガとして利用し，ＬＣＤパネル３０への画像出力を行う。
【００２６】
ホスト１０に装着される複数のグラフィックカード２０のうちの１つが，マスタのグラフィックカード２０となる。また，マスタのグラフィックカード２０以外のグラフィックカード２０は，スレーブのグラフィックカード２０となる。本実施の形態では，マスタのグラフィックカード２０から，各スレーブのグラフィックカード２０に対して，同期タイミングの通知が行われる。
【００２７】
マスタのグラフィックカード２０については，ホスト１０のスロット１４への装着前に決まっていてもよいし，例えばプラグアンドプレイなどの機能で，スロット１４への装着後にデバイスドライバ等によって，いずれかのグラフィックカード２０がマスタに自動設定されてもよい。また，ホスト１０で動作する動画処理を行うアプリケーションなどによって，自動またはユーザの選択によって，スロット１４に装着されたいずれかのグラフィックカード２０をマスタに設定するようにしてもよい。
【００２８】
本実施の形態の例では，図２に示すように，グラフィックカード２０ａがマスタとして動作し，他のグラフィックカードｂ〜ｄがスレーブとして動作する。すなわち，マスタのグラフィックカード２０ａが，自身のＬＣＤパネル３０ａへの画像出力の同期タイミングに応じて，各スレーブのグラフィックカード２０ｂ〜ｄに対してＰＣＩのバス１３０を利用した同期タイミングの通知を行う。各スレーブのグラフィックカード２０ｂ〜ｄは，マスタのグラフィックカード２０ａから受けた同期タイミングの通知に同期して，各ＬＣＤパネル３０ｂ〜ｄに対する画像出力を行う。
【００２９】
図３は，本実施の形態によるグラフィックカードの機能構成例を示す図である。
【００３０】
図３（Ａ）は，マスタのグラフィックカード２０ａの機能構成例を示す。マスタのグラフィックカード２０ａは，マスタ同期制御部２１０を備える。マスタ同期制御部２１０は，マルチキャスト設定部２１１，同期タイミング監視部２１２，同期パケット生成部２１３，同期パケット発行部２１４を備える。
【００３１】
マルチキャスト設定部２１１は，特定のメモリ空間をマルチキャストのバストランザクションの対象に設定する。ここで設定された特定のメモリ空間を対象とするバストランザクションのパケットが，マスタのグラフィックカード２０ａから各スレーブのグラフィックカード２０ｂ〜ｄに対して同期タイミングを通知するパケットとなる。以下では，マスタのグラフィックカード２０ａから各スレーブのグラフィックカード２０ｂ〜ｄに対して同期タイミングを通知するパケットを，同期パケットと呼ぶ。また，マルチキャストのバストランザクションの対象として設定される特定のメモリ空間を，マルチキャスト空間とも呼ぶ。
【００３２】
同期タイミング監視部２１２は，自グラフィックカード２０による画像出力の同期タイミングを監視する。同期タイミング監視部２１２は，例えば，自グラフィックカード２０ａ自身の画像表示の同期信号（例えば，垂直同期信号など）を監視し，その同期信号が検出された場合に，同期タイミングが検出されたと判定する。なお，マスタのグラフィックカード２０ａは，自身の画像表示の同期信号に応じて，ＬＣＤパネル３０ａに対する画像出力を行う。
【００３３】
同期パケット生成部２１３は，同期タイミング監視部２１２により同期タイミングが検出された場合に，マルチキャストが設定された特定のメモリ空間，すなわちマルチキャスト空間を対象とするバストランザクションのパケットを生成する。同期パケット生成部２１３で生成されたパケットが同期パケットとなる。
【００３４】
同期パケット発行部２１４は，同期パケット生成部２１３により生成された同期パケットを，自グラフィックカード２０ａが装着されたホスト１０のバス１３０に発行する。発行された同期パケットは，ＰＣＩｅのマルチキャスト機能によって，各スレーブのグラフィックカード２０ｂ〜ｄに送られる。なお，発行される同期パケットに，アイソクロナス転送の優先制御が指定されていてもよい。
【００３５】
図３（Ｂ）は，スレーブのグラフィックカード２０ｂの機能構成例を示す。他のスレーブのグラフィックカード２０ｃ，ｄも，同様の構成であるものとする。スレーブのグラフィックカード２０ｂは，スレーブ同期制御部２２０を備える。スレーブ同期制御部２２０は，本実施の形態によるグラフィックカード２０間の画像出力の同期制御における，スレーブとなったグラフィックカード２０ｂ側の同期制御部である。スレーブ同期制御部２２０は，マルチキャスト空間情報保持部２２１，同期パケット監視部２２２，同期信号発生部２２３を備える。
【００３６】
マルチキャスト空間情報保持部２２１は，マルチキャストが設定された特定のメモリ空間，すなわちマルチキャスト空間の情報を記憶する。
【００３７】
同期パケット監視部２２２は，マスタのグラフィックカード２０ａにより発行された同期パケットの受信を監視する。同期パケット監視部２２２は，例えば，自グラフィックカード２０ｂが受信したバストランザクションのパケットの対象アドレス空間が，マルチキャスト空間情報保持部２２１に記憶された，マルチキャストが設定された特定のメモリ空間，すなわちマルチキャスト空間である場合に，同期パケットを受信したと判定する。
【００３８】
同期信号発生部２２３は，同期パケット監視部２２２により同期パケットの受信が確認された場合に，自グラフィックカード２０ｂの画像表示の同期信号を発生させる。スレーブのグラフィックカード２０ｂは，同期信号発生部２２３により発生された同期信号に応じて，ＬＣＤパネル３０ｂに対する画像出力を行う。
【００３９】
マスタ同期制御部２１０やスレーブ同期制御部２２０は，例えば，それぞれグラフィックカード２０の制御部により動作するファームウェアなどで，実現される。マスタ同期制御部２１０やスレーブ同期制御部２２０が，専用のハードウェア回路によって実現されてもよい。
【００４０】
図４は，本実施の形態によるマルチキャスト空間の設定を説明する図である。
【００４１】
図４に示すメモリ空間は，ホスト１０におけるメモリ空間である。このホスト１０のメモリ空間に，マルチキャスト空間が設定される。図４に示すメモリ空間において，各グループ＃０〜＃３は，それぞれ４Ｋバイトのブロックである。本実施の形態では，最大で４つまでの連続した４Ｋバイトのブロックの空間が，マルチキャスト空間として定義可能となっているものとする。
【００４２】
例えば，マスタのグラフィックカード２０ａにおけるマスタ同期制御部２１０のマルチキャスト設定部２１１は，ホスト１０で動作するコンフィグレーションソフトウェアに対して，マルチキャスト空間として希望するブロック数を含む，マルチキャスト空間設定の要求を発行する。要求を受けたコンフィグレーションソフトウェアは，希望されたブロック数のマルチキャスト空間を設定し，各種ドライバ等によって，各ＰＣＩｅブリッジ１３１および各グラフィックカード２０に対して，マルチキャスト空間のベースアドレス，ブロック数等の情報を設定する。
【００４３】
図５は，本実施の形態による同期パケットの例を示す図である。
【００４４】
図５の例に示す同期パケットは，ＰＣＩｅのメモリ系トランザクションのリクエストパケットである。ここでは，そのビット定義を示す。マスタのグラフィックカード２０ａから同期パケットが発行される際には，同期パケットに定義されたビットの＋０→＋１→・・・の順，またＤＷ（Double Word ）＃０→ＤＷ＃１→・・・の順でシリアルに変換され，ＰＣＩｅのリンクに送り出される。
【００４５】
図５に示す同期パケットは，３２ビットＣＰＵパケットで，Ａｔｔｒｉｂｕｔｅ〜Ａｄｄｒｅｓｓまでの３ＤＷヘッダのタイプである。Ａｔｔｒｉｂｕｔｅは，例えばリクエストがリードであるかライトであるかなど，パケットの性格を定義する部分である。Ｌｅｎｇｔｈの部分は，同期パケットのデータ（Ｐａｙｌｏａｄの部分）のＤＷ数を示す。ＢＥはバイトイネーブルであり，Ｌｅｎｇｔｈで指定されたＤＷにおける最初のＤＷと最後のＤＷのライト時の有効バイトを示す。ＲｅｑＩＤは，ターゲットリクエストに対してコンプリーションのパケットを返すときのリクエスタ方向へのルーティングに使用されるもので，リクエストパケットのＡｄｄｒｅｓｓの情報に相当するリクエストエージェントのＩＤである。Ａｄｄｒｅｓｓは，リードやライトのリクエストの対象となるメモリアドレスを指定する部分である。
【００４６】
Ｐａｙｌｏａｄは，同期パケットに付随する，Ｌｅｎｇｔｈで指定されたＤＷ数のデータで，ライトのリクエストではここにライトデータが指定される。Ｐａｙｌｏａｄは，最大で１０２４ＤＷ（４０９６バイト）の長さとすることができる，Ｌｅｎｇｔｈの指定に応じた可変長の部分である。図５に示す例では，同期パケットにリードのリクエストを使う場合に好適な，最低限の１ＤＷのＰａｙｌｏａｄが示されている。
【００４７】
なお，Ｌｅｎｇｔｈの値は０が１０２４ＤＷを示すため，０ＤＷのデータのリクエストは本来発行できない。ただし，ＰＣＩｅにはゼロレングスリードと呼ばれる特殊なリードリクエストがあり，このリクエストでは，Ｌｅｎｇｔｈ＝１，ＢＥがオール０として指定される。この指定が行われると，ターゲットからは，１ＤＷの無意味のデータが返される。
【００４８】
同期パケットでは，Ａｄｄｒｅｓｓ部分に特定のメモリ空間，すなわちマルチキャスト空間が指定されることで，自身が同期パケットであることを示す。マルチキャスト空間は，いずれのグラフィックカード２０にも属さないホスト１０側のメモリ空間であり，同期パケットのターゲットはＣＰＵ１１のメインメモリ空間になる。この空間は，単に同期パケットのためのゼロレングスリードリクエストのためであれば，現実のメモリは実装されていてもよいし，されていなくてもよい。
【００４９】
図６は，本実施の形態による同期パケットの発行を説明する図である。
【００５０】
マスタのグラフィックカード２０ａは，自身の画像表示の同期タイミングが検出されると，マルチキャスト空間に対してバストランザクションの同期パケットを発行する。ここでは，同期パケットは，マルチキャスト空間におけるいずれかのグループ＃Ｘ（Ｘ＝０〜３）に対するリードリクエストのパケットであるものとする。
【００５１】
ＰＣＩｅブリッジ１３１には，マルチキャスト空間についての情報が設定されている。ＰＣＩｅブリッジ１３１は，受け取ったパケットに示される対象のアドレス空間が，設定されたマルチキャスト空間であるかを確認することで，該パケットがマルチキャストのパケットであるかを判断する。マスタのグラフィックカード２０ａから発行された同期パケットは，マルチキャスト空間を対象とするバストランザクションのパケットであるので，すべてのスレーブのグラフィックカード２０ｂ〜ｄに送られる。
【００５２】
各スレーブのグラフィックカード２０ｂ〜ｄには，すでに同期パケットが対象とするマルチキャスト空間が通知されている。各グラフィックカード２０ｂ〜ｄは，受け取ったパケットの対象が該当マルチキャスト空間である場合，そのパケットが同期パケットであると認識する。
【００５３】
図７は，本実施の形態による同期制御を説明する図である。
【００５４】
図７において，ＶＳＹＮＣ（２０ａ）は，マスタのグラフィックカード２０ａにおける同期信号（ここでは，垂直同期信号）を示す。同様に，ＶＳＹＮＣ（２０ｂ），ＶＳＹＮＣ（２０ｃ），ＶＳＹＮＣ（２０ｄ）は，それぞれスレーブのグラフィックカード２０ｂ〜ｄにおける同期信号（ここでは，垂直同期信号）を示す。「Ｒ」は，リードリクエストを利用した同期パケットを示す。
【００５５】
マスタのグラフィックカード２０では，例えば６０Ｈｚのフレーム間隔で，同期信号が発生され，ＬＣＤパネル３０ａに対する画像出力が行われているものとする。マスタのグラフィックカード２０ａにおいて，マスタ同期制御部２１０は，画像出力の同期信号が検出された際に，マルチキャスト空間を対象とした同期パケットを生成し，バス１３０に発行する。
【００５６】
各スレーブのグラフィックカード２０ｂ〜ｄは，マスタのグラフィックカード２０ａから発行された同期パケットを受信する。各スレーブのグラフィックカード２０ｂ〜ｄにおいて，スレーブ同期制御部２２０は，同期パケットの受信に応じて，同期信号を発生させる。各スレーブのグラフィックカード２０ｂ〜ｄでは，発生された同期信号に応じて，それぞれ対応するＬＣＤパネル３０ｂ〜ｄに対する画像出力が行われる。
【００５７】
なお，同期パケットとしてメモリリードのリクエストパケットを使用した場合，メモリからのリードデータを返すコンプリーションパケットが返されるが，本実施の形態による同期タイミングの通知に関しては，コンプリーションパケットに意味はない。
【００５８】
図８は，本実施の形態のマスタのグラフィックカードのマスタ同期制御部による同期制御処理フローチャートである。
【００５９】
マスタのグラフィックカード２０ａにおいて，マスタ同期制御部２１０の同期タイミング監視部２１２は，自グラフィックカード２０ａによるＬＣＤパネル３０ａへの画像出力の同期信号が検出されたかを判定する（ステップＳ１０）。同期信号が検出された場合（ステップＳ１０のＹＥＳ），同期パケット生成部２１３は，所定のマルチキャスト空間を対象とした同期パケットを生成する（ステップＳ１１）。同期パケット発行部２１４は，生成された同期パケットをホスト１０のバス１３０に発行する（ステップＳ１２）。
【００６０】
図９は，本実施の形態のスレーブのグラフィックカードのスレーブ同期制御部による同期制御処理フローチャートである。
【００６１】
各スレーブのグラフィックカード２０ｂ〜ｄにおいて，スレーブ同期制御部２２０の同期パケット監視部２２２は，マスタのグラフィックカード２０ａからの同期パケットが検出されたかを判定する（ステップＳ２０）。より具体的には，同期パケット監視部２２２は，自グラフィックカード２０が受信したパケットの対象が，マルチキャスト空間情報保持部２２１に記憶された，同期パケットの対象として設定されたマルチキャスト空間であるかを判定する。同期パケット監視部２２２は，受信したパケットの対象が同期パケットの対象として設定されたマルチキャスト空間である場合，該受信したパケットが同期パケットであると判断する。同期パケットが検出された場合（ステップＳ２０のＹＥＳ），同期信号発生部２２３は，自グラフィックカード２０ｂ〜ｄによるＬＣＤパネル３０ｂ〜ｄへの画像出力の同期信号を発生させる（ステップＳ２１）。
【００６２】
本実施の形態によるバストランザクションを用いた同期タイミングの通知の精度を確保するために，さらに，ＰＣＩｅのＱｏＳ（Quality Of Service）機能を利用するようにしてもよい。
【００６３】
ＰＣＩｅにおけるＱｏＳ機能は，例えば音声のサンプリング周波数やビデオのフレーム周波数など，一般にアイソクロナス転送と呼ばれる等時間間隔，一律容量のデータ転送を必要とする機器に対するデータ転送サービスの機能を示す。ＰＣＩｅでは，プライオリティベースとタイミングベースの２つのＱｏＳの実現方法がある。
【００６４】
プライオリティベースのＱｏＳでは，アイソクロナス転送のパケットが，他のパケットと差別化されて優先配信される。プライオリティベースのＱｏＳは，電話網のパケット交換サービスなどに古くから用いられている。
【００６５】
タイミングベースのＱｏＳでは，バスの使用が，アイソクロナス転送用の時間帯と，それ以外の転送（バルク転送）の時間帯とに，あらかじめ周期的にスケジュールされる。例えば，ＵＳＢ（Universal Serial Bus）やＩＥＥＥ１３９４など，ＰＣ等で使われているバスでは，この転送の周期を示す固定的なフレームマーカー信号がバスに出力され，アイソクロナス転送を期待するデバイスやホストでは，このマーカー信号を基準とした一定間隔，一定期間のデータ転送が繰り返される。
【００６６】
ＰＣＩｅでは，一つの物理リンクにバーチャルチャネルと呼ばれる仮想的なチャネルが定義され，転送プライオリティが差別化された独立したパイプとして，バスを使用することができる。本実施の形態における同期タイミングを通知するバストランザクションに，高プライオリティのバーチャルチャネルを使うことで，それが他のバストランザクションに対して優先して配信されるようになる。これにより，スレーブのグラフィックカード２０ｂ〜ｄに通知される同期フレーム間隔の精度が，向上する。
【００６７】
図１０は，本実施の形態によるＰＣＩｅのバーチャルチャネルのプライオリティ定義の例を示す図である。
【００６８】
図１０において，ＶＣｘ（ｘ＝０〜７）は，バーチャルチャネルを示す。ＰＣＩｅのバーチャルチャネルは，最大で８つであり，システムがいくつのバーチャルチャネルをサポートしているかは，チップセットに依存する。ｘの値が大きいほどプライオリティが高いバーチャルチャネルとなっており，ＶＣ０が最低のプライオリティのバーチャルチャネルとなる。
【００６９】
図１０に示すように，複数のバーチャルチャネルを，ｘの値の大きいグループとｘの値の小さいグループの２つのグループに分け，ｘの値の大きいグループを固定プライオリティグループとし，ｘの値の小さいグループを均等プライオリティグループとすることもできる。固定プライオリティグループでは，ｘの値が大きいバーチャルチャネルを常に優先する，固定的なプライオリティのアービトレーションが行われる。均等プライオリティグループでは，今回ピックアップされたバーチャルチャネルのプライオリティが，次回のアービトレーションでは最低プライオリティとされ，ｘの値には関わらない公平なアービトレーションが行われる。どのバーチャルチャネル間を２つのグループの境界とするかについては，任意の設定が行える。
【００７０】
ＰＣＩｅの仕組みでは，固定プライオリティではプライオリティベースでのＱｏＳの実現が想定され，均等プライオリティではタイミングベースでのＱｏＳの実現が想定されている。つまり，固定プライオリティか均等プライオリティかのグループ分けによる決定的なプライオリティの差がある場合でも，均等プライオリティグループによるＱｏＳも実現される。
【００７１】
図１１は，本実施の形態の固定プライオリティによる同期パケット転送の例を説明する図である。
【００７２】
ここでは，ＶＣ０，ＶＣ１の２つのバーチャルチャネルがサポートされている場合の例を，説明する。ＰＣＩｅの固定プライオリティの規則に従うと，２つのバーチャルチャネルの内，ＶＣ１の方がプライオリティが高く，ＶＣ０の方がプライオリティが低い。このとき，ＶＣ１のパケットの転送が優先され，その隙間をぬう形でＶＣ０のパケットの転送が行われる。
【００７３】
図１１において，「Ｒ」は同期パケットの転送を示す。図１１に示すように，同期パケットにＶＣ１を指定すれば，所定の同期間隔で同期パケットが優先的に転送されるようになるため，グラフィックカード２０間での同期制御の精度が高くなる。
【００７４】
図１２は，本実施の形態によるＰＣＩｅのタイムベースドＱｏＳの仕組みの例を説明する図である。
【００７５】
ここでは，ＶＣ０，ＶＣ１の２つのバーチャルチャネルがサポートされている場合の例を，説明する。ＶＣ０が均等プライオリティグループとなり，ＶＣ１が固定プライオリティグループとなるように，境界が設定されているものとする。この例では，ＶＣ１に対して低位にあるＶＣ０によってアイソクロナス転送が行われ，マスタのグラフィックカード２０ａから発行される同期パケットには，ＶＣ０が指定される。固定プライオリティグループに対して低位の均等プライオリティグループにあるＶＣ０でもタイミング的に優先されなければならないアイソクロナス転送が行えるのは，ＰＣＩｅがタイミングベースのチャネルアービトレーションの仕組みを備えていることによる。
【００７６】
図１２に示すように，ＰＣＩｅのアービトレーションは，ポートアービトレーションとＶＣアービトレーションの２段階のアービトレーションで行われ，最終的に最優先で出力されるパケットが決定される。図１２において，破線枠の楕円はポートアービトレーションを示し，実線枠の楕円はＶＣアービトレーションを示す。
【００７７】
第１段階のポートアービトレーションでは，バーチャルチャネルごとに，どのポートからのパケットを優先するかのアービトレーションが行われる。図１２に示すように，ポートアービトレーションは，ＶＣアービトレーションのかたまりとなる。第２段階のＶＣアービトレーションでは，ポートアービトレーションの結果に複数のバーチャルチャネルが存在する場合に，どのバーチャルチャネルのパケットを優先するかのアービトレーションが行われる。
【００７８】
均等プライオリティグループでアイソクロナス転送を行うには，ポートアービトレーションの段階で，特定のバーチャルチャネルだけを入力する時間帯と，それ以外のバーチャルチャネルをやり取りする時間帯とに分けて，パケットをピックアップするスケジューリングを行う。このことにより，ある時間帯で特定のパケットを優先的に扱う，アイソクロナス転送が実現される。
【００７９】
図１３は，本実施の形態のアービトレーションテーブルと均等プライオリティによる同期パケット転送の例を説明する図である。
【００８０】
ポートアービトレーションは，アービトレーションテーブルを用いて行われる。図１３（Ａ）は，アービトレーションテーブルの例を示す。均等アービトレーションでＱｏＳを実現する場合には，アービトレーションテーブルを一定のタイムスロットでスキャンする，タイムベースドのアービトレーションを行うことで，バーチャルチャネルを入力するポートの決定が行われる。
【００８１】
なお，ＰＣＩｅのポートアービトレーションの方法には，タイムベースドの方法以外に，パケットの入力機会ごとに優先パケットを選択するモードもある。
【００８２】
図１３（Ａ）に示すアービトレーションテーブルには，バーチャルチャネルごと，１タイムスロットごとにアービトレーション対象のポート番号がセットされている。図１３（Ａ）に示すアービトレーションテーブルの例において，（０）は図１２におけるポート０を示し，（１）は図１２におけるポート１を示し，（２）は図１２におけるポート２を示す。
【００８３】
図１３（Ａ）に示すアービトレーションテーブルの例における矢印は，アービトレーションテーブルのスキャンが，左から右への順に，右端の後は左端に戻るように行われることを意味している。例えば，図１３（Ａ）のアービトレーションテーブルにおけるＶＣ１の例では，左端から順に，ポート０→ポート１→ポート２→ポート１→ポート０（左端）→・・・の順で，ＶＣ１のパケットが取り込まれることが示されている。
【００８４】
なお，図１３に示すアービトレーションテーブルにおいて，ポート０の指定はパケット入力をしないアイドルのタイムスロットを示す。図１２に示すアービトレーション例では，アービトレーションの方向がポート０を出力としているため，ポート０は，パケットのピックアップをする必要がない空きポート番号となる。このことを利用して，図１３に示すアービトレーションテーブルでは，ポート０の指定で，入力を受け付けないアイドルの時間帯を表している。
【００８５】
タイムスロットにポート番号を指定できるということは，バーチャルチャネルを入力するポートを，タイミング的に差別化できることを意味する。
【００８６】
例えば，図１３（Ａ）に示すアービトレーションテーブルにおいて，ＶＣ１のテーブルでは，最初のタイムスロットにアイドルを示すポート０が指定され，他のタイムスロットにはポート１またはポート２が指定されている。また，ＶＣ０のテーブルでは，最初のタイムスロットにのみポート１が指定され，他のタイムスロットにはアイドルを示すポート０が指定されている。このことから，各タイムスロットの時間帯にピックアップされるバーチャルチャネルは，図１３（Ｂ）に示す通りとなる。
【００８７】
図１３（Ａ）に示すアービトレーションテーブルから，左端の最初のタイムスロットの時間帯には，ＶＣ０のみが限定してピックアップされることが分かる。図１３（Ｂ）に示すように，１タイムスロットが１２８μｓであるものとすると，４タイムスロットの５１２μｓごとに，ＶＣ０の時間的優位が実現される。ポート１が，ＰＣＩｅにおけるマスタのグラフィックカード２０側のポートであれば，同期パケットのバーチャルチャネルにＶＣ０が指定されることで，アイソクロナス転送の優先制御を実現できる。図１３（Ｂ）において，「Ｒ」は，同期パケットの発行を示している。
【００８８】
このようなテーブルを用いたアービトレーションの結果，同じタイムスロットで複数のバーチャルチャネルが受け付けられる場合には，同時に受け付けられるバーチャルチャネルが次のＶＣアービトレーションに送られ，最終的なパケットが決定される。
【００８９】
ＶＣアービトレーションは，テーブルを用いない自動ラウンドロビンか，タイムベースドのテーブルイメージと同様のテーブルを使ったものかのどちらかの方法で行われるが，ここでのテーブルは，一定間隔スキャンのテーブルではなく，リクエストの機会ごとのスキャンのテーブルとなる。いずれの方法を用いるにしても，図１２，図１３に示す例では，均等プライオリティグループのバーチャルチャネルがＶＣ０の１つしか存在しないため，ＶＣアービトレーションの結果は，ポートアービトレーションの出力そのままのＶＣ０になる。このＶＣ０の出力は，固定プライオリティグループであるポートアービトレーションのＶＣ１の出力と，今度はＶＣｘの値に依存した固定プライオリティのアービトレーションが成され，最終的なパケットが選択出力される。
【００９０】
なお，同期パケットについてアイソクロナス転送の優先制御を行うためのバーチャルチャネルの番号は，例えばホスト１０で動作するコンフィグレーションソフトウェアによって，グラフィックカード２０のハードウェアに設定される。そのため，グラフィックカード２０を使用する通常のソフトウェアが意識せずとも，パケット発行のたびにハードウェアに設定されたバーチャルチャネルの番号が使用される。
【００９１】
このように，例えばＰＣＩｅにおけるＱｏＳ機能を用いて，同期パケットについてアイソクロナス転送の優先制御を行うことで，同期タイミングのばらつきが抑制された，精度が高いグラフィックカード２０間の同期制御が可能となる。
【００９２】
以上説明した本実施の形態による同期制御の技術によって，複数のグラフィックカード２０による画像表示の同期が可能となる。また，本実施の形態による同期制御の技術では，ホスト１０の汎用バスを利用して同期制御を行うので，特別な信号線の必要がない。また，本実施の形態による同期制御の技術を実現するために，既存のバストランザクションの仕組みに手を加える必要がない。そのため，本実施の形態による同期制御の技術は，安価に実現することができる。
【００９３】
以上，本実施の形態について説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【００９４】
例えば，本実施の形態の例では，３Ｄ映像の入出力を行うグラフィックカードの同期制御の例を説明したが，２次元映像の入出力を行うグラフィックカードの同期制御についても，本実施の形態による同期制御の技術の適用が可能である。
【００９５】
また，例えば，本実施の形態の例では，同期パケットとしてリードリクエストのパケットを利用しているが，同期パケットとしてリードリクエスト以外のパケットを利用してもよい。例えば，同期パケットとしてライトリクエストのパケットを利用してもよい。
【００９６】
また，例えば，本実施の形態の例では，ＰＣＩｅのインタフェースにおけるバストランザクションを利用して同期タイミングの通知を行っているが，同様のバストランザクションの機能を備える他のインタフェースを利用してもよい。
【符号の説明】
【００９７】
１０  ホスト
１１  ＣＰＵ
１２  メモリ
１３  ＰＣＨ
１３０  バス
１３１  ＰＣＩｅブリッジ
１３２  ポート
１４  スロット
２０  グラフィックカード
２１０  マスタ同期制御部
２１１  マルチキャスト設定部
２１２  同期タイミング監視部
２１３  同期パケット生成部
２１４  同期パケット発行部
２２０  スレーブ同期制御部
２２１  マルチキャスト空間情報保持部
２２２  同期パケット監視部
２２３  同期信号発生部
３０  ＬＣＤパネル
【図１】
2014182329.tif 000003
【図２】
2014182329.tif 000004
【図３】
2014182329.tif 000005
【図４】
2014182329.tif 000006
【図５】
2014182329.tif 000007
【図６】
2014182329.tif 000008
【図７】
2014182329.tif 000009
【図８】
2014182329.tif 000010
【図９】
2014182329.tif 000011
【図１０】
2014182329.tif 000012
【図１１】
2014182329.tif 000013
【図１２】
2014182329.tif 000014
【図１３】
2014182329.tif 000015