JP3224782B2 - 処理分担動的変更方法及びコンピュータ - Google Patents

処理分担動的変更方法及びコンピュータ

Info

Publication number
JP3224782B2
JP3224782B2 JP21885298A JP21885298A JP3224782B2 JP 3224782 B2 JP3224782 B2 JP 3224782B2 JP 21885298 A JP21885298 A JP 21885298A JP 21885298 A JP21885298 A JP 21885298A JP 3224782 B2 JP3224782 B2 JP 3224782B2
Authority
JP
Japan
Prior art keywords
processing
stage
queue
groups
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP21885298A
Other languages
English (en)
Other versions
JP2000057329A (ja
Inventor
桂 川瀬
孝男 森山
英史 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP21885298A priority Critical patent/JP3224782B2/ja
Priority to US09/345,371 priority patent/US6651082B1/en
Publication of JP2000057329A publication Critical patent/JP2000057329A/ja
Application granted granted Critical
Publication of JP3224782B2 publication Critical patent/JP3224782B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
・システムにおける処理分担の動的変更に関し、より詳
しくは、コンピュータにおけるホスト・プロセッサとグ
ラフィックス・アダプタにおける処理分担の動的変更に
関する。
【0002】
【従来の技術】OpenGLやDirect3Dといっ
たポリゴンベースの三次元グラフィックスの場合、全体
のパフォーマンスを決める主な要因は以下のようなもの
がある。 (1)API アプリケーションからAPIを介して描画コマンドを発
行する速度 (2)ジオメトリ(Geometry)処理 三角形分割/座標変換/照度計算といったジオメトリ処
理の速度 (3)セットアップ(Setup)処理 三角形の辺/面に沿った色/Z座標値/テクスチャ座標
値の勾配計算の速度 (4)ラスタ処理 三角形内部のピクセルの色/Z座標値/テクスチャ座標
値を補間して求め、それらをフレーム・バッファへ読み
書きする速度
【0003】(1)は、最も処理量が多い方法であると
ころの、頂点ごとにAPIを呼び出す方法を用いても、
一頂点当たり数十クロックしかかからないので、(1)
が問題となることはない。
【0004】(4)は一秒間に何ピクセル描画できるか
(ピクセル・レート(pixel rate)と呼ぶ)に相当す
る。このピクセル・レートはポリゴン・レート(polygo
n rate、後述)とは無関係であり、画面サイズ(例えば
640×480や1024×768といった一画面が何
ピクセルから構成されるか。)とフレーム・レート(fr
ame rate。一秒間に何コマ表示を行うか。CRTのリフ
レッシュ・レート(Refresh rate)とは異なる。一般
に、12−60フレーム/秒程度必要。)と画面上での
平均的な重なり(通常3回程度)によって要求量が決定
されるものである。最近のグラフィックス・アダプタで
はSXGA(1280×1024ピクセル)程度の画面
サイズまで、ほぼ問題ない程度になりつつある。
【0005】(2)及び(3)のジオメトリとセットア
ップ処理のパフォーマンスは直接一秒間に何ポリゴン処
理できるか(先に述べたポリゴン・レート)に相当す
る。セットアップ処理は、ジオメトリ処理の一部とされ
ることも多いので、ここではジオメトリ処理として扱う
ことにする。ジオメトリ処理は数多くの浮動小数点演算
が必要である。これには1頂点あたりの処理に数百から
数千クロックかかる。従って、ホスト・プロセッサの処
理能力だけでは不十分な場合が多い。例えば、10M個
の頂点を1秒間に処理する場合、1頂点処理するのに1
000クロック必要ならば、10Gクロック/秒のプロ
セッサが必要になってしまう。よって、グラフィックス
・アダプタ上にジオメトリ処理専用の演算器を設けるこ
とが多い。また処理の条件、例えば光源の数や光源の種
類等によって処理量が大きく変化する。
【0006】ところで、ホスト・プロセッサは描画コマ
ンド(Graphics Command)の列を主記憶装置に蓄える。
この描画コマンドの列をコマンド・キュー(Command Qu
eue)という。グラフィックス・アダプタはDMAを用
いてコマンド・キューの内容を内部に取り込み、処理を
施して表示装置に表示する。このコマンド・キューはD
MA転送を行う必要上物理的に主記憶装置内に又はグラ
フィックス・アダプタ上に存在しなければならない。従
って、コマンド・キューの大きさには制限がある。この
コマンド・キューが処理の途中で満杯になったり、空に
なったりすると、ホスト・プロセッサ又はグラフィック
ス・アダプタが停止するので、全体としてのパフォーマ
ンスが落ちてしまう。コマンド・キューが満杯(Ful
l)の場合には、ホスト・プロセッサはこれ以上コマン
ド・キューに書き込むことができないので、それに空き
が生じるまでホスト・プロセッサは処理を進めることが
できない。また、コマンド・キューが空(Empty)
である場合には、グラフィックス・アダプタは処理を行
うことができない。
【0007】ホスト・プロセッサの処理速度とグラフィ
ックス・アダプタの処理速度が等しければコマンド・キ
ューは満杯又は空になることはないが、以下の理由で両
者の処理速度を均等にすることはできなかった。 (a)表示のために使用できるホスト・プロセッサの処
理能力が予測困難である。ホスト・プロセッサの種類/
動作周波数/個数が多様である。また、表示以外で使用
するホスト・プロセッサの負荷が予測困難あり、動的に
変化する。 (b)上述のジオメトリ処理のように、描画コマンドの
ホスト・プロセッサ上での処理量(ワークロード:work
load)は、現在の状態やデータに依存して動的に変化
するので、予測困難である。例えばクリッピング(clip
ping)によって頂点の数は増減する。 (c)描画コマンドのグラフィックス・アダプタ上での
処理量は、現在の状態やデータに依存して動的に変化す
るので、予測困難である。
【0008】ホスト・プロセッサの処理能力と処理量を
それぞれPh,Lhとし、グラフィックス・アダプタの処
理能力と処理量をそれぞれPa,Laとすると、Lh/Ph
=L a/Paが成り立てば、コマンド・キューが空になっ
たり満杯になったりすることなく処理が進められるが、
h、Ph、La及びPaはいずれも予測不可能であり、必
ずしもシステムの性能を最大限引き出すことができてい
なかった。
【0009】特開平2−275581号公報は、機能毎
にその機能を使用する際に必要な時間が予め分かってい
る場合に、利用者が使用する幾つかの機能をオン/オフ
するごとに、複数のプロセッサの処理分担を変更して、
システム全体の処理速度を向上させる技術を開示してい
る。しかし、機能を使用する際に必要な時間は、処理す
るデータに依存するため、この公報の前提では処理分担
を適切に変更できない。また、ホスト・プロセッサはマ
ルチタスクOSの環境にあることが多く、グラフィック
スに割り当てられる計算能力は時々刻々と変化するた
め、この点においてもこの公報の前提は適切ではない。
さらに、この公報では、機能のオン/オフの全ての組み
合わせに対応する処理分担表を作っておく必要がある
が、実際の環境においてはオン/オフできる機能の数は
膨大になり実際的ではない。
【0010】
【発明が解決しようとする課題】よって、本発明では、
h、Ph、La及びPaがいずれも予測不可能である環境
において、Lh/Ph=La/Paに近づけることができる
ようなコンピュータ・システムを提供することである。
【0011】また、Lh/Ph=La/Paに近づけること
により、システム全体のパフォーマンスをできる限り引
き出すことができるようにすることも目的である。
【0012】さらに、将来のホスト・プロセッサの処理
能力の向上に適応できるようにし、製品寿命を伸ばすこ
とも目的である。
【0013】さらに、コマンド・キューが満杯になるよ
うな事態が生じても、ホスト・プロセッサの処理を停止
せずにシステム全体のパフォーマンスを下げないように
することも目的である。
【0014】
【課題を解決するための手段】少なくとも2つのグルー
プに分けることができる複数の処理装置を有するコンピ
ュータにおいて、各グループにおける、第1段から第n
段までの一連の処理の分担を動的に変更する本発明は、
グループ間で処理結果を受渡すためのキューにおける特
徴量の増減を検出するステップと、特徴量の増減に基づ
き、各グループにおける処理の分担を変更する変更ステ
ップとを含む。キューに格納されたデータの特徴量は、
処理量に関係する値を表すものであり、この特徴量を参
照しつつ処理分担を変更すれば、キューが満杯又は空に
なることはほとんど生じなくなる。
【0015】例えば、この特徴量は、キューに格納され
た情報の量又はキューのサイズ(長さ)であっても、グ
ラフィックスに関連する処理の場合、キューに格納され
た頂点データの数であってもよい。
【0016】また、先に述べた変更ステップは、特徴量
が所定のしきい値以上増加した場合には、グループ間の
処理分担の境界である第i段(1≦i<n)までの処理
を実施していたグループの担当を第i段より後段の処理
まで当該グループの担当と設定するステップを含むよう
にすることも考えられる。後段の処理とは、第i+1段
以降の処理である。また、特徴量が所定のしきい値以上
減少した場合には、グループ間の処理分担の境界である
第i段(1<i≦n)までの処理を実施していたグルー
プの担当を第i段より前段の処理までを当該グループの
担当と設定するステップを実行するようにすることも考
えられる。また、前段の処理とは、第i−1段以前の処
理である。
【0017】またこのように処理分担を動的に変える
と、後段の処理を実施するグループは、その段階から処
理を実施すべきかという情報が必要になる場合がある。
よって、処理結果は、何段目までの処理を実施したかに
ついての情報を含むようにすることも考えられる。
【0018】また、キューの使用量が上限に達していな
いか検査するステップと、キューの使用量が上限に達し
ている場合、グループ間の処理分担の境界である第i段
(1≦i<n)までの処理を実施しているグループに属
する処理装置がキューの最後尾の処理結果を取り出し、
第i段より後段の処理まで実施した後に、キューに当該
処理結果を格納するステップをさらに含むようにするこ
とも考えられる。これにより、コマンド・キューが満杯
になるような事態が生じても、ホスト・プロセッサの処
理を停止せずにシステム全体のパフォーマンスを下げな
いようにすることができる。
【0019】本発明を実施したコンピュータは、少なく
とも2つのグループに分けることができ、各前記グルー
プにおける、第1段から第n段までの一連の処理の分担
が設定される、複数の処理装置と、グループ間の処理結
果の受渡しのためのキューと、キューにおける特徴量の
増減を検出し、特徴量の増減に基づき、各グループにお
ける処理の分担を変更するコントローラとを有する。
【0020】以上本発明の構成を説明したが、各ステッ
プを実行するようなプログラムにて本発明を実施するこ
とも可能である。その際、プログラムはCD−ROMや
フロッピー・ディスク等の記憶媒体に記憶されたり、ハ
ードディスクやROM等の記憶装置又はデバイスに記憶
される場合がある。また、本発明の処理を実施するよう
な専用の回路又は装置を実施することも可能である。
【0021】
【発明の実施の形態】図1にパイプライン式に処理すべ
きプロセス群を示す。図1では説明を簡単にするため、
プロセス0乃至4を示しているが、これより多いプロセ
スが存在する場合及び少ないプロセスが存在する場合の
両方が考えられる。グラフィックスに関する処理もこの
ようなパイプライン式に実施する必要がある。
【0022】図1のようなプロセス0乃至4を3つの処
理装置グループで処理する場合の一例を図2に示してい
る。処理装置グループ1(1)はプロセス0及び1を担
当しており、処理装置グループ2(3)はプロセス2及
び3を担当しており、処理装置グループ3(5)はプロ
セス4を担当している。処理装置グループとしているの
は、各処理装置グループに含まれるプロセッサの数は1
つでも複数でもよいからである。この処理装置グループ
間のデータの交換にはコマンド・キュー1(7)及びコ
マンド・キュー2(9)が用いられる。
【0023】コマンド・キュー1(7)は処理装置グル
ープ1及び2の間のデータの交換に、コマンド・キュー
2(9)は処理装置グループ2及び3の間のデータの交
換に用いられる。このコマンド・キューは、処理装置グ
ループが用いるメモリの一部に設けられるようにして
も、別個設けるようにしてもよい。コマンド・キュー
は、コマンド・キューを挟んだ両側の処理装置グループ
の処理速度が多少変動しても、ある程度の時間空になっ
たり満杯になったりしないような大きさが必要である。
これは、処理装置グループの他のプロセスやスレッドに
より処理能力が変動したり、両側の処理装置グループの
処理量は離散的にしか分割できないため、正確にはL1
/P1=L2/P2(1及び2は処理装置グループ1及び
2を示す)を保つことはできないからである。
【0024】また、処理分担コントローラ11は、コマ
ンド・キュー1及び2を監視して、処理分担を変更する
際の指標となる特徴量の増減を検出する。処理分担コン
トローラ11は必要に応じて処理分担を変更するよう処
理装置グループに命ずる。なお、図2では1つの処理分
担コントローラ11を設けているが、各処理装置グルー
プ内で同様の機能を実施するようにすることも可能であ
る。
【0025】処理装置グループ1(1)は、プロセス0
及びプロセス1を実行し、コマンド・キュー1(7)に
プロセス1の処理結果を順次書き込み、例えばDMA
(図示せず)のような機構を介してプロセス2を実施す
る処理装置グループ2(3)にデータを渡す。処理装置
グループ2(3)は、コマンド・キュー1(7)におけ
る処理結果を順次用いてプロセス2及びプロセス3を実
施し、コマンド・キュー2(7)にプロセス3の処理結
果を書き込み、同じようにしてプロセス4を実施する処
理装置グループ3(5)にデータを渡す。処理装置グル
ープ3はコマンド・キュー2(9)における処理結果を
順次用いてプロセス4を実施する。
【0026】図3に、コマンド・キュー1(7)におけ
る特徴量が所定のしきい値以上減少した場合を示す。コ
マンド・キュー1(7)における特徴量が所定のしきい
値以上減少した場合には、処理装置グループ1(1)の
負荷が大きくなったか又は処理能力が落ちたか、若しく
は処理装置グループ2(3)の負荷が軽くなったか又は
処理能力が上がったか、である。とにかく、このまま放
置するとコマンド・キュー1(7)が空になって、処理
装置グループ2(3)が遊んでしまう。そこで、処理分
担コントローラ11は、処理装置グループ1にプロセス
0のみ実行するように命じ、処理装置グループ2(3)
にプロセス1も実行するように命ずる。図3はこのよう
な処理分担の変更を実施した後の状態を示している。も
し、この後コマンド・キュー2(9)における特徴量が
所定のしきい値以上減少するような場合には、再度処理
装置グループ2(3)及び処理装置グループ3(5)の
間で担当プロセスの調整がなされる。
【0027】通常のコンピュータにおけるグラフィック
ス処理を考えた場合には、図2及び図3における処理装
置グループは2つで、ホスト・プロセッサ(1又は複
数)のグループとグラフィックス・アダプタのグループ
に分けられる。図4に本発明のコンピュータの例を示
す。ホスト・プロセッサ21はメモリ・コントローラ2
3に接続している。メモリ・コントローラ23はメイン
・メモリ25及びバス27に接続している。バス27に
はグラフィックス・アダプタ29が接続しており、この
グラフィックス・アダプタ29は表示装置31に接続し
ている。ホスト・プロセッサ21は上でも述べているよ
うに複数のプロセッサであってもよい。メモリ・コント
ローラ23にはDMAコントローラを含む。また、メイ
ン・メモリ25内には、コマンド・キュー25aと、ソ
フトウエアとして実施されている処理分担コントローラ
25cと、本発明ではホスト・プロセッサ21が処理し
た頂点データの数(コマンド・キュー25aへの入力と
なる)をカウントするカウンタ1(25b)とを含む。
また、メイン・メモリ25には実行中の他のソフトウエ
ア(割り当てられたプロセスに関するプログラムを含
む)も含まれ、それらは必要に応じて図示しないハード
ディスク等からロードされる。グラフィックス・アダプ
タ29には、図示しないジオメトリ・プロセッサ及びラ
スタ・プロセッサと、グラフィックス・アダプタ29が
処理した頂点データの数をカウントするカウンタ29a
と、割り当てられる可能性のある処理プロセスに必要な
プログラム(図示せず)を含む。
【0028】ホスト・プロセッサ21は、図示しないプ
ログラムを用いて割り当てられたプロセスの処理を実施
し、その結果をコマンド・キュー25aにメモリ・コン
トローラ23を介して書き込む。頂点データを1つ処理
するごとにカウンタ1(25b)を1インクメントす
る。また、メモリ・コントローラ23は所定のサイズご
とにコマンド・キュー25aのデータをバス27を介し
てグラフィックス・アダプタ29に渡す。グラフィック
ス・アダプタ29は渡されたデータ(ホスト・プロセッ
サ21の処理結果)を用いて割り当てられたプロセスを
実施し、処理結果として表示装置31にグラフィックス
を表示する。なお、グラフィックス・アダプタ29にお
いて頂点データが1つ処理されるごとにカウンタ2(2
9a)を1インクリメントする。
【0029】ホスト・プロセッサ21側に設けられた処
理分担コントローラ25cは、一定期間ごとにカウンタ
1(25b)及びカウンタ2(29a)の値を取得し、
各カウンタ値の増分を用いて後に説明する処理分担の変
更を行う。本発明では、ホスト・プロセッサ21側に処
理分担コントローラ25cを設けているが、これはグラ
フィックス・アダプタ29側に設けることも可能であ
る。
【0030】コマンド・キュー25aの一例を図5に示
す。コマンド・キュー25aは、DMA時のページ・マ
ッピングの問題や、ホスト・プロセッサ21が複数のプ
ロセッサを含むような場合のロックの問題から、ページ
境界(page boundary)に沿ったページ・サイズ以下の
リンク・リスト(Linked List)構造が好ましい。リン
グ・バッファはポインタを格納しており、各ポインタの
先には各キュー・エレメントが配置されている。キュー
・エレメントは描画コマンド(Command)及びデ
ータ(Data)を含んでおり、ページ・サイズ以下で
例えば2−4Kバイトである。書き込みポインタ(Wr
ite PTR)はホスト・プロセッサ21が書き込ん
だキュー内の最後のキュー・エレメントを指す。読み出
しポインタ(Read PTR)はグラフィックス・ア
ダプタ29が次に読み出すべきキュー・エレメントのア
ドレスを指す。DMAでキュー・エレメントを読み出す
と、読み出しポインタを1つ進める。
【0031】ホスト・プロセッサ21とグラフィックス
・アダプタ29の間で処理プロセス間のデータの受渡し
方法を予め定義しておき、ホスト・プロセッサ21がコ
マンド・キュー25aに処理結果として描画コマンドと
データを渡す際に、どの処理プロセスまで実施したかを
表すタグを付加しておく。タグには、例えばプロセス2
まで実施したということを含めてもよいし、プロセス3
から実施しろということを含めても良い。このタグは例
えばキュー・エレメント内の描画コマンド内に含める。
このようにすれば、グラフィックス・アダプタ29がど
の処理プロセスから残りの処理プロセスを実施すればよ
いかが分かるので、全体として正しい結果が得られる。
【0032】処理分担コントローラ25cの処理を説明
する前に、処理分担コントローラ25cが処理分担を変
更するために参照する特徴量について説明しておく。図
4に示したように、本実施例では頂点データの数を特徴
量としている。これは、コマンド・キュー25aには頂
点データ以外にもビットマップ等の二次元イメージを描
画する命令も含まれる。この場合にはジオメトリ処理は
必要なく素通りし、ラスタ処理部で処理される。ビット
マップ等がコマンド・キュー25aに入っている場合に
は、コマンド・キューの大きさは大きくなるし、頂点デ
ータに比して処理負荷は軽くなるので、長さ又は大きさ
を基準にすると、グラフィックス・アダプタ29への処
理分担は不正確になるおそれがある。よって、本実施例
ではコマンド・キュー25aに含まれる頂点データの数
を特徴量として取り扱う。但し、他の状況においてはコ
マンド・キューの長さや大きさを特徴量とすることが可
能な場合も生じえる。
【0033】特徴量である頂点データの数を把握するた
めに、コマンド・キュー25aを走査して、カウントす
ることも可能である。しかし、本実施例では、ホスト・
プロセッサ21とグラフィックス・アダプタ29がそれ
ぞれ自分で処理した頂点データを数を、カウンタ1(2
5b)及びカウンタ2(29a)でカウントし(それぞ
れカウント1及びカウント2とする)、一定期間におけ
る増分(それぞれ△カウント1及び△カウント2とす
る)の差によりコマンド・キュー25a内に存在する頂
点データの数を把握することにする。
【0034】例えば、△カウント2が所定のしきい値以
上△カウント1より大きい場合には、グラフィックス・
アダプタ29の処理の方が速いので、ホスト・プロセッ
サ21に割り当てられている処理プロセスをグラフィッ
クス・アダプタ29に割り当てないと、コマンド・キュ
ー25aが空になってしまうと判断できる。また、△カ
ウント1が所定のしきい値以上△カウント2より大きい
場合には、グラフィックス・アダプタ29の処理の方が
遅いので、グラフィックス・アダプタ29に割り当てら
れた処理プロセスをホスト・プロセッサ21に割り当て
ないと、コマンド・キュー25cが満杯になっていしま
うと判断できる。このような判断を、△カウント1及び
△カウント2の関数を定義して行うことも出来る。
【0035】処理分担コントローラ25cの処理フロー
を図6に示す。まず、特徴量の増減を検出するために、
カウンタ1及びカウンタ2の値を取得し、△カウント1
及び△カウント2を計算する(ステップ110)。そし
て、△カウント1が△カウント2より第1のしきい値以
上大きいか判断する(ステップ120)。もし大きい場
合には、コマンド・キュー25a内の頂点データは許容
できる範囲を超えて増加しているため、満杯になってし
まう可能性がある。よって、グラフィックス・アダプタ
29の担当処理プロセスを第i段以降から第i+p段以
降に変更する(ステップ150)。ここでpは正の整数
である。なお、グラフィックス・アダプタ29の担当処
理プロセスを減らせば、自動的にホスト・プロセッサ2
1の担当分が増加する。
【0036】一方、ステップ120の条件が満たされな
い場合には、△カウント2が△カウント1より第2のし
きい値以上大きいか判断する(ステップ130)。も
し、この条件が満たされる場合には、コマンド・キュー
25a内の頂点データ数が許容範囲を超えて減少してい
るため、コマンド・キュー25aは空になってしまうか
もしれない。そこで、ホスト・プロセッサ21の担当処
理プロセスを第i段以前から第i−m段(mは正の整
数)以前に変更する(ステップ140)。
【0037】そして、所定時間経過後、再度ステップ1
10からの処理を繰り返す。
【0038】このようにして、特徴量の増減に基づき、
各処理装置グループにおける処理の分担を変更する。
【0039】図6の処理フローは様々な変更が可能であ
る。△カウント1及び△カウント2の差である△カウン
トの増減によって、処理分担を変更するようにしてもよ
い。また、第1及び第2のしきい値は同じでも異なって
いても良い。また、p及びmは固定であっても△カウン
ト1及び△カウント2の差の大きさによって変化させて
もよい。
【0040】ステップ160における所定時間は、コマ
ンド・キュー25aを空にしないような周期、具体的に
は以下のような条件で決めることができる。すなわち、
現在のコマンド・キュー25aの内容を全てグラフィッ
クス・アダプタ29に転送するのに必要な時間をXと
し、一つのキュー・エレメントをホスト側にて最高速度
(最大限グラフィックス・アダプタ29に処理を実行さ
せる場合)で作成する時間をCとした場合、処理分担を
変更する周期である、この所定時間TはT<X−Cであ
ればよい。
【0041】なお、ホスト・プロセッサ21に処理すべ
き描画コマンドが残っているのに、コマンド・キュー2
5c(サイズは通常数十Kバイトから数Mバイト)の使
用量が上限に達してしまうと、ホスト・プロセッサ21
は処理を続行することができなくなる。よって、例えば
図6におけるステップ120のようなタイミングで、コ
マンド・キュー25aが満杯かどうかを検査して、もし
満杯であれば、処理分担コントローラ25cはホスト・
コンピュータ21に取り戻し命令を出力し、図7のよう
な処理が実施される。タイミングは他の場合であっても
よく、ホスト・プロセッサ21が書き込みの際に自分で
判断して図7のような処理を開始しても良い。
【0042】まず、ホスト・コンピュータ21は、コマ
ンド・キュー25a内の最後尾の処理結果を取り出す
(ステップ210)。これは、図8のように、リング・
バッファの元の書き込みポインタ(WRITE_PR
T)から最後尾のキュー・エレメント7を取り戻すもの
である。なお、書き込みポインタの位置を一つ戻す。本
実施例では最後尾の1つのキュー・エレメントを取り出
すことにしているが、複数のキュー・エレメントを取り
出すことにしてもよい。そして、グラフィックス・アダ
プタ29担当の処理プロセスの一部を、取り戻した処理
結果に対して実施する(ステップ230)。例えば第i
段まで担当していた場合には、第i+1段以降を実施す
る。ホスト・プロセッサ21はどの処理プロセスまで実
施したかはキュー・エレメントの描画コマンド部分に付
されたタグを見れば分かるので、その後の段階の処理プ
ロセスを実施する。図8の例では、後段の処理プロセス
を実施した結果が、キュー・エレメント7'として示さ
れている。どの段階まで処理プロセスを実施するかは任
意である。但し、場合によっては、再度キュー・エレメ
ント7'を取り戻して処理する場合も生じえる。最後
に、実施終了した処理プロセスのタグを付して、再度処
理結果をコマンド・キュー25aに入力する(ステップ
230)。このタグは、次にグラフィックス・アダプタ
29が開始すべき処理プロセスに関する情報でもよい。
図9にステップ230終了後の状態を示す。この図では
まだキュー・エレメント0がグラフィックス・アダプタ
29へ転送されていないので、コマンド・キュー25a
が満杯ということになってしまうが、キュー・エレメン
ト0の転送が終了していれば、ホスト・プロセッサ21
は次の処理に取りかかることができる。以上のようにし
て、コマンド・キューが万が一満杯になった場合に対処
する。
【0043】以上本発明の一実施例を説明したが、本発
明は上の実施例に限定されない。例えば、コマンド・キ
ューの構造は図5のような構造に限定されない。コマン
ド・キューはキュー・エレメントをチェーン化して構成
することも可能である。また、処理装置グループ内の複
数のプロセッサは同じ能力でなくともよい。また、処理
分担コントローラはソフトウエアで実施しても専用の回
路などを用意しても良い。
【0044】
【効果】L1、P1、L2及びP2(それぞれ第1処理装置
グループの処理量、処理能力、第2処理装置グループの
処理量、処理能力)がいずれも予測不可能である環境に
おいて、L1/P1=L2/P2に近づけることができるよ
うなコンピュータ・システムを提供することができた。
【0045】また、L1/P1=L2/P2に近づけること
により、システム全体のパフォーマンスをできる限り引
き出すことができるようにすることもできた。
【0046】さらに、将来のホスト・プロセッサの処理
能力の向上に適応できるようにし、製品寿命を伸ばすこ
ともできた。
【0047】さらに、コマンド・キューが満杯になるよ
うな事態が生じても、コマンド・キューに書き込みを行
う処理装置グループの処理を停止せずにシステム全体の
パフォーマンスを下げないようにすることもできた。
【図面の簡単な説明】
【図1】パイプライン式の処理プロセスの例である。
【図2】複数の処理装置グループにおいて処理プロセス
を分担する際の機能ブロック図である。
【図3】図2の状態から処理分担を変更した場合の図で
ある。
【図4】グラフィックス処理の処理プロセスをホスト・
プロセッサとグラフィックス・アダプタとで分担する場
合の機能ブロック図である。
【図5】コマンド・キュー構造の例である。
【図6】処理分担コントローラの処理フローの例であ
る。
【図7】コマンド・キューが満杯になった際のホスト・
プロセッサの処理フローの例である。
【図8】図7の処理を模式的に示した図である。
【図9】図7の処理結果を模式的に示した図である。
【符号の説明】
1、3、5 処理装置グループ 7、9 コマンド・キュー 11 処理分担コントローラ 21 ホスト・プロセッサ 23 メモリ・コントローラ 25 メイン・メモリ 25a コマンド・キュー 25b カウンタ1 25c 処理分担コントローラ 27 バス 29 グラフィックス・コントローラ 29a カウンタ2 31 表示装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 森山 孝男 神奈川県大和市下鶴間1623番地14 日本 アイ・ビー・エム株式会社 東京基礎研 究所内 (72)発明者 中村 英史 神奈川県大和市下鶴間1623番地14 日本 アイ・ビー・エム株式会社 東京基礎研 究所内 (56)参考文献 特開 平2−275581(JP,A) 特開 平5−225153(JP,A) 特開 平6−187309(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 1/20 G06F 15/16

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも2つのグループに分けることが
    できる複数の処理装置を有するコンピュータにおいて、
    各前記グループにおける、第1段から第n段までの一連
    の処理の分担を動的に変更する方法であって、 前記グループ間の処理結果の受渡しのためのキューにお
    ける特徴量の増減を検出するステップと、 前記特徴量の増減に基づき、前記キューが満杯又は空に
    ならないように各前記グループにおける処理の分担を変
    更する変更ステップと、 を含み、 前記特徴量は前記キューに格納された情報の量であるこ
    とを特徴とする処理分担動的変更方法。
  2. 【請求項2】少なくとも2つのグループに分けることが
    できる複数の処理装置を有するコンピュータにおいて、
    各前記グループにおける、第1段から第n段までの一連
    の処理の分担を動的に変更する方法であって、 前記グループ間の処理結果の受渡しのためのキューにお
    ける特徴量の増減を検出するステップと、 前記特徴量の増減に基づき、前記キューが満杯又は空に
    ならないように各前記グループにおける処理の分担を変
    更する変更ステップと、 を含み、 前記特徴量は、グラフィックスに関連する処理の場合、
    前記キューに格納された頂点データの数であることを特
    徴とする処理分担動的変更方法。
  3. 【請求項3】前記変更ステップは、 前記特徴量が所定のしきい値以上増加した場合には、前
    記グループ間の処理分担の境界である第i段(1≦i<
    n)までの処理を実施していたグループの担当を第i段
    より後段の処理まで当該グループの担当と設定するステ
    ップ、 を含む請求項1又は2に記載の処理分担動的変更方法。
  4. 【請求項4】前記変更ステップは、 前記特徴量が所定のしきい値以上減少した場合には、前
    記グループ間の処理分担の境界である第i段(1<i≦
    n)までの処理を実施していたグループの担当を第i段
    より前段の処理までを当該グループの担当と設定するス
    テップ、 を含む請求項1又は2に記載の処理分担動的変更方法。
  5. 【請求項5】前記処理結果は、何段目までの処理を実施
    したかについての情報を含む、請求項1又は2に記載の
    処理分担動的変更方法。
  6. 【請求項6】前記キューの使用量が上限に達していない
    か検査するステップと、 前記キューの使用量が上限に達している場合、前記グル
    ープ間の処理分担の境界である第i段(1≦i<n)ま
    での処理を実施しているグループに属する処理装置が前
    記キューの最後尾の処理結果を取り出し、前記第i段よ
    り後段の処理まで実施した後に、前記キューに当該処理
    結果を格納するステップと、 をさらに含む請求項1又は2の記載の処理分担動的変更
    方法。
  7. 【請求項7】少なくとも2つのグループに分けることが
    でき、各前記グループにおける、第1段から第n段まで
    の一連の処理の分担が設定される、複数の処理装置と、 前記グループ間の処理結果の受渡しのためのキューと、 前記キューにおける特徴量の増減を検出し、前記特徴量
    の増減に基づき、当該キューが満杯又は空にならないよ
    うに各前記グループにおける処理の分担を変更するコン
    トローラと、 を有し、 前記特徴量は前記キューに格納された情報の量であるこ
    とを特徴とするコンピュータ。
  8. 【請求項8】前記コントローラは、 前記特徴量が所定のしきい値以上増加した場合には、前
    記グループ間の処理分担の境界である第i段(1≦i<
    n)までの処理を実施していたグループの担当を第i段
    より後段の処理まで当該グループの担当と設定する、 請求項7記載のコンピュータ。
  9. 【請求項9】前記コントローラは、前記特徴量が所定の
    しきい値以上減少した場合には、前記グループ間の処理
    分担の境界である第i段(1<i≦n)までの処理を実
    施していたグループの担当を第i段より前段の処理まで
    を当該グループの担当と設定する、 請求項7記載のコンピュータ。
  10. 【請求項10】前記コントローラは、 前記キューの使用量が上限に達していないか検査し、 前記キューの使用量が上限に達している場合、前記グル
    ープ間の処理分担の境界である第i段(1≦i<n)ま
    での処理を実施しているグループに属する処理装置に、
    前記キューの最後尾の処理結果を取り出し、前記第i段
    より後段の処理まで実施した後に、前記キューに当該処
    理結果を格納するように命ずる、 請求項7記載のコンピュータ。
  11. 【請求項11】少なくとも2つのグループに分けること
    ができる複数の処理装置を有するコンピュータに、各前
    記グループにおける、第1段から第n段までの一連の処
    理の分担を動的に変更させるプログラムを格納した記憶
    媒体であって、 前記プログラムは、前記コンピュータに、 前記グループ間の処理結果の受渡しのためのキューにお
    ける特徴量の増減を検出するステップと、 前記特徴量の増減に基づき、前記キューが満杯又は空に
    ならないように各前記グループにおける処理の分担を変
    更する変更ステップと、 を実行させるプログラムを格納した記憶媒体であって、 前記特徴量は前記キューに格納された情報の量であるこ
    とを特徴とする記憶媒体。
JP21885298A 1998-08-03 1998-08-03 処理分担動的変更方法及びコンピュータ Expired - Fee Related JP3224782B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP21885298A JP3224782B2 (ja) 1998-08-03 1998-08-03 処理分担動的変更方法及びコンピュータ
US09/345,371 US6651082B1 (en) 1998-08-03 1999-07-01 Method for dynamically changing load balance and computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21885298A JP3224782B2 (ja) 1998-08-03 1998-08-03 処理分担動的変更方法及びコンピュータ

Publications (2)

Publication Number Publication Date
JP2000057329A JP2000057329A (ja) 2000-02-25
JP3224782B2 true JP3224782B2 (ja) 2001-11-05

Family

ID=16726345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21885298A Expired - Fee Related JP3224782B2 (ja) 1998-08-03 1998-08-03 処理分担動的変更方法及びコンピュータ

Country Status (2)

Country Link
US (1) US6651082B1 (ja)
JP (1) JP3224782B2 (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6959438B2 (en) 2000-12-06 2005-10-25 Microsoft Corporation Interface and related methods for dynamically generating a filter graph in a development system
US7287226B2 (en) * 2000-12-06 2007-10-23 Microsoft Corporation Methods and systems for effecting video transitions represented by bitmaps
US7447754B2 (en) 2000-12-06 2008-11-04 Microsoft Corporation Methods and systems for processing multi-media editing projects
US20020099759A1 (en) * 2001-01-24 2002-07-25 Gootherts Paul David Load balancer with starvation avoidance
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6886074B1 (en) * 2001-12-05 2005-04-26 Adaptec, Inc. Method and apparatus for raid load balancing
JP3683211B2 (ja) * 2001-12-10 2005-08-17 エヌイーシーコンピュータテクノ株式会社 ノード間データ転送方法及びノード間データ転送装置
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US7287254B2 (en) * 2002-07-30 2007-10-23 Unisys Corporation Affinitizing threads in a multiprocessor system
TW583601B (en) * 2003-01-15 2004-04-11 Via Tech Inc Data processing path selection method and graphics processor utilizing the same
US7472392B2 (en) * 2003-04-23 2008-12-30 Micron Technology, Inc. Method for load balancing an n-dimensional array of parallel processing elements
US7437726B2 (en) * 2003-04-23 2008-10-14 Micron Technology, Inc. Method for rounding values for a plurality of parallel processing elements
US7448038B2 (en) * 2003-04-23 2008-11-04 Micron Technology, Inc. Method for using filtering to load balance a loop of parallel processing elements
US7430742B2 (en) * 2003-04-23 2008-09-30 Micron Technology, Inc. Method for load balancing a line of parallel processing elements
US7437729B2 (en) * 2003-04-23 2008-10-14 Micron Technology, Inc. Method for load balancing a loop of parallel processing elements
US7392314B2 (en) * 2003-08-15 2008-06-24 International Business Machines Corporation System and method for load—balancing in a resource infrastructure running application programs
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050275760A1 (en) * 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US20070266388A1 (en) * 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
KR100460009B1 (ko) * 2004-06-23 2004-12-04 엔에이치엔(주) 이미지 리소스를 로딩하는 방법 및 이미지 리소스 로딩시스템
KR20080067021A (ko) * 2004-08-24 2008-07-17 샤프 가부시키가이샤 표시 시스템
JPWO2006022228A1 (ja) * 2004-08-24 2008-05-08 シャープ株式会社 シミュレーション装置、シミュレーションプログラム、シミュレーション方法
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
JP4190476B2 (ja) 2004-09-22 2008-12-03 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
US7466316B1 (en) 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7446773B1 (en) 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US7898545B1 (en) * 2004-12-14 2011-03-01 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors
JP4969791B2 (ja) * 2005-03-30 2012-07-04 株式会社日立製作所 ディスクアレイ装置およびその制御方法
US7836250B2 (en) * 2005-07-15 2010-11-16 International Business Machines Corporation Automatic rebalancing of a data storage system
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US7493428B2 (en) * 2006-07-25 2009-02-17 International Business Machines Corporation Method and system for dynamic queue splitting for maximizing throughput of queue based operations while maintaining per-destination order of operations
JP2008140046A (ja) * 2006-11-30 2008-06-19 Fuji Xerox Co Ltd 画像処理装置、画像処理プログラム
US7814243B2 (en) * 2007-06-01 2010-10-12 Sonics, Inc. Shared storage for multi-threaded ordered queues in an interconnect
US20090040232A1 (en) * 2007-08-10 2009-02-12 Manjunath Basappa Muttur Method to record bus data in a graphics subsystem that uses dma transfers
US7386851B1 (en) * 2008-01-04 2008-06-10 International Business Machines Corporation System and method for implementing dynamic lifetime reliability extension for microprocessor architectures
US8514215B2 (en) * 2008-11-12 2013-08-20 International Business Machines Corporation Dynamically managing power consumption of a computer with graphics adapter configurations
JP5336945B2 (ja) * 2009-06-29 2013-11-06 ルネサスエレクトロニクス株式会社 画像処理装置
US8527988B1 (en) 2009-07-31 2013-09-03 Hewlett-Packard Development Company, L.P. Proximity mapping of virtual-machine threads to processors
US8972995B2 (en) 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
JP5842601B2 (ja) * 2011-12-26 2016-01-13 富士通株式会社 プログラム、情報処理方法及び情報処理装置
US8984526B2 (en) * 2012-03-09 2015-03-17 Microsoft Technology Licensing, Llc Dynamic processor mapping for virtual machine network traffic queues
US20150032961A1 (en) * 2013-07-23 2015-01-29 Lexmark International Technologies S.A. System and Methods of Data Migration Between Storage Devices
JP6331554B2 (ja) * 2014-03-25 2018-05-30 日本電気株式会社 負荷分散方法とシステムと装置及びプログラム
US9678806B2 (en) * 2015-06-26 2017-06-13 Advanced Micro Devices, Inc. Method and apparatus for distributing processing core workloads among processing cores
GB2559042B (en) 2015-12-21 2019-06-05 Imagination Tech Ltd Allocation of tiles to processing engines in a graphics processing system
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10455007B2 (en) 2016-07-14 2019-10-22 International Business Machines Corporation Managing asset placement with respect to a distributed computing environment having a set of hosts

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755659A (en) 1987-02-03 1988-07-05 Chomerics, Inc. Combined busbar and electrical lead assembly
JP2562935B2 (ja) 1988-04-28 1996-12-11 明治製菓株式会社 抗腫瘍性物質sf2582誘導体
US5031089A (en) * 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
JPH09269903A (ja) * 1996-04-02 1997-10-14 Hitachi Ltd プロセス管理方式
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations

Also Published As

Publication number Publication date
US6651082B1 (en) 2003-11-18
JP2000057329A (ja) 2000-02-25

Similar Documents

Publication Publication Date Title
JP3224782B2 (ja) 処理分担動的変更方法及びコンピュータ
US11017493B2 (en) FIFO queue, memory resource, and task management for graphics processing
US11829197B2 (en) Backward compatibility through use of spoof clock and fine grain frequency control
US8310492B2 (en) Hardware-based scheduling of GPU work
US6002409A (en) Arbitration for shared graphics processing resources
JP3359393B2 (ja) 図形データ並列処理表示装置
KR100617998B1 (ko) 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템
US6166743A (en) Method and system for improved z-test during image rendering
EP2513860B1 (en) A graphics pipeline scheduling architecture utilizing performance counters
US11663767B2 (en) Power efficient attribute handling for tessellation and geometry shaders
US7760205B2 (en) Information processing apparatus for efficient image processing
JPH0760423B2 (ja) データ転送方式
CN113342485A (zh) 任务调度方法、装置、图形处理器、计算机系统及存储介质
TWI489289B (zh) 分散作業的預先排程重播
TWI457828B (zh) 執行緒陣列粒化執行的優先權計算
US7644214B2 (en) Information processing apparatus and task execution method
US8593465B2 (en) Handling of extra contexts for shader constants
US9406101B2 (en) Technique for improving the performance of a tessellation pipeline
US9111360B2 (en) Technique for improving the performance of a tessellation pipeline
US6003098A (en) Graphic accelerator architecture using two graphics processing units for processing aspects of pre-rasterized graphics primitives and a control circuitry for relaying pass-through information
US20140362094A1 (en) System, method, and computer program product for recovering from a memory underflow condition associated with generating video signals
US8059128B1 (en) Apparatus and method for performing blit operations across parallel processors
WO2023129435A1 (en) Cache blocking for dispatches
JP3277903B2 (ja) マルチウィンドウ高速描画装置およびマルチウィンドウ高速描画方法
JPH0528276A (ja) マルチプロセツサシステムにおける図形描画方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees