(57)【要約】【課題】  限りあるメモリ容量を有効に使用する。【解決手段】  メモリアドレスの順方向からアクセスする順方向ポインタでアクセスされる順方向領域と逆方向からアクセスする逆方向ポインタでアクセスされる逆方向領域とに分割される共有メモリ２１を制御する共有メモリ制御装置１００であって、前記順方向ポインタ及び前記逆方向ポインタを監視し、監視結果に基づいて、前記順方向領域及び前記逆方向領域の使用状況を検知する比較手段１３，３３と、検知した前記使用状況に応じて、前記順方向領域と前記逆方向領域との境界を変更する境界値変更手段２０とを備える。【選択図】  図１
2006091966.tif 000002
【特許請求の範囲】
【請求項１】
メモリアドレスの順方向からアクセスする順方向ポインタでアクセスされる順方向領域と逆方向からアクセスする逆方向ポインタでアクセスされる逆方向領域とに分割されるメモリを制御するメモリ制御装置であって、
前記順方向ポインタ及び前記逆方向ポインタを監視する監視手段と、
監視結果に基づいて、前記順方向領域及び前記逆方向領域の使用状況を検知する検知手段と、
検知した前記使用状況に応じて、前記順方向領域と前記逆方向領域との境界を変更する境界変更手段と、
を備えるメモリ制御装置。
【請求項２】
請求項１記載のメモリ制御装置であって、
前記監視手段は、前記順方向ポインタ又は前記逆方向ポインタの書き込みポインタと読み出しポインタとを比較し、
前記境界変更手段は、前記書き込みポインタと前記読み出しポインタとが一致したタイミングで前記境界を変更するメモリ制御装置。
【請求項３】
請求項２記載のメモリ制御装置であって、
前記境界変更手段は、前記書き込みポインタと前記読み出しポインタとが一致した順方向領域又は逆方向領域を狭くするように前記境界を変更するメモリ制御装置。
【請求項４】
請求項１記載のメモリ制御装置において、
前記監視手段は、前記順方向ポインタ又は前記逆方向ポインタの読み出しポインタを監視し、
前記境界変更手段は、前記読み出しポインタが先頭アドレスに戻るタイミングで前記読み出しポインタがアクセスする領域を広げるように前記境界を変更するメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリ制御装置に関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおいて、例えば、２つのＣＰＵ（又はハードディスク）間でデータをやり取りする際に、第１のＣＰＵ（以下、ＣＰＵ＃１）のバスと第２のＣＰＵ（以下、ＣＰＵ＃２）のバスの間に共有メモリを配置し、ＣＰＵ＃１が共有メモリに書き込んだデータをＣＰＵ＃２が読み出すことで、ＣＰＵ＃１，＃２間でデータのやり取りが行なわれる。
【０００３】
従来この種の共有メモリの構成は、順方向用／逆方向用として予め決められた領域を分割し、順方向用領域に順方向に通信するデータを格納し、逆方向用領域に逆方向に通信するデータを格納して、それぞれのデータを読み出すことにより、双方向のデータ通信を行なっている（例えば特許文献1参照）。
【特許文献１】特願平８−９１４５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の構成にあっては、順方向と逆方向で転送されるデータにおいて、いずれか片方向のみ大容量のデータ通信が発生する場合や、何らかの原因で片方の読み出しが書き込みに対して遅い場合などに、該当側のメモリ領域がフルになれば、例えその逆方向側のメモリ領域が空いていても、転送が停止してしまう。
【０００５】
例えば、ＣＰＵ＃１がＣＰＵ＃２にデータを送信（転送）する場合、ＣＰＵ＃１が共有メモリに書き込んだデータＡ（このとき共有メモリがフルになったとする）を、ＣＰＵ＃２が読まない（ＣＰＵ＃２が他の処理を行っているなどの理由による）間に、さらにＣＰＵ＃１が共有メモリにデータＢを書き込もうとした場合に転送が停止する。
【０００６】
本発明は、上記従来の事情に鑑みてなされたものであって、限りあるメモリ容量を有効に使用することができるメモリ制御装置提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のメモリ制御装置は、メモリアドレスの順方向からアクセスする順方向ポインタでアクセスされる順方向領域と逆方向からアクセスする逆方向ポインタでアクセスされる逆方向領域とに分割されるメモリを制御するメモリ制御装置であって、前記順方向ポインタ及び前記逆方向ポインタを監視する監視手段と、監視結果に基づいて、前記順方向領域及び前記逆方向領域の使用状況を検知する検知手段と、検知した前記使用状況に応じて、前記順方向領域と前記逆方向領域との境界を変更する境界変更手段と、を備える。上記構成によれば、順方向領域と逆方向領域との境界を変更する境界変更手段を備えることにより、順方向領域及び逆方向領域を動的に変化させることができる為、限りあるメモリ容量を有効に使用することができる。
【０００８】
また、本発明のメモリ制御装置は、前記監視手段が、前記順方向ポインタ又は前記逆方向ポインタの書き込みポインタと読み出しポインタとを比較し、前記境界変更手段が、前記書き込みポインタと前記読み出しポインタとが一致したタイミングで前記境界を変更するものである。上記構成によれば、境界変更手段が、前記書き込みポインタと前記読み出しポインタとが一致したタイミングで前記境界を変更することにより、メモリエンプティを境界の変更タイミングにすることができる。
【０００９】
また、本発明のメモリ制御装置は、前記境界変更手段が、前記書き込みポインタと前記読み出しポインタとが一致した順方向領域又は逆方向領域を狭くするように前記境界を変更するものである。上記構成によれば、エンプティが検知されたメモリ領域を狭くすることで、限りあるメモリ容量を有効に使用することができる。
【００１０】
さらに、本発明のメモリ制御装置は、前記監視手段が、前記順方向ポインタ又は前記逆方向ポインタの読み出しポインタを監視し、記境界変更手段が、前記読み出しポインタが先頭アドレスに戻るタイミングで前記読み出しポインタがアクセスする領域を広げるように前記境界を変更するものである。上記構成によれば、メモリ領域が狭いために書き込みデータの読み出しが追いつかない状況で、メモリ領域を広げることができる。
【発明の効果】
【００１１】
本発明によれば、順方向領域と逆方向領域との境界を変更する境界変更手段を備えることにより、順方向領域及び逆方向領域を動的に変化させることができる為、限りあるメモリ容量を有効に使用することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明のメモリ制御装置を、共有メモリを介して２つの送受信装置が双方向の通信を行うシステムに用いた場合の例を説明する。
【００１３】
図１は、本実施形態の双方向通信システムを説明するための概略構成を示すブロック図である。本実施形態の双方向通信システムは、送受信装置Ａ１０と、送受信装置Ｂ３０と、共有メモリ２１と、共有メモリ制御装置１００とを備える。本実施形態の双方向通信システムは、共有メモリ２１を介して双方向の通信を行うものであり、送受信装置Ａ１０から送受信装置Ｂ３０へデータを送信する順方向通信と、送受信装置Ｂ３０から送受信装置Ａ１０へデータを送信する逆方向通信を行なう。
【００１４】
本実施形態では、共有メモリ２１を、所定の領域において、最終アドレスの次が先頭アドレスになるようにポインタ制御することにより、リングバッファとして構成する。ポインタ制御を行なうことにより、書き込みポインタＷＰと読み出しポインタＲＰの値から共有メモリ２１の使用状況を知ることができる。
【００１５】
共有メモリ制御装置１００は、図１に示すように、順方向ポインタインクリメント手段１１、逆方向ポインタデクリメント手段３１、順方向ポインタ保持手段１２、逆方向ポインタ保持手段３２、比較手段１３，３３、境界値変更手段２０を有する。
【００１６】
順方向ポインタインクリメント手段１１は、メモリアドレスの順方向からアクセスするものであり、共有メモリ２１の順方向書き込みポインタＷＰ及び読み出しポインタＲＰ（順方向ポインタ）のカウントを、共有メモリ２１の先頭アドレスからインクリメントする。逆方向ポインタデクリメント手段３１が、メモリアドレスの逆方向からアクセスするものであり、共有メモリ２１の逆方向書き込みポインタＷＰ及び読み出しポインタＲＰ（逆方向ポインタ）のカウントを、共有メモリ２１の最終アドレスからデクリメントする。順方向ポインタ保持手段１２は、共有メモリ２１の順方向書き込みポインタＷＰ及び読み出しポインタＲＰを記憶する。逆方向ポインタ保持手段３２は、共有メモリ２１の逆方向書き込みポインタＷＰ及び読み出しポインタＲＰを記憶する。
【００１７】
順方向ポインタ比較手段１３は、順方向ポインタを監視し、順方向書き込みポインタＷＰと順方向読み出しポインタＲＰとを比較して順方向領域（順方向ポインタでアクセスされる領域）のフル／エンプティ（使用状況）を検知する。逆方向ポインタ比較手段３３は、逆方向ポインタを監視し、逆方向書き込みポインタＷＰと逆方向読み出しポインタＲＰとを比較して逆方向領域（逆方向ポインタでアクセスされる領域）のフル／エンプティ（使用状況）を検知する。境界値変更手段２０は、検知した順方向領域及び逆方向領域の使用状況に応じて、共有メモリ２１の順方向領域と逆方向領域とが接する境界を変更する。
【００１８】
ここで、順方向書き込みポインタＷＰは、順方向通信のデータが次に書き込まれるアドレスを示し、順方向読み出しポインタＲＰは、順方向通信のデータが次に読み出されるアドレスを示す。同様に、逆方向書き込みポインタＷＰは、逆方向通信のデータが次に書き込まれるアドレスを示し、逆方向読み出しポインタＲＰは、逆方向通信のデータが次に読み出されるアドレスを示す。
【００１９】
次に、本実施形態の双方向通信システムの動作について説明する。
【００２０】
図２は、本実施形態におけるリングバッファ２１の概略構成図である。リングバッファ２１は、初期状態としてメモリ領域を半分に分割し、それぞれを順方向領域２２と逆方向領域２３として使用している。すなわち、図２では、アドレス０００（１６進数表示。図中”ｈ”で示す。）から３ＦＦまでの領域を持つメモリの境界値を１ＦＦとし、アドレス０００から１ＦＦまでを順方向領域２２とし、アドレス２００から３ＦＦまでを逆方向領域２３としている。リングバッファ２１の順方向領域２２には順方向（送受信装置Ａ１０から送受信装置Ｂ３０）に送信されるデータが格納され、逆方向領域２３には逆方向（送受信装置Ｂ３０から送受信装置Ａ１０）に送信されるデータが格納される。
【００２１】
リングバッファ２１において、順方向の書き込みポインタＷＰは、アドレス０００から開始して１ＦＦまでカウントアップ後０００に戻る。また、順方向の読み出しポインタＲＰも、アドレス０００から開始して１ＦＦまでカウントアップ後０００に戻る。一方、逆方向の書き込みポインタＷＰは、アドレス３ＦＦから開始して２００までカウントダウン後３ＦＦに戻る。また、逆方向の読み出しポインタＲＰも、アドレス３ＦＦから開始して２００までカウントダウン後３ＦＦに戻る。
【００２２】
図３は、メモリのエンプティを検知した際のポインタの動きを示す説明図である。図３（ａ）において、順方向通信の書き込みポインタＷＰは、メモリの先頭アドレス０００からインクリメントされてアドレス０ＸＸを示し、順方向の読み出しポインタＲＰはアドレス０００を示している。一方、逆方向の書き込みポインタＷＰは、メモリの最終アドレス３ＦＦからデクリメントされてアドレス３ＸＸを示し、逆方向の読み出しポインタＲＰはアドレス３ＦＦを示している。
【００２３】
図３（ｂ）は、順方向の書き込みポインタＷＰと読み出しポインタＲＰが同じ値（メモリエンプティ）になり、逆方向の書き込みポインタＷＰと読み出しポインタＲＰが同じ値（メモリエンプティ）になった場合を示す。
【００２４】
例えば、順方向書き込みポインタＷＰと順方向読み出しポインタＲＰが同じ値になると、読み出すべきデータがなくなったことを意味するので、順方向でエンプティを検知する。順方向でエンプティとは、順方向領域に読み出すべきデータがない（書き込んだデータを全て読み出した）という状態である。
【００２５】
このように、順方向の書き込みポインタＷＰと読み出しポインタＲＰが同じ値（メモリエンプティ）になったら、順方向の書き込みポインタＷＰと読み出しポインタＲＰを、順方向の開始アドレス、即ちアドレス０００に戻す。一方、逆方向の書き込みポインタＷＰと読み出しポインタＲＰが同じ値（メモリエンプティ）になったら、逆方向の書き込みポインタＷＰと読み出しポインタＲＰを、逆方向の開始アドレス、即ちアドレス３ＦＦに戻す。
【００２６】
図３（ｃ）は、順方向の書き込みポインタＷＰと読み出しポインタＲＰをアドレス０００に戻し、逆方向の書き込みポインタＷＰと読み出しポインタＲＰをアドレス３ＦＦに戻した状態を示す。
【００２７】
図４は、メモリのエンプティを検知した際の境界値制御の例を示す説明図である。図４（ａ）は、順方向の書き込みポインタＷＰと読み出しポインタＲＰがアドレス０００を示し、順方向に送信するデータがない状態を示す。図４（ｂ）は、順方向の書き込みポインタＷＰがアドレス０ＸＸを示し、読み出しポインタＲＰがアドレス０００を示している。  図４（ｃ）は、順方向の書き込みポインタＷＰと読み出しポインタＲＰがともにアドレス０ＸＸになりメモリエンプティが検知される。
【００２８】
順方向でメモリエンプティを検知した場合は、図４（ｄ）に示すように、順方向の書き込みポインタＷＰと読み出しポインタＲＰを開始アドレス０００に戻すと同時に、斜線の部分だけ順方向領域２２を狭める。但し、この場合、逆方向の読み出しポインタＲＰと書き込みポインタＷＰの関係が、（書き込みポインタＷＰ＜読み出しポインタＲＰ）であることが条件となる。図４（ｄ）では、書き込みポインタＷＰ＝３ＸＸ、読み出しポインタＲＰ＝３ＦＦなので、この条件に合っている。
【００２９】
前述のように、逆方向領域２３にデータを書き込む場合、最終アドレスからデクリメントしていくので、通常、アドレス値は、（書き込みポインタＷＰ＜読み出しポインタＲＰ）となる。ただ、書き込みポインタＷＰが、境界アドレスに達した後は最終アドレスに戻る（リングバッファなので先頭アドレスの次が最終アドレスになる）ので、その場合は（書き込みポインタＷＰ＞読み出しポインタＲＰ）となる。この状態では、読み出しポインタＲＰから境界アドレスまでの間に読み出すべきデータが存在するが、境界を広げると拡張した領域に存在する順方向領域２２で書き込まれたデータを読み出してしまう恐れがある。したがって、逆方向領域２３においては、（書き込みポインタＷＰ＜読み出しポインタＲＰ）が境界を変更してよいことの条件となる。
【００３０】
このように本実施形態では、順方向領域２２で（書き込みポインタＷＰ＝読み出しポインタＲＰ）となり、読み出すべきデータがなくなった場合に、順方向領域２２を狭めて逆方向領域２３を広げることにより、メモリ全体の利用効率を向上させることができる。
【００３１】
図５は、本実施形態の双方向通信システムにおいて、読み出しポインタＲＰが開始アドレスに戻る際の境界値変更の例を示す説明図である。図５（ａ）は、順方向領域２２の読み出しポインタＲＰが境界アドレス１ＦＦとなり、開始アドレスに戻る場合を示す。また、図５（ｂ）は、順方向読み出しポインタＲＰが開始アドレス０００に戻った状態を示す。順方向読み出しポインタＲＰが開始アドレスに戻るのは、書き込まれたデータに対して読み出しが追いついていないことを示し、順方向領域２２が狭いということを意味する。
【００３２】
この場合、順方向の読み出しポインタＲＰが境界アドレスから開始アドレスに戻る際に、図５（ｃ）に示すように、斜線の部分だけ順方向領域２２を広げる。但し、この場合は、斜線の領域に逆方向の書き込みポインタＷＰまたは読み出しポインタＲＰが無く、かつ（書き込みポインタＷＰ＜読み出しポインタＲＰ）であることが条件となる。これは、領域を広げようとする場合、相手側がその領域を使用していないことを条件とするためである。
【００３３】
以上説明したように、共有メモリ制御装置１００によれば、境界値変更手段２０が、順方向領域と逆方向領域との境界を変更することにより、順方向領域及び逆方向領域を動的に変化させることができる為、限りあるメモリ容量を有効に使用することができる。
【００３４】
尚、上記の説明ではエンプティ検知や読み出しポインタＲＰが開始アドレスに戻る毎に境界値を変更したが、エンプティ検知等が所定の回数連続して起こった場合に領域変更を行なうことにしてもよく、また境界値に制限を設けて、ある領域は常時、順方向領域及び逆方向領域のいずれかとして確保する制御としてもよい。
【００３５】
図６は、本実施形態の双方向通信方法における全体のフローチャートである。送信側で画像、音声あるいは制御信号等のデータの送信イベントが発生すると（ステップＳ１）、送信側のＣＰＵにおいて、送信データを共有メモリ（ＤＰＲＡＭ）へ書き込む送信処理を行ない、書き込んだデータの受信要求を受信側に送信する（ステップＳ２）。
【００３６】
受信側では、送信側から送信された受信要求に応じて、共有メモリ（ＤＰＲＡＭ）の書き込みポインタＷＰを確認し、共有メモリ（ＤＰＲＡＭ）のどこにデータが書き込まれているかを確認する。そして、読み出しポインタＲＰ及び書き込みポインタＷＰをみて、読み出すべきデータがあるか否かを判断する（スタップＳ３）。読み出すべきデータがある場合は受信イベント発生を発生させ（ステップＳ４）、共有メモリ（ＤＰＲＡＭ）からデータを読み出す受信処理を行なう（ステップＳ５）。
【００３７】
図７は、図６のステップＳ５における受信処理の詳細なフローチャートを示す。受信側のＣＰＵは、受信イベントに応じて共有メモリから順方向データの読み出し処理を行ない（ステップＳ１１）、順方向メモリエンプティが発生したか否かを監視する（ステップＳ１２）。
【００３８】
順方向メモリエンプティが発生した場合（ＹＥＳ）は、順方向書き込みポインタＷＰ及び順方向読み出しポインタＲＰを初期化し（ステップＳ１３）、逆方向書き込みポインタＷＰが逆方向読み出しポインタＲＰより小さいか否かを判断し（ステップＳ１４）、逆方向書き込みポインタＷＰが逆方向読み出しポインタＲＰより小さい場合（ＹＥＳ）は、順方向領域を縮小する（ステップＳ１５）。
【００３９】
一方、ステップＳ１２において、順方向メモリエンプティが発生していない場合（ＮＯ）は、順方向読み出しポインタＲＰが最大値か否かを判断し（ステップＳ１６）、順方向読み出しポインタＲＰが最大値でない場合（ＮＯ）は、順方向読み出しポインタＲＰをインクリメントする（ステップＳ１７）。
【００４０】
一方、ステップＳ１６において、順方向読み出しポインタＲＰが最大値の場合（ＹＥＳ）は、順方向読み出しポインタＲＰを初期化し（ステップＳ１８）、逆方向書き込みポインタＷＰが逆方向読み出しポインタＲＰより小さいか否かを判断し（ステップＳ１９）、逆方向書き込みポインタＷＰが逆方向読み出しポインタＲＰより小さい場合（ＹＥＳ）は、順方向領域を拡大する（ステップＳ２０）。
【００４１】
このように本実施形態の双方向通信システムによれば、共有メモリの順方向領域のエンプティを検知した際に、順方向領域を減少させることにより、限りある共有メモリの容量を有効に使用して双方向通信を行なうことができる。
【００４２】
また、順方向読み出しポインタが境界アドレスから開始アドレスに戻る際に、順方向領域の不足を検出し、順方向領域を増加させることにより、限りある共有メモリの容量を有効に使用して双方向通信を行なうことができる。
【００４３】
図８は、本実施形態の双方向通信システムを携帯電話に適用した場合の例を示す。本実施形態は、それぞれにＣＰＵがあり独立に駆動可能な２つの無線系を搭載したシステムであって、ＣＰＵ間のやり取りを行なうために共有メモリを使用する。
【００４４】
図８に示すように、Ｗ−ＣＤＭＡ（Wideband-Code Division Multiple Access）Ｃ−ＣＰＵ４２、ベースバンド処理部４３、ＲＦ（radio frequency）部４４、及びＷ−ＣＤＭＡ系システム・バス４１は、Ｗ−ＣＤＭＡ系に属する。一方、ＧＳＭ（Global System for Mobile Communication）Ｃ−ＣＰＵ４７、ベースバンド処理部４８、ＲＦ部４９、及びＧＳＭ系システム・バス４６は、ＧＳＭ系に属する。そして、Ｗ−ＣＤＭＡ＿Ｃ−ＣＰＵ４２とＧＳＭ＿Ｃ−ＣＰＵ４７が、共有メモリであるデュアルポートＲＡＭ４５を介して双方向通信を行なう。
【００４５】
図８において、Ｃ−ＣＰＵ４２，４７は、伝送系のＣＰＵを示すが、他にアプリケーション用のＡ−ＣＰＵ（表示部に何を表示するか、どういう音を出すかなどの制御を行なう）が存在する。本実施形態の双方向通信方法は、共有メモリを使用したＣ−ＣＰＵとＡ−ＣＰＵとのデータのやり取りにも適用することができる。
【産業上の利用可能性】
【００４６】
本発明はの共有メモリ制御装置は、順方向領域と逆方向領域との境界を変更する境界変更手段を備えることにより、順方向領域及び逆方向領域を動的に変化させることができる為、限りあるメモリ容量を有効に使用することができる効果を有し、共有メモリを介した双方向通信システム等に有用である。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態における双方向通信システムを説明するための概略構成を示すブロック図
【図２】本発明の実施形態におけるリングバッファの概略構成図
【図３】本発明の実施形態におけるエンプティ時（ＷＰ＝ＲＰ）のポインタ動作を説明するための図
【図４】本発明の実施形態におけるエンプティ検知時の領域変更を説明するための図
【図５】本発明の実施形態における読み出しポインタが開始アドレスに戻る際の境界変更を説明するための図
【図６】本発明の実施形態における双方向通信方法を示すフローチャート
【図７】本発明の実施形態において受信側で行なわれる受信処理の詳細を示すフローチャート
【図８】本発明の実施形態の双方向通信システムを携帯電話に用いた場合の概略構成図
【符号の説明】
【００４８】
１０  送受信装置Ａ
１１  順方向ポインタインクリメント手段
１２  順方向ポインタ保持手段
１３  順方向ポインタ比較手段
２０  境界値変更手段
２１  リングバッファ
２２  順方向領域
２３  逆方向領域
３０  送受信装置Ｂ
３１  逆方向ポインタインクリメント手段
３２  逆方向ポインタ保持手段
３３  逆方向ポインタ比較手段
４１  Ｗ−ＣＤＭＡ系システム・バス
４２  Ｗ−ＣＤＭＡ＿Ｃ−ＣＰＵ
４３，４８  ベースバンド処理部
４４，４９  ＲＦ部
４５  デュアルポートＲＡＭ
４６  ＧＳＭ系システム・バス
４７  ＧＳＭ＿Ｃ−ＣＰＵ
１００  共有メモリ制御装置
【図１】
2006091966.tif 000003
【図２】
2006091966.tif 000004
【図３】
2006091966.tif 000005
【図４】
2006091966.tif 000006
【図５】
2006091966.tif 000007
【図６】
2006091966.tif 000008
【図７】
2006091966.tif 000009
【図８】
2006091966.tif 000010