(57)【要約】【課題】  特定のバンクにアクセス要求が集中すると、アクセスの競合により遅延時間が発生し、情報処理装置全体としての処理速度が低下してしまう。【解決手段】  データ転送調停装置１７２は、複数バンクを有するメインメモリ１４０にデータを記録するメモリコントローラ１６０に対し、記録されるべきデータを順次転送する。選択部１７４は、ＤＭＡＣ１７０に対する転送サービスの優先順位とは関係なく、複数のＤＭＡＣ１７０の中からいずれかのＤＭＡＣ１７０を選択する。送信部１７６は、選択されたＤＭＡＣ１７０により転送要求されているデータを制御側転送部１１４に送信する。選択部１７４は、同一のＤＭＡＣ１７０に対する転送サービスが連続的に実行されるようにＤＭＡＣ１７０を連続的に選択し、かつ、その複数回の転送サービスによってＤＭＡＣ１７０のバンクをまたぐ転送が発生するようにその連続選択回数を定める。【選択図】  図２
2006318178.tif 000002
【特許請求の範囲】
【請求項１】
複数バンクを有するメモリにデータを記録するメモリコントローラに対し、記録されるべきデータを順次転送するための装置であって、
データ転送要求主体に対する転送サービスの優先順位とは関係なく、複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択する選択部と、
前記選択されたデータ転送要求主体により転送要求されているデータを前記メモリコントローラに送信する送信部と、を備え、
前記選択部は、同一のデータ転送要求主体に対する転送サービスが連続的に実行されるように前記データ転送要求主体を連続的に選択し、かつ、その複数回の転送サービスによって前記メモリのバンクをまたぐ転送が発生するようにその連続選択回数を定めることを特徴とするデータ転送調停装置。
【請求項２】
複数バンクを有するメモリにデータを記録するメモリコントローラに対し、記録されるべきデータを順次転送するための装置であって、
複数のデータ転送要求主体について定められた転送サービスの優先順位にしたがって、前記複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択する選択部と、
前記選択されたデータ転送要求主体により転送要求されているデータを前記メモリコントローラに送信する送信部と、を備え、
前記選択部は、転送サービスを受けたあとのデータ転送要求主体が更なるデータの転送を要求している場合には、前記優先順位にしたがって次に転送サービスを受けるべきデータ転送要求主体が存在しても前記転送サービスを受けたあとのデータ転送要求主体を連続的に選択し、その複数回の転送サービスによって前記メモリのバンクをまたぐ転送が発生するようにその連続選択回数を定めることを特徴とするデータ転送調停装置。
【請求項３】
前記バンクのエントリビット数と前記データ転送要求主体に対する１回の転送サービスにより送信されるデータのビット数は同一であることを特徴とする請求項１または２に記載のデータ転送調停装置。
【請求項４】
前記選択部は、１回の転送サービスにて転送されるデータのビット数と前記連続選択回数との積が、予め定められたストライド長以下となるよう前記連続選択回数を定めることを特徴とする請求項１から３のいずれかに記載のデータ転送調停装置。
【請求項５】
前記選択部は、ラウンドロビン方式、ＬＲＵ（Least Recently Used）方式およびランダム方式の少なくともいずれかの選択方式にて、データ転送要求主体を選択することを特徴とする請求項１に記載のデータ転送調停装置。
【請求項６】
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスする方法であって、
データ転送要求主体に対する転送サービスの優先順位とは関係なく、同一のデータ転送要求主体に対する転送サービスを所定の回数連続して行い、かつ、その複数の転送サービスによって前記メモリのバンクをまたぐ転送が発生するよう前記所定の回数が定められることを特徴とするデータ転送調停方法。
【請求項７】
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスする方法であって、
前記複数のデータ転送要求主体について定められた転送サービスの優先順位にしたがって、前記複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択して転送サービスを行い、かつ、その転送サービスを受けたあとのデータ転送要求主体が更なるデータの転送を要求している場合には、前記優先順位にしたがって次に転送サービスを受けるべきデータ転送要求主体が存在しても前記転送サービスを受けたあとのデータ転送要求主体に対する転送サービスを連続して行い、その複数回の転送サービスによって前記メモリのバンクをまたぐ転送が発生するようにその連続選択回数が定められることを特徴とするデータ転送調停方法。
【請求項８】
請求項６または７に記載の方法において、前記バンクのエントリビット数と１回の転送サービスで転送されるデータのビット数は同一であり、同一のデータ転送要求主体に対する転送サービスを２回以上連続して行うことを特徴とするデータ転送調停方法。
【請求項９】
請求項６から８のいずれかに記載の方法において、１回の転送サービスで転送されるデータのビット数と前記所定の回数との積が、予め定められたストライド長以下となるように前記所定の回数が定められることを特徴とするデータ転送調停方法。
【請求項１０】
請求項６に記載の方法において、転送サービスの対象となるデータ転送要求主体は、ラウンドロビン方式、ＬＲＵ方式およびランダム方式の少なくともいずれかの選択方式にて選択されることを特徴とするデータ転送調停方法。
【請求項１１】
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスするためのコンピュータプログラムであって、
データ転送要求主体に対する転送サービスの優先順位とは関係なく、同一のデータ転送要求主体に対する転送サービスを所定の回数連続して行い、かつ、その複数の転送サービスによって前記メモリのバンクをまたぐ転送が発生するよう前記所定の回数が定められることを特徴とするデータ転送調停プログラム。
【請求項１２】
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスするためのコンピュータプログラムであって、
前記複数のデータ転送要求主体について定められた転送サービスの優先順位にしたがって、前記複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択して転送サービスを行い、かつ、その転送サービスを受けたあとのデータ転送要求主体が更なるデータの転送を要求している場合には、前記優先順位にしたがって次に転送サービスを受けるべきデータ転送要求主体が存在しても前記転送サービスを受けたあとのデータ転送要求主体に対する転送サービスを連続して行い、その複数回の転送サービスによって前記メモリのバンクをまたぐ転送が発生するようにその連続選択回数が定められることを特徴とするデータ転送調停プログラム。
【請求項１３】
コンピュータにて読み取り可能な記録媒体であって、
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスするためのコンピュータプログラムであって、データ転送要求主体に対する転送サービスの優先順位とは関係なく、同一のデータ転送要求主体に対する転送サービスを所定の回数連続して行い、かつ、その複数の転送サービスによって前記メモリのバンクをまたぐ転送が発生するよう前記所定の回数が定められることを特徴とするデータ転送調停プログラム
を格納した記録媒体。
【請求項１４】
コンピュータにて読み取り可能な記録媒体であって、
複数バンクを有するメモリに対し、複数のデータ転送要求主体から並行してデータ転送要求が発行されたとき、それらデータ転送要求主体に対して順次転送をサービスするためのコンピュータプログラムであって、前記複数のデータ転送要求主体について定められた転送サービスの優先順位にしたがって、前記複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択して転送サービスを行い、かつ、その転送サービスを受けたあとのデータ転送要求主体が更なるデータの転送を要求している場合には、前記優先順位にしたがって次に転送サービスを受けるべきデータ転送要求主体が存在しても前記転送サービスを受けたあとのデータ転送要求主体に対する転送サービスを連続して行い、その複数回の転送サービスによって前記メモリのバンクをまたぐ転送が発生するようにその連続選択回数が定められることを特徴とするデータ転送調停プログラム
を格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリにデータを転送するための技術、特に、複数バンクを有するメモリにデータを転送するための技術、に関する。
【背景技術】
【０００２】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩に伴い、コンピュータ、ゲーム機器、テレビなどの情報処理装置はより高精細の画像データをより高速に処理する能力を求められている。そのためには、演算処理自体の高速化が必要であることは勿論であるが、演算結果や演算のためのデータのメモリアクセスを効率的に実行することも同様に重要である。
【０００３】
メモリアクセスを効率よく実行するための方法としてメモリインタリーブ（Memory Interleaving）とよばれる技術がある。メモリインタリーブ方式の前提として、メモリはメモリコントローラによる管理単位であるバンクを複数個備える。通常、バンクへアクセスしたときには、実際に読み書きするための時間であるアクセス時間の後に、次のアクセスが可能になるまでの遅延時間が発生する。この遅延時間は、ＤＲＡＭ（Dynamic Random Access Memory）特有のプリチャージ等の制約により発生する。
メモリインタリーブ方式では、あるバンクの遅延時間中に次のバンクへのアクセスを開始するので、遅延時間の影響が緩和され、結果としてメモリアクセスが高速化されるというメリットがある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来のメモリインタリーブ方式においても、特定のバンクにアクセス要求が集中することがある。このときには、アクセス要求が集中したバンクの遅延時間の影響によって、情報処理装置全体としての処理パフォーマンスが低下することになる。
【０００５】
本発明は、このような課題に鑑みてなされたものであり、その目的は、メモリへのアクセスを効率的に実行するための技術、を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、複数バンクを有するメモリにデータを記録するメモリコントローラに対し、記録されるべきデータを順次転送するためのデータ転送調停装置である。
この装置は、データ転送要求主体に対する転送サービスの優先順位とは関係なく、複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択して、そのデータ転送要求主体により転送要求されているデータをメモリコントローラに送信する。このとき、同一のデータ転送要求主体に対する転送サービスが連続的に実行されるようにデータ転送要求主体を連続的に選択し、かつ、その複数回の転送サービスによってメモリのバンクをまたぐ転送が発生するようにその連続選択回数を定める。
【０００７】
ここでいう「優先順位とは関係なく」とは、他のデータ転送要求主体よりも特定のデータ転送要求主体に対して転送サービスを優先的に提供するように予め設定するのではなく、各データ転送要求主体に対して転送サービスを提供する機会が結果として均等化されるものであればよい。
【０００８】
また、本発明の別の態様も、複数バンクを有するメモリにデータを記録するメモリコントローラに対し、記録されるべきデータを順次転送するためのデータ転送調停装置である。
この装置は、複数のデータ転送要求主体について定められた転送サービスの優先順位にしたがって、それら複数のデータ転送要求主体の中からいずれかのデータ転送要求主体を選択して、そのデータ転送要求主体により転送要求されているデータをメモリコントローラに送信する。このとき、転送サービスを受けたあとのデータ転送要求主体が更なるデータの転送を要求している場合には、優先順位にしたがって次に転送サービスを受けるべきデータ転送要求主体が存在してもその転送サービスを受けたあとのデータ転送要求主体を連続的に選択し、その複数回の転送サービスによってメモリのバンクをまたぐ転送が発生するようにその連続選択回数を定める。
【０００９】
ここでいう「優先順位」は、データ転送処理の実行中において複数のデータ転送要求主体間において可動であってもよい。
【００１０】
なお、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、メモリへのアクセスを効率的に実行できる。
【発明を実施するための最良の形態】
【００１２】
まず、本実施例におけるデータ転送が実現されるべき環境である情報処理装置全体の概要を述べた後、その情報処理装置におけるデータ転送に関連する機能について述べる。
【００１３】
図１は、情報処理装置の機能ブロック図である。
情報処理装置１００は、統括制御部１１０、画像処理部１２０およびメインメモリ１４０を含む。情報処理装置１００は表示装置１５０と接続されている。表示装置１５０は、統括制御部１１０および画像処理部１２０の処理の結果得られた画像、映像を出力する。
【００１４】
図１などにおいて、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、この情報処理装置１００では、情報処理装置１００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、単に「ＯＳ」とよぶ）が実行される。ＯＳ上で複数のアプリケーションソフトウェアが実行される。
【００１５】
統括制御部１１０は、１つの主制御装置１１２と複数の副制御装置１１６および制御側転送部１１４を含む。副制御装置１１６、主制御装置１１２および制御側転送部１１４はバス１１８により相互通信可能である。主制御装置１１２は、各アプリケーションにおける基本処理単位としてのタスクを各副制御装置１１６に割り当てる。あるいは、主制御装置１１２自身がタスクを実行してもよい。副制御装置１１６がそれぞれ割り当てられたタスクを実行することにより、複数のタスクが並列処理される。
以下、タスクの割り当て処理を含む主制御装置１１２により実行される処理のことを「メインプロセス」、副制御装置１１６により実行される処理のことを「サブプロセス」とよぶ。主制御装置１１２は、ユーザインタフェースに関する処理のように比較的優先度が高い情報処理装置１００全体を統括する処理を実行する。これに対して、副制御装置１１６は、比較的優先度が低いバックグラウンドで実行される計算のようにメインプロセスの下請け的な処理を実行する。
【００１６】
制御側転送部１１４は、メインメモリ１４０やグラフィックスメモリ１２８との間のデータ転送、データ退避などを主制御装置１１２または副制御装置１１６からの命令、あるいは、画像処理部１２０からの要求によって制御する。
【００１７】
メインメモリ１４０は、統括制御部１１０や画像処理部１２０によって使用される記憶領域である。メインメモリ１４０には、タスクの実行状態に関連するデータが格納される。メインメモリ１４０には、たとえば、統括制御部１１０によりコンピュータグラフィックスに関するタスクが処理されて得られたモデリングデータなどが一時的に格納される。また、このメインメモリ１４０には、画像処理部１２０により生成されたデータが退避される場合もある。
【００１８】
画像処理部１２０は、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。画像処理部１２０は、統括制御部１１０からの指示により画像処理を実行する。画像処理部１２０は、統括制御部１１０により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置１５０に出力する。画像処理部１２０は、複数の画像処理を時分割して並列的に実行してもよい。
【００１９】
画像処理部１２０は、グラフィックスメモリ１２８、演算ユニット１３０、ディスプレイコントローラ１２６、制御ブロック１２４および画像処理側転送部１２２を含む。これらのユニット同士も、バス１１８で接続されており、各ユニット間で相互通信可能である。
【００２０】
グラフィックスメモリ１２８は、画像処理部１２０により使用、管理されるグラフィックスデータを記憶するためのメモリ領域である。グラフィックスメモリ１２８には、画像フレームデータが格納されるフレームバッファやＺバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブルなどのデータに対応する領域が用意されている。
【００２１】
制御ブロック１２４は、画像処理部１２０全体を制御するブロックである。制御ブロック１２４は、演算ユニット１３０、グラフィックスメモリ１２８、ディスプレイコントローラ１２６を統括的に制御し、各ブロック間のデータ転送の同期管理やタイマー管理等を行う。
【００２２】
画像処理側転送部１２２は、統括制御部１１０やメインメモリ１４０とグラフィックスメモリ１２８の間のデータ転送、データ退避などを制御ブロック１２４からの命令によって制御する。
【００２３】
ディスプレイコントローラ１２６は、水平および垂直同期信号を生成し、表示装置１５０の表示タイミングにしたがって、グラフィックスメモリ１２８に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１２６は、ライン状に読み込まれたピクセルデータを、ＲＧＢのカラー値からなるデジタルデータから表示装置１５０に対応したフォーマットに変換して出力する。
【００２４】
演算ユニット１３０は、制御ブロック１２４からの命令にしたがって、グラフィックに関する様々な演算処理を行う。その処理の一例としては、３次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
演算ユニット１３０は、特に３次元グラフィックスに関する処理を高速に行うために、ラスタライザ１３２、シェーダユニット１３４、テクスチャユニット１３６などの機能ブロックを含む。
【００２５】
ラスタライザ１３２は、描画する基本物体（以下、「プリミティブ」とよぶ）の頂点データを統括制御部１１０から受け取り、３次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ１３２によってプリミティブがピクセル展開されて、各ピクセルごとにピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値が含まれる。
【００２６】
ラスタライザ１３２は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット１３４、テクスチャユニット１３６へと出力する。ラスタライザ１３２から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット１３４はスタックされたピクセル領域を順に処理していく。
【００２７】
シェーダユニット１３４は、ラスタライザ１３２により算出されたピクセル情報をもとにシェーディング処理を行い、テクスチャユニット１３６により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ１２８内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット１３４はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００２８】
テクスチャユニット１３６は、シェーダユニット１３４からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ１２８内のテクスチャバッファを読み出し、所定の処理を行った後にシェーダユニット１３４に対して出力する。
【００２９】
画像処理部１２０はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部１１０から与えられると、統括制御部１１０とは独立して画像処理を実行する。画像処理部１２０により生成されたデータはグラフィックスメモリ１２８やメインメモリ１４０に転送される。また、統括制御部１１０からの要求、あるいは、画像処理部１２０からの指示によりグラフィックスメモリ１２８に記憶されているデータがメインメモリ１４０に転送されることもある。画像処理部１２０が保持するデータをメインメモリ１４０に転送するときには、画像処理側転送部１２２は制御側転送部１１４に対してデータを転送する。そして、制御側転送部１１４は、受け取ったデータをメインメモリ１４０へ記録する。
【００３０】
図２は、画像処理部からメインメモリへのデータ転送に関連する機能ブロック図である。
画像処理側転送部１２２は複数のデータ転送要求主体となるＤＭＡＣ（Direct Memory Access）１７０と、データ転送調停装置１７２を含む。画像処理部１２０においては複数系統からのデータ転送要求がこれらのＤＭＡＣ１７０を介してデータ転送調停装置１７２に対して発行される。各ＤＭＡＣ１７０によるデータ転送要求経路をチャンネル（以下、「ＣＨ」とも表記する）とよぶ。以下、これらのチャンネルは、ＣＨ０〜ＣＨ３の４系統であるとして説明する。この場合、ＤＭＡＣ１７０は４個である。
【００３１】
データ転送調停装置１７２の選択部１７４は、ＣＨ０〜ＣＨ３のうちのいずれかを選択する。言い換えれば、選択部１７４はＣＨ０〜ＣＨ３のいずれかに対応づけられたＤＭＡＣ１７０を選択する。選択方法については後に詳述する。送信部１７６は選択されたＤＭＡＣ１７０から転送を要求されている所定長のデータをバス１１８を介して制御側転送部１１４に転送する。以下、このとき転送されるデータのサイズのことを「基本転送サイズ」とよぶ。仮に、基本転送サイズは１２８バイトであるとして説明する。転送されるデータには、メインメモリ１４０における書き込み先を特定するためのアドレス情報が含まれる。
【００３２】
制御側転送部１１４のメモリコントローラ１６０は、データ転送調停装置１７２から転送されたデータをメインメモリ１４０に書き込むが、そのデータ書込命令はメモリコントローラ１６０の書込命令記憶部１６２に一時的に記憶される。書込命令記憶部１６２はキャッシュメモリとして構成されてもよい。また、データ転送調停装置１７２から転送されたデータはメモリコントローラ１６０にて一時的に記憶される。メモリコントローラ１６０は、ＦＩＦＯ（First-In First-Out）方式にて書込命令記憶部１６２からデータ書込命令から順次取り出して、メインメモリ１４０の該当アドレスに転送されてきたデータを記録する。なお、メモリコントローラ１６０は、ＦＩＦＯ方式を基本としつつも、書込命令記憶部１６２からデータ書込命令の取り出し順序を適宜変更することができるが、それについては「読み飛ばし方式」として後述する。
【００３３】
メインメモリ１４０は、複数のバンクを含む。各バンクは、ここでは、物理的に別個のメモリセルである。あるバンクの遅延時間中に別のバンクへアクセス要求を発行することは可能である。以下、各バンクのエントリビット数は１２８バイトであるとして説明する。各バンクは１２８バイトごとにアドレスが割り振られている。各バンクについてのアドレステーブル１８０については、次の図３に関連して説明する。
【００３４】
図３は、メインメモリにおけるアドレステーブルのデータ構造図である。
本実施例においては、メインメモリ１４０は１６個のバンクを有する。以下、これら１６個のバンクを識別するために、バンク０、バンク１、・・・、バンク１５ともよぶ。
【００３５】
メモリのアドレス０〜１２７の１２８バイト分はバンク０、アドレス１２８〜２５５の１２８バイト分はバンク１、・・・というように１２８バイト単位でバンクが切り替わるようにアドレスが割り振られている。そして、１２８バイト×１６バンクの２０４８バイト単位ごとに、ふたたび、バンク０からアドレスが割り振られている。すなわち、アドレス２０４８〜２７１５の１２８バイト分はバンク０、アドレス２７１５〜２８４３の１２８バイト分はバンク１という具合である。
【００３６】
あるＤＭＡＣ１７０が転送要求するデータのメインメモリ１４０におけるアドレスは連続することが多い。このような、特性に鑑みて、図３のアドレステーブル１８０に示したようにアドレスを割り振っておくことにより、各バンクへのアクセスが分散されやすくなる。たとえば、バンク０を書き込み先とするデータが転送されてきた後には、バンク１、バンク２という順にデータが転送されてくる可能性が高い。このような場合、バンク０が遅延時間中であっても、バンク１への書き込みを開始できるため、メモリアクセスを効率的に実行できる。
次に、一般的なメモリアクセスの方法を図４および図５に関連して説明し、本実施例におけるメモリアクセスの方法について図６および図７に関連して説明する。
【００３７】
図４は、データ転送調停装置がデータを転送する一般的な過程を示すフローチャートである。ここに示すＳ１０〜Ｓ１４までの処理は繰り返し実行されるループ処理である。
まず、データ転送調停装置１７２の選択部１７４は複数のチャンネルのうちのいずれかを選択する（Ｓ１０）。たとえば、ラウンドロビン方式で選択するときには、選択部１７４はＣＨ０〜ＣＨ３を順番に選択する。選択されたチャンネルのＤＭＡＣ１７０が転送すべきデータを持っていれば（Ｓ１２のＹ）、データ転送調停装置１７２の送信部１７６はそのデータに対するデータ書込命令を制御側転送部１１４に送信する（Ｓ１４）。送信後、処理はふたたびＳ１０に戻り、次のチャンネルが選択される。選択されたチャンネルのＤＭＡＣ１７０が転送すべきデータを持っていないときには（Ｓ１２のＮ）、送信処理をすることなく処理はＳ１０に戻り、次のチャンネルが選択される。
このように、１回の転送サービスにおいて送信されるべきデータ量である基本転送サイズのデータがいったん送信された後は、次のチャンネルが選択される。なお、選択されたチャンネルにおいて転送要求されているデータが基本転送サイズに満たない場合には、転送要求されているデータはすべて転送される。
【００３８】
図５は、図４に示した処理により書込命令記憶部に記憶されるデータ書込命令の態様を示すための模式図である。
ここでは、ＣＨ０からはバンク０、１、２に対する転送要求、ＣＨ１からもバンク０、１、２、ＣＨ２からバンク０、１に対する転送要求が発行されているとする。以下、ＣＨ１がバンク０を書き込み先として転送要求したデータ書込命令のことを「ＣＨ１：バンク０」というように送信元のチャンネルと書き込み先のバンク名を並べて表記する。
図４に示したフローチャートによればデータ転送調停装置１７２の選択部１７４は、ＣＨ０、ＣＨ１、ＣＨ２の順に選択するため、「ＣＨ０：バンク０」、「ＣＨ１：バンク０」、「ＣＨ２：バンク０」、「ＣＨ０：バンク１」、・・・という順にデータが転送されることになる。書込命令記憶部１６２は、この転送順にデータ書込命令を記憶する。
【００３９】
以下、「書き込み処理」とは、バンクにデータの書き込みを開始してから次の書き込みが可能となるまでの処理であるとして説明する。すなわち、書き込み処理の実行時間は、アクセス時間と遅延時間を合わせた時間である。
メモリコントローラ１６０は、ＦＩＦＯ方式にて一番古い「ＣＨ０：バンク０」のデータ書込命令を取り出して、メインメモリ１４０への書き込み処理を開始する。次にメモリコントローラ１６０は、「ＣＨ１：バンク０」のデータ書込命令を取り出す。このとき「ＣＨ０：バンク０」のデータ書込命令についての書き込み処理が完了し、次の書き込み開始が可能な状況になければ、メモリコントローラ１６０は「ＣＨ１：バンク０」のデータ書き込み処理を開始できない。そのため、「ＣＨ１：バンク０」のデータの書き込み処理は、「ＣＨ０：バンク０」のデータの書き込み処理が完了するまで待たされることになる。さらに、次の「ＣＨ２：バンク０」のデータ書込命令もバンク０に対する書き込み要求であるため、これも待たされることになる。
このように、一般的な複数チャンネルにおいてメモリアクセスする場合、特定のバンクにアクセスが集中してしまい、メモリコントローラ１６０の処理効率が低下してしまうことがある。
【００４０】
このような状況への対処方法として、「ＣＨ０：バンク０」のデータ書込命令の読み出し後、「ＣＨ１：バンク０」や「ＣＨ２：バンク０」に優先して「ＣＨ０：バンク１」を先に読み出す方法が考えられる。以下、このような処理方式のことを「読み飛ばし方式」とよぶ。読み飛ばし方式によれば、バンク０の遅延時間中にバンク１への書き込み処理を開始できる。また、さらに読み出し順序を変えて、「ＣＨ０：バンク１」の次には「ＣＨ０：バンク２」を読み出せば、バンク１が遅延時間中であっても、続けてバンク２への書き込み処理を開始できる。そして、最初の「ＣＨ０：バンク０」への書き込み処理が完了していれば、「ＣＨ１：バンク０」のデータの書き込み処理を開始する。
メモリアクセス時における遅延時間の影響を抑えるために、ＦＩＦＯ方式を基本としつつも、適宜、メモリコントローラ１６０がデータ記憶部１６２からデータを読み出す順序をこのように変更してもよい。
【００４１】
読み飛ばし方式の場合、メモリコントローラ１６０により読み飛ばしの実行可否を判断する必要があるが、このために、メモリコントローラ１６０に過度の処理負荷がかかることは転送スループットの面からみて望ましくない。
【００４２】
図６は、本実施例におけるメモリアクセス方式においてデータ転送調停装置がデータを転送する過程を示すフローチャートである。ここに示すフローＳ２０〜Ｓ２４までの処理も繰り返し実行されるループ処理である。以下、図５に関連して説明する方式を「本方式」とよぶ。
まず、選択部１７４はいずれかのチャンネルを選択する（Ｓ２０）。このときにもたとえば、ラウンドロビン方式のように既知の選択方法にて選択してもよい。そのほかには、過去にデータ転送を要求する頻度が高い順にＤＭＡＣ１７０を選択するＬＲＵ（Least Recently Used）方式や、ランダムにいずれかのＤＭＡＣ１７０を選択するランダム方式にてＤＭＡＣ１７０を選択してもよい。
【００４３】
選択されたチャンネルのＤＭＡＣ１７０にデータ転送要求があれば（Ｓ２２のＹ）、送信部１７６はそのデータ書込命令を制御側転送部１１４に転送する（Ｓ２４）。ここで、選択部１７４は、そのＤＭＡＣ１７０から連続的にデータが送信されている場合、その送信されたデータの合計サイズが、予め定められたストライド長に達しているか否かを判定する（Ｓ２６）。ストライド長に達していないときには（Ｓ２６のＮ）、処理はＳ２２に戻る。そして、先に選択されていたチャンネルのＤＭＡＣ１７０がさらにデータ転送要求があれば（Ｓ２２のＹ）、再度、同じＤＭＡＣ１７０から基本転送サイズのデータが転送される（Ｓ２４）。
【００４４】
一方、ストライド長に達していれば（Ｓ２６のＹ）、Ｓ２０の処理に戻って次のＤＭＡＣ１７０が選択される。すなわち、選択されたチャンネルのＤＭＡＣ１７０からは、ストライド長を限度として続けてデータが転送され得る。ストライド長が２０４８バイトであるとすれば、基本転送サイズは１２８バイトであるので、２０４８÷１２８で計１６回、同一のＤＭＡＣ１７０から連続的にデータが転送され得る。一方、選択されたチャンネルのＤＭＡＣ１７０がデータ転送要求をしていないときには（Ｓ２２のＮ）、そのまま処理はＳ２２に戻り、次のチャンネルが選択される（Ｓ２０）。
【００４５】
図７は、図６に示した処理により書込命令記憶部に記憶される転送データの態様を示すための模式図である。
図６に示した転送方式によれば、あるチャンネルが選択されたあとに別のチャンネルが選択される場合は２種類ある。一つ目は、選択されたチャンネルからもはや転送すべきデータがなくなったときである。このときには、別のチャンネルが選択される。もう一つは、選択されたチャンネルから連続的に転送されたデータの合計量がストライド長に達したときである。このときにも、別のチャンネルが選択される。図５と同じく、ここでも、ＣＨ０からはバンク０、１、２に対する転送要求、ＣＨ１からもバンク０、１、２、ＣＨ２からバンク０、１に対する転送要求が発行されているとする。図６に示したフローチャートによれば、選択部１７４はＣＨ０を３回連続で選択した後にＣＨ１を選択することになるので、「ＣＨ０：バンク０」、「ＣＨ０：バンク１」、「ＣＨ０：バンク２」、「ＣＨ１：バンク０」、・・・という順にデータが転送されることになる。データ記憶部１６２は、この転送順にデータを記憶する。
【００４６】
メモリコントローラ１６０は、一番古い「ＣＨ０：バンク０」のデータを取り出して、メインメモリ１４０への書き込み処理を開始する。バンク０への書き込み処理において遅延時間に入ると、「ＣＨ０：バンク１」のデータを取り出してバンク１への書き込み処理を開始する。次に「ＣＨ０：バンク２」のデータを取り出してバンク２への書き込み処理を開始する。そのため、ＦＩＦＯ方式で読み出しながらも、各バンクの遅延時間の影響を緩和しやすくなる。
特定のチャンネルを介して転送要求されるデータのアドレスは連続することが多いので、このような転送方法によれば、各バンクへのアクセスを分散させやすくなる。
【００４７】
なお、各ＤＭＡＣ１７０の間において選択部１７４の選択順位として優先順位を設けない方式であるラウンドロビン方式、ランダム方式、ＬＲＵ方式のほかに、優先順位を設ける場合についても付言しておく。
たとえば、ＣＨ０、ＣＨ１、ＣＨ２、ＣＨ３の順に優先順位がつけられているとする。この場合、選択部１７４は、ＣＨ０のＤＭＡＣ１７０においてデータの転送要求がなされていれば、ＣＨ０を最優先で選択する。一方、ＣＨ０のＤＭＡＣ１７０においてデータの転送要求がなされていなければ、次に優先順位が高いＣＨ１のＤＭＡＣ１７０にてデータ転送要求がなされているかチェックする。また、一旦、ＣＨ０が選択されると、その選択されたＣＨ０の順位は一時的に下げられ、優先順位はＣＨ１、ＣＨ２、ＣＨ３、ＣＨ０の順に変更される。このとき、ＣＨ０以外が選択されると、再び、優先順位はＣＨ０、ＣＨ１、ＣＨ２、ＣＨ３の順に戻される。このように、固定的に優先順位を設定しつつも、選択状況に応じて一時的に優先順位が変更される方式（以下、「可変優先順位方式」とよぶ）の場合であっても、本方式を適用可能である。図４に関連して説明した一般的な方式の場合、優先順位がＣＨ１、ＣＨ２、ＣＨ３、ＣＨ０となっているときにＣＨ１が選択されると、優先順位はＣＨ０、ＣＨ１、ＣＨ２、ＣＨ３となるので次に選択されるのはＣＨ０である。一方、本方式の場合、ＣＨ１の選択後においてＣＨ１が更にデータ転送を要求している場合には、再度ＣＨ１が選択されることになる。このため、結果的に各バンクへのアクセスを分散させやすくなり、各バンクの遅延時間の影響を緩和しやすくなる。
【００４８】
さらに、本方式に先述した「読み飛ばし方式」を併用してもよい。本方式よれば、書込命令記憶部１６２において複数バンクへの書き込みを間断なく実行しやすい順にデータが蓄積されている。データ転送調停装置１７２により、各バンクに対するアクセスが分散するようにデータが転送されるからである。そのため、メモリコントローラ１６０が実行する読み飛ばし処理の実行回数は、図４や図５に関連して説明した一般的な処理方式に比べて抑制される。
書込命令記憶部１６２のサイズは有限であるため、書込命令記憶部１６２において特定のバンクに対するデータ書込命令ばかりが蓄積された場合には、たとえ読み飛ばし方式によっても各バンクへのアクセスを分散させることができない。これに対して、本方式によればデータ転送調停装置１７２が各バンクへのアクセスが分散するようにデータ書込命令を転送することになるので、データ書込命令の調停が、送信側と受信側、すなわち、データ転送調停装置１７２とメモリコントローラ１６０の両方で効率的に実行されることになり、データのメモリアクセスを更に効率化することができる。
【００４９】
本実施例では、基本転送サイズと、各バンクのエントリビット数を共に１２８バイトとしている。このため、画像処理側転送部１２２と制御側転送部１１４は、１２８バイトのデータブロックを１単位としてデータを扱えるため、制御側転送部１１４と画像処理側転送部１２２の間でデータをスムーズに取り扱うことができる。ストライド長は、バンクの個数とエントリビット数の積として定められてもよい。本実施例の場合、バンクの個数は１６でエントリビット数は１２８バイトであるから、ストライド長は２０４８バイトとなる。
【００５０】
ストライド長は、少なくともメモリコントローラ１６０における書込命令記憶部１６２に格納され得るデータ書込命令の最大個数と基本転送サイズの積以下であることが望ましい。また、バンク数も、書込命令記憶部１６２に格納され得るデータ書込命令の最大個数以下であることが望ましい。
また、ＤＭＡＣ１７０ごとのデータ転送のレイテンシを軽減させることを優先するときには、ストライド長を短くすることにより各ＤＭＡＣ１７０に対して比較的平等に転送サービスの提供機会を割り当ててもよい。反対に、複数のＤＭＡＣ１７０全体としてのスループットを重視するときには、ストライド長を長く設定することにより各バンクへのアクセスが分散しやすくなるように処置してもよい。
【００５１】
各チャンネルについて、それらのデータ書込先のアドレスが全バンク１周分のアドレスの中で分散しているときには、ランタイムにストライド長を短く設定してもよい。たとえば、図３の場合であれば、２０４８バイト分のアドレスの中で分散しているときである。このような場合には、ストライド長を長く設定することにより特定のチャンネルが連続的に選択されやすくなるように処置しなくとも、もともと各バンクへのアクセスが分散されやすい状況にあるといえるからである。データ転送調停装置１７２は、各ＤＭＡＣ１７０からのデータ書込先アドレスを先読みして、上記指針にてストライド長を増減させてもよい。
また、データ転送を要求しているＤＭＡＣ１７０が少ない場合には、ランタイムにストライド長を長く設定してもよい。このような場合には、あるＤＭＡＣ１７０を選択して別のＤＭＡＣ１７０を選択した場合であっても、先に選択されたＤＭＡＣ１７０が次に選択されるまで待たされる時間が短くて済むからである。すなわち、特定のＤＭＡＣ１７０が連続的に選択されても、他のＤＭＡＣ１７０が転送サービスを受けるまでに過度に長く待たされるという状態が生じにくいからである。
【００５２】
なお、バンク競合が発生したとき、すなわち、特定のバンクに対して連続的にデータ書込要求が来たときに先の書込終了から次の書込開始までの時間として発生する遅延時間と、あるバンクにアクセスしたあとに別のバンクにアクセスするときに発生する切り替えに伴って発生するレイテンシに基づいてストライド長の最低値が決定されてもよい。たとえば、バンク競合が発生したときの遅延時間が１００ナノ秒であったとする。これに対して、別のバンクにアクセスするときに発生するレイテンシが２０ナノ秒であったとする。この場合、１００÷２０＝５より、基本転送サイズ×５回を最低ストライド長として設定してもよい。
【００５３】
以上、本実施例によれば、メモリインタリーブ方式にてメインメモリ１４０にデータを書き込み処理するときに、特定のバンクへアクセスが集中するのを防ぎやすくなる。そのため、バンクに対する書き込み処理における遅延時間の影響が抑制され、メモリアクセスがより効率的に実行される。また、特定のＤＭＡＣ１７０から多くのデータ書込命令を連続的に発行させるように処置できるが、その一方で、ストライド長によって特定のチャンネルが連続的に選択される回数の上限を設けることにより、複数のＤＭＡＣ１７０に対して転送サービスの単位時間あたりの提供機会が偏らないように処置できる。
また、ＤＲＡＭの特性として、メインメモリ１４０に読み出しと書き込みを交互に実行する場合には、そのリードライト切り替えのための処理がオーバーヘッドとなりメモリアクセス効率を悪化させる要因となる。一方、特定のＤＭＡＣ１７０からはデータ書込命令かデータ読出命令が連続的に送信される傾向にある。本方式によれば、特定のＤＭＡＣ１７０から連続的にデータ書込命令やデータ読出命令を転送させるように処置できるので、このようなリードライト切り替えに伴うオーバーヘッドを軽減できる。
なお、本実施例においては、ＤＭＡＣ１７０から制御側転送部１１４に対してデータの書き込みを指示するための命令を転送する処理を中心として説明した。もちろん、本発明の範囲はこれに限られるものではない。ＤＭＡＣ１７０から制御側転送部１１４に対してデータの読み出しを指示するための命令を転送する場合であっても、本実施例にて示したデータ転送調停アルゴリズムは有効に作用し、また、同様の効果を発揮することができる。
【００５４】
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５５】
なお、請求項に記載のデータ転送要求主体の機能は、本実施例においては主としてＤＭＡＣ１７０により実現される。これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【図面の簡単な説明】
【００５６】
【図１】情報処理装置の機能ブロック図である。
【図２】画像処理部からメインメモリへのデータ転送に関連する機能ブロック図である。
【図３】メインメモリにおけるアドレステーブルのデータ構造図である。
【図４】データ転送調停装置がデータを転送する一般的な過程を示すフローチャートである。
【図５】図４に示した処理により書込命令記憶部に記憶されるデータ書込命令の態様を示すための模式図である。
【図６】本実施例におけるメモリアクセス方式においてデータ転送調停装置がデータを転送する過程を示すフローチャートである。
【図７】図６に示した処理により書込命令記憶部に記憶される転送データの態様を示すための模式図である。
【符号の説明】
【００５７】
１００  情報処理装置、  １１０  統括制御部、  １１２  主制御装置、  １１４  制御側転送部、  １１６  副制御装置、  １１８  バス、  １２０  画像処理部、  １２２  画像処理側転送部、  １２４  制御ブロック、  １２６  ディスプレイコントローラ、  １２８  グラフィックメモリ、  １３０  演算ユニット、  １３２  ラスタライザ、  １３４  シェーダユニット、  １３６  テクスチャユニット、  １４０  メインメモリ、  １５０  表示装置、  １６０  メモリコントローラ、  １６２  書込命令記憶部、  １７０  ＤＭＡＣ、  １７２  データ転送調停装置、  １７４  選択部、  １７６  送信部。
【図１】
2006318178.tif 000003
【図２】
2006318178.tif 000004
【図３】
2006318178.tif 000005
【図４】
2006318178.tif 000006
【図５】
2006318178.tif 000007
【図６】
2006318178.tif 000008
【図７】
2006318178.tif 000009