(57)【要約】【課題】従来よりも少ないライトサイクル数で書き込みバッファからメモリへのバースト転送を行う。【解決手段】バスマスタ１１は、アドレス、バイトマスク、ライトデータを書き込みバッファ１２に書き込む。書き込みバッファ制御ユニット１３は、書き込みバッファ１２から出力されるバイトマスク出力の状態をもとに、どのデータを共有メモリ２０に転送するかを判断し、レジスタ更新制御信号を制御する。これにより、共有メモリ２０へ転送されるデータがレジスタ１４にセットされる。書き込みバッファ制御ユニット１３は、共有メモリ２０へのデータ転送が始まると、セレクタ制御信号を制御してレジスタ１４に格納されているバイトマスクが設定されないデータをセレクタ１５により選択させ、それを共有バス４０を介して共有メモリ２０へバースト転送する。【選択図】図１
2009217310.tif 000002
【特許請求の範囲】
【請求項１】
共有バスを介して共有メモリにデータをバースト転送して書き込むメモリアクセス方法において、
バスマスタからデータ、バイトマスク、及びアドレスを書き込みバッファに一旦書き込む第１のステップと、
前記書き込みバッファに書き込まれたデータ及びアドレスを前記共有メモリにバースト転送する際に、転送するデータが、そのデータに対応する前記バイトマスクが全て設定されているデータであるか否かを判定する第２のステップと、
前記第２のステップにより、前記バイトマスクが全て設定されているデータではないと判定されたデータを選択して前記アドレスと共に前記共有バスを介して前記共有メモリへバースト転送する第３のステップと
を含むことを特徴とするメモリアクセス方法。
【請求項２】
共有バスを介して共有メモリにデータをバースト転送して書き込むメモリアクセス装置において、
データ、バイトマスク、及びアドレスを出力するバスマスタと、
前記バスマスタから出力された前記データ、バイトマスク、及びアドレスを一旦書き込む書き込みバッファと、
前記書き込みバッファに書き込まれたデータ及びアドレスを前記共有メモリにバースト転送する際に、転送するデータが、そのデータに対応する前記バイトマスクが全て設定されているデータであるか否かを判定する書き込みバッファ制御ユニットと、
前記書き込みバッファ制御ユニットにより、前記バイトマスクが全て設定されているデータではないと判定されたデータを選択して前記アドレスと共に前記共有バスを介して前記共有メモリへバースト転送する選択手段と
を有することを特徴とするメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリアクセス方法及びメモリアクセス装置に係り、特にバイトマスク機能を用いたメモリの書き込みを可能にするメモリアクセス方法及びメモリアクセス装置に関する。
【背景技術】
【０００２】
従来、中央処理装置（ＣＰＵ:Central Processing Unit）がメモリにデータを書き込むメモリアクセス方法では、ＣＰＵとメモリとの間に書き込みバッファを設け、ＣＰＵはその書き込みバッファに、ライトアドレス、ライトデータ、バイトマスクデータを一旦書き込み、その後、書き込みバッファ制御ユニットが、メモリへの書き込み動作を行っている。
【０００３】
また、書き込みバッファ制御ユニットが、ＣＰＵが複数回に渡って書き込みバッファに書き込んだデータをひとまとめにしてメモリにバースト転送するメモリアクセス方法も従来知られている（例えば、特許文献１参照）。
【０００４】
この特許文献１記載のメモリアクセス方法による、共有メモリアーキテクチャ（ＵＭＡ：Unified Memory Architecture）のシステムにおける書き込みバッファから共有メモリへのバースト転送による書き込みアクセス動作について図７と共に説明する。
【０００５】
共有メモリがデータバス幅３２ビットのＳＤＲ ＳＤＲＡＭ(Single Data Rate Synchronous Dynamic Random Access Memory)であるとする。図７（Ａ）は、ＳＤＲＡＭの動作クロックＣＬＫ、同図（Ｂ）は、ＳＤＲＡＭを制御するコマンド信号を示す。このコマンド信号は、ＣＳ（Chip Select）、ＲＡＳ（Row Address Strobe）、ＣＡＳ（Cas Address Strobe）、ＷＥ（Write Enable）からなる。
【０００６】
また、図７（Ｂ）において、コマンドバス上の「ＡＣＴ」はＡＣＴＩＶＥコマンド、「ＷＲＩＴＥａ」、「ＷＲＩＴＥｂ」は、それぞれＷＲＩＴＥコマンドを表す。また、図７（Ｃ）は、バイトマスクのデータＤＱＭを示し、同図（Ｄ）はデータバスのデータＤＱを示す。これらのコマンド信号、ＤＱＭ、ＤＱの各値は、クロックＣＬＫの立ち上がりでＳＤＲＡＭに取り込まれる。
【０００７】
共有メモリであるＳＤＲＡＭへのバースト転送モードを、例えばＢＬ（Burst Length）＝４に設定する。ＣＰＵは、まず、図７（Ｂ）に示すように、ＡＣＴコマンドを発行し、３サイクル後にＷＲＩＴＥａコマンドを発行して４サイクル期間ＤＱＭ、ＤＱを制御する。続いて、ＷＲＩＴＥｂコマンドを発行し、４サイクル期間ＤＱＭ、ＤＱを制御する。通常のＳＤＲＡＭアクセスではＰＲＥ（Precharge）コマンドが続くが、ここでは割愛する。また、ＷＲＩＴＥａとＷＲＩＴＥｂでアクセスする行アドレス（ロウアドレス）は、同一の場合である。この動作では、ＡＣＴからＷＲＩＴＥ動作完了までに１１サイクル必要である。
【０００８】
図８は、この従来のメモリアクセス方法によるシーケンス図を示す。このシーケンス図は、共有メモリ５０が共有バスを介してＣＰＵ内のバスマスタ５１及び周辺バスマスタ５２に接続されたシステムである。バスマスタ５１が図示しない書き込みバッファからデータを読み出して、共有バスを介して共有メモリ５０にバースト転送して書き込む（図８に５３で示す）。
【０００９】
その後、周辺バスマスタ５２が、書き込みバッファからデータを読み出して、共有バスを介して共有メモリ５０にバースト転送して書き込む（図８に５４で示す）。この例では、バスマスタ５１がバースト転送してから、転送待ち時間Ｔ１経過してから周辺バスマスタ５２がバースト転送を行う。
【００１０】
このようにして、ＣＰＵがメモリ書き込み完了を待つ時間を短縮し、メモリ転送効率を高める効果を得ている。特に、メモリの動作クロックに比べてＣＰＵの動作クロックが高速であるほど、得られる効果は大きい。
【００１１】
【特許文献１】特開２００１−１４７８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、特に、バスマスタの処理系データ幅に比べて共有バスのバス幅が広く、バスマスタであるＣＰＵが単一、もしくは短いワード数のメモリ書き込み動作を行う場合には、書き換えないデータを保護するためにバイトマスクを多用することになる。これにより、書き込みバッファからメモリへバースト転送する際に、あるライトサイクルにおいて書き込むデータ全てに対してバイトマスクがセットされている、という状況が発生する。このようなライトサイクルは、メモリ内部のデータに一切の変更を加えないことから、本来不要なライトサイクルであり、メモリアクセス効率の面で、好ましくない。
【００１３】
例えば、図７と共に説明した従来のメモリアクセス方法では、図７（Ｃ）に示すように、ＤＱＭ［３：０］が０ｘｆとなる期間が合計６サイクル存在しており、ライトサイクルであるにもかかわらず、共有メモリ（ＳＤＲＡＭ）のデータ書き換えが発生しないことから、無駄なライトサイクルといえる。
【００１４】
本発明は以上の点に鑑みなされたもので、従来よりも少ないライトサイクル数で書き込みバッファからメモリへのバースト転送を行い得るメモリアクセス方法及びメモリアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記の目的を達成するため、第１の発明は、共有バスを介して共有メモリにデータをバースト転送して書き込むメモリアクセス方法において、バスマスタからデータ、バイトマスク、及びアドレスを書き込みバッファに一旦書き込む第１のステップと、書き込みバッファに書き込まれたデータ及びアドレスを共有メモリにバースト転送する際に、転送するデータが、そのデータに対応するバイトマスクが全て設定されているデータであるか否かを判定する第２のステップと、第２のステップにより、バイトマスクが全て設定されているデータではないと判定されたデータを選択してアドレスと共に共有バスを介して共有メモリへバースト転送する第３のステップとを含むことを特徴とする。
【００１６】
また、上記の目的を達成するため、第２の発明は、共有バスを介して共有メモリにデータをバースト転送して書き込むメモリアクセス装置において、データ、バイトマスク、及びアドレスを出力するバスマスタと、バスマスタから出力されたデータ、バイトマスク、及びアドレスを一旦書き込む書き込みバッファと、書き込みバッファに書き込まれたデータ及びアドレスを共有メモリにバースト転送する際に、転送するデータが、そのデータに対応するバイトマスクが全て設定されているデータであるか否かを判定する書き込みバッファ制御ユニットと、書き込みバッファ制御ユニットにより、バイトマスクが全て設定されているデータではないと判定されたデータを選択してアドレスと共に共有バスを介して共有メモリへバースト転送する選択手段とを有することを特徴とする。
【００１７】
第１及び第２の発明では、バイトマスクが全て設定されているデータは転送せず、バイトマスクが全て設定されているデータではないと判定されたデータを選択して共有メモリへバースト転送するため、共有メモリの内部のデータに一切変更を加えないバイトマスクが全て設定されているデータのライトサイクルを不要にできる。
【発明の効果】
【００１８】
本発明によれば、バスマスタがバイトマスクを多用するメモリ書き込みにおいて従来よりも少ないライトサイクル数で、書き込みバッファからメモリへのバースト転送を行うことができ、これによりシステム全体のメモリアクセス効率を向上することもできる。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明の実施の形態について図面と共に詳細に説明する。
【００２０】
図１は本発明になるメモリアクセス装置の一実施の形態のブロック図を示す。このメモリアクセス装置１０は、共有メモリ２０及び周辺バスマスタ３０に共有バス４０を介して接続されている。メモリアクセス装置１０は、ＣＰＵによってバスマスタ１１、書き込みバッファ１２、書き込みバッファ制御ユニット１３、複数のレジスタ１４、及びセレクタ１５から構成されている。すなわち、バスマスタ１１と共有バス４０との間に、書き込みバッファ１２、書き込みバッファ制御ユニット１３を設け、また、書き込みバッファ１２と共有メモリ２０との間に複数のレジスタ１４とセレクタ１５とが配置されている。
【００２１】
バスマスタ１１は、アドレス、データ、バイトマスクの組単位でそれらを書き込みバッファ１２に供給する。書き込みバッファ制御ユニット１３は、バスマスタ１１からデータ書き込み要求信号を受け、データ書き込み承認信号を出力する。また、書き込みバッファ制御ユニット１３は、バッファ制御信号を書き込みバッファ１２に供給する。書き込みバッファ１２は、バイトマスクを書き込みバッファ制御ユニット１３に供給し、複数のレジスタ１４にそれぞれアドレスとデータを出力する。
【００２２】
複数のレジスタ１４は、共有バス４０と同じビット幅のレジスタである。セレクタ１５は、書き込みバッファ制御ユニット１３からのセレクタ制御信号に基づき、これら複数のレジスタ１４のうちの１つを共有バス４０に接続するためのものである。また、複数のレジスタ１４は、書き込みバッファ制御ユニット１３からのレジスタ更新制御信号によって更新制御される。
【００２３】
共有メモリ２０は、データの実体を格納するメモリ部としてのＳＤＲＡＭ２２と、ＳＤＲＡＭ２２に対してデータ書き込み制御を行う制御部である共有メモリコントローラ（ＳＤＲＡＭコントローラ）２１とからなる。共有メモリコントローラ２１は、共有バス４０を通じて書き込みバッファ１２から出力されるデータを、ＳＤＲＡＭ２２に書き込む制御を行う。
【００２４】
ここで、共有メモリコントローラ２１からＳＤＲＡＭ２２へは制御信号(Command)、アドレス信号(Address)、バイトマスク(DQM)が出力される。また、データ(DQ)が共有メモリコントローラ２１とＳＤＲＡＭ２２との間で転送される。
【００２５】
また、バスマスタ１１、書き込みバッファ１２、書き込みバッファ制御ユニット１３、複数のレジスタ１４に用いるクロック（ＣＬＫ）と、共有メモリコントローラ２１、ＳＤＲＡＭ２２に入力するクロック（ＣＬＫ）とは共通のクロックであり、それらは互いに同期して動作する。
【００２６】
この実施の形態では、書き込みバッファ１２から共有メモリ２０へのデータ転送は、バースト転送によって行う。このとき、後述するように、バイトマスクが設定されているデータについては、共有メモリ２０にデータ転送しないようにし、書き込みバッファ１２から共有メモリ２０に転送する処理において、複数のレジスタ１４及びセレクタ１５によって、転送データを選択して転送データが途切れないようにする。
【００２７】
次に、本実施の形態の動作について、図２のフローチャートを併せ参照して更に詳細に説明する。まず、バスマスタ１１は、共有メモリ２０へライトアクセスするときに、一旦、書き込みバッファ制御ユニット１３と通信を行い、書き込みバッファにアドレス、バイトマスク、ライトデータを書き込む。
【００２８】
すなわち、まず、バスマスタ１１は、書き込みバッファ制御ユニット１３に対してデータ書き込み要求信号を出力する。これにより、書き込みバッファ制御ユニット１３は、書き込みバッファ１２に書き込み可能か否かを判断する（ステップＳ１）。書き込みバッファ制御ユニット１３は、書き込みバッファ１２に書き込み可能であると判断すると、バスマスタ１１に対してデータ書き込み承認信号を出力する。
【００２９】
バスマスタ１１は、このデータ書き込み承認信号を入力として受けると、１ワード分のアドレス、バイトマスク、ライトデータを書き込みバッファ１２に書き込んだ後（ステップＳ２）、全データを書き込んだかを判定し（ステップＳ３）、全データを書き込むまでステップＳ２とＳ３の処理を繰り返す。
【００３０】
続いて、全データの書き込み完了後、書き込みバッファ制御ユニット１３は、バスマスタ１１が複数回データの書き込み処理を行うのを待つかどうかを判定し（ステップＳ４）、複数回の書き込み処理を行うのを待つときはステップＳ１の処理に戻り、待たないときは書き込みバッファ１２から共有メモリ２０へのデータ転送が可能かどうかを判断する（ステップＳ５）。
【００３１】
書き込みバッファ制御ユニット１３は、ステップＳ５で書き込みバッファ１２から共有メモリ２０へのデータ転送が可能と判断すると、まず、バッファ制御信号を制御し、書き込みバッファ１２から出力されるバイトマスク出力とデータ出力とを更新した後、更新したバイトマスク出力の状態をもとに、どのデータを共有メモリ２０に転送するかを判断し、レジスタ更新制御信号を制御する。これにより、共有メモリ２０へ転送されるデータがレジスタ１４にセットされる。そして、書き込みバッファ制御ユニット１３は、共有メモリ２０へのデータ転送が始まると、セレクタ制御信号を制御してレジスタ１４に格納されているバイトマスクが設定されないデータをセレクタ１５により１ワード選択させ、それを共有バス４０を介して共有メモリ２０へ転送する（ステップＳ６）。
【００３２】
続いて、書き込みバッファ制御ユニット１３は、書き込みバッファ１２に用意した全データの転送が完了したかを判定し（ステップＳ７）、全データの転送が完了するまでステップＳ６とＳ７の処理を繰り返す。このとき、書き込みバッファ制御ユニット１３は、レジスタ１４に格納されたデータの残量を確認し、バースト転送が途切れる前に、バッファ制御信号とレジスタ更新制御信号とを制御し、レジスタ１４のデータ更新及びバイトマスク出力の取得を行う。
【００３３】
このようにして、書き込みバッファ１２の中の用意した全データの転送が完了すると、データ転送処理を終了し、バスマスタ１１から書き込みバッファ１２へのデータ書込み制御処理に移る。
【００３４】
図３は、書き込みバッファ制御ユニット１３が、図２のステップＳ４でバスマスタ１１が２回の書き込み動作を終えるのを待つように判定した場合の、シーケンス図を示す。図３に示すように、バスマスタ１１が１回目のメモリ書き込みアクセスと、２回目のメモリ書き込みアクセスとを書き込みバッファ制御ユニット１３に順次に行うのを待ってから（ステップＳ１１、Ｓ１２）、書き込みバッファ制御ユニット１３は、書き込みバッファ１２に書き込まれた、アドレス、データ、バイトマスクのうちのアドレスとデータをまとめて共有メモリ２０へ転送する（ステップＳ１３;図２のステップＳ５〜Ｓ７）。
【００３５】
次に、書き込みバッファ１２のデータ格納構成を説明する。書き込みバッファ１２に格納する内容は、アドレス、バイトマスク、データを１セットとし、１ワード以上のサイズとする（アドレスについては、本発明の対象外である）。
【００３６】
図１に示す本実施の形態の構成のうち、共有バス４０のデータバス幅を１２８ビット、バイトマスクを１６ビットとすると、バイトマスク１ビットにつき８ビット（＝１バイト）のデータについて、書き込みバッファ制御ユニット１３は、共有メモリ２０への書き込みを行うか行わないかを制御する。ここで、バイトマスクの値が「１」のとき「データを書き込まない」、値が「０」のとき「データを書き込む」とする。なお、バイトマスクの値が「１」であるということは、そのバイトマスクに対応するデータにバイトマスクが設定されている（全てセットされている）ということを意味する。また、バイトマスクの値が「０」であるということは、そのバイトマスクに対応するデータにバイトマスクが設定されていない（全てはセットされていない）ということを意味する。
【００３７】
バスマスタ１１が３２ビット処理系のＣＰＵの場合、単一ワードのライトアクセスを２回行ったとき、書き込みバッファ１２の内容は、図４のようになる。バスマスタ１１の１回目のメモリ書き込みアクセスでは、書き込みバッファ１２の図４中の書き込まれたデータＤａ０、Ｄａ１、Ｄａ２、Ｄａ３にそれぞれ対応するバイトマスクのうち、Ｄａ０に対応するバイトマスクのみ値が「０」で、Ｄａ０〜Ｄａ３に対応するバイトマスクの値は「１」である。従って、バスマスタ１１の１回目のメモリ書き込みアクセスでは、Ｄａ０のデータを書き込もうとしている。一方、データＤａ１〜Ｄａ３は、データバスに出力されるが、値が「１」であるバイトマスクによって共有メモリ２０には書き込まれない。
【００３８】
また、バスマスタ１１の２回目のライトアクセスでは、書き込みバッファ１２の図４中の書き込まれたデータＤｂ０、Ｄｂ１、Ｄｂ２、Ｄｂ３にそれぞれ対応するバイトマスクのうち、Ｄｂ１に対応するバイトマスクのみ値が「０」で、Ｄｂ０、Ｄｂ２、Ｄｂ３に対応するバイトマスクの値は「１」である。従って、バスマスタ１１の２回目のメモリ書き込みアクセスでは、図４中のＤｂ１のデータを書き込もうとする。一方、データＤｂ０およびＤｂ２、Ｄｂ３はバイトマスクによって共有メモリ２０に書き込まれない。
【００３９】
次に、本実施の形態のメモリアクセス方法による、共有メモリ２０内のＳＤＲＡＭ２２へのライトアクセス動作について、図５のタイミングチャートと共に説明する。本実施の形態のメモリアクセス方法では、ＢＬ（Burst Length）＝１でＳＤＲＡＭ２２を制御する。
【００４０】
共有メモリコントローラ２１は、まず図５（Ｂ）に示すように制御信号(Command)としてＡＣＴコマンドをＳＤＲＡＭ２２に発行する。続いて、図５（Ａ）に示すクロック（ＣＬＫ）の３サイクル後に同図（Ｂ）に示すようにＷＲＩＴＥａコマンドを発行し、データＤＱには同図（Ｄ）に示すようにＤａ０を出力し、バイトマスクＤＱＭには同図（Ｃ）に示すように０ｘ０を出力する。
【００４１】
そして、共有メモリコントローラ２１は、１サイクル後には、従来方法では、ＤＱＭを０ｘＦとしていたＤａ１〜Ｄａ３についてはＷＲＩＴＥコマンドを発行せず、図５（Ｂ）に示すようにＷＲＩＴＥｂコマンドを発行し、ＤＱにはＤｂ１、ＤＱＭには０ｘ０を出力する。
【００４２】
このように、図７に示したように従来方法でＤＱにＤｂ０やＤｂ２〜Ｄｂ３を出力していたＷＲＩＴＥコマンドは発行しないので、図８に示したように従来方法で１１サイクルかかっていた書き込み動作が、本実施の形態では、５サイクルで完了することができる。
【００４３】
このように、本実施の形態では、書き込みバッファ制御ユニット１３に、書き込みバッファ１２中のバイトマスクを用いてライトサイクル発行を制御する機能を設けることにより、書き込みバッファ１２から共有メモリ２０へのバースト転送動作において無駄なライトサイクルを防止することができる。
【００４４】
ところで、あるバスマスタが共有メモリ２０をメモリアクセスしている途中に、その他のバスマスタが共有メモリ２０をメモリアクセスする準備が整った場合、その他のバスマスタは、現在行われているメモリアクセスが完了するまで、メモリアクセスが待たされる。
【００４５】
すなわち、本実施の形態でも、図６のシーケンス図に示すように、バスマスタ１１から共有メモリ２０へデータのバースト転送が完了した後（ステップＳ２１）、周辺バスマスタ３０が共有メモリ２０へデータのバースト転送を開始する（ステップＳ２２）。しかし、本実施の形態では、バスマスタ１１の共有メモリ２０へのアクセスが最適化され、短縮された結果、周辺バスマスタ３０の転送待ち時間が、図８に示した従来方法のＴ１から図６に示すＴ２に短縮される。
【００４６】
従って、本実施の形態によれば、バスマスタ１１の共有メモリ２０のメモリアクセス中に、周辺バスマスタ３０がデータ転送する準備が整った場合には、周辺バスマスタ３０は、従来方法に比べて早くデータ転送を開始することができるため、本実施の形態は、システム全体のメモリアクセス効率についても、向上させることができるといえる。
【図面の簡単な説明】
【００４７】
【図１】本発明のメモリアクセス装置の一実施の形態のブロック図である。
【図２】図１に示す装置の動作説明用フローチャートである。
【図３】本発明装置におけるバスマスタから共有メモリへの書き込み動作の一例を示すシーケンス図である。
【図４】本発明装置における書き込みバッファに格納されたデータの一例の構成図である。
【図５】本発明方法によって書き込みバッファのデータが共有メモリに書き込まれるときの一例の動作説明用タイミングチャートである。
【図６】本発明による周辺バスマスタも含めたメモリアクセス効率向上を表すシーケンス図である。
【図７】従来方法により書き込みバッファのデータが共有メモリに書き込まれるときの一例の動作説明用タイミングチャートである。
【図８】従来方法による周辺バスマスタも含めたメモリアクセスを表すシーケンス図である。
【符号の説明】
【００４８】
１０  メモリアクセス装置
１１  バスマスタ
１２  書き込みバッファ
１３  書き込みバッファ制御ユニット
１４  レジスタ
１５  セレクタ
２０  共有メモリ
２１  共有メモリコントローラ（ＳＤＲＡＭコントローラ）
２２  ＳＤＲＡＭ
３０  周辺バスマスタ
４０  共有バス
【図１】
2009217310.tif 000003
【図２】
2009217310.tif 000004
【図３】
2009217310.tif 000005
【図４】
2009217310.tif 000006
【図５】
2009217310.tif 000007
【図６】
2009217310.tif 000008
【図７】
2009217310.tif 000009
【図８】
2009217310.tif 000010