JP3846543B2 - Memory access system - Google Patents

Memory access system Download PDF

Info

Publication number
JP3846543B2
JP3846543B2 JP2000069530A JP2000069530A JP3846543B2 JP 3846543 B2 JP3846543 B2 JP 3846543B2 JP 2000069530 A JP2000069530 A JP 2000069530A JP 2000069530 A JP2000069530 A JP 2000069530A JP 3846543 B2 JP3846543 B2 JP 3846543B2
Authority
JP
Japan
Prior art keywords
command
access
address
write
bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000069530A
Other languages
Japanese (ja)
Other versions
JP2001256106A (en
Inventor
祐一 河田
健二 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2000069530A priority Critical patent/JP3846543B2/en
Publication of JP2001256106A publication Critical patent/JP2001256106A/en
Application granted granted Critical
Publication of JP3846543B2 publication Critical patent/JP3846543B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Dram (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、DRAMへアクセスするためのメモリアクセスシステムに関するものであり、特にメモリをランダムアクセスする際に用いて好適なメモリアクセスシステムに関するものである。
【0002】
【従来の技術】
まず一般的なDRAMアクセスについて説明する。図6は、一般的なSDRAMの構成の模式図である。ここではバンクアドレス0とバンクアドレス1の2つのバンクから構成されており、各バンクにおいてはロウアドレスとカラムアドレスによってデータが特定される。ここでは簡単のためにロウアドレス、カラムアドレスとも0〜7の値をとるものとして示している。また、バンクアドレス0,ロウアドレス0,カラムアドレス0〜4には、データ「ABCDE」が格納されている。
【0003】
図7は、一般的なSDRAMへのアクセス時のタイミングチャートである。一例として、図6に示すように、バンクアドレス0、ロウアドレス0、カラムアドレス0〜4までに5つのデータ「ABCDE」を格納する、1つのアクセスコマンドを処理する動作を示している。まず▲1▼のサイクルにおいて、アクセスするロウ信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定されたバンクをアクティブ状態にする。なお、アドレス信号の表記は、左側の数字がバンクアドレスを示しており、右側の数字がロウアドレスあるいはカラムアドレスを示している(以下の説明において同じである)。例えば▲1▼のサイクルでは、アドレス信号として「00」と表記しているが、これはバンクアドレス0,ロウアドレス0を示している。
【0004】
次に▲2▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。アドレス信号の表記は「00」であるが、これはバンクアドレス0,カラムアドレス0を示している。さらに▲2▼のサイクルにおいて、書き込む最初のデータ「A」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「BCDE」をサイクル毎に出力する。このようにして5つのデータ「ABCDE」をSDRAMに書き込むことができる。
【0005】
次に、連続した複数のアクセスコマンドを処理する場合を説明する。アクセスコマンドが連続する場合として、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合、同一バンクアドレスであるが別のロウアドレスである場合、別のバンクアドレスの場合の3種類のコマンド間処理が考えられる。
【0006】
まず、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合のアクセスについて説明する。図8は、同一バンクアドレスかつ同一ロウアドレスにデータが書き込まれている場合の一例の説明図、図9は、同じくそのような書込を行う場合のタイミングチャートである。図8では、図6とSDRAMの構成は同じであるが、図6に示すようにSDRAMのバンクアドレス0、ロウアドレス0、カラムアドレス0〜4までに5つのデータ「ABCDE」を格納し、次に、バンクアドレス0、ロウアドレス0、カラムアドレス5〜7までに3つのデータ「FGH」を格納した状態を示している。
【0007】
このような5つのデータ「ABCDE」を書き込むはじめのアクセスコマンドと、3つのデータ「FGH」を書き込む次のアクセスコマンドを順に実行する場合、まず図9に示す▲1▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス0,ロウアドレス0を指定している。次に▲2▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス0,カラムアドレス0を指定している。さらに、書き込む最初のデータ「A」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「BCDE」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【0008】
次のアクセスコマンドでは、はじめのアクセスコマンドとバンクアドレス及びロウアドレスが同じであるため、▲1▼のサイクルに対応するバンクアドレス及びローアドレスの指定は行わない。はじめのアクセスコマンドにおける最後のデータ「E」を書き込んだ次のサイクル▲3▼において、次のアクセスコマンドにおいてアクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。この場合、バンクアドレス0,カラムアドレス5が指定される。さらに、書き込む最初のデータ「F」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「GH」をサイクル毎に出力することにより、2つ目のアクセスコマンドに基づく書込動作を行うことができる。
【0009】
このように、連続するアクセスコマンドが同一バンクアドレスかつ同一ロウアドレスの場合には、2つのアクセスコマンドは連続してデータの書込が可能であることが分かる。
【0010】
次に、はじめのアクセスコマンドと次のアクセスコマンドが同一バンクアドレスかつ別のロウアドレスをアクセスする場合について説明する。図10は、同一バンクアドレスかつ別のロウアドレスにデータが書き込まれている場合の一例の説明図、図11は、同じくそのような書込を行う場合のタイミングチャートである。図10では、図6とSDRAMの構成は同じであるが、図6に示すようにSDRAMのバンクアドレス0、ロウアドレス0、カラムアドレス0〜4までに5つのデータ「ABCDE」を格納し、次に、バンクアドレス0、ロウアドレス1、カラムアドレス5〜7までに3つのデータ「FGH」を格納した状態を示している。
【0011】
このような5つのデータ「ABCDE」を書き込むはじめのアクセスコマンドと、3つのデータ「FGH」を書き込む次のアクセスコマンドを順に実行する場合、まず図11に示す▲1▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス0,ロウアドレス0を指定している。次に▲2▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス0,カラムアドレス0を指定している。さらに、書き込む最初のデータ「A」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「BCDE」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【0012】
ここで、次のアクセスコマンドはロウアドレスが異なるので、はじめのアクセスコマンドによって最後のデータ「E」を書き込んだ次のサイクル▲3▼で、ロウ信号とライト信号をアサートし、アドレス信号としてバンクアドレスを0に設定して、現在アクティブであるバンク0のプリチャージを行う。
【0013】
次のアクセスコマンドを実行するために、▲4▼のタイミングでアクセスするロウ信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、バンクをアクティブ状態にする。この例では、バンクアドレス0,ロウアドレス1を指定している。次に▲5▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス0,カラムアドレス5を指定している。さらに、書き込む最初のデータ「F」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「GH」をサイクル毎に出力する。これにより、2番目のアクセスコマンドによる書込動作を行うことができる。
【0014】
このように、連続するアクセスコマンドが同一バンクアドレスかつ別のロウアドレスをアクセスする場合には、2つのアクセスコマンド間にプリチャージ、及びバンクアクティブの動作を挿入しなければならない。そのために、例えば図11に示す例では実際に書込を行うアクセスの間に、4サイクルの時間がかかることが分かる。
【0015】
最後に、はじめのアクセスコマンドと次のアクセスコマンドが別のバンクアドレスをアクセスする場合について説明する。図12は、別のバンクアドレスにデータが書き込まれている場合の一例の説明図、図13は、同じくそのような書込を行う場合のタイミングチャートである。図12では、図6とSDRAMの構成は同じであるが、図6に示すようにSDRAMのバンクアドレス0、ロウアドレス0、カラムアドレス0〜4までに5つのデータ「ABCDE」を格納し、また、バンクアドレス1、ロウアドレス1、カラムアドレス5〜7までに3つのデータ「FGH」を格納した状態を示している。
【0016】
このような5つのデータ「ABCDE」を書き込むはじめのアクセスコマンドと、3つのデータ「FGH」を書き込む次のアクセスコマンドを順に実行する場合、まず図13に示す▲1▼のサイクルでアクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定する。これにより、指定したバンクをアクティブ状態にする。この例では、バンクアドレス0,ロウアドレス0を指定している。次に▲2▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定する。ここではバンクアドレス0,カラムアドレス0を指定している。さらに、書き込む最初のデータ「A」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「BCDE」をサイクル毎に出力する。これにより、はじめのアクセスコマンドに基づく書込動作を行うことができる。
【0017】
次のアクセスコマンドでは、アクセスするバンクが異なるので、事前に例えば▲3▼のサイクルなどで、アクセスするロウ信号をアサートし、アドレス信号によりアクセスするバンクアドレスおよびロウアドレスを指定し、指定したバンクをアクティブ状態にしておくことができる。この例では、バンクアドレス1,ロウアドレス1を指定し、バンク0へのデータの書込中にバンク1をアクティブ状態にしている。
【0018】
事前にバンクアドレス1、ロウアドレス1をアクティブにしているため、はじめのアクセスコマンドによる書込動作が終了したらすぐに、▲4▼のサイクルにおいて、アクセスするカラム信号およびライト信号をアサートし、アドレス信号としてアクセスするバンクアドレスおよびカラムアドレスを指定することができる。ここではバンクアドレス1,カラムアドレス5を指定している。さらに、書き込む最初のデータ「F」をデータ信号にセットする。次のサイクルから順次、書き込むデータ「GH」をサイクル毎に出力する。これにより、2番目のアクセスコマンドに基づく書込動作を行うことができる。
【0019】
さらに、バンクアドレス0のプリチャージは、バンクアドレス1への書込動作中に行うことができる。例えば▲5▼のサイクルで、ロウ信号とライト信号をアサートし、アドレス信号としてバンクアドレスを0に設定することによって、バンク0のプリチャージを行うことができる。
【0020】
このように、連続するアクセスコマンドが別のバンクアドレスをアクセスする場合にも、2つのアクセスコマンドは連続して書込動作を行うことが可能であることが分かる。
【0021】
上述のような動作を利用した従来技術として、例えば特開平10−162131号公報や、特開平10−11356号公報に記載されている技術がある。特開平10−162131号公報に記載されている技術では、DRAMのアクセスを同一バンクアドレスかつ同一ロウアドレスまたは別バンクアドレスのアクセスコマンドが続くように、画像データを格納する領域を予め確保しておく。これによって、上述のような連続したアクセスが多くなるようにし、DRAMアクセスを高速化している。
【0022】
しかしながら、例えばプリンタの中間言語をラスターイメージに展開するような場合、描画されるイメージの座標は中間言語によりページ内のどこに移動するか分からず、DRAMへのアクセスはランダムアクセスになる。このような場合には、上述のようにメモリの割り付けを予め決めていたのでは効率が悪くなってしまうという問題がある。
【0023】
また特開平10−11356号公報に記載されている技術では、現在処理しているアクセスコマンドと同一バンク、同一ロウアドレスのアクセスコマンドが存在する場合、優先的にそのコマンドを次に処理するコマンドとして順序を入れ替えるものである。これにより、同一バンクアドレスかつ同一ロウアドレスによるアクセスが実現でき、コマンド間を空けずにアクセスすることができる。
【0024】
しかしこの技術の場合にも、上述のようにメモリアクセスのランダム性が大きい場合、コマンドバッファ内に同一バンクアドレスかつ同一ロウアドレスのアクセスコマンドが存在する可能性が少なく、アクセス効率が悪かった。
【0025】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、DRAMへのランダムアクセス時にもアクセス時間を短縮して高速化したメモリアクセスシステムを提供することを目的とするものである。
【0026】
【課題を解決するための手段】
本発明は、アクセスコマンドを受け取ってDRAMへのアクセスを行うメモリアクセスシステムであって、複数のアクセスコマンドについて、現在処理をしているコマンドと次に処理するコマンドが違うバンクアドレスをアクセスするようにアクセスコマンドの順序を入れ替え、入れ替えた順序でDRAMへのアクセスを行うものであって、1つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドを用いて、連続するアクセスコマンドが別のバンクをアクセスするように前記アクセスコマンドの入れ替えを行うことを特徴とするものである。
上述のように、違うバンクアドレスへのアクセスは連続して行うことができるので、このような入れ替えを行うことによって、連続アクセスが可能になる。しかも、ランダムアクセスが発生する状況では、バンクアドレスが異なるアクセスコマンドが多く存在する可能性があり、有効にアクセス時間の短縮を図ることができる。また、データの格納領域を予め確保しておく等の制限は不要であり、メモリを効率よく利用することが可能である。
【0027】
さらに本発明では、1つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドが別のバンクをアクセスするようにアクセスコマンドの入れ替えを行うので、例えば違うバンクアドレスをアクセスするアクセスコマンドが少ない場合でも、アクセスが少なかったバンクアドレスに対するアクセスコマンドを増加させることができる。そのため、隣接するアクセスコマンド間で異なるバンクアドレスをアクセスするように入れ替えを行って連続アクセスを行うことができる可能性が増加し、さらなるアクセス時間の短縮が可能になる。
【0028】
【発明の実施の形態】
図1は、本発明のメモリアクセスシステムの実施の一形態を示すブロック図である。図中、1はコマンド発生部、2はアクセスコマンド保持部、3はアクセスタイミング制御部、4はSDRAM、5はアクセスコマンド制御部、6はデータ出力制御部、11〜14はコマンドバッファ、15〜17はセレクタである。この例においては、コマンド発生部1の側からライトコマンドを発行してデータをSDRAM4に格納し、そのデータを、データ出力制御部6からのリードコマンドにより読み出して出力する構成例を示している。
【0029】
コマンド発生部1は、この例ではSDRAM4に対するライトコマンドを発生する。図2は、ライトコマンドのデータ構造の一例の説明図である。ライトコマンドは、例えば図2に示すように、ライトアクセス開始アドレス(バンクアドレス、ロウアドレス、カラムアドレス)、ライトデータ、ライトバースト数(転送データ量)などで構成されている。なお、このコマンド発生部1を設けず、例えば図2に示したようなライトコマンドが外部から入力されるように構成してもよい。
【0030】
アクセスコマンド保持部2は、コマンド発生部1で発生した複数のライトコマンドを保持する。この例では、アクセスコマンド保持部2内には4つのコマンドバッファ11〜14を有しており、コマンド発生部1から発生したライトコマンドは、コマンドバッファ11,12,13の順に空きがあるか否かを判断して、空いているコマンドバッファに転送される。コマンドバッファ11に格納されているライトコマンドは、次にアクセスタイミング制御部3に送られる。また、コマンドバッファ14は、アクセスコマンド制御部でライトコマンドを分割してライトコマンドが増加する場合に利用される。コマンドバッファ11〜13の入力側にはそれぞれセレクタ15〜17が設けられており、前段のコマンドバッファ12〜14が保持しているライトコマンド、コマンド発生部1からのライトコマンド、アクセスコマンド制御部5からのライトコマンドのいずれかを選択する。もちろん、アクセスコマンド保持部2はこのような構成に限られるものではなく、複数のライトコマンドを順序付けして保持できればよい。もちろん、保持するコマンド数も任意である。
【0031】
アクセスタイミング制御部3は、SDRAM4の状態を管理しながら、アクセスコマンド保持部2からのライト要求、データ出力制御部6からのリード要求を受け取り、SDRAM4へのアクセスを実行する。
【0032】
アクセスコマンド制御部5は、アクセスコマンド保持部2に保持されているライトコマンドを、現在アクセスタイミング制御部3でアクセス処理中のライトコマンドと、次に処理するライトコマンドが違うバンクアドレスをアクセスするように、アクセスコマンド保持部2内のライトコマンドを入れ替える。また、入れ替えに際して、必要があればライトコマンドの分割を行い、分割したライトコマンドを用いて連続するライトコマンドが違うバンクアドレスをアクセスするように入れ替えを行う。
【0033】
図3は、アクセスコマンド制御部における分割、順次入れ替え制御処理の一例を示すフローチャートである。なお、図3の説明及び以下の説明において、コマンドバッファ11に格納されているライトコマンドをA、コマンドバッファ12に格納されているライトコマンドをB、コマンドバッファ13に格納されているライトコマンドをCとして示している。また、図3においては、現在処理中のコマンドを「現在」と称している。
【0034】
まずS21において、現在、アクセスタイミング制御部3で処理中のコマンドのアドレスと、コマンドバッファ11に格納されているライトコマンド(A)のアドレスを比較する。比較の結果、同一バンクアドレスかつ別のロウアドレスでなければ、アクセスが遅くなることはない。すなわち、同一バンクアドレスかつ同一ロウアドレスであれば、図8,図9で説明したように連続したアクセスが可能である。また、異なるバンクアドレスであれば、図12,図13で説明したように、この場合も連続したアクセスが可能である。そのため、S22において、アクセスコマンド制御部5による分割及び順序の入れ替えは行わない。
【0035】
S21における比較結果が、同一バンクアドレスかつ別のロウアドレスである場合には、図10,図11で説明したように、アクセスが遅くなる。この場合には、S23において、コマンドバッファ12に格納されているライトコマンド(B)またはコマンドバッファ13に格納されているライトコマンド(C)のいずれかに、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスのものが存在するか否かを判断する。判断の結果、別のバンクアドレスのものが存在しなければ、すべて同一バンクアドレスのため、次のライトコマンドとして別のバンクアドレスのものを選択することはできない。この場合には、S24において、例えば同一バンクアドレスかつ同一ロウアドレスのライトコマンドが存在すれば、そのライトコマンドを続けて実行するように順序を入れ替えるとよい。同一バンクアドレスかつ同一ロウアドレスのライトコマンドがなければ、そのままの順序で実行することになる。
【0036】
S23における比較の結果、別バンクアドレスのライトコマンドが存在する場合には、さらにS25において、コマンドバッファ12及びコマンドバッファ13に格納されているライトコマンド(B)及び(C)の両方が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスであるか否かを判断する。判断の結果、コマンドバッファ12及びコマンドバッファ13に格納されているライトコマンド(B)及び(C)の両方が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスである場合には、S26において、アクセスコマンド制御部5でコマンド順序の入れ替えを行う。この場合には、コマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ12に格納されているライトコマンド(B)とを入れ替える。これによって、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ11に格納されたライトコマンド(B)のバンクアドレスが異なる。また、新たにコマンドバッファ11に格納されたライトコマンド(B)と、新たにコマンドバッファ12に格納されたライトコマンド(A)のバンクアドレスも異なる。さらに、新たにコマンドバッファ12に格納されたライトコマンド(A)と、コマンドバッファ13に格納されたライトコマンド(C)のバンクアドレスも異なる。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせることができ、アクセスを高速化することができる。
【0037】
S25の判断で、コマンドバッファ12及びコマンドバッファ13に格納されているライトコマンド(B)及び(C)の両方が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスであると判断されなかった場合には、S27の判断を行う。この場合には、コマンドバッファ12に格納されているライトコマンド(B)あるいはコマンドバッファ13に格納されているライトコマンド(C)のいずれか一方のみが、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスである。S27において、コマンドバッファ12に格納されているライトコマンド(B)が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスであるか否かを判定する。
【0038】
S27でコマンドバッファ12に格納されているライトコマンド(B)が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスであると判断された場合、さらにS28において、コマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ13に格納されているライトコマンド(C)とが同一バンクアドレスかつ同一ロウアドレスであるか否かを判定する。コマンドバッファ12に格納されているライトコマンド(B)が、アクセスタイミング制御部3にて現在処理中のコマンドのアドレスと別のバンクアドレスである場合、単純にはコマンドバッファ11とコマンドバッファ12内のライトコマンド(A),(B)を入れ替えればよい。しかし、入れ替えた後に、コマンドバッファ13内のライトコマンド(C)と同一バンクアドレスになってしまう場合が発生する。S28ではこのような場合を判定している。
【0039】
S28でコマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ13に格納されているライトコマンド(C)とが同一バンクアドレスかつ同一ロウアドレスであると判定された場合、S29において、アクセスコマンド制御部5でコマンド順序の入れ替えを行う。この場合には、コマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ12に格納されているライトコマンド(B)とを入れ替える。これによって、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ11に格納されたライトコマンド(B)のバンクアドレスが異なる。また、新たにコマンドバッファ11に格納されたライトコマンド(B)と、新たにコマンドバッファ12に格納されたライトコマンド(A)のバンクアドレスも異なる。さらに、新たにコマンドバッファ12に格納されたライトコマンド(A)と、コマンドバッファ13に格納されたライトコマンド(C)とは、同一バンクアドレスかつ同一ロウアドレスである。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせ、あるいは同一バンクアドレスかつ同一ロウアドレスのライトコマンドを連続させることができるので、アクセスを高速化することができる。
【0040】
S28でコマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ13に格納されているライトコマンド(C)とが同一バンクアドレスかつ同一ロウアドレスでなかった場合、コマンドバッファ11に格納されているライトコマンド(A)とコマンドバッファ12に格納されているライトコマンド(B)を入れ替えると、新たなコマンドバッファ12内のライトコマンド(A)とコマンドバッファ13に格納されているライトコマンド(C)とが同一バンクアドレスかつ別のロウアドレスとなってしまう。そのため、S30において、コマンドバッファ12に格納されているライトコマンド(B)を分割し、コマンド順序の入れ替えを行う。ここでは、分割したライトコマンドをB’、B”として示している。
【0041】
図4は、コマンド分割の一例の説明図である。具体例として、図4(A)に示すライトコマンドでは、バンクアドレス0,ロウアドレス0,カラムアドレス5から、バースト数20のデータをSDRAM4に書き込む例を示している。このようなライトコマンドを、例えばバースト数が10ずつの2つのライトコマンドに分割することができる。すなわち、図4(B)に示すように、バンクアドレス0,ロウアドレス0,カラムアドレス5から、バースト数10のデータを書き込むライトコマンドと、図4(C)に示すように、バンクアドレス0,ロウアドレス0,カラムアドレス15から、バースト数10のデータを書き込むライトコマンドに分割することができる。もちろん、分割の際に、バースト数をいくつに分割するかは任意であるが、望ましくは、バンクプリチャージ及びバンクアクティブのためのサイクル数を考慮して分割するとよい。
【0042】
S30におけるコマンド順序の入れ替えは、分割したライトコマンドの一方(ここではB’)をコマンドバッファ11へ、コマンドバッファ11に格納されていたライトコマンド(A)をコマンドバッファ12へ、分割したライトコマンドの他方(ここではB”)をコマンドバッファ13へ、コマンドバッファ13に格納されていたライトコマンド(C)をコマンドバッファ14へ、それぞれ格納することによって行う。これによって、コマンド順序はB’,A,B”,Cの順となる。このようなコマンドの分割及び順序の入れ替えによって、コマンド間はすべて別のバンクアドレスとなり、アクセスを高速化することができる。
【0043】
S27でコマンドバッファ12に格納されているライトコマンド(B)が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと同一バンクアドレスであると判断された場合、コマンドバッファ13に格納されているライトコマンド(C)が、現在、アクセスタイミング制御部3にて処理中のコマンドのアドレスと別のバンクアドレスである。この場合には、現在処理中のコマンド、コマンドバッファ11に格納されているライトコマンド(A)、コマンドバッファ12に格納されているライトコマンド(B)は、同一のバンクアドレスである。そのため、別のバンクアドレスをアクセスするコマンドバッファ13に格納されているライトコマンド(C)をコマンドバッファ11あるいはコマンドバッファ12に格納されるように順序を入れ替えても、いずれかの連続するコマンド間で同一バンクアドレスとなってしまう。
【0044】
連続するコマンドが同一バンクアドレスであっても、同一ロウアドレスであればよいので、S31において、コマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ12に格納されているライトコマンド(B)とが同一バンクアドレスかつ同一ロウアドレスであるか否かを判定する。コマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ12に格納されているライトコマンド(B)とが同一バンクアドレスかつ同一ロウアドレスである場合、S32において、この2つのライトコマンドの順序を保ったまま、コマンドの順序の入れ替えを行う。すなわち、コマンドバッファ13に格納されているライトコマンド(C)をコマンドバッファ11へ、コマンドバッファ11に格納されていたライトコマンド(A)をコマンドバッファ12へ、コマンドバッファ12に格納されているライトコマンド(B)をコマンドバッファ13へ、それぞれ格納させる。このようにして、現在処理中のコマンドのバンクアドレスと新たにコマンドバッファ11に格納されたライトコマンド(C)のバンクアドレスが異なる。また、新たにコマンドバッファ11に格納されたライトコマンド(C)と、新たにコマンドバッファ12に格納されたライトコマンド(A)のバンクアドレスも異なる。さらに、新たにコマンドバッファ12に格納されたライトコマンド(A)と、コマンドバッファ13に格納されたライトコマンド(B)とは、同一バンクアドレスかつ同一ロウアドレスである。このように、ライトコマンドの入れ替えを行うことによって、連続するライトコマンドのバンクアドレスを異ならせ、あるいは同一バンクアドレスかつ同一ロウアドレスのライトコマンドを連続させることができるので、アクセスを高速化することができる。
【0045】
S31でコマンドバッファ11に格納されているライトコマンド(A)と、コマンドバッファ12に格納されているライトコマンド(B)とが同一バンクアドレスかつ同一ロウアドレスでなかった場合、現在処理中のコマンド、コマンドバッファ11に格納されているライトコマンド(A)、コマンドバッファ12に格納されているライトコマンド(B)は、同一バンクアドレスでかつ別々のロウアドレスをアクセスするものであり、アクセスの効率が悪い。このような場合には、S33において、バンクアドレスが異なるコマンドバッファ13内のライトコマンド(C)を分割し、コマンド順序の入れ替えを行う。ここでは、分割したライトコマンドをC’、C”として示している。このライトコマンドの分割は、上述の図4に示した具体例と同様にして行えばよい。コマンド順序の入れ替えは、分割したライトコマンドの一方(ここではC’)をコマンドバッファ11へ、コマンドバッファ11に格納されていたライトコマンド(A)をコマンドバッファ12へ、分割したライトコマンドの他方(ここではC”)をコマンドバッファ13へ、コマンドバッファ12に格納されていたライトコマンド(B)をコマンドバッファ14へ、それぞれ格納することによって行う。これによって、コマンド順序はC’,A,C”,Bの順となる。このようなコマンドの分割及び順序の入れ替えによって、コマンド間はすべて別のバンクアドレスとなり、アクセスを高速化することができる。
【0046】
図5は、本発明のメモリアクセスシステムの実施の一形態における動作の具体例の説明図である。図5(b)に本発明のメモリアクセスシステムの実施の一形態を用いた場合の動作の具体例を示し、比較例として、図5(a)には従来のメモリアクセス時の動作を示している。なお、図中の横軸は、処理に要する時間を表す時間軸であり、縦線で区分して各サイクルを示している。また、図中の上部及び下部に、それぞれのタイミングで実行されているライトコマンドを示している。さらに、図中の斜線でハッチングを施して示したサイクルは、バンクアクティブのためのサイクルであり、クロスハッチングを施して示したサイクルはバンクプリチャージを行うためのサイクルを示している。
【0047】
この具体例では、図中の上下に示すライトコマンドを処理する場合について説明する。ここで、ライトコマンド(N)は現在処理中のライトコマンドを示しており、バンクアドレス0、ロウアドレス0、カラムアドレス0からバースト数10でデータNを書き込むコマンドである。ライトコマンド(A)はバンクアドレス0、ロウアドレス1、カラムアドレス0からバースト数10でデータAを書き込むライトコマンドである。同様に、ライトコマンド(B)はバンクアドレス0、ロウアドレス2、カラムアドレス0からバースト数10でデータBを書き込むコマンド、ライトコマンド(C)はバンクアドレス1、ロウアドレス0、カラムアドレス0からバースト数10でデータCを書き込むコマンドである。また、後述するように、ライトコマンド(C’)及びライトコマンド(C”)は、本発明によりライトコマンド(C)を分割したものである。
【0048】
まず、従来のメモリアクセス時の動作について説明する。ライトコマンド(N)とライトコマンド(A)は、同一バンクアドレス、別ロウアドレスのため、連続して実行させるには実際のライトアクセス以外に両者のアクセス間でバンクプリチャージ、バンクアクティブのために計4サイクルかかる。これは、図10,図11で説明したとおりである。ライトコマンド(A)とライトコマンド(B)についても、同様な理由でライトアクセス以外にバンクプリチャージ、バンクアクティブのために計4サイクルが必要である。ライトコマンド(B)とライトコマンド(C)は、バンクアドレスが異なるため、バンクプリチャージ、バンクアクティブの処理はライトコマンド(B)の実行中に行うことができ、この2つのライトコマンドについては連続してデータの書込を行うことができる。
【0049】
これに対して本発明のメモリアクセスシステムでは、図3に示したフローチャートに従ってライトコマンド(A)〜(C)を処理する場合、S33における処理が行われる。すなわち、ライトコマンド(C)をライトコマンド(C’)とライトコマンド(C”)の2つに分割し、分割した2つのライトコマンドをライトコマンド(N)とライトコマンド(A)の間、及び、ライトコマンド(A)とライトコマンド(B)の間に挿入するように順序を入れ替える。これによって、ライトコマンドは図中の下部に示すように、(N)→(C’)→(A)→(C”)→(B)のように並べ替えられる。バンクアドレスを参照して分かるように、このような順に並べ替えたライトコマンドは、バンクアドレスが連続しない。そのため、図5(b)に示すように、バンクプリチャージ及びバンクアクティブを、実際の書込動作と並行して行うことができ、従ってデータの書込動作を連続して行うことができる。そのため、メモリアクセスを高速化することができる。図5に示した例では、図5(a)に示す従来のアクセス方法では50サイクルかかっているが、本発明のメモリアクセスシステムでは図5(b)に示すように42サイクルで処理が終了している。
【0050】
以上、本発明のメモリアクセスシステムの実施の一形態について説明した。本発明はこの実施の一形態に限られるものではなく、種々の変形が可能である。例えば、上述のようにアクセスコマンド保持部2に保持するコマンド数は3つ(あるいは4つ)に限られるものではなく、さらに多くのコマンドを保持可能に構成してもよい。多くのコマンドを保持することができれば、別のバンクをアクセスするコマンドが存在する確率が高くなり、並べ替えや必要に応じて分割を行うことによって、さらにアクセスの高速化を実現することができる。また、その場合には1つのコマンドを必要に応じて3分割以上したり、複数のコマンドについて分割してもよい。
【0051】
また、図1に示した例では、コマンド発生部1の側からライトコマンドを発行してデータをSDRAM4に格納し、そのデータを、データ出力制御部6からのリードコマンドにより読み出して出力する構成例を示しているが、本発明はこれに限られるものではない。ライトコマンドによる書込動作だけでなく、リードコマンドによる読出動作も含めて、同様に並べ替えや必要に応じて分割を行い、アクセスを高速化することができる。
【0052】
【発明の効果】
以上の説明から明らかなように、本発明によれば、違うバンクアドレスへのアクセスを行うアクセスコマンドが連続するように、必要に応じてアクセスコマンドを分割し、アクセスコマンドの並び替えを行って、DRAMへのアクセスを行う。これによって、DRAMへのアクセスを高速化してアクセス時間を短縮することができるという効果がある。特に、例えばランダムアクセスが発生する場合には、違うバンクアドレスへのアクセスを行うアクセスコマンドが発生する確率が高く、そのような用途に対しては高い効果を得ることができる。
【図面の簡単な説明】
【図1】 本発明のメモリアクセスシステムの実施の一形態を示すブロック図である。
【図2】 ライトコマンドのデータ構造の一例の説明図である。
【図3】 アクセスコマンド制御部における分割、順次入れ替え制御処理の一例を示すフローチャートである。
【図4】 コマンド分割の一例の説明図である。
【図5】 本発明のメモリアクセスシステムの実施の一形態における動作の具体例の説明図である。
【図6】 一般的なSDRAMの構成の模式図である。
【図7】 一般的なSDRAMへのアクセス時のタイミングチャートである。
【図8】 同一バンクアドレスかつ同一ロウアドレスにデータが書き込まれている場合の一例の説明図である。
【図9】 同一バンクアドレスかつ同一ロウアドレスにデータの書込を行う場合のタイミングチャートである。
【図10】 同一バンクアドレスかつ別のロウアドレスにデータが書き込まれている場合の一例の説明図である。
【図11】 同一バンクアドレスかつ別のロウアドレスにデータの書込を行う場合のタイミングチャートである。
【図12】 別のバンクアドレスにデータが書き込まれている場合の一例の説明図である。
【図13】 別のバンクアドレスにデータの書込を行う場合のタイミングチャートである。
【符号の説明】
1…コマンド発生部、2…アクセスコマンド保持部、3…アクセスタイミング制御部、4…SDRAM、5…アクセスコマンド制御部、6…データ出力制御部、11〜14…コマンドバッファ、15〜17…セレクタ。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a memory access system for accessing a DRAM, and more particularly to a memory access system suitable for use in randomly accessing a memory.
[0002]
[Prior art]
First, general DRAM access will be described. FIG. 6 is a schematic diagram of a configuration of a general SDRAM. Here, it is composed of two banks, bank address 0 and bank address 1, and in each bank, data is specified by a row address and a column address. Here, for the sake of simplicity, the row address and the column address are shown as taking values from 0 to 7. Data “ABCDE” is stored in bank address 0, row address 0, and column addresses 0 to 4.
[0003]
FIG. 7 is a timing chart when accessing a general SDRAM. As an example, as shown in FIG. 6, an operation of processing one access command for storing five data “ABCDE” in bank address 0, row address 0, and column addresses 0 to 4 is shown. First, in the cycle {circle around (1)}, a row signal to be accessed is asserted, and a bank address and a row address to be accessed are designated as an address signal. As a result, the designated bank is activated. In addition, in the notation of the address signal, the number on the left side indicates the bank address, and the number on the right side indicates the row address or the column address (the same applies in the following description). For example, in the cycle {circle around (1)}, “00” is indicated as an address signal, which indicates a bank address 0 and a row address 0.
[0004]
Next, in the cycle {circle around (2)}, a column signal and a write signal to be accessed are asserted, and a bank address and a column address to be accessed are designated as an address signal. The notation of the address signal is “00”, which indicates bank address 0 and column address 0. Further, in the cycle {circle around (2)}, the first data “A” to be written is set in the data signal. Data to be written “BCDE” is output for each cycle sequentially from the next cycle. In this manner, five data “ABCDE” can be written in the SDRAM.
[0005]
Next, a case where a plurality of continuous access commands are processed will be described. When the access commands are continuous, the first access command and the next access command have the same bank address and the same row address, the same bank address but a different row address, or the case of another bank address. Possible types of inter-command processing.
[0006]
First, an access when the first access command and the next access command have the same bank address and the same row address will be described. FIG. 8 is an explanatory diagram of an example in which data is written in the same bank address and the same row address, and FIG. 9 is a timing chart in the case where such writing is similarly performed. In FIG. 8, although the configuration of the SDRAM is the same as that of FIG. 6, five data “ABCDE” are stored in the bank address 0, row address 0, and column addresses 0 to 4 of the SDRAM as shown in FIG. 3 shows a state in which three data “FGH” are stored in the bank address 0, the row address 0, and the column addresses 5 to 7.
[0007]
When sequentially executing the first access command for writing the five data “ABCDE” and the next access command for writing the three data “FGH”, first, the row signal accessed in the cycle (1) shown in FIG. And the bank address and row address to be accessed are designated by the address signal. As a result, the designated bank is activated. In this example, bank address 0 and row address 0 are designated. Next, in the cycle {circle around (2)}, a column signal and a write signal to be accessed are asserted, and a bank address and a column address to be accessed are designated as an address signal. Here, bank address 0 and column address 0 are designated. Further, the first data “A” to be written is set in the data signal. Data to be written “BCDE” is output for each cycle sequentially from the next cycle. Thereby, the write operation based on the first access command can be performed.
[0008]
In the next access command, since the bank address and row address are the same as the first access command, the bank address and row address corresponding to the cycle (1) are not specified. In the next cycle {circle around (3)} in which the last data “E” in the first access command is written, the column signal and write signal accessed in the next access command are asserted, and the bank address and column address to be accessed are specified as the address signal. To do. In this case, bank address 0 and column address 5 are designated. Further, the first data “F” to be written is set in the data signal. By sequentially outputting the data “GH” to be written for each cycle from the next cycle, a write operation based on the second access command can be performed.
[0009]
Thus, it can be seen that when the consecutive access commands have the same bank address and the same row address, data can be written continuously in the two access commands.
[0010]
Next, a case where the first access command and the next access command access the same bank address and different row addresses will be described. FIG. 10 is an explanatory diagram of an example in which data is written to the same bank address and another row address, and FIG. 11 is a timing chart in the case of performing such writing. In FIG. 10, the configuration of the SDRAM is the same as that of FIG. 6, but five data “ABCDE” are stored in the bank address 0, row address 0, and column addresses 0 to 4 of the SDRAM as shown in FIG. 3 shows a state where three data “FGH” are stored in the bank address 0, the row address 1, and the column addresses 5-7.
[0011]
When the first access command for writing such five data “ABCDE” and the next access command for writing three data “FGH” are sequentially executed, first, a row signal accessed in the cycle {circle around (1)} shown in FIG. And the bank address and row address to be accessed are designated by the address signal. As a result, the designated bank is activated. In this example, bank address 0 and row address 0 are designated. Next, in the cycle {circle around (2)}, a column signal and a write signal to be accessed are asserted, and a bank address and a column address to be accessed are designated as an address signal. Here, bank address 0 and column address 0 are designated. Further, the first data “A” to be written is set in the data signal. Data to be written “BCDE” is output for each cycle sequentially from the next cycle. Thereby, the write operation based on the first access command can be performed.
[0012]
Here, since the row address of the next access command is different, the row signal and the write signal are asserted in the next cycle {circle around (3)} in which the last data “E” is written by the first access command, and the bank address is used as the address signal. Is set to 0, and the currently active bank 0 is precharged.
[0013]
In order to execute the next access command, a row signal to be accessed is asserted at timing (4), and a bank address and a row address to be accessed are designated as an address signal. As a result, the bank is activated. In this example, bank address 0 and row address 1 are designated. Next, in the cycle {circle around (5)}, a column signal and a write signal to be accessed are asserted, and a bank address and a column address to be accessed are designated as an address signal. Here, bank address 0 and column address 5 are designated. Further, the first data “F” to be written is set in the data signal. Data “GH” to be written is output for each cycle sequentially from the next cycle. As a result, the write operation by the second access command can be performed.
[0014]
In this way, when consecutive access commands access the same bank address and different row addresses, precharge and bank active operations must be inserted between the two access commands. Therefore, for example, in the example shown in FIG. 11, it can be seen that it takes 4 cycles between accesses for actual writing.
[0015]
Finally, a case where the first access command and the next access command access different bank addresses will be described. FIG. 12 is an explanatory diagram of an example in which data is written in another bank address, and FIG. 13 is a timing chart in the case where such writing is similarly performed. In FIG. 12, although the configuration of the SDRAM is the same as that of FIG. 6, five data “ABCDE” are stored in the bank address 0, the row address 0, and the column addresses 0 to 4 of the SDRAM as shown in FIG. , Three data “FGH” are stored in bank address 1, row address 1, and column addresses 5-7.
[0016]
When the first access command for writing such five data “ABCDE” and the next access command for writing three data “FGH” are sequentially executed, first, a row signal accessed in the cycle of (1) shown in FIG. And the bank address and row address to be accessed are designated by the address signal. As a result, the designated bank is activated. In this example, bank address 0 and row address 0 are designated. Next, in the cycle {circle around (2)}, a column signal and a write signal to be accessed are asserted, and a bank address and a column address to be accessed are designated as an address signal. Here, bank address 0 and column address 0 are designated. Further, the first data “A” to be written is set in the data signal. Data to be written “BCDE” is output for each cycle sequentially from the next cycle. Thereby, the write operation based on the first access command can be performed.
[0017]
In the next access command, since the bank to be accessed is different, the row signal to be accessed is asserted in advance in the cycle (3), for example, and the bank address and row address to be accessed are designated by the address signal. Can remain active. In this example, bank address 1 and row address 1 are designated, and bank 1 is activated while data is being written to bank 0.
[0018]
Since the bank address 1 and the row address 1 are activated in advance, immediately after the write operation by the first access command is completed, the column signal and the write signal to be accessed are asserted in the cycle (4), and the address signal The bank address and column address to be accessed can be designated. Here, bank address 1 and column address 5 are designated. Further, the first data “F” to be written is set in the data signal. Data “GH” to be written is output for each cycle sequentially from the next cycle. Thereby, the write operation based on the second access command can be performed.
[0019]
Further, precharging of bank address 0 can be performed during a write operation to bank address 1. For example, in the cycle (5), bank 0 can be precharged by asserting a low signal and a write signal and setting a bank address to 0 as an address signal.
[0020]
Thus, it can be seen that even when successive access commands access different bank addresses, it is possible for two access commands to perform a write operation in succession.
[0021]
As a conventional technique using the above-described operation, there are techniques described in, for example, Japanese Patent Laid-Open Nos. 10-162131 and 10-11356. In the technique described in Japanese Patent Application Laid-Open No. 10-162131, an area for storing image data is secured in advance so that DRAM access can be followed by an access command of the same bank address and the same row address or another bank address. . This increases the number of continuous accesses as described above, and speeds up DRAM access.
[0022]
However, when the intermediate language of the printer is developed into a raster image, for example, the coordinates of the image to be drawn do not know where the intermediate language moves within the page, and access to the DRAM is random access. In such a case, there is a problem that the efficiency is deteriorated if the memory allocation is determined in advance as described above.
[0023]
In the technique described in Japanese Patent Laid-Open No. 10-11356, when an access command having the same bank and the same row address as the currently processed access command exists, the command is preferentially processed next. The order is changed. As a result, access using the same bank address and the same row address can be realized, and access can be performed without leaving a space between commands.
[0024]
However, even in this technique, when the randomness of memory access is large as described above, there is little possibility that access commands having the same bank address and the same row address exist in the command buffer, and the access efficiency is poor.
[0025]
[Problems to be solved by the invention]
The present invention has been made in view of the above-described circumstances, and an object of the present invention is to provide a memory access system in which access time is shortened and speeded up even during random access to a DRAM.
[0026]
[Means for Solving the Problems]
The present invention is a memory access system that receives an access command and accesses a DRAM so that, for a plurality of access commands, a command that is currently processed and a command that is processed next access different bank addresses. The access command order is changed, and access to the DRAM is performed in the changed order. Using a plurality of access commands obtained by dividing the data length of one access command, successive access commands access another bank. Thus, the access commands are replaced as described above.
As described above, since access to different bank addresses can be performed continuously, continuous access is possible by performing such replacement. In addition, in a situation where random access occurs, there may be many access commands with different bank addresses, and the access time can be effectively shortened. Further, there is no restriction such as securing a data storage area in advance, and the memory can be used efficiently.
[0027]
Furthermore, in the present invention, since the access commands are replaced so that a plurality of access commands obtained by dividing the data length of one access command access another bank, for example, even when there are few access commands accessing different bank addresses, It is possible to increase an access command for a bank address that has been accessed less. Therefore, the possibility that continuous access can be performed by performing replacement so as to access different bank addresses between adjacent access commands increases, and the access time can be further shortened.
[0028]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a block diagram showing an embodiment of a memory access system of the present invention. In the figure, 1 is a command generation unit, 2 is an access command holding unit, 3 is an access timing control unit, 4 is SDRAM, 5 is an access command control unit, 6 is a data output control unit, 11 to 14 are command buffers, 15 to 15 Reference numeral 17 denotes a selector. In this example, a write command is issued from the command generation unit 1 side, data is stored in the SDRAM 4, and the data is read and output by a read command from the data output control unit 6.
[0029]
In this example, the command generator 1 generates a write command for the SDRAM 4. FIG. 2 is an explanatory diagram of an example of the data structure of the write command. For example, as shown in FIG. 2, the write command includes a write access start address (bank address, row address, column address), write data, the number of write bursts (transfer data amount), and the like. Note that the command generation unit 1 may not be provided, and for example, a write command as shown in FIG. 2 may be input from the outside.
[0030]
The access command holding unit 2 holds a plurality of write commands generated by the command generating unit 1. In this example, the access command holding unit 2 has four command buffers 11 to 14, and whether or not the write command generated from the command generation unit 1 is empty in the order of the command buffers 11, 12, and 13. Is transferred to an empty command buffer. The write command stored in the command buffer 11 is then sent to the access timing control unit 3. The command buffer 14 is used when the write command is divided by the access command control unit and the write command increases. Selectors 15 to 17 are provided on the input sides of the command buffers 11 to 13, respectively. Write commands held in the preceding command buffers 12 to 14, write commands from the command generation unit 1, and access command control unit 5 Select one of the write commands. Of course, the access command holding unit 2 is not limited to such a configuration, as long as it can hold a plurality of write commands in order. Of course, the number of commands to be held is also arbitrary.
[0031]
While managing the state of the SDRAM 4, the access timing control unit 3 receives a write request from the access command holding unit 2 and a read request from the data output control unit 6 and executes access to the SDRAM 4.
[0032]
The access command control unit 5 accesses the bank command in which the write command currently processed in the access timing control unit 3 and the write command to be processed next are different from the write command held in the access command holding unit 2. The write command in the access command holding unit 2 is replaced. Also, when replacing, if necessary, the write command is divided, and the divided write command is used to access a bank address in which consecutive write commands are different.
[0033]
FIG. 3 is a flowchart illustrating an example of the division and sequential replacement control process in the access command control unit. In the description of FIG. 3 and the following description, the write command stored in the command buffer 11 is A, the write command stored in the command buffer 12 is B, and the write command stored in the command buffer 13 is C. As shown. In FIG. 3, the command currently being processed is referred to as “current”.
[0034]
First, in S21, the address of the command currently being processed by the access timing control unit 3 is compared with the address of the write command (A) stored in the command buffer 11. As a result of the comparison, access is not delayed unless the same bank address and another row address. That is, if the same bank address and the same row address are used, continuous access is possible as described with reference to FIGS. If different bank addresses are used, continuous access is possible in this case as described with reference to FIGS. Therefore, in S22, the access command control unit 5 does not divide and change the order.
[0035]
When the comparison result in S21 is the same bank address and another row address, the access is delayed as described with reference to FIGS. In this case, in S23, the access timing control unit 3 currently processes either the write command (B) stored in the command buffer 12 or the write command (C) stored in the command buffer 13. It is determined whether there is a bank address different from the address of the command inside. As a result of the determination, if there is no other bank address, the same bank address is used, so that another bank address cannot be selected as the next write command. In this case, in S24, for example, if there is a write command with the same bank address and the same row address, the order may be changed so that the write command is continuously executed. If there is no write command with the same bank address and the same row address, the commands are executed in the same order.
[0036]
As a result of the comparison in S23, if there is a write command of another bank address, in S25, both the write commands (B) and (C) stored in the command buffer 12 and the command buffer 13 are currently The access timing control unit 3 determines whether the address of the command being processed is different from the bank address. As a result of the determination, both of the write commands (B) and (C) stored in the command buffer 12 and the command buffer 13 have a bank address different from the address of the command currently being processed in the access timing control unit 3. If there is, the command order is changed by the access command control unit 5 in S26. In this case, the write command (A) stored in the command buffer 11 and the write command (B) stored in the command buffer 12 are exchanged. As a result, the bank address of the command currently being processed is different from the bank address of the write command (B) newly stored in the command buffer 11. Further, the bank address of the write command (B) newly stored in the command buffer 11 and the write command (A) newly stored in the command buffer 12 are also different. Furthermore, the bank addresses of the write command (A) newly stored in the command buffer 12 and the write command (C) stored in the command buffer 13 are also different. In this way, by replacing the write commands, the bank addresses of successive write commands can be made different, and access can be speeded up.
[0037]
As a result of the determination in S25, both the write command (B) and (C) stored in the command buffer 12 and the command buffer 13 are different from the address of the command currently being processed in the access timing control section 3 If it is not determined, the determination in S27 is performed. In this case, only one of the write command (B) stored in the command buffer 12 or the write command (C) stored in the command buffer 13 is currently being processed by the access timing control unit 3. This is a different bank address from the command address. In S27, it is determined whether or not the write command (B) stored in the command buffer 12 is a bank address different from the address of the command currently being processed by the access timing control unit 3.
[0038]
When it is determined in S27 that the write command (B) stored in the command buffer 12 is a bank address different from the address of the command currently being processed by the access timing control unit 3, the command is further processed in S28. It is determined whether the write command (A) stored in the buffer 11 and the write command (C) stored in the command buffer 13 have the same bank address and the same row address. When the write command (B) stored in the command buffer 12 is a bank address different from the address of the command currently being processed by the access timing control unit 3, the command buffer 11 and the command buffer 12 are simply stored. The write commands (A) and (B) may be exchanged. However, after the replacement, the same bank address as the write command (C) in the command buffer 13 may occur. In S28, such a case is determined.
[0039]
If it is determined in S28 that the write command (A) stored in the command buffer 11 and the write command (C) stored in the command buffer 13 have the same bank address and the same row address, in S29, The access command control unit 5 changes the command order. In this case, the write command (A) stored in the command buffer 11 and the write command (B) stored in the command buffer 12 are exchanged. As a result, the bank address of the command currently being processed is different from the bank address of the write command (B) newly stored in the command buffer 11. Further, the bank address of the write command (B) newly stored in the command buffer 11 and the write command (A) newly stored in the command buffer 12 are also different. Furthermore, the write command (A) newly stored in the command buffer 12 and the write command (C) stored in the command buffer 13 have the same bank address and the same row address. In this way, by changing the write command, the bank addresses of successive write commands can be made different, or the write commands having the same bank address and the same row address can be made continuous, thereby speeding up access. it can.
[0040]
If the write command (A) stored in the command buffer 11 in S28 and the write command (C) stored in the command buffer 13 are not the same bank address and the same row address, they are stored in the command buffer 11. When the write command (A) and the write command (B) stored in the command buffer 12 are exchanged, the write command (A) in the new command buffer 12 and the write command (C) stored in the command buffer 13 are replaced. ) Becomes the same bank address and another row address. Therefore, in S30, the write command (B) stored in the command buffer 12 is divided and the command order is changed. Here, the divided write commands are shown as B ′ and B ″.
[0041]
FIG. 4 is an explanatory diagram of an example of command division. As a specific example, the write command shown in FIG. 4A shows an example in which data having a burst number of 20 is written to the SDRAM 4 from the bank address 0, the row address 0, and the column address 5. Such a write command can be divided into, for example, two write commands each having 10 bursts. That is, as shown in FIG. 4B, a write command for writing 10 bursts of data from bank address 0, row address 0, and column address 5, and as shown in FIG. The row address 0 and the column address 15 can be divided into write commands for writing data with 10 bursts. Of course, the number of bursts to be divided is arbitrary in the division, but it is desirable to divide in consideration of the number of cycles for bank precharge and bank activation.
[0042]
In S30, the command order is changed by changing one of the divided write commands (in this case, B ') to the command buffer 11 and writing command (A) stored in the command buffer 11 to the command buffer 12 to the divided write command. The other (B ″ in this case) is stored in the command buffer 13 and the write command (C) stored in the command buffer 13 is stored in the command buffer 14. As a result, the command order is B ′, A, B ″ and C in this order. By dividing the command and changing the order, all the commands have different bank addresses, and access can be speeded up.
[0043]
If the write command (B) stored in the command buffer 12 in S27 is determined to be the same bank address as the address of the command currently being processed by the access timing control unit 3, it is stored in the command buffer 13. The write command (C) is a bank address different from the address of the command currently being processed by the access timing control unit 3. In this case, the command currently being processed, the write command (A) stored in the command buffer 11, and the write command (B) stored in the command buffer 12 have the same bank address. For this reason, even if the order is changed so that the write command (C) stored in the command buffer 13 that accesses another bank address is stored in the command buffer 11 or the command buffer 12, between any consecutive commands. It becomes the same bank address.
[0044]
Even if consecutive commands have the same bank address, they need only have the same row address. Therefore, in S31, the write command (A) stored in the command buffer 11 and the write command ( B) is the same bank address and the same row address. When the write command (A) stored in the command buffer 11 and the write command (B) stored in the command buffer 12 have the same bank address and the same row address, in S32, the two write commands The order of commands is changed while maintaining the order. That is, the write command (C) stored in the command buffer 13 is sent to the command buffer 11, the write command (A) stored in the command buffer 11 is sent to the command buffer 12, and the write command stored in the command buffer 12. (B) is stored in the command buffer 13 respectively. In this way, the bank address of the command currently being processed is different from the bank address of the write command (C) newly stored in the command buffer 11. The bank address of the write command (C) newly stored in the command buffer 11 and the write command (A) newly stored in the command buffer 12 are also different. Further, the write command (A) newly stored in the command buffer 12 and the write command (B) stored in the command buffer 13 have the same bank address and the same row address. In this way, by changing the write command, the bank addresses of successive write commands can be made different, or the write commands having the same bank address and the same row address can be made continuous, thereby speeding up access. it can.
[0045]
If the write command (A) stored in the command buffer 11 and the write command (B) stored in the command buffer 12 in S31 are not the same bank address and the same row address, the command currently being processed, The write command (A) stored in the command buffer 11 and the write command (B) stored in the command buffer 12 access the same bank address and different row addresses, and access efficiency is poor. . In such a case, in S33, the write command (C) in the command buffer 13 having a different bank address is divided, and the command order is changed. Here, the divided write commands are shown as C ′ and C ″. The division of the write commands may be performed in the same manner as the specific example shown in FIG. 4 described above. One of the write commands (here, C ′) is sent to the command buffer 11, the write command (A) stored in the command buffer 11 is sent to the command buffer 12, and the other divided write command (here, C ″) is sent to the command buffer. 13, the write command (B) stored in the command buffer 12 is stored in the command buffer 14. As a result, the command order is C ′, A, C ″, B. By dividing the command and changing the order, all the commands have different bank addresses, and access can be speeded up. .
[0046]
FIG. 5 is an explanatory diagram of a specific example of the operation in the embodiment of the memory access system of the present invention. FIG. 5B shows a specific example of the operation when one embodiment of the memory access system of the present invention is used. As a comparative example, FIG. 5A shows the operation at the time of conventional memory access. Yes. The horizontal axis in the figure is a time axis representing the time required for processing, and each cycle is shown by being divided by vertical lines. In addition, in the upper part and the lower part in the drawing, write commands executed at respective timings are shown. Furthermore, the cycle shown with hatching in the drawing is a cycle for bank activation, and the cycle shown with cross hatching shows a cycle for performing bank precharge.
[0047]
In this specific example, a case will be described in which write commands shown at the top and bottom in the drawing are processed. Here, the write command (N) indicates a write command currently being processed, and is a command for writing data N with a burst number of 10 from the bank address 0, the row address 0, and the column address 0. The write command (A) is a write command for writing data A with the burst number 10 from the bank address 0, the row address 1, and the column address 0. Similarly, the write command (B) is a command for writing data B from the bank address 0, row address 2, and column address 0 with a burst number of 10, and the write command (C) is a burst from bank address 1, row address 0, column address 0. This is a command for writing data C in equation (10). As will be described later, the write command (C ′) and the write command (C ″) are obtained by dividing the write command (C) according to the present invention.
[0048]
First, the operation during conventional memory access will be described. Since the write command (N) and the write command (A) are the same bank address and different row addresses, in order to execute them continuously, in addition to the actual write access, for the bank precharge and the bank activation between both accesses It takes a total of 4 cycles. This is as described with reference to FIGS. For the write command (A) and the write command (B), for the same reason, a total of four cycles are required for bank precharge and bank activation in addition to write access. Since the write command (B) and the write command (C) have different bank addresses, the bank precharge and bank active processes can be performed during the execution of the write command (B). Thus, data can be written.
[0049]
On the other hand, in the memory access system of the present invention, when the write commands (A) to (C) are processed according to the flowchart shown in FIG. 3, the process in S33 is performed. That is, the write command (C) is divided into a write command (C ′) and a write command (C ″), and the two divided write commands are divided between the write command (N) and the write command (A), and The order is changed so as to be inserted between the write command (A) and the write command (B), so that the write command is (N) → (C ′) → (A) as shown in the lower part of the figure. → (C ″) → rearranged as (B). As can be seen by referring to the bank addresses, the bank addresses are not consecutive in the write commands rearranged in this order. Therefore, as shown in FIG. 5B, bank precharge and bank active can be performed in parallel with the actual write operation, and therefore the data write operation can be performed continuously. As a result, memory access can be speeded up. In the example shown in FIG. 5, the conventional access method shown in FIG. 5A takes 50 cycles. However, in the memory access system of the present invention, the processing is completed in 42 cycles as shown in FIG. 5B. ing.
[0050]
The embodiment of the memory access system according to the present invention has been described above. The present invention is not limited to this embodiment, and various modifications are possible. For example, as described above, the number of commands held in the access command holding unit 2 is not limited to three (or four), and more commands may be held. If a large number of commands can be held, there is a high probability that a command for accessing another bank exists, and the access can be further speeded up by rearranging or performing division as necessary. In that case, one command may be divided into three or more as necessary, or a plurality of commands may be divided.
[0051]
In the example shown in FIG. 1, a write command is issued from the command generation unit 1 side, data is stored in the SDRAM 4, and the data is read and output by a read command from the data output control unit 6. However, the present invention is not limited to this. In addition to the write operation based on the write command, the read operation based on the read command can be rearranged and divided as necessary to increase the access speed.
[0052]
【The invention's effect】
As is clear from the above description, according to the present invention, the access commands are divided as necessary so that the access commands for accessing different bank addresses are continuous, the access commands are rearranged, Access to DRAM. This has the effect of speeding up access to the DRAM and reducing the access time. In particular, for example, when random access occurs, there is a high probability that an access command for accessing a different bank address will occur, and a high effect can be obtained for such applications.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an embodiment of a memory access system of the present invention.
FIG. 2 is an explanatory diagram of an example of a data structure of a write command.
FIG. 3 is a flowchart illustrating an example of division and sequential replacement control processing in an access command control unit.
FIG. 4 is an explanatory diagram of an example of command division.
FIG. 5 is an explanatory diagram of a specific example of operation in the embodiment of the memory access system of the present invention.
FIG. 6 is a schematic diagram of a configuration of a general SDRAM.
FIG. 7 is a timing chart at the time of accessing a general SDRAM.
FIG. 8 is an explanatory diagram of an example when data is written in the same bank address and the same row address;
FIG. 9 is a timing chart when data is written to the same bank address and the same row address.
FIG. 10 is an explanatory diagram of an example when data is written to the same bank address and another row address;
FIG. 11 is a timing chart when data is written to the same bank address and another row address;
FIG. 12 is an explanatory diagram of an example when data is written to another bank address;
FIG. 13 is a timing chart when data is written to another bank address.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 1 ... Command generation part, 2 ... Access command holding part, 3 ... Access timing control part, 4 ... SDRAM, 5 ... Access command control part, 6 ... Data output control part, 11-14 ... Command buffer, 15-17 ... Selector .

Claims (1)

DRAMへアクセスするためのアクセスコマンドを複数保持するアクセスコマンド保持手段と、前記アクセスコマンド保持手段に保持されている複数のアクセスコマンドを現在処理をしているコマンドと次に処理するコマンドが違うバンクアドレスをアクセスするように前記アクセスコマンド保持手段内の前記アクセスコマンドを入れ替えるアクセスコマンド制御手段を備え、前記アクセスコマンド制御手段は、前記アクセスコマンド保持手段に保持されている1つのアクセスコマンドのデータ長を分割した複数のアクセスコマンドを用いて、連続するアクセスコマンドが別のバンクをアクセスするように前記アクセスコマンドの入れ替えを行うことを特徴とするメモリアクセスシステム。  An access command holding means for holding a plurality of access commands for accessing the DRAM, and a bank address in which a command that is currently processing the plurality of access commands held in the access command holding means is different from a command to be processed next Access command control means for replacing the access command in the access command holding means so as to access the access command, and the access command control means divides the data length of one access command held in the access command holding means A memory access system using the plurality of access commands, wherein the access commands are exchanged so that consecutive access commands access different banks.
JP2000069530A 2000-03-13 2000-03-13 Memory access system Expired - Fee Related JP3846543B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000069530A JP3846543B2 (en) 2000-03-13 2000-03-13 Memory access system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000069530A JP3846543B2 (en) 2000-03-13 2000-03-13 Memory access system

Publications (2)

Publication Number Publication Date
JP2001256106A JP2001256106A (en) 2001-09-21
JP3846543B2 true JP3846543B2 (en) 2006-11-15

Family

ID=18588388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000069530A Expired - Fee Related JP3846543B2 (en) 2000-03-13 2000-03-13 Memory access system

Country Status (1)

Country Link
JP (1) JP3846543B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11029893B2 (en) 2017-09-08 2021-06-08 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100443910B1 (en) * 2001-12-17 2004-08-09 삼성전자주식회사 Semiconductor memory device and method of accessing memory cells thereof
KR100541366B1 (en) * 2002-07-19 2006-01-16 주식회사 하이닉스반도체 DRAM for high speed Data access
WO2005041207A2 (en) 2003-10-29 2005-05-06 Matsushita Electric Industrial Co.,Ltd. Drive device and related computer program
EP2003564A4 (en) 2006-03-31 2009-11-25 Panasonic Corp Command output controller
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
JP5428687B2 (en) * 2009-09-14 2014-02-26 株式会社リコー Memory control device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11029893B2 (en) 2017-09-08 2021-06-08 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device
US11693605B2 (en) 2017-09-08 2023-07-04 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device

Also Published As

Publication number Publication date
JP2001256106A (en) 2001-09-21

Similar Documents

Publication Publication Date Title
JP4159280B2 (en) Semiconductor memory device
US7380076B2 (en) Information processing apparatus and method of accessing memory
US20050268024A1 (en) Memory controller for use in multi-thread pipeline bus system and memory control method
JP2002288037A (en) Memory control device and method
KR100573256B1 (en) Multiple address holding memory device
JP2014154119A (en) Memory controller and semiconductor storage device
JP3846543B2 (en) Memory access system
US6738840B1 (en) Arrangement with a plurality of processors having an interface for a collective memory
WO2009125572A1 (en) Memory control circuit and memory control method
KR100607987B1 (en) Memory controller for scheduling a plurality of commands, and method thereof
JP4071930B2 (en) Synchronous DRAM
JP4969811B2 (en) Information processing system and memory control device
JP3288327B2 (en) Video memory circuit
JP2606675B2 (en) Semiconductor storage device
US6922764B2 (en) Memory, processor system and method for performing write operations on a memory region
US6094397A (en) Method and apparatus for addressing multi-bank memory
WO2023189358A1 (en) Memory control device
US10929949B2 (en) Accessing a memory configured to store an image data cube
US20210319824A1 (en) Memory device including a plurality of area having different refresh periods, memory controller controlling the same and memory system including the same
US20210157495A1 (en) Device and method for controlling data-reading and -writing
JP2008210513A (en) Semiconductor memory
JPH1139216A (en) Semiconductor storage and cache memory system
JPH11143770A (en) Multi-bank dram controller
CN118486343A (en) Memory for storing metadata and operation method of memory
JP2001282612A (en) Memory controller

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060714

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060815

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130901

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees