(57)【要約】【課題】  複数のバスマスタが共有メモリにライトアクセスする際に、バスリクエストの待ち時間を格段に短縮するメモリコントローラを実現する。【解決手段】  バスマスタ３−１〜３−４の中からいずれか１つを選択可能なセレクタ１５−１〜１５−３及びセレクタ１６と、ライトアクセスが重複したバスマスタを選択制御するアービタ１７と、セレクタ１５−１〜１５−３のそれぞれに接続されたバッファ１４−１〜１４−３と、各バッファの出力とセレクタ１６の出力とから１つの出力を選択するセレクタ１２と、セレクタ１２から予め決定した優先順位に基づいて１つの出力を選択するアービタ１３とを具備するメモリコントローラとした。【選択図】      図２
2005316546.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタが接続された共通データバスと共有メモリとが中継接続され、前記複数のバスマスタから前記共有メモリへのライトアクセスをアービトレーション制御するメモリコントローラにおいて、
前記複数のバスマスタの中からいずれか１つを選択可能な前記バスマスタと同数のセレクタと、
これら各々のセレクタからの出力が重複しないように入力を選択制御する第１のアービタと、
前記セレクタのうち１つを除いたセレクタのそれぞれに接続されたバッファメモリと、
これら各々のバッファメモリの出力とバッファメモリが接続されない前記１つのセレクタの出力とから１つの出力を選択する前記バッファの後段に設けられたセレクタと、
この後段のセレクタから予め決定された優先順位に基づき１つの出力を選択する第２のアービタとを具備し、
前記複数のバスマスタのうち２つ以上から前記共有メモリに対して同時にライトアクセスが発生した場合、前記第１及び第２のアービタが前記バッファを介さないパスと前記バッファを介したパスとによって各ライトアクセスをアービトレーション制御することを特徴としたメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスマスタが共有メモリにアクセスする際のバスアービトレーションを制御するメモリコントローラに関し、特にバスマスタからのライトアクセスにおいてバスリクエストの待ち時間を短縮することのできるメモリコントローラに関する。
【背景技術】
【０００２】
複数のプロセッサ等のバスマスタが共通のデータバスを介して共有メモリに接続された共有メモリシステムにおいては、一のバスマスタが共有メモリにアクセスする際に他のバスマスタによるアクセスとの競合によるデータコンフリクトを避けるように各バスマスタを制御する必要がある。このようなバスアービトレーション制御を行う共有メモリシステムが特許文献１に記載されている。この特許文献１には従来から知られている共有メモリシステムについて記載されており（特に図８を参照）、又共有メモリをより効率良くアクセス可能なように改良された共有メモリ制御装置について記載されている。
【特許文献１】特開平１１−３９２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１の図８に記載されたような共有メモリシステムにおいては、複数のバスマスタから一斉にアクセス要求が出力されると、ワーストケースにおいて（バスマスタの個数−１）回分のバス使用権取得が待たされることとなる。この様子のタイミングの例を図６のタイミングチャートに示す。同図は、特許文献１の図８に記載されたような構成の従来の共有メモリシステムにおいて、例えば４つのバスマスタＢＭ１乃至ＢＭ４が接続された場合について、この４つのバスマスタが同時に共有メモリにライトアクセスを実行したときのバスアービトレーションの例を示したタイミングチャートである。
【０００４】
前提として、各バスマスタのバス使用権の優先順位はＢＭ１＞ＢＭ２＞ＢＭ３＞ＢＭ４（ＢＭ１の優先順位が一番高い。）であるとし、各バスマスタからのライトデータは同じ長さであるとする。同図において、バスマスタから共有メモリへのライトアクセスの基本的なシーケンスは次のとおりである。まず、バスマスタはデータバスを占有して使用するためにバス使用要求（バスリクエスト）をアービタに発行する。複数のバスマスタから同時にバスリクエストが出力された場合、アービタは各バスマスタから供給されたバスリクエストを調停し、そのうち１つのバスマスタに対してデータバスの使用を許可することを示すバス使用許可（バスアクノリッジ）を送信する。このバスアクノリッジを受信したバスマスタは、バス使用権を獲得した唯一のバスマスタとしてバスを占有してライトアクセスを実行する。
【０００５】
このような基本シーケンスで動作する共有メモリシステムにおいて、ＢＭ１乃至ＢＭ４の全てのバスマスタが同時にバスリクエストを発行した場合、各バスマスタのバスリクエスト及びアービタからのバスアクノリッジのタイミングは同図のタイミングチャートのようになる。同図に示したように、４つのバスマスタの中で一番優先順位の低いＢＭ４に着目すれば、３回分のメモリアクセスが待たされていることが分かる。また、同図は４つのバスマスタからのライトアクセスに続くＢＭ１の次のライトアクセスがアクセス開始タイミング６１から開始されていることを示している。
【０００６】
上述したようなバスアービトレーション動作の説明から分かるように、従来の共有メモリシステムにおいては、バス競合が発生してアービタがバス使用権を調停している間、バス使用権の取得を待たされるバスマスタはずっとバスアクノリッジを待ち続けることになるため、非常にアクセス効率が悪いという問題があった。
しかも、従来の構成においては、待ち時間分だけデータを保持するバッファをバスマスタ側に備える必要があり、しかも１つのバスリクエストしか保持することができないため、バスマスタ側の処理負荷が大きいという問題があった。
【０００７】
また、特許文献１に記載された発明に係る共有メモリ制御装置には、この装置の構成部である共有メモリコントローラ１０３の中に、バスマスタＢＭ１乃至ＢＭ３から共有メモリ１０４へのライトアクセスに際してライトデータが格納されるライトバッファユニット（ＷＢＦＵ）７１１が示されている。しかし、この構成は各バスマスタが最低限必要とするメモリアクセスバンド幅を維持して共有メモリ１０４を効率良く使用するために必要とするものであり、この機能を達成する共有メモリ制御装置は複雑な構成となる欠点があった。
【０００８】
そこで、本発明は共有メモリコントローラ内にバスマスタの数に基づいた所定数のバッファを備え、複数のバスマスタが同時にライトアクセスのためのバスリクエストを発行した場合に、所定のバッファを介した共有メモリアクセスによって競合している各バスマスタ側に無駄なバスリクエスト保持時間を与えないバスアービトレーションを可能とするメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上述した課題を解決するために以下の手段より構成したものである。
複数のバスマスタが接続された共通データバスと共有メモリとが中継接続され、前記複数のバスマスタから前記共有メモリへのライトアクセスをアービトレーション制御するメモリコントローラにおいて、前記複数のバスマスタの中からいずれか１つを選択可能な前記バスマスタと同数のセレクタと、これら各々のセレクタからの出力が重複しないように入力を選択制御する第１のアービタと、前記セレクタのうち１つを除いたセレクタのそれぞれに接続されたバッファメモリと、これら各々のバッファメモリの出力とバッファメモリが接続されない前記１つのセレクタの出力とから１つの出力を選択する前記バッファの後段に設けられたセレクタと、この後段のセレクタから予め決定された優先順位に基づき１つの出力を選択する第２のアービタとを具備し、前記複数のバスマスタのうち２つ以上から前記共有メモリに対して同時にライトアクセスが発生した場合、前記第１及び第２のアービタが前記バッファを介さないパスと前記バッファを介したパスとによって各ライトアクセスをアービトレーション制御することを特徴としたメモリコントローラ。
【発明の効果】
【００１０】
本発明によれば、複数のバスマスタから共有メモリへのライトアクセスに際してアクセスの競合が発生した場合、各ライトアクセスはメモリコントローラ内部のバッファが一旦ライトデータを保持してアービトレーションされるため、従来のように優先順位の低いバスマスタのバスリクエストがバスアクノリッジを待ち続けることがなく、ライトアクセス効率が格段に良くなるという格別な効果を有する。
また、このように各バスマスタ間のアービトレーションが効率化されることにより、１つのバスマスタの前回のアクセスから次のアクセスまでの待ち時間が飛躍的に短くなるため、よりリアルタイム性のある共有メモリシステムを構築できるという極めて優れた効果を有する。
【発明を実施するための最良の形態】
【００１１】
以下、本発明に係るメモリコントローラの実施の形態について図を参照して説明する。図１は本発明の実施の形態例を説明するために示した共有メモリシステムの概略ブロック図である。同図に示すように、共有メモリシステムは、データバス１を介してメモリコントローラ２とバスマスタ３−１，３−２，３−３，及び３−４とがそれぞれ接続され、メモリコントローラ２にはこれら全てのバスマスタによって共有使用される共有メモリ４が接続された構成である。
【００１２】
この構成において、データバス１は、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタとメモリコントローラ２を介した共有メモリ４との間でデータが送受信される通信線であり、バスマスタ３−１乃至３−４とメモリコントローラ２との共通端子が必要なバス幅に応じて必要本数分接続されている。メモリコントローラ２は、本発明に係る部分であり、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタが共有メモリ４へのアクセス権を取得してデータバス１を占有使用するよう制御する機能を有したものである。バスマスタ３−１乃至３−４は、それぞれがデータバス１とメモリコントローラ２とを介して共有メモリ４とデータを送受するデバイスであり、例えばＣＰＵ等のプロセッサやＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）デバイス等を指すものである。共有メモリ４は、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタによってアクセスされる全バスマスタ共有のメモリであり、本形態例においてはＤＲＡＭやＳＲＡＭ等のメモリの種類には限定されない。
【００１３】
なお、本実施の形態例では、共有メモリシステムは４つのバスマスタを使用した例について説明するが、本発明に係るメモリコントローラ２にはこの数に限定されず２つ以上のバスマスタが接続されるものであってよい。
また、データバス１は、バスマスタ３−１乃至３−４のインターフェース（Ｉ／Ｆ）及びメモリコントローラ２の内部構成によりデータラインとアドレスラインとがマルチプレックスされたアドレス／データバスであってもよい。
【００１４】
次に、メモリコントローラ２についてその内部構成を説明する。メモリコントローラ２は、４つのバスマスタ３−１乃至３−４から共有メモリ４を中継してデータを送信するための内部パスとして、後述する３つのバッファをそれぞれ介する３つのパス（以下、それぞれをバッファドパスと記す。）とバッファを介さない１つのパス（以下、ダイレクトパスと記す。）とを有する。
【００１５】
メモリコントローラ２の概略内部構成について、４つのバスマスタに対応したブロック図の例を図２に示す。同図に示すように、メモリコントローラ２は、共有メモリ４に対して書き込み制御等を行うためのメモリアクセス制御部１１と、ダイレクトパス及び３つのバッファドパスのうちいずれか１つのパスが選択されるためのセレクタ１２と、ダイレクトパス及び３つのバッファドパスのうちいずれか１つのパスを選択するためのアービタ１３と、バスマスタ３−１乃至３−４のうち後述する所定の３つ以内のバスマスタがそれぞれライトアクセスするデータを一時記憶するためのバッファ１４−１，１４−２，及び１４−３と、バスマスタ３−１乃至３−４のうち前記所定の３つ以内のバスマスタからのアクセスをバッファ１４−１乃至１４−３のうち前記所定の３つ以内のバッファにそれぞれ接続させるためのセレクタ１５−１，１５−２，及び１５−３と、バスマスタ３−１乃至３−４のうち前記所定の３つのバスマスタを除いた残り１つのバスマスタをバッファ１４−１乃至１４−３のいずれのバッファをも介さずにセレクタ１２に接続するためのセレクタ１６と、セレクタ１５−１乃至１５−３及びセレクタ１６のそれぞれについてバスマスタ３−１乃至３−４のうちいずれか１つをアービトレーション可能なアービタ１７とから構成される。
【００１６】
以上の構成によるメモリコントローラ２において、アービタ１３はバッファドパスがダイレクトパスよりも優先されるように制御するものとし、又３つのバッファドパスにおいては、例えばバッファ１４−１が一番優先度が高く、バッファ１４−３が最も優先度が低くなるように制御するものとする。セレクタ１５−１乃至１５−３は、バッファ１４−１乃至１４−３にそれぞれ対応して設けられたものであるが、この各セレクタは４つ全てのバスマスタの中からいずれか１つのバスマスタを選択可能なように構成されている。また、セレクタ１６はダイレクトパスに対応したセレクタであるが、これも４つ全てのバスマスタの中からいずれか１つのバスマスタを選択可能なように構成されているものである。
【００１７】
以上示したように、メモリコントローラ２に備えるバッファの数は、データバス１に接続されたバスマスタの数よりも１つ少ない数とする必要がある。
【００１８】
次に、以上の構成による共有メモリシステムの動作について詳述する。各バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタとメモリコントローラ２との基本的なアクセスシーケンスは、前述したバスリクエスト及びバスアクノリッジによって実現されるものである。まず、共有メモリシステムの動作をフローチャートを参照して説明する。図３は、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタがメモリコントローラ２に対してバスリクエストを発行した場合についてのメモリコントローラ２の動作を、このバスリクエストを発行したバスマスタを主体として示したフローチャートである。
【００１９】
まず、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタからライトアクセスのためのバスリクエストが発行されたとする（ステップＳ３０１）。メモリコントローラ２のアービタ１７はバッファ１４−１乃至１４−３のいずれかに未処理のライトデータが格納されているかどうかを判別する（ステップＳ３０２）。そして、１つ以上のバッファに未処理のライトデータが格納されていた場合（ステップＳ３０２  Ｙｅｓ）は、バッファドパスによる処理がダイレクトパスによる処理に優先すべくバッファドパスの処理に移行する。
【００２０】
一方、各バッファに未処理のライトデータが格納されてない場合（ステップＳ３０２  Ｎｏ）は、アービタ１７は他のバスマスタからのバスリクエストが発行されているかどうかの判別を行う（ステップＳ３０３）。そして、他のバスマスタからのバスリクエストが発行されていない場合（ステップＳ３０３  Ｎｏ）は、ダイレクトパスによる共有メモリ４へのライトアクセスが実行される（ステップＳ３０４）。
【００２１】
また、他のバスマスタからのバスリクエストが発行されていた場合（ステップＳ３０３  Ｙｅｓ）は、アービタ１７によるアービトレーションが実行される（ステップＳ３０５）。このアービトレーションでは、バスリクエストが発行された複数のバスマスタについて、ダイレクトパスによるライトアクセスとバッファドパスによるライトアクセスとが予め設定された各バスマスタの優先順位に基づいて設定される。例えば、バスリクエストを発行している各バスマスタのうち最も優先順位の高いバスマスタについてダイレクトパスが設定され、それ以外のバスマスタについてバッファドパスが設定される。
【００２２】
次に、本バスマスタがアービタ１７のアービトレーションによってダイレクトパスによるアクセス許可が与えられた場合（ステップＳ３０６  Ｙｅｓ）は、ダイレクトパスによる共有メモリ４のライトアクセスを行う（ステップＳ３０４）。
【００２３】
また、アービタ１７のアービトレーション結果がバッファドパスによるアクセス許可であった場合（ステップＳ３０６  Ｎｏ）は、まず、全てのバッファが使用中であるかどうを判別する（ステップＳ３０７）。そして、バッファ１４−１乃至１４−３全てが使用中である場合（ステップＳ３０７  Ｙｅｓ）は、いずれかのバッファに空きができるまで待ち続ける。また、いずれかのバッファに空きがある場合（ステップＳ３０７  Ｎｏ）は、他のバスマスタからもダイレクトパスによるライトアクセスができなかったバスリクエストが発生しているかどうかを判別する（ステップＳ３０８）。そして、他にバスリクエストが発行されていない場合（ステップＳ３０８  Ｎｏ）は、空きバッファにライトデータを書き込む（ステップＳ３０９）。
【００２４】
また、他のバスマスタからもバスリクエストが発生した場合（ステップＳ３０８  Ｙｅｓ）は、バスリクエストの数に対して空きバッファ数が足りているかどうかを判別する（ステップＳ３１０）。そして、バスリクエストの数が空きバッファ数よりも少ない場合（ステップＳ３１０  Ｎｏ）は、バッファにライトデータを書き込むべく前記ステップＳ３０９に移行する。また、バスリクエストの数がバッファ数よりも多い場合（ステップＳ３１０  Ｙｅｓ）は、アービタ１７によるアービトレーションを行う（ステップＳ３１１）。
【００２５】
次に、アービタ１７によるアービトレーションで優先されたバッファドパスのアクセス（ステップＳ３１２  Ｙｅｓ）は、前述したステップＳ３０９による空きバッファへのデータライトを行う。また、アービタ１７によるアービトレーションで待たされているバッファドパスのアクセスは、バッファが空くまで待ち続ける（ステップＳ３１３）。そして、バッファが空いた場合（ステップＳ３１３  Ｙｅｓ）は、その時点での他のバスマスタからのバスリクエストが発生しているかどうかの判別処理に移行する。
【００２６】
次に、バスマスタ３−１乃至３−４のうちいずれか１つのバスマスタから共有メモリ４にデータを書き込む場合の３つのバッファドパスとダイレクトパスとをアービトレーションするアービタ１３の動作を図４のフローチャートを参照して説明する。同図において、アービタ１３はバッファ１４−１乃至１４−３のうちいずれか１つのバッファにライトデータが格納されているかどうかを判別する（ステップＳ４０１）。そして、全てのバッファにライトデータが格納されていない場合（ステップＳ４０１  Ｎｏ）は、セレクタ１６からダイレクトパスによる書き込み要求があるかどうかを判別する（ステップＳ４０２）。そして、ダイレクトパスの要求がない場合（ステップＳ４０２  Ｎｏ）は入力待ちとなり、ダイレクトパスの要求がある場合（ステップＳ４０２  Ｙｅｓ）はダイレクトパスによて共有メモリ４へのアクセスが実行される（ステップＳ４０３）。
【００２７】
各バッファのうちいずれか１つのバッファにライトデータが格納されている場合（ステップＳ４０１  Ｙｅｓ）は、そのライトデータが格納されたバッファが２つ以上であるかどうかを判定する（ステップＳ４０４）。そして、ライトデータが格納されたバッファが１つである場合（ステップＳ４０４  Ｎｏ）は、バッファドパスによってその格納されたライトデータを共有メモリ４に書き込むアクセスが実行される（ステップＳ４０５）。また、ライトデータが格納されたバッファが２つ以上ある場合（ステップＳ４０４  Ｙｅｓ）は、アービタ１３によってアービトレーションが実行される（ステップＳ４０６）。そして、アービタ１３によって選択されたバッファからの共有メモリ４へのアクセスが実行される（ステップＳ４０７）。そして、前述のステップＳ４０４に移行する。
【００２８】
以上説明した共有メモリシステムにおいて、４つのバスマスタ３−１乃至３−４が同時に共有メモリ４にライトアクセスを実行した場合のタイミングの例を図５のタイミングチャートに示す。同図によれば、バスマスタ３−１がダイレクトパスによる共有メモリ４へのアクセスを実行し、そしてバスマスタ３−２乃至３−４がバッファドパスによるアクセスを実行した例である。前述した従来例のタイミングチャート（図６）と比べて各バスマスタの待ち時間が十分に短くなっている。
【００２９】
また、バスマスタ３−１の２回目のバスリクエストについても発行タイミング５１が図６に示した従来例のタイミングよりも早くなっていることが確認できる。
【００３０】
以上、詳述したように本発明に係るメモリコントローラによれば、複数のバスマスタから共有メモリへのライトアクセスに際してアクセスの競合が発生した場合、各ライトアクセスはメモリコントローラ内部のバッファが一旦ライトデータを保持してアービトレーションされるため、従来のように優先順位の低いバスマスタのバスリクエストがバスアクノリッジを待ち続けることがなくライトアクセス効率が格段に良くなるものである。また、このように各バスマスタ間のアービトレーションが効率化されることにより、１つのバスマスタの前回のアクセスから次のアクセスまでの待ち時間が飛躍的に短くすることができる。
【産業上の利用可能性】
【００３１】
本発明に係るメモリコントローラは、複数のプロセッサからなるマルチプロセッサシステムや複数のＤＭＡデバイス等からなるマルチバスマスタシステムにおいて、高速性が要求されるリアルタイムシステムに適用できるものである。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態例を説明するために示した、共有メモリシステムの概略ブロック図である。
【図２】メモリコントローラ２の概略内部構成を例示した図である。
【図３】共有メモリシステムにおいて、バスマスタ３−１乃至３−４のうちいずれか１つがメモリコントローラ２に対してバスリクエストを発行した場合についてのメモリコントローラ２の動作を、このバスリクエストを発行したバスマスタを主体として示したフローチャートである。
【図４】共有メモリシステムにおいて、バスマスタ３−１乃至３−４のうちいずれか１つから共有メモリ４にデータを書き込む場合の、３つのバッファドパスとダイレクトパスとをアービトレーションするアービタ１３の動作示したフローチャートである。
【図５】共有メモリシステムにおいて、４つのバスマスタ３−１乃至３−４が同時に共有メモリ４にライトアクセスを実行した場合のタイミングの例である。
【図６】従来の共有メモリシステムにおいて、４つのバスマスタが同時に共有メモリにライトアクセスを実行したときのバスアービトレーションの例を示したタイミングチャートである。
【符号の説明】
【００３３】
１  データバス
２  メモリコントローラ
３−１〜３−４  バスマスタ
４  共有メモリ
１１  メモリアクセス制御部
１２  セレクタ
１３  アービタ
１４−１〜１４−３  バッファ
１５−１〜１５−３  セレクタ
１６  セレクタ
１７  アービタ
【図１】
2005316546.tif 000003
【図２】
2005316546.tif 000004
【図３】
2005316546.tif 000005
【図４】
2005316546.tif 000006
【図５】
2005316546.tif 000007
【図６】
2005316546.tif 000008