(57)【要約】【課題】複数のバスマスタと共有メモリ間のデータ転送を回路規模が小さく簡単な制御回路で行う。【解決手段】各マスタにそれぞれ接続される複数のマスタＩ／Ｆ２、６、１０、１４と、各マスタＩ／Ｆに接続され、マスタから共有メモリに書き込まれるデータを保持するライトデータバッファ３、７、１１、１５と、各マスタＩ／Ｆに接続され、共有メモリからマスタに読み出されるデータを保持するリードデータバッファ４、８、１２、１６と、各マスタＩ／Ｆと共有メモリとの間に設けられ、共有メモリに対する各マスタからのコマンドを先入れ先出しで格納するコマンドＦＩＦＯ１８と、コマンドＦＩＦＯから取り出したコマンドに従ってライトデータバッファから共有メモリへのデータ転送または共有メモリからリードデータバッファへのデータ転送を制御する共有メモリＩ／Ｆ１９とを備える。【選択図】  図１
2004171209.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタが一つの共有メモリにアクセスしてデータ転送を行う共有メモリデータ転送装置において、
各マスタにそれぞれ接続される複数のマスタインターフェースと、
各マスタインターフェースに接続され、前記マスタから前記共有メモリに書き込まれるデータを保持する書き込みバッファと、
各マスタインターフェースに接続され、前記共有メモリから前記マスタに読み出されるデータを保持する読み出しバッファと、
各マスタインターフェースと前記共有メモリとの間に設けられ、前記共有メモリに対する各マスタからのコマンドを先入れ先出しで格納するＦＩＦＯと、
前記ＦＩＦＯから取り出したコマンドに従って、前記書き込みバッファから前記共有メモリへのデータ転送、または前記共有メモリから前記読み出しバッファへのデータ転送を制御する共有メモリインタフェースとを備える共有メモリアクセス装置。
【請求項２】
同時に発行された複数のコマンドを所定の順序で前記ＦＩＦＯに格納する調停装置を備える請求項１記載の共有メモリアクセス装置。
【請求項３】
コマンドの内容を参照して前記ＦＩＦＯに格納するコマンドの順序を並び替える調停装置を備える請求項１または２記載の共有メモリアクセス装置。
【請求項４】
前記ＦＩＦＯに格納するコマンドを前記共有メモリのアクセス単位で発行する請求項１から３のいずれか一項記載の共有メモリデータ転送装置。
【請求項５】
前記共有メモリのアクセスを固定のバースト長にする請求項１から４のいずれか一項記載の共有メモリデータ転送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のマスタが一つの共有メモリにアクセスしてデータ転送を行う共有メモリデータ転送装置に関する。
【０００２】
【従来の技術】
近年、プロセッサ、ＤＳＰ、ＤＭＡ等の複数のバスマスタと、メモリ、周辺Ｉ／Ｏデバイス等のバススレーブとが複数のバスで接続されるシステムＬＳＩでは、効率的に処理が可能であることが重要となっている。そのためには、バススレーブを共有し、小面積、低消費電力で、効率的なアクセス制御を実現することが重要である。
【０００３】
従来のマルチバスマスタから共有リソースへのアクセス制御技術は、例えば、特許文献１に記載された「データ転送方式及びデータ転送装置」が存在し、各バスマスタに対応するデータバッファとデータ転送制御回路を設け、データ転送制御回路により共有メモリへのアクセスまたは他のデータバッファにアクセスすることで高速にデータ転送を可能とするものである。
【０００４】
【特許文献１】
特開平７−９３２７４号公報
【０００５】
【発明が解決しようとする課題】
上記従来技術では、データ転送制御回路がアドレスバッファや多くの制御回路を必要とした複雑な回路であるため、回路規模が大きくなるという問題があった。
【０００６】
本発明は、上記問題を解決するためになされたもので、複数のバスマスタと共有メモリ間のデータ転送を回路規模が小さく簡単な制御回路で行うことができる共有メモリデータ転送装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
前記の上記目的を達成するために、請求項１の発明に係る共有メモリデータ転送装置は、複数のマスタ（マスタ１、５、９、１３）が一つの共有メモリ（共有メモリ２０）にアクセスしてデータ転送を行う共有メモリデータ転送装置において、各マスタにそれぞれ接続される複数のマスタインターフェース（マスタＩ／Ｆ２、６、１０、１４）と、各マスタインターフェースに接続され、前記マスタから前記共有メモリに書き込まれるデータを保持する書き込みバッファ（ライトデータバッファ３、７、１１、１５）と、各マスタインターフェースに接続され、前記共有メモリから前記マスタに読み出されるデータを保持する読み出しバッファ（リードデータバッファ４、８、１２、１６）と、各マスタインターフェースと前記共有メモリとの間に設けられ、前記共有メモリに対する各マスタからのコマンドを先入れ先出しで格納するＦＩＦＯ（コマンドＦＩＦＯ１８）と、前記ＦＩＦＯから取り出したコマンドに従って、前記書き込みバッファから前記共有メモリへのデータ転送、または前記共有メモリから前記読み出しバッファへのデータ転送を制御する共有メモリインタフェース（共有メモリＩ／Ｆ１９）とを備える。
【０００８】
上記構成によれば、各マスタのコマンドを先入れ先出しでＦＩＦＯに格納した後、ＦＩＦＯからコマンドを先入れ先出しで取り出して共有メモリに対するデータ転送を実行することで、複数のバスマスタと共有メモリ間のデータ転送を回路規模が小さく簡単な制御回路（ＦＩＦＯ）により行うことができる。
【０００９】
請求項２の発明に係る共有メモリデータ転送装置は、請求項１記載の共有メモリアクセス装置において、同時に発行された複数のコマンドを所定の順序で前記ＦＩＦＯに格納する調停装置を備える。
【００１０】
請求項３の発明に係る共有メモリデータ転送装置は、請求項１または２記載の共有メモリアクセス装置において、コマンドの内容を参照して前記ＦＩＦＯに格納するコマンドの順序を並び替える調停装置を備える。
【００１１】
上記構成によれば、調停装置により各マスタからのコマンドの順序を並び替えてＦＩＦＯに格納することができるため、共有メモリからのデータ読み出しを効率良く行うことができる。
【００１２】
請求項４の発明に係る共有メモリデータ転送装置は、請求項１から３のいずれか一項記載の共有メモリデータ転送装置において、前記ＦＩＦＯに格納するコマンドを前記共有メモリのアクセス単位で発行する。
【００１３】
請求項５の発明に係る共有メモリデータ転送装置は、請求項１から４のいずれか一項記載の共有メモリデータ転送装置において、前記共有メモリのアクセスを固定のバースト長にする。
【００１４】
上記構成によれば、ＦＩＦＯに格納されるコマンドの発行や共有メモリへのアクセスを制御することで、共有メモリインターフェースでの転送制御を効率良く行うことができる。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
図１は、本発明の第１の実施の形態に係る共有メモリデータ転送装置の構成を示すブロック図である。図１において、データ転送装置は、プロセッサ、ＤＳＰ、ＤＭＡ等のバスマスタ（以下、マスタと記す）１、マスタ５、マスタ９、マスタ１３が共有メモリ２０にアクセスしてデータの書き込み、読み出しを行う。
【００１６】
マスタ１はマスタインターフェース（Ｉ／Ｆ）２を介してライトデータバッファ３およびリードデータバッファ４に接続され、マスタ５はマスタインターフェース（Ｉ／Ｆ）６を介してライトデータバッファ７およびリードデータバッファ８に接続され、マスタ９はマスタインターフェース（Ｉ／Ｆ）１０を介してライトデータバッファ１１およびリードデータバッファ１２に接続され、マスタ１３はマスタインターフェース（Ｉ／Ｆ）１４を介してライトデータバッファ１５およびリードデータバッファ１６に接続される。
【００１７】
また、コマンドＦＩＦＯ１８、共有メモリインターフェース（共有メモリＩ／Ｆ）１９、ライトデータバッファ３、７、１１、１５およびリードデータバッファ４、８、１２、１６が、データバス１７を介して相互に接続され、共有メモリインターフェース１９は共有メモリ２０に接続される。コマンドＦＩＦＯ１８は、制御線を介してマスタインターフェース（マスタＩ／Ｆ）２、６、１０、１４および共有メモリＩ／Ｆ１９に接続される。
【００１８】
ここで、共有メモリ２０のバス幅を１６ビットとし、共有メモリＩ／Ｆ１９の制御回路を簡略化するため、共有メモリ２０は８バースト固定アクセスとする。また、マスタ１、５、９、１３はＡＲＭ社のＡＭＢＡ  ＡＨＢプロトコルに従って動作するものとする。
【００１９】
転送サイズは８、１６、３２ビットまでサポートし、バーストの種類は単独転送、不定長インクリメンタルバースト、４、８、１６ビートインクリメンタルバースト転送および４、８、１６ビートラップバースト転送をサポートする。
【００２０】
各マスタＩ／Ｆに接続されるライトデータバッファは、３２ビットの１６ビートラップ転送をサポートするため６４バイトの容量とする。各マスタＩ／Ｆに接続されるリードデータバッファは、３２ビットの１６ビートラップ転送をサポートするために６４バイトの容量とする。コマンドＦＩＦＯ１８は、マスタの数分（図示例では５個）のコマンドが蓄えることができる容量とする。コマンドＦＩＦＯ１８に格納するコマンドは、バーストの開始アドレス、書き込み転送か読み出し転送か、ラップバーストかインクリメンタルバーストか、転送サイズ、ビート回数、マスタＩＤから成るものとする。
【００２１】
次に上記構成の共有メモリアクセス装置の動作について説明する。上記構成において、マスタＩ／Ｆ２はデータバス１７のプロトコルに従ってマスタ１からの要求を判断しながら応答する。マスタ１が要求を出したとき、要求内容をコマンドとしてコマンドＦＩＦＯ１８に渡す。マスタ１が共有メモリ２０に対し書き込み転送を行う場合、マスタＩ／Ｆ２はライトデータバッファ３が空いている場合に転送を開始する。読み出し転送の場合は、共有メモリ２０からの読み出しデータをリードデータバッファ４から読み出す。ライトデータバッファ３はマスタＩ／Ｆ２がデータを書き込んだ後、共有メモリＩ／Ｆ１９がデータを読み出すまで書き込み不可とする。リードデータバッファ４はマスタＩ／Ｆ２からのリードデータを蓄える。リードデータバッファ４にデータを蓄えることで転送サイズが転送毎に異なっても、ウエイト要求にも、ラップ転送にも対応することができる。コマンドＦＩＦＯ１８は各マスタＩ／Ｆからのコマンドを順次保持する。また、蓄えられたコマンドを順次共有メモリＩ／Ｆ１９に渡していく。さらに、同時に発行された複数のコマンドを調停する調停装置（図３参照）を付加することが可能である。共有メモリＩ／Ｆ１９はマスタＩ／Ｆ２が出力するコマンドを共有メモリ２０のプロトコルに変換し、共有メモリ２０の転送単位毎にコマンドＦＩＦＯ１８からコマンドを取り出していく。他のマスタの系列もマスタ１の系列と同様である。
【００２２】
マスタ１が共有メモリ２０にインクリメンタルバーストでデータの書き込みを行う場合、データをマスタＩ／Ｆ２を介してライトデータバッファ３の空き領域に書き込んでいく。８バイト以上のデータ転送を行う場合、８バイトの書き込みを行う毎にマスタＩ／Ｆ２からコマンドをコマンドＦＩＦＯ１８に送る。
【００２３】
ライトデータバッファ３またはコマンドＦＩＦＯ１８に書き込める領域がない場合、マスタＩ／Ｆ２からマスタ１にウエイト信号を返して転送を中断する。即ち、インクリメンタルバーストで書き込みを行う場合、マスタ１が持つライトデータバッファ３に１６バイト以上の空き領域とコマンドＦＩＦＯ１８に空きがあれば他のマスタの転送状況に拘らず、マスタ１は共有メモリ２０に対するデータの転送を行うことができる。
【００２４】
共有メモリＩ／Ｆ１９は共有メモリ２０へのバースト毎にコマンドＦＩＦＯ１８から先入れ先出しでコマンドを取り出す。このコマンドにあるスタートアドレスからの８バースト転送が１個のコマンドで行う転送に相当する。８バースト転送を行う際、共有メモリＩ／Ｆ１９は該当するデータをライトデータバッファ３から取り出し、共有メモリ２０に転送する。しかし、共有メモリＩ／Ｆ１９は１個のコマンドが１６バイトに満たないとき、マスク信号を共有メモリ２０に出力することで所望のデータ量の転送を行う。
【００２５】
マスタ１が共有メモリ２０にラップバーストで書き込みを行う場合、マスタＩ／Ｆ２はライトデータバッファ３に転送サイズ分の空き領域がある場合に書き込み許可を行い、コマンドは転送サイズに拘らず１回の転送で１回のコマンドがコマンドＦＩＦＯ１８に送られる。
【００２６】
ライトデータバッファ３へのデータの書き込みはラップバースト転送のアドレスに対応した形でライトデータバッファ３に格納する。即ち、転送サイズ３２ビットでアドレス４４、４８、４Ｃ、４０のようにラップバースト転送を行う場合、データはライトデータバッファ３の４、８、Ｃ、０の各アドレスに書き込まれる。
【００２７】
共有メモリＩ／Ｆ１９はコマンドＦＩＦＯ１８から先入れ先出しでラップバースト転送のコマンドを受け取ったとき、バーストの開始アドレスをラップの境界にする。上記のような転送の場合、バーストの開始アドレスは４０となる。ライトデータバッファ３からの書き込みデータの読み出しは、ライトデータバッファ３のアドレス０から読み出していく。
【００２８】
マスタ１が共有メモリ２０からインクリメンタルバーストでデータの読み出しを行う場合、マスタＩ／Ｆ２は８バイト単位でコマンドをコマンドＦＩＦＯ１８に送る。
【００２９】
共有メモリＩ／Ｆ１９がコマンドＦＩＦＯ１８からリードのコマンドを受け取り、共有メモリ２０からデータを読み出したとき、読み出しデータをリードデータバッファ４に格納する。マスタＩ／Ｆ２はリードデータバッファ４にデータが格納された後、そのデータを読み出してマスタ１に転送する。
【００３０】
マスタ１が共有メモリ２０からラップバーストでデータの読み出しを行う場合、マスタＩ／Ｆ２はコマンドを転送サイズに拘らず１回の転送で１回のコマンドをコマンドＦＩＦＯ１８に送る。
【００３１】
共有メモリＩ／Ｆ１９はコマンドＦＩＦＯ１８からラップバースト転送のコマンドを受け取ったとき、バーストの開始アドレスをラップの境界にする。共有メモリＩ／Ｆ１９はインクリメンタルバースト転送と同様に共有メモリ２０から読み出したデータをリードデータバッファ４に書き込む。マスタＩ／Ｆ２はラップ転送のアドレスに対応したリードデータバッファ４のアドレスからデータを読み出してマスタ１に転送する。
【００３２】
図２はデータ転送動作を説明するシーケンス図である。マスタ１はステップ２０１で、共有メモリ２０へのデータの書き込み要求をマスタＩ／Ｆ２に出すと、マスタＩ／Ｆ２はステップ２０２で、ライトデータバッファ３から空き領域の確認を受け、ステップ２０３でマスタ１からライトデータバッファ３へデータの転送を開始し、その後、ステップ２０４で、ライトデータバッファ３へデータの転送を完了する。
【００３３】
マスタ１は、ステップ２０５で、共有メモリ２０からのデータの読み出し要求をマスタＩ／Ｆ２に出す。
【００３４】
マスタＩ／Ｆ２は、ステップ２０６で、書き込み転送のコマンドをコマンドＦＩＦＯ１８に発行し、これに対してコマンドＦＩＦＯ１８はステップ２０７で受付応答をマスタＩ／Ｆ２に行う。
【００３５】
共有メモリＩ／Ｆ１９は、ステップ２０８で、コマンドＦＩＦＯ１８から先入れ先出しでコマンドを取り出す。この場合、マスタＩ／Ｆ２から発行された上記書き込み転送のコマンドを取り出し、ステップ２１０で共有メモリ２０に対してデータの書き込みアクセスを開始し、ステップ２１１でライトデータバッファ３からデータが共有メモリ２０に転送される。
【００３６】
この間、マスタＩ／Ｆ２はステップ２０９で、コマンドＦＩＦＯ１８にデータの読み出し転送のコマンドを発行し、これに対してコマンドＦＩＦＯ１８はステップ２１２にて受付応答をマスタＩ／Ｆ２に行う。
【００３７】
その後、ステップ２１３で、ライトデータバッファ３からのデータの共有メモリ２０への書き込みが完了する。
【００３８】
共有メモリＩ／Ｆ１９は、ステップ２１４で、コマンドＦＩＦＯ１８から先入れ先出しでコマンドを取り出す。この場合、マスタＩ／Ｆ２から発行された上記読み出し転送のコマンドを取り出し、ステップ２１５で共有メモリ２０に対してデータの読み出しアクセスを開始し、ステップ２１６で共有メモリ２０からデータが読み出されてリードデータバッファ４に書き込まれる。
【００３９】
その後、ステップ２１７でリードデータバッファ４から上記読み出しデータがマスタ１に転送開始され、ステップ２１８で共有メモリ２０からリードデータバッファ４へのデータの読み出しアクセスが完了され、ステップ２２０でリードデータバッファ４からマスタ１への読み出しデータの転送が完了される。その間、共有メモリＩ／Ｆ１９はステップ２１９で、コマンドＦＩＦＯ１８から先入れ先出しで別のコマンドを取り出す。
【００４０】
マスタ５、９、１３の共有メモリ２０に対するデータ転送動作についてもマスタ１と同様である。
【００４１】
本実施の形態によれば、マスタ１、５、９、１３の共有メモリ２０に対するデータの書き込み／読み出しコマンド等を先入れ先出しでコマンドＦＩＦＯ１８に格納し、格納したコマンドを共有メモリＩ／Ｆ１９により先入れ先出しで読み出して、共有メモリ２０に対するデータの書き込み、読み出しを実行するため、マスタ１、５、９、１３のデータの転送が非同期であってもそれらのコマンドが衝突することなく順番に共有メモリＩ／Ｆ１９で読み出して実行することができる。このように、データ転送制御回路としてコマンドＦＩＦＯ１８を用いることで、データ転送制御回路の回路構成を簡単にして回路規模を小さくすることができる。
【００４２】
また、複数個の書き込み要求、読み出し要求などのアクセス信号が非同期でアクセスする場合でも、コマンドは発行順でコマンドＦＩＦＯ１８に格納され、発行順で取り出されて実行されるため、共有メモリ２０のアクセス手段を変更することなくデータ転送を円滑に行うことができる。
【００４３】
図３は、本発明の第２の実施の形態に係る共有メモリデータ転送装置の構成を示すブロック図である。図１と同一部分には同一符号を付して説明する。図３の共有メモリデータ転送装置は、複数のマスタＩ／Ｆ２、６、１０、１４からのコマンドが調停装置２１を介してコマンドＦＩＦＯ１８に格納される。
【００４４】
調停装置２１は、読み出し転送のコマンドを受け取ったとき、コマンドＦＩＦＯに格納されている書き込み転送のコマンドのアドレスを見て、読み出そうとしているアドレスが他のマスタが書き込み転送でアクセスしていないアドレスの場合、書き込み転送のコマンドの前に割り込ませて順序を換えた後、コマンドＦＩＦＯ１８に格納する。従って、共有メモリＩ／Ｆ１９は読み出し転送のコマンドを書き込み転送のコマンドよりも先に取り出して実行するため、共有メモリ２０からのデータの読み出し応答を早くすることができる。
【００４５】
【発明の効果】
以上説明したように、本発明によれば、複数のマスタが一つの共有メモリにアクセスしてデータ転送を行うに際し、各マスタのコマンドを先入れ先出しでＦＩＦＯに格納した後、ＦＩＦＯからコマンドを先入れ先出しで取り出して共有メモリに対するデータ転送を実行することで、複数のバスマスタと共有メモリ間のデータ転送を回路規模が小さく簡単な制御回路（ＦＩＦＯ）により行うことができる。また、複数個の書き込み要求、読み出し要求などのアクセス信号が非同期でアクセスする場合でも、コマンドは発行順で制御回路（ＦＩＦＯ）に格納され、発行順で取り出されて実行されるため、共有メモリのアクセス手段を変更することなくデータ転送を円滑に行うことができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る共有メモリデータ転送装置の構成を示すブロック図。
【図２】図１に示した共有メモリデータ転送装置のデータ転送動作を説明するシーケンス図。
【図３】本発明の第２の実施の形態に係る共有メモリデータ転送装置の構成を示すブロック図。
【符号の説明】
１、５、９、１３  マスタ（バスマスタ）
２、６、１０、１４  マスタインターフェース（マスタＩ／Ｆ）
３、７、１１、１５  ライトデータバッファ
４、８、１２、１６  リードデータバッファ
１７  データバス
１８  コマンドＦＩＦＯ
１９  共有メモリインターフェース（共有メモリＩ／Ｆ）
２０  共有メモリ
２１  調停装置
【図１】
2004171209.tif 000003
【図２】
2004171209.tif 000004
【図３】
2004171209.tif 000005