English
FAQSGLプログラミング関連
戻る進む
FAQ/SGLプログラミング関連

スレーブCPU



スレーブCPUを使いたい。

Q)
スレーブCPUを使いたいのですが、どのように指定すればよいのかわかりません。

 void slSlaveFunc(void (*func)() , void *par)

上の関数の void *par は、何を意味するのでしょうか?
また、この関数の前後で、スレーブSH2のON/OFFなどは必要なのでしょうか?
それと、スレーブの処理が終わったのをメインに知らせる知らせ方や、 メインの方で、スレーブの処理を強制終了させる命令とかはどうすれば良いのか 教えてください。

A)
この関数内でスレーブCPUのON/OFFを行っていますので、必要はありません。 また、引数parは登録関数への引数リストへのポインタになります。


スレーブでSGLの関数を実行したい。

Q)
スレーブ側にサウンドを担当させたいのですが、何か注意すべき点は あるでしょうか?

A)
SGLの関数はスレーブ側で動作させることを考慮した作りになっていません。

原因の一つは、gbrです。SGLシステムではgbrをシステム変数領域の 先頭アドレスにしてそこから、相対ロードを使ってデータの読み書きを 行なっています。
しかしながら、現状ではgbrには何も設定されていないため、そのままでは動作 しません。
では、gbrを設定すれば動くかというとそうでもありません。というのは、 各々のCPUのキャッシュに依存する問題です。他方のCPUで更新されたデータは キャッシュスルーアドレスを使って取ってこなければいけませんが、SGLの 各関数は、それらのデータをキャッシュスルーアドレスで取ってくるようには 考えられていません。SGLが相互のCPUで動いている以上、システム変数の 整合という問題は非常に大きいと考えられますので、正常に動くかどうかは、 保証できません。

以上のような理由からスレーブでSGLの関数郡を使用するのは避けてください。 SGLにおける基本的なスレーブの位置付けは計算用(ジオメトリエンジン) と考えてください。


戻る進む
FAQSGLプログラミング関連
Copyright SEGA ENTERPRISES, LTD,. 1997