(57)【特許請求の範囲】
【請求項１】
ＤＲＡＭへアクセスするためのアクセスコマンドを複数保持するアクセスコマンド保持手段と、前記アクセスコマンド保持手段に保持されている複数のアクセスコマンドを現在処理をしているコマンドと次に処理するコマンドが違うバンクアドレスをアクセスするように前記アクセスコマンド保持手段内の前記アクセスコマンドを入れ替えるアクセスコマンド制御手段を備え、前記アクセスコマンド制御手段は、前記アクセスコマンド保持手段に保持されている１つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドを用いて、連続するアクセスコマンドが別のバンクをアクセスするように前記アクセスコマンドの入れ替えを行うことを特徴とするメモリアクセスシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＤＲＡＭへアクセスするためのメモリアクセスシステムに関するものであり、特にメモリをランダムアクセスする際に用いて好適なメモリアクセスシステムに関するものである。
【０００２】
【従来の技術】
まず一般的なＤＲＡＭアクセスについて説明する。図６は、一般的なＳＤＲＡＭの構成の模式図である。ここではバンクアドレス０とバンクアドレス１の２つのバンクから構成されており、各バンクにおいてはロウアドレスとカラムアドレスによってデータが特定される。ここでは簡単のためにロウアドレス、カラムアドレスとも０〜７の値をとるものとして示している。また、バンクアドレス０，ロウアドレス０，カラムアドレス０〜４には、データ「ＡＢＣＤＥ」が格納されている。
【０００３】
図７は、一般的なＳＤＲＡＭへのアクセス時のタイミングチャートである。一例として、図６に示すように、バンクアドレス０、ロウアドレス０、カラムアドレス０〜４までに５つのデータ「ＡＢＣＤＥ」を格納する、１つのアクセスコマンドを処理する動作を示している。まず▲１▼のサイクルにおいて、アクセスするロウ信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定されたバンクをアクティブ状態にする。なお、アドレス信号の表記は、左側の数字がバンクアドレスを示しており、右側の数字がロウアドレスあるいはカラムアドレスを示している（以下の説明において同じである）。例えば▲１▼のサイクルでは、アドレス信号として「００」と表記しているが、これはバンクアドレス０，ロウアドレス０を示している。
【０００４】
次に▲２▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。アドレス信号の表記は「００」であるが、これはバンクアドレス０，カラムアドレス０を示している。さらに▲２▼のサイクルにおいて、書き込む最初のデータ「Ａ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＢＣＤＥ」をサイクル毎に出力する。このようにして５つのデータ「ＡＢＣＤＥ」をＳＤＲＡＭに書き込むことができる。
【０００５】
次に、連続した複数のアクセスコマンドを処理する場合を説明する。アクセスコマンドが連続する場合として、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合、同一バンクアドレスであるが別のロウアドレスである場合、別のバンクアドレスの場合の３種類のコマンド間処理が考えられる。
【０００６】
まず、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合のアクセスについて説明する。図８は、同一バンクアドレスかつ同一ロウアドレスにデータが書き込まれている場合の一例の説明図、図９は、同じくそのような書込を行う場合のタイミングチャートである。図８では、図６とＳＤＲＡＭの構成は同じであるが、図６に示すようにＳＤＲＡＭのバンクアドレス０、ロウアドレス０、カラムアドレス０〜４までに５つのデータ「ＡＢＣＤＥ」を格納し、次に、バンクアドレス０、ロウアドレス０、カラムアドレス５〜７までに３つのデータ「ＦＧＨ」を格納した状態を示している。
【０００７】
このような５つのデータ「ＡＢＣＤＥ」を書き込むはじめのアクセスコマンドと、３つのデータ「ＦＧＨ」を書き込む次のアクセスコマンドを順に実行する場合、まず図９に示す▲１▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス０，ロウアドレス０を指定している。次に▲２▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス０，カラムアドレス０を指定している。さらに、書き込む最初のデータ「Ａ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＢＣＤＥ」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【０００８】
次のアクセスコマンドでは、はじめのアクセスコマンドとバンクアドレス及びロウアドレスが同じであるため、▲１▼のサイクルに対応するバンクアドレス及びローアドレスの指定は行わない。はじめのアクセスコマンドにおける最後のデータ「Ｅ」を書き込んだ次のサイクル▲３▼において、次のアクセスコマンドにおいてアクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。この場合、バンクアドレス０，カラムアドレス５が指定される。さらに、書き込む最初のデータ「Ｆ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＧＨ」をサイクル毎に出力することにより、２つ目のアクセスコマンドに基づく書込動作を行うことができる。
【０００９】
このように、連続するアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合には、２つのアクセスコマンドは連続してデータの書込が可能であることが分かる。
【００１０】
次に、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ別のロウアドレスをアクセスする場合について説明する。図１０は、同一バンクアドレスかつ別のロウアドレスにデータが書き込まれている場合の一例の説明図、図１１は、同じくそのような書込を行う場合のタイミングチャートである。図１０では、図６とＳＤＲＡＭの構成は同じであるが、図６に示すようにＳＤＲＡＭのバンクアドレス０、ロウアドレス０、カラムアドレス０〜４までに５つのデータ「ＡＢＣＤＥ」を格納し、次に、バンクアドレス０、ロウアドレス１、カラムアドレス５〜７までに３つのデータ「ＦＧＨ」を格納した状態を示している。
【００１１】
このような５つのデータ「ＡＢＣＤＥ」を書き込むはじめのアクセスコマンドと、３つのデータ「ＦＧＨ」を書き込む次のアクセスコマンドを順に実行する場合、まず図１１に示す▲１▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス０，ロウアドレス０を指定している。次に▲２▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス０，カラムアドレス０を指定している。さらに、書き込む最初のデータ「Ａ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＢＣＤＥ」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【００１２】
ここで、次のアクセスコマンドはロウアドレスが異なるので、はじめのアクセスコマンドによって最後のデータ「Ｅ」を書き込んだ次のサイクル▲３▼で、ロウ信号とライト信号をアサートし、アドレス信号としてバンクアドレスを０に設定して、現在アクティブであるバンク０のプリチャージを行う。
【００１３】
次のアクセスコマンドを実行するために、▲４▼のタイミングでアクセスするロウ信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、バンクをアクティブ状態にする。この例では、バンクアドレス０，ロウアドレス１を指定している。次に▲５▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス０，カラムアドレス５を指定している。さらに、書き込む最初のデータ「Ｆ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＧＨ」をサイクル毎に出力する。これにより、２番目のアクセスコマンドによる書込動作を行うことができる。
【００１４】
このように、連続するアクセスコマンドが同一バンクアドレスかつ別のロウアドレスをアクセスする場合には、２つのアクセスコマンド間にプリチャージ、及びバンクアクティブの動作を挿入しなければならない。そのために、例えば図１１に示す例では実際に書込を行うアクセスの間に、４サイクルの時間がかかることが分かる。
【００１５】
最後に、はじめのアクセスコマンドと次のアクセスコマンドが別のバンクアドレスをアクセスする場合について説明する。図１２は、別のバンクアドレスにデータが書き込まれている場合の一例の説明図、図１３は、同じくそのような書込を行う場合のタイミングチャートである。図１２では、図６とＳＤＲＡＭの構成は同じであるが、図６に示すようにＳＤＲＡＭのバンクアドレス０、ロウアドレス０、カラムアドレス０〜４までに５つのデータ「ＡＢＣＤＥ」を格納し、また、バンクアドレス１、ロウアドレス１、カラムアドレス５〜７までに３つのデータ「ＦＧＨ」を格納した状態を示している。
【００１６】
このような５つのデータ「ＡＢＣＤＥ」を書き込むはじめのアクセスコマンドと、３つのデータ「ＦＧＨ」を書き込む次のアクセスコマンドを順に実行する場合、まず図１３に示す▲１▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス０，ロウアドレス０を指定している。次に▲２▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス０，カラムアドレス０を指定している。さらに、書き込む最初のデータ「Ａ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＢＣＤＥ」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【００１７】
次のアクセスコマンドでは、アクセスするバンクが異なるので、事前に例えば▲３▼のサイクルなどで、アクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定し、指定したバンクをアクティブ状態にしておくことができる。この例では、バンクアドレス１，ロウアドレス１を指定し、バンク０へのデータの書込中にバンク１をアクティブ状態にしている。
【００１８】
事前にバンクアドレス１、ロウアドレス１をアクティブにしているため、はじめのアクセスコマンドによる書込動作が終了したらすぐに、▲４▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定することができる。ここではバンクアドレス１，カラムアドレス５を指定している。さらに、書き込む最初のデータ「Ｆ」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「ＧＨ」をサイクル毎に出力する。これにより、２番目のアクセスコマンドに基づく書込動作を行うことができる。
【００１９】
さらに、バンクアドレス０のプリチャージは、バンクアドレス１への書込動作中に行うことができる。例えば▲５▼のサイクルで、ロウ信号とライト信号をアサートし、アドレス信号としてバンクアドレスを０に設定することによって、バンク０のプリチャージを行うことができる。
【００２０】
このように、連続するアクセスコマンドが別のバンクアドレスをアクセスする場合にも、２つのアクセスコマンドは連続して書込動作を行うことが可能であることが分かる。
【００２１】
上述のような動作を利用した従来技術として、例えば特開平１０−１６２１３１号公報や、特開平１０−１１３５６号公報に記載されている技術がある。特開平１０−１６２１３１号公報に記載されている技術では、ＤＲＡＭのアクセスを同一バンクアドレスかつ同一ロウアドレスまたは別バンクアドレスのアクセスコマンドが続くように、画像データを格納する領域を予め確保しておく。これによって、上述のような連続したアクセスが多くなるようにし、ＤＲＡＭアクセスを高速化している。
【００２２】
しかしながら、例えばプリンタの中間言語をラスターイメージに展開するような場合、描画されるイメージの座標は中間言語によりページ内のどこに移動するか分からず、ＤＲＡＭへのアクセスはランダムアクセスになる。このような場合には、上述のようにメモリの割り付けを予め決めていたのでは効率が悪くなってしまうという問題がある。
【００２３】
また特開平１０−１１３５６号公報に記載されている技術では、現在処理しているアクセスコマンドと同一バンク、同一ロウアドレスのアクセスコマンドが存在する場合、優先的にそのコマンドを次に処理するコマンドとして順序を入れ替えるものである。これにより、同一バンクアドレスかつ同一ロウアドレスによるアクセスが実現でき、コマンド間を空けずにアクセスすることができる。
【００２４】
しかしこの技術の場合にも、上述のようにメモリアクセスのランダム性が大きい場合、コマンドバッファ内に同一バンクアドレスかつ同一ロウアドレスのアクセスコマンドが存在する可能性が少なく、アクセス効率が悪かった。
【００２５】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、ＤＲＡＭへのランダムアクセス時にもアクセス時間を短縮して高速化したメモリアクセスシステムを提供することを目的とするものである。
【００２６】
【課題を解決するための手段】
本発明は、アクセスコマンドを受け取ってＤＲＡＭへのアクセスを行うメモリアクセスシステムであって、複数のアクセスコマンドについて、現在処理をしているコマンドと次に処理するコマンドが違うバンクアドレスをアクセスするようにアクセスコマンドの順序を入れ替え、入れ替えた順序でＤＲＡＭへのアクセスを行うものであって、１つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドを用いて、連続するアクセスコマンドが別のバンクをアクセスするように前記アクセスコマンドの入れ替えを行うことを特徴とするものである。
上述のように、違うバンクアドレスへのアクセスは連続して行うことができるので、このような入れ替えを行うことによって、連続アクセスが可能になる。しかも、ランダムアクセスが発生する状況では、バンクアドレスが異なるアクセスコマンドが多く存在する可能性があり、有効にアクセス時間の短縮を図ることができる。また、データの格納領域を予め確保しておく等の制限は不要であり、メモリを効率よく利用することが可能である。
【００２７】
さらに本発明では、１つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドが別のバンクをアクセスするようにアクセスコマンドの入れ替えを行うので、例えば違うバンクアドレスをアクセスするアクセスコマンドが少ない場合でも、アクセスが少なかったバンクアドレスに対するアクセスコマンドを増加させることができる。そのため、隣接するアクセスコマンド間で異なるバンクアドレスをアクセスするように入れ替えを行って連続アクセスを行うことができる可能性が増加し、さらなるアクセス時間の短縮が可能になる。
【００２８】
【発明の実施の形態】
図１は、本発明のメモリアクセスシステムの実施の一形態を示すブロック図である。図中、１はコマンド発生部、２はアクセスコマンド保持部、３はアクセスタイミング制御部、４はＳＤＲＡＭ、５はアクセスコマンド制御部、６はデータ出力制御部、１１〜１４はコマンドバッファ、１５〜１７はセレクタである。この例においては、コマンド発生部１の側からライトコマンドを発行してデータをＳＤＲＡＭ４に格納し、そのデータを、データ出力制御部６からのリードコマンドにより読み出して出力する構成例を示している。
【００２９】
コマンド発生部１は、この例ではＳＤＲＡＭ４に対するライトコマンドを発生する。図２は、ライトコマンドのデータ構造の一例の説明図である。ライトコマンドは、例えば図２に示すように、ライトアクセス開始アドレス（バンクアドレス、ロウアドレス、カラムアドレス）、ライトデータ、ライトバースト数（転送データ量）などで構成されている。なお、このコマンド発生部１を設けず、例えば図２に示したようなライトコマンドが外部から入力されるように構成してもよい。
【００３０】
アクセスコマンド保持部２は、コマンド発生部１で発生した複数のライトコマンドを保持する。この例では、アクセスコマンド保持部２内には４つのコマンドバッファ１１〜１４を有しており、コマンド発生部１から発生したライトコマンドは、コマンドバッファ１１，１２，１３の順に空きがあるか否かを判断して、空いているコマンドバッファに転送される。コマンドバッファ１１に格納されているライトコマンドは、次にアクセスタイミング制御部３に送られる。また、コマンドバッファ１４は、アクセスコマンド制御部でライトコマンドを分割してライトコマンドが増加する場合に利用される。コマンドバッファ１１〜１３の入力側にはそれぞれセレクタ１５〜１７が設けられており、前段のコマンドバッファ１２〜１４が保持しているライトコマンド、コマンド発生部１からのライトコマンド、アクセスコマンド制御部５からのライトコマンドのいずれかを選択する。もちろん、アクセスコマンド保持部２はこのような構成に限られるものではなく、複数のライトコマンドを順序付けして保持できればよい。もちろん、保持するコマンド数も任意である。
【００３１】
アクセスタイミング制御部３は、ＳＤＲＡＭ４の状態を管理しながら、アクセスコマンド保持部２からのライト要求、データ出力制御部６からのリード要求を受け取り、ＳＤＲＡＭ４へのアクセスを実行する。
【００３２】
アクセスコマンド制御部５は、アクセスコマンド保持部２に保持されているライトコマンドを、現在アクセスタイミング制御部３でアクセス処理中のライトコマンドと、次に処理するライトコマンドが違うバンクアドレスをアクセスするように、アクセスコマンド保持部２内のライトコマンドを入れ替える。また、入れ替えに際して、必要があればライトコマンドの分割を行い、分割したライトコマンドを用いて連続するライトコマンドが違うバンクアドレスをアクセスするように入れ替えを行う。
【００３３】
図３は、アクセスコマンド制御部における分割、順次入れ替え制御処理の一例を示すフローチャートである。なお、図３の説明及び以下の説明において、コマンドバッファ１１に格納されているライトコマンドをＡ、コマンドバッファ１２に格納されているライトコマンドをＢ、コマンドバッファ１３に格納されているライトコマンドをＣとして示している。また、図３においては、現在処理中のコマンドを「現在」と称している。
【００３４】
まずＳ２１において、現在、アクセスタイミング制御部３で処理中のコマンドのアドレスと、コマンドバッファ１１に格納されているライトコマンド（Ａ）のアドレスを比較する。比較の結果、同一バンクアドレスかつ別のロウアドレスでなければ、アクセスが遅くなることはない。すなわち、同一バンクアドレスかつ同一ロウアドレスであれば、図８，図９で説明したように連続したアクセスが可能である。また、異なるバンクアドレスであれば、図１２，図１３で説明したように、この場合も連続したアクセスが可能である。そのため、Ｓ２２において、アクセスコマンド制御部５による分割及び順序の入れ替えは行わない。
【００３５】
Ｓ２１における比較結果が、同一バンクアドレスかつ別のロウアドレスである場合には、図１０，図１１で説明したように、アクセスが遅くなる。この場合には、Ｓ２３において、コマンドバッファ１２に格納されているライトコマンド（Ｂ）またはコマンドバッファ１３に格納されているライトコマンド（Ｃ）のいずれかに、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスのものが存在するか否かを判断する。判断の結果、別のバンクアドレスのものが存在しなければ、すべて同一バンクアドレスのため、次のライトコマンドとして別のバンクアドレスのものを選択することはできない。この場合には、Ｓ２４において、例えば同一バンクアドレスかつ同一ロウアドレスのライトコマンドが存在すれば、そのライトコマンドを続けて実行するように順序を入れ替えるとよい。同一バンクアドレスかつ同一ロウアドレスのライトコマンドがなければ、そのままの順序で実行することになる。
【００３６】
Ｓ２３における比較の結果、別バンクアドレスのライトコマンドが存在する場合には、さらにＳ２５において、コマンドバッファ１２及びコマンドバッファ１３に格納されているライトコマンド（Ｂ）及び（Ｃ）の両方が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスであるか否かを判断する。判断の結果、コマンドバッファ１２及びコマンドバッファ１３に格納されているライトコマンド（Ｂ）及び（Ｃ）の両方が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスである場合には、Ｓ２６において、アクセスコマンド制御部５でコマンド順序の入れ替えを行う。この場合には、コマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１２に格納されているライトコマンド（Ｂ）とを入れ替える。これによって、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ１１に格納されたライトコマンド（Ｂ）のバンクアドレスが異なる。また、新たにコマンドバッファ１１に格納されたライトコマンド（Ｂ）と、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）のバンクアドレスも異なる。さらに、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）と、コマンドバッファ１３に格納されたライトコマンド（Ｃ）のバンクアドレスも異なる。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせることができ、アクセスを高速化することができる。
【００３７】
Ｓ２５の判断で、コマンドバッファ１２及びコマンドバッファ１３に格納されているライトコマンド（Ｂ）及び（Ｃ）の両方が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスであると判断されなかった場合には、Ｓ２７の判断を行う。この場合には、コマンドバッファ１２に格納されているライトコマンド（Ｂ）あるいはコマンドバッファ１３に格納されているライトコマンド（Ｃ）のいずれか一方のみが、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスである。Ｓ２７において、コマンドバッファ１２に格納されているライトコマンド（Ｂ）が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスであるか否かを判定する。
【００３８】
Ｓ２７でコマンドバッファ１２に格納されているライトコマンド（Ｂ）が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスであると判断された場合、さらにＳ２８において、コマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１３に格納されているライトコマンド（Ｃ）とが同一バンクアドレスかつ同一ロウアドレスであるか否かを判定する。コマンドバッファ１２に格納されているライトコマンド（Ｂ）が、アクセスタイミング制御部３にて現在処理中のコマンドのアドレスと別のバンクアドレスである場合、単純にはコマンドバッファ１１とコマンドバッファ１２内のライトコマンド（Ａ），（Ｂ）を入れ替えればよい。しかし、入れ替えた後に、コマンドバッファ１３内のライトコマンド（Ｃ）と同一バンクアドレスになってしまう場合が発生する。Ｓ２８ではこのような場合を判定している。
【００３９】
Ｓ２８でコマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１３に格納されているライトコマンド（Ｃ）とが同一バンクアドレスかつ同一ロウアドレスであると判定された場合、Ｓ２９において、アクセスコマンド制御部５でコマンド順序の入れ替えを行う。この場合には、コマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１２に格納されているライトコマンド（Ｂ）とを入れ替える。これによって、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ１１に格納されたライトコマンド（Ｂ）のバンクアドレスが異なる。また、新たにコマンドバッファ１１に格納されたライトコマンド（Ｂ）と、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）のバンクアドレスも異なる。さらに、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）と、コマンドバッファ１３に格納されたライトコマンド（Ｃ）とは、同一バンクアドレスかつ同一ロウアドレスである。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせ、あるいは同一バンクアドレスかつ同一ロウアドレスのライトコマンドを連続させることができるので、アクセスを高速化することができる。
【００４０】
Ｓ２８でコマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１３に格納されているライトコマンド（Ｃ）とが同一バンクアドレスかつ同一ロウアドレスでなかった場合、コマンドバッファ１１に格納されているライトコマンド（Ａ）とコマンドバッファ１２に格納されているライトコマンド（Ｂ）を入れ替えると、新たなコマンドバッファ１２内のライトコマンド（Ａ）とコマンドバッファ１３に格納されているライトコマンド（Ｃ）とが同一バンクアドレスかつ別のロウアドレスとなってしまう。そのため、Ｓ３０において、コマンドバッファ１２に格納されているライトコマンド（Ｂ）を分割し、コマンド順序の入れ替えを行う。ここでは、分割したライトコマンドをＢ’、Ｂ”として示している。
【００４１】
図４は、コマンド分割の一例の説明図である。具体例として、図４（Ａ）に示すライトコマンドでは、バンクアドレス０，ロウアドレス０，カラムアドレス５から、バースト数２０のデータをＳＤＲＡＭ４に書き込む例を示している。このようなライトコマンドを、例えばバースト数が１０ずつの２つのライトコマンドに分割することができる。すなわち、図４（Ｂ）に示すように、バンクアドレス０，ロウアドレス０，カラムアドレス５から、バースト数１０のデータを書き込むライトコマンドと、図４（Ｃ）に示すように、バンクアドレス０，ロウアドレス０，カラムアドレス１５から、バースト数１０のデータを書き込むライトコマンドに分割することができる。もちろん、分割の際に、バースト数をいくつに分割するかは任意であるが、望ましくは、バンクプリチャージ及びバンクアクティブのためのサイクル数を考慮して分割するとよい。
【００４２】
Ｓ３０におけるコマンド順序の入れ替えは、分割したライトコマンドの一方（ここではＢ’）をコマンドバッファ１１へ、コマンドバッファ１１に格納されていたライトコマンド（Ａ）をコマンドバッファ１２へ、分割したライトコマンドの他方（ここではＢ”）をコマンドバッファ１３へ、コマンドバッファ１３に格納されていたライトコマンド（Ｃ）をコマンドバッファ１４へ、それぞれ格納することによって行う。これによって、コマンド順序はＢ’，Ａ，Ｂ”，Ｃの順となる。このようなコマンドの分割及び順序の入れ替えによって、コマンド間はすべて別のバンクアドレスとなり、アクセスを高速化することができる。
【００４３】
Ｓ２７でコマンドバッファ１２に格納されているライトコマンド（Ｂ）が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと同一バンクアドレスであると判断された場合、コマンドバッファ１３に格納されているライトコマンド（Ｃ）が、現在、アクセスタイミング制御部３にて処理中のコマンドのアドレスと別のバンクアドレスである。この場合には、現在処理中のコマンド、コマンドバッファ１１に格納されているライトコマンド（Ａ）、コマンドバッファ１２に格納されているライトコマンド（Ｂ）は、同一のバンクアドレスである。そのため、別のバンクアドレスをアクセスするコマンドバッファ１３に格納されているライトコマンド（Ｃ）をコマンドバッファ１１あるいはコマンドバッファ１２に格納されるように順序を入れ替えても、いずれかの連続するコマンド間で同一バンクアドレスとなってしまう。
【００４４】
連続するコマンドが同一バンクアドレスであっても、同一ロウアドレスであればよいので、Ｓ３１において、コマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１２に格納されているライトコマンド（Ｂ）とが同一バンクアドレスかつ同一ロウアドレスであるか否かを判定する。コマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１２に格納されているライトコマンド（Ｂ）とが同一バンクアドレスかつ同一ロウアドレスである場合、Ｓ３２において、この２つのライトコマンドの順序を保ったまま、コマンドの順序の入れ替えを行う。すなわち、コマンドバッファ１３に格納されているライトコマンド（Ｃ）をコマンドバッファ１１へ、コマンドバッファ１１に格納されていたライトコマンド（Ａ）をコマンドバッファ１２へ、コマンドバッファ１２に格納されているライトコマンド（Ｂ）をコマンドバッファ１３へ、それぞれ格納させる。このようにして、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ１１に格納されたライトコマンド（Ｃ）のバンクアドレスが異なる。また、新たにコマンドバッファ１１に格納されたライトコマンド（Ｃ）と、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）のバンクアドレスも異なる。さらに、新たにコマンドバッファ１２に格納されたライトコマンド（Ａ）と、コマンドバッファ１３に格納されたライトコマンド（Ｂ）とは、同一バンクアドレスかつ同一ロウアドレスである。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせ、あるいは同一バンクアドレスかつ同一ロウアドレスのライトコマンドを連続させることができるので、アクセスを高速化することができる。
【００４５】
Ｓ３１でコマンドバッファ１１に格納されているライトコマンド（Ａ）と、コマンドバッファ１２に格納されているライトコマンド（Ｂ）とが同一バンクアドレスかつ同一ロウアドレスでなかった場合、現在処理中のコマンド、コマンドバッファ１１に格納されているライトコマンド（Ａ）、コマンドバッファ１２に格納されているライトコマンド（Ｂ）は、同一バンクアドレスでかつ別々のロウアドレスをアクセスするものであり、アクセスの効率が悪い。このような場合には、Ｓ３３において、バンクアドレスが異なるコマンドバッファ１３内のライトコマンド（Ｃ）を分割し、コマンド順序の入れ替えを行う。ここでは、分割したライトコマンドをＣ’、Ｃ”として示している。このライトコマンドの分割は、上述の図４に示した具体例と同様にして行えばよい。コマンド順序の入れ替えは、分割したライトコマンドの一方（ここではＣ’）をコマンドバッファ１１へ、コマンドバッファ１１に格納されていたライトコマンド（Ａ）をコマンドバッファ１２へ、分割したライトコマンドの他方（ここではＣ”）をコマンドバッファ１３へ、コマンドバッファ１２に格納されていたライトコマンド（Ｂ）をコマンドバッファ１４へ、それぞれ格納することによって行う。これによって、コマンド順序はＣ’，Ａ，Ｃ”，Ｂの順となる。このようなコマンドの分割及び順序の入れ替えによって、コマンド間はすべて別のバンクアドレスとなり、アクセスを高速化することができる。
【００４６】
図５は、本発明のメモリアクセスシステムの実施の一形態における動作の具体例の説明図である。図５（ｂ）に本発明のメモリアクセスシステムの実施の一形態を用いた場合の動作の具体例を示し、比較例として、図５（ａ）には従来のメモリアクセス時の動作を示している。なお、図中の横軸は、処理に要する時間を表す時間軸であり、縦線で区分して各サイクルを示している。また、図中の上部及び下部に、それぞれのタイミングで実行されているライトコマンドを示している。さらに、図中の斜線でハッチングを施して示したサイクルは、バンクアクティブのためのサイクルであり、クロスハッチングを施して示したサイクルはバンクプリチャージを行うためのサイクルを示している。
【００４７】
この具体例では、図中の上下に示すライトコマンドを処理する場合について説明する。ここで、ライトコマンド（Ｎ）は現在処理中のライトコマンドを示しており、バンクアドレス０、ロウアドレス０、カラムアドレス０からバースト数１０でデータＮを書き込むコマンドである。ライトコマンド（Ａ）はバンクアドレス０、ロウアドレス１、カラムアドレス０からバースト数１０でデータＡを書き込むライトコマンドである。同様に、ライトコマンド（Ｂ）はバンクアドレス０、ロウアドレス２、カラムアドレス０からバースト数１０でデータＢを書き込むコマンド、ライトコマンド（Ｃ）はバンクアドレス１、ロウアドレス０、カラムアドレス０からバースト数１０でデータＣを書き込むコマンドである。また、後述するように、ライトコマンド（Ｃ’）及びライトコマンド（Ｃ”）は、本発明によりライトコマンド（Ｃ）を分割したものである。
【００４８】
まず、従来のメモリアクセス時の動作について説明する。ライトコマンド（Ｎ）とライトコマンド（Ａ）は、同一バンクアドレス、別ロウアドレスのため、連続して実行させるには実際のライトアクセス以外に両者のアクセス間でバンクプリチャージ、バンクアクティブのために計４サイクルかかる。これは、図１０，図１１で説明したとおりである。ライトコマンド（Ａ）とライトコマンド（Ｂ）についても、同様な理由でライトアクセス以外にバンクプリチャージ、バンクアクティブのために計４サイクルが必要である。ライトコマンド（Ｂ）とライトコマンド（Ｃ）は、バンクアドレスが異なるため、バンクプリチャージ、バンクアクティブの処理はライトコマンド（Ｂ）の実行中に行うことができ、この２つのライトコマンドについては連続してデータの書込を行うことができる。
【００４９】
これに対して本発明のメモリアクセスシステムでは、図３に示したフローチャートに従ってライトコマンド（Ａ）〜（Ｃ）を処理する場合、Ｓ３３における処理が行われる。すなわち、ライトコマンド（Ｃ）をライトコマンド（Ｃ’）とライトコマンド（Ｃ”）の２つに分割し、分割した２つのライトコマンドをライトコマンド（Ｎ）とライトコマンド（Ａ）の間、及び、ライトコマンド（Ａ）とライトコマンド（Ｂ）の間に挿入するように順序を入れ替える。これによって、ライトコマンドは図中の下部に示すように、（Ｎ）→（Ｃ’）→（Ａ）→（Ｃ”）→（Ｂ）のように並べ替えられる。バンクアドレスを参照して分かるように、このような順に並べ替えたライトコマンドは、バンクアドレスが連続しない。そのため、図５（ｂ）に示すように、バンクプリチャージ及びバンクアクティブを、実際の書込動作と並行して行うことができ、従ってデータの書込動作を連続して行うことができる。そのため、メモリアクセスを高速化することができる。図５に示した例では、図５（ａ）に示す従来のアクセス方法では５０サイクルかかっているが、本発明のメモリアクセスシステムでは図５（ｂ）に示すように４２サイクルで処理が終了している。
【００５０】
以上、本発明のメモリアクセスシステムの実施の一形態について説明した。本発明はこの実施の一形態に限られるものではなく、種々の変形が可能である。例えば、上述のようにアクセスコマンド保持部２に保持するコマンド数は３つ（あるいは４つ）に限られるものではなく、さらに多くのコマンドを保持可能に構成してもよい。多くのコマンドを保持することができれば、別のバンクをアクセスするコマンドが存在する確率が高くなり、並べ替えや必要に応じて分割を行うことによって、さらにアクセスの高速化を実現することができる。また、その場合には１つのコマンドを必要に応じて３分割以上したり、複数のコマンドについて分割してもよい。
【００５１】
また、図１に示した例では、コマンド発生部１の側からライトコマンドを発行してデータをＳＤＲＡＭ４に格納し、そのデータを、データ出力制御部６からのリードコマンドにより読み出して出力する構成例を示しているが、本発明はこれに限られるものではない。ライトコマンドによる書込動作だけでなく、リードコマンドによる読出動作も含めて、同様に並べ替えや必要に応じて分割を行い、アクセスを高速化することができる。
【００５２】
【発明の効果】
以上の説明から明らかなように、本発明によれば、違うバンクアドレスへのアクセスを行うアクセスコマンドが連続するように、必要に応じてアクセスコマンドを分割し、アクセスコマンドの並び替えを行って、ＤＲＡＭへのアクセスを行う。これによって、ＤＲＡＭへのアクセスを高速化してアクセス時間を短縮することができるという効果がある。特に、例えばランダムアクセスが発生する場合には、違うバンクアドレスへのアクセスを行うアクセスコマンドが発生する確率が高く、そのような用途に対しては高い効果を得ることができる。
【図面の簡単な説明】
【図１】  本発明のメモリアクセスシステムの実施の一形態を示すブロック図である。
【図２】  ライトコマンドのデータ構造の一例の説明図である。
【図３】  アクセスコマンド制御部における分割、順次入れ替え制御処理の一例を示すフローチャートである。
【図４】  コマンド分割の一例の説明図である。
【図５】  本発明のメモリアクセスシステムの実施の一形態における動作の具体例の説明図である。
【図６】  一般的なＳＤＲＡＭの構成の模式図である。
【図７】  一般的なＳＤＲＡＭへのアクセス時のタイミングチャートである。
【図８】  同一バンクアドレスかつ同一ロウアドレスにデータが書き込まれている場合の一例の説明図である。
【図９】  同一バンクアドレスかつ同一ロウアドレスにデータの書込を行う場合のタイミングチャートである。
【図１０】  同一バンクアドレスかつ別のロウアドレスにデータが書き込まれている場合の一例の説明図である。
【図１１】  同一バンクアドレスかつ別のロウアドレスにデータの書込を行う場合のタイミングチャートである。
【図１２】  別のバンクアドレスにデータが書き込まれている場合の一例の説明図である。
【図１３】  別のバンクアドレスにデータの書込を行う場合のタイミングチャートである。
【符号の説明】
１…コマンド発生部、２…アクセスコマンド保持部、３…アクセスタイミング制御部、４…ＳＤＲＡＭ、５…アクセスコマンド制御部、６…データ出力制御部、１１〜１４…コマンドバッファ、１５〜１７…セレクタ。
【図１】
0003846543.tif 000002
【図２】
0003846543.tif 000003
【図３】
0003846543.tif 000004
【図４】
0003846543.tif 000005
【図５】
0003846543.tif 000006
【図６】
0003846543.tif 000007
【図７】
0003846543.tif 000008
【図８】
0003846543.tif 000009
【図９】
0003846543.tif 000010
【図１０】
0003846543.tif 000011
【図１１】
0003846543.tif 000012
【図１２】
0003846543.tif 000013
【図１３】
0003846543.tif 000014