JP3672159B2 - 音源システム - Google Patents
音源システム Download PDFInfo
- Publication number
- JP3672159B2 JP3672159B2 JP08580398A JP8580398A JP3672159B2 JP 3672159 B2 JP3672159 B2 JP 3672159B2 JP 08580398 A JP08580398 A JP 08580398A JP 8580398 A JP8580398 A JP 8580398A JP 3672159 B2 JP3672159 B2 JP 3672159B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform data
- address
- transfer
- data
- sound source
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Description
【発明の属する技術分野】
本発明は、効率よくデータを転送可能な音源システムに関する。
【0002】
【従来の技術】
コンピュータシステムのデータ転送方式として、システムのCPU(Central Processing Unit:中央演算処理装置)を介することなく、デバイスからメインメモリ(またはその逆)へのデータ転送を行なうDMA(Direct Memory Access)方式が知られている。DMA方式では、CPUによってメインメモリを管理しないため、高速にデータを転送できるという利点がある。
【0003】
ところで、DMAの一方式であるスキャッターギャザーDMA方式においては、メインメモリの記憶領域をページと呼ばれる複数の小記憶領域に分割して、ページ単位でメモリ管理を行う。ここで、メインメモリの容量を32Mバイト、仮想記憶の容量を4Gバイトとすると、論理アドレスは32ビット、物理アドレスは25ビット、1ページ内のアドレスは12ビットで表されることになる。この場合、論理アドレスの下位12ビットは物理アドレスと一致する。しかしながら、各ページはメインメモリ上に分散されて配置されているので、論理アドレスの13ビットから25ビットまでは、物理アドレスと一致するとは限らない。このため、専用のハードウエアを用いて論理アドレスを物理アドレスに変換してデータ転送を実行している。
【0004】
例えば、連続した論理アドレスで指定される一定量のデータをメインメモリから、デバイスに転送する場合を想定すると、あるページ内のデータは連続した物理アドレスで指定できるので、メインメモリ上のページ位置が特定されれば、論理アドレスの下位12ビットを用いて当該ページ内のデータをメインメモリから読み出すことができる。しかし、データがページの区切りを越えると、別のページを特定する必要がある。このため、ページの区切りとなるページ区切アドレスを検出する専用のハードウエアを設け、ページの区切りが検出されると、データ転送を停止し区切り毎に割込を発生させ、OSの割込処理ルーチンで次の物理アドレスを取得できるようにしている。そして、取得した物理アドレスを用いてデータ転送を再開するようにしている。
【0005】
【発明が解決しようとする課題】
ところで、近年のコンピュータシステムにおいては、音源LSIを組み込んで楽音を再生することが行われている。この場合には、ピアノやギターといった各種の音色に各々対応する波形データをメインメモリに書き込み、そこから読み出した波形データに基づいて楽音を再生することが多い。しかしながら、波形データをスキャッターされた記憶領域(分散された記憶領域)に格納すると、当該波形データをアクセスする際に大量の割込が発生し、データの転送効率が低下してしまう。特に、ピアノ、ギター、あるいはドラムといった各種の音色を同時に発音させる場合には、大きな問題となる。例えば、1ページの容量が4kバイト、サンプリング周波数が48KHzであって、64chの同時発音を行う場合には1.3ms(=4k/(48k*64))毎に割込が発生し、円滑なデータ転送を行うことができない。
【0006】
一方、割込によるスキャッターギャザー処理を行わないとすれば、全ての波形データを連続直線領域(アドレスが連続する記憶領域)に記憶する必要がある。しかし、メインメモリ上で大きな連続直線領域が常に確保されるとは限らない。また、DLS(down load sample)などの波形入替処理では、例えば、ピアノの音色をギターの音色に変換する処理が行われ、そこでは、上位のアプリケーションによって指示される波形データをハードディスクから読み出してメインメモリに格納されている波形データと入れ替える必要がある。また、一般的な波形再生時にも楽音の再生が終了すると、当該波形データをメインメモリ上に格納しておく必要がないので、記憶領域を開放することが行われる。すなわち、これらの場合には、波形データの記憶領域を確保したり開放することが行われるので、連続直線領域を確保する必要性に乏しく、メインメモリ上で大きな連続直線領域を占有することにより他のアプリケーションに与える弊害が大きい。
【0007】
本発明は上述した事情に鑑みてなされたものであり、メインメモリ上に連続直線領域とスキャッタ領域とを各々確保し、これらの領域を適宜使い分けることにより、効率の良くメインメモリを使用する音源システムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上記課題を解決するために請求項1記載の発明にあっては、複数の音色に対応する各波形データを記憶するメモリ、音源デバイス、およびOSならびにハードウェアコントロールドライバを実行するコンピュータシステムによって実現され、音色とピッチを指示する発音データに基づいて楽音を再生する音源システムであって、前記音源デバイスは、音源部およびインターフェース部を含み、前記OSは、前記メモリを、連続したアドレスに対応する第1の記憶領域と、固定長のアドレスに対応する複数のページを備えた第2の記憶領域とに分けて管理し、前記ハードウェアコントロールドライバは、前記OSに対し、前記メモリに前記第1の記憶領域を確保するように要請して、使用頻度の高い波形データを前記第1の記憶領域に記憶させ、使用頻度の高くない波形データを前記第2の記憶領域に記憶させ、前記第1または第2の記憶領域に記憶された波形データの開始アドレスを管理するとともに、当該波形データを前記第1または第2の記憶領域のうちいずれに記憶したかを示す領域情報を管理し、前記発音データが入力されると、当該発音データで指定されるピッチを示すピッチ情報と、当該発音データで指示される音色に応じた波形データの開始アドレスを前記音源部に転送し、前記音源部は、転送された開始アドレスとピッチ情報とから、転送すべき波形データの転送開始アドレスと転送個数とを算出して、転送すべき波形データの領域指示を発行するとともに、当該領域指示に対応して転送された波形データに基づき楽音を再生し、前記インターフェース部は、算出された転送開始アドレスと転送個数とに基づき転送アドレスを生成し、当該転送アドレスを用いて前記メモリから前記音源部に波形データが転送されるようにし、当該転送アドレスを用いてページの区切りを検出するとともに、当該波形データが前記第2の記憶領域に記憶されたことが前記領域情報によって示され、かつ、ページの区切りが検出された場合に、前記OSに対し、後続する波形データが記憶されたアドレスを要求し、前記OSは、前記要求に基づいて、前記第2の記憶領域のうち、後続する波形データが記憶されたアドレスを、前記インターフェース部に供給することを特徴とする。
【0012】
また、請求項2記載の発明にあっては、前記次転送アドレスのうち、前記ページの容量に対応する下位ビットを越える上位ビットを監視することにより、ページの区切りを検出することを特徴とする。
【発明の実施の形態】
1.実施形態の構成
1−1:全体構成
図1は本発明に係わるメモリ管理方法を用いたコンピュータシステムの一実施形態を示したブロック図である。コンピュータシステム1は、以下の部分から構成されている。
【0013】
まず、CPU10は、バス20を介して各構成部分と接続されておりコンピュータシステム1全体を制御し、各種のソフトウエアを実行する。なお、この例では、バス20としてバースト転送による高速データ伝送が可能なPCI(Peripheral Component Interconnect)バスが用いられる。
【0014】
次に、メインメモリ30は主記憶装置として機能しCPU10の作業領域として用いられるとともに、そこには、アプリケーションプログラムやそこで用いられる各種のデータ等が格納される。
【0015】
次に、音源ボード40は、音源部100とインターフェース部200から構成されており、拡張スロットに挿着されるようになっている。また、そこでは、アプリケーションプログラムの制御の下、各種のサウンド処理が行われるようになっている。この音源部100は、ピアノやギターといった各種の音色に対応した各波形データWTをウエーブテーブルに予め格納しておき、必要に応じて複数の波形データWTを読み出してピッチ変換等の処理を施し、それらを合成するように構成されている。このウエーブテーブルは、メインメモリ30に格納される。また、この例の音源部100は、64種類の音色を同時に発音できるように構成されており、各音色に対応する構成はチャネル(以下、「ch」と略す。)と呼ばれる。また、インターフェース部200は、CPU10を介することなくメインメモリ30に直接アクセスできるようにバスマスター機能を備えており、バースト転送モードに対応できるように構成されている。なお、音源部100とインターフェース部200の詳細な構成については後述する。
【0016】
次に、ハードディスク50は二次記憶装置として機能し、そこには、サウンド処理に用いられる各種のデータやプログラムが格納されており、CPU10の制御の下、これらのデータやプログラムがメインメモリ30に転送されるようになっている。
【0017】
また、コンピュータシステム1は、上述したものの他、ユーザが操作することによって指示が入力されるキーボード60、および文字や画像等を表示するディスプレイ70を備えている。
【0018】
1−2:詳細構成
以下、本実施形態に係わるコンピュータシステム1の詳細構成を図2を参照しつつ説明する。
<CPU>
まず、CPU10で実行されるソフトウエアとしては、アプリケーション11、ハードウエアコントロールドライバ12、および物理アドレス取得ルーチン13等がある。このアプリケーション11は、例えば、ゲームソフトでありゲームの進行に応じてハードウエアコントロールドライバ12に発音データを渡すようになっている。発音データは、例えば、MIDI(Musical Instrument Digital Interface)形式で構成されており、音色やピッチといった発音パラメータを指示する。
【0019】
次に、ハードウエアコントロールドライバ12は、コンピュータシステム1のOS(Operating System)の起動時に立ち上がるように設定されており、立ち上がると同時にOSに対してメインメモリ30に連続直線領域A1を確保するように要請する。そして、連続直線領域A1が確保されると、ハードディスク50から使用頻度の高い波形データWTを読み出して当該連続直線領域A1に格納するとともに、他の波形データWTを必要に応じてスキャッター領域A2に格納する。この際、ハードウエアコントロールドライバ12は、各音色に対応づけてその波形データWTが格納されている領域が連続直線領域A1であるかスキャッター領域A2であるかを領域情報として管理するとともに、各波形データの論理アドレスLを管理する。また、ハードウエアコントロールドライバ12は、OSから連続直線領域A1が開始する物理アドレスPを受け取りこれをオフセット情報として保持する。
【0020】
そして、アプリケーション11から発音データを受け取ると、ハードウエアコントロールドライバ12は、その発音パラメータから指定された音色、発音時間、ピッチ等を検知する。この後、検知された音色に対応する波形データWTが連続直線領域A1に格納されているか、あるいはスキャッター領域A2に格納されているかが領域情報に基づいて判定される。当該波形データが連続直線領域A1に格納されていると判定された場合には、当該波形データWTが開始する論理アドレスLとオフセット情報に基づいて、物理アドレスPを算出する。一方、当該波形データWTがスキャッター領域A2に格納されていると判定された場合には、その論理アドレスLを取得する。これらの物理アドレスPまたは論理アドレスLは開始アドレスADRsとして出力される。
【0021】
こうして得られた開始アドレスADRsと発音データの発音時間やピッチ等の発音パラメータHPは、音源部100に送出される。また、送出されるアドレスが物理アドレスPであるか論理アドレスLであるかを示すL/Pフラグfが領域情報に基づいて生成され、インターフェース部200に送られる。
【0022】
次に、物理アドレス取得設定ルーチン13はOSの一部であって、論理アドレスLに基づいて物理アドレスPを設定するようになっている。
【0023】
<メインメモリ>
次に、メインメモリ30は、連続直線領域A1とスキャッター領域A2から構成されており、連続直線領域A1には連続するアドレスに波形データが格納され、スキャッター領域A2には一つの波形データがページ単位に分割されて飛び飛びに記憶される。
【0024】
ここで、図3にメインメモリ30の詳細な構成例を示す。例えば、メインメモリ30の容量を64Mバイト、ページの容量を4kバイトとすれば、このメインメモリ30を構成するページは1〜1684のページ番号で表すことができる。図に示す例は、ページ番号1からページ番号nまでに連続直線領域A1を設け、ページ番号n+1からページ番号1684までにスキャッター領域A2を設けたものである。この例の連続直線領域A1には、ページ番号1,2,…mに対応する記憶領域に波形データWT1が格納され、ページ番号m+1,m+2,…2mに対応する記憶領域に波形データWT2が格納される。
【0025】
一方、スキャッター領域A2において、斜線部分は他のアプリケーションによって既に占有されているページであり、その他の部分に波形データが格納される。図に示す例では、ページ番号n+1、n+4、1684に波形データWT3が格納されている。
【0026】
<音源部>
次に、音源部100は、図2に示すようにFIFO110、音源回路120、DAC(Digital/Analog Converter)130、およびアドレス計算回路140から構成されている。まず、FIFO110は、必要に応じてメインメモリ30から読み出された波形データWTを処理順に格納する。
【0027】
次に、音源回路120は、ハードウエアコントロールドライバ12から受信した開始アドレスADRsと発音パラメータHPのピッチ情報に基づいて、補間処理を行って次に再生すべき波形データWTのアドレスを小数点を含んだ形式で算出し、これを補間アドレスADRiとしてアドレス計算回路140に渡すように構成されている。また、音源回路120は、FIFO110から読み出された波形データWTと発音パラメータHPに基づいて、ピッチ変換や音量調整等の処理を施して、楽音データSDを再生するように構成されている。また、楽音データSDは、DAC130によってアナログ信号に変換され、楽音信号Sとして出力されるようになっている。
【0028】
次に、アドレス計算回路140は、小数点を含む補間アドレスADRiに基づいて、補間アドレスADRiの前後のアドレスを計算し、転送すべきデータの領域を指示する転送領域指示C1を発行する。転送領域指示C1は、転送を開始するアドレスを指示する転送開始アドレスADRtsと転送数(連続するアドレス数)nから構成される。例えば、図4に示すように、補間アドレスADRiの値が5.25→6.5→7.75といったように変化したとすると、アドレス計算回路140は、「5.25」に対してアドレス値5、6を、「6.5」に対してアドレス値6,7を、「7.25」に対してアドレス値7、8を特定する。この場合、特定されたアドレス値は、「5、6、6、7、7、8」となり、アドレス値6、7が重複している。このように同じアドレス値が連続する場合には、重複するアドレス値を削除して転送領域を特定する。この例の転送領域指示C1では、転送開始アドレスADRtsの値が5、転送数nの値が4となる。
【0029】
このように音源部100では、必要な波形データWTを読み出すために補間処理を行って転送領域指示C1を生成するが、補間処理は連続直線アドレスとピッチ情報に基づいて行われるため、開始アドレスADRsが物理アドレスPであるか論理アドレスLかを問わず動作することが可能である。
【0030】
<インターフェース部>
次に、インターフェース部200とその周辺構成を示す図5を参照しつつ、インターフェース部200について説明する。図5に示すようにインターフェース部200はバスマスター転送コントロール回路210、ページ区切検出回路220、およびアドレス変換回路230から構成されている。
【0031】
まず、バスマスター転送コントロール回路210は、転送領域指示C1に基づいて、転送アドレスADRtを生成するとともに次に転送すべきデータを指示する次転送アドレスADRtnを生成するように構成されている。転送アドレスADRtは転送領域指示C1の転送開始アドレスADRtsを順次インクリメントして算出され、次転送アドレスADRtnは転送アドレスADRtをインクリメントして算出される。転送アドレスADRtはアドレス変換回路220に送られ、一方、次転送アドレスADRtnはページ区切検出回路230に送られる。なお、バスマスター転送コントロール回路210は、転送停止指示C2と転送再開指示C4に基づいて動作が制御されるようになっている。
【0032】
ところで、上述したように音源部100は、ハードウエアコントロールドライバ12から送出される開始アドレスADRsが物理アドレスPであるか論理アドレスLであるかに拘わらず動作するが、メインメモリ30のアクセスに用いられるアドレスは物理アドレスPであることが必要である。ここで、対象とする波形データWTが連続直線領域A1に格納されているのであれば、上述したようにハードウエアコントロールドライバ12は開始アドレスADRsを物理アドレスPで出力する。この場合には、音源部100の処理は物理アドレスPに基づいて行われることになるので、バスマスタ−転送コントロール回路210で生成される転送アドレスADRtも物理アドレスPで表されることになる。
【0033】
一方、対象とする波形データWTがスキャッター領域A2に格納されているのであれば、開始アドレスADRsは論理アドレスLで表され、転送アドレスADRtも論理アドレスLで表されることになる。したがって、転送アドレスADRtを論理アドレスLから物理アドレスPに変換する必要がある。スキャッター領域A2はページ単位に分割されているから、波形データWTが偶然に連続するページに格納されている場合を除いて、ページの区切りで物理アドレスPが不連続となる。このため、ページの区切りを越えるたびに転送アドレスADRtに対応する物理アドレスPを知る必要がある。換言すれば、同一ページ内の波形データWTを転送するのであれば、物理アドレスPの上位アドレスは変化しないのでこれを用いればよく、ページの区切りを越えた場合にのみ物理アドレスPを取得すればよい。
【0034】
ページ区切検出回路220は、このために設けられたものであって、転送領域指示C1が論理アドレスLに基づくものである場合にページの区切りを検出して割込指示C3を発行するように構成されており、比較器やレジスタ等を備える。また、L/Pフラグfが論理アドレスLを指示する場合にのみページ区切検出回路220は動作する。具体的には、直前の次転送アドレスADRtnと現在の次転送アドレスADRtnの上位ビット(ページの容量を越えるもの)を比較器を用いて比較し両者が不一致となったとき、割込指示C3を発行する。例えば、論理アドレスLが32ビットで1ページが12ビットであるならば、上位20ビットを比較する。
【0035】
また、レジスタには現在の次転送アドレスADRtn(論理アドレスL)を格納しておく。物理アドレス取得設定ルーチン13は、割込指示C3を受け取ると、レジスタにアクセスして論理アドレスLを読み出して、これに対応する物理アドレスPを生成するようになっている。
【0036】
ところで、ページの区切りが検出された場合には、物理アドレス取得設定ルーチン13によって物理アドレスPが取得されるまで処理を待つ必要がある。このため、ページ区切検出回路220はページの区切りを検出すると、転送停止指示C2をバスマスター転送コントロール回路210に対して発行するとともに、物理アドレス取得設定ルーチン13から転送再開指示C4があると、バスマスター転送コントロール回路210に対して転送再開指示C4を送るようになっている。
【0037】
次に、アドレス変換回路230は、L/Pフラグfを参照して、転送アドレスADRtを物理アドレスPに変換するように構成されており、セレクタやレジスタ等を備えている。このレジスタには物理アドレス取得設定ルーチン13で取得された物理アドレスPが書き込まれるようになっており、セレクタは、L/Pフラグfに基づいてレジスタのデータと転送アドレスADRtを選択して出力ようになっている。具体的には、L/Pフラグfが物理アドレスPを指示するらば、転送アドレスADRtは物理アドレスPで表されているので、転送アドレスADRtをそのまま出力する。一方、L/Pフラグfが論理アドレスLを指示する場合には、転送アドレスADRtのうちページ内のアドレスを指示する下位ビットは転送アドレスADRtを用い、ページ番号等を指示する上位ビットはレジスタに格納されている物理アドレスPを出力するように構成されている。
【0038】
以上の構成によって、物理アドレスPが生成されると、これを用いてメインメモリ30がアクセスされ波形データWTが読み出され、音源部100のFIFO110に波形データWTが順次格納される。
【0039】
2.実施形態の動作
次に、本実施形態に係わるコンピュータシステム1のメモリ管理動作を図面を参照しつつ説明する。図6は、コンピュータシステム1のメモリ管理をサウンド処理を一例として示したものである。
【0040】
図において、OSの起動時にハードウエアコントロールドライバ12が立ち上がると、ハードウエアコントロールドライバ12はOSに対して連続直線領域A1をメインメモリ30に確保するように要請する(ステップS1)。
【0041】
次に、連続直線領域A1が確保されると、ハードウエアコントロールドライバ12は、波形データWTをメインメモリ30に書き込む(ステップ2)。具体的には、プログラムによって予め登録されている波形データWTをハードディスク50から読み出して連続直線領域A1に格納するとともに、他の波形データWTを必要に応じてスキャッター領域A2に格納する。これにより、使用頻度の高い音色に対応する波形データWTを連続直線領域A1に、さほど使用頻度の高くない音色をスキャッター領域A2に格納することができ、データの特性に応じた取り扱いが可能となる。
【0042】
次に、アプリケーション11が発音データを出力すると(ステップS3)、ハードウエアコントロールドライバ12は、発音データの指示する音色に対応する波形データWTが格納されている領域が、連続直線領域A1であるかスキャッター領域A2であるかを判定し、判定結果に基づいてL/Pフラグfを生成し、インターフェース部200に出力する(ステップS4)。
【0043】
また、ハードウエアコントロールドライバ12は、上記判定結果と当該波形データWTの先頭を示す論理アドレスLに基づいて、開始アドレスADRsを生成するとともに、発音データから得られるピッチ情報や音量情報を発音パラメータHPとして音源部100に出力する(ステップS4)
【0044】
次に、音源部100は、これらの情報に基づいて補間処理に伴うアドレス計算等を実行して対象とする波形データWTに係わる転送領域を特定し、転送領域指示C1を生成し、これをインターフェース部200のバスマスター転送コントロール回路210に対して発行する(ステップS6)。ここで、転送領域指示C1は、上述したように転送開始アドレスADRtsと転送数nから構成されるので、バスマスター転送コントロール回路210は、転送開始アドレスADRtsを順次インクリメントすることによって、転送アドレスADRtを生成することができる。
【0045】
次に、L/Pフラグfが論理アドレスLを指示するか否かが判定される(ステップS7)。論理アドレスLを指示するのであれば、対象とする波形データWTがスキャッター領域A2に格納されているので、物理アドレスPは、ページの区切りを越えるたびに不連続となる。このため、ステップ7の判定結果がYの場合には、ステップS8に進んでページ区切りを検出したか否かの判定が行われ、ページ区切検出回路220がページ区切を検出すると、割込指示C3と転送停止指示C2が発行される(ステップS2)。
【0046】
この転送停止指示C2によって、バスマスター転送コントロール回路210は転送アドレスADRtの生成を停止し、一方、割込指示C3によって物理アドレス取得設定ルーチン13は、ページ区切検出回路220にアクセスしてレジスタにセットされている論理アドレスLで表された次転送アドレスADRtnを取得する。そして、この論理アドレスLに対応する物理アドレスPを算出すると(ステップS10)、これをアドレス変換回路230のレジスタにセットする。
【0047】
この後、物理アドレス取得設定ルーチン13が転送再開指示C4を発行すると(ステップS11)、当該指示がページ区切検出回路220を介してバスマスター転送コントロール回路210に伝えられ、転送アドレスADRtの転送が再開される。
【0048】
この後、アドレス変換回路230は転送アドレスADRtのうちページ内のアドレスを指示する下位ビットは転送アドレスADRtを、ページ番号等を指示する上位ビットはレジスタに格納されている物理アドレスPを出力することにより、物理アドレスPが得られ、これを用いてメインメモリ30から波形データWTが読み出される(ステップS12)。
【0049】
一方、ステップS7において、L/Pフラグfが物理アドレスPを示す場合には、アドレス変換を施す必要がないので、アドレス変換回路230は転送アドレスADRtをそのまま出力し、これを用いてメインメモリ30から波形データWTが読み出される(ステップS12)。
【0050】
こうして、読み出された波形データWTは音源部100のFIFO110に格納され、音源回路120はFIFO110から出力される波形データWTに基づいて、楽音データSDを生成する(ステップS14)。この後、ステップ7に戻り、ステップS7からステップS14までの処理が繰り返され、楽音データSDに基づいて楽音信号Sが再生される。
【0051】
以上、説明したように本実施形態によれば、使用頻度(データの特性)の高い波形データWTを連続直線領域A1に格納したので、発音データに基づいて楽音信号Sを再生する際に、大部分は連続直線領域A1に格納されている波形データWTを読み出せば足りる。このため、全ての波形データWTをスキャッター領域A2に格納する場合と比較して、ページの区切り毎に発行する割込指示C3を大幅に低減させることができ、複数の音色を同時に発音しても円滑なデータ転送を行うことが可能となる。
【0052】
また、全ての波形データWTを連続直線領域A1に格納するのではなく、使用頻度の低い波形データWTはスキャッター領域A2に格納するようにしたので、他のアプリケーションに与える負荷を軽減することができ、コンピュータシステム1全体として見たときにも、バランスのとれたメモリ管理を行うことができる。
【0053】
また、音源部100は、開始アドレスADRsが論理アドレスLであるか、物理アドレスPであるかによって、動作を切り替える必要がないので、簡易な構成で高速に動作させることができる。
【0054】
3.変形例
以上、本発明に係わる実施形態を説明したが、本発明は上述した実施形態に限定されるものではなく、以下に述べる各種の変形が可能である。
▲1▼上述した実施形態において、音源ボード40とメインメモリ30を接続するバス20としてはPCIバスを用いることができるが、この替わりにAGP(Accelerated Graphics Port)バスを用いるようにしてもよい。バス20がバースト転送モードをサポートすることは必須ではない。
【0055】
▲2▼上述した実施形態においては、波形データWTの使用頻度に応じて連続直線領域A1に格納するか、スキャッター領域A2に格納するかを決定できるように、予め使用頻度の高い波形データWTをプログラムに登録するようにしたが、例えば、再生すべき楽曲のジャンルが分かっている場合には、そのジャンルに応じた波形データWTを連続直線領域A1に格納するようにしてもよい。要は、データの特性に応じて、連続直線領域A1に格納するかスキャッター領域A2に格納するかを決定すればよい。
【0056】
▲3▼上述した実施形態では、OSの起動時にハードウエアコントロールドライバ12の立ち上がり、その時点で連続直線領域A1を確保するようにしたが、OSが起動時以外でも連続直線領域A1を確保するように構成されている場合は、これに限定されるものではなく、必要に応じて連続直線領域A1を確保するようにすればよい。
【0057】
▲4▼上述した実施形態では、連続直線領域A1の一例としてメインメモリ30において、1つの連続直線領域A1を確保したが、これを複数確保するようにしてもよい(例えば、4つ)。また、連続直線領域A1は、メインメモリ30の先頭アドレスから開始する必要もない。例えば、図7に示すメインメモリ30は、2つの連続直線領域A11,A12と3つのスキャッター領域A21,A22,A23とから構成されており、2つの連続直線領域A11,A12が、途中から始まるように構成されている。また、各波形データWTを異なる連続直線領域A1に格納するようにしてもよい。
【0058】
▲5▼上述した実施形態においては、連続直線領域A1がメインメモリ30上で移動することを考慮していなかったが、OSの都合で連続直線領域A1を移動させるようにしてもよい。この場合には、OSが移動に伴ってオフセット情報を変更させることによってハードウエアコントロールドライバ12は、論理アドレスLとオフセット情報に基づいて物理アドレスPを生成することができる。
【0059】
▲6▼上述した実施形態は、コンピュータシステムを音源システムに適用した場合を一例として説明したが、本発明に係わるメモリ管理方法はこれに限定されるものではなく、一般的なコンピュータシステムに適用してもよいことは勿論である。この場合には、例えば、図5において音源部100を削除し、転送領域指示C1の替わりにハードウエアコントロールドライバ12で生成されるアドレスをバスマスター転送コントロール回路210に供給すればよい。
【0060】
【発明の効果】
上述したように本発明に係る発明特定事項によれば、データの特性に応じてデータを第1の記憶領域と第2の記憶領域に各々格納するようにしたので、物理アドレスを取得するための割込発生を低減することができ、かつ、他のアプリケーションに与える負荷を軽減して、バランスのとれたメモリ管理を行うことができる。
【図面の簡単な説明】
【図1】 本発明の一実施形態に係わるコンピュータシステムの全体構成を示すブロック図である。
【図2】 同実施形態に係わるコンピュータシステムの詳細構成を示すブロック図である。
【図3】 同実施形態に係わるメインメモリの内容を示す図である。
【図4】 同実施形態に係わるアドレス計算回路の動作を示す図である。
【図5】 同実施形態に係わるインターフェース部とその周辺構成を示すブロック図である。
【図6】 同実施形態に係わるコンピュータシステムのメモリ管理動作を示すフローチャートである。
【図7】 変形例に係わるメインメモリの内容を示す図である。
【符号の説明】
1…コンピュータシステム、10…CPU(中央演算処理装置)、12…ハードウエアコントロールドライバ(第1の管理手段、決定手段、第2の管理手段、判別手段、アドレス生成手段、フラグ生成手段、特定手段)、20…バス(データ転送手段)、30…メインメモリ(メモリ)、220…ページ区切検出回路(ページ区切検出手段)、230…アドレス変換回路(データ転送手段)、SD…楽音データ、P…物理アドレス、L…論理アドレス、A1…連続直線領域(第1の記憶領域)、A2…スキャッター領域(第2の記憶領域)、WT…波形データ(データ)。
Claims (2)
- 複数の音色に対応する各波形データを記憶するメモリ、音源デバイス、およびOSならびにハードウェアコントロールドライバを実行するコンピュータシステムによって実現され、音色とピッチを指示する発音データに基づいて楽音を再生する音源システムであって、
前記音源デバイスは、音源部およびインターフェース部を含み、
前記OSは、
前記メモリを、連続したアドレスに対応する第1の記憶領域と、固定長のアドレスに対応する複数のページを備えた第2の記憶領域とに分けて管理し、
前記ハードウェアコントロールドライバは、
前記OSに対し、前記メモリに前記第1の記憶領域を確保するように要請して、使用頻度の高い波形データを前記第1の記憶領域に記憶させ、使用頻度の高くない波形データを前記第2の記憶領域に記憶させ、前記第1または第2の記憶領域に記憶された波形データの開始アドレスを管理するとともに、当該波形データを前記第1または第2の記憶領域のうちいずれに記憶したかを示す領域情報を管理し、
前記発音データが入力されると、当該発音データで指定されるピッチを示すピッチ情報と、当該発音データで指示される音色に応じた波形データの開始アドレスを前記音源部に転送し、
前記音源部は、
転送された開始アドレスとピッチ情報とから、転送すべき波形データの転送開始アドレスと転送個数とを算出して、転送すべき波形データの領域指示を発行するとともに、当該領域指示に対応して転送された波形データに基づき楽音を再生し、
前記インターフェース部は、
算出された転送開始アドレスと転送個数とに基づき転送アドレスを生成し、
当該転送アドレスを用いて前記メモリから前記音源部に波形データが転送されるようにし、
当該転送アドレスを用いてページの区切りを検出するとともに、当該波形データが前記第2の記憶領域に記憶されたことが前記領域情報によって示され、かつ、ページの区切りが検出された場合に、前記OSに対し、後続する波形データが記憶されたアドレスを要求し、
前記OSは、前記要求に基づいて、前記第2の記憶領域のうち、後続する波形データが記憶されたアドレスを、前記インターフェース部に供給する
ことを特徴とする音源システム。 - 前記次転送アドレスのうち、前記ページの容量に対応する下位ビットを越える上位ビットを監視することにより、ページの区切りを検出することを特徴とする請求項1に記載の音源システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08580398A JP3672159B2 (ja) | 1998-03-31 | 1998-03-31 | 音源システム |
US09/281,533 US6473847B1 (en) | 1998-03-31 | 1999-03-30 | Memory management method for use in computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08580398A JP3672159B2 (ja) | 1998-03-31 | 1998-03-31 | 音源システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11282743A JPH11282743A (ja) | 1999-10-15 |
JP3672159B2 true JP3672159B2 (ja) | 2005-07-13 |
Family
ID=13869047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08580398A Expired - Fee Related JP3672159B2 (ja) | 1998-03-31 | 1998-03-31 | 音源システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6473847B1 (ja) |
JP (1) | JP3672159B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3600564B2 (ja) * | 2001-09-11 | 2004-12-15 | 株式会社東芝 | 複数の無線部を有する携帯型情報機器 |
JP3778136B2 (ja) * | 2002-06-13 | 2006-05-24 | ブラザー工業株式会社 | 印刷制御装置、印刷装置、及びプログラム |
US6920521B2 (en) * | 2002-10-10 | 2005-07-19 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a data processing system |
US6904490B2 (en) * | 2002-10-10 | 2005-06-07 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a multi-processor system |
US6907494B2 (en) * | 2002-10-10 | 2005-06-14 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
US7165160B2 (en) * | 2004-09-08 | 2007-01-16 | Hitachi, Ltd. | Computing system with memory mirroring and snapshot reliability |
US20060080722A1 (en) * | 2004-10-12 | 2006-04-13 | John Santhoff | Buffered waveforms for high speed digital to analog conversion |
JP2006133989A (ja) * | 2004-11-04 | 2006-05-25 | Hitachi Ltd | ストレージシステムの管理方法、及び装置 |
TWI270051B (en) * | 2005-08-18 | 2007-01-01 | Sunplus Technology Co Ltd | Structure and method for broadcasting MIDI message and multi-media apparatus |
US7873953B1 (en) * | 2006-01-20 | 2011-01-18 | Altera Corporation | High-level language code sequence optimization for implementing programmable chip designs |
US7826161B2 (en) * | 2006-06-30 | 2010-11-02 | Seagate Technology Llc | Object based storage device with storage medium having varying media characteristics |
JP5534388B2 (ja) * | 2009-03-23 | 2014-06-25 | ヤマハ株式会社 | 楽音生成装置 |
US8805962B1 (en) * | 2011-02-28 | 2014-08-12 | Amazon Technologies, Inc. | Making publisher content available to specific users |
US20140068182A1 (en) * | 2012-09-04 | 2014-03-06 | Drobo, Inc. | Storage Virtualization In A Block-Level Storage System |
US11755589B2 (en) * | 2020-08-05 | 2023-09-12 | Ocient Holdings LLC | Delaying segment generation in database systems |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440687A (en) * | 1993-01-29 | 1995-08-08 | International Business Machines Corporation | Communication protocol for handling arbitrarily varying data strides in a distributed processing environment |
US5897660A (en) * | 1995-04-07 | 1999-04-27 | Intel Corporation | Method for managing free physical pages that reduces trashing to improve system performance |
US5832526A (en) * | 1996-01-24 | 1998-11-03 | Symantec Corporation | Method and apparatus using slack area of file storage structures for file reconstruction |
-
1998
- 1998-03-31 JP JP08580398A patent/JP3672159B2/ja not_active Expired - Fee Related
-
1999
- 1999-03-30 US US09/281,533 patent/US6473847B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11282743A (ja) | 1999-10-15 |
US6473847B1 (en) | 2002-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3672159B2 (ja) | 音源システム | |
JP2671747B2 (ja) | 楽音形成装置 | |
EP1580729B1 (en) | Sound waveform synthesizer | |
EP0747878B1 (en) | Music system, tone generator and musical tone-synthesizing method | |
JP2904088B2 (ja) | 楽音生成方法および装置 | |
US6366971B1 (en) | Audio system for playback of waveform sample data | |
JP3637578B2 (ja) | 楽音生成方法 | |
JP3293474B2 (ja) | 楽音発生方法 | |
JP2924745B2 (ja) | 楽音発生装置及び方法 | |
JP3163984B2 (ja) | 楽音発生装置 | |
US5918302A (en) | Digital sound-producing integrated circuit with virtual cache | |
JP2000276172A (ja) | 楽音生成装置および記憶媒体 | |
JP2004177981A (ja) | 楽音生成装置 | |
JPH11202866A (ja) | 楽音発生方法および楽音発生装置 | |
JP3637577B2 (ja) | 楽音生成方法 | |
JP2000122668A (ja) | デジタル音声データ処理装置およびコンピュータシステム | |
JP5510813B2 (ja) | 楽音生成装置 | |
JP3003559B2 (ja) | 楽音生成方法 | |
JP3301350B2 (ja) | 楽音発生装置 | |
JP3781171B2 (ja) | 楽音発生方法 | |
JP3095290B2 (ja) | 電子楽器 | |
JP3873160B2 (ja) | 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 | |
JP5510814B2 (ja) | 楽音生成装置 | |
JPH06203534A (ja) | 電子楽器のファイル管理システム | |
JP3627557B2 (ja) | 楽音発生装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20031216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040216 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040227 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20040430 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050414 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130428 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140428 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |