(57)【要約】      （修正有）【課題】ＭＷＲ（Ｍａｓｋｅｄ  Ｗｒｉｔｅ）コマンドを発行することで発生する時間ペナルティによる性能低下を抑制するメモリコントローラ及びその制御方法を提供する。【解決手段】ＭＷＲコマンドを発行するメモリコントローラ１００において、ライトデータからバイトイネーブル信号を用いて無効バイトの有無を検出し、無効バイトのメモリへのライトが許容されるかを判定し、無効バイトが有ることが検出され、無効バイトのライトが許容されると判定された場合に、ライトデータを、無効バイトを含めてライトするＷＲコマンドを発行し、無効バイトが有ることが検出され、無効バイトのライトが許容されないと判定された場合に、ＭＷＲコマンドを発行する。【選択図】図１
2018180656.tif 000002
【特許請求の範囲】
【請求項１】
バースト単位でのリードモディファイライトを行うメモリへのライトアクセスに対し、ライトアクセスを行うアドレスに存在するデータを含むようにバースト単位でリードしたリードデータの一部のバイトを、ライトアクセスする対象のライトデータの有効バイトと無効バイトとを示すバイトイネーブル信号を用いて更新して更新後のリードデータをライトする第一のライトコマンドを発行するメモリコントローラであって、
前記ライトデータから前記バイトイネーブル信号を用いて無効バイトの有無を検出する検出手段と、
無効バイトの前記メモリへのライトが許容されるかを判定する判定手段と、
前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されると判定された場合に、前記ライトデータを、無効バイトを含めてライトする第二のライトコマンドを発行し、前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されないと判定された場合に、前記第一のライトコマンドを発行する発行手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記判定手段では、前記ライトアクセスの発行元を示すマスタ識別子に基づいて判定を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記判定手段では、前記ライトアクセスのアドレスに基づいて判定を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記判定手段では、外部から入力される無効バイトライト許容信号に基づいて判定を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項５】
前記判定手段では、レジスタの設定値に基づいて判定を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項６】
バースト単位でのリードモディファイライトを行うメモリへのライトアクセスに対し、ライトアクセスを行うアドレスに存在するデータを含むようにバースト単位でリードしたリードデータの一部のバイトを、ライトアクセスする対象のライトデータの有効バイトと無効バイトとを示すバイトイネーブル信号を用いて更新して更新後のリードデータをライトする第一のライトコマンドを発行するメモリコントローラの制御方法であって、
前記ライトデータから前記バイトイネーブル信号を用いて無効バイトの有無を検出する検出工程と、
無効バイトの前記メモリへのライトが許容されるかを判定する判定工程と、
前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されると判定された場合に、前記ライトデータを、無効バイトを含めてライトする第二のライトコマンドを発行し、前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されないと判定された場合に、前記第一のライトコマンドを発行する発行工程と、
を備えることを特徴とするメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに関し、特に、メモリへのバーストライト内に無効バイトが含まれない場合と、無効バイトが含まれる場合とで異なるライトコマンドを発行するメモリコントローラに関する。
【背景技術】
【０００２】
近年に策定された規格であるＬＰＤＤＲ４では、Ｍａｓｋｅｄ  Ｗｒｉｔｅ（ＭＷＲ）コマンドが導入され、メモリ（以降、「ＤＲＡＭ」とも記載する。）がこのコマンドを受信するとメモリ内部でリードモディファイライトを実行する。メモリは一度データを読み出し、データマスク信号に基づいて読み出したデータを変更し、全データを書き戻す。これにより、従来はバイト毎に制御していたデータマスク制御がバーストライト単位でのデータマスク制御となり実装が単純化されるため、小型化と低電力化を実現することが可能となる。データマスク制御とは、データマスク信号が対応するデータが無効であることを示す場合に、メモリに格納されているデータを上書きしないための制御である。ＬＰＤＤＲ４のメモリが、従来のＤＲＡＭと同じＷｒｉｔｅ（ＷＲ）コマンドを受信すると、メモリは全データを有効なものとして書き込みを実行するため、内部でリードモディファイライトは実行されない。（非特許文献１参照）
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＪＥＤＥＣ  ＳＴＡＮＤＡＲＤ  Ｎｏ．２０９−４Ａ仕様規格書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＭＷＲコマンドを受信したメモリが内部でリードモディファイライトを実行するため、メモリコントローラは、先行するＷＲ／ＭＷＲコマンドを発行後に同じバンクにＭＷＲコマンドを発行する場合は規定間隔（以下、「ｔＣＣＤＭＷ」とも記載する。）を空けなければいけない。ＷＲ／ＭＷＲコマンドとＭＷＲコマンドとの間の規定間隔（ｔＣＣＤＭＷ）は、メモリへのバーストライトのバースト長が１６の場合は３２ＤＲＡＭクロックサイクル、バースト長が３２の場合は６４ＤＲＡＭクロックサイクルである。
【０００５】
一方、ＷＲ／ＭＷＲコマンドを発行後にＷＲコマンドを発行する場合の規定間隔（以下、「ｔＣＣＤ」とも記載する。）は、それより短い。ＷＲ／ＭＷＲコマンドとＷＲコマンドとの間の規定間隔（ｔＣＣＤ）は、メモリへのバーストライトのバースト長が１６の場合は８ＤＲＡＭクロックサイクル、バースト長が３２の場合は１６ＤＲＡＭクロックサイクルである。そのため、先行するＷＲ／ＭＷＲコマンドを発行後に同じバンクにＭＷＲコマンドを発行すると、従来（後のコマンドがＷＲコマンド）の４倍の時間ペナルティがかかり、性能低下が発生する。
【０００６】
本発明は、上記の課題に鑑みてなされたものである。すなわち、ＭＷＲコマンドを発行することで発生する時間ペナルティによる性能低下を抑制するメモリコントローラを提供することを目的とする。また、その制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るメモリコントローラは以下の構成を備える。即ち、バースト単位でのリードモディファイライトを行うメモリへのライトアクセスに対し、ライトアクセスを行うアドレスに存在するデータを含むようにバースト単位でリードしたリードデータの一部のバイトを、ライトアクセスする対象のライトデータの有効バイトと無効バイトとを示すバイトイネーブル信号を用いて更新して更新後のリードデータをライトする第一のライトコマンドを発行するメモリコントローラであって、前記ライトデータから前記バイトイネーブル信号を用いて無効バイトの有無を検出する検出手段と、無効バイトの前記メモリへのライトが許容されるかを判定する判定手段と、前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されると判定された場合に、前記ライトデータを、無効バイトを含めてライトする第二のライトコマンドを発行し、前記検出手段で無効バイトが有ることが検出され、前記判定手段で無効バイトのライトが許容されないと判定された場合に、前記第一のライトコマンドを発行する発行手段。
【発明の効果】
【０００８】
本発明によれば、無効バイトのライトが許容される場合に、メモリのバーストアクセス内に無効バイトが含まれてもＭＷＲコマンドではなく、ＷＲコマンドを発行することでＭＷＲコマンドを発行した場合の時間ペナルティによる性能低下を抑制することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】実施形態におけるメモリコントローラの構成図
【図２】第一の実施形態における無効バイト情報マスク部の構成図
【図３】実施形態における無効バイトのライトが許容されない場合の挙動を示す波形図
【図４】実施形態における無効バイトのライトが許容される場合の挙動を示す波形図
【図５】第二の実施形態における無効バイト情報マスク部の構成図
【図６】第三の実施形態における無効バイト情報マスク部の構成図
【発明を実施するための形態】
【００１０】
［実施形態１］
図１は本実施形態におけるメモリコントローラ１００の構成図である。メモリコントローラ１００は、メモリデバイス１１０とバスマスタ１２０に接続される。バスマスタ１２０はアドレス情報と、ライトデータやバイトイネーブルを含むメモリアクセス要求をメモリコントローラ１００に送信する。メモリコントローラ１００は、バスマスタ１２０から受信したメモリアクセス要求を基にＤＲＡＭコマンドを生成し、メモリデバイス１１０に送信する。メモリデバイス１１０は、メモリのバーストアクセスの全データをライトする場合と、メモリのバーストアクセスのバイト毎にメモリへライトする場合とで異なるライトコマンドを使用する規格に準拠する。
【００１１】
ＤＲＡＭコマンド生成部１０１は、バスマスタ１２０から受信したメモリアクセス要求からＤＲＡＭコマンドを生成する。
【００１２】
無効バイト検出部１０２は、バスマスタ１２０から受信したバイトイネーブルのうち、次に発行するライトバーストのライトデータに対応するビットに基づいて、次に発行するライトバーストが無効バイトを含むか無効バイトの有無を判定する。無効バイトを含む場合は無効バイト情報信号をアサートする。無効バイトを含んでいることが分かれば、無効バイトとは、ライトデータに含まれているが、メモリに既に格納されているデータを通常は上書きしないバイトのことである。本実施形態で例として挙げているＬＰＤＤＲ４のＤＲＡＭでは、無効バイトを含む場合には、通常はＭＷＲコマンドを生成する。ＭＷＲコマンドは、バースト単位でのリードモディファイライトを行うメモリへのライトアクセスに用いる。ＭＷＲコマンドは、ライトアクセスを行うアドレスに存在するデータを含むようにバースト単位でリードしたリードデータの一部のバイトを、ライトアクセスする対象のライトデータの有効バイトと無効バイトとを示すバイトイネーブル信号を用いて更新する。そして、更新後のリードデータをライトする。
【００１３】
無効バイト情報マスク部１０３は、バスマスタ１２０から受信したメモリアクセス要求のアドレス情報の一つであるマスタ識別子に基づいて、次に発行するライトバーストは無効バイトのライトが許容されるか判定する。例えば、あるメモリ領域に最初にデータをライトすることが決まっているなど、システムとして無効バイトのライトが許容されているバスマスタが存在する。無効バイトのライトが許容されるバスマスタからのメモリアクセス要求であることを、マスタ識別子が示す場合、ＤＲＡＭコマンド生成部１０１に無効バイト情報信号を無視するように無効バイト情報マスク信号をアサートする。
【００１４】
ＤＲＡＭコマンド生成部１０１は、バスマスタ１２０から受信したメモリアクセス要求がメモリへのライトであり、無効バイト情報マスク信号がデアサートされている場合、無効バイト情報信号に基づいてＷＲコマンドとＭＷＲコマンドのいずれかを生成する。ＤＲＡＭコマンド生成部１０１は、無効バイト情報信号がデアサートされている場合はＷＲコマンドを、アサートされている場合はＭＷＲコマンドを生成する。また、無効バイト情報マスク信号がアサートされている場合、ＤＲＡＭコマンド生成部１０１は無効バイト情報信号に関わらず、ＷＲコマンドを生成する。本実施形態で例として挙げているＬＰＤＤＲ４のＤＲＡＭでは、ＷＲコマンドを受けると全データ有効データ扱いとなる。ライトデータに無効データが含まれていても、無効バイト情報マスク信号によりＷＲコマンドをＬＰＤＤＲ４のＤＲＡＭが受けた場合は、既存データが無効データで上書きされることになる。
【００１５】
図２は第一の実施形態における無効バイト情報マスク部１０３の構成図である。レジスタには、無効バイトのライトを許容するバスマスタを示す、無効バイトライト許容マスタ識別子０〜Ｎまでが設定されている。無効バイト情報マスク部１０３は、バスマスタ１２０から受信するメモリアクセス要求に付与される発行元を示すマスタ識別子と、レジスタに設定された無効バイトライト許容マスタ識別子を比較する。無効バイトライト許容マスタ識別子は、無効バイトのライトが許容されるバスマスタの識別を示し、いずれかの無効バイトライト許容マスタ識別子と一致した場合は無効バイト情報マスク信号をアサートする。
【００１６】
図３は本実施形態における無効バイトのライトが許容されない場合の挙動を示す波形図である。メモリは、無効バイトをメモリにライトしないようにバースト単位でのデータマスク制御（リードモディファイライト）を実行する。無効バイトによって既にメモリに格納されているデータを上書きしない。本波形図では、ＷＲコマンドとＷＲコマンドの間はｔＣＣＤ（＝８ＤＲＡＭクロックサイクル）、ＷＲ／ＭＷＲとＭＷＲコマンドの間はｔＣＣＤＭＷ（＝３２ＤＲＡＭクロックサイクル）のペナルティがあるものとする。次ライトバーストＲＥＡＤＹは発行すべきメモリライトアクセス要求が存在するかを示し、次ライトバーストＲＥＡＤＹがアサートされ、かつ、先行するＤＲＡＭコマンドとのタイミング制約を満たす場合にＷＲ／ＭＷＲコマンドを発行する。Ｔ２でＤＲＡＭコマンド生成部１０１は次ライトバーストＲＥＡＤＹがアサートされたことを検出し、無効バイト情報信号と無効バイト情報マスク信号に基づいてＷＲコマンドとＭＷＲコマンドの選択を開始する。Ｔ２では無効バイト情報マスク信号と無効バイト情報信号がともにデアサートされているため、ＷＲコマンドを選択する。次に、先行して発行したＤＲＡＭコマンドとのタイミング制約を満たすようにＷＲコマンドの発行開始タイミングを調整する。本波形図では先行するＤＲＡＭコマンドがないものとし、Ｔ２からＷＲコマンドの発行を開始する。Ｔ６でＤＲＡＭコマンド生成部１０１は次ライトバーストＲＥＡＤＹがアサートされたことを検出する。Ｔ６では無効バイト情報マスク信号がデアサート、かつ、無効バイトがアサートされているため、ＭＷＲコマンドを選択する。しかし、先行するＷＲコマンドとのタイミング制約であるｔＣＣＤＭＷを満たさなければいけないため、Ｔ３４からＭＷＲコマンドの発行を開始することになってしまう。
【００１７】
図４は本実施形態における無効バイトのライトが許容される場合の挙動を示す波形図である。本波形図では、ＷＲコマンドとＷＲコマンドの間はｔＣＣＤ（＝８ＤＲＡＭクロックサイクル）、ＷＲ／ＭＷＲとＭＷＲコマンドの間はｔＣＣＤＭＷ（＝３２ＤＲＡＭクロックサイクル）のペナルティがあるものとする。次ライトバーストＲＥＡＤＹは発行すべきメモリライトアクセス要求が存在するかを示し、次ライトバーストＲＥＡＤＹがアサートされ、かつ、先行するＤＲＡＭコマンドとのタイミング制約を満たす場合にＷＲ／ＭＷＲコマンドを発行する。Ｔ２でＤＲＡＭコマンド生成部１０１は次ライトバーストＲＥＡＤＹがアサートされたことを検出し、無効バイト情報信号と無効バイト情報マスク信号に基づいてＷＲコマンドとＭＷＲコマンドの選択を開始する。Ｔ２では無効バイト情報マスク信号と無効バイト情報信号がともにデアサートされているため、ＷＲコマンドを選択する。次に、先行して発行したＤＲＡＭコマンドとのタイミング制約を満たすようにＷＲコマンドの発行開始タイミングを調整する。本波形図では先行するＤＲＡＭコマンドがないものとし、Ｔ２からＷＲコマンドの発行を開始する。Ｔ６でＤＲＡＭコマンド生成部１０１は次ライトバーストＲＥＡＤＹがアサートされたことを検出する。Ｔ６では無効バイト情報マスク信号がアサートされているため、無効バイト情報信号に関わらず、ＷＲコマンドを選択する。そして、先行するＷＲコマンドとのタイミング制約であるｔＣＣＤを満たすように、Ｔ１０からＷＲコマンドの発行を開始することが可能である。
【００１８】
このように、無効バイトのライトが許容されるバスマスタからのメモリアクセス要求の場合には、ライトデータに無効データが含まれていても、無効バイト情報マスク信号をアサートする。そして、ＭＷＲコマンドではなくＷＲコマンドを生成することにより、ＭＷＲコマンドを発行することによる時間ペナルティによる性能低下を抑制する。メモリ（例えばＬＰＤＤＲ４）側では、既存データが無効データで上書きされることになる。
【００１９】
［実施形態２］
実施形態２は、実施形態１における無効バイト情報マスク部１０３を異なる形態にしたものである。その他の構成は、実施形態１と同じなので省略する。図５は、第二の実施形態における無効バイト情報マスク部１０３の構成図である。無効バイト情報マスク部１０３は、バスマスタ１２０から受信するメモリアクセス要求の宛先アドレスと、レジスタに設定された無効バイトライト許容アドレス領域を比較する。無効バイトライト許容アドレス領域は、無効バイトのライトが許容されるメモリデバイス１１０のアドレス領域を示し、メモリアクセス要求の宛先がいずれかの無効バイトライト許容アドレス領域宛である場合は無効バイト情報マスク信号をアサートする。
【００２０】
［実施形態３］
実施形態３は、実施形態１と実施形態２における無効バイト情報マスク部１０３を異なる形態にしたものである。その他の構成は、実施形態１と同じなので省略する。
【００２１】
図６は、第三の実施形態における無効バイト情報マスク部１０３の構成図である。無効バイト情報マスク部１０３は、バスマスタ１２０から受信するメモリアクセス要求のマスタ識別子および宛先アドレスを、レジスタに設定された無効バイトライト許容マスタ識別子および無効バイトライト許容アドレス領域と比較する。宛先アドレスがいずれかの無効バイトライト許容アドレス領域宛であり、かつ、マスタ識別子がその許容アドレス領域に対応した無効バイトライト許容マスタ識別子と一致した場合は無効バイト情報マスク信号をアサートする。
【００２２】
無効バイトのライトは、ある一連のデータ処理において、データを最初にメモリデバイス１１０にライトする場合などに許容される。ある処理を開始する際、使用するメモリ領域へ最初のライトを実行する前から存在しているデータは無用なので、無効バイトのライトが許容される。一連のデータ処理において、最初にライトするマスタが決まっている場合は実施形態１、最初にライトするアドレス領域が決まっている場合は実施形態２を適用できる。また、データ処理毎にアドレス領域が分かれており、それぞれの領域で最初にライトするマスタが決まっている場合は実施形態３を適用できる。
【００２３】
実施形態１から実施形態３では、無効バイト情報マスク部１０３をメモリコントローラ１００の回路として説明したが、メモリコントローラ１００の外部にあっても構わない。メモリコントローラ１００の外部に存在する無効バイト情報マスク部１０３が生成する無効バイト情報マスク信号を無効バイトライト信号としてメモリコントローラ１００に入力してもよい。または、無効バイト情報マスク信号の値をメモリコントローラ１００内の無効バイトライト許容レジスタに設定してもよい。ＤＲＡＭコマンド生成部１０１は、メモリコントローラ外部から入力される無効バイトライト許容信号、または、無効バイトライト許容レジスタの設定値と、無効バイト情報信号により、ＤＲＡＭコマンドを生成する。
【００２４】
また、実施形態１から実施形態３には明記していないが、ＥＣＣ（Ｅｒｒｏｒ  ｄｅｔｅｃｔｉｏｎ  ａｎｄ  ｃｏｒｒｅｃｔｉｏｎ）と組み合わせて使用してもよい。無効バイトのライトが許容されると判定した場合、メモリのバーストアクセス内の全バイトを有効バイトとして計算したＥＣＣデータもＷＲコマンドを使用してメモリデバイス１１０に書き込む。これは、ＭＷＲコマンドのペナルティだけでなく、メモリへのライト発行後のＥＣＣデータを正しく計算するためにメモリコントローラ１００が一度ＤＲＡＭから全データをリードすることを不要にし、ＥＣＣデータの計算による性能低下も抑制することができる。
【００２５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００２６】
１００  メモリコントローラ
１０１  ＤＲＡＭコマンド生成部
１０２  無効バイト検出部
１０３  無効バイト情報マスク部
１１０  メモリデバイス
１２０  バスマスタ
【図１】
2018180656.tif 000003
【図２】
2018180656.tif 000004
【図３】
2018180656.tif 000005
【図４】
2018180656.tif 000006
【図５】
2018180656.tif 000007
【図６】
2018180656.tif 000008