(57)【要約】【課題】システムの使用形態や稼動状態の変化に柔軟に対応可能なメモリコントローラを提供する。【解決手段】メモリコントローラ１１００を、システムバスインターフェース１２００，１２１０，１２２０と、メモリコントローラコア部１３００と、メモリインターフェース１４００に分割する。また、メモリコントローラコア部１３００には、コマンド制御部１３２０の他に、任意の個数のメモリインターフェースに対応すべくシステムバスインターフェース用のコントローラ内部システムバス１３１０を設ける。【選択図】図１
2008027247.tif 000002
【特許請求の範囲】
【請求項１】
複数のシステムバスで共有可能な共有メモリを制御するメモリコントローラにおいて、
前記メモリコントローラを前記システムバスに係るシステムバスインターフェース部と、前記共有メモリに係るアクセスコマンドの実行を制御するコマンド制御部を有するメモリコントローラコア部と、前記共有メモリに係るメモリインターフェース部に分割し、
前記メモリコントローラコア部に前記システムバスインターフェースと前記コマンド制御部との間でコマンド、データを授受する第１のバスを設けたことを特徴とするメモリコントローラ。
【請求項２】
更に、前記メモリコントローラコア部に前記メモリインターフェース部と前記コマンド制御部との間でコマンド、データを授受する第２のバスを設けたことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のバスは、前記システムバスインターフェースから同時に発行されたアクセスコマンドの実行順を調停する調停回路を有することを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記第２のバスは、前記メモリインターフェース部から同時に受けた読み出しデータの転送順を調停する調停回路を有することを特徴とする請求項２に記載のメモリコントローラ。
【請求項５】
前記コマンド制御部は、前記システムバスインターフェースから同時に発行されたアクセスコマンドの実行順に係る優先度を設定する優先度設定部を有することを特徴とする請求項１に記載のメモリコントローラ。
【請求項６】
前記コマンド制御部は、前記優先度設定部に設定された優先度に応じてアクセスコマンド用のキューを制御することを特徴とする請求項５に記載のメモリコントローラ。
【請求項７】
前記コマンド制御部は、前記システムバスインターフェース部からの書き込みデータを前記メモリインターフェースに対して転送するためのバッファを有することを特徴とする請求項１〜６の何れかに記載のメモリコントローラ。
【請求項８】
前記メモリコントローラコア部は、前記メモリインターフェース部からの読み出しデータを前記コマンド制御部を介することなく前記第１のバスに直接転送するためのバスを有することを特徴とする請求項１〜７の何れかに記載のメモリコントローラ。
【請求項９】
請求項１〜８の何れかに記載のメモリコントローラを搭載したコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のシステムバス、すなわちバスマスターにより共有される共有メモリへのアクセスを制御するメモリコントローラに関する。
【背景技術】
【０００２】
従来、複数のバスマスターと共有メモリとが複数のシステムバスで接続されるシステムＬＳＩが実現されている（例えば、特許文献１）。上記のバスマスターとしては、プロセッサ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）等が知られている。この種のシステムＬＳＩでは、複数のシステムバスから共有メモリへのアクセスを制御するメモリコントローラが必須のデバイスとなっている。
【０００３】
このメモリコントローラは、システムバス構成、メモリ構成等が異なる様々なシステムに対する汎用性を保ちながら高いシステム性能を達成することが求められている。このためには、メモリコントローラは、共有メモリのバンド幅とリアルタイム性を確保しながらアクセス制御を行うことが重要である。
【０００４】
従来のメモリコントローラは、各システムに共通に設けられた特定のシステムバスに対してのみ接続可能であったり、各システムバスにおける接続の優先度が固定化されたりしていた。
【特許文献１】特開平１１−１２０１５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、従来技術では、システムバス構成の異なるシステムを構築する場合や、システムの使用形態が変更された場合に、メモリコントローラを再設計する必要があり、不便であった。
【０００６】
本発明は、このような背景の下になされたもので、システムの使用形態や稼動状態の変化に柔軟に対応可能なメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本発明は、複数のシステムバスで共有可能な共有メモリを制御するメモリコントローラにおいて、前記メモリコントローラを前記システムバスに係るシステムバスインターフェース部と、前記共有メモリに係るアクセスコマンドの実行を制御するコマンド制御部を有するメモリコントローラコア部と、前記共有メモリに係るメモリインターフェース部に分割し、前記メモリコントローラコア部に前記システムバスインターフェースと前記コマンド制御部との間でコマンド、データを授受する第１のバスを設けたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、システムの使用形態や稼動状態の変化に柔軟に対応可能なメモリコントローラを提供することが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を実施するための最良の形態を、図面に基づいて説明する。
【００１０】
［第１の実施の形態］
図１は、第１の実施の形態に係るメモリコントローラの構成図である。
【００１１】
図１において、メモリコントローラ１１００は、システムバスインターフェース１２００，１２１０，１２２０を介して、それぞれシステムバス１０００，１０１０，１０２０に接続されている。システムバス１０００，１０１０，１０２０としては、例えばＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ−ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）規格のものを使用することができる。
【００１２】
これら、システムバス１０００，１０１０，１０２０は、それぞれ対応するプロセッサ等のバスマスター（図示省略）からのアクセス要求コマンド、そのコマンドで得られたアクセスデータの転送路として利用される。
【００１３】
メモリコントローラ１１００は、メモリコントローラコア部１３００を有している。このメモリコントローラコア部１３００は、コマンド制御部１３２０を有している。コマンド制御部１３２０は、コントローラ内部システムバス１３１０を介して、システムバスインターフェース１２００，１２１０，１２２０に接続されている。
【００１４】
また、コマンド制御部１３２０は、メモリインターフェース１４００を介して共有メモリ１５００に接続されている。共有メモリ１５００としては、例えば、シンクロナスＤＲＡＭやＤＤＲ−ＳＤＲＡＭ、ＲＯＭ等を使用することができる。
【００１５】
このような構成の下で、メモリコントローラ１１００は、システムバス１０００，１０１０，１０２０からのアクセス要求に応じて、コマンド制御部１３２０を中核として共有メモリ１５００に対するアクセス制御を行っている。
【００１６】
すなわち、システムバス１０００に係るバスマスターからのアクセス要求時には、当該システムバス１０００のプロトコルに応じたバストランザクション要求コマンドが対応するシステムバスインターフェース１２００に送信される。同様に、システムバス１０１０，１０２０に係るバスマスターからのアクセス要求時には、それらシステムバスのプロトコルに応じたバストランザクション要求コマンドが対応するシステムバスインターフェース１２１０，１２２０に送信される。
【００１７】
システムバスインターフェース１２００，１２１０，１２２０は、受信したトランザクション要求コマンドをコントローラ内部システムバス１３１０が受信可能なプロトコルに変換する。そして、システムバスインターフェース１２００，１２１０，１２２０は、このプロトコル変換に係るトランザクション要求コマンドをメモリコントローラコア部１３００に対して発行する。
【００１８】
メモリコントローラコア部１３００内のコマンド制御部１３２０は、このトランザクション要求コマンドをコントローラ内部システムバス１３１０を介して受信する。そして、コマンド制御部１３２０は、受信したトランザクション要求コマンドに対してアドレス変換等のコマンド変換を行う。次に、コマンド制御部１３２０は、アドレス変換に係るトランザクション要求コマンドをメモリインターフェース１４００に対して発行する。
【００１９】
メモリインターフェース１４００は、コマンド制御部１３２０から受信したトランザクション要求コマンドに対するプロトコル変換を行い、共有メモリ１５００に対してアクセスコマンドを発行する。
【００２０】
以上説明したように第１の実施の形態では、メモリコントローラ１１００は、３つの部分に分割されている。すなわち、メモリコントローラ１１００は、システムバスインターフェース１２００，１２１０，１２２０と、メモリコントローラコア部１３００と、メモリインターフェース１４００に分割されている。また、メモリコントローラコア部１３００には、コマンド制御部１３２０の他に、システムバスインターフェース用のコントローラ内部システムバス１３１０を設けている。
【００２１】
従って、システムバス１０００，１０１０，１０２０の仕様に応じてシステムバスインターフェース１２００，１２１０，１２２０を入れ替えることが可能となる。また、接続する共有メモリ１５００の仕様に応じてメモリインターフェース１４００を入れ替えることで、様々なシステムに適用可能となる。
【００２２】
換言すれば、メモリコントローラコア部１３００を変更（再設計）することなく、システムバス構成の異なるシステムを構築したり、仕様の異なる共有メモリを使用したりすることが可能となる。
【００２３】
［第２の実施の形態］
図２は、第２の実施の形態に係るメモリコントローラの構成図である。図１と同一部分には同一符号を付し、異なる点を中心に説明する（第３〜第８の実施の形態も同様）。
【００２４】
図２に示したように、第２の実施の形態では、複数の共有メモリ１５００，１５１０，１５２０に対応すべく、共有メモリ側にもコントローラ内部インターフェースバス１３３０を設けている。そして、それら共有メモリ１５００，１５１０，１５２０に対応して、それぞれメモリインターフェース１４００，１４１０，１４２０が設けられている。
【００２５】
このような構成の下で、コマンド制御部１３２０は、コントローラ内部インターフェースバス１３３０を介して各共有メモリ１５００，１５１０，１５２０に対するアクセス制御を行う。
【００２６】
このように、第２の実施の形態では、メモリコントローラコア部１３００に共有メモリ用のメモリコントローラ内部インターフェースバス１３３０を設けている。従って、共有メモリを増設する場合にメモリコントローラコア部１３００の基本的な設計を変更する必要はなく、単に各共有メモリに対応するメモリインターフェース１４００，１４１０，１４２０を接続するだけで済む。
【００２７】
［第３の実施の形態］
図３は、第３の実施の形態に係るメモリコントローラの構成図である。図３に示したように、図３の第３の実施の形態に係るメモリコントローラ１１００と、図１の第１の実施の形態に係るメモリコントローラ１１００とは、次の点で相違している。すなわち、第３の実施の形態は、メモリコントローラ内部システムバス１３１０に対して調停回路１３４０を付加した点で、第１の実施の形態と相違している。
【００２８】
この調停回路１３４０は、バスマスター、ここではシステムバスインターフェース１２００，１２１０，１２２０から同時にアクセス要求コマンドを受信した場合に、そのアクセス要求コマンドの実行順を調停するものである。すなわち、バスマスター側から同時に複数のアクセス要求が発生したとする。この場合、調停回路１３４０は、対応するバスマスター、ここではシステムバス１０００，１０１０，１０２０に予め設定された優先度に応じてアクセス要求コマンドを実行するように調停する。
【００２９】
例えば、システムバス１０００にＣＰＵが接続され、他のシステムバス１０１０，１０２０に比べリアルタイム性が要求される場合は、調停回路１３４０では、そのシステムバス１０００に１番高い優先度が設定される。そして、システムバス１０００からのアクセス要求と、他のシステムバス１０１０，１０２０からのアクセス要求が競合した場合は、調停回路１３４０は、システムバス１０００からのアクセス要求を優先的に処理する。
【００３０】
このように、第３の実施の形態では、メモリコントローラコア部１３００の基本的な設計を変更することなく、バスマスターに応じてリアルタイム性を確保しながらアクセス制御を行うことが可能となる。
【００３１】
［第４の実施の形態］
図４は、第４の実施の形態に係るメモリコントローラの構成図である。図４に示したように、第４の実施の形態に係るメモリコントローラ１１００と、図２の第２の実施の形態に係るメモリコントローラ１１００とは、次の点で相違している。すなわち、第４の実施の形態は、コントローラ内部インターフェースバス１３３０に対して調停回路１３５０を付加した点で、第２の実施の形態と相違している。
【００３２】
この調停回路１３５０は、メモリインターフェース１４００，１４１０，１４２０を介して共有メモリ１５００，１５１０，１５２０から同時に読み出しデータを受けた場合に、そのデータ転送順を調停するものである。すなわち、コントローラ内部インターフェースバス１３３０がメモリインターフェース１４００，１４１０，１４２０から同時に読み出しデータを受信したとする。この場合、調停回路１３５０は、対応する共有メモリ１５００，１５１０，１５２０に予め設定された優先度に応じて読み出しデータをシステムバス１０００，１０１０、１０２０に転送するように調停する。
【００３３】
例えば、例えば、共有メモリ１５００はＳＤＲＡＭ、共有メモリ１５１０はＲＯＭで構成されている場合、その共有メモリ１５００の方に高い優先度が設定される。そして、調停回路１３５０は、共有メモリ１５００と共有メモリ１５１０から同時に読み出しデータを受けた場合は、共有メモリ１５００からの読み出しデータを優先的にシステムバス側に転送するように調停する。
【００３４】
［第５の実施の形態］
図５は、第５の実施の形態に係るメモリコントローラの構成図である。図５に示したように、第５の実施の形態に係るメモリコントローラ１１００は、基本的には、図２の第２の実施の形態に係るメモリコントローラ１１００と同様である。ただし、第５の実施の形態では、コマンド制御部１３２０がコマンドキュー部１３２１、及び優先度設定レジスタ１３２２を有している点で第２の実施の形態と相違する。
【００３５】
システムバス優先度設定レジスタ１３２２は、図６に示したように、それぞれシステムバス１０００，１０１０，１０２０の優先度を個別に設定するレジスタ１１０，１２０、１３０により構成されている。これらレジスタ１１０，１２０、１３０には、システムバス１０００，１０１０，１０２０のバスＩＤと対応付けて優先度を示すデータが設定されている。
【００３６】
コマンドキュー部１３２１では、図７に示したように、複数のアクセスコマンド２１０，２２０，２３０が入力順に配列されている。これらアクセスコマンド２１０，２２０，２３０は、それぞれ、アクセスアドレス２１１，２２１，２３１、リード／ライトを示すフラグ２１２，２２２，２３２の情報を含んでいる。さらに、アクセスコマンド２１０，２２０，２３０は、それぞれ、システムバスのバスＩＤ２１３，２２３，２３３、優先度２１４，２２４，２３４の情報を含んでいる。
【００３７】
このような構成の下で、コマンド制御部１３２０は、システムバス１０００，１０１０，１０２０からアクセス要求が発行された場合、そのアクセス要求を発行したシステムバスのバスＩＤを優先度設定レジスタ１３２２上で検索する。そして、コマンド制御部１３２０は、検索したバスＩＤに対応付けられた優先度情報を取得し、今回のアクセス要求の優先度を判定する。
【００３８】
次に、コマンド制御部１３２０は、今回判定した優先度とコマンドキュー部１３２１に登録されている各アクセスコマンド２１０，２２０，２３０の優先度とを比較する。そして、既に登録されている各アクセスコマンドの優先度の全てが今回判定した優先度以上であれば、コマンド制御部１３２０は、通常通りの登録を行う。すなわち、コマンド制御部１３２０は、今回判定した優先度に係るアクセスコマンドが最後に実行されるような形で、当該アクセスコマンドをコマンドキュー部１３２１に新たに登録する。
【００３９】
一方、今回判定した優先度より低い優先度のアクセスコマンドが１つでも登録されている場合は、コマンド制御部１３２０は、次のようにして今回の要求に係るアクセスコマンドを登録する。すなわち、コマンド制御部１３２０は、新旧のアクセスコマンドが優先度の高い順に実行されるような形で、今回の要求に係るアクセスコマンドをコマンドキュー部１３２１に新たに登録する。
【００４０】
このように、第５の実施の形態では、第３の実施の形態に係る調停回路１３４０の代わりに、優先度設定レジスタ１３２２をコマンド制御部１３２０に設けている。
【００４１】
従って、第５の実施の形態では、第３の実施の形態と同様に、メモリコントローラコア部１３００の基本的な設計を変更することなく、バスマスターに応じてリアルタイム性を確保しながらアクセス制御を行うことが可能となる。
【００４２】
また、第５の実施の形態では、第２，第４の実施の形態と同様に、メモリコントローラコア部１３００に共有メモリ用のメモリコントローラ内部インターフェースバス１３３０を設けている。従って、第５の実施の形態においても、共有メモリを増設する場合に、メモリコントローラコア部１３００の基本的な設計を変更する必要はなく、単に各共有メモリに対応するメモリインターフェース１４００，１４１０，１４２０を接続するだけで済む。
【００４３】
［第６の実施の形態］
図８は、第６の実施の形態に係るメモリコントローラの構成図である。図８に示したように、第６の実施の形態では、コマンド制御部１３２０の内部にライトデータバッファ１３２３を設けている。なお、図８に示したシステムバスインターフェース１２００，１２１０，１２２０内のライトデータバッファ１２０１，１２１１，１２２１は、第１〜第５の実施の形態において設けることも可能である。
【００４４】
このように、第６の実施の形態では、コマンド制御部１３２０の内部にライトデータバッファ１３２３を設けたので、各システムバスインターフェースのライトデータバッファのサイズを低減することが可能となる。これにより、メモリコントローラ１１００に接続するシステムバスの数が増加した場合のオーバーヘッドを低減することも可能となる。
【００４５】
［第７の実施の形態］
図９は、第７の実施の形態に係るメモリコントローラの構成図である。図９に示したように、第７の実施の形態では、メモリコントローラコア部１３００にダイレクトリードデータバス１３６０を設けている。このダイレクトリードデータバス１３６０は、コマンド制御部１３２０を経由することなく、メモリインターフェース１４００からメモリコントローラ内部システムバス１３１０へダイレクにリードデータを転送するものである。
【００４６】
また、システムバスインターフェース１２００，１２１０，１２２０には、それぞれ、リードデータバッファ１２０２，１２１２，１２２２が設けられている。これらリードデータバッファ１２０２，１２１２，１２２２は、第１〜第６の実施の形態において設けることも可能である。
【００４７】
従って、共有メモリ１５００からデータを読み出す際のレイテンシーを低減し、高速読み出しが可能となる。
【００４８】
なお、図９には、コマンド制御部１３２０に、コマンドキュー部１３２１、優先度設定レジスタ１３２２、ライトデータバッファ１３２３を設けているが、これらは削除してもよい。ただし、コマンドキュー部１３２１、優先度設定レジスタ１３２２、ライトデータバッファ１３２３を設けた場合は、これら構成要素の前述の効果も得られることは言うまでもない。
【００４９】
［第８の実施の形態］
図１０は、第８の実施の形態に係るメモリコントローラの構成図である。第８の実施の形態では、図１０に示したように、図９の第７の実施の形態の構成要素の他に、第４の実施の形態と同様に、メモリコントローラ内部インターフェースバス１３３０と、それに接続された調停回路１３５０を有している。
【００５０】
また、第８の実施の形態では、第４，第９の実施の形態と異なり、メモリコントローラ内部システムバス１３１０にも調停回路１３４０を接続している。
【００５１】
従って、第８の実施の形態では、第１〜第７の実施の形態に係る前述の全ての効果を得ることができる。
【図面の簡単な説明】
【００５２】
【図１】第１の実施の形態に係るメモリコントローラの構成図である。
【図２】第２の実施の形態に係るメモリコントローラの構成図である。
【図３】第３の実施の形態に係るメモリコントローラの構成図である。
【図４】第４の実施の形態に係るメモリコントローラの構成を示す図である。
【図５】第５の実施の形態に係るメモリコントローラの構成図である。
【図６】システムバス優先度設定レジスタの設定情報を示す図である。
【図７】コマンドキュー部の情報を示す図である。
【図８】第６の実施の形態に係るメモリコントローラの構成図である。
【図９】第７の実施の形態に係るメモリコントローラの構成図である。
【図１０】第８の実施の形態に係るメモリコントローラの構成図である。
【符号の説明】
【００５３】
１０００，１０１０，１０２０…システムバス、１１００…メモリコントローラ、１２００，１２１０，１２２０…システムバスインターフェース、１３００…メモリコントローラコア部、１３１０…コントローラ内部システムバス、１３２０…コマンド制御部、１３３０…コントローラ内部インターフェースバス、１３４０，１３５０…調停回路、１３２２…優先度設定レジスタ、１３２３…ライトデータバッファ、１３６０…ダイレクトリードデータバス、１４００，１４１０，１４２０…メモリインターフェース、１５００，１５１０，１５２０…共有メモリ
【図１】
2008027247.tif 000003
【図２】
2008027247.tif 000004
【図３】
2008027247.tif 000005
【図４】
2008027247.tif 000006
【図５】
2008027247.tif 000007
【図６】
2008027247.tif 000008
【図７】
2008027247.tif 000009
【図８】
2008027247.tif 000010
【図９】
2008027247.tif 000011
【図１０】
2008027247.tif 000012