(57)【特許請求の範囲】
【請求項１】
複数の音色に対応する各波形データを記憶するメモリ、音源デバイス、およびＯＳならびにハードウェアコントロールドライバを実行するコンピュータシステムによって実現され、音色とピッチを指示する発音データに基づいて楽音を再生する音源システムであって、
前記音源デバイスは、音源部およびインターフェース部を含み、
前記ＯＳは、
前記メモリを、連続したアドレスに対応する第１の記憶領域と、固定長のアドレスに対応する複数のページを備えた第２の記憶領域とに分けて管理し、
前記ハードウェアコントロールドライバは、
前記ＯＳに対し、前記メモリに前記第１の記憶領域を確保するように要請して、使用頻度の高い波形データを前記第１の記憶領域に記憶させ、使用頻度の高くない波形データを前記第２の記憶領域に記憶させ、前記第１または第２の記憶領域に記憶された波形データの開始アドレスを管理するとともに、当該波形データを前記第１または第２の記憶領域のうちいずれに記憶したかを示す領域情報を管理し、
前記発音データが入力されると、当該発音データで指定されるピッチを示すピッチ情報と、当該発音データで指示される音色に応じた波形データの開始アドレスを前記音源部に転送し、
前記音源部は、
転送された開始アドレスとピッチ情報とから、転送すべき波形データの転送開始アドレスと転送個数とを算出して、転送すべき波形データの領域指示を発行するとともに、当該領域指示に対応して転送された波形データに基づき楽音を再生し、
前記インターフェース部は、
算出された転送開始アドレスと転送個数とに基づき転送アドレスを生成し、
当該転送アドレスを用いて前記メモリから前記音源部に波形データが転送されるようにし、
当該転送アドレスを用いてページの区切りを検出するとともに、当該波形データが前記第２の記憶領域に記憶されたことが前記領域情報によって示され、かつ、ページの区切りが検出された場合に、前記ＯＳに対し、後続する波形データが記憶されたアドレスを要求し、
前記ＯＳは、前記要求に基づいて、前記第２の記憶領域のうち、後続する波形データが記憶されたアドレスを、前記インターフェース部に供給する
ことを特徴とする音源システム。
【請求項２】
前記次転送アドレスのうち、前記ページの容量に対応する下位ビットを越える上位ビットを監視することにより、ページの区切りを検出することを特徴とする請求項１に記載の音源システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、効率よくデータを転送可能な音源システムに関する。
【０００２】
【従来の技術】
コンピュータシステムのデータ転送方式として、システムのＣＰＵ(Central Processing Unit:中央演算処理装置)を介することなく、デバイスからメインメモリ（またはその逆）へのデータ転送を行なうＤＭＡ(Direct Memory Access)方式が知られている。ＤＭＡ方式では、ＣＰＵによってメインメモリを管理しないため、高速にデータを転送できるという利点がある。
【０００３】
ところで、ＤＭＡの一方式であるスキャッターギャザーＤＭＡ方式においては、メインメモリの記憶領域をページと呼ばれる複数の小記憶領域に分割して、ページ単位でメモリ管理を行う。ここで、メインメモリの容量を３２Ｍバイト、仮想記憶の容量を４Ｇバイトとすると、論理アドレスは３２ビット、物理アドレスは２５ビット、１ページ内のアドレスは１２ビットで表されることになる。この場合、論理アドレスの下位１２ビットは物理アドレスと一致する。しかしながら、各ページはメインメモリ上に分散されて配置されているので、論理アドレスの１３ビットから２５ビットまでは、物理アドレスと一致するとは限らない。このため、専用のハードウエアを用いて論理アドレスを物理アドレスに変換してデータ転送を実行している。
【０００４】
例えば、連続した論理アドレスで指定される一定量のデータをメインメモリから、デバイスに転送する場合を想定すると、あるページ内のデータは連続した物理アドレスで指定できるので、メインメモリ上のページ位置が特定されれば、論理アドレスの下位１２ビットを用いて当該ページ内のデータをメインメモリから読み出すことができる。しかし、データがページの区切りを越えると、別のページを特定する必要がある。このため、ページの区切りとなるページ区切アドレスを検出する専用のハードウエアを設け、ページの区切りが検出されると、データ転送を停止し区切り毎に割込を発生させ、ＯＳの割込処理ルーチンで次の物理アドレスを取得できるようにしている。そして、取得した物理アドレスを用いてデータ転送を再開するようにしている。
【０００５】
【発明が解決しようとする課題】
ところで、近年のコンピュータシステムにおいては、音源ＬＳＩを組み込んで楽音を再生することが行われている。この場合には、ピアノやギターといった各種の音色に各々対応する波形データをメインメモリに書き込み、そこから読み出した波形データに基づいて楽音を再生することが多い。しかしながら、波形データをスキャッターされた記憶領域（分散された記憶領域）に格納すると、当該波形データをアクセスする際に大量の割込が発生し、データの転送効率が低下してしまう。特に、ピアノ、ギター、あるいはドラムといった各種の音色を同時に発音させる場合には、大きな問題となる。例えば、１ページの容量が４ｋバイト、サンプリング周波数が４８KHzであって、６４chの同時発音を行う場合には１．３ms（=4k／(48k*64)）毎に割込が発生し、円滑なデータ転送を行うことができない。
【０００６】
一方、割込によるスキャッターギャザー処理を行わないとすれば、全ての波形データを連続直線領域（アドレスが連続する記憶領域）に記憶する必要がある。しかし、メインメモリ上で大きな連続直線領域が常に確保されるとは限らない。また、ＤＬＳ(down load sample)などの波形入替処理では、例えば、ピアノの音色をギターの音色に変換する処理が行われ、そこでは、上位のアプリケーションによって指示される波形データをハードディスクから読み出してメインメモリに格納されている波形データと入れ替える必要がある。また、一般的な波形再生時にも楽音の再生が終了すると、当該波形データをメインメモリ上に格納しておく必要がないので、記憶領域を開放することが行われる。すなわち、これらの場合には、波形データの記憶領域を確保したり開放することが行われるので、連続直線領域を確保する必要性に乏しく、メインメモリ上で大きな連続直線領域を占有することにより他のアプリケーションに与える弊害が大きい。
【０００７】
本発明は上述した事情に鑑みてなされたものであり、メインメモリ上に連続直線領域とスキャッタ領域とを各々確保し、これらの領域を適宜使い分けることにより、効率の良くメインメモリを使用する音源システムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために請求項１記載の発明にあっては、複数の音色に対応する各波形データを記憶するメモリ、音源デバイス、およびＯＳならびにハードウェアコントロールドライバを実行するコンピュータシステムによって実現され、音色とピッチを指示する発音データに基づいて楽音を再生する音源システムであって、前記音源デバイスは、音源部およびインターフェース部を含み、前記ＯＳは、前記メモリを、連続したアドレスに対応する第１の記憶領域と、固定長のアドレスに対応する複数のページを備えた第２の記憶領域とに分けて管理し、前記ハードウェアコントロールドライバは、前記ＯＳに対し、前記メモリに前記第１の記憶領域を確保するように要請して、使用頻度の高い波形データを前記第１の記憶領域に記憶させ、使用頻度の高くない波形データを前記第２の記憶領域に記憶させ、前記第１または第２の記憶領域に記憶された波形データの開始アドレスを管理するとともに、当該波形データを前記第１または第２の記憶領域のうちいずれに記憶したかを示す領域情報を管理し、前記発音データが入力されると、当該発音データで指定されるピッチを示すピッチ情報と、当該発音データで指示される音色に応じた波形データの開始アドレスを前記音源部に転送し、前記音源部は、転送された開始アドレスとピッチ情報とから、転送すべき波形データの転送開始アドレスと転送個数とを算出して、転送すべき波形データの領域指示を発行するとともに、当該領域指示に対応して転送された波形データに基づき楽音を再生し、前記インターフェース部は、算出された転送開始アドレスと転送個数とに基づき転送アドレスを生成し、当該転送アドレスを用いて前記メモリから前記音源部に波形データが転送されるようにし、当該転送アドレスを用いてページの区切りを検出するとともに、当該波形データが前記第２の記憶領域に記憶されたことが前記領域情報によって示され、かつ、ページの区切りが検出された場合に、前記ＯＳに対し、後続する波形データが記憶されたアドレスを要求し、前記ＯＳは、前記要求に基づいて、前記第２の記憶領域のうち、後続する波形データが記憶されたアドレスを、前記インターフェース部に供給することを特徴とする。
【００１２】
また、請求項２記載の発明にあっては、前記次転送アドレスのうち、前記ページの容量に対応する下位ビットを越える上位ビットを監視することにより、ページの区切りを検出することを特徴とする。
【発明の実施の形態】
１．実施形態の構成
１−１：全体構成
図１は本発明に係わるメモリ管理方法を用いたコンピュータシステムの一実施形態を示したブロック図である。コンピュータシステム１は、以下の部分から構成されている。
【００１３】
まず、ＣＰＵ１０は、バス２０を介して各構成部分と接続されておりコンピュータシステム１全体を制御し、各種のソフトウエアを実行する。なお、この例では、バス２０としてバースト転送による高速データ伝送が可能なＰＣＩ(Peripheral Component Interconnect)バスが用いられる。
【００１４】
次に、メインメモリ３０は主記憶装置として機能しＣＰＵ１０の作業領域として用いられるとともに、そこには、アプリケーションプログラムやそこで用いられる各種のデータ等が格納される。
【００１５】
次に、音源ボード４０は、音源部１００とインターフェース部２００から構成されており、拡張スロットに挿着されるようになっている。また、そこでは、アプリケーションプログラムの制御の下、各種のサウンド処理が行われるようになっている。この音源部１００は、ピアノやギターといった各種の音色に対応した各波形データＷＴをウエーブテーブルに予め格納しておき、必要に応じて複数の波形データＷＴを読み出してピッチ変換等の処理を施し、それらを合成するように構成されている。このウエーブテーブルは、メインメモリ３０に格納される。また、この例の音源部１００は、６４種類の音色を同時に発音できるように構成されており、各音色に対応する構成はチャネル（以下、「ch」と略す。）と呼ばれる。また、インターフェース部２００は、ＣＰＵ１０を介することなくメインメモリ３０に直接アクセスできるようにバスマスター機能を備えており、バースト転送モードに対応できるように構成されている。なお、音源部１００とインターフェース部２００の詳細な構成については後述する。
【００１６】
次に、ハードディスク５０は二次記憶装置として機能し、そこには、サウンド処理に用いられる各種のデータやプログラムが格納されており、ＣＰＵ１０の制御の下、これらのデータやプログラムがメインメモリ３０に転送されるようになっている。
【００１７】
また、コンピュータシステム１は、上述したものの他、ユーザが操作することによって指示が入力されるキーボード６０、および文字や画像等を表示するディスプレイ７０を備えている。
【００１８】
１−２：詳細構成
以下、本実施形態に係わるコンピュータシステム１の詳細構成を図２を参照しつつ説明する。
＜ＣＰＵ＞
まず、ＣＰＵ１０で実行されるソフトウエアとしては、アプリケーション１１、ハードウエアコントロールドライバ１２、および物理アドレス取得ルーチン１３等がある。このアプリケーション１１は、例えば、ゲームソフトでありゲームの進行に応じてハードウエアコントロールドライバ１２に発音データを渡すようになっている。発音データは、例えば、ＭＩＤＩ(Musical Instrument Digital Interface)形式で構成されており、音色やピッチといった発音パラメータを指示する。
【００１９】
次に、ハードウエアコントロールドライバ１２は、コンピュータシステム１のＯＳ（Operating System）の起動時に立ち上がるように設定されており、立ち上がると同時にＯＳに対してメインメモリ３０に連続直線領域Ａ１を確保するように要請する。そして、連続直線領域Ａ１が確保されると、ハードディスク５０から使用頻度の高い波形データＷＴを読み出して当該連続直線領域Ａ１に格納するとともに、他の波形データＷＴを必要に応じてスキャッター領域Ａ２に格納する。この際、ハードウエアコントロールドライバ１２は、各音色に対応づけてその波形データＷＴが格納されている領域が連続直線領域Ａ１であるかスキャッター領域Ａ２であるかを領域情報として管理するとともに、各波形データの論理アドレスＬを管理する。また、ハードウエアコントロールドライバ１２は、ＯＳから連続直線領域Ａ１が開始する物理アドレスＰを受け取りこれをオフセット情報として保持する。
【００２０】
そして、アプリケーション１１から発音データを受け取ると、ハードウエアコントロールドライバ１２は、その発音パラメータから指定された音色、発音時間、ピッチ等を検知する。この後、検知された音色に対応する波形データＷＴが連続直線領域Ａ１に格納されているか、あるいはスキャッター領域Ａ２に格納されているかが領域情報に基づいて判定される。当該波形データが連続直線領域Ａ１に格納されていると判定された場合には、当該波形データＷＴが開始する論理アドレスＬとオフセット情報に基づいて、物理アドレスＰを算出する。一方、当該波形データＷＴがスキャッター領域Ａ２に格納されていると判定された場合には、その論理アドレスＬを取得する。これらの物理アドレスＰまたは論理アドレスＬは開始アドレスADRsとして出力される。
【００２１】
こうして得られた開始アドレスADRsと発音データの発音時間やピッチ等の発音パラメータHPは、音源部１００に送出される。また、送出されるアドレスが物理アドレスＰであるか論理アドレスＬであるかを示すL/Pフラグｆが領域情報に基づいて生成され、インターフェース部２００に送られる。
【００２２】
次に、物理アドレス取得設定ルーチン１３はＯＳの一部であって、論理アドレスＬに基づいて物理アドレスＰを設定するようになっている。
【００２３】
＜メインメモリ＞
次に、メインメモリ３０は、連続直線領域Ａ１とスキャッター領域Ａ２から構成されており、連続直線領域Ａ１には連続するアドレスに波形データが格納され、スキャッター領域Ａ２には一つの波形データがページ単位に分割されて飛び飛びに記憶される。
【００２４】
ここで、図３にメインメモリ３０の詳細な構成例を示す。例えば、メインメモリ３０の容量を６４Ｍバイト、ページの容量を４ｋバイトとすれば、このメインメモリ３０を構成するページは１〜１６８４のページ番号で表すことができる。図に示す例は、ページ番号１からページ番号ｎまでに連続直線領域Ａ１を設け、ページ番号ｎ＋１からページ番号１６８４までにスキャッター領域Ａ２を設けたものである。この例の連続直線領域Ａ１には、ページ番号１，２，…ｍに対応する記憶領域に波形データＷＴ１が格納され、ページ番号ｍ＋１，ｍ＋２，…２ｍに対応する記憶領域に波形データＷＴ２が格納される。
【００２５】
一方、スキャッター領域Ａ２において、斜線部分は他のアプリケーションによって既に占有されているページであり、その他の部分に波形データが格納される。図に示す例では、ページ番号ｎ＋１、ｎ＋４、１６８４に波形データＷＴ３が格納されている。
【００２６】
＜音源部＞
次に、音源部１００は、図２に示すようにＦＩＦＯ１１０、音源回路１２０、ＤＡＣ（Digital/Analog Converter）１３０、およびアドレス計算回路１４０から構成されている。まず、ＦＩＦＯ１１０は、必要に応じてメインメモリ３０から読み出された波形データＷＴを処理順に格納する。
【００２７】
次に、音源回路１２０は、ハードウエアコントロールドライバ１２から受信した開始アドレスADRsと発音パラメータHPのピッチ情報に基づいて、補間処理を行って次に再生すべき波形データＷＴのアドレスを小数点を含んだ形式で算出し、これを補間アドレスADRiとしてアドレス計算回路１４０に渡すように構成されている。また、音源回路１２０は、ＦＩＦＯ１１０から読み出された波形データＷＴと発音パラメータHPに基づいて、ピッチ変換や音量調整等の処理を施して、楽音データＳＤを再生するように構成されている。また、楽音データＳＤは、ＤＡＣ１３０によってアナログ信号に変換され、楽音信号Ｓとして出力されるようになっている。
【００２８】
次に、アドレス計算回路１４０は、小数点を含む補間アドレスADRiに基づいて、補間アドレスADRiの前後のアドレスを計算し、転送すべきデータの領域を指示する転送領域指示Ｃ１を発行する。転送領域指示Ｃ１は、転送を開始するアドレスを指示する転送開始アドレスADRtsと転送数（連続するアドレス数）ｎから構成される。例えば、図４に示すように、補間アドレスADRiの値が５．２５→６．５→７．７５といったように変化したとすると、アドレス計算回路１４０は、「５．２５」に対してアドレス値５、６を、「６．５」に対してアドレス値６，７を、「７．２５」に対してアドレス値７、８を特定する。この場合、特定されたアドレス値は、「５、６、６、７、７、８」となり、アドレス値６、７が重複している。このように同じアドレス値が連続する場合には、重複するアドレス値を削除して転送領域を特定する。この例の転送領域指示Ｃ１では、転送開始アドレスADRtsの値が５、転送数ｎの値が４となる。
【００２９】
このように音源部１００では、必要な波形データＷＴを読み出すために補間処理を行って転送領域指示Ｃ１を生成するが、補間処理は連続直線アドレスとピッチ情報に基づいて行われるため、開始アドレスADRsが物理アドレスＰであるか論理アドレスＬかを問わず動作することが可能である。
【００３０】
＜インターフェース部＞
次に、インターフェース部２００とその周辺構成を示す図５を参照しつつ、インターフェース部２００について説明する。図５に示すようにインターフェース部２００はバスマスター転送コントロール回路２１０、ページ区切検出回路２２０、およびアドレス変換回路２３０から構成されている。
【００３１】
まず、バスマスター転送コントロール回路２１０は、転送領域指示Ｃ１に基づいて、転送アドレスADRtを生成するとともに次に転送すべきデータを指示する次転送アドレスADRtnを生成するように構成されている。転送アドレスADRtは転送領域指示Ｃ１の転送開始アドレスADRtsを順次インクリメントして算出され、次転送アドレスADRtnは転送アドレスADRtをインクリメントして算出される。転送アドレスADRtはアドレス変換回路２２０に送られ、一方、次転送アドレスADRtnはページ区切検出回路２３０に送られる。なお、バスマスター転送コントロール回路２１０は、転送停止指示Ｃ２と転送再開指示Ｃ４に基づいて動作が制御されるようになっている。
【００３２】
ところで、上述したように音源部１００は、ハードウエアコントロールドライバ１２から送出される開始アドレスADRsが物理アドレスＰであるか論理アドレスＬであるかに拘わらず動作するが、メインメモリ３０のアクセスに用いられるアドレスは物理アドレスＰであることが必要である。ここで、対象とする波形データＷＴが連続直線領域Ａ１に格納されているのであれば、上述したようにハードウエアコントロールドライバ１２は開始アドレスADRsを物理アドレスＰで出力する。この場合には、音源部１００の処理は物理アドレスＰに基づいて行われることになるので、バスマスタ−転送コントロール回路２１０で生成される転送アドレスADRtも物理アドレスＰで表されることになる。
【００３３】
一方、対象とする波形データＷＴがスキャッター領域Ａ２に格納されているのであれば、開始アドレスADRsは論理アドレスＬで表され、転送アドレスADRtも論理アドレスＬで表されることになる。したがって、転送アドレスADRtを論理アドレスＬから物理アドレスＰに変換する必要がある。スキャッター領域Ａ２はページ単位に分割されているから、波形データＷＴが偶然に連続するページに格納されている場合を除いて、ページの区切りで物理アドレスＰが不連続となる。このため、ページの区切りを越えるたびに転送アドレスADRtに対応する物理アドレスＰを知る必要がある。換言すれば、同一ページ内の波形データＷＴを転送するのであれば、物理アドレスＰの上位アドレスは変化しないのでこれを用いればよく、ページの区切りを越えた場合にのみ物理アドレスＰを取得すればよい。
【００３４】
ページ区切検出回路２２０は、このために設けられたものであって、転送領域指示Ｃ１が論理アドレスＬに基づくものである場合にページの区切りを検出して割込指示Ｃ３を発行するように構成されており、比較器やレジスタ等を備える。また、L/Pフラグfが論理アドレスＬを指示する場合にのみページ区切検出回路２２０は動作する。具体的には、直前の次転送アドレスADRtnと現在の次転送アドレスADRtnの上位ビット（ページの容量を越えるもの）を比較器を用いて比較し両者が不一致となったとき、割込指示Ｃ３を発行する。例えば、論理アドレスＬが３２ビットで１ページが１２ビットであるならば、上位２０ビットを比較する。
【００３５】
また、レジスタには現在の次転送アドレスADRtn（論理アドレスＬ）を格納しておく。物理アドレス取得設定ルーチン１３は、割込指示Ｃ３を受け取ると、レジスタにアクセスして論理アドレスＬを読み出して、これに対応する物理アドレスＰを生成するようになっている。
【００３６】
ところで、ページの区切りが検出された場合には、物理アドレス取得設定ルーチン１３によって物理アドレスＰが取得されるまで処理を待つ必要がある。このため、ページ区切検出回路２２０はページの区切りを検出すると、転送停止指示Ｃ２をバスマスター転送コントロール回路２１０に対して発行するとともに、物理アドレス取得設定ルーチン１３から転送再開指示Ｃ４があると、バスマスター転送コントロール回路２１０に対して転送再開指示Ｃ４を送るようになっている。
【００３７】
次に、アドレス変換回路２３０は、L/Pフラグｆを参照して、転送アドレスADRtを物理アドレスＰに変換するように構成されており、セレクタやレジスタ等を備えている。このレジスタには物理アドレス取得設定ルーチン１３で取得された物理アドレスＰが書き込まれるようになっており、セレクタは、L/Pフラグｆに基づいてレジスタのデータと転送アドレスADRtを選択して出力ようになっている。具体的には、L/Pフラグｆが物理アドレスＰを指示するらば、転送アドレスADRtは物理アドレスＰで表されているので、転送アドレスADRtをそのまま出力する。一方、L/Pフラグｆが論理アドレスＬを指示する場合には、転送アドレスADRtのうちページ内のアドレスを指示する下位ビットは転送アドレスADRtを用い、ページ番号等を指示する上位ビットはレジスタに格納されている物理アドレスＰを出力するように構成されている。
【００３８】
以上の構成によって、物理アドレスＰが生成されると、これを用いてメインメモリ３０がアクセスされ波形データＷＴが読み出され、音源部１００のＦＩＦＯ１１０に波形データＷＴが順次格納される。
【００３９】
２．実施形態の動作
次に、本実施形態に係わるコンピュータシステム１のメモリ管理動作を図面を参照しつつ説明する。図６は、コンピュータシステム１のメモリ管理をサウンド処理を一例として示したものである。
【００４０】
図において、ＯＳの起動時にハードウエアコントロールドライバ１２が立ち上がると、ハードウエアコントロールドライバ１２はＯＳに対して連続直線領域Ａ１をメインメモリ３０に確保するように要請する（ステップＳ１）。
【００４１】
次に、連続直線領域Ａ１が確保されると、ハードウエアコントロールドライバ１２は、波形データＷＴをメインメモリ３０に書き込む（ステップ２）。具体的には、プログラムによって予め登録されている波形データＷＴをハードディスク５０から読み出して連続直線領域Ａ１に格納するとともに、他の波形データＷＴを必要に応じてスキャッター領域Ａ２に格納する。これにより、使用頻度の高い音色に対応する波形データＷＴを連続直線領域Ａ１に、さほど使用頻度の高くない音色をスキャッター領域Ａ２に格納することができ、データの特性に応じた取り扱いが可能となる。
【００４２】
次に、アプリケーション１１が発音データを出力すると（ステップＳ３）、ハードウエアコントロールドライバ１２は、発音データの指示する音色に対応する波形データＷＴが格納されている領域が、連続直線領域Ａ１であるかスキャッター領域Ａ２であるかを判定し、判定結果に基づいてL/Pフラグｆを生成し、インターフェース部２００に出力する（ステップＳ４）。
【００４３】
また、ハードウエアコントロールドライバ１２は、上記判定結果と当該波形データＷＴの先頭を示す論理アドレスＬに基づいて、開始アドレスADRsを生成するとともに、発音データから得られるピッチ情報や音量情報を発音パラメータHPとして音源部１００に出力する（ステップＳ４）
【００４４】
次に、音源部１００は、これらの情報に基づいて補間処理に伴うアドレス計算等を実行して対象とする波形データＷＴに係わる転送領域を特定し、転送領域指示Ｃ１を生成し、これをインターフェース部２００のバスマスター転送コントロール回路２１０に対して発行する（ステップＳ６）。ここで、転送領域指示Ｃ１は、上述したように転送開始アドレスADRtsと転送数ｎから構成されるので、バスマスター転送コントロール回路２１０は、転送開始アドレスADRtsを順次インクリメントすることによって、転送アドレスADRtを生成することができる。
【００４５】
次に、L/Pフラグｆが論理アドレスＬを指示するか否かが判定される（ステップＳ７）。論理アドレスＬを指示するのであれば、対象とする波形データＷＴがスキャッター領域Ａ２に格納されているので、物理アドレスＰは、ページの区切りを越えるたびに不連続となる。このため、ステップ７の判定結果がＹの場合には、ステップＳ８に進んでページ区切りを検出したか否かの判定が行われ、ページ区切検出回路２２０がページ区切を検出すると、割込指示Ｃ３と転送停止指示Ｃ２が発行される（ステップＳ２）。
【００４６】
この転送停止指示Ｃ２によって、バスマスター転送コントロール回路２１０は転送アドレスADRtの生成を停止し、一方、割込指示Ｃ３によって物理アドレス取得設定ルーチン１３は、ページ区切検出回路２２０にアクセスしてレジスタにセットされている論理アドレスＬで表された次転送アドレスADRtnを取得する。そして、この論理アドレスＬに対応する物理アドレスＰを算出すると（ステップＳ１０）、これをアドレス変換回路２３０のレジスタにセットする。
【００４７】
この後、物理アドレス取得設定ルーチン１３が転送再開指示Ｃ４を発行すると（ステップＳ１１）、当該指示がページ区切検出回路２２０を介してバスマスター転送コントロール回路２１０に伝えられ、転送アドレスADRtの転送が再開される。
【００４８】
この後、アドレス変換回路２３０は転送アドレスADRtのうちページ内のアドレスを指示する下位ビットは転送アドレスADRtを、ページ番号等を指示する上位ビットはレジスタに格納されている物理アドレスＰを出力することにより、物理アドレスＰが得られ、これを用いてメインメモリ３０から波形データＷＴが読み出される（ステップＳ１２）。
【００４９】
一方、ステップＳ７において、L/Pフラグｆが物理アドレスＰを示す場合には、アドレス変換を施す必要がないので、アドレス変換回路２３０は転送アドレスADRtをそのまま出力し、これを用いてメインメモリ３０から波形データＷＴが読み出される（ステップＳ１２）。
【００５０】
こうして、読み出された波形データＷＴは音源部１００のＦＩＦＯ１１０に格納され、音源回路１２０はＦＩＦＯ１１０から出力される波形データＷＴに基づいて、楽音データＳＤを生成する（ステップＳ１４）。この後、ステップ７に戻り、ステップＳ７からステップＳ１４までの処理が繰り返され、楽音データＳＤに基づいて楽音信号Ｓが再生される。
【００５１】
以上、説明したように本実施形態によれば、使用頻度（データの特性）の高い波形データＷＴを連続直線領域Ａ１に格納したので、発音データに基づいて楽音信号Ｓを再生する際に、大部分は連続直線領域Ａ１に格納されている波形データＷＴを読み出せば足りる。このため、全ての波形データＷＴをスキャッター領域Ａ２に格納する場合と比較して、ページの区切り毎に発行する割込指示Ｃ３を大幅に低減させることができ、複数の音色を同時に発音しても円滑なデータ転送を行うことが可能となる。
【００５２】
また、全ての波形データＷＴを連続直線領域Ａ１に格納するのではなく、使用頻度の低い波形データＷＴはスキャッター領域Ａ２に格納するようにしたので、他のアプリケーションに与える負荷を軽減することができ、コンピュータシステム１全体として見たときにも、バランスのとれたメモリ管理を行うことができる。
【００５３】
また、音源部１００は、開始アドレスADRsが論理アドレスＬであるか、物理アドレスＰであるかによって、動作を切り替える必要がないので、簡易な構成で高速に動作させることができる。
【００５４】
３．変形例
以上、本発明に係わる実施形態を説明したが、本発明は上述した実施形態に限定されるものではなく、以下に述べる各種の変形が可能である。
▲１▼上述した実施形態において、音源ボード４０とメインメモリ３０を接続するバス２０としてはＰＣＩバスを用いることができるが、この替わりにＡＧＰ（Accelerated Graphics Port）バスを用いるようにしてもよい。バス２０がバースト転送モードをサポートすることは必須ではない。
【００５５】
▲２▼上述した実施形態においては、波形データＷＴの使用頻度に応じて連続直線領域Ａ１に格納するか、スキャッター領域Ａ２に格納するかを決定できるように、予め使用頻度の高い波形データＷＴをプログラムに登録するようにしたが、例えば、再生すべき楽曲のジャンルが分かっている場合には、そのジャンルに応じた波形データＷＴを連続直線領域Ａ１に格納するようにしてもよい。要は、データの特性に応じて、連続直線領域Ａ１に格納するかスキャッター領域Ａ２に格納するかを決定すればよい。
【００５６】
▲３▼上述した実施形態では、ＯＳの起動時にハードウエアコントロールドライバ１２の立ち上がり、その時点で連続直線領域Ａ１を確保するようにしたが、ＯＳが起動時以外でも連続直線領域Ａ１を確保するように構成されている場合は、これに限定されるものではなく、必要に応じて連続直線領域Ａ１を確保するようにすればよい。
【００５７】
▲４▼上述した実施形態では、連続直線領域Ａ１の一例としてメインメモリ３０において、１つの連続直線領域Ａ１を確保したが、これを複数確保するようにしてもよい（例えば、４つ）。また、連続直線領域Ａ１は、メインメモリ３０の先頭アドレスから開始する必要もない。例えば、図７に示すメインメモリ３０は、２つの連続直線領域Ａ１１，Ａ１２と３つのスキャッター領域Ａ２１，Ａ２２，Ａ２３とから構成されており、２つの連続直線領域Ａ１１，Ａ１２が、途中から始まるように構成されている。また、各波形データＷＴを異なる連続直線領域Ａ１に格納するようにしてもよい。
【００５８】
▲５▼上述した実施形態においては、連続直線領域Ａ１がメインメモリ３０上で移動することを考慮していなかったが、ＯＳの都合で連続直線領域Ａ１を移動させるようにしてもよい。この場合には、ＯＳが移動に伴ってオフセット情報を変更させることによってハードウエアコントロールドライバ１２は、論理アドレスＬとオフセット情報に基づいて物理アドレスＰを生成することができる。
【００５９】
▲６▼上述した実施形態は、コンピュータシステムを音源システムに適用した場合を一例として説明したが、本発明に係わるメモリ管理方法はこれに限定されるものではなく、一般的なコンピュータシステムに適用してもよいことは勿論である。この場合には、例えば、図５において音源部１００を削除し、転送領域指示Ｃ１の替わりにハードウエアコントロールドライバ１２で生成されるアドレスをバスマスター転送コントロール回路２１０に供給すればよい。
【００６０】
【発明の効果】
上述したように本発明に係る発明特定事項によれば、データの特性に応じてデータを第１の記憶領域と第２の記憶領域に各々格納するようにしたので、物理アドレスを取得するための割込発生を低減することができ、かつ、他のアプリケーションに与える負荷を軽減して、バランスのとれたメモリ管理を行うことができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係わるコンピュータシステムの全体構成を示すブロック図である。
【図２】  同実施形態に係わるコンピュータシステムの詳細構成を示すブロック図である。
【図３】  同実施形態に係わるメインメモリの内容を示す図である。
【図４】  同実施形態に係わるアドレス計算回路の動作を示す図である。
【図５】  同実施形態に係わるインターフェース部とその周辺構成を示すブロック図である。
【図６】  同実施形態に係わるコンピュータシステムのメモリ管理動作を示すフローチャートである。
【図７】  変形例に係わるメインメモリの内容を示す図である。
【符号の説明】
１…コンピュータシステム、１０…ＣＰＵ（中央演算処理装置）、１２…ハードウエアコントロールドライバ（第１の管理手段、決定手段、第２の管理手段、判別手段、アドレス生成手段、フラグ生成手段、特定手段）、２０…バス（データ転送手段）、３０…メインメモリ（メモリ）、２２０…ページ区切検出回路（ページ区切検出手段）、２３０…アドレス変換回路（データ転送手段）、ＳＤ…楽音データ、Ｐ…物理アドレス、Ｌ…論理アドレス、Ａ１…連続直線領域（第１の記憶領域）、Ａ２…スキャッター領域（第２の記憶領域）、ＷＴ…波形データ（データ）。
【図１】
0003672159.tif 000002
【図２】
0003672159.tif 000003
【図３】
0003672159.tif 000004
【図４】
0003672159.tif 000005
【図５】
0003672159.tif 000006
【図６】
0003672159.tif 000007
【図７】
0003672159.tif 000008