(57)【要約】【課題】  柔軟かつ効率のよい帯域設計を実現することができる共有メモリシステムを提供する。【解決手段】  複数の共有メモリ１１、１２〜１ｍは１つの仮想アドレス空間上に重複することなくマッピングされ、仮想アドレス空間上の開始アドレスと終了アドレスがそれぞれ設定される。複数のバスマスタ２１、２２〜２ｎは共有メモリに対して仮想アドレス空間上のアドレスによりメモリアクセスを要求し、共有メモリの各々は、仮想アドレス空間上のアドレスによりメモリアクセスを要求された場合に要求アドレスが自己に設定されている仮想アドレス空間上の開始アドレスと終了アドレスにより規定される範囲内か否かを判断し、範囲内のときにメモリアクセスの要求を許可する。【選択図】  図１
2006133904.tif 000002
【特許請求の範囲】
【請求項１】
１つの仮想アドレス空間上に重複することなくマッピングされ、前記仮想アドレス空間上の開始アドレスと終了アドレスがそれぞれ設定される複数の共有メモリと、
前記複数の共有メモリに対して前記仮想アドレス空間上のアドレスによりメモリアクセスを独立して要求する複数のバスマスタとを備え、
前記複数の共有メモリの各々は、前記仮想アドレス空間上のアドレスによりメモリアクセスを要求された場合に前記要求されたアドレスが自己に設定されている前記仮想アドレス空間上の開始アドレスと終了アドレスにより規定される範囲内か否かを判断し、範囲内のときに前記メモリアクセスの要求を許可するようにした共有メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスマスタがメモリを共有する共有メモリシステムに関する。
【背景技術】
【０００２】
一般に共有メモリシステムでは、複数のバスマスタが１つの共有メモリ、共有バスを共有することで、１つのメモリへアクセスする方式が採られる。このような共有メモリシステムでは、他のバスマスタはバスが空くまで待たされることから、各バスマスタの帯域設計が難しくなるという問題を本質的に有する。この問題を解決するために提案されてきた従来例として、例えば、共有メモリを制御するメモリコントローラ部にＦＩＦＯを設け、メモリアクセス制御を効率的に行う方法（下記の特許文献１参照）、いずれかのＤＭＡＣによりＤＭＡ転送制御が行われていても、それよりも優先度が高い他のＤＭＡＣからのバス要求を許容する方法（下記の特許文献２参照）などが挙げられる。
【特許文献１】特開２００１−２８２６１２号公報（要約書）
【特許文献２】特開２０００−２０７３５２号公報（要約書）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載の方法では、バスマスタの数が増えるにつれて、またシステムで定めるメモリアクセス１回当たりの最大ワード数が増えるにつれて、ＦＩＦＯに要する回路規模が大きくなる。また、特許文献２に記載のような方式では、バスマスタの制御が複雑になり、また、共有メモリにＤＲＡＭを使用した場合、プリチャージやアクティブコマンド発行によるオーバーヘッドが増大し、システム全体で利用可能な帯域が減少する。
【０００４】
また、例えば画像符号化／復号化処理を行うシステムＬＳＩでは、特に１チップで行う処理がＳＤ／ＨＤの画像サイズの符号化／復号化、ＪＰＥＧ符号化／復号化処理など、要求される演算量、メモリ帯域共に広範なレンジを持つ場合に、共有メモリをアクセス速度や容量の違いによってＬＳＩ内部／外部のように複数配置し、そのバスマスタのアクセス先マッピングを自由に変更することで、柔軟かつ効率のよい帯域設計を実現することが望まれる。
【０００５】
本発明は上記従来例の問題点に鑑み、柔軟かつ効率のよい帯域設計を実現することができる共有メモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は上記目的を達成するために、
１つの仮想アドレス空間上に重複することなくマッピングされ、前記仮想アドレス空間上の開始アドレスと終了アドレスがそれぞれ設定される複数の共有メモリと、
前記複数の共有メモリに対して前記仮想アドレス空間上のアドレスによりメモリアクセスを独立して要求する複数のバスマスタとを備え、
前記複数の共有メモリの各々は、前記仮想アドレス空間上のアドレスによりメモリアクセスを要求された場合に前記要求されたアドレスが自己に設定されている前記仮想アドレス空間上の開始アドレスと終了アドレスにより規定される範囲内か否かを判断し、範囲内のときに前記メモリアクセスの要求を許可するようにした。
【発明の効果】
【０００７】
本発明によれば、複数の共有メモリが１つの仮想アドレス空間上に重複することなくマッピングされているので、複数のバスマスタが並列にアクセスすることができ、柔軟かつ効率のよい帯域設計を実現することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施の形態について説明する。図１は本発明に係る共有メモリシステムの一実施の形態の全体構成を示すブロック図、図２は図１の複数の共有メモリのアドレス空間を示す説明図、図３は図１の複数の共有メモリに対して複数のバスマスタが並列にアクセスする様子を示すタイミングチャート、図４は図１のバスマスタのクロック変化を説明するためのタイミングチャート、図５は図１のバスマスタが連続してアクセスする様子を示すタイミングチャートである。なお、図３は後述するバスマスタ２１が共有メモリ１１の領域、バスマスタ２２が共有メモリ１ｍの領域にアクセスする例を示している。
【０００９】
図１において、ｍ、ｎをそれぞれ、ｍ＞１、ｎ＞０の整数とし、共有メモリがｍ個（１１、１２〜１ｍ）に対してバスマスタがｎ個（２１、２２〜２ｎ）とする。共有メモリ１１、１２〜１ｍはメモリの制御を行うメモリコントローラ（不図示）を含む。各共有メモリ１１、１２〜１ｍは図２に示すように１つの共通の仮想アドレス空間にマッピングされ、マッピングの情報として先頭アドレスマッピングレジスタ（ＳＴＡＤＲＭＡＰ１〜ＳＴＡＤＲＭＡＰｍ）、終了アドレスマッピングレジスタ（ＥＮＤＡＤＲＭＡＰ１〜ＥＮＤＡＤＲＭＡＰｍ）を有する。共有メモリ１１、１２〜１ｍとバスマスタ２１、２２〜２ｎとを接続する不図示のバスは、すべての共有メモリ１１、１２〜１ｍについて信号の組、通信プロトコル共に共通であり、互いに独立して並列動作する。
【００１０】
バスマスタ２１、２２〜２ｎがバス権を獲得するために共有メモリ１１、１２〜１ｍの各メモリコントローラに出力する信号は、メモリアクセス要求（ＲＥＱ１〜ＲＥＱｍ）と、図２に示す仮想アドレス空間上のアクセス開始時スタートアドレス（ＳＴＡＤＲ１〜ＳＴＡＤＲｍ）である。ＲＥＱとＳＴＡＤＲの各線は、各バスマスタ２１、２２〜２ｎからすべての共有メモリ１１、１２〜１ｍにパラレルに接続される。また、各メモリコントローラはバスマスタ２１、２２〜２ｎから出力されるＳＴＡＤＲとレジスタ（ＳＴＡＤＲＭＡＰ１〜ＳＴＡＤＲＭＡＰｍ、及びＥＮＤＡＤＲＭＡＰ１〜ＥＮＤＡＤＲＭＡＰｍ）とを不図示の比較回路によって比較し、自身がＲＥＱの指し示すメモリコントローラであるか否かを判断する。
【００１１】
共有メモリ１１、１２〜１ｍ側の判断方法は、例えば、あるバスマスタ２ｉ（ｉ＝１、２〜ｎ）からＲＥＱｉ、ＳＴＡＤＲｉが出力されているとき
ＳＴＡＤＲＭＡＰ＜ＳＴＡＤＲｉ、かつ
ＳＴＡＤＲｉ＜ＥＮＤＡＤＲＭＡＰ
という条件を満たしていれば、このバスマスタ２ｉに対してＡＣＫを出力し、バス権を与える。複数のアクセス要求が同じメモリコントローラを示していれば、ラウンドロビンアルゴリズムなどのバス調停を経て、ＡＣＫを返す。
【００１２】
また、複数のバスマスタからＲＥＱが出力されていても、例えば図２に示すようにバスマスタ２１は共有メモリ１１の領域（図のＳＴＡＤＲ１）を、バスマスタ２２は共有メモリ１ｍの領域（図のＳＴＡＤＲ２）を示しているならば、図３に示すようにバスマスタ２１と２２はそれぞれ独立したバス権を獲得し、同時にメモリアクセスすることが可能である。
【００１３】
各共有メモリ１１〜１ｍのバスは共通の仕様とする。共有メモリコントローラのＳＴＡＤＲＭＡＰ、ＥＮＤＡＤＭＡＰはホスト３からのレジスタ設定により決定し、また、バスマスタ２１〜２ｎが出力するＳＴＡＤＲもホスト３がレジスタ設定により各バスマスタ２１〜２ｎに設定したアドレスを基に決定するので、各バスマスタ２１〜２ｎの動作はアクセス先の共有メモリ１１〜１ｍに依存しない。このため、バスマスタ２１〜２ｎの動作が単純となると同時に、バスマスタ２１〜２ｎの設計が容易になる。
【００１４】
また、共有メモリ１１〜１ｍの動作クロックを発生させるクロック発生器（ＣＬＫ）４を有し、バスマスタ２１〜２ｎの動作クロックと共有メモリ１１〜１ｍの動作クロックが共通のクロックを基にしているものの、相互に異なる場合（例えば、共通クロックの歯抜けクロック、逓倍、分周などを使用し、バスマスタ２１〜２ｎと共有メモリコントローラのデータ授受に、メタステーブル対策が不要な場合）は、図４に示すように、共有メモリコントローラがバス権と併せてクロックイネーブル（ＣＬＫ＿ＥＮ）信号を出力する。これにより、バスマスタ２１〜２ｎはクロック発生器（ＣＬＫ）４からアクセス先の共有メモリ１１〜１ｍの動作クロックと同じクロックを受けて動作し、これにより、アクセス先の共有メモリ１１〜１ｍの動作クロックを意識することなく、タイミングの制御を行うことができる。
【００１５】
また、バスマスタ２１〜２ｎが連続的にメモリアクセスを行いたい場合は、図５に示すように、アクセス要求（ＲＥＱ１〜ＲＥＱｍ）を出力したまま、スタートアドレス（ＳＴＡＤＲ１〜ＳＴＡＤＲｍ）を変更することで実現する。また、バス権獲得中に出力したアクセス要求（ＲＥＱ１〜ＲＥＱｍ）が、アクセス中の共有メモリと異なるメモリに対するものである場合に、更にバス権を獲得しバスが衝突する危険がある。これを防ぐために、アクセスが確立している共有メモリは、そのバスマスタに対して他の共有メモリからアクセス応答が返らないよう、ＡＣＫ＿ＤＩＳＡＢＬＥ信号を発行することができるものとする。バスマスタ２ｉに対するＡＣＫ＿ＤＩＳＡＢＬＥの論理和をとり、リクエストマスクとして使用する。バスの仕様には、アドレス信号（ＡＤＲ）、転送サイズ（ＳＩＺＥ）、読み出し／書き込み（ＲＷ）、読み出しデータ（ＲＤＡＴＡ）などを追加してもよい。
【００１６】
本発明によれば、
・バスの並列動作が可能であるため、単数の共有メモリシステムに比べてメモリ帯域が向上する。
・共有メモリのメモリマッピングの変更により、バスマスタのアクセス先を決定できるので、共有メモリのうち、高速共有メモリと低速共有メモリでの帯域配分が容易である。さらに本システムを画像符号化／復号化システムＬＳＩとして実現した場合、バックエンドＬＳＩとして多くの用途で利用可能である。
・高速共有メモリはＬＳＩ内部、低速で大容量な共有メモリはＬＳＩ外部といった、現実的な構成が可能である。
・バスの振る舞いが共通であるため、バスマスタの設計が容易である。
・１つのバスマスタが同時に複数のバス権を獲得することがないため、バスマスタが連続的にバス権を獲得しようとした場合、アクセス要求を出し続けることができる。この点でもバスマスタの設計が容易となるとともに、バス帯域性能が向上する。
・アドレスの比較回路を共有メモリのコントローラ側に置くため、バスマスタがアクセス先の共有メモリを判断する場合に比べて、アドレスマッピングレジスタ、比較回路の回路コストの低減、ＣＰＵのレジスタ設定の効率向上が可能である。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る共有メモリシステムの一実施の形態の全体構成を示すブロック図である。
【図２】図１の複数の共有メモリのアドレス空間を示す説明図である。
【図３】図１の複数の共有メモリに対して複数のバスマスタが並列にアクセスする様子を示すタイミングチャートである。
【図４】図１のバスマスタのクロック変化を説明するためのタイミングチャートである。
【図５】図１のバスマスタが連続してアクセスする様子を示すタイミングチャートである。
【符号の説明】
【００１８】
３  ホスト
４  クロック発生器（ＣＬＫ）
１１、１２〜１ｍ  共有メモリ
２１、２２〜２ｎ  バスマスタ
【図１】
2006133904.tif 000003
【図２】
2006133904.tif 000004
【図３】
2006133904.tif 000005
【図４】
2006133904.tif 000006
【図５】
2006133904.tif 000007