(57)【要約】【課題】データ転送効率を向上させる。【解決手段】本開示のメモリ制御回路は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するメモリ制御部を備える。【選択図】図１
2016218721.tif 000002
【特許請求の範囲】
【請求項１】
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行するメモリ制御部
を備えるメモリ制御回路。
【請求項２】
前記メモリは、
複数の前記制御コマンドが前記同じバンクグループに対して連続的に発行された場合と、複数の前記制御コマンドが前記異なる２以上のバンクグループに対して交互に発行された場合とで、コマンド間隔の最小サイクル数が異なる
請求項１に記載のメモリ制御回路。
【請求項３】
前記メモリ制御部は、
複数の前記バンクグループに対して、前記制御コマンドとして、ＷＲＩＴＥコマンドおよびＲＥＡＤコマンドのうち少なくとも一方を複数回、発行する
請求項１に記載のメモリ制御回路。
【請求項４】
前記メモリ制御部は、
前記制御コマンドを発行する際、
仕様で規定される前記制御コマンドのコマンド間隔に基づいて、
前記同じバンクグループに対して複数の前記制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、前記第１の発行モードを選択し、
前記異なる２以上のバンクグループ間で交互に複数の前記制御コマンドを発行する方がデータ転送効率が高いと判断される場合、前記第２の発行モードを選択する
請求項１に記載のメモリ制御回路。
【請求項５】
前記メモリ制御部は、
前記ＷＲＩＴＥコマンドから前記ＲＥＡＤコマンドへの切り替わりまでと、前記ＲＥＡＤコマンドから前記ＷＲＩＴＥコマンドへの切り替わりまでの前記ＷＲＩＴＥコマンドおよび前記ＲＥＡＤコマンドのコマンド数を計測し、
前記ＷＲＩＴＥコマンドに挟まれた前記ＲＥＡＤコマンドのコマンド発行数が、所定の値以上の場合は前記第２の発行モードを選択して前記ＲＥＡＤコマンドを発行し、
前記所定の値未満の場合は前記ＲＥＡＤコマンドを発行する直前の前記ＷＲＩＴＥコマンドと同じ発行モードを選択して前記ＲＥＡＤコマンドを発行する
請求項１に記載のメモリ制御回路。
【請求項６】
前記メモリ制御部は、
前記ＲＥＡＤコマンドから前記ＷＲＩＴＥコマンドへの切り替わりまでと、前記ＷＲＩＴＥコマンドから前記ＲＥＡＤコマンドへの切り替わりまでの前記ＷＲＩＴＥコマンドおよび前記ＲＥＡＤコマンドのコマンド数を計測し、
前記ＲＥＡＤコマンドに挟まれた連続する前記ＷＲＩＴＥコマンドのコマンド発行数が、所定の値以上の場合は前記第１の発行モードを選択して前記ＷＲＩＴＥコマンドを発行し、
前記所定の値未満の場合は前記ＷＲＩＴＥコマンドを発行する直前の前記ＲＥＡＤコマンドと同じ発行モードを選択して前記ＷＲＩＴＥコマンドを発行する
請求項１に記載のメモリ制御回路。
【請求項７】
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行する
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、バンクグループ機能を持つメモリに適用されるメモリ制御回路およびメモリ制御方法に関する。
【背景技術】
【０００２】
ＤＲＡＭ（Dynamic Random Access Memory）の高速化に伴い、ＤＤＲ（Double Data Rate）規格やＤＤＲ２規格が登場し、バンク数は２，４，８と増加してきた。これにより、ＤＲＡＭメモリセルの欠点であるページオープン・クローズのオーバーヘッドを隠蔽しＷＲＩＴＥ／ＲＥＡＤを連続して行うことができるようになった。この手法はバンクインターリーブと呼ばれ広く知られている。また、ＤＲＡＭメモリにおけるデータ転送効率を向上させる技術として、特許文献１ないし３には、メモリアドレスやデータの並び替えを行う技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１５／００４６６４２号明細書
【特許文献２】特開２００４−１６４６４１号公報
【特許文献３】特開２０１０−２７７２１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さらに、最近のＤＤＲ４規格では、バンクを２つないし４つのグループに分けるバンクグループが採用され、メモリセルアレイから並列で読み出すデータ数を増やすことなく（ｐｒｅｆｅｔｃｈするデータ数を増やすことなく）、Ｉ／Ｏ（Input/Output）のデータ転送帯域を旧規格ＤＤＲ３に比べて倍増させている。ただしバンクグループのインターリーブを行うことは、常にデータ転送帯域を増やすわけではなく、減ることもあり得る。このため、バンクグループのインターリーブを行うか行わないかの判断を適切に行う必要がある。メモリへのＷＲＩＴＥ／ＲＥＡＤのアクセスパターンや、メモリ仕様、特にコマンド間隔の規定によってバンクグループのインターリーブを行うか否かを判定することで、より高いデータ転送帯域を得ることができる可能性がある。上記特許文献１ないし３には、バンクグループを考慮してデータ転送効率を向上させる技術は提案されていない。
【０００５】
本開示の目的は、データ転送効率を向上させることができるようにしたメモリ制御回路およびメモリ制御方法を提供することにある。
【課題を解決するための手段】
【０００６】
本開示によるメモリ制御回路は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するメモリ制御部を備えたものである。
【０００７】
本開示によるメモリ制御方法は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するものである。
【０００８】
本開示によるメモリ制御回路またはメモリ制御方法では、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードとを選択的に用いる。
【発明の効果】
【０００９】
本開示のメモリ制御回路またはメモリ制御方法によれば、複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行うか否かを適切に選択するようにしたので、データ転送効率を向上させることができる。
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の一実施の形態に係るメモリ制御回路を含むメモリバスシステムの一構成例を示すブロック図である。
【図２】バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの第１の例を示すタイミング図である。
【図３】バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの第２の例を示すタイミング図である。
【図４】バンクグループインターリーブを行わず、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。
【図５】バンクグループインターリーブを行い、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。
【図６】バンクグループインターリーブを行わず、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。
【図７】ＷＲＩＴＥからＲＥＡＤへの切り替わりの第１の例を示すタイミング図である。
【図８】ＷＲＩＴＥからＲＥＡＤへの切り替わりの第２の例を示すタイミング図である。
【図９】ＷＲＩＴＥからＲＥＡＤへの切り替わりの第３の例を示すタイミング図である。
【図１０】ＷＲＩＴＥからＲＥＡＤへの切り替わりの第４の例を示すタイミング図である。
【図１１】バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。
【図１２】バンクグループインターリーブを行わず、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。
【図１３】図１１および図１２のタイミング図を簡略化して示した図である。
【図１４】ＷＲＩＴＥとＷＲＩＴＥの間にＲＥＡＤを行う際に、バンクグループインターリーブを行う場合と行わない場合とを比較して示したタイミング図である。
【図１５】ＲＥＡＤを行う際に、バンクグループインターリーブを行う場合と行わない場合とのコマンド発行パターンを比較して示したタイミング図である。
【図１６】バンクグループインターリーブを行う場合と行わない場合とにおけるＲＥＡＤのデータ配列の一例を示す説明図である。
【図１７】アービターでバンクグループインターリーブのモードの切り替えを行う場合の動作例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下、本開示の実施の形態について図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
１．メモリ制御回路を含むメモリバスシステム
１．１  構成（図１）
１．２  動作
１．２．１  ＲＥＡＤのみの場合の制御動作（図２〜図４）
１．２．２  ＷＲＩＴＥのみの場合の制御動作（図５〜図６）
１．２．３  ＷＲＩＴＥおよびＲＥＡＤを含む場合の制御動作（図７〜図１７）
１．３  効果
２．その他の実施の形態
【００１２】
＜１．メモリ制御回路を含むメモリバスシステム＞
［１．１  構成］
図１は、本開示の一実施の形態に係るメモリ制御回路を含むメモリバスシステムの一構成例を示している。
【００１３】
メモリバスシステム１は、１以上のバスマスターと、メモリ制御部３０と、ＤＤＲ−ＰＨＹ（physical interface）４０とを備えている。バスマスターは例えば、複数のＲＥＡＤマスター１１，１２と、複数のＷＲＩＴＥマスター２１，２２とで構成される。メモリ制御部３０は、アービター３１と、メモリコントローラ３２とを有している。メモリ制御部３０はまた、図示しないバッファを有している。
【００１４】
メモリ５０は、バンクグループ機能を持つメモリ、例えばＤＤＲ４またはＧＤＤＲ５(Graphics Double Data Rate 5) 規格のメモリである。図１では、メモリ５０が、２つのバンクグループＢＧ０，ＢＧ１に対応する２つのＤＲＡＭ５１，５２で構成されている例を示しているが、バンクグループの数およびＤＲＡＭの数はこの例には限定されない。ＤＲＡＭ５１，５２はそれぞれ、複数のバンクＢａｎｋ０，Ｂａｎｋ１，Ｂａｎｋ２，Ｂａｎｋ３を有している。
【００１５】
ＲＥＡＤマスター１１，１２はそれぞれ、メモリ５０に対するＲＥＡＤ（読み出し）要求を行うものである。ＲＥＡＤマスター１１，１２はそれぞれ、メモリ制御部３０およびＤＤＲ−ＰＨＹ４０を介して、メモリ５０に対する読み出しアドレスを供給するようになっている。また、ＲＥＡＤマスター１１，１２はそれぞれ、メモリ５０から読み出された読み出しデータを、ＤＤＲ−ＰＨＹ４０およびメモリ制御部３０を介して受け取るようになっている。なお、図１では、ＲＥＡＤマスターが２つで構成されている例を示しているが、ＲＥＡＤマスターの数はこの例には限定されない。
【００１６】
ＷＲＩＴＥマスター２１，２２はそれぞれ、メモリ５０に対するＷＲＩＴＥ（書き込み）要求を行うものである。ＷＲＩＴＥマスター２１，２２はそれぞれ、メモリ制御部３０およびＤＤＲ−ＰＨＹ４０を介して、メモリ５０に対する書き込み（ＷＲＩＴＥ）アドレスを供給するようになっている。また、ＷＲＩＴＥマスター２１，２２はそれぞれ、メモリ制御部３０およびＤＤＲ−ＰＨＹ４０を介して、メモリ５０に対する書き込みデータをメモリ制御部３０に供給するようになっている。なお、図１では、ＷＲＩＴＥマスターが２つで構成されている例を示しているが、ＷＲＩＴＥマスターの数はこの例には限定されない。
【００１７】
メモリ制御部３０は、ＲＥＡＤマスター１１，１２およびＷＲＩＴＥマスター２１，２２からの要求に応じて、制御コマンドを生成し、ＤＤＲ−ＰＨＹ４０を介して、制御コマンドをメモリ５０に供給するものである。なお、制御コマンドとしては、ＲＥＡＤコマンド、ＷＲＩＴＥコマンド、ＡＣＴコマンド、およびＰＲＥコマンドなどがある。
【００１８】
アービター３１は、ＲＥＡＤマスター１１，１２およびＷＲＩＴＥマスター２１，２２からの要求を調停し、要求の順序を決定するものである。アービター３１に対する要求の入出力は、一般にメモリ５０へのアクセスを行うプロトコル、例えばＡＨＢ（Advanced High-performance Bus）、ＡＸＩ（Advanced eXtensible Interface）、またはＯＣＰ（Open Core Protocol）などで規定される。
【００１９】
メモリコントローラ３２は、アービター３１からの指示に基づいてメモリ５０の動作を制御するものである。メモリコントローラ３２は、アービター３１からの出力をＤＲＡＭアクセスプロトコルに変換し、制御コマンドを生成するようになっている。
【００２０】
ＤＤＲ−ＰＨＹ４０は、メモリコントローラ３２とメモリ５０の各ＤＲＡＭ５１，５２との間を接続する物理層のインタフェースである。ＤＤＲ−ＰＨＹ４０は図示しないＩ／Ｏ端子を介して各ＤＲＡＭ５１，５２に接続されてもよい。
【００２１】
［１．２  動作］
このメモリバスシステム１では、メモリ制御部３０が、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードとを選択的に用いて、メモリ５０における複数のバンクグループＢＧＯ，ＢＧ１に対して制御コマンドを発行する。
【００２２】
メモリ制御部３０は、複数のバンクグループに対して、制御コマンドとして、ＷＲＩＴＥコマンドおよびＲＥＡＤコマンドのうち少なくとも一方を複数回、発行する。
【００２３】
メモリ５０は、複数の制御コマンドが同じバンクグループに対して連続的に発行された場合（バンクグループインターリーブを行わずに発行された場合）と、複数の制御コマンドが異なる２以上のバンクグループに対して交互に発行された場合（バンクグループインターリーブを行って発行された場合）とで、コマンド間隔の最小サイクル数が異なっている。
【００２４】
メモリ制御部３０は、制御コマンドを発行する際、仕様で規定される制御コマンドのコマンド間隔に基づいて、同じバンクグループに対して複数の制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、第１の発行モードを選択する。また、異なる２以上のバンクグループ間で交互に複数の制御コマンドを発行する方がデータ転送効率が高いと判断される場合、第２の発行モードを選択する。
【００２５】
以下、図２〜図１７を参照して、本実施の形態に係るメモリバスシステム１によるメモリ５０に対する制御動作の具体例を説明する。
【００２６】
以下では、バンクグループインターリーブ（Bank Group Interleave）をＢＧＩと略す場合がある。また、以下では、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードをＢＧＩ−ｏｆｆと記す場合がある。また、以下では、バンクグループインターリーブを行って複数の制御コマンドを発行する第２の発行モードをＢＧＩ−ｏｎと記す場合がある。また、本実施の形態では、ＢＧＩ−ｏｆｆとＢＧＩ−ｏｎとの２つのモードを総称してＢＧＩモード、発行モード、またはバンクグループインターリーブのモードと呼ぶ。
バンクグループインターリーブのモードは、例えば以下のように決まる。
・条件１：最も先にバッファに入力されたリクエスト
・条件２：直前に発行したコマンドと異なるバンクグループ
例えば、ある時点でメモリ制御部３０にバッファリングされている制御コマンドのうち、上記条件１を優先して選択する発行モードをＢＧＩ−ｏｆｆ、上記条件２→条件１の順で優先して選択する発行モードをＢＧＩ−ｏｎとする。
【００２７】
なお、図２等において用いられている用語の意味は以下の通りである。
ＲＡＳ・・・Row Address Strobe，ＡＣＴコマンドのこと。ＤＲＡＭ５１，５２はＲｏｗアドレスを受信する。
ＣＡＳ・・・Column Address Strobe，ＷＲＩＴＥコマンドまたはＲＥＡＤコマンドのこと。ＤＲＡＭ５１，５２はカラムアドレスを受信する。
ＢＬ・・・Burst Length
ＣＬ・・・CAS Latency，ＲＥＡＤコマンドが有効化されてからＲＥＡＤデータの出力開始までの時間。ＲＬとも書く。
ＣＷＬ・・・CAS Write Latency，ＷＲＩＴＥコマンドが有効化されてからＷＲＩＴＥデータの入力開始までの時間。ＷＬとも書く。
ＢＣ・・・Burst Chop
ｔＲＣＤ・・・RAS# to CAS# Delay
ｔＲＰ・・・RAS# Precharge time
ｔＣＣＤ・・・CAS# to CAS# Delay
ｔＷＲ・・・Write Recovery time
ｔＷＴＲ・・・Write To Read delay
ｔＲＲＤ・・・RAS# to RAS# Delay
ｔＦＡＷ・・・Four Activate Window delay
＿Ｓ・・・Ｓｈｏｒｔ
＿Ｌ・・・Ｌｏｎｇ
【００２８】
ここでは、メモリ５０のＤＲＡＭ５１，５２がＤＤＲ４−２４００の規格である場合を例に説明する。ＢＬ＝８、１６ｂｉｔ Ｉ／Ｏであるものとすると、ＷＲＩＴＥコマンド１回あたり、８×１６＝１２８ｂｉｔのデータをＤＲＡＭ５１，５２にＷＲＩＴＥする。また、ＤＲＡＭ５１，５２の同一バンクに２コマンド、８バンクを順にアクセスするアクセスパターンを想定する。この場合、１２８ｂｉｔ×２×８＝４０９６ｂｉｔ単位のアクセスとなる。このアクセスパターンは４０９６ｂｉｔごとにＯｐｅｎするＲｏｗアドレスを自由に選択してもデータ転送効率は一定に維持することができるので、ランダム・アクセスの最小単位と考えることができる。以下、これを「基本アクセスパターン」と呼称する。
【００２９】
ＤＤＲ４−２４００のコマンド間隔の制約をＤＤＲ４の規格書から読み取ると、ＣＬ＝１６，ｔＲＣＤ＝１６，ｔＲＰ＝１６，ｔＦＡＷ＝３６，ｔＲＲＤ＿Ｓ＝７，ｔＲＲＤ＿Ｌ＝８，ｔＣＣＤ＿Ｓ＝４，ｔＣＣＤ＿Ｌ＝６，ｔＷＴＲ＿Ｓ＝３，ｔＷＴＲ＿Ｌ＝９，ｔＷＲ＝１８，ＣＷＬ＝１６，ｔＲＴＰ＝９となる。単位は特に書かない限りクロック数である。
【００３０】
（１．２．１  ＲＥＡＤのみの場合の制御動作）
まず、図２〜図４を参照して、ＲＥＡＤのみを行う場合の制御動作の具体例を説明する。
【００３１】
図２は、バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの第１の例を示している。図３は、バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの第２の例を示している。図４は、バンクグループインターリーブを行わず、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの一例を示している。
【００３２】
ＢＧＩ−ｏｎのとき、基本アクセスパターンにおいて、７２クロックに１６回のＲＥＡＤコマンドを発行できる。これは、ｔＦＡＷ＝３６の間にＡＣＴを４回、各バンクにＲＥＡＤコマンド２回なので、ＲＥＡＤコマンドを計８回発行できることによる。このため、最高で３２／３６＝８８．９％のデータ転送効率を出すことができる。
【００３３】
図４に示したように、ＢＧＩ−ｏｆｆのとき、ｔＣＣＤ＿Ｌ＋ｔＣＣＤ＿Ｓ＝１０クロック間にＲＥＡＤコマンドを２回発行できるので、最高で８／１０＝８０％のデータ転送効率を出すことができる。このため、ＲＥＡＤを行うときはＢＧＩ−ｏｎを選択する方が高いデータ転送効率を得ることができる。
【００３４】
なお、図２はＢａｎｋ０のパターンを８クロックずらしてＢａｎｋ１のパターンとした例であるが、図２の例では、ＡＣＴコマンドとＲＥＡＤコマンドとが衝突している。このため、Ｂａｎｋ１とＢａｎｋ３のリクエストを１クロックずらして衝突をなくした例が図３の例である。なお、ＰＲＥコマンドはＡｕｔｏＰｒｅｃｈａｒｇｅ付きＲＥＡＤ／ＷＲＩＴＥコマンドで隠蔽できるので、衝突を回避するためのずらしは行わなくてよい。
【００３５】
（１．２．２  ＷＲＩＴＥのみの場合の制御動作）
次に、図５、および図６を参照して、ＷＲＩＴＥのみを行う場合の制御動作の具体例を説明する。
【００３６】
図５は、バンクグループインターリーブを行い、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示している。図６は、バンクグループインターリーブを行わず、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示している。
【００３７】
ＢＧＩ−ｏｎのとき、基本アクセスパターンにおいて、８１クロックに１６回のＷＲＩＴＥコマンドを発行できるので、最高で６４／８１＝７９．０％のデータ転送効率を出すことができる。ＢＧＩ−ｏｆｆのとき、ｔＣＣＤ＿Ｌ＋ｔＣＣＤ＿Ｓ＝１０クロック間にＷＲＩＴＥコマンドを２回発行できるので、最高で８／１０＝８０％のデータ転送効率を出すことができる。このため、ＷＲＩＴＥを行うときはＢＧＩ−ｏｆｆを選択する方が高いデータ転送効率を得ることができる。
【００３８】
（１．２．３  ＷＲＩＴＥおよびＲＥＡＤを含む場合の制御動作）
メモリ制御部３０は、ＷＲＩＴＥコマンドからＲＥＡＤコマンドへの切り替わりまでと、ＲＥＡＤコマンドからＷＲＩＴＥコマンドへの切り替わりまでのＷＲＩＴＥコマンドおよびＲＥＡＤコマンドのコマンド数を計測し、ＷＲＩＴＥコマンドに挟まれたＲＥＡＤコマンドのコマンド発行数が、所定の値以上の場合は第２の発行モードを選択してＲＥＡＤコマンドを発行する。また、所定の値未満の場合はＲＥＡＤコマンドを発行する直前のＷＲＩＴＥコマンドと同じ発行モードを選択してＲＥＡＤコマンドを発行する。
【００３９】
また、メモリ制御部３０は、ＲＥＡＤコマンドからＷＲＩＴＥコマンドへの切り替わりまでと、ＷＲＩＴＥコマンドからＲＥＡＤコマンドへの切り替わりまでのＷＲＩＴＥコマンドおよびＲＥＡＤコマンドのコマンド数を計測し、ＲＥＡＤコマンドに挟まれた連続するＷＲＩＴＥコマンドのコマンド発行数が、所定の値以上の場合は第１の発行モードを選択してＷＲＩＴＥコマンドを発行する。また、所定の値未満の場合はＷＲＩＴＥコマンドを発行する直前のＲＥＡＤコマンドと同じ発行モードを選択してＷＲＩＴＥコマンドを発行する。
【００４０】
以下、図７〜図１７を参照して、ＷＲＩＴＥおよびＲＥＡＤの双方を行う場合の制御動作の具体例を説明する。
【００４１】
図７は、ＷＲＩＴＥからＲＥＡＤへの切り替わりのタイミングの第１の例を示している。図７の上段には、ＢＧＩ−ｏｎでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｎでＲＥＡＤを行う第１の例を示す。図７の下段には、ＢＧＩ−ｏｆｆでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｎでＲＥＡＤを行う第１の例を示す。なお、図７では、ＷＲＩＴＥからＲＥＡＤへの切り替わりにおいて、ＡＣＴコマンドとＰＲＥコマンドとを発行しない場合の例を示している。
【００４２】
図８は、ＷＲＩＴＥからＲＥＡＤへの切り替わりのタイミングの第２の例を示している。図８の上段には、ＢＧＩ−ｏｎでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｎでＲＥＡＤを行う第２の例を示す。図８の下段には、ＢＧＩ−ｏｎでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｆｆでＲＥＡＤを行う第２の例を示す。
【００４３】
図９は、ＷＲＩＴＥからＲＥＡＤへの切り替わりのタイミングの第３の例を示している。図９には、ＢＧＩ−ｏｆｆでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｎでＲＥＡＤを行う例を示す。図１０は、ＷＲＩＴＥからＲＥＡＤへの切り替わりのタイミングの第４の例を示している。図１０には、ＢＧＩ−ｏｎでＷＲＩＴＥを行い、続いて、ＢＧＩ−ｏｎでＲＥＡＤを行う例を示す。
【００４４】
ＤＲＡＭ５１，５２は双方向Ｉ／Ｏでデータを半二重で転送する。このため、上述したＲＥＡＤまたはＷＲＩＴＥのみの場合のデータ転送効率を達成するためには、ＲＥＡＤやＷＲＩＴＥを可能な限り連続して行うことが前提となる。ＲＥＡＤからＷＲＩＴＥまたはＷＲＩＴＥからＲＥＡＤに切り替わる際にはデータピンのドライブ方向を切り替えるため、無効な（データ転送が行えない）時間が発生するためである。しかしメモリバスに対するシステム要求によっては、ＲＥＡＤに比べてＷＲＩＴＥ要求が著しく少ないが、ＷＲＩＴＥ要求を待たせることができない場合など、連続するＲＥＡＤの途中に短いＷＲＩＴＥを行う必要が生じる場合がある。逆に、連続するＷＲＩＴＥの途中に短いＲＥＡＤを行う必要が生じる場合もある。これらの場合において、ＢＧＩ−ｏｆｆで比較的長いＷＲＩＴＥが続いた後、短いＲＥＡＤでＢＧＩ−ｏｎへとＢＧＩモードを切り替えるとデータ転送効率が悪化することがある。また、ＢＧＩ−ｏｎで比較的長いＲＥＡＤが続いた後、短いＷＲＩＴＥでＢＧＩ−ｏｆｆへとＢＧＩモードを切り替える場合などでもデータ転送効率が悪化することがある。
【００４５】
ＷＲＩＴＥからＲＥＡＤに切り替わる際には、最後のＷＲＩＴＥコマンドから次のＲＥＡＤコマンドまでの間隔がＤＲＡＭ規格により規定されている。このため、ＷＲＩＴＥからＲＥＡＤへ切り替わる際、最後のＷＲＩＴＥコマンドが遅れた分だけＲＥＡＤコマンド発行を遅らせる必要がある。ＷＲＩＴＥの開始から終了までを比較すると、ＢＧＩ−ｏｎの方がＢＧＩ−ｏｆｆよりもより早くＷＲＩＴＥコマンド発行が終了する。このため、連続するＢＧＩ−ｏｎのＲＥＡＤの途中に短いＷＲＩＴＥを行う場合は、ＷＲＩＴＥのときもＢＧＩ−ｏｎを選択した方がデータ転送効率がよい。また、連続するＢＧＩ−ｏｆｆのＷＲＩＴＥの途中に短いＲＥＡＤを行う場合は、ＲＥＡＤのときもＢＧＩ−ｏｆｆを選択した方がデータ転送効率がよい。
【００４６】
ここで、図１１〜図１４を参照して、連続するＢＧＩ−ｏｆｆのＷＲＩＴＥの途中において短いＲＥＡＤを行う場合のデータ転送効率について説明する。
【００４７】
図１１は、バンクグループインターリーブを行い、かつＲＥＡＤのみを行う場合の制御コマンドの発行タイミングの一例を示している。図１２は、バンクグループインターリーブを行わず、かつＷＲＩＴＥのみを行う場合の制御コマンドの発行タイミングの一例を示している。図１３は、図１１および図１２のタイミング図を簡略化して示している。上述したように、ＲＥＡＤのみを行う場合、ＢＧＩ−ｏｎとし複数のバンクグループ間で交互にＲＥＡＤコマンドを発行する方がデータ転送効率がよい。また、ＷＲＩＴＥのみを行う場合、ＢＧＩ−ｏｆｆとし複数のバンクグループ間で交互にＷＲＩＴＥコマンドを発行する方がデータ転送効率がよい。
【００４８】
図１４には、ＢＧＩ−ｏｆｆのＷＲＩＴＥとＢＧＩ−ｏｆｆのＷＲＩＴＥの間においてＲＥＡＤを行う際に、ＲＥＡＤをＢＧＩ−ｏｎとした場合（図１４の上段）とＢＧＩ−ｏｆｆとした場合（図１４の下段）とを比較して示している。ＢＧＩ−ｏｎとした方が、ＲＥＡＤだけの期間は短い。しかしながら、ＷＲＩＴＥとの切り替えに要する時間を考慮すると、結果として、ＢＧＩ−ｏｆｆとした方が、ＲＥＡＤからＷＲＩＴＥへの切り替えタイミングが早くなり、ＲＥＡＤの後のＷＲＩＴＥコマンドを早く発行できる。
【００４９】
なお、ＲＥＡＤまたはＷＲＩＴＥを行う際に、ＢＧＩモードを切り替える場合、ＤＲＡＭ５１，５２とメモリコントローラ３２との間のデータの読み出し順序または書き込み順序と、メモリコントローラ３２とバスマスターとの間のデータの転送順序とを調整する必要があり得る。
【００５０】
図１５は、ＲＥＡＤを行う際に、バンクグループインターリーブを行う場合と行わない場合とのコマンド発行パターンを比較して示している。図１６は、図１５のコマンド発行パターンに対応したＤＲＡＭ５１，５２とメモリコントローラ３２との間のデータの読み出し順序と、メモリコントローラ３２とＲＥＡＤマスター１１，１２との間のデータの転送順序との一例を示す。図１５および図１６において、上段はＢＧＩ−ｏｎの場合、下段はＢＧＩ−ｏｆｆの場合を示す。例えば図１５および図１６の上段に示したように、ＢＧＩ−ｏｎの場合、ＤＲＡＭ５１，５２（バンクグループＢＧ０，ＢＧ１）からデータが交互に読み出される。メモリコントローラ３２は、バンクグループＢＧ０，ＢＧ１からのそれぞれのデータが連続するようにデータの配列を調整してＲＥＡＤマスター１１，１２に転送する。
【００５１】
以上で説明したようなＢＧＩモードの切り替えを行う場合、ＢＧＩ−ｏｆｆとＢＧＩ−ｏｎとのいずれを選択するかは、アービター３１またはメモリコントローラ３２で決定する。
【００５２】
図１７に、アービター３１でＢＧＩモードの切り替えを行う場合の動作例を示す。図１７には、上段から順に、ＲＥＡＤマスター１１（ＲＥＡＤマスター＃１）の要求のタイミングと、ＲＥＡＤマスター１２（ＲＥＡＤマスター＃２）の要求のタイミングと、ＷＲＩＴＥマスター２１（ＷＲＩＴＥマスター＃１）の要求のタイミングと、ＷＲＩＴＥマスター２２（ＷＲＩＴＥマスター＃２）の要求のタイミングとを示す。図１７には、さらに、ＲＥＡＤマスター１１，１２とＷＲＩＴＥマスター２１，２２とからの要求に基づく、アービター３１から出力される要求のタイミングを示す。ＲＥＡＤの要求はＲ＃、ＷＲＩＴＥの要求はＷ＃と記す。図１７の最下段には、アービター３１によって選択されるＢＧＩモードの種類をｏｎ，ｏｆｆで示す。
【００５３】
メモリバスシステム１において、通常、アービター３１で複数のバスマスター間のアクセス調停順序が決定された後は変更されることがない。すなわち、通常、「ＲＥＡＤやＷＲＩＴＥを可能な限り連続して行う」などの機能はアービター３１で実現する。アービター３１は、ＲＥＡＤまたはＷＲＩＴＥの切り替わり時刻をトリガーとして時刻をカウントするタイマーを保持する。または、アービター３１は、リクエスト数をカウントするカウンタを保持する。
【００５４】
ＲＥＡＤ要求、ＷＲＩＴＥ要求ともに多い場合（コマンド発行数が所定の値以上となる場合）、アービター３１は、それぞれもっともデータ転送効率のよいＢＧＩモードを選択する。例えばＤＤＲ４−２４００の例では、ＲＥＡＤはＢＧＩ−ｏｎ、ＷＲＩＴＥはＢＧＩ−ｏｆｆを選択する。
【００５５】
ＲＥＡＤ要求は多いが、ＷＲＩＴＥ要求が少ない場合（ＷＲＩＴＥコマンド発行数が所定の値未満となる場合）、アービター３１は、ＲＥＡＤがデータ転送効率のよいＢＧＩモードを選択する。例えばＤＤＲ４−２４００の例では、ＢＧＩ−ｏｎを選択する。
【００５６】
ＷＲＩＴＥ要求は多いが、ＲＥＡＤ要求が少ない場合（ＲＥＡＤコマンド発行数が所定の値未満となる場合）、アービター３１は、ＷＲＩＴＥがデータ転送効率のよいＢＧＩモードを選択する。例えばＤＤＲ４−２４００の例では、ＢＧＩ−ｏｆｆを選択する。
【００５７】
ＲＥＡＤ要求もＷＲＩＴＥ要求も少ない場合（コマンド発行数が所定の値未満となる場合）は、そもそも有効データが少ないため効率が高くならないのでＢＧＩモードはどちらでもよい。
【００５８】
ＲＥＡＤ要求やＷＲＩＴＥ要求がどれだけ連続したときＢＧＩモードのｏｎ／ｏｆｆを切り替えるか判定するとき、損益分岐点（所定の値）が存在するが、ＲＥＡＤ要求やＷＲＩＴＥ要求がどれだけ連続するか未来を予測することは難しい。図１７には、ＢＧＩモード決定まで一定リクエストをバッファリングしてＢＧＩモードの決定を留保する例を示す。
【００５９】
図１７のＴ０において、アービター３１は、ＷＲＩＴＥマスター＃１の要求を出力するとき、ＲＥＡＤマスター＃１の要求がｇｒａｎｔ（許可）されているので、ＷＲＩＴＥ要求はＢＧＩ−ｏｎとする。Ｔ１において、アービター３１は、ＲＥＡＤマスター＃１の要求を出力するとき、ＲＥＡＤマスター＃１の要求がｇｒａｎｔされているので、ＲＥＡＤ要求はＢＧＩ−ｏｎとする。Ｔ２において、アービター３１は、ＷＲＩＴＥマスター＃１の要求を出力するとき、どの要求もｇｒａｎｔされていないので、ＷＲＩＴＥ要求はＢＧＩ−ｏｆｆとする。
【００６０】
［１．３  効果］
以上のように、本実施の形態によれば、複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行うか否かを適切に選択し、制御コマンドの発行スケジュールを最適化するようにしたので、データ転送効率を向上させることができる。
【００６１】
なお、本明細書に記載された効果はあくまでも例示であって限定されるものではなく、また他の効果があってもよい。
【００６２】
＜２．その他の実施の形態＞
本開示による技術は、上記実施の形態の説明に限定されず種々の変形実施が可能である。
【００６３】
例えば、本技術は以下のような構成を取ることができる。
（１）
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行するメモリ制御部
を備えるメモリ制御回路。
（２）
前記メモリは、
複数の前記制御コマンドが前記同じバンクグループに対して連続的に発行された場合と、複数の前記制御コマンドが前記異なる２以上のバンクグループに対して交互に発行された場合とで、コマンド間隔の最小サイクル数が異なる
上記（１）に記載のメモリ制御回路。
（３）
前記メモリ制御部は、
複数の前記バンクグループに対して、前記制御コマンドとして、ＷＲＩＴＥコマンドおよびＲＥＡＤコマンドのうち少なくとも一方を複数回、発行する
上記（１）または（２）に記載のメモリ制御回路。
（４）
前記メモリ制御部は、
前記制御コマンドを発行する際、
仕様で規定される前記制御コマンドのコマンド間隔に基づいて、
前記同じバンクグループに対して複数の前記制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、前記第１の発行モードを選択し、
前記異なる２以上のバンクグループ間で交互に複数の前記制御コマンドを発行する方がデータ転送効率が高いと判断される場合、前記第２の発行モードを選択する
上記（１）ないし（３）のいずれか１つに記載のメモリ制御回路。
（５）
前記メモリ制御部は、
前記ＷＲＩＴＥコマンドから前記ＲＥＡＤコマンドへの切り替わりまでと、前記ＲＥＡＤコマンドから前記ＷＲＩＴＥコマンドへの切り替わりまでの前記ＷＲＩＴＥコマンドおよび前記ＲＥＡＤコマンドのコマンド数を計測し、
前記ＷＲＩＴＥコマンドに挟まれた前記ＲＥＡＤコマンドのコマンド発行数が、所定の値以上の場合は前記第２の発行モードを選択して前記ＲＥＡＤコマンドを発行し、
前記所定の値未満の場合は前記ＲＥＡＤコマンドを発行する直前の前記ＷＲＩＴＥコマンドと同じ発行モードを選択して前記ＲＥＡＤコマンドを発行する
上記（１）ないし（４）のいずれか１つに記載のメモリ制御回路。
（６）
前記メモリ制御部は、
前記ＲＥＡＤコマンドから前記ＷＲＩＴＥコマンドへの切り替わりまでと、前記ＷＲＩＴＥコマンドから前記ＲＥＡＤコマンドへの切り替わりまでの前記ＷＲＩＴＥコマンドおよび前記ＲＥＡＤコマンドのコマンド数を計測し、
前記ＲＥＡＤコマンドに挟まれた連続する前記ＷＲＩＴＥコマンドのコマンド発行数が、所定の値以上の場合は前記第１の発行モードを選択して前記ＷＲＩＴＥコマンドを発行し、
前記所定の値未満の場合は前記ＷＲＩＴＥコマンドを発行する直前の前記ＲＥＡＤコマンドと同じ発行モードを選択して前記ＷＲＩＴＥコマンドを発行する
上記（１）ないし（５）のいずれか１つに記載のメモリ制御回路。
（７）
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第１の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第２の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行する
メモリ制御方法。
【符号の説明】
【００６４】
１…メモリバスシステム、１１，１２…ＲＥＡＤマスター、２１，２２…ＷＲＩＴＥマスター、３０…メモリ制御部、３１…アービター、３２…メモリコントローラ、４０…ＤＤＲ−ＰＨＹ、５０…メモリ、５１，５２…ＤＲＡＭ。
【図１】
2016218721.tif 000003
【図２】
2016218721.tif 000004
【図３】
2016218721.tif 000005
【図４】
2016218721.tif 000006
【図５】
2016218721.tif 000007
【図６】
2016218721.tif 000008
【図７】
2016218721.tif 000009
【図８】
2016218721.tif 000010
【図９】
2016218721.tif 000011
【図１０】
2016218721.tif 000012
【図１１】
2016218721.tif 000013
【図１２】
2016218721.tif 000014
【図１３】
2016218721.tif 000015
【図１４】
2016218721.tif 000016
【図１５】
2016218721.tif 000017
【図１６】
2016218721.tif 000018
【図１７】
2016218721.tif 000019