(57)【特許請求の範囲】
【請求項１】
音声サンプルをストアするメモリ、
音声サンプルを処理するためのオーディオ信号プロセサ、および
第１アドレスから第２アドレスまでアドレスしかつ次いでその第１アドレスと第２アドレスとの間の第３アドレスまで１回以上ループして戻るようにメモリをアドレスして、メモリから音声サンプルを読み出すアドレス回路を備え、
アドレス回路は、開始アドレスレジスタ、終了アドレスレジスタおよび現在アドレスレジスタ、ならびに開始アドレスレジスタ、終了アドレスレジスタおよび現在アドレスレジスタの内容に基づいてメモリをアドレスするためのアドレスを発生するアドレス発生回路を含み、さらに
アドレス回路が第３アドレスへループして戻る間のメモリアクセスのレイテンシを隠すために、現在アドレスおよび１つ以上の後続アドレスのデータをストアするためのプリフェッチ記憶領域を備え、現在アドレスがインクリメントされるとプリフェッチ記憶領域に後続アドレスのためのデータがプリフェッチされる、オーディオシステム。
【請求項２】
アドレス回路はメモリからオーディオデータを読み出すために複数の異なるアドレスモードで動作可能である、請求項１記載のオーディオシステム。
【請求項３】
開始アドレスレジスタ、終了アドレスレジスタおよび現在アドレスレジスタはオーディオ信号プロセサによって読み出され／書き込まれ得る、請求項１または２記載のオーディオシステム。
【請求項４】
プリフェッチ記憶領域はＦＩＦＯとして動作する、請求項１記載のオーディオシステム。
【請求項５】
プリフェッチ記憶領域は現在アドレス以後の２つの次のアドレスのプリフェッチデータをストアする、請求項１記載のオーディオシステム。
【請求項６】
現在アドレスレジスタはメモリに対する読出し／書込みアクセスを判断するビットを含む、請求項１記載のオーディオシステム。
【請求項７】
プリフェッチ記憶領域はＦＩＦＯとして形成された複数のデータラインを含む、請求項１記載のオーディオシステム。
【請求項８】
プリフェッチ記憶領域は３つのデータラインである、請求項７記載のオーディオシステム。
【請求項９】
プリフェッチ記憶領域から供給されるデータをデコードするデコーダをさらに備える、請求項１ないし８のいずれかに記載のオーディオシステム。
【請求項１０】
請求項１ないし９のいずれかに記載のオーディオシステムを備える、ビデオゲームシステム。
【請求項１１】
オーディオ信号プロセサによって処理するためにメモリからオーディオサンプルを読み出すための方法であって、
第１アドレスから第２アドレスまでアドレスしかつ次いでその第１アドレスと第２アドレスとの間の第３アドレスまで１回以上ループして戻るようにメモリをアドレスしてメモリからオーディオサンプルを読み出し、そして
第３アドレスへループして戻る間のメモリアクセスのレイテンシを隠すために、現在アドレスおよび１つ以上の後続アドレスのデータをプリフェッチ記憶領域へストアし、
現在アドレスがインクリメントされるとプリフェッチ記憶領域に後続アドレスのためのデータをプリフェッチする、方法。
【請求項１２】
メモリは複数の異なるアドレスモードでアドレスされる、請求項１１記載の方法。
【請求項１３】
請求項１１または１２に記載の方法でオーディオサンプルを読み出す、テレビゲームシステムにおけるオーディオサンプルの読み出し方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は音声信号をプリフェッチ（pre-fetch：予め取り出しまたは取り込むこと）するための方法および装置に関し、特にたとえば、オーディオ信号プロセサによって使用するためにオーディオデータをプリフェッチする方法および装置に関する。
【０００２】
【発明の背景および発明の概要】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステムは、ビデオゲームをプレイするのにしばしば用いられる。しかしながら、「ゲームの経験」はビデオコンテンツ以上のものを必要とする。たとえば、ほとんどすべてのゲーム経験はビデオコンテンツを伴うオーディオコンテンツを含む。ここで説明されるオーディオシステムは、音声エミッタ（放射器）を３次元空間に置くことを可能にし、かつ１対のスピーカでサイコアコースティック(psycho-acoustic)な３Ｄ音声効果を発生する強力な手段を提供する。オーディオシステムは、ＤＶＤのような大容量記憶媒体から読み出された、たとえば音声サンプル，楽器波形テーブル，オーディオトラックおよびその他をストアするのに用いられるオーディオメモリを含む。音声サンプル，波形テーブル，音声トラック等は、順次読み出されてゲームオーディオコンテンツを生成するために、オーディオディジタル信号プロセサによって処理される。このコンテンツは主メモリへ転送され、そこからさらにデコーダに供給しかつスピーカに出力するために読み出される。この分離されたオーディオメモリによって、主システムメモリにアクセスしようとしている他のリソース（たとえばグラフィクスサブシステム）と競争する必要性を回避して、オーディオデータへのオーディオ処理回路のアクセスを改善する。
【０００５】
波形テーブルは、メモリにストアされている予め記録された音声波形（たとえば、ピアノのような楽器について）のテーブルを参照する。典型的には、これらの音声は、特別なフォーマット（たとえば、ＷＡＶまたはＡＩＦＦ）のファイルとしてストアされる。音声ファイルは図１５に示すように、最初から最後まで再生されるか、もしくは、図１６に示すように、音声ファイルがループ点をもっていて、停止されるまで、（たぶん、エンベロープ圧縮(envelope reduction）で）特定されるようにループする。このループ点を設けることによって、ファイルの一部が繰り返し再生されるので、音声ファイルをより小さくすることができる。しかしながら、音声ファイルのサイズを減じることができるものの、そのようなループは、そのループ点へジャンプして戻る必要性のために、メモリをアドレスすることに問題を生じる。一般に、メモリをアドレスすることは、データ読出のための次のアドレスが現在アドレスをインクリメントすることによって得られるとき、最も効率的である。しかしながら、ループ再生では、音声ファイルがストアされているメモリをアドレスするためのアドレスレジスタがそのループ点へ１回以上リセットされることを要する。次のファイルアドレスでデータを読み出すためにアドレスレジスタをインクリメントすることは素早く実行できるが、レジスタをリセットすることは長時間を要するばかりでなく、先にループして戻った直前のアドレスでのデータ出力とループして戻ったアドレスでのデータ出力との間で結果的に遅れ（レイテンシ：latency）期間を生じる。このことによって、結果的に、オーディオ出力に中断を生じさせ、逆にプレーヤのゲーム経験に強い影響を与える。
【０００６】
この発明の１つの局面によれば、オーディオの原形が損なわれる可能性は、オーディオデータをプリフェッチすることによって最小化される。アドレスレジスタがリセットされるときプリフェッチしたデータが既に存在するので、オーディオ信号プロセサはその遅れ（レイテンシ）期間中においてもデータ読出を継続することができる。１つの実施例では、オーディオシステムはオーディオファイルをストアするメモリと、そのオーディオファイルを処理するオーディオ信号プロセサとを含む。アドレス回路がメモリをアドレスし、プリフェッチ記憶領域がそのアドレス回路のアドレス変更の間のメモリアクセスのレイテンシを隠すために、現在アドレスおよび１つ以上の後続アドレスについてデータをストアする。
【０００７】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【０００８】
【実施例】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【０００９】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００１０】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００１１】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００１２】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００１３】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
【００１４】
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０，
・主メモリ１１２，および
・グラフィクス／オーディオプロセサ１１４を含む。
【００１５】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００１６】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００１７】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００１８】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４，
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する），および
・フラッシュメモリ１４０を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
【００１９】
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０，
・メモリインタフェース／コントローラ１５２，
・３Ｄグラフィクスプロセサ１５４，
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６，
・オーディオメモリインタフェース１５８，
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２，および
・表示コントローラ１６４を含む。
【００２０】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００２１】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
【００２２】
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００２３】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００２４】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム，
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２，および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュートを頂点キャッシュ２２０を介して取り込む。
【００２５】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００２６】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００，
・セットアップ／ラスタライザ４００，
・テクスチャユニット５００，
・テクスチャ環境ユニット６００，および
・ピクセルエンジン７００を含むことを示す。
【００２７】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００２８】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００２９】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の抽出、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(psedo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）を含むテクスチャリングに関連する種々のタスクを実行する。
【００３０】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンディングに基づく多様な他の環境関連機能を実行する多段階を提供する。
【００３１】
ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。この実施例では、ピクセルエンジン７００はデータを埋め込み（オンチップ）フレームバッファメモリ７０２にストアする。グラフィクスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルにストアするために１つ以上の埋め込みＤＲＡＭメモリ７０２を含む。ｚ比較７００ａは、現在有効なレンダリングモードに依存して、グラフィクスパイプライン１８０におけるより早い段階で実行される（たとえば、ｚ比較は、もしアルファブレンディングが要求されていないならば早くに実行され得る）。このピクセルエンジン７００は表示コントローラ／ビデオインタフェースユニット１６４による主メモリ１１２へのアクセスのために、オンチップフレームバッファ７０２を周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた動的テクスチャ合成効果のために、埋め込みフレームバッファ７０２の内容を主メモリ１１２中のテクスチャにコピーするために使用され得る。アンチエイリアシング(anti-aliasing)および他のフィルタリングがコピー動作中に実行され得る。最終的に主メモリ１１２にストアされるグラフィクスパイプライン１８０のフレームバッファ出力は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
【００３２】
オーディオシステムの例
オーディオＤＳＰ１５６はピッチ変調および音声データと効果データとのミキシングを行う。オーディオＤＳＰ１５６は、オーディオサンプルのようなオーディオ関連情報をストアするために用いられ得る大容量（たとえば１６ＭＢもしくはそれ以上）のオーディオメモリ１２６（補助ＲＡＭ−ＡＲＡＭ）によって増大される。オーディオはオーディオコーデック１２２を介してスピーカ６１Ｌおよび６１Ｒに送られ、そのオーディオコーデックはＤ／Ａ変換器を含む。大容量記憶媒体６２からのオーディオストリームがゲーム実行中にハイファイオーディオを再生するために効率的な方法を提供する。
【００３３】
図６は図３に示すオーディオＤＳＰ１５６，オーディオメモリインタフェース１５８およびオーディオインタフェース／ミキサ１６０をより詳細に示すブロック図である。サンプルレート変換器８０１は大容量記憶媒体６２からのものであろうオーディオストリームを４８ｋＨｚまたは３２ｋＨｚでサンプリングし、Ｌ／Ｒボリュームコントロール８０３はサンプルされたオーディオの左および右チャネルのボリュームレベルを制御する。オーディオストリームは完全に主メモリ１１２をバイパスし、それによってメモリおよびプロセサバンド幅を保存する。大容量記憶媒体６２のオーディオデータがたとえばＡＤＰＣＭフォーマットにエンコードされる場合、大容量記憶媒体アクセス装置１０６はＡＤＰＣＭデータをＰＣＭサンプル（たとえば１６ビット）に自動的にデコードしてサンプルレート変換器８０１に供給する。
【００３４】
ＤＭＡ（ダイレクトメモリアクセス）チャネル８０５は主メモリ１１２中の任意の記憶位置からのデータのＦＩＦＯバッファ８０７への転送を可能にする。ミキサ８０９はサンプルレート変換器８０１の出力とＦＩＦＯバッファ８０７の出力とをミックスし、その結果がオーディオコーデック１２２に出力される。オーディオコーデック１２２のサンプルレートはたとえば４８ｋＨｚであり、オーディオコーデック１２２はステレオ１６ビットＰＣＭをアナログ信号に変換するための標準的なシグマデルタ(Sigma Delta)コーデックであってよい。
【００３５】
ＤＳＰコア８１１は１００ＭＨｚの命令クロックを有し、１６ビットのデータワードとアドレスとを用いる。ＤＳＰコア８１１は、ＲＡＭ領域（たとえば８ｋバイト）およびＲＯＭ領域（たとえば８ｋバイト）を含むワード（１６ビット）アドレス可能命令メモリ８１３、およびＲＡＭ領域（たとえば８ｋバイト）およびＲＯＭ領域（たとえば４ｋバイト）を含むワードアドレス可能データメモリ８１５を用いる。ＤＳＰＤＭＡ８１９は、主メモリ１１２とＤＳＰデータ／命令ＲＡＭ領域との間でデータを転送し、またはＤＳＰデータ／命令ＲＯＭ領域から主メモリ１１２へデータを転送するために設けられる。命令メモリ８１３へのアクセスを要求する２つのものがあり、それはＤＳＰＤＭＡ８１９およびＤＳＰ８１１である。命令ＲＡＭ領域はＤＳＰＤＭＡ８１９によって読み出され／書き込まれ、ＤＳＰ８１１によっては読み出されるだけである。命令ＲＯＭ領域はＤＳＰ８１１によって読み出されるだけである。データメモリ８１５へのアクセスを要求する３つのものは、ＤＳＰＤＭＡ８１９，データバス１およびデータバス２である。メールボックスレジスタ８１７が主プロセサ１１０との通信のために設けられる。このメールボックスレジスタ８１７は、主プロセサ１１０からＤＳＰコア８１１への通信のための第１メールボックスレジスタと、ＤＳＰコア８１１から主プロセサ１１０への通信のための第２メールボックスレジスタとを含む。各々のレジスタはたとえば３２ビット幅である。オーディオメモリ１２６から読み出しかつそこへ書き込むために、ＤＳＰコア８１１に代えて、アクセラレータ８２１が利用可能である。オーディオメモリ１２６のためにメモリコントローラ８２３が設けられ、とりわけ、オーディオメモリ１２６と主メモリ１１２との間のデータ授受のために、ＤＳＰコア８１１と主プロセサ１１０によって制御される専用ＤＭＡチャネル８２５との間でオーディオメモリへのアクセス要求を調停するように動作する。一般的に、オーディオメモリ１２６とＤＳＰデータメモリ８１５との間のデータ授受はＤＭＡチャネル８２５に対する優先権を有する。デコーダ８２７はそこへ供給されるオーディオサンプルをデコードする。オーディオメモリ１２６は一義的にはオーディオ関連データをストアするし、１６ＭＢのＳＤＲＡＭ（合計４８ＭＢまでに拡張可能）を備える。
【００３６】
オーディオデータの記憶要求を減じる手助けのために、種々の圧縮および伸長方法が利用され得る。ＡＤＰＣＭは適応差分ＰＣＭと呼ばれる。この方法は上で述べたオーディオシステムによって生成された音声を圧縮／伸長し、大容量記憶媒体６２上の音声を圧縮／伸長するために使用され得る。種々のＡＤＰＣＭのアルゴリズムがあり、オーディオシステムによって生成された音声と大容量記憶媒体６２上の音声とのために同じアルゴリズムが用いられる必要はない。デコーダ８２７がオーディオシステムによって生成された音声データの実行時ＡＤＰＣＭ伸長を提供し、大容量記憶媒体アクセス装置１０６が大容量記憶媒体６２からの音声データの実行時(runtime)ＡＤＰＣＭ伸長を提供する。８ビットＰＣＭ圧縮／伸長方法がオーディオシステムによって生成された音声データのためにまた利用可能である。したがって、デコーダ８２７がまた８ビットのＰＣＭ圧縮された音声データの実行時伸長を提供する。もちろん、上で述べた圧縮／伸長方法は単なる一例であって、これに限定されるものではない。
【００３７】
システムを初期化する間、実行時オーディオライブラリがオーディオＤＳＰ１５６にダウンロードされる。このオーディオライブラリは、主プロセサ１１０によって作られるコマンドリストにあるコマンドに従って音声を処理しかつミックスするために、オーディオＤＳＰ１５６によって使用される。コマンドリストは主メモリ１１２にストアされる。オーディオＤＳＰ１５６は主メモリ１１２からコマンドを引き出し、それをそこにダウンロードされた実行時オーディオライブラリに従って実行する。
【００３８】
オーディオサブシステムは音声エミッタの３次元空間内への配置を許容する。
これは次のような特徴、
・ボリュームおよびパンニング制御，
・ピッチ変調（ドップラー効果），
・左および右チャネル間の位相シフトによる初期時間遅延，および
・ＦＩＲフィルタ（ＨＲＴＦおよび環境効果）によって達成される。
【００３９】
これらの特徴および主プロセサベースの以下に説明する効果処理が一緒に、１対のスピーカでのサイコアコースティックな３次元音声効果を発生する強力な手段を提供する。
【００４０】
音声処理パイプラインが図７に示され、その図７には次のようなステップが含まれる。
【００４１】
ステップ１：オーディオＤＳＰ１５６によってオーディオメモリ１２６からサンプルが読み出される。
【００４２】
ステップ２：オーディオメモリ１２６からのＡＤＰＣＭおよび８ビットＰＣＭサンプルがデコーダ８２７によってデコードされかつそのデコードされたサンプルが第１サンプルレート変換器に供給される。
【００４３】
ステップ３：オーディオメモリ１２６からの１６ビットＰＣＭサンプルが第１サンプルレート変換器に直接送られる。
【００４４】
ステップ４：サンプルレート変換器は入来サンプルのピッチを調節する。
【００４５】
ステップ５：ＦＩＲフィルタはオプションのユーザ規定フィルタをサンプルに適用する。
【００４６】
ステップ６：ボリュームランプ（傾斜）がボリュームエンベロープ調音のためにサンプルにボリュームランプを与える。
【００４７】
ステップ７：ミキサが３２ｋＨｚのサンプリングレートでかつ２４ビットの精度でサンプルをミックスする。
【００４８】
ステップ１−７が各音声毎に繰り返される。すべての音声が処理されかつミキサバッファに累算されたとき、次のステップ１および２が生じる。
【００４９】
ステップ１：ドルビーサラウンドおよび主プロセサ（ホスト）ベースの効果（残響およびコーラスのような）が、ミックスされた音声に与えられる。主プロセサベースの効果を付与することは「音声信号をミキシングするための方法および装置」と題する同時係属中の出願（特願２０００−３８４９４２）に詳細に述べられていて、したがって、ここでは参照によってその内容を取り入れる。
【００５０】
図８はアクセラレータ８２１のブロック図である。上で述べたように、アクセラレータ８２１は、オーディオメモリ１２６を読み出しかつそこへ書き込むために、ＤＳＰコア８１１に代わって使用される。アクセラレータ８２１は、アドレスを自動的に増加するかまたは次のアクセスのためのラップアラウンドアドレス（循環アドレス）を発生する後続アドレス発生回路９０２を含む。アクセラレータ８２１は３つのデータライン９０４ａ−９０４ｃを含み、これらのデータラインは読出動作中にプリフェッチバッファとして機能し、書込動作中には書込バッファとして機能する。以下に説明するように、データライン９０４ａ−９０４ｃは、ＤＳＰコア８１１の動作がオーディオメモリ１２６をアクセスするとき、オーディオメモリ１２６のアクセスのレイテンシを隠す。ＤＳＰによって開始アドレスのデータが読み出されたとき、またはＤＳＰによって終了アドレスのデータが書き込まれたとき、ＤＳＰコア８１１に対する割込が発生される。
【００５１】
３つのパラメータレジスタ（現在アドレス，開始アドレス，終了アドレス）９０６ａ−９０６ｃが、オーディオメモリ１２６のメモリスペースにおける循環バッファを規定するために使用される。各パラメータレジスタは２７ビット幅でかつオーディオＤＳＰによって読み出され／書き込まれ得る。後続アドレス発生回路９０２は、次のアドレスを得るために、現在アドレスに「１」を加える。この現在アドレスがもし終了アドレスと等しいとき、次のアドレスは開始アドレスとなる。パラメータレジスタ９０６ａ−９０６ｃはオーディオメモリ１２６から読み出しかつそこへ書き込むために使用される。アドレスとこのレジスタにおけるデータとの間の関係は次の通りである。
【００５２】
【表１】
0005025849.tif 000002
【００５３】
【表２】
0005025849.tif 000003
【００５４】
【表３】
0005025849.tif 000004
【００５５】
【表４】
0005025849.tif 000005
【００５６】
【表５】
0005025849.tif 000006
【００５７】
【表６】
0005025849.tif 000007
【００５８】
データライン９０４ａ−９０４ｃは各々１６ビット幅である。読出動作のために、データラインはプリフェッチデータバッファとして機能し、そこでは、データがオーディオメモリ１２６から前もって読み出され、かつＤＳＰコア８１１がそのデータラインを読み出すときデータを手渡す用意ができている。書込動作のためのデータラインの機能は、ＤＳＰコア８１１からオーディオメモリ１２６に書き込まれるべきデータの一時的なバッファである。データライン９０４ａ−９０４ｃはＦＩＦＯの態様で形成され、それらの入力／出力ポートはＤＳＰコア８１１によって読出でき／書込できる。データラインにおけるデータのアドレスは現在アドレスおよびその２つの後続アドレスに対応する。
【００５９】
図９はオーディオメモリコントローラ８２３の詳細なブロック図である。オーディオメモリコントローラ８２３は次の機能を達成する。
【００６０】
・リセットの後、オーディオメモリを安定化する（オーディオメモリモードの設定も含めて）ためのオーディオメモリ初期タイミングを発生する；
・オーディオメモリのリフレッシュサイクルを発生する；および
・ＤＭＡ８２５およびアクセラレータ８２１の読出／書込要求を受け入れかつその後オーディオメモリ１２６へのアクセスタイミングを発生する。
【００６１】
タイミング発生回路９２８がアクセスタイミングを発生する。この実施例のシステムにおいては、オーディオメモリ１２６を構成する２つまでのメモリがある。第１のものは内部オーディオメモリ９２６ａであり、８Ｍバイトの最大サイズを有する。第２のものは拡張オーディオメモリ９２６ｂであり、３２Ｍバイトの最大サイズを有する。内部オーディオメモリ９２６ａのアドレスは０からスタートし、拡張オーディオメモリ９２６ｂのアドレスは内部オーディオメモリの終了アドレスに連続される。したがって、内部オーディオメモリ９２６ａおよび外部オーディオメモリ９２６ｂのアドレススペースは連続的であり、拡張オーディオメモリ９２６ｂの開始アドレスは内部オーディオメモリ９２６ａのサイズに依存する。内部オーディオメモリ９２６ａおよび拡張オーディオメモリ９２６ｂのモード設定およびリフレッシュサイクルが同時にアクティブとなる。
【００６２】
リセットの後、オーディオメモリコントローラ８２３はオーディオメモリ１２６を初期化する（図９において「ＡＲＡＭ初期化」として表現されている）。初期化中、コントローラ８２３はオーディオメモリ１２６へのアクセスをマスクし、初期化の後、オーディオメモリ１２６が自由にアクセス可能となる。フラグＡＲＡＭ＿ＮＯＲＭは初期化が実行されたことの表示としてセットされる。上で述べたように、初期化はオーディオメモリのモード設定を含む。オーディオメモリモードレジスタに以下の設定がなされる。
【００６３】
・バースト長（たとえば、２バイト），
・アドレスモード（たとえば、順次），
・ＣＡＳレイテンシ（２または３−主プロセサ１１０によってプログラムされる），および
・書込モード（バースト読出およびバースト書込）。
【００６４】
オーディオメモリコントローラ８２３は、内部オーディオメモリ９２６ａおよび拡張オーディオメモリ９２６ｂを同時に初期化する。主プロセサ１１０は、初期化が終了する前に、ＣＡＳレイテンシをプログラムする。もしこのＣＡＳレイテンシが主プロセサ１１０によってプログラムされなければ、オーディオメモリ１２６をアクセスするために、リセットのデフォルトＣＡＳ＝３が用いられる。
【００６５】
初期化の後、オーディオメモリコントローラ８２３は内部オーディオメモリ９２６および拡張オーディオメモリ９２６ｂのサイズを判定する。
【００６６】
チップセレクト信号を除いて、内部オーディオメモリ９２６ａおよび拡張オーディオメモリ９２６ｂは同じアドレスバス，同じデータバスおよび同じ制御信号を共有する。動作中、調停ユニット９３０が３つの要求者
・ＤＭＡ８２５，
・アクセラレータ８２１，および
・リフレッシュカウンタ９３２、についてのアクセスタイミングを発生する。
【００６７】
これらの要求者間における優先権は次の通りである。
【００６８】
リフレッシュカウンタ９３２＞アクセラレータ８２１＞ＤＭＡ８２５
自動リフレッシュ期間はプログラマブルであり、オーディオメモリコントローラ８２３が、内部オーディオメモリ９２６ａおよび拡張オーディオメモリ９２６ｂへのリフレッシュサイクルを同時に与える。
【００６９】
以下のＤＳＰのプログラムビットはＤＭＡ８２５によるオーディオメモリ１２６へのアクセスをマスクするために使用され得る。
【００７０】
【表７】
0005025849.tif 000008
【００７１】
もしＡＭＤＭのビット０がセットされれば、オーディオメモリ１２６へのアクセスがアクセラレータ８２１に占有される。ＡＭＤＭのビット０がクリアされれば、次の処理が発生する。
【００７２】
典型的には、ＤＭＡ８２５は、複数（たとえば、１６）の読出／書込コマンドを介してオーディオメモリ１２６をアクセスする。もしアクセラレータ８２１がこの時間中にオーディオメモリ１２６をアクセスする必要があれば、オーディオメモリコントローラ８２３はオーディオメモリ１２６の同じバンクを２つのものがアクセスしようとしているかどうかを判断する。もしそうであれば、オーディオメモリコントローラ８２３は、ＤＭＡ８２５によるアクセスを終了（プリチャージ：precharge）するとともに、アクセスをアクセラレータ８２１に移す。アクセラレータ８２１が終了した後、オーディオメモリコントローラ８２３はアクセスをＤＭＡ８２５に戻し、そしてＤＭＡ８２５は（まず、アクティブとし）その残りの読出／書込コマンドを実行する。
【００７３】
アクセラレータ８２１およびＤＭＡ８２５が異なるバンクをアクセスしているときには、アクセラレータ８２１およびＤＭＡ８２５の間におけるアクセス転送のより良い性能を実現するために、インタリーブバンクアクセス方法（interleaved bank access scheme）が利用される。この方法では、オーディオメモリコントローラ８２３はＤＭＡバンクをプリチャージ（終了）せず、それを待機状態のままとする。オーディオメモリ１２６へのアクセスがその後アクセラレータ８２１に移される。アクセラレータ８２１がオーディオメモリ１２６のそのアクセスを終了した後、オーディオメモリコントローラ８２３が（最初にアクティブする必要なしに）ＤＭＡ８２５の残りの読出／書込コマンドを実行する。
【００７４】
オーディオメモリ１２６のアクセスが５１２バイトの境界（異なる行）を越えるとき、オーディオメモリコントローラ８２３は、アクセスを終了させるために現在の行をプリチャージし、アクセスを開始させるために次の行をアクティブにする。このことによってデータの読出／書込のサイクル数を増大させることができる。上述のインタリーブバンクアクセス方法は、好ましくは、ＤＭＡによる行を越えてのアクセスまたはアクセラレータによる行を越えてのアクセスについては適用されない。
【００７５】
アクセラレータ８２１は、読出動作のための３つのアドレスモード（４ビット，８ビットおよび１６ビット）および書込動作のための１つのアドレスモード（１６ビット）を含む。異なる読出アドレスモードが異なるフォーマット（たとえば、ＡＤＰＣＭ，８ビットＰＣＭ）の圧縮データを読み出しあるいは非圧縮データを読み出すために便利である。４ビット（ニブル：nibble）アドレスモードでは、データは「少しずつ（nibble）」アドレスできる。各パラメータレジスタ（ビット２６からビット０）の最下位ビット（ビット０）の単位はニブルであり、現在アドレスのｂ１，ｂ０がデータラインのニブルを選択するために使用される。この実施例のオーディオシステムのハードウェアはビット２６からビット２までを用い、２６ビットのオーディオメモリアクセスアドレスとして「０」を連続させる。８ビット（１バイト）アドレスモードはデータを「バイト」アドレス可能である。各パラメータレジスタ（ビット２６からビット０）の最下位ビット（ビット０）の単位はバイトであり、現在アドレスのビット０がデータラインのバイトを選択するために使用される。実施例のオーディオシステムのハードウェアはビット２５からビット１までを使用し、２６ビットのオーディオメモリアクセスアドレスとして「０」を連続させる。１６ビット（１ワード）アドレスモードでは、データは「ワード」アドレス可能である。各パラメータレジスタ（２６ビットから０ビット）の最下位ビット（ビット０）の単位はワードであり、オーディオメモリにおけるデータがワード境界（boundary）に割り当てられる。実施例のオーディオシステムはビット２４からビット０を使用し、２６ビットのオーディオメモリアクセスアドレスとして「０」を連続させる。
【００７６】
オーディオメモリ，アクセラレータ８２１およびオーディオＤＭＡ１５６の間のデータ変換は図１７，図１８および図１９に示す通りである。
【００７７】
もちろん、アドレスモードの数やタイプは例示のために用いられたものであり、この発明はこれに限定されるものではない。アドレスモードはＤＭＡコア８１１によってプログラマブルである。
【００７８】
オーディオメモリＤＭＡ８２５の詳細が図１０に示される。オーディオメモリＤＭＡ８２５は３つのレジスタ９００ａ−９００ｃを含み、それらのレジスタは主メモリの開始アドレス，オーディオメモリの開始アドレス，およびＤＭＡ転送のためのブロック長および方向をそれぞれ規定するために使用される。主プロセサ１１０がこれらのレジスタをプログラムする。レジスタは３２ビット幅であり、ＤＭＡ転送方向はブロック長レジスタの上位ワードのビット１５によって特定される。各側（すなわち、主メモリ１１２，オーディオメモリ１２６）の開始アドレスは３２バイト境界に配置され、ブロック長は３２バイトの倍数である。ＤＭＡ転送の間、これらのレジスタは各メモリコントローラブロックのアクセスによって修正される。不均一なバンド幅のメモリに橋を架けるために、オーディオメモリＤＭＡに組み込まれた１つのメモリコントローラサイズ（３２バイト）データバッファ９５０がある。
【００７９】
主メモリ１１０のオーディオメモリ１２６への動作フローは次のステップを含む。
【００８０】
ステップ１：ブロック長レジスタ９００ｃの下位ワードへの書込がデータを転送する用意ができているＤＭＡ８２５をトリガする。
【００８１】
ステップ２：ＤＭＡ８２５がメモリコントローラ１５２（図３）へ読出要求を送り、次いで３２バイトのデータがＤＭＡデータバッファ９５０に来るのを待つ。
【００８２】
ステップ３：３２バイトのデータがデータバッファ９５０に移動すると、ＤＭＡ８２５は調停回路９３０（図９参照）へ書込要求を送り、そして転送を待つ。主メモリアドレスレジスタ９００ａがまたアドレスインクリメント回路９６０によって３２だけ増加される。
【００８３】
ステップ４：調停回路９３０によってＤＭＡ８２５がオーディオメモリ１２６へアクセスするのが認められると、書込コマンドがオーディオメモリ１２６へ送られるとともに、データが、３２バイトが移動されてしまう（バッファエンプティ）まで、ＤＭＡデータバッファ９５０からオーディオメモリ１２６へバイト毎に移動し始める。オーディオメモリアドレスがオーディオアドレスインクリメント回路９６２によって３２だけ増加され、ブロック長がブロック長ディクリメント回路９６４によって３２だけ減少される。
【００８４】
ステップ５：ステップ２からステップ４が、ブロック長が０になるまで繰り返される。この時点において、ＤＭＡ８２５が停止し、制御ロジック９５４はフラグをセットし、主プロセサ１１０に割込を発生する。この割込はマスカブル（maskable）である。
【００８５】
オーディオメモリ１２６の主メモリ１１０への動作フローは次のステップを含む。
【００８６】
ステップ１：ブロック長レジスタの下位ワードへの書込がデータを転送する用意ができているＤＭＡ８２５をトリガする。
【００８７】
ステップ２：ＤＭＡ８２５が調停回路９３０（図９）へ読出要求を送り、次いで３２バイトのデータを待つ。
【００８８】
ステップ３：調停回路９３０によってＤＭＡ８２５がオーディオメモリ１２６へアクセスするのが認められると、読出コマンドがオーディオメモリ１２６へ送られるとともに、データが、３２バイトが移動されてしまうまで、オーディオメモリ１２６からＤＭＡデータバッファ９５０へバイト毎に移動し始める。オーディオメモリアドレスレジスタのオーディオメモリアドレスがオーディオアドレスインクリメント回路９６２によって３２だけ増加される。
【００８９】
ステップ４：３２バイトのデータがＤＭＡデータバッファ９５０に移動すると、ＤＭＡ８２５はメモリコントローラ１５２へ書込要求を送る。３２バイトのデータが次いで、ＤＭＡデータバッファ９５０からメモリコントローラバスに移動される。その後、主メモリ１１０のアドレスが主メモリアドレスインクリメント回路９６０によって増加されるとともに、ブロック長がブロック長ディクリメント回路９６４によって３２だけ減少される。
【００９０】
ステップ５：ステップ２からステップ４が、ブロック長が０になるまで繰り返される。この時点において、ＤＭＡ８２５が停止し、制御ロジック９５４はフラグをセットし、主プロセサ１１０に割込を発生する。この割込はマスカブルである。
【００９１】
各３２バイトの転送の前に調停が実行される。メモリコントローラへのバス調停の優先順位は次のようである。
【００９２】
ＡＩＤＭＡ８０５＞ＤＳＰＤＭＡ８１９＞ＡＲＡＭＤＭＡ８２５
読出動作
ＤＳＰコア８１１がデータラインを読み出し始める前に、開始および終了アドレス，現在アドレスの上位ワード，および次いで現在アドレスの下位ワードが設定される。現在アドレスレジスタの下位ワードがＤＳＰコア８１１によってロードされると、読出／書込動作モードが現在アドレスレジスタの上位ワードのビット１５によって設定される。読出モードが指定されると、３つのワードのデータがオーディオメモリ１２６からデータライン９０４ａ−９０４ｃに「プリフェッチ」される。このプリフェッチされたデータは現在アドレスおよび次に続く２つのアドレスのためのデータに相当する。
【００９３】
現在アドレスの下位ワードがロードされてからそのデータライン上にデータが利用できるようになるまで、典型的には、たとえば約１０サイクルのレイテンシがある。このレイテンシ期間中、アクセラレータ８２１は最初のデータが利用可能になるまで、ＤＳＰコア８１１の動作を停止させる。レイテンシ期間中にまた、パラメータレジスタ９０６ａ−９０６ｃへの読出および書込が禁止される。
【００９４】
現在アドレスが、ＤＳＰがデータラインの１つを読み出した後に１つだけインクリメントされる。アクティブなデータラインの最後のデータが読み出されると、アクティブなデータラインが次のラインに切り換えられ、１つのラインが今エンプティになったことを意味する。後続アドレスのためのデータが次いでプリフェッチされる。
【００９５】
ラインにおけるデータがＤＳＰコア８１１によって読み出されていてかつアドレスが開始アドレスに等しければ、ＤＳＰコア８１１に対して割込が発生される。この割込はＤＳＰコア８１１によってマスカブル（maskable）である。
【００９６】
書込動作
ＤＳＰ８１１がデータラインを書き込む前に、開始および終了アドレス，現在アドレスの上位ワード，および次いで現在アドレスの下位ワードがパラメータレジスタ９０６ａ−９０６ｃに設定される。現在アドレスレジスタの下位ワードがＤＳＰコア８１１によってビット１５＝１でロードされると、アクセラレータが書込動作モードに設定される。データライン９０４ａ−９０４ｃにデータが利用できるようになると、アクセラレータ８２１はそのラインのデータを、現在アドレスおよびそれに後続するアドレスによって、データラインがエンプティになるまで、オーディオメモリ１２６にストアする。データラインからのデータがオーディオメモリ１２６にストアされかつ現在アドレスが終了アドレスに等しければ、アクセラレータ８２１はＤＳＰコア８１１に対して割込を発生する。この割込はＤＳＰコア８１１によってマスカブルである。書込動作中において、パラメータレジスタのどれかが読出／書込のためにアクセスされると、アクセラレータ８２１は、データラインがエンプティになるまでＤＳＰコアの動作を停止する。この実施例においては、アクセラレータ８２１の書込モードは常に１６ビットである。
【００９７】
読出中におけるプリフェッチ動作は、特に、音声サンプルがループ点を有するときに有用である。予め記録された音声サンプル（たとえばピアノのような楽器の音声）は、典型的には、特別なフォーマット（たとえば、ＷＡＶまたはＡＩＦＦ）のファイルとしてストアされる。上で注目したように、音声サンプルは図１５に示すように最初から終わりまで再生される（「ワンショット再生」）か、もしくは音声サンプルは、図１６に示すように、サンプルが終了したとき位置がループ位置まで「巻き戻される」ように「ループされる」かもしれない」（おそらくエンベロープ圧縮で）。ループ再生はサンプルの一部を繰り返し再生することがサンプルのサイズを減じるという限りにおいて有利である。しかしながら、メモリアドレス回路がループ位置の点に更新される間、サンプルを含むオーディオファイルにおいて先の点まで巻き戻すことはファイルをアクセスするのに結果的に遅延を生じる。特に、メモリからのデータの読出は、メモリが現在アドレスの単純なインクリメントによってアドレス可能なときに最も効率的である。しかしながら、ループ戻りは、メモリアドレス回路をループ位置にリセットし、そしてそのループ戻しを１回以上行う場合にはメモリアドレス回路をそのループ位置へ繰り返しリセットする必要がある。次の順次のファイルアドレスでのデータを読み出すためにアドレスレジスタをインクリメントすることは素早く実行され得るが、これらのレジスタをリセットすることは長時間を要し、そして最後に予めループ戻ししたアドレスでのデータの出力とループ戻しのアドレスでのデータの出力との間にレイテンシ（遅延）期間を結果的に生じる。このことはオーディオ出力に中断を生じるとともに、原形を損なうことになり、減少した数の音声が再生される。これらのすべてが逆にプレーヤのゲーム経験に強い衝撃を与える。オーディオメモリ１２６からのデータのプリフェッチは、上で述べたように、オーディオ出力に原形が損なわれる可能性を減じる。アドレスレジスタがリセットされるときにはプリフェッチされたデータが既に存在するのであるから、オーディオディジタル信号プロセサは、メモリアドレスがループ戻しアドレスにリセットされるときのレイテンシ期間中でもデータの読出を継続することができる。
【００９８】
もちろん、読出／書込バッファとしての３つのデータラインの使用は一例であり限定ではなく、この発明は、読出／書込バッファとしてのデータラインのどんな特別な数にも限定されない。一般的にいえば、データラインの数はオーディオファイルのループ再生中にアドレスレジスタを再設定するに要するレイテンシをマスクするに十分な量のプリフェッチを可能にすれば足りる。さらに、この発明が上ではループ再生に関連するレイテンシの期間において説明されたが、プリフェッチ技術は、オーディオメモリからデータを読み出すための他の動作に関連するレイテンシをマスクするためにも適用できる。
【００９９】
図１１および図１２は音声を再生するためのデータフローおよび制御フローをそれぞれ図解する。図１１に示すように、音声サンプルは大容量記憶媒体６２から周辺（Ｉ／Ｏ）コントローラ１６２を介して主メモリ１１２に読み込まれ、かつその主メモリ１１２からＡＲＡＭＤＭＡ８２５を介してオーディオメモリ１２６に読み込まれる。音声サンプルはアクセラレータ８２１を介してＤＳＰコア８１１によって読み出され、このＤＳＰコア８１１はその音声サンプルを処理／ミックスする。処理／ミックスされた音声サンプルは、主メモリ１１２内にバッファされ、次いで、オーディオコーデック１２２を介してのスピーカ６１Ｌおよび６１Ｒへの出力のために、オーディオインタフェースＦＩＦＯ８０７に転送される。図１２に示すように、ゲームアプリケーションは音声の必要性を最終的に指令する。このゲームアプリケーションはオーディオシステム（主プロセサ）実行時アプリケーションへのコールをし、その実行時アプリケーションはオーディオＤＳＰ１５６のためのコマンドリストを発生する。このコマンドリストを実行する際に、オーディオＤＳＰ１５６は適宜の音声サンプルを抽出し、それを必要に応じて処理する。
【０１００】
音楽合成のためのデータおよび制御フローは図１１に示す音声サンプルについてのそれと同様である。大容量記憶媒体６２からの楽器波形テーブルが主メモリ１１２を介してオーディオメモリ１２６にストアされる。オーディオＤＳＰ１５６は、オーディオシステム（主プロセサ）実行時アプリケーションによって発生されたコマンドを受け取ると、必要な楽器サンプルを抽出し、それらを処理しかつミックスし、得られる結果を主メモリ１１２にストアする。その後、その結果がオーディオコーデック１２２を介してのスピーカ６１Ｌおよび６１Ｒへの出力のためにオーディオインタフェースＦＩＦＯ８０７に転送される。オーディオシステム（主プロセサ）実行時アプリケーションによって発生されたコマンドは楽譜によって駆動され、その楽譜は大容量記憶媒体６２から主メモリ１１２に読み込まれ、そしてゲームのコマンドに従ってオーディオシステム（主プロセサ）実行時アプリケーションによって処理されかつ順番に配列される。
【０１０１】
オーディオシステム（主プロセサ）実行時アプリケーションはまたソフトウェアストリームを提供するためにオーディオトラックの再生およびミキシングを管理する。ソフトウェアストリームは１つ以上のオーディオトラックの同時再生を許容し、或る程度の双方向性（インタラクティビティ）を提供する。たとえばゲームが、たとえば１つのトラックから他のトラックにフェードインしてプレーヤの気分に影響を与える。一般的には、異なるオーディオトラックが個々の音声サンプルとしてオーディオメモリ１２６にバッファされる。オーディオＤＳＰ１５６はそしてトラックを引き出しそれらを他の音声としてミックスする。
【０１０２】
実行時オーディオライブラリは、オーディオＤＳＰ１５６のリソース使用法をモニタし、そしてそれに従って音声割付をダイナミックに制限するリソース管理アルゴリズムを含む。このことによって、不正なオーディオ出力が結果的に生じることになるオーディオＤＳＰ１５６の過負荷を防止する。好ましくは、リソース管理アルゴリズムはスムーズで連続的なオーディオを確保するために、最悪値メモリアクセスレイテンシを想定する。たとえば、各音声のミキシングおよび処理要求に依存して、６４までの音声が支持され得る。
【０１０３】
互換性のある他の実施例
上述のシステム５０は上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【０１０４】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【０１０５】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【０１０６】
図１３はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【０１０７】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【０１０８】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【０１０９】
図１４はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中のエレメント（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【０１１０】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【０１１１】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内蔵もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【０１１２】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【０１１３】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために使用されるエミュレータ１３０３は、また、そのエミュレータを用いて実行しているゲームのための種々のオプションおよびスクリーンモードの選択を単純化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備えてもよい。一例として、そのようなエミュレータ１３０３は本来的にそのソフトウェアを意図していたホストプラットフォームに比べてより増強された機能性を含んでいてもよい。
【０１１４】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６は図３に示すオーディオＤＳＰ１５６，オーディオメモリインタフェース１５８およびオーディオインタフェース／ミキサ１６０をより詳細に示すブロック図である。
【図７】図７はオーディオＤＳＰ１５６の処理ステップを示す。
【図８】図８はアクセラレータ８２１を示すブロック図である。
【図９】図９はオーディオメモリコントローラ８２３を示す詳細ブロック図である。
【図１０】図１０はオーディオメモリＤＭＡ８２５を示す詳細ブロック図である。
【図１１】図１１は音声再生のためのデータフローおよび制御フローをそれぞれ示す図解図である。
【図１２】図１２は音声再生のためのデータフローおよび制御フローをそれぞれ示す図解図である。
【図１３】図１３は他の互換性のある一実施例を示す図解図である。
【図１４】図１４は他の互換性のある他の実施例を示す図解図である。
【図１５】図１５はワンショット再生を示す図解図である。
【図１６】図１６はループ再生を示す図解図である。
【図１７】図１７は４ビットアドレスモードにおけるオーディオメモリ，データライン，およびオーディオＤＳＰのデータを示す図解図である。
【図１８】図１８は８ビットアドレスモードにおけるオーディオメモリ，データライン，およびオーディオＤＳＰのデータを示す図解図である。
【図１９】図１９は１６ビットアドレスモードにおけるオーディオメモリ，データライン，およびオーディオＤＳＰのデータを示す図解図である。
【符号の説明】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
５４  …主ユニット
１１０  …主プロセサ
１１２  …主メモリ
１１４  …グラフィクス／オーディオプロセサ
１２６  …オーディオメモリ（ＡＲＡＭ）
１５６  …オーディオＤＳＰ
８２１  …アクセラレータ
８２３  …ＡＲＡＭコントローラ
８２５  …ＡＲＡＭＤＭＡ
９０２  …後続アドレス発生回路
９０４ａ−９０４ｃ  …データライン
９０６ａ−９０６ｃ  …パラメータレジスタ
９２６ａ  …内部オーディオメモリ
９２６ｂ  …拡張オーディオメモリ
【図１】
0005025849.tif 000009
【図２】
0005025849.tif 000010
【図３】
0005025849.tif 000011
【図４】
0005025849.tif 000012
【図５】
0005025849.tif 000013
【図６】
0005025849.tif 000014
【図７】
0005025849.tif 000015
【図８】
0005025849.tif 000016
【図９】
0005025849.tif 000017
【図１０】
0005025849.tif 000018
【図１１】
0005025849.tif 000019
【図１２】
0005025849.tif 000020
【図１３】
0005025849.tif 000021
【図１４】
0005025849.tif 000022
【図１５】
0005025849.tif 000023
【図１６】
0005025849.tif 000024
【図１７】
0005025849.tif 000025
【図１８】
0005025849.tif 000026
【図１９】
0005025849.tif 000027