以下,図面にしたがって本発明の実施の形態について説明する。但し,本発明の技術的範囲はこれらの実施の形態に限定されず,特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[画像メモリのメモリマッピングと問題点]
図1は,本実施の形態における画像メモリのメモリマッピングを示す図である。図1において,表示デバイス10を含む画像処理システムにおける表示画像データは,画像メモリ15内に記憶される。表示画像データは,各画素の輝度信号Yと色差信号Cb,Crや,各画素のRGB階調信号などのデータで構成され,各信号は例えば8ビット(1バイト)のデータで構成される。
一方,画像メモリ15は,一般的にSDRAMなどの半導体基板上に集積回路が形成された大容量且つ高速の半導体メモリ装置からなる。このような画像メモリは,複数のバンクBank0〜3(図1では4つのバンク)で構成され,各バンクBank0は複数のブロックBLK−0を有し,各ブロックは複数のワード線WLとビット線BLとその交差位置のメモリセルMCとを有する。メモリセルは,図示しないがワード線にゲートが接続されたMOSトランジスタとトランジスタに接続されたキャパシタとで構成される。そして,図1の例では,4つのバンクはバンクアドレスBA0−BA3に対応付けられ,ワード線はロウアドレスRA0−RA7に対応付けられ,ビット線はコラムアドレスCA0−CA127に対応付けられる。バンクアドレスBAとロウアドレスRAの組み合わせであるバンク内のワード線が選択され,コラムアドレスCAによりビット線が選択される。バンクアドレスBA,ロウアドレスRA,コラムアドレスCAにより,4バイトBY0−3のデータがアクセスされる。1バイトは8ビットで構成されるので,一回のアクセスで4バイト,つまり4×8=32ビットのデータがメモリの入出力端子に関連付けられて,読み出しまたは書き込みが行われる。一般に,上記の1バイトのデータ(8ビットデータ)が画素の信号に対応する。一度のアクセスで4バイトデータを入出力することで,画像メモリに対する単位時間に処理できる画素数を意味する帯域幅を大きくすることができる。
表示画像データに対するメモリマッピング12によれば,バンクアドレスBAとロウアドレスRAにより特定されるページ領域14が行列に配置される。そして,1つのページ領域14は,拡大領域14Eに示されるとおり,コラムアドレスCA0−127で特定される128のメモリ単位領域を有し,各メモリ単位領域は4バイトBY0−3のデータを記憶する。この4バイトBY0−3のデータが,メモリの入出力端子DQ0−7,DQ8−15,DQ16−23,DQ24−31の,合計32の入出力端子を経由して入出力される。この各バイトの8ビットデータが画素の信号データに対応する。
上記のメモリマッピング12は,複数バンク構成のSDRAMなどの画像メモリ15を高速動作させるのに適している。SDRAMは,バンクアドレスBAとロウアドレスRAと共に与えられるアクティブコマンドに応答して,選択されたバンク内の選択されたワード線を駆動し,メモリセルのデータをビット線に読み出し,ビット線に対応付けられたセンスアンプを活性化してビット線電位を増幅するアクティブ動作を行い,その後,コラムアドレスCAと共に与えられるリードコマンドに応答して,選択されたビット線からデータを読み出すリード動作を行う。あるいは,SDRAMは,アクティブ動作後に,コラムアドレスCAと書き込みデータと共に与えられるライトコマンドに応答して,選択されたビット線に書き込みデータを書き込むライト動作を行う。リード動作またはライト動作の後にプリチャージコマンドによるプリチャージ動作が行われ,再度,アクティブ動作,リードまたはライト動作になる。このように,SDRAMでは,各バンクが独立してアクティブ動作,リード動作,ライト動作を行うことができる。
図1のメモリマッピング12によれば,上下左右に隣接するページ領域14には異なるバンクアドレスBA0−3が対応付けられる。すなわち,メモリマッピング12の奇数行にはバンクアドレスBA0,1が交互に配置され,偶数行にはバンクアドレスBA2,3が交互に配置される。さらに,メモリマッピング12のラスタ方向(行方向)に,ロウアドレスRA0−7が2つずつ繰り返しながらインクリメントされ,メモリマッピング12の各行は,4つのロウアドレスRA0−3,RA4−7で折り返されている。
このように画像上のページ領域を,メモリ上において,同一バンクのページ領域がロウ方向とコラム方向のいずれにも隣接しないように割り当てるメモリマッピングを採用すれば,画像メモリへの代表的なアクセスである水平アクセス,つまりページ領域14を行方向に移動して選択するアクセスでは,2つのバンクで同時にアクティブ動作とリード・ライト動作とを実行させながらアクセスすることができ,アクセス効率を高めることができる。また,垂直方向にアクセスする場合も同様である。
図2は,画像メモリにおける2つのアクセスを示す図である。図2(A)の水平アクセスは,映像のフレーム画像の入出力時に多く発生するアクセスであり,画像を左上から右下に向けて水平方向20にアクセスするラスタスキャンに相当する。一方,図2(B)の矩形アクセスは,MPEGなどの画像の圧縮と伸長処理で多く発生するアクセスで,任意の縦横比の矩形22内を左上から右下に向けて矢印24のようにアクセスする動作に相当する。矩形領域22は,MPEGの動きベクトル抽出対象のブロックなどに対応する。
一般に,画像メモリを使用する画像システムでは,フレームメモリである画像メモリの転送レートが画面表示動作よりも速く設定され,画像メモリの水平アクセスで読み出された画像データを画面表示している間に,矩形アクセスにより新しいフレームデータを作成し,とぎれることなくフレームデータの作成とフレームデータの出力とが行えるようになっている。このため,実際の画像システムでは水平アクセスと矩形アクセスとが混在することになる。
水平アクセスでは,水平方向20にスキャンされるので,隣接するバンクを同時にアクティブさせながら効率的にメモリアクセスを行うことができる。一方,矩形アクセスでは,アクセスされる矩形領域22の位置を,単一のバンクを越えないようにし,更にバンク内のページ領域を超えないようにすることで,バンクアドレスBAとロウアドレスRAとを指定する1回のアクティブ動作で矩形領域22内のデータをアクセスできるので,水平アクセスと同様に効率的なメモリアクセスを行うことができる。
図3は,水平アクセスの課題を示す図である。前述のメモリマップ12において水平方向20にアクセスする水平アクセスのタイミングチャート30が示されている。このタイミングチャートでは,メモリマップ12の4行目のページ領域(BA0/RA4,BA1/RA4,BA0/RA5,BA1/RA5)を水平アクセス(図中20)している時に,自動リフレッシュコマンドAREFが発生している。タイミングチャート30には,コマンドCMD,クロックCLK,バンクアドレスBA,ロウアドレスRA,コラムアドレスCA,入出力端子DQが示されている。
前提としてバーストレングスBLは4に設定されている。アクティブコマンドACT32でBA0/RA4のページ領域がアクティブ動作し,リードコマンドRD33でBA0/CA0の読み出しが指示されると,所定のレイテンシ(図中では4クロック)後に4組の32ビットデータが入出力端子DQから4クロックサイクルで連続して出力される。つまり,ページ領域BA0/RA4内のコラムアドレスCA0〜CA3における4組の32ビットデータが4回に分けて連続出力される。このバースト動作は,SDRAMが規格上要求されている動作である。図1の拡大されたページ領域14EのコラムアドレスCA0〜CA3の各4バイト(32ビット)データが4回に分けて連続出力されることを意味する。
次に,アクティブコマンドACT34とリードコマンドRD35で,ページ領域BA1/RA4の4バイトデータが出力される。同様に,アクティブコマンドACT36とリードコマンドRD37で,ページ領域BA0/RA5の4バイトデータが,アクティブコマンドACT38とリードコマンドRD39で,ページ領域BA1/RA5の4バイトデータがそれぞれ出力される。
この時点で,ロウアドレスRA6を指定する自動リフレッシュコマンドAREF40が発生すると,画像メモリを構成するSDRAMメモリは,内蔵する全てのバンク,4バンクBA0−3でリフレッシュ動作を並列に実行する。つまり,4バンク内のロウアドレスRA6のワード線が同時に駆動され,センスアンプが活性化され,再書き込みが行われ,プリチャージ動作が行われる。このリフレッシュ動作は,図3中のメモリマップ12中の4つのページ領域31に対して行われることを意味する。そのため,リフレッシュ動作期間tREFの間,水平アクセス(矢印20)は一時的に停止する。そして,リフレッシュ動作期間tREF後に,再度アクティブコマンドACT41とリードコマンドRD(図示せず)により次のページ領域BA0/RA6をアクセスすることで,水平アクセスを再開する。
自動リフレッシュコマンドAREFによるリフレッシュ動作が4バンク同時に行われるので,水平アクセス中にリフレッシュコマンドが発生すると水平アクセスが一時的に中断することになり,実効的な帯域幅が狭くなる。これが,水平アクセスにおける課題である。
図4は,矩形アクセスの第1の課題を示す図である。図4(A)に水平アクセスの例が,図4(B)に矩形アクセスの例が示される。いずれもコラムアドレスCAで選択されるメモリ単位領域(4バイト領域)45の境界を越えるアクセスである。前述したとおり,一般的なメモリマップによれば,バンクアドレスBAとロウアドレスRAで特定されるページ領域14内は,コラムアドレスCA0−127で選択される複数のメモリ単位領域45に区分され,1つのコラムアドレスCAにより4バイトBY0−3のデータが同時にアクセスされる。各バイトの8ビットデータが画素の信号に対応する。
そのため,水平アクセスでは比較的無駄なくアクセスが行われるが,矩形アクセスでは無駄なデータの入出力が発生し,実効的な帯域幅が低下する。
図4(A)の水平アクセスでは,領域22Aをアクセスする場合,ページ領域BA0/RA0を指定するアクティブコマンドACTに続いて,4つのリードコマンドRDがコラムアドレスCA0−3について発行され,コラムアドレスCA0−3それぞれの4バイトデータBY0−3が連続して入出力される。この場合,領域22Aは,コラムアドレスCA0のバイトBY2,3からコラムアドレスCA3のバイトBY0,1までを含むので,コラムアドレスCA0に対応する4バイトの入出力DQのうち,バイトBY0,1のデータは必要なく,コラムアドレスCA3に対応する4バイトの入出力DQのうち,バイトBY2,3のデータも必要ない。よって,有効出力データは,12バイト/16バイトである。
これに対して,図4(B)の矩形アクセスでは,矩形領域22Bをアクセスする場合,ページ領域BA0/RA0を指定するアクティブコマンドACTに続いて,6つのリードコマンドRDがコラムアドレスCA0,1,4,5,8,9について発行され,それらのコラムアドレスCA0,1,4,5,8,9それぞれの4バイトデータBY0−3が連続して入出力される。しかし,矩形領域22Bがコラムアドレスで選択されるメモリ単位領域(4バイト領域)45の境界と一致せず且つ4バイト領域の境界を越えているので,各4バイトデータBY0−3のうちそれぞれ半分は必要のないデータになる。つまり,有効出力データは,12バイト/24バイトである。図4(B)はワーストケースを示している。
このように,同じバイト数のデータであっても,上記の矩形アクセスは,6回のリードコマンドRDにより24バイトのデータを入出力する必要があるが,水平アクセスでは,4回のリードコマンドRDにより16バイトのデータを入出力すれば良い。よって,1つのコラムアドレスで選択される4バイト領域(メモリ単位領域)45の境界を越える矩形領域のアクセスは,実効的な帯域幅が低下する。これが,矩形アクセスの第1の課題である。
図5は,矩形アクセスの第2の課題を示す図である。矩形アクセスは,任意の矩形領域に対するアクセスであり,矩形領域が隣接するページ領域14の境界14BOUを越える場合がある。図5には,矩形領域22(A)が同じページ領域BA1/RA6内の16バイト領域の場合と,矩形領域22(B)が4つの隣接するページ領域BA3/RA2,BA2/RA3,BA1/RA6,BA0/RA7にまたがる16バイト領域の場合とが示されている。
矩形領域22(A)の場合は,タイミングチャートに示されるとおり,ページ領域BA1/RA6についての1回のアクティブコマンドACT(図中50)と,コラムアドレスCA6,7,10,11についての4回のリードコマンドRD(図中52)を発行すれば,16バイトのデータを入出力できる。
一方,矩形領域22(B)の場合は,タイミングチャートに示されるとおり,ページ領域BA3/RA2,BA2/RA3,BA1/RA6,BA0/RA7についての4回のアクティブコマンドACT(図中54)と,コラムアドレスCA127(BA3),CA124(BA2),CA3(BA1),CA0(BA0)についての4回のリードコマンドRD(図中56)を発行しなければ,16バイトのデータを入出力できない。つまり,矩形領域22が隣接するページ領域を含む場合は,異なるバンクをアクティブ動作させるために,複数回のアクティブコマンドACTを発行し,それぞれのバンク内のコラムアドレスでリードRDまたはライトコマンドWRを発行しなければならない。よって,単位時間当たりにアクセスできるデータ量が減り,実効的な帯域幅が狭くなる。
図5の矩形領域22(B)が,コラムアドレスで選択されるメモリ単位領域(4バイト領域)の途中で区画される場合は,図4で示した第1の課題も同時に有することになり,複数回のアクティブコマンドを必要とすることに加えて(第2の課題),リードコマンドに対する入出力データDQ内に不必要なデータが含まれる(第1の課題)ことになり,より一層,実効的な帯域幅の低下を招く。
以上のとおり,画像メモリにおいてSDRAMの構造上の特性を利用したメモリマッピングを採用した場合,第1に水平アクセス中のリフレッシュコマンドの発生でアクセスが中断するという課題,第2に矩形アクセス領域がコラムアドレスで選択されるメモリ単位領域(4バイト領域)の境界を越える場合に入出力データに無駄が生じるという課題,第3に矩形アクセス領域がバンクアドレスで特定されるページ領域の境界を越える場合に複数のバンクアクティブコマンドを発行する必要が生じるという課題などを有する。
[本実施の形態の概略説明]
以下は,それらの課題を解決する構成と動作について概略的に説明する。
本実施の形態では,リフレッシュ動作に起因するアクセスの中断,矩形アクセスによるアクセス効率の低下などを解決するものであり,第1に,水平アクセス時にはアクセス動作と平行してバックグランドでリフレッシュ動作を可能にし,第2に矩形アクセス時にコラムアドレスで選択されるメモリ単位領域(4バイト領域)とずれた領域またはメモリ単位領域を超える領域へのアクセスを効率的に行う機能を可能にし,さらに第3に矩形アクセス時にページ領域の境界を越えて複数のページ領域を含む矩形領域へのアクセスを効率的に行う機能を可能にする。
図6は,本実施の形態における全体の動作を示す図である。前述したとおり,画像メモリを利用する画像システムでは,画像メモリへの水平アクセスと矩形アクセスとが混在して発生する。図6の例は,メモリマップ12の1行目のバンクアドレスBA0,BA1のページ領域に対する水平アクセス20−1と,2行目のページ領域BA2/RA2に対する矩形アクセス22と,2行目のバンクアドレスBA2,BA3のページ領域に対する水平アクセス20−2とが順番に発生する例である。矩形アクセス22では,1つのページ領域BA2/RA2内のメモリ単位領域(4バイト領域)45の境界を越えた矩形領域に対してアクセスが行われている。
この場合,矩形アクセスでは,メモリの任意のバンクにアクセスが発生するが,水平アクセスでは,ある一定期間は決められたバンクにしかアクセスが発生しない。例えば,メモリマップ12内の1行目の水平アクセス中は,バンクBA0,1にしかアクセスが発生せず,2行目のバンクBA2,3にはアクセスは発生しない。逆に,2行目の水平アクセス中は,バンクBA2,3にしかアクセスが発生せず,1行目のバンクBA0,1にはアクセスは発生しない。
そこで,水平アクセス20−1において,メモリアクセスに入る前に,今後しばらくアクセスが発生しないバンクを指定するバックグランド・リフレッシュコマンドBRENを発行して,アクセスが発生しないバンク情報SA=2/3をメモリに通知する。つまり,バックグランド・リフレッシュコマンドBRENで指定されたバンクSAには,その後の自動リフレッシュ動作を許可する。よって,リフレッシュ動作を指定されたバンクSA=2,3への通常アクセスは禁止される。
図6の水平アクセス20−1では,バックグランド・リフレッシュコマンドBREN(図中60)と共にその後のリフレッシュ動作を許可するリフレッシュバンク情報SA(図中61)が発行され,その後,アクティブコマンドACTでページ領域BA0/RA0がアクティブ動作され,リードコマンドRD(BA0,CA0)でコラムアドレスCA0の4バイトデータBY0−3が入出力端子DQに出力される。同様に,アクティブコマンドACTでページ領域BA1/RA0がアクティブ動作され,リードコマンドRD(BA1,CA0)でコラムアドレスCA0の4バイトデータBY0−3が入出力端子DQに出力される。但し,図6では,BL=4に対応する4組の4バイトデータの出力は省略されている。
この水平アクセス20−1の期間内において,画像メモリ内でバックグランドリフレッシュコマンドBRENにより起動される自動リフレッシュリクエスト(図示せず)が発行されると,バンクBA2,3に対するリフレッシュ動作が開始される。しかし,水平アクセスは,バンクBA0,1に対するアクセスしか発生せず,且つSDRAMでは異なるバンクは独立してアクティブ動作可能であるので,バンクBA2,3でのリフレッシュ動作により水平アクセスがディスターブされて中断することはない。
次に,図6の矩形アクセスでは,矩形領域22が同じページ領域BA2/RA2内であって,コラムアドレスCA0内の後半の2バイトBY2,3と,コラムアドレスCA1の前半の2バイトBY0,1とを含んでいる。この場合,SDRAMの一般的なリードコマンドによれば,コラムアドレスCA0,1に対して2回のリードコマンドRDを発行する必要がある。
しかし,本実施の形態では,コラムアドレスCA0(図中63)に対するリードコマンドRD(図中62)を発行し,そのアクセスでのバイト組み合わせ情報SB(図中64)を供給することで,バイト組み合わせ情報SBに対応する4バイトを自動的に入出力端子DQに対応付けることができる。上記の例では,バイト組み合わせ情報SBとして,2バイトシフトするバイトシフト情報SB=2を指定することで,コラムアドレスCA0の4バイトデータのうち2バイトシフトしたバイトBY2,3のデータと,その隣のコラムアドレスCA1の4バイトデータのうち最初の2バイトのバイトBY0,1のデータとを自動的に出力する。
図6の矩形アクセスでは,ページ領域BA2/RA2に対するアクティブコマンドACTに続いて,BA2/CA0(図中63)を指定するリードコマンドRD62がバイト組み合わせ情報SB=2(図中64)と共に発行される。このバイト組み合わせ情報SB=2は,4バイト領域内の2バイトシフトしたバイトBY2から4バイトのデータの組み合わせを意味している。あるいは,このバイト組み合わせ情報SB=2は,4バイト領域内の最初のバイト位置(スタートバイト)がBY2であることを意味している。これに応答して,画像メモリは,コラムアドレスCA0の4バイトデータのうち,2バイトシフトした(またはスタートバイトBY2からの)バイトBY2,3のデータと,コラムアドレスCA1のバイトデータBY0,1のデータとを4バイトの入出力端子DQに対応させて出力する。メモリコントローラは,コラムアドレスCA0,1に対するリードコマンドRDを2回発行する必要はない。しかも,4バイトの入出力端子DQには全て必要なデータのみが出力され,不必要なデータは出力されずアクセス効率が高くなる。
更に,画像メモリは,BA2/CA4を指定するリードコマンドRDが組み合わせ情報SB=2と共に発行されると,コラムアドレスCA4,5内それぞれ2バイトからなる4バイトデータを出力し,BA2/CA8を指定するリードコマンドRDが組み合わせ情報SB=2と共に発行されると,コラムアドレスCA8,9内それぞれ2バイトからなる4バイトデータを出力し,BA2/CA12を指定するリードコマンドRDが組み合わせ情報SB=2と共に発行されると,コラムアドレスCA12,13内それぞれ2バイトからなる4バイトデータを出力する。
その結果,矩形アクセス領域22が8つのコラムアドレスCA0,1,4,5,8,9,12,13のメモリ単位領域(4バイト領域)を含んでいても,リードコマンドRDは,コラムアドレスCA0,4,8,12に対して4回発行するだけでよく,且つ,入出力端子には不必要なデータの出力はなく,アクセス効率を2倍に高めることができる。
矩形アクセス後の水平アクセス20−2では,メモリマップ12の2行目のページ領域へのアクセスであるので,当分の間はバンクBA0,1への通常アクセスは発生しない。そこで,前述と同様に,バックグランド・リフレッシュコマンドBREN(図中65)と共にリフレッシュ動作を許可するバンク情報SA(図中66)としてSA=0/1が指定され,その後のバンクBA2,3への通常アクセスに平行して,バンクBA0,1への自動リフレッシュ動作が許可される。
以上のとおり,水平アクセス20−1,20−2では,通常アクセス中にバックグランドでの自動リフレッシュを許可し,矩形アクセスではバックグランドでの自動リフレッシュを許可しない。その結果,水平アクセス20−1では,バンクBA0,1で通常アクセス動作,バンクBA2,3でリフレッシュ動作が平行して可能になり,水平アクセス20−2では,バンクBA2,3で通常アクセス動作,バンクBA0,1でリフレッシュ動作が平行して可能になる。これにより,リフレッシュ動作による水平アクセスのディスターブを回避することができ,実効的な帯域幅の低下を抑えることができる。
また,矩形アクセスでは,バックグランドリフレッシュ動作を禁止する。これにより,任意の領域への矩形アクセスが,リフレッシュ動作によって中断されることを防止することができる。よって,トータルの実効的な帯域幅の低下を抑制できる。
そして,矩形アクセスでは,バイトの組み合わせ情報SBをリードコマンドと共に指定することで,リードコマンドのコラムアドレスCAを先頭として任意のバイトの組み合わせで,組み合わされたバイトデータを4バイトの入出力端子DQに出力することができる。バイトの組み合わせ情報SBは,アクティブコマンドに先立ってモードレジスタを設定するコマンドと共に指定することも可能である。
図7は,本実施の形態における全体の動作の別の例を示す図である。この例は,メモリマップの1行目のページ領域への水平アクセス20−1と,矩形アクセス22と,メモリマップの2行目のページ領域への水平アクセス20−2とが順に行われる例である。そして,矩形アクセス22では,矩形領域22がページ領域の境界14BOUを越えて4つのページ領域BA3/RA2,BA2/RA3,BA1/RA6。BA0/RA7を含んでいる。
水平アクセス20−1,20−2では,図6と同様に,バックグランド・リフレッシュコマンドBRENと共にリフレッシュバンク情報SAを発行することで,そのバンクへのその後の自動リフレッシュ動作を許可して,水平アクセスがリフレッシュ動作でディスターブされることを防止する。そして,複数ページ領域,すなわち複数バンクを含む矩形領域22への矩形アクセスでは,同時にアクティブ動作させるバンク情報としてマルチバンク情報SA’をアクティブコマンドACTと共に発行する。これに応答して,画像メモリは,アクティブコマンドACTと共に発行されるアドレス情報BA,RAを左上として,マルチバンク情報SA’で指定された複数バンクのページ領域を同時にアクティブ動作する。その結果,1回のアクティブコマンドACTに応答して,複数バンクを同時にアクティブ動作することができ,その後は,各バンクに対するリードコマンドRDをバンクアドレスBAとコラムアドレスCAと共に発行することで,各バンク内のコラムアドレスCAで選択されたメモリ単位領域(4バンク領域)の4バンクデータを入出力端子DQに出力することができる。
図7の矩形アクセスの例では,アクティブコマンドACT(図中70)と共に左上のページ領域を特定するアドレス情報BA3,RA2(図中71)が発行され,それと同時に,マルチバンク情報SA’=0−3(図中72)も発行されている。これに応答して,画像メモリは,左上のページ領域のバンクBA3を先頭にして,マルチバンク情報SA’で指定された4バンクBA3,BA2,BA1,BA0を同時にアクティブ動作し,それに続く4つのリードコマンドRDで指定されたバンクBA/コラムアドレスCAの4バイトデータを順に出力する。ライトコマンドの場合も同様である。図中では,4つのリードコマンドRDに対して,BA3/CA127,BA2/CA124,BA1/CA3,BA0/CA0が供給され,それぞれの4バイトデータが出力されている。
マルチバンク情報SA’が「横方向の2バンク」であれば,アクティブコマンドACTで供給されるバンクアドレスBAに対応する左上バンクの右隣のバンクも同時にアクティブ動作され,「縦方向の2バンク」であれば左上バンクの下隣のバンクも同時にアクティブ動作される。同様に,マルチバンク情報SA’が「縦横4バンク」であれば,左上バンクの右隣,下隣,右下隣の4つのバンクも同時にアクティブ動作される。したがって,マルチバンクを自動的にアクティブ動作させるためには,メモリマップの各行のロウアドレスRAがどのように配置されているか,具体的にはロウアドレスRAがどの単位で各行を折り返されているかの情報(ロウアドレスステップ情報)をあらかじめレジスタなどに設定しておくことが好ましい。
図7の矩形アクセスにおいて,アクティブコマンドACT時のマルチバンク情報SA’に加えて,図6で説明したバイト組み合わせ情報SBがリードコマンドRDと共に指定されると,ページ領域14の境界14BOUを越えて,且つコラムアドレスCAで選択されるメモリ単位領域(4バンク領域)の一部のバイトの組み合わせについて,自動的に入出力端子DQに対応付けることができる。
図8は,本実施の形態における画像処理システムの構成図である。画像処理システムは,メモリコントローラに対応する画像処理チップ80と,画像処理対象の画像データを記憶する画像メモリチップ86とで構成される。画像処理チップ80とメモリチップ86は半導体チップであり,それぞれ単一の半導体基板に集積回路が形成されている。
画像処理チップ80は,例えばMPEGの画像圧縮と伸長に対応するエンコーダ,デコーダなどの画像処理を行う画像処理制御部81と,画像処理制御部81からの画像領域の指定を含むメモリアクセス要求に応答して,画像メモリチップ86へのアクセス制御を行うメモリ制御部82とを有する。メモリ制御部82は,水平アクセスでのバックグランドリフレッシュ動作を制御するバックグランドリフレッシュ制御部84と,矩形アクセスでメモリ単位領域(4バイト領域)内の任意のバイトの組み合わせのアクセスを制御するバイトバウンダリ制御部85と,矩形アクセスで複数のページ領域を含むアクセスを制御するマルチバンク活性化制御部83とを有する。これらの制御により,それぞれの動作に必要なコマンドとバンクアドレス,ロウアドレス,コラムアドレス,バイト組み合わせ情報SB,リフレッシュバンク情報SA,マルチバンク情報SA’などを,画像メモリ86に発行する。
画像メモリ86は,メモリコア92内に複数のバンクBank0−3を有し,これらのメモリコア92に対して,主にアクティブ動作の制御を行うロウ制御部87と,リードやライト動作の制御を行うコラム制御部90と,バックグランドリフレッシュ制御部89とを有する。ロウ制御部87はマルチバンク活性化制御部88を有し,コラム制御部90はバイトバウンダリ制御部91を有する。また,各バンクBank0−3内には,ロウデコーダRowDecと,コラムデコーダColDecと,メモリアレイMAと,センスアンプ群SAと,メモリアレイMAと入出力端子DQとを対応付ける入出力ユニット93などが含まれる。
図9は,本実施の形態における画像メモリの構成図である。画像メモリチップ86は,外部端子群93には,クロックCLKに加えて,RAS,CAS,WE,CSからなるコマンド端子,バンクアドレス端子BA0,BA1,リフレッシュバンク情報端子SA0,SA1,複数個のアドレス端子Add,所定ビット数のバイト組み合わせ情報端子SB,所定ビット数のデータ入出力端子DQ,そして,図示しないマルチバンク情報端子SA’などが含まれる。
なお,前述のバイトバウンダリ機能,マルチバンクアセス機能,バックグランドリフレッシュ機能に必要な端子SB,SA’,SAは,共通の特殊ピンによっても実現可能である。それらの情報は,異なるコマンドと共に供給されるので,供給コマンドに応じて特殊ピン入力データを対応するレジスタに設定すればよい。
また,これらの端子SB,SA’,SAは,使用されていない端子で実現可能である。例えば,リード動作において,ロウアドレスがアドレス端子Add0〜12で入力され,コラムアドレスがアドレス端子Add0〜9で入力されるとすると,コラムアドレスが入力されるときアドレス端子Add10〜12は使用されていない。よって,コラムアドレス入力時に使用されていないアドレス端子Add10〜12から制御データSB,SA’,SAを入力することができる。
これらの外部端子群93には,それぞれバッファ94を介して内部回路に接続される。上記のコマンド群はコマンド制御部95に入力され,コマンドに対応した制御信号が内部回路に供給される。また,モードレジスタセットコマンドに応答して,コマンド制御部95は,アドレスピンAddに供給される設定データに基づいて,モードレジスタ96に所定の設定値を設定する。モードレジスタ96に設定された設定情報は内部回路に供給される。ロウ制御部87は,マルチバンク活性化制御部88を有し,さらにマルチバンク活性化に必要なロウアドレス演算部97と有する。マルチバンク活性化制御部88からは,活性化すべきバンクにアクティブパルスが供給される。また,ロウアドレス演算部97からは,活性化すべきロウアドレスが各バンクに供給される。そして,バンクBank内にはバンク内のリフレッシュ対象のロウアドレスを指示するリフレッシュロウアドレス指示部98が設けられる。リフレッシュロウアドレス指示部98は,例えばリフレッシュカウンタを有し,自動リフレッシュコマンド発生時に必要なロウアドレスを生成する。バンク内の構成は前述の通りである。
以下,図6,7で説明したバイトバウンダリ機能と,マルチバンクアクティブ機能と,バックグランド・リフレッシュ機能とについて,順番に,画像メモリとメモリコントローラの詳細を説明する。
《バイトバウンダリ》
図10は,バイトバウンダリ機能を説明する図である。この図は,あるバンク内のロウアドレスRAとコラムアドレスCAとにより選択されるバイト群(またはビット群)を示している。前述したとおり,この例も,ロウアドレスRAとコラムアドレスCAとにより4バイトのデータ領域(メモリ単位領域)が選択され,32ビットの入出力端子DQ0−31と関連付けられる。よって,ロウアドレスRAとコラムアドレスCAの交差位置の「0123」は,それぞれバイトBY0,BY1,BY2,BY3を意味している。または,4バイトの代わりに4ビットであっても良い。その場合は,ロウアドレスRAとコラムアドレスCAとにより4ビットのデータ領域(メモリ単位領域)が選択され,4ビットの入出力端子DQ0−3と関連付けられる。以下は,簡単のために4バイトの例で説明する。
図10(A)は従来例に対応し,ロウアドレスRAとコラムアドレスCAとにより4バイトのデータ領域が一意に決定し,常に4バイト領域(メモリ単位領域)100,101の32ビットが入出力端子DQ0−31と関連付けられる。
それに対して,図10(B)は本実施の形態に対応し,ロウアドレスRAとコラムアドレスCAとで特定される4バイト領域を先頭にして,任意のバイトの組み合わせで入出力端子DQ0−31と関連付けることができる。図中,RA=0,CA=0で選択される4バイト領域100は全てそのまま入出力端子DQ0−31と関連付けている。一方,RA=2,CA=1で選択される4バイト領域内の2バイトシフトした3バイト目から連続する4バイトの領域102を入出力端子DQ0−31と関連付けている。この場合は,RA=2,CA=1で選択される4バイト領域内のどのバイトを先頭にするかの第1の情報(スタートバイト)と,その先頭バイトからアップ方向に4バイト連続かダウン方向に4バイト連続かアップ方向に1つ置きかダウン方向に1つ置きかなどの第2の情報(ビッグエンディアンまたはリトルエンディアン)とが,リードコマンドやライトコマンドと共に与えられる。
そして,上記の第1,第2の情報からなるバイト組み合わせ情報に基づいて,画像メモリの入出力ユニットは,ページ内の異なるコラムアドレスCAに対応するバイトデータのうち合計で4バイトを抽出し,入出力端子DQ0−31に関連付ける。そして,必要な4バイトのデータを32ビットの入出力端子DQから1回で入出力する。
図11は,バイトバウンダリ機能におけるタイミングチャートを示す図である。この例は,メモリマップ12内の4バイト102をアクセスする例である。まず,アクティブコマンドACT(図中110)と共にバンクアドレスBA=0とロウアドレスRA=2とが与えられ,対応するページ領域がアクティブ動作され,リードコマンドRD(図中111)と共にバンクアドレスBA=0とコラムアドレスCA=1(図中112)とが与えられ,更に,バイトの組み合わせ情報113として,バイトシフト量またはスタートバイトを示す第1の情報SB=2(図中114)と組み合わせパターンを示す第2の情報BMR=UP(図中115)とが与えられる。
画像メモリは,このバイト組み合わせ情報SB=2,BMR=UPに基づいて,コラムアドレスCA=1で選択される4バイト領域の後半の2バイトデータ(BY2,3)と,コラムアドレスCA=2で選択される4バイト領域の前半の2バイトデータ(BY0,1)とを,それぞれ入出力端子DQ16−23,DQ24−31,DQ0−7,DQ8−15に図示されるとおり対応付ける。この対応付けは,たとえば図9のバイトバウンダリ制御部91により入出力ユニット93で行われる。よって,異なるコラムアドレスのデータであるにもかかわらず,リードコマンドRDを1回与えるだけで,任意の組み合わせの4バイトデータを入出力端子DQに対応付けることができる。ライトコマンドの場合も同様である。
図11において,ロウアドレスRAとコラムアドレスCAとにより選択される4バイト領域は,4ビット領域であっても同様のバイトバウンダリ機能を適用できる。その場合は,入出力端子DQ0−3に4ビット領域の4ビットデータが対応付けられる。
図12は,異なるマッピングに対するバイトバウンダリ機能を説明する図である。図12では,簡単のためにロウアドレスRAとコラムアドレスCAとにより選択されるメモリ単位領域が4ビットで構成されている。図12の左側には画像の画素とメモリ空間との対応を示すメモリマッピング12−1,12−2が,中央にはメモリの論理空間15−1,15−2が,そして,右側にはそれらに対応するタイミングチャートが示されている。
中央のメモリ論理空間15−1,15−2内には,ロウアドレスRAとコラムアドレスCAとで選択される4ビット領域内の4ビットを示す「0−3」が示され,入出力端子DQ0−3に対応する。また,左のメモリマッピング12−1,12−2内にも,画像の画素に対応するメモリ論理空間内の4ビットを示す「0−3」が示されている。つまり,画像の各画素がメモリの入出力端子DQ0−3にどのように対応付けられるかが,メモリマッピングに示されている。
画像システムでは,画像の画素を,あるアドレスBA,RA,CAで同時にアクセスされる4ビットの入出力端子DQ0−3のどれに対応付けるかは,システム設計者の自由である。マッピング12−1は,図中左から右の4つの画素をアドレスの進行方向(左から右)と同じ方向の入出力端子DQ0−3にマッピングする例であり,ビッグエンディアンと称されている。一方,マッピング12−2は,4つの画素をアドレスの進行方向と逆方向の入出力端子DQ3−0にマッピングする例であり,リトルエンディアンと称されている。
そして,マッピング12−1,12−2においていずれも,画像の左上隅から6画素から9画素までの4画素123,127に矩形アクセスが発生している。しかし,これらのマッピングは,メモリ内の4ビットと逆方向にマッピングされているので,それぞれ異なるアクセスが必要になる。つまり,マッピング12−1の場合は,矢印120のように,画像の左から右の画素に対して,CA=1内のDQ1,CA=1内のDQ2,CA=1内のDQ3,CA=2内のDQ0の順でデータを入出力する必要がある。一方,マッピング12−2の場合は,矢印124のように,画像の左から右の画素に対して,CA=1内のDQ2,CA=1内のDQ1,CA=1内のDQ0,CA=2内のDQ3の順でデータを入出力する必要がある。
このような異なるマッピングに対応するためにビット組み合わせ情報SB,BMRが利用される。つまり,マッピング12−1の場合は,図中121のように,リードコマンドRDと共にBA=0,CA=1からなる先頭アドレスと,SB=1,BMR=UPからなるビット組み合わせ情報とが発行され,それに応答して,図中122のように,CA=1の3ビットDQ1,2,3とCA=2のDQ0とが同時に出力される。
一方,マッピング12−2の場合は,図中125のように,リードコマンドRDと共にBA=0,CA=1からなる先頭アドレスと,SB=1,BMR=DOWNからなるビット組み合わせ情報とが発行され,それに応答して,図中126のように,CA=1の3ビットDQ0,1,2とCA=2のDQ3とが同時に出力される。
このように,ビッグエンディアンとリトルエンディアンという異なるメモリマッピングに対応してビット組み合わせ情報SB,BMRを指定することで,画像メモリは,システム側のメモリマッピングに対応して4ビット同時に入出力することができる。このビット組み合わせ情報の種類を増やすことにより,様々なマッピングに対して柔軟な4ビットアクセスを実現することができる。
図13は,図12のビッグエンディアンとリトルエンディアンとを説明する図である。図13は,左右どちらも入出力ビット幅が4ビットのメモリを使っている画像処理システムであり,左がメモリの入出力端子DQのDQ0からDQ3への方向を順方向として扱うビッグエンディアンのシステム,右がメモリのDQのDQ3からDQ0への方向を順方向として扱うリトルエンディアンのシステムである。
画面上の画素位置(X0-X11)は,どちらも同じ画面上の物理位置を示している。そして,各画素位置が持っている「各画素の情報」は,両システムとも同じ"A"〜"L"であり,このことは,どちらのシステムも同じ画像を表示していることを意味している。
ビッグエンディアンのシステムでは,画素位置X0〜X3をメモリのアドレスCA0のDQ0〜DQ3に,画素位置X4〜X7をメモリのアドレスCA1のDQ0〜DQ3に,画素位置X8〜X11をメモリのアドレスCA2のDQ0〜DQ3に対応させている。
一方,リトルエンディアンのシステムでは,画素位置X0〜X3をメモリのアドレスCA0のDQ3〜DQ0に,画素位置X4〜X7をメモリのアドレスCA1のDQ3〜DQ0に,画素位置X8〜X11をメモリのアドレスCA2のDQ3〜DQ0に対応させている。
つまり,両方のシステムを比較すると,画像処理システム内の画素X0〜X3と入出力端子T0〜T3の対応関係が,ビッグエンディアンとリトルエンディアンとで逆の関係になっている。よって,画素位置X0の画素情報"A"は,ビッグエンディアンのシステムとリトルエンディアンのシステムでは各々異なるメモリセルの物理位置(CA0のDQ0とCA0のDQ3)に格納されることになる。
ここで,画像処理システムが画素位置X5-X8の画素情報"F-G-H-I"に対する矩形アクセス(図中130)を発生した場合,ビッグエンディアンのシステムとリトルエンディアンのシステムで,メモリは各々異なるメモリセルの物理位置132,134にアクセスしなくてはならない。そのため,メモリに供給される必要がある最低限の情報は,システムがビッグエンディアン(Up)かリトルエンディアン(Down)かという情報BMRと,起点となるビットが含まれるアドレスCAと,起点となるビットのアドレス内での位置情報SBの3つである。
上記のビッグエンディアンとリトルエンディアンは,アドレスRA,CAでアクセスされるメモリ単位領域が4バイト領域(バイト群)の場合も同じである。
図14は,特殊なメモリマッピングにおけるバイトバウンダリ機能を説明する図である。図14も図12と同様に,左側にメモリマッピング12を,中央にメモリ論理空間15を,そして,右側に対応するタイミングチャートを示す。
図中,左側のメモリマッピング12には,フレーム画像内の各画素にメモリのどのビットを割り当てているかの状態を示している。この例では,1画素が2ビットの情報から構成されており,例えば偶数ビットは輝度,奇数ビットは色差を表すデータを保持している。
そこで,Grouping-1は左上隅の2画素目から5画素目における輝度情報(偶数ビット)のみを集める矩形アクセスであり,Grouping-2は左上隅の2画素目から5画素目における色差情報(奇数ビット)のみを集める矩形アクセスを意味している。この場合,Grouping-1/2ともに,画像の左上隅の2画素目から5画素目にかけての矩形アクセスだが,矢印140のような輝度(偶数ビット)と矢印144のような色差(奇数ビット)の違いがあるため,タイミングチャートに示されるように,画像処理システムからメモリへのアクセスと入出力端子DQは以下の通りとなる。
Grouping-1:CA=0/SB=2で,BMR=AL(1ビット置きに4ビットを集める指定)(図中141)のアクセスに対して,入出力端子DQ0-3には,CA=1のDQ0,CA=2のDQ0,CA=0のDQ2,CA=1のDQ2が対応付けられる(図中142)。
Grouping-2:CA=0/SB=3で,BMR=AL(1ビット置きに4ビットを集める指定)(図中145)のアクセスに対して,入出力端子DQ0-3には,CA=2のDQ1,CA=1のDQ1,3,CA=0のDQ3が対応付けられる(図中146)。
このように,異なるコラムアドレスの4ビット領域内で同じDQ(例えばGrouping-1ではDQ0やDQ2)を同時にアクセスするので,そのデータを入出力端子DQに転送する入出力ユニットで,一部のデータについては端子を入れ替える処理,つまり別のDQのデータバスを使う処理が必要となる。
図15は,図14の特殊なメモリマッピングを説明する図である。図15は,入出力ビット幅が4ビットのメモリを使っている画像処理システムであり,特に,メモリの偶数DQを各画素の輝度情報に,奇数DQを各画素の色差情報に用いる画像処理システムである。そして,図15(A)は輝度情報のみアクセスする場合を示し,図15(B)は色差情報のみアクセスする場合を示す。
画面上の画素位置(X0-X5)は,左右どちらも同じ画面上の物理位置を示している。また,各画素位置は「輝度情報」として"A,C,E,G,I,K"を,「色差情報」として"B,D,F,H,J,L"を保持している。
ここで,画像処理システムが画素位置X1-X4の輝度情報"C-E-G-I"に対する矩形アクセス151を発生した場合は,図15(A)のように,メモリは偶数DQのみにアクセスし(図中153),色差情報"D-F-H-J"に対する矩形アクセス152を発生した場合は,図15(B)のように,メモリは奇数DQのみにアクセス(図中154)しなくてはならない。
このためにメモリが最低限受け取る必要がある情報は,システムが輝度情報を偶数DQに,色差情報を奇数DQに保持する方式を採用しているか(1DQ置きのアクセスが必要かどうか)を示す情報(BMR=AL)と,起点となるビットが含まれるアドレス(CA)と,そのアドレスの4ビット領域内において起点となるビットの位置情報(SB)の3つである。これらのコラムアドレスCAとビット組み合わせ情報SB,BMRについては,図14ですでに説明済みである。
また,この場合,異なるアドレスで同じDQ(例えばGrouping-1ではDQ0やDQ2)を同時にアクセスするので,そのデータを入出力端子に転送する入出力ユニットで,一部のデータについては,別のDQのデータバスを使うように端子を入れ替える処理が必要となる。そのために,メモリ内に白丸と黒丸で示した複数のスイッチが設けられ,上記の情報SB,MBRに基づいてこれらのスイッチが制御される。
図16は,矩形アクセスにおけるバイトバウンダリ機能を示すタイミングチャート図である。この矩形アクセスは,図6の矩形領域22をアクセスする例である。前述のとおり,矩形アクセスにおいて,コラムアドレスCAで選択されるメモリ単位領域(4バイト領域または4ビット領域)内の任意のバイト位置(またはビット位置)から,任意の組み合わせのバイトデータ(ビットデータ)を読み出すためには,先頭のコラムアドレスCAと,バイトの組み合わせ情報166として第1の情報SBと第2の情報BMRとが必要である。
図16(A)では,これらのバイト組み合わせ情報SB,BMRが,リードコマンドRDと共に供給される例である。アクティブコマンドACT(図中161)でバンクアドレスBA=2とロウアドレスRA=2とが供給され,続くリードコマンドRD(図中162)でバンクアドレスBA=2,コラムアドレスCA=0と共に,先頭バイト(先頭ビット)位置を示す第1の情報SB=2((図中163)と,バイト(ビット)の組み合わせを示す第2の情報BMR=V(図中165)とが供給される。これにより,図6の矩形領域22の最初の4バイト(4ビット)が入出力端子DQに出力される。矩形領域22の残りの3組の4バイト(4ビット)も同様のバンクアドレスBA,コラムアドレスCAとバイト組み合わせ情報SB,BMRとにより特定される。
図16(B)では,バイト組み合わせ情報SB,BMRのうち,第2の情報BMR(図中165)は,アクティブコマンドACTが発行される以前に,レジスタアクセスモードでモードレジスタセットコマンドEMRS(図中167)と同時に供給され,この第2の情報BMRはメモリ内のモードレジスタ内に記録される。そして,その後の矩形アクセスでは,この第2の情報BMRに基づいて,コラムアクセスが行われる。矩形アクセスでのアクティブコマンドACT(図中161)とリードコマンドRD(図中162)とは,第2の情報BMRを除いて図16(A)と同じである。
上記の第2の情報BMR=Vは,ビッグエンディアン(V=UP),リトルエンディアン(V=DOWN),輝度情報を偶数DQに色差情報を奇数DQに格納する場合(V=AL)などの様々な情報を持つことができる。
画像システムは,図16(A),(B)のいずれの方式でも,矩形アクセスにおけるバイトバウンダリ機能を実現することができる。
図17は,バイトバウンダリ機能を実現するための画像処理システムの構成図である。図8と同様に,画像メモリ86に対してそれを制御するメモリ制御部82が設けられ,メモリ制御部82からは,アドレス情報BA,RA,CAと,それにより選択される4バイト領域(または4ビット領域)内の先頭バイト(先頭ビット)を示す第1の情報SBと,バイトの組み合わせを示す第2の情報BMRとからなるバイト組み合わせ情報(ビット組み合わせ情報)166と,動作コマンドACT,RD,EMRSが,画像メモリ86に供給される。
前述のとおり,タイミングチャート(A)では,リードコマンドRD,または図示しないライトコマンドWTと同時にバイト組み合わせ情報SB,BMR(図中166)が供給される。また,タイミングチャート(B)では,モードレジスタセットコマンドEMRS(図中167)と同時に第2の情報BMRが,リードコマンドRD,または図示しないライトコマンドWTと同時に第1の情報SBが供給される。
図18は,バイトバウンダリ機能を示す図である。この図は,図6の矩形アクセスと同じである。図10以降では,コラムアドレスCAで選択されるメモリ単位領域が4ビット領域の場合を例にして説明してきた。しかし,前述のとおりメモリ単位領域が4バイト領域の場合も同様にバイトバウンダリ機能により矩形アクセスが可能である。図18はそれを改めて示している。
図18の例では,ページ領域14(BA=0,RA=0)内の矩形領域22を効率的にアクセスするために,リードコマンドRD(図中167)と共に,バンクアドレスBA,コラムアドレスCAと,第1の情報SBと第2の情報BMRとからなるバイト組み合わせ情報166とが発行される。それに応答して,矩形領域22内の4バイトのデータBY0−3が入出力端子DQに同時に出力される。ライトコマンドWTの場合も同様の動作が行われる。つまり,入出力端子DQの4組の4バイト端子BY0−3には,最初のリードコマンドRDに対応してCA1,CA1,CA0,CA0内の各バイトデータが対応付けられ,次のリードコマンドRDに対応してCA5,CA5,CA4,CA4内の各バイトデータが対応付けられる。残りのリードコマンドRDに対応するコラムアドレスと入出力端子との対応は図示されるとおりである。
このように,入出力端子DQが4ビット幅の場合も32ビット(4バイト)幅の場合も,同じようにビットバウンダリ,バイトバウンダリの機能を実現することができる。
図19は,簡素化されたバイトバウンダリ機能を実現する画像処理システムの構成図である。前述したとおり,システム設計において,ビッグエンディアンとリトルエンディアンの2種類のメモリマッピングのいずれかが選択可能である。それに対応して,前述の実施の形態では,バイト組み合わせ情報の第2の情報BMRに,ビッグエンディアン用のBMR=UPと,リトルエンディアン用のBMR=DOWNとを指定して,バイトシフトした矩形アクセスであっても,画像上の画素とメモリ空間内でのバイト位置とが対応つけられるようにした。
図19の例は,メモリマッピング12ではリトルエンディアンに対応した構成に設計される場合,メモリ空間15内ではビッグエンディアンに対応するバイトバウンダリ機能しか対応できなくても,画像メモリ86とメモリ制御部82との間に,入出力端子群の入れ替え手段190を設けることで,システム全体がリトルエンディアンに対応したバイトバウンダリ機能を実現することができる。
すなわち,システム側のメモリマッピングがリトルエンディアンの場合は,入れ替え手段190を設けて両者の入出力端子群の0から3を,3から0に入れ替えるようにする。この結果,画像メモリからみるとシステム側がビッグエンディアン対応に見なせるので,第2の情報BMR=UPのみに対応するメモリの構成であっても,リトルエンディアンのバイトバウンダリ機能を実現できる。
図20は,図19の簡素化されたバイトバウンダリ機能を実現する画像処理システムを説明する図である。図20(1)は,画像処理システム80と画像メモリ86とが互いの入出力端子T0−T3を入れ替えしないで接続する接続ユニット200で接続された例であり,図20(2)は,入れ替え接続する接続ユニット190で接続された例である。いずれの場合も,画像メモリ86は,ビッグエンディアン対応のビットバウンダリ機能のみを有し,画像処理システム80は,入出力ビット幅の4ビットのデータを,画素位置X0-X3を入出力端子T3-T1に対応付けるリトルエンディアンタイプである。
図20(1)において,アドレス単位のアクセスをしている場合(A)では,画面上の画素位置(X0-X7)とメモリ側のアドレス(CA)が1対1(X0-X3とCA=0, X4-X7とCA=1)で対応しているので問題ない。しかし,信号SBを指定してビット単位のアクセスをしようとする場合(B)は,ビッグエンディアン対応のビットバウンダリ機能(BMR=UPのみ)しか存在しないメモリでは,画素位置のシフト(X1-X4(BCDE),図中200)とメモリセルの物理位置のシフト(CBAH,図中201)の関係が一致せず,誤ったデータCBAHが転送されてしまう。この場合は,リトルエンディアン対応のビットバウンダリ機能(BMR=DOWN)があれば,メモリセル上のBCDEを出力することができる。しかし,ビッグエンディアンとリトルエンディアンの両方に対応可能なビットバウンダリ機能をメモリに持たせることはコストアップを招く。
そこで,図20(2)のように,システム側とメモリ側で入出力端子をタスキがけ接続する接続ユニット190を設けて,画像上の画素X0-X3がメモリセル上でもDQ0-DQ3に対応するようにすれば,リトルエンディアンの画像処理システム80が,みかけ上,メモリ86からはビッグエンディアンのシステムにみえるようになるため,画素位置のシフト200とメモリセルの物理位置のシフト202の関係が一致し,ビッグエンディアン対応のビットシフトしたアクセスを行っても正常なデータBCDEを転送することができる。
以上の通り,入れ替え接続するたすきがけ変換可能な接続ユニット190を利用することで,ビッグエンディアン対応のビットバウンダリ(またはバイトバウンダリ)機能しかないメモリであっても,リトルエンディアン対応の画像処理システムに対してビットバウンダリ(またはバイトバウンダリ)機能を実現することができる。また,ビッグエンディアンとリトルエンディアンの両方に対応したビットバウンダリ(またはバイトバウンダリ)機能を有するメモリの場合は,入れ替え接続しない接続ユニット200でメモリとシステムとを接続すればよい。
図21は,バイトバウンダリ機能を有するメモリ構成の概念を示す図である。このメモリは,1以上の任意数(Nb)のビットでビット群を構成し,前記任意数(Nb)のビットの2以上の倍数(N)の入出力端子(Nb x N)を持ち,前記所定の倍数(N)より多い複数のビット群(Ng)で全記憶領域(Nb x Ng)を構成し,第1の動作コードに同期して複数のビット群(Ng)の内の任意の1つを選択可能なアドレス情報を受け取り,前記アドレス情報で選択された任意の1つのビット群を起点に所定の規則に従い倍数(N)と同数のビット群を選択し,前記選択されたビット群に属する複数のビット(Nb x N)は,入出力端子(Nb x N)を通して,同時に記憶情報の受け渡しを行う。
上記の任意数のビット(Nb)とは,ビット単位とバイト単位の両方を含む概念であり,前述の実施の形態例に従えば,Nb=8(1バイト)である。また,倍数(N)とは,1つのアドレスから,任意数のビット(Nb)の何倍のデータをアクセスするかを表現したもので,Nb×Nが入出力端子数に対応する。前述の実施の形態例に従えばN=4で,4バイト分の入出力端子数を有する。つまり,より正確には,入出力端子数はNb×Nとなり,入出力端子数=32(=8x4)となる。
また,複数(Ng)のビット群のNgとは,メモリが有する全てのビットまたはバイトのかたまり(Nbビットのビット群)の数のことであり,全記憶領域の容量をNbで割った数字と等価である。通常,一度に入出力されるビット群の数である倍数(N)より遥かに大きい数字になる。例えば64Mビットのメモリにおいて,Nb=1であればNg=64M, Nb=8であればNg=8Mである。これまでの例に従い,64Mビットのメモリで考えれば,Nb=8でNg=8Mになる。
任意の1つのビット群を選択可能なアドレス情報とは,これまでの例に従えば,アドレス(BA,RA,CA)と起点となるビットを示す情報(SB)であり,アドレス(BA,RA,CA)により4バイトに絞り込んだデータを,さらに起点となるバイトを示す情報(SB)により,起点となるバイトに限定していた。
規則に従い倍数(N)と同数のビット群を選択とは,これまでの例に従えば,起点となるバイトと同時にアクセスされるバイトの組み合わせに関する情報(BMR)に従い複数バイトを選ぶことであり,N=4なので,BMR=Upとすれば,ある任意のバイトから,Up方向に連続した4バイトを同時にアクセスすることになる。
この任意の1つのビット群(これまでの例に従えば1バイト)を選択可能な情報(BA,RA,CA)と,起点となるバイトの情報(SB)と同時にアクセスされるバイトの組み合わせに関する情報(BMR)により選ばれた4バイトは,32ビット(=NbxN)の入出力端子を介して,画像処理システムにアクセスされる。
図21に示されたメモリ装置は,メモリ容量が64ビットである。よって,Nb=8ビットからなるビット群がNg=8群存在する。そして,アドレス(BA,RA,CA)とスタートバイトSBとが合計3ビットで構成され,よってNg=8のビット群から1つのビット群が選択される。さらに,同時にアクセスされるN=4群のビット群は,組み合わせ情報(BMR)により決定される。よって,図21の例では,アドレス(BA,RA,CA)とスタートバイトSBとで第2群が選択され,組み合わせ情報BMR=UPにより,第2群から連続する4群(2〜5群)が同時に入出力端子からアクセスされる。
もし,同じ64ビットのメモリ容量であって,アドレスが1ビット増えると,Nb=4ビット単位のビット群がNg=16群存在し,入出力端子がNb×N=32のままだとすると,所定の倍数N=8となり,組み合わせ情報BMRにより他の7つのビット群が選択されることになる。
[バイトバウンダリ機能を有するメモリ]
次に,バイトバウンダリ機能を有する画像メモリの構成を詳細に説明する。バイトバウンダリ機能は,コラムアドレスで選択可能なメモリ単位領域(4バイト領域)の境界を越えて4バイトのデータへのアクセスを可能にする。そのために,メモリ内では,必要な4バイトのデータを入出力する機能が付加される。以下の説明では,簡単のために,バイト組み合わせ情報として第1の情報SB(スタートバイトまたはスタートビットと称する)のみが与えられる場合を例にして説明する。第2の情報BMRはUP固定の例である。
[内部コラム制御例]
まず,メモリ内部のコラム制御の具体例を幾つか説明する。
図22は,バイトバウンダリ機能を有する画像メモリの第1の例を示す図である。また,図23は,図22の動作を説明する図である。
図22において,図9の画像メモリと同じ構成要素には同じ引用文献番号が与えられている。アドレス信号Aはマルチプル方式で入力され,ロウアドレスRAはロウアドレスバッファ94Rに,コラムアドレスCAはコラムアドレスバッファ94Cにそれぞれラッチされる。ロウ制御部87は,選択されたメモリバンク92のロウデコーダ223にロウアドレスRAを供給する。また,コラムバッファ94C内のコラムアドレスCAも,選択されたメモリバンク内のコラムデコーダ222に供給される。
メモリバンク92は,4つのメモリブロックであるバイト領域Byte0−3に分割され,各バイト領域は,メモリセルアレイ224と,第2アンプ225と,1対のデータラッチ226,227と,データバススイッチ228とを有し,1回のアクセスで1バイト(8ビット)のデータを入出力する。4つのバイト領域から合計で32ビット(4バイト)のデータが入出力バスI/Obusに入出力される。入出力バスI/Obusは32ビットの入出力端子DQ0−31にバッファを介して接続される。なお,図22には,1つのメモリバンク92のみ示され,残りの3つのメモリバンクは省略されている。
コラム制御部90は,コラムデコーダ222の動作タイミングを制御するコラムタイミングコントローラ220と,データラッチ回路226,227とデータバススイッチ228を制御するデータラッチセレクタ221とを有する。データラッチセレクタ221は,コラムアドレスCAとスタートバイト信号SBとに応じて,各バイト領域Byte0−3内のデータラッチ回路226,227とデータバススイッチ228とを制御する。
図23に示されるとおり,ロウアドレスRA0のページ領域内において,コラムアドレスCA0の2バイト目からコラムアドレスCA1の1バイト目までの4バイトデータをアクセスするものと仮定する。よって,スタートバイト信号SB=1である。
図23のメモリチップ86には,メモリ空間と入出力端子DQとの関係が示されている。図23では,コラムアドレスCAにより一度に選択されるメモリ単位領域の4バイトデータをQ00〜Q15で示している。つまり,コラムアドレスCA0により4バイトデータQ00−03が選択され,コラムアドレスCA1により4バイトデータQ04−07が選択される。
図23の右側にはタイミングチャートが示されている。まず,アクティブコマンドACTと共に,図示しないバンクアドレスと共にロウアドレスRA0が与えられ,対応するバンク内のワード線が駆動されセンスアンプが活性化される。その後,リードコマンドRDと共にコラムアドレスCA0とバンク組み合わせ情報としてスタートバイト信号SB=1が与えられる。これに応答して,選択されたメモリバンク92内のコラムデコーダ222は,コラムアドレスCA0に対応する内部デコード信号222Dと,CA0を+1インクリメントしたCA1に対応する内部でコード信号222Dとを時分割で4つのバイト領域Byte0−3に出力し,各バイト領域では,CA0とCA1に対応する2組の1バイトデータをデータラッチ回路226,227にキャッシュする。そして,データバススイッチ228は,各バイト領域でのCA0とSB1の組み合わせに応じて選択される1バイトデータをいずれかのデータラッチ回路226,227から入出力バスI/Obusに出力する。つまり,CA0のデータQ01,Q02,Q03と,CA1のデータQ04とが入出力バスI/Obusに出力される。ライト動作のときは,入出力バスからいずれかのデータラッチ回路に1バイトのデータが入力される。
すなわち,コラムデコーダは1回のアクセスで各バイト領域で1バイト分のコラム線(ビット線)を選択する。リード動作では,各バイト領域のメモリセルアレイ224から1バイト分のデータが選択され第2アンプ225で増幅されデータラッチ回路226,227にキャッシュされる。このとき、各バイト領域では,同じコラムアドレスCAにマッピングされたメモリセルにアクセスする。コラムアドレスで選択できるメモリ単位領域(4バイト領域)の境界をまたぐバイトバウンダリアクセスを実現する為、コラムデコーダ222は1回目のアクセス終了後に再度コラム線の選択を行う。このコラム線のアドレスは前回のアドレスCA0より1番地進行したCA1である。メモリセルアレイ224から読み出された1バイトのデータは第2アンプで増幅され、1回目のアクセスとは異なるデータラッチ回路227にキャッシュされる。
したがって,データラッチ回路226,227には1回のアクセスで入出力端子DQが必要とする4バイトの2倍の8バイト分のデータが存在する為,データバススイッチ228は,各バイト領域のデータラッチ回路にキャッシュされた2バイト分のデータから半分の1バイト分のデータを選択し,入出力バスI/Obusに転送する。データラッチセレクタ221は,コラムアドレスCA0とスタートバイト信号SB=1に応じて,各バイト領域内のデータラッチ回路226,227へのキャッシュ動作と,データバススイッチ228でのスイッチ動作とを制御する。これにより,各バイト領域から異なるコラムアドレスCA0,CA1に対応するバイトデータを入出力バスI/Obusに転送することができる。
その結果,図23に示されるとおり,入出力バスI/Obusを経由して,入出力端子DQには,4バイトのデータQ04,Q01,Q02,Q03がそれぞれ転送される。このように,第2アンプ225,データラッチ回路226,227,データバススイッチ228で,入出力ユニット93が構成される。
図24は,バイトバウンダリ機能を有する画像メモリの第2の例を示す図である。また,図25は,図24の動作を説明する図である。
図24において,図22と異なる構成は,メモリバンク92内の各バイト領域Byte0−3において,メモリセルアレイが2つのアレイ224−0,224−1に分割され,それぞれに第2アンプ225,データラッチ回路226,227が設けられている。1対のメモリセルアレイ224−0,224−1は,コラムアドレスCAが偶数(CA[0]=0)と,奇数(CA[0]=1)とに対応している。そして,コラムデコーダ222は,与えられたコラムアドレスCA0から,CA0とCA1のデコード信号を時分割で出力するのではなく,それら2つのデコード信号222D0,222D1を同時に分割された1対のメモリセルアレイ224−0,224−1に出力する。それに応答して,1対のメモリセルアレイは,それぞれ1バイトデータをデータラッチ回路226,227に出力する。これにより,各バイト領域は供給されたコラムアドレスCAと+1インクリメントしたコラムアドレスの2バイトのデータを同時にキャッシュすることになる。そして,データラッチセレクタ221が,コラムアドレスCAとスタートバイト信号SBとに応じて,データバススイッチ228の切り替えを制御し,必要な1バイトデータを入出力バスに転送する。4つのバイト領域がそれぞれ1バイトずつのデータを出力し,合計で4バイトのデータが入出力端子DQから出力される。
ライトコマンドの場合は,入出力端子DQに供給された4バイトのデータが,コラムアドレスCAとスタートバイト信号SBとに応じて切替制御されたデータバススイッチ228を介して,2つのデータラッチ回路226,227に格納され,2つのメモリセルアレイ224−0,224−1に書き込まれる。
図25には,スタートバイト信号SB=1,バースト長BL=4の場合の動作が示されている。リードコマンドRDと同時にコラムアドレスCA0とスタートバイト信号SB=1が供給され,バースト長BL=4がモードレジスタにセットされているとすると,コラムデコーダ222が,コラムアドレスCA0とそれを+1インクリメントしたCA1に対応するデコード信号222D0,1を同時に,各バイト領域Byte0−3に供給する。それに応答して,各バイト領域の1対のメモリセルアレイ224−0,224−1が,第2アンプ225を介して,それぞれ1バイトのデータをデータラッチ回路226,227に出力する。これにより,各バイト領域から2バイトのデータがキャッシュされる。そして,データラッチセレクタ221が,コラムデータCAとスタートバイト信号SBに基づいて,各バイト領域においていずれのデータラッチ回路のデータを選択するかの制御信号S221(4つのバイト領域に1ビットずつ合計4ビット)をデータバススイッチ228に供給し,データバススイッチ内のスイッチ動作を制御する。その結果,最初のサイクルでは,4バイトのデータQ04,Q01−03が入出力バスI/Obusに転送される。
図25では,バースト長BL=4であるため,コラムタイミングコントローラ220の制御にしたがって,コラムデコーダ222は,コラムアドレスCA2,CA3に対応するデコード信号222D0,222D1を発行し,更に8バイトのデータをデータラッチ回路22,227にキャッシュする。データラッチ回路226,227は,CA0,CA1の8バイトデータも保持する必要があるので,各データラッチ回路はそれぞれ2バイトのデータを保持できる構成になっている。その結果,新たに8バイトデータQ08−Q15がデータラッチ回路にラッチされる。そして,前クロックサイクルで保持していた8バイトデータQ00−Q15と現クロックサイクルで保持した8バイトデータQ08−A15から,4バイトデータQ05−Q08がデータバススイッチ228により入出力バスに転送される。よって,この場合のデータラッチセレクタ221のセレクト信号S221は,8ビット(各バイト領域に2ビット)で構成される。
そして,次のクロックサイクルで,コラムデコーダ222は,コラムアドレスCA4,CA5に対応するデコード信号222D0,222D1を発行し,更に8バイトのデータQ16−Q23をデータラッチ回路にキャッシュする。そして,データバススイッチ228は,4バイトのデータQ09−Q12を転送する。そして,更に次のクロックサイクルでは,データバススイッチ228が4バイトデータQ13−Q16を入出力バスに転送する。この時は,メモリセルアレイから新たに8バイトデータをキャッシュする必要はない。
ライト動作も,前述と同様であり,バースト長BL=4の場合は,4サイクルで4バイトデータが入出力端子DQに供給され,データバススイッチ228を介してデータラッチ回路226,227に格納される。そして,コラムデコーダ222からのコラムアドレスCA0,1,CA2,3,CA4,5のデコード信号に応答して,合計で16バイトデータが3サイクルでメモリセルアレイ内に書き込まれる。
図26は,バイトバウンダリ機能を有する画像メモリの第2の例の変形例(1)の動作を示す図である。図25の例では,各バイト領域Byte0−3が2バイトのデータを1対のデータラッチ回路226,227に同時にキャッシュしていた。それに対して,図26の変型例では,リードコマンドRD後の最初のコラム制御では,コラムデコーダ222がコラムアドレスCA0,CA1の内部デコード信号222D0,222D1を同時に発行して,各バイト領域で2バイトのデータを1対のデータラッチ回路に同時にキャッシュする。そして,その後のキャッシュ動作では,コラムデコーダ222が,偶数側(CA2,CA4)の内部デコード信号222D0と奇数側(CA3)の内部デコード信号222D1とを,交互に発行し,各バイト領域は1バイトデータを1対のデータラッチ回路226,227に交互にキャッシュする。
つまり,最初は8バイトデータQ00−Q07をキャッシュし,次からは4バイトデータQ08−Q11,Q12−Q15,Q16−Q19をデータラッチ回路にキャッシュする。そして,データバススイッチ228が,転送すべき4バイトデータDQ1−DQ4,Q05−Q08,Q09−Q12,Q13−Q16を入出力バスに順番に転送する。この場合も,データラッチセレクタ221のセレクト信号S221は,8ビット(各バイト領域に2ビット)で構成される。以上のように,リード動作において,コラムアドレスのデコード信号によるメモリセルアレイからのデータのデータラッチ回路へのキャッシュ動作は4サイクルで行われ,データラッチ回路から入出力バスへのデータ転送動作も4サイクルで行われる。
書き込み動作の場合も,4サイクルで4バイトデータが入出力端子DQに供給され,4サイクルでデータバススイッチ228を介してデータラッチ回路226,227に格納される。そして,コラムデコーダ222からのコラムアドレスCA0/1,CA2,CA3,CA4のデコード信号に応答して,合計で16バイトデータが4サイクルでメモリセルアレイ内に書き込まれる。
図27は,バイトバウンダリ機能を有する画像メモリの第2の例の変形例(2)の動作を示す図である。この例は,DDR(Double Data Rate)に適用される例である。DDRのSDRAMは,クロックCLKの立ち上がりエッジと立ち下がりエッジの両方でDQ端子からデータの入出力を行う。つまり,立ち上がりエッジで4バイトデータQ05−Q08,立ち下がりエッジで4バイトデータQ09−Q12がそれぞれ入出力される。
このように入出力レートが2倍になるので,メモリ内部のキャッシュするデータ量も2倍にする必要がある。図27の例では,リードコマンドRDの後の最初のキャッシュサイクルで16バイトのデータQ00−Q03,Q04−Q07,Q08−Q11,Q12−Q15が同時にデータラッチ回路にキャッシュされ,16バイトデータから4バイトデータQ05−Q08がクロックの立ち上がりエッジでI/Oバスに転送され,次の4バイトデータQ09−Q12がクロックの立ち下がりエッジでI/Oバスに転送される。
図27のような16バイトデータの一括キャッシュを可能にするために,メモリは,図24におけるバイト領域Byte0−3内で,4つのメモリセルアレイに分割され,それぞれに第2アンプ,データラッチ回路が設けられる。そして,各バイト領域で,コラムデコーダ222は,先頭コラムアドレスCA1に対応してコラムアドレスCA0−3の内部デコード信号を,4つのメモリセルアレイに供給し,4バイトデータが4つのデータラッチ回路にキャッシュされる。そして,4つのデータラッチ回路からデータラッチセレクト信号S221によりデータバススイッチ228により選択されたデータラッチ回路の1バイトデータが入出力バスに転送される。図中,コアバスCorebusは,メモリセルアレイの入出力バスに対応し,それらのデータはデータラッチ回路にキャッシュされる。
なお,図27の例では,入力コラムアドレスCAのLSB(CA[0])を無視する構成になっていて,入力コラムアドレスCA0,CA1のいずれの場合も,常にコラムアドレスCA0−3に対応するデータがアクセスされる。つまり,入力コラムアドレスが奇数,偶数に関わりなく,ペアリングされるコラムアドレスは固定的になっている。
さらに,次のクロックサイクルでは,コラムデコーダ222がコラムアドレスCA4−7の内部デコード信号を4つのメモリセルアレイに発行し,さらに4バイトデータを4つのデータラッチ回路にキャッシュする。これにより,16バイトデータQ16−Q31がデータラッチ回路にラッチされ,そのなかから選択された,4バイトデータQ13−Q16と,4バイトデータQ17−Q20とが,クロックの立ち上がりエッジと立ち下がりエッジでそれぞれ出力される。
ライト動作では,上記と逆方向に書き込みデータが入出力端子DQからデータラッチ回路を介してメモリセルアレイ内に書き込まれる。
図27の場合も,データラッチセレクト信号S221は,各バイト領域に2ビット,合計で8ビットの制御信号である。そのようなデータラッチセレクト信号は,コラム制御部90内のデータラッチセレクタ220がコラムアドレスCAとスタートバイト信号SBに応じて生成する。
図28は,バイトバウンダリ機能を有する画像メモリの第2の例の変形例(3)の動作を示す図である。これも図27と同様にDDRに対応する動作例であり,図27と異なる点は,入力コラムアドレスCAが奇数か偶数かに応じて,同時にコラムアクセスされるアドレスの組み合わせが異なる。つまり,入力コラムアドレスCAとそれに+1,+2,+3したCAに対応するデータが同時にアクセスされる。つまり,入力コラムアドレスCA1の場合は,CA1,CA2,CA3,CA4のデータがアクセスされる。つまり,コラムデコーダは,入力コラムアドレスCAのLSB(CA[0])を監視して,同時アクセスすべきコラムアドレスを決定する。
図28に示されるとおり,入力コラムアドレスCA1に対して,コラムデコーダは,CA1−CA4の内部デコード信号222D0−3を生成し,各バイト領域で4バイトデータ,合計で16バイトデータがデータラッチ回路にキャッシュされる。そして,次のクロックサイクルではCA5−CA8の内部デコード信号222D0−3を生成し,更に16バイトデータがキャッシュされる。よって,キャッシュされる16バイトデータが,図27と4バイトだけずれている。
よって,図28のリード動作及びライト動作も図27と同様のメモリ構成で実現できる。
図29は,バイトバウンダリ機能を有する画像メモリの第3の例を示す図である。また,図30は,図29の動作を説明する図である。第3の例では,バイトバウンダリ機能により入出力される4バイトデータQ01−Q04を,各バイト領域Byte0−3への1回のコラムアクセスによりアクセスし,入出力バスに転送する。つまり,前述の第1,第2の例のように隣接するコラムアドレスのメモリ単位領域に対する4バイトデータのアクセスのために,それより多い8バイトデータまたは16バイトデータを隣接コラムアドレスの複数メモリ単位領域からキャッシュをすることはしない。
図29に示されるとおり,コラム制御部90は,コラムアドレスコントローラ290を有し,メモリバンク92内の各バイト領域Byte0−3内のコラムシフタ回路291に,コラムアドレスCAを+1シフトすべきか否かのシフト制御信号S290を供給する。各バイト領域は,コラムシフタ291と,その出力をデコードするコラムデコーダ222と,内部デコード信号222Dにより1バイトデータを入出力するメモリセルアレイ224と,第2アンプと,データラッチ回路226と,データバススイッチ回路228とを有する。各バイト領域内のコラムシフタ291は,シフト制御信号S290に応答して,コラムアドレスCAを+1シフトする又はシフトしないでコラムアドレスをコラムデコーダ222に出力する。データラッチ回路226は,1バイトデータのみ保持できればよい。したがって,データバススイッチ回路228は,データラッチ回路226内の1バイトデータを常に選択して,入出力バスI/Obusに転送するだけである。
図30の動作を示す図によれば,コラムアドレスコントローラ290が,入力コラムアドレスCA0とスタートバイト信号SBとに応じて,バイト領域Byte0のコラムシフタ291にコラムアドレスCA0を+1シフトしてCA1を生成させるよう制御し,他のバイト領域Byte1−3のコラムシフタには+1シフトさせないよう制御する。その結果,バイト領域Byte0では,コラムアドレスCA1に対応する内部デコード信号222Dに基づいて1バイトデータQ04がアクセスされ,データラッチ回路226にラッチされる。また,他のバイト領域Byte1−3では,コラムアドレスCA0に対応する内部デコード信号222Dにもとづいて各1バイトデータQ01,Q02,Q03がアクセスされ,データラッチ回路226にラッチされる。
上記のとおり,図29,図30の第3の例では,メモリ内部でコラムアドレスをアクセス対象の4バイトデータに対応させて発生しているので,その分コラムデコーダ側が複雑な構成になるが,4バイトより多いバイトデータのキャッシュ動作をなくすことができるので,入出力ユニット93での構成がシンプル化され,且つメモリバンク内の消費電力を削減することができる。
リード動作では,各バイト領域でコラムデコーダ222からのコラムアドレスに対応する1バイトデータをデータラッチ回路226に出力し,データバススイッチ228を介して入出力端子DQに転送する。ライト動作では,入出力端子DQに入力された4バイトデータが,各バイト領域でデータバススイッチ228を介してデータラッチ回路226にラッチされる。そして,各バイト領域でコラムデコーダ222からのコラムアドレスに対応するメモリにラッチされたデータが書き込まれる。
上記の図22〜図31に示したバンク内の4つのバイト領域は,コラムアドレスで選択されるメモリ単位領域が4ビットで構成される場合は,4つのビット領域になり,各ビット領域からは1ビット単位のデータが複数組または単数組でアクセスされる。
[入出力端子との対応制御]
次に,画像メモリ内における入出力端子DQとメモリセルアレイ内のバスまたはデータラッチ回路との対応制御例について説明する。
図31は,バイトバウンダリ機能を有する画像メモリの入出力端子との対応手段を示す図である。図32は,図31の動作を示す図である。この入出力端子との対応手段では,図32に示されるとおり,メモリ空間内のコラムアドレスCAに対応する4バイトデータは,常に同じ入出力端子群DQ[7:0]〜DQ[31:24]に対応付けられ,動的に対応関係を入れ替えることは行わない。つまり,入出力端子DQとメモリ内のバス(メモリセルアレイ224の入出力バス)との対応関係(割付関係)は,スタートバイト信号SBの影響を受けず常に固定的である。よって,ライト時とリード時でスタートバイト信号SBが異なっていても,ライト時に入力される入出力端子DQとリード時に出力される入出力端子DQとは同じ端子である。
図31には,コラムアドレスCAで選択される4バイト領域の境界をまたぐ4バイトアクセスする場合のDQ端子との接続方法が示されている。この図ではコラムアドレスCA0内の4バイト領域のByte1(Q01)からのリード動作(SB=1)を想定している。
入出力端子DQの入れ替えを行わない場合、Byte1のデータとして記憶したデータはスタートバイト信号SBに依存せずに必ずByte1に対応するDQ端子に出力される。そのため、メモリセルアレイ224と入出力バッファ94I/Oの接続は常に固定的に割り付けられる。従って、スタートバイト信号SBの指定は,単にメモリセルアレイ224のどのコラムアドレスCAのバスを入出力バッファ94I/Oに接続すべきかの判別に利用される。
図31の例は,図22の第1の例,図24の第2の例に対応する構成例であり,各バイト領域Byte0−3が1対の領域(奇数コラムアドレス,CA[0]=0と,偶数コラムアドレス,CA[0]=1)に分割されている。つまり,図24と同様に,コラムアドレスCAが奇数と偶数の2つのメモリセル領域が存在し、その中がさらに4つのByte領域に分割されている。バイト領域Byte0 Area〜Byte3 Areaは,コラムデコーダからデータラッチ回路までを含むものとする。リード動作の場合、1回のアクセスに必要なデータの2倍のデータがByte Areaから出力され,データバススイッチ228のスイッチ群(図中8個の四角)でその半分の4バイトデータが入出力バッファ94I/Oに接続される。
このように入出力端子DQの入れ替えを行わない場合,メモリセルのByte1 Areaから出力されたデータQ01は入出力バッファ94I/OのByte1に相当する入出力端子DQ[15:8]に必ず接続される。従って,バイトスタート信号SBを用いたデータバススイッチ228の制御は,2つのコラムアドレスCAに対応する領域のいずれのデータラッチ回路を入出力バッファ94I/Oと接続するかの制御である。
図24における4つのバイト領域Byte0−3内のデータバススイッチ228が,図31のデータバススイッチ228にまとめて示されている。よって,各バイト領域のデータバススイッチ228は,図31内の同じ入出力端子DQに対応する1対のスイッチで構成される。
図33は,バイトバウンダリ機能を有する画像メモリの入出力端子との対応手段を示す図である。図34は,図33の動作を示す図である。この入出力端子との対応手段では,図34に示されるとおり,メモリ空間内のコラムアドレスCAに対応する4バイトデータは,スタートバイト信号SBに応じて先頭バイトから順番に入出力端子群DQ[7:0]〜DQ[31:24]に対応付けられ,メモリセルアレイ224と入出力端子群DQとの間で動的に対応関係が入れ替えられる。つまり,入出力端子群DQとメモリ内のバスと対応関係(割付関係)はスタートバイト信号SBの影響を受けて動的に変化する。よって,ライト時とリード時でスタートバイト信号SBが異なっていると,ライト時に入力される入出力端子群DQとリード時に出力される入出力端子群DQとは異なる端子になる。
図34から明らかなとおり,スタートバイト信号SB=1の場合は,メモリ内のデータQ01−Q04が入出力端子群DQ[7:0]〜DQ[31:24]に対応付けられる。つまり,スタートバイト信号SBに応じてメモリセルアレイ内のバス又はデータラッチ回路と入出力端子群との対応を,先頭のバイトデータは入出力端子DQ[7:0]に,残りの3バイトデータは残りの入出力端子DQに順次対応するようにする。そのために,図33のデータバススイッチ228には,入出力バス群I/Obusとメモリセルアレイ224のバスまたはデータラッチ回路との全ての交差位置にスイッチが設けられる。そして,これらのスイッチ群をデータラッチセレクタ221からのデータラッチセレクト信号S221によりオン・オフ制御することで,上記のような動的な対応付けを実現することができる。
このように,スタートバイト信号SBに応じて,メモリセルアレイ内のバスまたはデータラッチ回路に対して入出力端子DQの入れ替えを行う。具体的には,メモリセルアレイ内のバイト領域Byte1から出力されたバイトデータQ01は,SB="1"の場合には入出力バッファ94I/OのByte0に相当するDQ[7:0]に接続され,SB="0"の場合はDQ[15:8]に接続される。バイト領域Byte1のバイトデータQ05は,SB="3"の場合はDQ[23:16]に接続され,SB="2"の場合はDQ[31:24]に接続される。つまり,図33中の閉じた状態の4つのスイッチの位置が,スタートバイト信号SBに応じて右方向にずれることになる。
次に,入出力端子との対応制御において,ビッグエンディアンとリトルエンディアンへの対応制御について説明する。
図35は,バイトバウンダリ機能を有する画像メモリであってエンディアンに対応可能な画像メモリの構成図(1)である。この例は,図19,図20で説明した画像メモリと同様に,メモリコア350内の構成はビッグエンディアン(アップモード)にのみ対応している。つまり,バイトバウンダリ動作において,スタートバイト信号SBに対応するバイト位置から4バイトデータをアップモードでアクセスする機能のみである。その場合であっても,データバススイッチ228のスイッチ群を制御することで,ビッグエンディアン対応の画像システムとも,リトルエンディアン対応の画像システムとも正しいデータの入出力を実現することができる。
図中,モードレジスタ96には,アップモードかダウンモードかを示すバイト組み合わせ情報の第2の情報BMRが与えられ,いずれかのモードに設定される。ただし,図29などのコラムデコーダ,メモリセルアレイ,第2アンプを含むメモリコア350は,アップモード制御にしか対応していない。つまり,コラム制御回路にはアップモードコントローラ351のみを有し,ダウンモードコントローラは有していない。
図35(A)は,アップモードの場合のデータバススイッチ228を示している。つまり,ビッグエンディアンであるアップモードの場合は,メモリコア350はアップモードコントローラ351によりアップモードに制御される。よって,データバススイッチ228は,データラッチ回路226の4バイトのデータByte0−3をそのまま入出力バッファ94I/Oに接続する。つまり,メモリコア350のコアデータバスcdb00z〜cdb31zが,I/Oデータバスpdb00z〜pdb31zにストレートに接続される。
一方,図35(B)は,ダウンモードに設定された場合のデータバススイッチ228を示している。つまり,リトルエンディアンであるダウンモードの場合,メモリコア350はアップモードコントローラ351によりアップモードに制御されるが,データバススイッチ228は,データラッチ回路226の4バイトデータByte0,1,2,3を,たすきがけして入出力バッファ94I/Oの4バイトByte3,2,1,0に対応付ける。この場合は,バイト単位でコアバスcdbxxzとI/Oバスpdbxxzとが切り替えられる。
図35(B)のデータバススイッチ228は,図19,20に示した入出力端子群の入れ替え手段190と同じものを,画像メモリ86内に設けた例である。このように,メモリコアの構成はビッグエンディアンとリトルエンディアンのいずれかに対応可能な構成にし,上記のようなデータバススイッチ228を設けて,そのスイッチをダウンモードまたはアップモードに応じて切り替えることで,両方のエンディアンに対応することが可能になる。
図36は,バイトバウンダリ機能を有する画像メモリであってエンディアンに対応可能な画像メモリの構成図(2)である。この画像メモリは,図35と同様に,アップモード制御にのみ対応可能なメモリコア構成を有し,データバススイッチ228をモードレジスタ96に設定された第2の情報BMR=UP/DOWNに応じて切り替えることで,いずれのモードにも対応可能にしている。そして,図35と異なるところは,データバススイッチ228によるデータの入れ替えは,MSB(DQ31)とLSB(DQ00)とが入れ替えられるよう行われる。つまり,4バイトの入れ替えに加えて,各バイトの8ビットのデータも入れ替えられる。
図37は,バイトバウンダリ機能を有する画像メモリであってエンディアンに対応可能な画像メモリの構成図(3)である。この画像メモリは,図29の画像メモリに対応し,メモリコア350内の4つのバイト領域にのコラムアドレスの組み合わせを,動作モードに対応して変更制御し,スタートバイト信号SBに対応したバイトからアップ方向またはダウン方向の4バイトデータを4つのメモリアレイから入出力する。
例えば,図30に示したようにコラムアドレスCA0,スタートバイト信号SB=1の場合は,4つのバイト領域Byte0−3の内部コラムアドレスは,アップモードであればCA1,CA0,CA0,CA0となり,データQ04,Q01,Q02,Q03が4バイトの入出力端子DQから入出力される。一方,ダウンモードであればCA0,CA0,CA1,CA1となり,データQ00,Q01,Q06,Q07が4バイトの入出力端子DQから入出力される。
このように,コラムシフタ291により,アップモードとダウンモードとで,メモリコア内の4つのバイト領域Byte0−3に与えるコラムデータを切り替える。そして,スタートバイト信号SBとモード信号BMRとにより一意に決まるコラムアドレスの組み合わせが,コラムシフタ291を介して,メモリコア350内の各バイト領域に供給される。このコラムシフタ291は,コラムアドレス制御部90Aからの4つのコラムアドレスcaby0z-caby3zのうち切り替えが必要な2つのうちいずれかを,アップモード・ダウンモードUp/Downに応じて選択する。つまり,バイト領域Byte0では,caby0z,caby3zのいずれかが選択され,バイト領域Byte1では,caby1z,caby2zのいずれかが選択され,バイト領域Byte2では,caby1z,caby2zのいずれかが選択され,そして,バイト領域Byte3では,caby0z,caby3zのいずれかが選択される。
シングルデータレート(SDR)の場合は,1回のアクセスで4バイトデータを入出力できれば良いので,図29で説明したとおり,各バイト領域に対応するデータラッチ回路に保持された1バイトデータをそのまま入出力バスに転送すればよい。
一方,ダブルデータレート(DDR)の場合は,1回のアクセスで8バイトデータを4バイトずつ入出力する必要がある。よって,図29の構成において,各バイト領域Byte0−3内に偶数コラムアドレス(CA[0]=0)のブロックと奇数コラムアドレス(CA[0]=1)のブロックとを有し,それら1対のブロックにスタートバイト信号SBとモード信号BMRとにより一意に決まる組み合わせのコラムデータをコラムシフタ291から供給し,データバススイッチ228により必要な4バイトデータを選択して入出力バスI/Obusに転送する。その場合は,データバススイッチ228内の各スイッチは,データラッチセレクタ221からの制御信号dabyaz-dabydzに応じて,偶数ブロックか奇数ブロックのデータを選択して入出力バスI/Obusに転送する。そのため,データラッチセレクタ221には,コラムアドレス制御部90Bからデータバス用のコラムアドレスdaby0z-daby3zが供給され,データラッチセレクタ221が,アップモード・ダウンモードUp/Downに応じて,4つのバイト領域の中から切り替えが必要な2つのうちのいずれかを選択する。この切り替え候補の組み合わせは,前述のコラムシフタ291と同じである。
図37のように,コラムアドレスの組み合わせを制御することで,データバススイッチ228のスイッチ群のスイッチ数を減らすことができる。すなわち,図35,36に示したデータバススイッチでは,入出力端子DQ数がNバイトの場合,2N*8個のスイッチが必要となる。しかし,図37のようにコラムアドレスの組み合わせを制御することで,コラムシフタ291とデータバススイッチ228にそれぞれ2N個のスイッチが必要となり,合計で4N個のスイッチが必要になる。よって,図35,36よりもスイッチ数を1/4に減らすことができる。
図38,図37のDDRメモリにおけるアップモードの動作タイミングチャート図である。この例は,コラムアドレスCA1とスタートバイト信号SB=1の例であり,ビッグエンディアンでメモリ86に記憶したデータDQ05―DQ08を読み出す例である。つまり,メモリ86内のコラムアドレスに対するデータQ00-Q19と入出力端子DQとの関係は図示される通りである。
前述したとおり,DDRメモリの場合は,メモリセルアレイ内の各バイト領域が偶数コラムアドレスのブロック(CA[0]=0)と奇数コラムアドレスのブロック(CA[0]=1)とを有し,それらのブロックに制御された組み合わせのコラムアドレスcabyが供給され,データバススイッチ228に制御された組み合わせのデータバス切り替え用のコラムアドレスdabyが供給される。
すなわち,基点となるコラムアドレスCAとしてCA1を入力する。それに伴って,各バイト領域Byte0−3内の偶数ブロック(CA[0]="0")と奇数ブロック(CA[0]="1")とに供給されるコラムアドレスCAが制御され,偶数ブロック(CA[0]="0")の領域はコラムアドレスCA2のコラム線が活性化され,奇数ブロック(CA[0]="1")の領域は,バイト領域Byte 0ではコラムアドレスCA3のコラム線が活性化され,バイト領域Byte1,2,3ではコラムアドレスCA1のコラム線が活性化される。
この結果、メモリコアのコアバスにはデータQ05〜Q12が出力される。つまり,偶数ブロックのコアバスにはデータQ08-Q11が出力され,奇数ブロックのコアバスにはデータQ5-Q7,Q12が出力される。
DDRメモリでは,この8バイトのデータから入出力バスI/Obusに4バイトデータを転送する必要がある。そこで,データバススイッチが,スタートバイト信号SBとコラムアドレスCAに基づいて,バイト領域Byte0のみ偶数ブロック(CA[0]="0")のデータを選択し,その結果,データQ05〜Q08を入出力端子DQに出力することができる。
ここで、偶数,奇数(CA[0]="0"/"1")の各領域で,内部コラムアドレスcabyazはcaby0zを選択し、内部コラムアドレスcabybzはcaby1zを,cabyczはcaby2zを,cabydzはcaby3zをそれぞれ選択している。同様に,偶数,奇数(CA[0]="0"/"1")の各領域でデータバス用のコラムアドレスdabyazはdaby0zを選択し,同様に,dabybzはdaby1zを,dabyczはdaby2zを,dabydzはdaby3zをそれぞれ選択している。
図39は,図37のDDRメモリにおけるダウンモードの動作タイミングチャート図である。この例は,コラムアドレスCA1とスタートバイト信号SB=2の例であり,リトルエンディアンでメモリ86に記憶したデータDQ05―DQ08を読み出す例である。つまり,メモリ86内のコラムアドレスに対するデータQ00-Q19と入出力端子DQとの関係は図示される通りである。図38とは,4バイトのデータと入出力端子DQとの関係が逆方向になっている。
この場合は,基点となるコラムアドレスCAとしてCA1を入力する。それに伴って,各バイト領域Byte0−3内の偶数ブロック(CA[0]="0")と奇数ブロック(CA[0]="1")とに供給されるコラムアドレスCAが制御され、偶数ブロック(CA[0]="0")にはコラムアドレスCA2のコラム線が活性化され,奇数ブロック(CA[0]="1")では,バイト領域Byte 3はコラムアドレスCA3のコラム線が活性化され,バイト領域Byte2,1,0の各領域はコラムアドレスCA1のコラム線が活性化される。
この結果、メモリコアのコアバスにはデータQ05〜Q12が出力される。つまり,偶数ブロックのコアバスにはデータQ08-Q11が出力され,奇数ブロックのコアバスにはデータQ5-Q7,Q12が出力される。
DDRメモリでは,この8バイトのデータから入出力バスI/Obusに4バイトデータを転送する必要がある。そこで,データバススイッチが,スタートバイト信号SBとコラムアドレスCAとに基づいて,バイト領域Byte3のみ偶数ブロック(CA[0]="0")のデータQ08を選択し,残りは奇数ブロックからデータQ05−07を選択し,4バイトデータQ05〜Q08を入出力端子DQに出力することができる。
ここで、偶数,奇数(CA[0]="0"/"1")の各領域で,内部コラムアドレスcabyazはcaby3zを選択し、内部コラムアドレスcabybzはcaby2zを,cabyczはcaby1zを,cabydzはcaby0zをそれぞれ選択している。同様に,偶数,奇数(CA[0]="0"/"1")の各領域でデータバス用のコラムアドレスdabyazはdaby3zを選択し,同様に,dabybzはdaby2zを,dabyczはdaby1zを,dabydzはdaby0zをそれぞれ選択している。
以上のとおり、図38のアップモードと比較すると,cabyz,dabyz をバイト領域Byte0とByte3で入れ替え、さらにバイト領域Byte1とByte2で入れ替えることで,ビッグエンディアンとリトルエンディアンの2種類のバイトデータの並びに対応することができる。
図40は,バイトバウンダリ機能におけるバウンダリの指定方法について説明する図である。図中,コラムアドレスCA[7:0]が#nと#n+1の隣接する4バイト領域の境界を越えてアクセスが行われるバイトバウンダリ機能では,バウンダリの指定方法がスタートバイトSBによる場合と,シフトバリューSVによる場合とが考えられる。スタートバイトSBは,バイトNから4バイトアクセスすることを意味し,シフトバリューSVが,コラムアドレスの4バイト領域の境界からNバイトシフトした位置から4バイトアクセスすることを意味する。
その場合,エンディアンの2つのモードに対応して,アップモードとダウンモードとでは,スタートバイトSBとシフトバリューSVとの対応関係が異なってくる。つまり,アップモードなら,バイトデータの並びがByte0−3となっているので,SBとSVは等価である。しかし,ダウンモードでは,バイトデータの並びがByte3−0となっているので,SBとSVとは等価にならず,逆の関係になる。
したがって,画像メモリがスタートバイト信号SBの端子のみを有し,内部構造がシフトバリューSVに応じて制御される場合は,アップモードかダウンモードかに応じて,スタートバイト信号SBを非反転または反転して,シフトバリューSVに変換する必要がある。画像メモリがシフトバリューSV端子のみを有し,内部構造がスタートバイトSBに応じて制御される場合も同様である。
図41は,スタートバイトSBとシフトバリューSVとの変換回路を示す図である。変換回路410は,2ビット構成410[0],410[1]であり,CMOSトランスファゲート412,413とインバータ414,415で構成され,入力スタートバイトSBが,アップモードかダウンモードかを示すカウントタイプ信号に応じて,非反転または反転してシフトバリューSVに変換される。変換回路410の真理値表411に示されるとおり,アップモードではSBは非反転されてSVになるが,ダウンモードではSBは反転されてSVになる。
[矩形アクセスでのコラムアドレス制御]
図1に示したように,画像メモリのメモリ空間を画像の画素に対応付けるメモリマッピング12,14Eでは,バンクアドレスBAとロウアドレスRAで選択されるページ領域14内において,画像のマトリクス状の画素の配置に対応して,コラムアドレスCAで選択されるメモリ単位領域(4バイト領域)を所定の折り返し幅(CA Wrap)で折り返すようにマッピングされる。図1の例では,ページ領域14内はコラムアドレスCAが4単位で折り返されている。つまりコラムアドレスの折り返し幅CA Wrapは4である。このコラムアドレスの折り返し幅は,コラムアドレスのステップとも称される。
このようなコラムアドレスで選択されるメモリ単位領域を所定の折り返し幅で折り返してマッピングすることで,画像メモリで頻繁に行われる矩形アクセスのアクセス効率を高めることができる。つまり,アクティブコマンドによりページ領域をアクティブ動作させた状態で,アクセス対象の矩形領域に対応してリードコマンドとコラムアドレスを繰り返し発行することで,同じページ領域内の矩形領域へのアクセスを行うことができる。1回のアクティブ動作で同じページ領域内の矩形領域にアクセスできるので,効率的なアクセスが可能になる。
図16で示されるとおり,このような矩形アクセスでは,リードコマンドRDとバンクアドレスBAとコラムアドレスCAとスタートバイト信号SBとを繰り返し発行することが必要である。しかしながら,メモリのマッピング情報,特にページ領域のコラムアドレスCAの折り返し幅(CA Wrap)があらかじめわかっていれば,矩形領域の先頭コラムアドレスCAと,矩形幅と,矩形サイズとを与えれば,画像メモリは内部で自動的にアクセスすべきコラムアドレスを発行して矩形領域の画像データにアクセスすることができる。その場合は,リードコマンドとコラムアドレスを1回発行すればよく,図16のように複数回発行する必要はない。
図42は,バイトバウンダリ機能を利用した自動矩形アクセスを説明する図である。この例では,メモリマッピング421にアクセスされるデータ領域を矢印で示している。このメモリマッピングでは,ページ領域内でコラムアドレスCAが8で折り返されている。つまり,コラムアドレス折り返し幅CAWrapが8である。よって,ページ領域14の右端のコラムアドレスCAは#07,#0F,#17,#1F(16進数)と折り返し幅CAWrap=8になっている。そして,アクセスすべき矩形領域の先頭アドレスがCA=#0Bで,スタートバイト信号SB=2で,矩形領域の幅Rwidth=2クロック(4バイト×2クロック=8バイト),矩形領域のサイズがバースト長BL=8(4×8=32バイト)である。したがって,矩形領域の高さは,BL/Rwidth=4である。
図43は,自動矩形アクセスでのタイミングチャート図である。図44は,自動矩形アクセスに必要な内部コラムアドレス演算器の構成図である。図42のような矩形アクセスをするためには,供給コラムアドレスCA=#0BとSB=2に応じて,メモリ内部でコラムアドレスCA=#0B/#0C, #0C/#0D, #13/#14, #14/#15, #1B/#1C, #1C/#1D, #23/#24, #24/#25が発行されればよい。つまり,最初のアクセスではByte2,3はCA=#0B,Byte0,1はCA=#0Cにアクセスする。2度目のアクセスではコラムアドレスCAは1だけ進行してByte2、3=#0C,Byte0,1はCA=#0Dにアクセスする。そして,この例では矩形幅RWidth=2 のため,次の3度目のアクセスはコラムアドレスCAを1だけ進行した位置とはならず,折り返されたコラムアドレスCA=#13,#14になる。したがって,コラムアドレス折り返し幅CAWrapと矩形幅Rwidthから3番目のコラムアドレスを演算により求める必要がある。この3度目のアドレスをByte2,3で考えると,現在のコラムアドレスCA=#0C(=12(10進数)),CA Wrap=8,RWidth=2にもとづき,図43中の式(CA+CAWrap−Rwidth+1)により,3度目のアクセスのCAは,CA=12+8−2+1=19(10進数)=#13(16進数)と求められる。
図44にはコラム制御部90内のコラムアドレス演算器が示されている。この演算器は,外部から供給されるコラムアドレスCA,折り返したときのコラムアドレスCA(Wrap)をクロックのタイミングに同期した内部クロックpclenzに同期して+1インクリメントするコラムアドレスカウンタ440と,コラムアドレスカウンタのカウント値にCA Rwapを加算し,Rwidthを減算する演算器441と,矩形領域の折り返し時に演算器441の出力を選択するスイッチ442と,同期クロックpclenzをカウントし,アクセス中の水平方向のカウント値をカウントする矩形幅カウンタ444と,矩形幅カウンタ444の水平方向のカウント値widthzが矩形幅Rwidthと一致することを検出して,スイッチ442に切り替え信号wrapzを生成する比較器445とを有する。
図43のタイミングチャートに従って説明する。まず,矩形領域サイズがバースト長BL=8としてモードレジスタに設定され,また,ページ領域内のコラムアドレスの折り返し幅CAWrap=8もモードレジスタに設定されているものとする。そして,アクティブコマンドに続くリードコマンドと共に,先頭コラムアドレスCA=#0Bと,スタートバイト信号SB=2と,アクセス対象の矩形幅Rwidth=2とが供給される。これに応答して,タイミングクロックpclenzがクロックに同期して発生し,矩形幅カウンタ444がアクセス中の水平方向のカウント値widthzをカウントアップし,コラムアドレスカウンタ440が先頭コラムアドレスCA=#0Bからカウントアップする。
最初のアクセス用に発行される内部コラムアドレスcaz[7:0]は,図43に示されるとおり,CA=#0B/#0Cである。2番目のアクセスでは,コラムアドレスカウンタ440が+1インクリメントしたコラムアドレスcaz[7:0]=#0Cに対応して, #0C/#0Dが出力される。3番目のアクセスでは,矩形幅の折り返しが必要になり,演算器441の演算値がスイッチ442により選択され,コラムアドレスcaz[7:0]=#03が出力され,それに対応して折り返し後のコラムアドレスCA= #13/#14が生成される。4番目は #14/#15が生成され,5番目で矩形領域の折り返しが行われ, #1B/#1Cが生成される。その後は, #1C/#1D, #23/#24, #24/#25が同様にして生成される。
この自動矩形アクセスに対応する画像メモリの構成は,例えば,図29に示したとおりであり,4つのバイト領域Byte0-3にバイトバウンダリ機能に対応した4つのコラムアドレスの組み合わせが供給される。つまり,図43の内部コラムアドレスcazのコラムアドレスの組み合わせが,各バイト領域内のコラムデコーダに供給される。その結果,これらのコラムアドレスのデータが4つのバイト領域からそれぞれ出力される。
上記の例では,矩形アクセスの矩形幅Rwidthをリードコマンドと共に供給したが,あらかじめモードレジスタセットコマンドでモードレジスタに設定してもよい。あるいは,矩形サイズBLと矩形幅Rwidthをリードコマンドと共に供給してもよい。コラムアドレスの折り返し幅CAWrapは,画像システムがあらかじめ設定しているので,モードレジスタセットコマンドで設定するのが望ましい。
このように,矩形アクセスにおいて,起点となるコラムアドレスCAと,矩形幅Rwidthと,矩形サイズ(BL)とが与えられれば,あらかじめ設定されているコラムアドレスの折り返し幅CAWrapに基づいて,アクセスすべき内部コラムアドレスを自動的に生成することができる。よって,1回のリードコマンドの発行で,矩形アクセスを行うことができる。
[ページ領域境界のバイトバウンダリ機能]
バイトバウンダリ機能は,コラムアドレスで選択されるメモリ単位領域(4バイト領域)の境界を越えて所定バイト(4バイト)のデータを効率的にアクセスすることができる。ところが,ページ領域境界を越えて矩形アクセスをする場合は,再度別のアクティブコマンドで隣接するページ領域をアクティブ動作させることが必要になる。
図45は,バイトバウンダリ機能によるアクセスがページ領域の末尾に及んだ場合のメモリ動作の例を示す図である。この図では,ページ領域がコラムアドレスCA[7:0]=#00〜#FFで構成され,右端がCA=#FFの例である。この場合,図中矢印で示した4バイトのデータをバイトバウンダリ機能を利用してアクセスすると,アップモードにおいて,SB=0では,4バイトデータを出力することができるが,SB=1,2,3では,ページ領域の右端で折り返して左端のバイトデータをアクセスする。つまり,新たなアクティブ動作を行わずに同じページ領域内で折り返しアクセスが行われる例である。ダウンモードの場合は逆に,SB=0,1,2では左端から右端に折り返す(Wrap)する必要があるが,SB=3のみ折り返しは不要である。
上記のようなアクセスが行われると,無駄なデータが出力されるだけである。ページ領域の末尾から隣のページ領域へのアクセスを行うためには,新たなアクティブコマンドを発行して隣接ページ領域をアクティブ動作させる必要がある。
図46は,バイトバウンダリ機能によるアクセスがページ領域の末尾に及んだ場合のメモリ動作の別の例を示す図である。この例は,バースト長BLが8に設定されている例である。BL=8が設定されると,各バンク内のバーストカウンタはBL=8のカウント幅で内部コラムアドレスのカウントを繰り返す。つまり,図46の例では,バーストカウンタにより生成される内部コラムアドレスは,CA=#k8〜#kF(16ビット表記)の幅8である。このようなカウンタによりアクセス領域がバースト長BLを基準にする矩形領域に区分されるメモリの場合にも,図45と同様にバースト長領域CA=#k8〜#kFの右端でバイトバウンダリ機能を利用しようとすると,図45と同様の課題が生じる。図46の例では,アップモードでSB=1,2,3で折り返しが発生し,ダウンモードでSB=0,1,2で折り返しが発生している。これでは,無駄なデータが出力されてしまう。
図47は,バイトバウンダリ機能によるアクセスがページ領域の末尾に及んだ場合のメモリ動作の別の例を示す図である。この例では,図7で説明した矩形アクセスにおけるマルチバンクアクセス機能を利用してバイトバウンダリ動作を実現する例である。つまり,アクティブコマンドACTでロウアドレスRA=#nが指定され,リードコマンドRDで起点のコラムアドレスCAがページ領域の右端のCA=#FFの場合は,矢印のようにページ領域の境界PBを超えてアクセスが行われる。
つまり,アップモードでは,SB=1,2,3の場合,RA=#nのページ領域内のCA=#FFのバイトデータと,RA=#n+1のページ領域内のCA=#00のバイトデータとがアクセスされる。ダウンモードでは,SB=0,1,2の場合,RA=#nのページ領域内のCA=#FFのバイトデータと,RA#n+1のページ領域内のCA=#00のバイトデータとがアクセスされる。この場合,隣接するページ領域へのアクセスが必要であるので,アクティブコマンドACTと共に与えられるロウアドレスRA=#nのページ領域がアクティブ化され,リードコマンドRDと共に供給されるコラムアドレスCA=#FFとスタートバイト信号SB=2に応答して,隣接するロウアドレスRA=#n+1のページ領域がアクティブ化される。つまり,1つのアクティブコマンドACTに応答して,複数のバンク内のワード線がアクティブ化されることを意味する。
このように複数バンクが並行してアクティブ化されるように制御されれば,ページ領域の末尾でバイトバウンダリ機能が要求されても,必要な領域のデータを無駄なく入出力することができる。
[バイトバウンダリ機能のその他の用途]
バイトバウンダリ機能は,メモリに画像データを記憶し任意の画素に対応したデータにアクセスする場合に,効率的なデータの入出力を可能にする。バイトバウンダリ機能は,このような画像メモリ以外の用途においても,同様のメリットを有する。
図48〜図50は,バイトバウンダリ機能のその他の用途を説明する図である。図48,49は従来例に,図50は本実施の形態に対応する。メモリの構成として同一のコラムアドレスCAに複数のバイト領域を割り付け、一度のアクセスで同一のコラムアドレスCAに割り付けられた複数バイトのデータをアクセスすることが行われている。このような構造では,メモリへのアクセスは,同一のコラムアドレスCAに割り付けられている固定のバイトサイズ(ワード構成)のデータに対する処理については,効率良く行うことができる。
しかし、システムで処理すべきデータのサイズはメモリのワード構成未満となる場合もある。このような場合の対処方法として,ワード構成サイズ以下のデータが複数のコラムアドレスCAの領域にまたがらないようにパディングをするという方法がある。図48の例では、メモリのワード構成を4バイト(図中483参照),処理するデータサイズの単位を1バイト(図中280のフォーマットA),2バイト(同フォーマットB),4バイト(同フォーマットC)としている。そのため,4バイトサイズのデータはByte0を基点に記憶することでコラムアドレスCAをまたがないようにすることができる。2バイトサイズのデータではByte0,Byte2を基点とする位置に記憶する。1バイトサイズのデータはByte0,Byte1,Byte2,Byte3のいずれの位置を基点とすることも可能とする。
いま仮に,図中482のライトデータのように,2Byte,4Byte,1Byte,2Byte,2Byte,1Byteのサイズのデータ0〜5を連続してメモリに記憶する場合を考える。この場合,図中481のようにライト動作を行えば,図中483に示されるようにメモリ内の幾つかのバイト領域でパディングが行われ,合計で4バイトの領域は有効なデータの記憶に利用されない。これでは,メモリの容量が有効に利用されていないことになる。ただし,コラムアドレスCAにより4バイト単位で出力すれば,各データを1回のコラムアドレスアクセスで読み出せるので,読み出し速度は速くなる。
しかし、上記の記憶容量の無駄をなくすためには,パディングを行わずにメモリの各バイト領域に連続してデータを記憶すればよい。例えば,図49の図中491のように3サイクルのライトコマンドWRで書き込みを行って,図中493に示される通りにメモリ内のバイト領域にデータを記憶することができる。
図49のようにデータ書き込みを行えば,メモリの記憶容量を有効に活用することができる。しかし,データ3の2バイトのデータB03,B13のように,あるいは,データ1の4バイトのデータC01−C31のように,異なるコラムアドレスの領域にまたがってデータが記憶された場合は,従来のメモリでは1回のコラムアクセスで読み書きを実行することはできず,2回のアクセスが必要となる。図中491に示されるとおり,データ4の読み出しに2回リードコマンドRDを発行しなければならず,アクセス効率が低下する。
そこで,図50の図中500に示されるように,バイトバウンダリ機能を利用して,1回のリードコマンドRDの発行とスタートバイト信号SB=3の指定を行うことで,異なるコラムアドレスの領域にまたがるデータ3(03,B13)をアクセスすることができる。したがって、バイトバウンダリ機能を有するメモリは,アクセス性能の低下を発生させずにメモリ利用率の向上を実現することが可能である。
[バイトバウンダリ機能に対応したメモリコントローラ]
次に,バイトバウンダリ機能に対応したメモリコントローラについて説明する。図8で画像処理システムを説明したが,この画像処理システム内の画像処理チップ80内に,画像処理制御部81とメモリ制御部(メモリコントローラ)82とが含まれる。
図51は,画像処理システムの構成図である。図8と同様に,画像処理制御部81と,メモリ制御部82と,画像メモリ86とで構成される。画像処理制御部81は,一例としてMPEG復号処理を行う構成である。画像処理部81は,符号化,圧縮されたストリームデータSTMが入力されるエントロピー復号化処理部510と,DCT係数DCT−Fに基づいてデータ処理を行う逆量子化及びIDCT処理部511と,イントラ予測部512と,動きベクトルMVとマイクロブロック分割情報MBdivに基づいてメモリ制御部82に参照画像読み出しを行うインター予測部513と,処理選択部515とを有する。メモリ制御部82は,画像処理制御部81と画像メモリ86との間でコマンドやアドレスの発行などを含むメモリ制御を行う。処理選択部515から出力される復号画像データD−IMGがメモリ制御部82により画像メモリ86に格納される。また,インター予測部513の参照画像読み出し制御部514は,メモリ制御部82を介して画像メモリ86から参照画像R−IMGのデータを取得し,処理選択部515に与える。
MPEGデコーダでは,動きベクトルに基づいてメモリから読み出される過去の画像または未来の画像内の参照画像R−IMGと,その参照画像との差分データとに基づいて,現在の画像データを復号化する。したがって,一旦画像メモリ86に格納した画像から動きベクトルの位置にある矩形の参照画像を読み出す動作が頻繁に行われる。この矩形アクセス制御において,バイトバウンダリ機能を有する画像メモリ86及びそれに対応したメモリ制御部82を利用することで,アクセス効率を高めることができる。
図52は,メモリ制御部(メモリコントローラ)の入力及び出力信号を示す図である。図53は,フレーム画像内の読み出し対象の参照画像領域を説明する図である。フレーム画像FM−IMGにおいて,左上が画素座標の原点(0,0)であり,矩形の参照画像RIMGの領域を特定するためには,矩形の左上の座標(POSX,POSY)と,縦横のサイズSIZEY,SIZEXとが必要である。したがって,画像処理部内の参照画像読み出し制御部514は,参照画像RIMGの領域を特定する上記の情報(POSX,POSY),SIZEY,SIZEXを,メモリコントローラ82に供給する。また,参照画像読み出し制御部514とメモリコントローラ82との間では,ダイレクトメモリアクセス制御信号DMA−CONが入出力される。
一方,メモリコントローラ82は,上記の参照画像領域を特定する情報(POSX,POSY),SIZEY,SIZEXに基づいて,メモリ空間内のアドレスAdd(バンクアドレス,ロウアドレス,コラムアドレス)を算出し,コマンドCMD,アドレスAdd,マルチバンクアクセス情報SA’,スタートバイト信号SB,書き込みデータDataなどをメモリ86に供給する。また,メモリ86から読み出された読み出しデータDataを受信する。
図54は,メモリ制御部の詳細な構成図である。メモリ制御部82は,前述した画像処理制御部のようにメモリへのアクセスを要求するアクセス要求元ブロック81−1〜81−Nから,アクセス対象の画像領域の情報POSX,POSY,SIZEX,SIZEY,書き込みデータDataを受信するインターフェース制御部541−1〜Nと,これらのインターフェース部を経由して上記の画像領域情報を受け取り,アドレスとコマンドを生成するアドレスコマンド生成部542−1〜Nを有する。これらのインターフェース制御部とアドレスコマンド生成部とは,調停回路540によりいずれが活性化されるべきか調停される。調停回路540により選択され活性化されているアドレスコマンド生成部542が,セレクタSELを経由して,コマンドCMD,アドレスAdd(バンクアドレス,ロウアドレス,コラムアドレス),マルチバンクアクセス情報SA’,スタートバイト信号SBなどをメモリ86に発行する。それにより,メモリ制御部82は,調停により選択されたアクセス要求元ブロックのために,メモリ86へのアクセス制御を行い,データ書き込みまたはデータ読み出しを行う。また,メモリ制御部82は,必要な頻度でメモリに対してリフレッシュ要求なども行う。
メモリ制御部82が発行するコマンドCMDには,例えば,モードレジスタセットコマンド,アクティブコマンド,リードコマンド,ライトコマンド,プリチャージコマンド,リフレッシュコマンドなど,通常のSDRAMに必要なコマンドが含まれる。また,メモリ制御部82内の設定レジスタ543には,フレーム画像FM−IMGの左上画素のアドレスや,メモリマッピング情報や,メモリ86が有する機能についての情報が設定される。メモリが有する機能とは,例えば,後述するとおり,マルチバンクアクセス機能や,エンディアンに対応するデータ配列の切り替え機能などであり,コントロール対象のメモリが有する機能の有無がこの設定レジスタ543に設定される。
図55は,参照画像読み出し制御部514でのインター予測部513の演算を説明する図である。MPEGの場合,マクロブロックMBを処理単位にしている。マクロブロックMBは16×16画素の輝度データと,8×8画素の色差(Cb,Cr)データ(Y:U:V=4:2:0の場合)で構成される。そして,このマクロブロックMBを4等分した8×8画素の輝度データを含む1/4マクロブロックQMBが,動きベクトルMV,参照画像RIMGの処理単位である。仮に,現在処理中のマクロブロックMBの左上座標が(MBaddrx,MBaddry),そのマクロブロック分割情報がMbdivx,Mbdivy,動きベクトルMV=(MVx,MVy)とすると,演算処理部515では,図示される演算式の演算により,参照画像RIMGの左上座標(POSX,POSY)と横幅SIZEXと高さSIZEYとが算出される。この横幅SIZEXは,メモリの1回のアクセスで入出力されるバイト数の倍数に設定され,高さSIZEYは垂直方向の画素数に設定される。
上記のようにして算出された参照画像特定情報(POSX,POSY),SIZEY,SIZEXが,参照画像読み出し制御部514からメモリコントローラ82に出力され,メモリコントローラ82内のコマンドアドレス生成部542が,上記参照画像特定情報と,設定レジスタ543内のメモリマッピング情報とフレーム領域の左上のアドレスなどに基づいて,矩形アクセスに必要なメモリ空間のアドレスを生成する。
図56は,参照画像読み出し制御部514でのインター予測部513の演算例を示す図である。図55の具体例である。まず,マクロブロックMBの左上座標が(MBaddrx,MBaddry)=(0,0),マクロブロック分割情報がMbdivx,Mbdivy=8,動きベクトルMV=(MVx,Mvy)=(13,4)であるので,参照画像RIMGの左上座標(POSX,POSY),横幅SIZEXと高さSIZEYは,次の通り演算で求められる。
POSX=0+8+13=21
POSY=0+8+4=12
SIZEX=8,SIZEY=8
上記の参照画像RIMGの矩形領域は,コラムアドレスで選択される4バイト領域の単位と整合しない。4バイト領域の単位と整合させるためには,図56中の拡大領域E−RIMGのように,左上座標(20,12),横幅12,高さ8の領域にアクセスすることが必要になる。しかし,バイトバウンダリ機能を利用することで,4バイト単位の境界を越えてバイト単位でアクセスが可能になる。このように,MPEGなどの参照画像データのアクセスにおいて,バイトバウンダリ機能はアクセス効率の向上に寄与する。
図57は,メモリマッピング例を示す図である。図1に示したメモリマッピング12と同様に,画像の画素とメモリ空間内のページ領域14とがメモリマッピング12のように対応付けられていて,隣接するページ領域は異なるバンクアドレスBAになるよう配置されている。ページ領域14は,バンクアドレスBAとロウアドレスRAで選択される領域であり,各ページ領域14は,コラムアドレスで選択される複数のメモリ単位領域(4バイト領域)で構成される。図57の例では,ページ領域14は,64画素×16画素の画像データを格納する単位である。
図58は,メモリマッピング12におけるページ領域14の構成を示す図である。バンクBANK0内のロウアドレスRA0で特定されるページ領域14は,コラムアドレスCA0〜CA255のメモリ単位領域を有し,各コラムアドレスにより4バイトが選択され,コラムアドレスCAの折り返し幅(ステップ幅)が16である。よって,ページ領域14は,横幅が64(=4×16)バイト,高さが16(=256/16)バイトの構成になっている。
図59は,図56の参照画像領域のメモリマップ上での配置を示す図である。図59に示されるとおり,参照画像領域RIMGは,左上座標(21,12),横幅8,高さ8であるので,コラムアドレスCA5を先頭番地とし,バイトBY1から横幅8バイト,高さ8バイトのメモリ領域に対応する。つまり,矩形アクセス領域の左端591は,コラムアドレスCAによる境界590から1バイト(図中592)だけシフトしている。よって,前述のバイトバウンダリ機能を有するメモリに対しては,アクティブコマンドACTと共にバンクアドレスBA0,ロウアドレスRA0を発行し,リードコマンドRD(又はライトコマンドWR)と共に先頭コラムアドレスCA5,CA6〜CA117,CA118とスタートバイト信号SB=1を連続して発行すれば良い。または,図42〜44で示した自動内部コラムアドレス生成機能を有するメモリに対しては,コラムアドレス折り返し幅CAWrap=16を設定しておき,リードコマンドRD(又はライトコマンドWR)と共に先頭コラムアドレスCA5と,スタートバイト信号SB=1と,矩形幅Rwidth=2と,バースト長BL=16とを発行すれば良い。
図60は,参照画像領域のメモリマップ上での別の配置例を示す図である。この図では,参照画像領域RIMGが,隣接するページ領域14−0,14−1にまたがっている。つまり,ページ領域の境界600を超えている。この場合は,図7で説明したマルチバンクアクセス機能を有するメモリであれば,マルチバンクアクセス情報SA’を発行することで,1回のアクティブコマンドによりアクセスすることができる。メモリがマルチバンクアクセス機能を有していない場合は,バンクBANK0,1に対する複数回のアクティブコマンドを発行してアクセスしなければならない。よって,メモリコントローラは,コントロール対象の画像メモリがマルチバンクアクセス機能を有するか否かをレジスタに設定しておき,その設定情報に応じて,画像メモリへのアクセス制御を変更する必要がある。
図61は,バイトバウンダリ機能を有しないメモリに対するメモリコントローラでのタイミングチャート図である。図59の参照画像RIMGのアクセス例である。従来のSDRAMにはバイトバウンダリ機能は設けられていない。その場合は,メモリコントローラは,図61に示すような制御を行わなければならない。
図61中,参照画像読み出し制御部とメモリコントローラとの間の信号610と,メモリコントローラと画像メモリとの間の信号611とが示されている。前述したとおり,参照画像読み出し制御部514は,メモリコントローラにアクセス要求REQと共に参照画像領域の左上座標POSX,POSYと横幅SIZEX,高さSIZEYの情報を送信し,メモリコントローラはそれに応答してアクノリッジ信号ACKを返信する。メモリマッピング情報とフレーム画像の左上原点のアドレスとはあらかじめ設定レジスタに設定されているものとする。
このアクセス要求REQに応答して,メモリコントローラは,画像メモリに対して,アクティブコマンドACTとバンクアドレスBA=0,ロウアドレスRA=0を発行して,メモリにアクティブ動作を行わせる。その後,メモリコントローラは,クロックCLKに同期して,リードコマンドRDとバンクアドレスBA=0,コラムアドレスCA=5,6,7〜117,118,119(24回)を発行して,4バイトデータを24回受信する。その後,メモリコントローラは,ストローブ信号STBをHレベルにしてその受信したデータを読み出し制御部に送信する。
図62は,バイトバウンダリ機能を有するメモリに対するメモリコントローラでのタイミングチャート図である。この図は,図59の参照画像RIMGのアクセス例であり,メモリがバイトバウンダリ機能を有する場合の制御である。図中,参照画像読み出し制御部とメモリコントローラとの間の信号620と,メモリコントローラと画像メモリとの間の信号621とが示されている。
この場合は,参照画像読み出し制御部からメモリコントローラに図61と同じ信号が送信される。メモリコントローラは,画像メモリに対して,アクティブコマンドACTとバンクアドレスBA=0,ロウアドレスRA=0を発行して,メモリにアクティブ動作を行わせ,その後,メモリコントローラは,リードコマンドRDと,バンクアドレスBA=0と,コラムアドレスCA=5,6〜117,118(16回)と,スタートバイト信号SB=01とを発行して,4バイトデータを16回受信する。さらに,メモリコントローラは,ストローブ信号STBをHレベルにしてその受信した64バイトのデータを読み出し制御部に送信する。メモリがバイトバウンダリ機能を有するので,リードコマンドの発行は16回でよく,アクセス効率が高くなる。
また,図示していないが,図42〜44で示した自動内部コラムアドレス生成機能を有するメモリに対しては,コラムアドレス折り返し幅CAWrap=16を設定しておき,リードコマンドRDと共に先頭コラムアドレスCA5と,スタートバイト信号SB=01と,矩形幅Rwidth=2と,バースト長BL=16とを発行すれば良い。それに応答して,画像メモリは内部でコラムアドレスを自動生成し矩形領域の4バイトデータを16サイクルで出力し,メモリコントローラは,4バイトデータを16回連続して受信する。
図63は,バイトバウンダリ機能とマルチバンクアクセス機能を有しないメモリに対するメモリコントローラでのタイミングチャート図である。この例は,図60の参照画像RIMGをアクセスする例であり,マルチバンクアクセス機能を有しない画像メモリに対する制御例である。図中,参照画像読み出し制御部とメモリコントローラとの間の信号630と,メモリコントローラと画像メモリとの間の信号631とが示されている。
マルチバンクアクセス機能を有しないメモリは,図45に示したとおり,バンク境界をまたぐ領域へのアクセスは不可能である。したがって,この場合は,メモリコントローラは,アクティブコマンドACTとBA=0,RA=0を発行してページ領域14−0をアクティブ動作させ,リードコマンドRDと共にバンクアドレスBA=0,コラムアドレスCA=15〜127を発行して,8バイトのデータを受信する。さらに,メモリコントローラは,アクティブコマンドACTとBA=1,RA=0を発行してページ領域14−1をアクティブ動作させ,リードコマンドRDと共にバンクアドレスBA=1,コラムアドレスCA=0,1〜112,113を発行して,16バイトのデータを受信する。そして,メモリコントローラは,受信した24バイトのデータを参照画像読み出し制御部に送信する。
図64は,マルチバンクアクセス機能とバイトバウンダリ機能を有するメモリに対するメモリコントローラにおけるタイミングチャート図である。これも図60の参照画像RIMGをアクセスする例である。図中,参照画像読み出し制御部とメモリコントローラとの間の信号640と,メモリコントローラと画像メモリとの間の信号641とが示されている。
メモリコントローラは,アクティブコマンドACTと共にバンクアドレスBA=0,ロウアドレスRA=0,そしてマルチバンクアクセス情報SA’=10(横方向に隣接する2バンクのアクセスを示す)を発行する。これに応答して,画像メモリは,バンクBA=0のバンクをアクティブ動作させる。そして,メモリコントローラは,リードコマンドRDと共に,スタートバイト信号SB=01とバンクアドレスBA,コラムアドレスCAを順次発行する。このコラムアドレスCA=15に応答して,画像メモリは,BA=1のバンクもアクティブ動作させる。メモリコントローラは,16回のリードコマンドRDに対応して,16バイトのデータを受信する。さらに,メモリコントローラは,受信した16バイトのデータを参照画像読み出し制御部に送信する。
このように,メモリコントローラは,マルチバンクアクセス機能を有するメモリに対しては,異なるバンク領域にまたがるデータであっても,1回のアクティブコマンドを発行すればよい。
図65は,メモリコントローラの制御動作のフローチャート図である。まず,上位のCPUによりメモリコントローラ内の設定レジスタにマルチバンクアクティブ機能のON/OFFが設定される(S1)。参照画像読み出し制御部が,動きベクトル情報,マクロブロック分割情報,対象マクロブロック情報により,参照画像ブロックの座標(POSX,POSY)とサイズ(SIZEX,SIZEY)を算出し(S2),矩形アクセスのリクエストをそれらの矩形パラメータと共にメモリコントローラに発行する(S3)。
メモリコントローラは,この矩形パラメータ(POSX,POSY)(SIZEX,SIZEY)と,設定レジスタに設定されているメモリマップ情報及びフレーム画像のアドレス情報とから,矩形アクセスで発行すべきBA,RA,CA,SB,SA’を算出する(S4)。マルチバンクアクティブ機能がONの場合は(S5のYES),メモリコントローラは,アクティブコマンドACTと共にBA,RA,SA’を発行し,更に,リードコマンドRDと共にBA,CA,SBを順次発行しながら,リードデータを受信する(S6,S7,S8)。ライト動作の場合は,リードコマンドの代わりにライトコマンドWRと共にBA,CA,SBを順次発行しながら,ライトデータを出力する。
また,マルチバンクアクティブ機能がOFFの場合は(S5のNO),メモリコントローラは,リクエストのあった矩形がページ領域,つまりバンクをまたぐか否かをチェックし(S9),またがない場合(S9のNO)は,アクティブコマンドACTと共にBA,RAを発行し,更に,リードコマンドRDと共にBA,CA,SBを順次発行しながら,リードデータを受信する(10,11,12)。ライト動作の場合は,リードコマンドの代わりにライトコマンドWRと共にBA,CA,SBを順次発行しながら,ライトデータを出力する。
さらに,バンクをまたぐ場合(S9のYES),バイトバウンダリ機能を利用できないので,メモリコントローラは,図56に示した拡大矩形領域E−RIMGの座標POSXと幅SIZEXを算出し,それに対応する左上座標のアドレスBA,RA,CAを算出する(S13)。そして,拡大矩形領域に対して,アクティブコマンドACTと共にBA,RAを発行を発行し,リードコマンドRDと共にBA,CAを順次発行しながらリードデータを受信する(S15,16,17)。そして,左上座標のバンク内のリードが完了すると(S17のYES,S14のYES),一旦プリチャージコマンドを発生したのち,次のバンクに対してアクティブコマンドを発生し,更にリードコマンドRDと共にBA,CAを順次発行しながらリードデータを受信する(S19,S16,17)。そのバンク内のデータを全て受信し(S17のYES),全てのデータ読み出しが完了したら(S18),メモリ制御を終了する。
なお,メモリコントローラの設定レジスタに,バイトバウンダリ機能をOFFにする設定がある場合は,図65の構成S13〜S18により図61のようにメモリコントローラがアクティブコマンドとリードコマンドと必要なアドレスとを発行する。
このように,メモリコントローラは,内蔵の設定レジスタにバイトバウンダリ機能のON,OFFやマルチバンクアクティブ機能のON,OFFとを設定可能であり,制御対象の画像メモリの機能に応じて,必要なコマンドとアドレス,マルチバンク情報,スタートバイト情報,アップモード,ダウンモード,オルターナティブなどのバイト組み合わせ情報などを適宜発行する。
図66は,メモリコントローラの制御動作のフローチャート図である。この例は,図35,36に示したエンディアンに対応して入出力データの入れ替え機能を制御対象の画像メモリが有するか否かをメモリコントローラに設定できるようになっている。まず,上位のCPUがメモリコントローラの設定レジスタに,画像メモリにおける出力データの並び替え機能の有無を設定する(S20)。そして,参照画像読み出し制御部が,動きベクトル情報,マクロブロック分割情報,対象マクロブロック情報により,参照画像ブロックの座標(POSX,POSY)とサイズ(SIZEX,SIZEY)を算出し(S21),矩形アクセスのリクエストをそれらの矩形パラメータと共にメモリコントローラに発行する(S22)。
次に,メモリコントローラは,この矩形パラメータ(POSX,POSY)(SIZEX,SIZEY)と,設定レジスタに設定されているメモリマップ情報及びフレーム画像のアドレス情報とから,矩形アクセスで発行すべきBA,RA,CA,SB,SA’を算出する(S23)。そして,出力データの並び替え機能がONに設定されている場合は(S24のYES),メモリコントローラは,アクティブコマンドと共にバンクアドレスBA,ロウアドレスRA,マルチバンク情報SA’を発行し,さらにリードコマンドと共にバンクアドレスBA,コラムアドレスCA,スタートバイト情報SBを発行する(S25)。その後は,全てのデータの読み出しが完了するまで,リードコマンド,BA,CA,SBを繰り返し発行する(S26,S27)。
一方,出力データの並び替え機能がOFFに設定されている場合は(S24のNO),メモリコントローラは,アクティブコマンドと共にバンクアドレスBA,ロウアドレスRA,マルチバンク情報SA’を発行し,さらにリードコマンドと共にバンクアドレスBA,コラムアドレスCA,スタートバイト情報SBを発行する(S25)。その後は,全てのデータの読み出しが完了するまで,リードコマンド,BA,CA,SBを繰り返し発行すると共に,受信したデータの並びが元の画像データの順番になるように並び替えを行う(S28,S29,S30)。
上記の図65と図66とは,設定レジスタの設定項目によって適宜組み合わせることができる。
なお,上記の実施の形態では,複数画素の画像データを二次元配置したデジタル画像データを記憶する画像メモリを例にして説明した。しかしながら,本発明は,画像データを記憶する画像メモリに限定されず,画像データ以外でも二次元配列されたデータを所定のマッピングルールに基づいて記憶するメモリ装置に適用可能である。記憶データが二次元配列されたデータであれば,その二次元配列データ内の任意の矩形領域をアクセスするときに複数のメモリ単位領域に跨ってデータにアクセスすることが求められることがある。その場合にも本発明は適用可能である。
《マルチバンクアクセス》
次に,矩形アクセスの課題の一つとして,複数のページ領域を含む矩形領域をアクセスする場合のアクセス効率の低下を防止するための,マルチバンクアクセスについて説明する。既に,図7において,矩形アクセス時のマルチバンクアクセス機能について説明した。
図67は,本実施の形態におけるマルチバンクアクセスについての概略説明図である。画像メモリに対する矩形領域へのアクセスは任意の場所に発生する。したがって,図67に示されるとおり,メモリマップ12において矩形アクセス領域22がページ領域の境界を越えることがある。図67の例では,矩形アクセス領域22が4つのページ領域(BA3,RA0のページ領域,BA2,RA1のページ領域,BA1,RA4のページ領域,BA0,RA5のページ領域)を含んでいる。
メモリマッピング12によれば,縦横に隣接するページ領域は異なるバンクに割り付けられている。したがって,図67の矩形領域22をアクセスするためには,メモリ装置86内の4つのバンクBank0−3を,Bank3,2,1,0の順番でアクセスしなければならない。SDRAMでは,バンクアドレスBAとロウアドレスRAを指定してアクティブコマンドが供給されると,そのバンク内のワード線(ページ領域)が活性化される。その後,バンクアドレスBAとコラムアドレスCAを指定するリードコマンドまたはライトコマンドに応答して,活性化されたページ領域内のメモリ単位領域がアクセスされる。そのため,矩形アクセス領域22をアクセスするためには,メモリコントローラが,メモリ装置に4つのバンクに対するアクティブコマンドを4回発行しなければならない。そのようなメモリ制御は,アクセス効率の低下を招く。
そこで,本実施の形態では,図67中のタイミングチャートに示されるとおり,メモリ装置は,拡張モードレジスタセットコマンドEMRS(図中670)に応答して,コマンドと共に供給されるロウアドレスのステップ情報RS=4(図中671)を内蔵するモードレジスタに設定する。このロウアドレスのステップ情報RSは,メモリマッピング12において,ロウアドレスRAが行方向において折り返される数であり,図67の例では,RA0−RA3,RA4−RA7で折り返されているので,RS=4である。通常の画像システムではメモリマッピング12は頻繁に変更されないので,ロウアドレスステップ情報RSは,画像システムが起動されたときなどにメモリ装置内のモードレジスタに設定するのが望ましい。
そして,矩形アクセスが発生すると,メモリ装置は,アクティブコマンドACT(図中672)と共にバンクアドレスBA=3,ロウアドレスRA=0,及びマルチバンク情報SA’=4(図中673)を供給される。すなわち,メモリコントローラは,画像処理ユニットからの矩形アクセス要求に対して,アクセス対象の矩形領域がメモリマップ上で4つのページ領域にまたがること,つまり4つのバンクへのアクセスが必要であることを検出したら,アクセス対象バンク数「4」をマルチバンク情報SA’として画像メモリ装置に供給する。
このアクティブコマンドACTとマルチバンク情報SA’とに応答して,メモリ装置は,BA3のバンクを先頭にして行方向に隣接するBA2のバンクと,列方向に隣接するBA1のバンクと,右下に隣接するBA0のバンクとを活性化する。その場合,画像メモリ内のロウ制御部は,アクティブコマンドACTと共に供給されるバンクアドレスBA=3とロウアドレスRA=0とマルチバンク情報SA’=4と,モードレジスタに記憶されているロウアドレスのステップ情報RS=4とに基づいて,複数のバンクへのバンク活性化信号を生成し,各バンク内のアクティブ動作対象のロウアドレスを生成する。図中のメモリマッピング12によれば,アクティブ動作対象の4つのロウアドレスは,供給ロウアドレスRAに対して,RA,RA+1,RA+RS,RA+RS+1である。この4つのロウアドレスが,供給バンクアドレスBAに応じて,対応する4つのバンクに供給される。そして,内部で生成されたバンク活性化信号とロウアドレスにより,メモリ装置内の複数のバンクがアクティブ動作を行う。
よって,図67の例では,一回のアクティブコマンドACTに応答して,BA3,RA0のページ領域,BA2,RA1のページ領域,BA1,RA4のページ領域,BA0,RA5のページ領域の合計4つのページ領域が活性化される。具体的な活性化動作では,ワード線WLが立ち上げられ,センスアンプが活性化され,メモリセル内のデータに対応するビット線の電位が増幅される。
そして,メモリ装置は,リードコマンドRD(図中674)をバンクアドレスBAとコラムアドレスCAと共に繰り返し供給され,それぞれのリードコマンドに応答して,バンクアドレスBAとコラムアドレスCAで指定されたメモリ単位領域のデータを読み出す。ライトコマンドの場合は,ライトコマンドと共に供給されるバンクアドレスBAとコラムアドレスCAとに対応するメモリ単位領域にデータを書き込む。図67の例では,4つのリードコマンドRDと共に,バンクアドレスBA=3,2,1,0が供給され,4つのバンクに対するコラムアクセスが連続して行われる。
このように,本実施の形態のマルチバンクアクセス機能によれば,メモリ装置は,1回のアクティブコマンド(第1の動作コマンド)に応答し,供給されるバンクアドレスBAとロウアドレスRAとマルチバンク情報SA’と,あらかじめ設定されているロウアドレスのステップ情報RSとに基づいて,アクセス対象の複数のバンクのページ領域をあらかじめアクティブ動作する。よって,その後のコラムアクセスで,リードコマンドまたはライトコマンドと共に,バンクアドレスBA及びコラムアドレスCAが適宜供給されて,矩形アクセスが行われる。
なお,図67の例では,メモリマッピング12においてロウアドレスステップ情報RS=4を根拠に,メモリ装置側が複数バンクのロウアドレスを演算で求めている。したがって,メモリマッピング12が異なれば,それに対応してロウアドレスの演算式も異なる。よって,拡張モードレジスタセットコマンドEMRSによりメモリマッピング情報も合わせて設定可能にすることもできる。または,メモリマッピング情報に応じてバンクアドレスビットの入れ替えを行い,メモリ装置内では所定のメモリマッピングに応じたロウアドレス演算を行うようにしても良い。
また,図67の例では,マルチバンク情報SA’=4であるが,横方向の2つのバンクを意味するSA’=2,縦方向の2バンクを意味するSA’=3,単位のバンクを意味するSA’=1が供給された場合は,それに対応するバンクが活性化される。上記の4つの種類を示すマルチバンク情報SA’は2ビットで構成される。
図68は,本実施の形態におけるマルチバンクアクセスを説明する図である。図68では,矩形領域22がアクセス対象領域であり,この矩形アクセス領域22は,4つのページ領域,つまり4つのバンク14−0,1,2,3を含み,BA3,RA2,CA127のメモリ単位領域を先頭にして,横方向は2クロック幅(8バイト)縦方向は8行の高さの矩形領域である。よって,矩形アクセス領域22を特定するためのマルチバンク情報SA’としては,図中のa)矩形領域のサイズ情報(=幅W,高さH),またはb)バンク数情報(=4)のいずれでも良い。
以下,図69,図70を参照して上記2種類のマルチバンク情報SA’に対応するメモリ装置の動作を説明する。
図69は,マルチバンク情報SA’がバンク数情報(=4)の場合のタイミングチャート図である。図67のタイミングチャートに加えて,図69には入出力端子DQの4バイトBY0−3に対する出力データのコラムアドレスCA(図中691),バンクBank0−3のアクセス状態(活性化状態)(図中690)が示されている。
まず,メモリ装置は,拡張モードレジスタセットコマンドEMRSにより,メモリマッピングのロウアドレスのステップ数データRS=4をモードレジスタにセットする。次に,アクティブコマンドACTと共に供給される先頭のページ領域を指定するバンクアドレスBA3及びロウアドレスRA2と,マルチバンク情報SA’=4(図中673)とに応答して,メモリ装置は,4つのバンクBank0−3内のロウアドレスRA7,6,3を生成し,供給ロウアドレスRA2と合わせて4つのロウアドレスに対応するページ領域をアクティブ動作する(図中690)。その結果,メモリ装置内では,4つのバンクがアクティブ状態になりメモリアクセス可能になっている。
その後,16回のリードコマンドRD(図中674)と共に,アドレスBA3/CA127,BA2/CA124,BA1/CA3,BA0/CA0...が供給され,メモリ装置は,それに応答して,所定のレイテンシ後に,対応するバンク内からそれぞれ4バイトデータを入出力端子DQに出力する。
マルチバンク情報SA’としてSA’=4が供給されれば,2×2のページ領域へのアクセスであることが判明するので,メモリ装置は,アクティブコマンドACTに応答して,4つのバンクのアクティブ動作を実行することができる。また,先頭バンクのロウアドレスRAが供給されれば,ロウアドレスステップ情報RSに基づいて残りのバンクのロウアドレスを演算により求めることができる。
図70は,マルチバンク情報SA’が矩形領域のサイズ情報(W=8バイト,H=8行)の場合のタイミングチャート図である。このタイミングチャートにも入出力端子DQと4つのバンクBank0−3のアクセス状態が示されている。
拡張モードレジスタセットコマンドEMRSによりロウアドレスのステップ数データRS=4(図中671)とページ領域内のコラムアドレスのステップ数データCST=128(図中677)がモードレジスタに設定される。また,アクティブコマンドACTと共に,バンクアドレスBA3,ロウアドレスRA2が供給され(図中672),さらに,マルチバンク情報SA’(図中675)として,矩形アクセス領域のサイズ情報8×8(図中676)が供給される。メモリ装置は,このアクティブコマンドに応答して,供給アドレスBA3,RA2のページ領域をアクティブ動作する(図中700)。そして,メモリ装置は,モードレジスタに設定されているステップ数データCST=128と,最初のリードコマンドRDと共に供給されるコラムアドレスCA127と,矩形サイズ情報8×8とに基づいて,アクセスすべき残りのバンクBank0,1,2とそのロウアドレスRA7,6,3を求め,それらのバンクのページ領域をアクティブ動作する(図中701)。
その後,16回のリードコマンド(図中674)に応答して,メモリ装置は,対応するバンクからそれぞれ4バイトデータを入出力端子DQに出力する(図中702)。
このように,マルチバンク情報SA’として矩形サイズが供給される場合は,メモリ装置が,供給コラムアドレスとメモリマッピング(コラムアドレスステップ数CST)に基づき複数バンクにまたがるアクセスか否かを判定して,アクティブ動作対象のバンクの活性化信号と,各バンクのロウアドレスとを生成し,順次アクティブ動作する。よって,バンクBank0,1,2の活性化動作は,先頭のコラムアドレスCA=127が供給された後に行われる。
図71は,マルチバンクアクセス機能を有するメモリ装置の構成図である。図9のメモリ装置の構成図と同等である。メモリ装置86は,マルチバンクアクセス機能を実現するために,ロウ制御部87が,活性化すべきバンクに与えるパルス状のバンク活性化信号actpz0−3を生成するマルチバンク活性化制御部88と,各バンクの活性化すべきロウアドレスRAを生成するロウアドレス演算部97とを有する。また,メモリ装置は,マルチバンク情報SA’を供給するためのスペシャル端子SP0,SP1を有する。
コマンド制御部95は,コマンドを特定する信号RAS,CAS,WE,CSの組み合わせから供給されたコマンドをデコードする。拡張モードレジスタセットコマンドEMRSと共に,アドレス端子Addからメモリマッピングのロウアドレスのステップ数データRSが入力され,モードレジスタ96にセットされる。この場合,バンクアドレスBAによりセットされるデータの種別が指定され,そのバンクアドレスBAに対応するレジスタ領域にステップ数データRSがセットされる。
コマンド制御部95は,アクティブコマンドACTに応答して,ロウ側の動作開始を指令するアクティブパルスactpzを生成する。マルチバンク活性化制御部88は,このアクティブパルスactpzを,供給バンクアドレスBAとマルチバンク数データSA’とから求められる活性化対象のバンクに分配する。この分配されるパルス信号がバンク活性化信号actpz0−3である。このマルチバンク情報SA’は,アクティブコマンドACT発行時に,スペシャル端子SP0,SP1から入力される。また,ロウアドレスRAはアドレス端子Addから入力される。
さらに,ロウアドレス演算部97は,供給されるバンクアドレスBAとロウアドレスRAと,モードレジスタ96に設定されているステップ数データRSと,さらにメモリマッピングに基づいて,4つのロウアドレスRA,RA+1,RA+RS,RA+RS+1を生成する。そして,これらの4つのロウアドレスが,供給バンクアドレスBAのバンクを左上にする2×2のバンク群に供給される。
各バンクは,メモリアレイMAやデコーダDecを含むメモリコアと,そのメモリコアを制御するコア制御部(図示せず)とを有し,コア制御部は,上記バンク活性化信号actpz0−3に応答してバンク内のメモリコアを活性化制御する。その場合,上記バンクアドレスBAが各ロウデコーダに供給され,それに対応するワード線が駆動され,その後センスアンプ群が活性化される。これが,バンクでの活性化動作(アクティブ動作)である。
以下,マルチバンクアクセスに求められる機能として,メモリ装置内の活性化すべきバンク選択動作と,バンク活性化のタイミング制御と,ロウアドレス生成動作と,メモリマッピングのバンク割付設定動作とについて具体的に説明する。
[バンク選択]
図72,図73は,マルチバンク活性化制御部88の第1の例を示す図である。図72には,マルチバンク活性化制御部88の構成と,タイミングチャートとが示されている。第1の例では,マルチバンク情報SA’として2ビットのバンク数データが供給される。
タイミングチャートは前述の例と同じであり,拡張モードレジスタセットコマンドEMRSと共に,バンクアドレス端子BAにレジスタ設定データVが,アドレス端子ADDにステップ数データRSがそれぞれ入力されモードレジスタにセットされ,アクティブコマンドACTと共に,バンクアドレスBA,ロウアドレスRA,マルチバンク情報SA’がそれぞれ入力される。
メモリ装置は,クロックCLKに同期して,各入力バッファ94に入力されたマルチバンク情報SA’0,1とバンクアドレスBA0,1とを,ラッチ回路720にラッチする。マルチバンク活性化制御部88は,バンクアドレスBA0,1をデコードして4つのバンク選択信号bnkz<3:0>を生成するバンクデコーダ88Aと,このバンク選択信号に応じてアクティブパルスactpzを分配したバンク活性化信号actpz<3:0>を生成するバンクアクティブパルス出力回路88Bとを有する。
図73には,アクセスされる矩形領域に対応するバンクデコーダ88Aの論理状態が示されている。図73(A)は4種類の矩形領域を示し,4種類の矩形領域と対応するマルチバンク情報SA’(00,01,10,11)を示す。図73(B)は,バンクデコーダの論理処理を示す図表である。これらに示されるとおり,SA’=00の場合は,活性化バンク数は1でバンクデコーダ88AはバンクアドレスBA0,1をデコードする。これにより,バンクデコーダ88Aは,供給バンクアドレスBA0,1で選択される1つのバンクのバンク選択信号bnkz<3:0>のみをHレベルにする。それに伴って,選択バンクにのみバンク活性化信号actpz<3:0>が生成される。
SA’=01の場合は,活性化バンク数は水平方向に2個であるので,バンクデコーダ88AはバンクアドレスBA0を縮退(無視)し,バンクアドレスBA1のみで選択される2つのバンクのバンク選択信号bnkz<3:0>をHレベルにする。それに伴って,供給バンクアドレスで選択されるバンクと行方向に隣接するバンクとのバンク活性化信号actpz<3:0>が生成される。
SA’=10の場合は,活性化バンク数は垂直方向に2個であるので,バンクデコーダ88AはバンクアドレスBA1を縮退(無視)し,バンクアドレスBA0のみで選択される2つのバンクのバンク選択信号bnkz<3:0>をHレベルにする。それに伴って,供給バンクアドレスで選択されるバンクと列方向に隣接するバンクとのバンク活性化信号actpz<3:0>が生成される。
SA’=11の場合は,活性化バンク数は水平,垂直方向に4個であるので,バンクデコーダ88AはバンクアドレスBA0,BA1を縮退(無視)し,4つのバンクのバンク選択信号bnkz<3:0>を全てHレベルにする。それに伴って,供給バンクアドレスで選択されるバンクと行列方向に隣接する4つのバンクのバンク活性化信号actpz<3:0>が生成される。
上記のバンクデコーダでのバンクアドレスの縮退は,対応するバンクアドレスBAとその反転信号/BAとを共にHレベルにする制御である。これにより,バンクデコーダ88Aは,そのバンクアドレスを無視して,残りのバンクアドレスによりバンク選択を行う。
図74,図75は,マルチバンク活性化制御部88の第2の例を示す図である。図74には,マルチバンク活性化制御部88の構成と,タイミングチャートとが示されている。第2の例では,マルチバンク情報SA’として3ビットの同時活性化バンクデータSA’0−2が供給される。
また,図75(A)には,メモリマッピング12とバンクアドレスBA0,BA1との関係が示されている。つまり,供給バンクアドレスBA0,1に対して,右のバンクはバンクアドレスBA0を反転してデコードすることで選択でき,下のバンクはバンクアドレスBA1を反転してデコードすることで選択でき,右下のバンクは両バンクアドレスBA0,1を反転してデコードすることで選択できる。
図75(B)には,同時活性化バンクデータSA’0−2と,選択するバンクと,バンクデコーダでの論理処理とが示されている。つまり,SA’0=Hの場合は,供給バンクアドレスで選択されるバンクに加えて右側のバンクを選択するために,バンクデコーダはBA0を反転して入力する。SA’1=Hの場合は,供給バンクアドレスで選択されるバンクに加えて下側のバンクを選択するために,バンクデコーダはBA1を反転して入力する。そして,SA’2=Hの場合は,供給バンクアドレスで選択されるバンクに加えて右下のバンクを選択するために,バンクデコーダはBA0,BA1を反転して入力する。
図74に戻り,マルチバンク活性化制御部88は,4つのバンクデコーダ88A0−3と,それらの4つのデコード信号を論理和処理するOR回路88Cと,バンクアクティブパルス出力回路88Bとを有する。アクティブパルス出力回路88Bは,図72と同じである。また,4つのバンクデコーダ88A0−3は,下から順に,供給バンクアドレスBA0,1をデコードして左上バンクを選択するデコーダと,BA0を反転して右のバンクを選択するデコーダと,BA1を反転して下のバンクを選択するデコーダと,BA0,BA1を共に反転して右下のバンクを選択するデコーダとからなる。よって,上から3つのバンクデコーダは,同時活性化バンクデータSA’0−2に応じて活性化され,対応するバンク選択信号bnkz<3:0>を出力する。
上記の第2の例によれば,供給されるバンクアドレスにより左上の先頭バンクが選択され,3ビットの同時活性化バンクデータSA’0−2により,右,下,右下のバンクが適宜選択される。したがって,斜め方向に2つのバンクを同時に活性化したり,3つのバンクを同時に活性化したりすることができ,同時活性化対象のバンクの組み合わせをフレキシブルに変更することができる。よって,特殊な領域に対するアクセスにも対応可能である。
図76,図77は,マルチバンク活性化制御部88の第3の例を示す図である。図76には,マルチバンク活性化制御部88の構成と,タイミングチャートとが示されている。第3の例では,スペシャル入力端子SPからマルチバンク情報として矩形サイズ情報W,Hが入力される。そのため,マルチバンク活性化制御部88には,活性化バンク判定回路88Dが設けられ,活性化バンク判定回路88Dは,ページ領域内のコラムアドレスのステップ数データCSTと,矩形サイズ情報W,Hと,コラムアドレスCAとから,同時に活性化すべきバンクを判定する。
図76のタイミングチャートに示されるとおり,メモリ装置は,拡張モードレジスタセットコマンドEMRSと共にメモリマッピングにおけるロウアドレスのステップ数RSと,ページ領域内のコラムアドレスのステップ数データCSTとを入力し,モードレジスタにセットする。次に,メモリ装置は,アクティブコマンドACTと共に,バンクアドレスBA,ロウアドレスRA,矩形領域サイズデータW,Hを入力する。この時,メモリ装置のアドレスがノンマルチプルで入力される場合は,アクティブコマンドACTと共にコラムアドレスCAも入力する。一般的なSDRAMは,アドレスをマルチプルで入力するので,図70で示したとおり,リードコマンドやライトコマンドと共にコラムアドレスCAを入力する。
マルチバンク活性化制御部88内の活性化バンク判定回路88Dは,ステップ数データCSTと,矩形サイズ情報W,Hと,コラムアドレスCAとから,同時に活性化すべきバンクを判定する。その判定アルゴリズムが,図77に示されている。
図77(A)は,メモリマッピングのページ領域内の情報を示している。すなわち,一般化されたメモリマッピングによれば,コラムアドレスがMビット,CA[M−1:0],ステップ数CST=2Sとすると,ページ領域14内において,水平方向は下位のコラムアドレスCA[S−1:0]でマッピングされ,垂直方向は上位のコラムアドレスCA[M−1:S]でマッピングされている。つまり,入力されるコラムアドレスCAから,ページ領域14の水平方向の位置はそのコラムアドレスCAの下位のSビットで判定でき,垂直方向の位置は上位のM−Sビットで判定できる。よって,ページ領域内の水平方向の位置とコラムアドレスのステップ数2Sとの差が矩形領域の幅Wより小さければ,矩形領域が水平方向のバンクをまたぐことになり,垂直方向の位置とページ領域の高さ2M-Sとの差が矩形領域の高さHより小さければ,矩形領域が垂直方向のバンクをまたぐことになる。
図77(B)の活性化バンク判定アルゴリズムに示されるとおり,入力コラムアドレスCAに対して,(1)水平方向にバンク(ページ領域)をまたぐ条件は,
2S - CA[S-1:0] < W であり,(2)垂直方向にバンク(ページ領域)をまたぐ条件は,
2M-S - CA[M-1:S] < H である。
図77(C)の例について説明すると,ページ領域14Xは,7ビットのコラムアドレスCA[6:0]で選択される128個のメモリ単位領域を有し,行方向のステップ数CST=16である。このようなページ領域14Xに対して,入力コラムアドレスCA=77(10進数),矩形サイズW=8(8クロック,32バイト),H=8の場合は,下位アドレスCA[3:0]=13,上位アドレスCA[6:4]=4であるので,上記の条件式に基づけば,水平方向も垂直方向も共にまたぐことが判定される。
上記のような判定アルゴリズムにより,活性化バンク判定回路88Dは,同時に活性化すべきバンクの判定を行う。その結果活性化バンク判定回路88Dは,バンクデコーダ88Aにバンクアドレス縮退信号88Eを出力する。つまり,水平方向のバンクをまたぐ場合はバンクアドレスBA0を縮退させ,垂直方向のバンクをまたぐ場合はバンクアドレスBA1を縮退させる。この縮退信号88Eは,図72のマルチバンク情報SA’0,1と等価である。
つまり,第3の例は,第1,第2の例でメモリコントローラが行う活性化バンク判定機能を,メモリ装置内に設けた例である。上記の活性化バンク判定アルゴリズムが,メモリコントローラ内に設けられれば,図72のマルチバンク情報SA’0,1がメモリコントローラからメモリ装置に供給されることになる。
以上の通り,マルチバンク活性化機能を実現するために,ロウ制御部内のマルチバンク活性化制御部88は,入力データに基づいて,活性化すべきバンク選択信号bnkz<3:0>を生成し,それに基づいてバンク活性化信号actpz<3:0>を生成し,活性化すべきバンクの活性化動作を制御する。
[バンク活性化タイミング]
マルチバンク活性化制御部88は,活性化すべきバンクにバンク活性化信号actpz<3:0>を供給し,各バンクはこのバンク活性化信号に応答して,ページ領域の活性化動作を開始する。その場合,複数のバンクを活性化するタイミングを制御することが望ましい。たとえば,複数のバンクを同じタイミングで活性化動作させる制御と,または複数のバンクを順次タイミングをずらして活性化動作させる制御とが考えられる。前者の場合はその後のリードコマンドやライトコマンドのタイミングに制約がない。一方,後者の場合は,同時に複数のバンクで活性化動作が行われないので,消費電流が瞬間的に高くなることを回避できる。
図78は,バンク活性化タイミングの例1を示す図である。この例では,複数のバンクを同時に活性化動作する。マルチバンク活性化制御部88は,前述のとおり,活性化バンクを選択するバンクデコーダ88Aと,その活性化バンク選択信号bnk<3:0>に基づいてコマンド制御部95からのアクティブパルスactpzを選択されたバンクに分配するバンクアクティブパルス出力回路88Bとを有する。図中のタイミングチャートに示されるとおり,バンクアクティブパルス出力回路88Bは4つのANDゲートで構成され,バンク活性化信号actpz<3:0>を同じタイミングで出力する。
各バンクbank0−3は,メモリセルアレイを含むメモリコア781と,メモリコアを制御するコア制御回路780とを有し,バンク活性化信号actpz<3:0>に応答して,各コア制御回路780は,メモリコア780内のロウデコーダを活性化させ,ロウアドレスに対応するワード線を駆動し,センスアンプ列を活性化する。
図78の例1では,アクティブコマンドACTに応答して活性化すべき複数のバンクが同時にアクティブ動作されるので,その後のリードコマンドまたはライトコマンドを順次入力して複数のバンクにアクセスすることができる。
図79は,バンク活性化タイミングの例2を示す図である。この例では,複数のバンクを順次タイミングをずらして活性化動作させる。コマンド制御部95は,コマンドデコーダ95Aとパルス生成回路95Bに加えて,3つの遅延回路791,792,793を有する。この3つの遅延回路は,活性化バンク数信号790に応答して活性化され,パルス生成回路95Bが生成するアクティブパルスactpz0を所定時間ずつ遅延させて,3つの遅延アクティブパルスactpz1-3を生成する。アクティブパルスactpz0及び遅延アクティブパルスactpz1-3は,バンクアクティブパルス出力回路88Bの4つのセレクタSELにそれぞれ供給される。
マルチバンク活性化制御部88は,活性化バンク制御回路88Cとバンクアクティブパルス出力回路88Bで構成され,活性化バンク制御部88Cは,前述のバンクデコーダの機能を内蔵し,供給バンクアドレスBA[1:0]とマルチバンクデータSA’[1:0]とに基づいて,活性化されるべきバンクに対して活性化順番を判定し,セレクタSELに選択信号795を供給する。この選択信号795は8ビットで構成され,2ビットの選択信号が各セレクタに供給され,各セレクタは選択信号795に応答して活性化すべきバンクにバンク活性化信号actpz<3:0>を出力する。
なお,遅延回路791〜793は,活性化バンク数データ790に応じて必要な遅延アクティブパルスactpz1-3を生成することで,省電力化を可能にしている。
図80は,活性化バンク制御回路88Cのバンク活性化タイミング制御の論理を説明する図である。図80には,マルチバンクデータSA’[1:0]=11,01,10の場合の,4つのバンクを活性化する順番データ(2ビットの2進数表示)の表800,801,802が示されている。
マルチバンクデータSA’[1:0]=11の場合は,4つのバンクを全て活性化することになり,活性化順番データ表800に示されるとおり,供給バンクアドレスBA[1:0]に応じて活性化順番データ(00,01,10,11)が異なる。たとえば,供給バンクアドレスBA[1:0]=00の場合は,バンクBank0,1,2,3の順番で活性化制御される。表800内に示されている活性化順番データ(00,01,10,11の8ビット)が,図79に示した活性化バンク制御回路88Cが生成する8ビットの選択信号795に対応する。つまり,4つのセレクタSELが,アクティブパルスactpz0及び3つの遅延アクティブパルスactpz1,actpz2,actpz3をそれぞれ選択する。その結果,バンク活性化信号actpz<0>〜<3>は,順番に生成される。
また,供給バンクアドレスBA[1:0]=01の場合は,バンクBank1,0,3,2の順番で活性化制御される。この場合のバンク活性化信号actpz<0>〜<3>が,図79のタイミングチャートに示されている。表800内に示されている活性化順番データ(01,00,11,10の8ビット)が選択信号795としてセレクタに供給され,4つのセレクタSELが,上から順に遅延アクティブパルスactpz1,アクティブパルスactpz0,遅延アクティブパルスactpz3,actpz2をそれぞれ選択する。その結果,タイミングチャートに示すとおり,バンク活性化信号actpz<1>,<0>,<3>,<2>がこの順番で生成される。
同様に,マルチバンクデータSA’[1:0]=01の場合は,水平方向の2つのバンクを活性化することになり,活性化順番データ表801に示されるとおり,供給バンクアドレスBA[1:0]に応じて2つの活性化順番データ(00,01)が生成される。
同様に,マルチバンクデータSA’[1:0]=10の場合は,垂直方向の2つのバンクを活性化することになり,活性化順番データ表802に示されるとおり,供給バンクアドレスBA[1:0]に応じて2つの活性化順番データ(00,10)が生成される。この表802によれば,表800と共通化したため,2つのバンクを活性化するために,アクティブパルスactpz0と遅延アクティブパルスactpz2とを利用して,バンク活性化信号が生成される。つまり,表802の下のタイミングチャート803に示されるとおり,供給されたアクティブコマンドACTに応答して,内部のアクティブコマンドACTがアクティブパルスactpz0と遅延アクティブパルスactpz2のタイミングで生成されている。
そこで,マルチバンクデータSA’[1:0]=10の場合は,表802の代わりに表804のような活性化順番データ(00,01)を生成するようにしても良い。この場合は,表804の下のタイミングチャート805に示されるとおり,供給されたアクティブコマンドACTに応答して,内部のアクティブコマンドACTがアクティブパルスactpz0と遅延アクティブパルスactpz1のタイミングで生成される。つまり,同時にアクティブ化される2つのバンクがタイミングをずらしながら連続して活性化される。
図81は,バンク活性化タイミングの例3を示す図である。この例では,複数のバンクを順次タイミングをずらして活性化動作させる。図81では,図79の遅延回路791〜793の代わりに,クロックCLKに同期して動作するフリップフロップ回路810〜812を設けている。それ以外の構成は,図79と同じである。活性化バンク制御回路88Cも,図79,図80で説明したとおりである。
この例3によれば,遅延回路がクロックCLKに同期したフリップフロップ回路810〜812であるので,アクティブパルスactpz0からクロックCLKに同期した遅延タイミングで3つの遅延アクティブパルスactpz1-3が生成される。つまり,図81のタイミングチャートに示されるとおり,バンク活性化信号actpz<0>〜<3>が,クロックCLKに同期して順番に出力される。それにより,クロックCLKが高速化されるとバンク活性化信号actpz<0>〜<3>もそれに追従して高速に順次生成され,低速化されると同様に低速に順次生成される。よって,クロック同期の動作が可能である。
[ロウアドレス生成]
本実施の形態におけるマルチバンクアクセス機能では,1回のアクティブコマンドACTとバンクアドレス及びロウアドレスに応答して,アクセスが必要なバンクのページ領域を全て活性化制御する。したがって,供給されたバンクアドレスとロウアドレスから,活性化が必要なバンクの判定に加えて,活性化が必要なページ領域を特定するロウアドレスを生成する必要がある。
図82は,本実施の形態におけるマルチバンクアクセスでのロウアドレス生成を説明する図である。図中,メモリマッピング12と,矩形アクセス領域RC0−3に対応する供給バンクアドレスBA0,1と,各バンクの活性化対象のロウアドレスRAとを示す論理値表820とが示されている。メモリマッピング12は,前述と同様であり,行列方向に配列されたページ領域は,上下に隣接するページ領域のバンクがそれぞれ異なっていて,上下に隣接する4つのバンクBank0-3毎にロウアドレスが+1ずつインクリメントしている。
そして,このメモリマッピング12によれば,アクセスされる矩形領域RC0の場合は,供給バンクアドレスBA=BA0(=00)と供給ロウアドレスRA=RA0とから,同時に活性化すべきページ領域のアドレスは,BA0/RA0,BA1/RA0,BA2/RA0,BA3/RA0であることが理解できる。矩形領域RC1の場合は,供給されるバンクアドレスBA=BA1(=01)とロウアドレスRA=RA0とから,同時に活性化すべきページ領域のアドレスは,BA1/RA0,BA0/RA1,BA3/RA0,BA2/RA1であり,矩形領域RC2の場合は,供給されるバンクアドレスBA=BA2(=10)とロウアドレスRA=RA0とから,同時に活性化すべきページ領域のアドレスは,BA2/RA0,BA3/RA0,BA0/RA(0+RS),BA2/RA(0+RS)であり,矩形領域RC3の場合は,供給されるバンクアドレスBA=BA3(=11)とロウアドレスRA=RA0とから,同時に活性化すべきページ領域のアドレスは,BA3/RA0,BA2/RA(0+1),BA1/RA(0+RS),BA2/RA(0+RS+1)である。
上記を一般化すると,供給ロウアドレスがRA,メモリマッピング12のロウアドレスのステップ数がRSの場合,各バンクBank0-3に発生すべきロウアドレスは,供給バンクアドレスBA0,BA1に応じて論理値表820に示されるとおりである。すなわち,以下の通りである。
BA=00:RA,RA,RA,RA
BA=01:RA+1,RA,RA+1,RA
BA=10:RA+RS,RA+RS,RA,RA
BA=11:RA+RS+1,RA+RS,RA+1,RA
したがって,図71のロウアドレス演算部97は,供給されるバンクアドレスBAとロウアドレスRAとに応じて,上記論理値表820に示したロウアドレスを各バンクBank0-3に生成する。
図83は,本実施の形態におけるロウアドレス演算部の例1を示す図である。ロウアドレス演算部97は,供給されるロウアドレスRAに,0,1,RS,RS+1をそれぞれ加算するアドレス加算器831〜834と,それらアドレス加算器の出力のいずれかを選択して各バンク内のアドレスデコーダ836に供給するセレクタSELと,セレクタSELに選択信号835を供給するロウアドレス制御回路830とを有する。ロウアドレス制御回路830は,供給されるバンクアドレスBAに応じて,図82の論理値表821に示された選択信号(各2ビット,合計で8ビット)を生成する。また,ロウアドレスのステップ数データRSと,RS+1とが,モードレジスタ96からアドレス加算器833,834にそれぞれ供給され,固定値「0」「1」がアドレス加算器831,832にそれぞれ供給される。よって,加算器831は,供給ロウアドレスRAをそのまま出力する。
たとえば,供給バンクアドレスBA=01の場合は,ロウアドレス制御回路832は,選択信号835として「01,00,01,00」を生成し,それに応じて,各セレクタSELは,上から順に,RA+1,RA,RA+1,RAを選択して,各バンクのアドレスデコーダ836に供給する。各バンクは,前述のバンク活性化信号actpz<3:0>に応答して,選択されたバンクのアドレスデコーダ836が活性化され,活性化されたアドレスデコーダが上記のロウアドレスRA+1,RA,RA+1,RAをデコードし,対応するワード線を活性化する。
図84は,本実施の形態におけるロウアドレス演算部の例2を示す図である。この例では,ロウアドレス演算部97は,供給されるロウアドレスRAに,セレクタSELで選択された定数0,1,RS,RS+1を加算する4つのアドレス加算器841〜844と,セレクタSELに選択信号835を供給するロウアドレス制御回路830とを有する。ロウアドレス制御回路830は,図83と同じである。そして,このロウアドレス制御回路830の選択信号に応じて,各セレクタSELは,4つの定数0,1,RS,RS+1のいずれかを選択し,アドレス加算器に出力する。つまり,ロウアドレス演算器97は,供給ロウアドレスRAに加算する定数0,1,RS,RS+1をセレクタで選択し,選択された定数をアドレス加算器に与える。図83のロウアドレス演算器97は,4つのアドレス加算器の出力をセレクタで選択したが,図84のロウアドレス演算器97は,4つの定数をセレクタで選択している。この点で異なるだけである。
以上のように,ロウアドレス演算器97は,供給されるロウアドレスRAから,必要な4つのロウアドレスを生成する。よって,メモリ装置は,1回のアクティブコマンドでロウアドレスを入力すれば,内部で必要な4つのロウアドレスを生成することができ,複数のバンクを活性化することができる。
[メモリマッピング設定]
マルチバンク活性化機能を実現するためには,メモリ装置にメモリマッピング情報を設定しておくことが必要である。例えば,図82で説明したとおり,メモリマッピング12に基づいて4種類の矩形アクセス領域RC0−3において活性化すべきバンクが選択され,生成すべきロウアドレスが演算される。よって,より上位のシステムにおけるメモリマッピングが異なると,メモリ装置はそれに応じて活性化すべきページ領域の判定処理を変更することが求められる。
図85は,2つのメモリマッピング例を示す図である。メモリマッピング12Aは,前述してきたメモリマッピングと同じであり,奇数行にはバンクBank0,1が,偶数行にはバンクBank2,3が配置され,ロウアドレスRAが図示されるように配置される。また,メモリマッピング12Bは,奇数行には偶数のバンクBank0,2が,偶数行には奇数のバンクBank1,3が配置され,ロウアドレスRAは12Aと同じである。
図86は,上記の2種類のメモリマッピングに対するバンクアドレス切換回路861を示す図である。図86(B)の構成図には,クロック端子CLK,特殊入力端子SP0,バンクアドレス端子BA0,BA1に対して,それぞれ入力バッファ94が設けられ,クロックCLKに同期してそれぞれの信号をラッチするラッチ回路860が設けられている。
図86(A)のタイミングチャート図に示されるとおり,拡張モードレジスタセットコマンドEMRSと共にバンクアドレス端子BAから設定データVが,特殊端子SP0からメモリマッピング情報ARが,アドレス端子ADDからロウアドレスのステップ数データRSがそれぞれ入力される。そして,設定データV,メモリマッピング情報AR,ステップ数データRSは,モードレジスタ96にセットされる。
このモードレジスタ96にセットされたメモリマッピング情報ARに応じて,バンクアドレス切換回路861内のセレクタSELが,2ビットのバンクアドレスBA0,BA1のいずれかを選択し,内部バンクアドレスba0z,ba1zを生成する。図中に示されるとおり,メモリマッピング情報AR=Lの場合は,内部バンクアドレスは,ba0z=BA0,ba1z=BA1にされ,メモリマッピング情報AR=Hの場合は,内部バンクアドレスは,ba0z=BA1,ba1z=BA0にされる。
このように,入力部でバンクアドレスBA0,BA1をメモリマッピング情報ARに基づいて切り替えることにより,メモリ装置内部のバンク選択機能やロウアドレス生成機能は,共通のメモリマッピング12Aに基づく構成にすることができる。
なお,上記の実施の形態では,また,マルチバンク情報(SA’)、同時活性化バンクデータ(SA’0−2)、矩形領域サイズデータ(W,H)等をスペシャル入力端子SPから入力したが、使用されていない端子で実現可能である。例えば,リード動作において,ロウアドレスがアドレス端子Add0〜12で入力され,コラムアドレスがアドレス端子Add0〜9で入力されるとすると,コラムアドレスが入力されるときアドレス端子Add10〜12は使用されていない。よって,コラムアドレス入力時に使用されていないアドレス端子Add10〜12からこれら制御データSA’,W,H等を入力することができる。その場合にも本発明は適用可能である。
また、拡張モードレジスタセットコマンドEMRSによりモードレジスタに設定される各種情報は上記実施の形態に限定されることなく、アドレス端子から入力されることも本発明の適用範囲である。
《マルチバンクアクセスとバイトバウンダリ》
バンクアドレスとコラムアドレスで選択されるメモリ単位領域を超える矩形アクセスの場合に対応して,メモリ装置がバイトバウンダリ機能を有することを説明した。また,バンクアドレスとロウアドレスで選択されるページ領域を超える矩形アクセスの場合に対応して,メモリ装置がマルチバンクアクセス機能を有することも説明した。そこで,矩形アクセス領域が,ページ領域を超えるとともにメモリ単位領域を超える場合に,両方の機能により,1回のアクティブコマンドでアクセス可能にし且つ無駄なデータ出力をなくすことができる。以下,具体的に説明する。
図87は,マルチバンクアクセスとバイトバウンダリが発生した場合のタイミングチャートを示す図である。図示されるとおり,矩形アクセス領域22がページ領域を超えて複数のバンクBA3,BA2,BA1,BA0にまたがり,且つメモリ単位領域を超えてコラムアクセスが必要な例である。この例では,マルチバンク情報SA’=4(=11),スタートバイト信号SB=2である。
図88は,マルチバンクアクセス機能とバイトバウンダリ機能とを有するメモリ装置の構成図である。このメモリ装置86には,簡単のために,2つのバンクBank2,3のみが示されているが,これに加えて図示しない2つのバンクBank0,1が設けられている。モードレジスタ96には,メモリマッピングにおけるロウアドレスのステップ数データRSと,コラムアドレスのステップ数データCSTとがあらかじめ設定される。
ロウ制御部としては,バンクアドレスBAとマルチバンク情報SA’とから活性化すべきバンクへのバンク活性化信号actpz<3:0>を生成するマルチバンク活性化制御部88と,バンクアドレスBAとロウアドレスRAとロウアドレスのステップ数データRSとから各バンクのロウアドレスを演算するロウアドレス演算部97−2,97−3とが設けられている。このロウアドレス演算部97−2,97−3は,図83,図84で説明した構成の一部分である。また,図78で説明したとおり,バンク活性化信号actpzは各バンク内のコア制御部に供給される。但し,図88にはコア制御部は省略されている。
コラム制御部90には,供給されるコラムアドレスCAとバンクアドレスBAと,スタートバイト信号SBとコラムアドレスのステップ数データCSTとから,各バンクに内部コラムアドレスI−CA−2,3を生成するコラムアドレスコントローラ290−2,290−3を有する。このコラムアドレスコントローラ290は,図44に示したコラムアドレス生成器と同等であり,これにバンクアドレスBAを追加することで,バンクの境界をまたいでバイトバウンダリに必要なコラムアドレスの生成を可能にする。なお,ステップ数データCSTは,図44のコラムアドレス折り返しデータCAWrapと同じである。
さらに,コラム制御部90は,供給されるバンクアドレスBAとコラムアドレスCAとスタートバイト信号SBとに基づいて,各バンク内のバイト領域Byte0−3のデータを選択する制御信号S221を生成する。この制御信号S221により,各バンクの4つのバイト領域Byte0−3内のデータラッチ回路が選択され,入出力バスI/Obusに接続される。各バンク内のバイト領域Byte0−3の構成と動作は,図22,24,29で説明したのと同じである。各バンクに4つのバイト領域があるので,上記の制御信号S221は,4×4=16ビットの選択信号である。
次に,図87の矩形領域22がアクセスされる時の動作について説明する。図87のタイミングチャートに示されるとおり,拡張モードレジスタセットコマンドEMRSと共にコラムアドレスのステップ数データCST=4(図中871)と,ロウアドレスのステップ数データRS=4(図中872)とが入力され,モードレジスタ96に設定される。
次に,アクティブコマンドACT(図中876)と共に,矩形アクセス領域の左上の画素を含むページ領域のバンクアドレスBAとロウアドレスRA,及びマルチバンク情報SA’=4(図中873)が入力される。SA’=4では,2×2=4つのバンクを同時にアクティブ化することを要請されている。これに応答して,マルチバンク活性化制御部88は,4つのバンクにバンク活性化信号actpz<3:0>を出力する。また,ロウアドレス演算部97−2,3が,各バンクのロウアドレスを演算する。そして,4つのバンク内のロウデコーダが演算されたロウアドレスをデコードして対応するワード線を駆動し,バンクを活性化する。
そして,リードコマンドRD(図中877)と同時に,バンクアドレスBA=3とコラムアドレスCA=126,スタートバイト信号SB=2(図中874)とバイト組み合わせ情報の第2の情報BMR=UP(図中875)とを入力する。このバンクアドレスBAに対応するバンクBank3のコラムアドレスコントローラ290−3は,供給されたコラムアドレスCA=126と,スタートバイト信号SB=2に基づきコラムアドレスCA=127を生成し,内部コラムアドレスI−CA−3として出力する。これにより,バンクBank3は,各バイト領域Byte0−3にコラムアドレス126,127のデータを出力させる。そして,データラッチセレクタ221からの制御信号S221に応じて,バイト領域Byte2,3はコラムアドレスCA=126のデータを,バイト領域Byte0,1はコラムアドレスCA=127のデータを入出力バスI/Obusに出力する。
次に,リードコマンドRDと共に,バンクアドレスBA=3とコラムアドレスCA=127と,SB=2,BMR=UPが入力される。これに応答して,コラムアドレスコントローラ290−3は内部コラムアドレスI−CA−3=127を生成し,バンクBank3はコラムアドレス127の4バイトデータを出力する。一方,コラムアドレスコントローラ290−2は,バンクアドレスBA=3とコラムアドレスCA=127とスタートバイト信号SB=2から,バンクBank2からデータを読み出す必要性を検出し,コラムアドレスのステップ数データCSTを参照して,バンクBank2のコラムアドレスCA=124を内部コラムアドレスI−CA−2として出力する。これにより,バンクBank2は,コラムアドレスCA=124の4バイトデータを読み出す。そして,データラッチセレクタ221が,バンクアドレスBA=3,コラムアドレスCA=127,スタートバイト信号SB=2に基づいて,制御信号S221を生成し,バンクBank3からはバイト領域Byte2,3のデータを,バンクBank2からはバイト領域Byte0,1のデータを,それぞれ入出力バスI/Obusに出力する。
以下,リードコマンドRDと共に,バンクアドレスBA=1と対応するコラムアドレスCA=2,3,6,7...が入力され,同様にコラムアドレスコントローラ290が必要なコラムアドレスを生成し,データラッチセレクタ221が必要な制御信号S221を生成し,スタートバイト信号SB=2に対応した位置から4バイトのデータが,同じバンク内からまたは隣接するバンク内から出力される。
上記はリードコマンドの動作について説明したが,ライトコマンドの場合も同様のコラムアクセス制御が行われる。
この実施の形態のよれば,ページ領域を超えて複数のバンクにまたがる矩形アクセスに対しても,スタートバイト信号SBとバイト組み合わせ情報BMRとに基づき,メモリ単位領域内の任意のバイト(またはビット)から4バイトデータ(または4ビットデータ)をアクセスすることができる。
[マルチバンクアクセスに対応するメモリコントローラ]
次に,マルチバンクアクセス機能を有するメモリ装置を制御するメモリコントローラについて説明する。図69,図70で説明したとおり,メモリコントローラは,メモリ装置内のモードレジスタにロウアドレスのステップ数データRSやメモリマッピング情報ARなどをあらかじめ設定しておき,メモリアクセス元からの矩形アクセス要求に応答して,アクティブコマンドACTと共にバンクアドレスBA,ロウアドレスRA,マルチバンク情報SA’をメモリ装置に発行し,さらに,リードコマンドRDまたはライトコマンドWRと共にバンクアドレスBA,コラムアドレスCAを発行する。よって,メモリコントローラは,メモリアクセス要求に対して,マルチバンクアクセス機能に必要な上記のアドレスやデータなどを生成する必要がある。このメモリコントローラの構成と動作について説明する。
図89は,メモリマッピングの一例を示す図である。メモリマッピング12は,フレーム画像に対応している。このメモリマッピング12は,前述と同様に,マトリクス状に配置されたページ領域14の奇数行にバンクアドレスBA0,1が,偶数行にバンクアドレスBA2,3が割り当てられ,各行でロウアドレスRAが順にインクリメントされ,ロウアドレスのステップ数RSはRS=4である。そして,ページ領域14は,16画素×32行で構成され,1つのコラムアドレスで4画素のデータ(4バイトデータ)からなるメモリ単位領域が特定される。よって,1つのページ領域14は,512/4=128のコラムアドレス領域(メモリ単位領域)を有する。
このメモリマッピング12では,水平方向に8ページ領域,垂直方向に4ページ領域が配置されている。よって,メモリマッピング12において,水平方向の画素数は128(=16画素×8ページ領域),垂直方向の画素数も128(=32行×4ページ領域)である。以下,このメモリマッピングを前提にして各種の演算を説明する。
図90は,本実施の形態におけるメモリコントローラの構成図である。図54と同様に,メモリコントローラ82は,複数のアクセス元ブロック81−1〜nからメモリアクセス要求を受けて,調停回路540による調停で許可されたメモリアクセス要求に対して,メモリ装置86に対するアクセス制御を行う。つまり,メモリコントローラ82は,アクセス元ブロック81−1〜nに対応してインターフェースIF_1〜nを有し,更に,アクセス要求に応答してアドレスやコマンドを生成するシーケンサSEQ_1〜nを有する。
よって,インターフェースIF_1〜nは,アクセス要求元ブロック81とデータのやり取りを行う。アクセス元ブロックからのアクセス種別は,水平アクセスと矩形アクセスの2種類である。調停回路540は,インターフェースからのアクセス要求の調停を行い,アクセス権を取得したシーケンサSEQ_nにアクセス指示を出力する。セレクタSELは,調停回路540からの選択信号S540に応答して,いずれかのシーケンサSEQ_1〜nからのコマンドとアドレスを選択し,メモリ装置86に出力する。また,セレクタSELは,選択信号S540に応答して,いずれかのインターフェースIF_1〜nのデータ線Dataを選択する。
レジスタ543には,上位のCPUから各種パラメータが設定される。パラメータとしては,メモリ装置86がバイトバウンダリ機能,マルチバンクアクセス機能を有するか否かなどの機能データが含まれる。それ以外に,設定パラメータとして,フレーム画像の左上の画素のロウアドレスROW_BASE_ADR,フレーム画像の水平方向の画素数PICTURE_MAX_XSIZEなどが含まれる。
メモリ装置86は,前述したバイトバウンダリ機能やマルチバンクアクセス機能を有する画像メモリである。図90のメモリコントローラ82とメモリ装置86とにより,画像処理システムが構成される。
図91は,アクセス元ブロックとインターフェース間の信号を示す図である。図91(A)は矩形アクセス時の信号を,図91(B)は水平アクセス時の信号をそれぞれ示している。アクセス元ブロック81−nは,アクセス要求信号REQと共にアクセス対象領域のデータを出力する。両アクセス時の信号の送受信については後で詳述する。
図92は,アクセス対象領域のデータを説明する図である。メモリ装置の論理アドレス空間S86内にフレーム画像FM−IMGのデータが格納されている。前述のとおり,このフレーム画像FM−IMGの左上画素のロウアドレスROW_BASE_ADRとフレーム画像の水平方向の画素数PICTURE_MAX_XSIZEとがレジスタ543に設定されている。そして,このフレーム画像内の矩形領域RIMGがアクセス対象領域の場合は,左上のフレーム内画素座標(X_POS,Y_POS)と,矩形領域の水平方向サイズX_SIZEと垂直方向サイズY_SIZEとが,アクセス元ブロック81−nからメモリコントローラ内のインターフェースIF_nに供給される。
なお,フレーム画像FM−IMGは,図89のメモリマッピング12と一致している。つまり,フレーム画像FM−IMGの左上画素は,バンクアドレスBA=0,ローカルなロウアドレスRA=0のページ領域内の左上画素に対応する。よって,フレーム画像FM−IMGの左上画素のロウアドレスROW_BASE_ADRとフレーム内のローカルロウアドレスRAとから,メモリの論理アドレス空間内のロウアドレスを求めることができる。
図93は,アクセス元ブロックとインターフェース間の信号のタイミングチャート図である。図93(A)の矩形アクセス(リード時)では,アクセス元ブロック81―nがリードライト指示信号RXWをHレベル(リード)にすると共に,アクセス要求REQをアサートしながら,アクセス対象領域データX/Y_POS,X/Y_SIZEを出力する。これに応答して,メモリコントローラはアクノリッジACKを返信し,所定の調停処理を経てメモリ装置にアクセス制御しリードデータを取得する。そして,メモリコントローラのインターフェースIF_nは,イネーブル信号ENをアサートしながらリードデータRDATA(Data(A0―A7))を出力する。このイネーブル信号ENは1クロックサイクル前からアサートされ,1クロックサイクル前にネゲートされる。
一方,図93(B)の矩形アクセス(ライト時)では,アクセス元ブロック81―nがリードライト指示信号RXWをLレベル(ライト)にすると共に,アクセス要求REQをアサートしながら,アクセス対象領域データX/Y_POS,X/Y_SIZEを出力する。これに応答して,メモリコントローラはアクノリッジACKを返信し,所定の調停処理を経てメモリ装置にアクセス制御し,イネーブル信号ENをアサートしながら,ライトデータWDATA(Data(A0−A7))を受信する。このイネーブル信号ENも1クロックサイクル前からアサートされ,1クロックサイクル前にネゲートされる。
水平アクセスの場合も同様であり,アクセス元ブロックは,水平アクセスの先頭アドレスADRと,水平アクセスサイズSIZEを供給し,リードであればリードデータRDATAを受信し,ライトであればライトデータRDATAを出力する。すなわち,図91に示されるとおり,アクセス元ブロックが,アクセス要求REQをアサートしながら水平アクセス先頭アドレスADRと水平アクセスサイズSIZEとリード・ライト指示信号RXWとを供給する。それに応答してインターフェースがアクノリッジ信号ACKを返信する。そして,メモリコントローラがメモリアクセスを実行し,イネーブル信号をアサートしながら読み出しデータRDATAを出力する。また,書き込み時は,メモリアクセス前にメモリコントローラがイネーブル信号ENをアサートしながら書き込みデータWDATAを受信する。
図94は,メモリコントローラの動作概略を示す図である。各動作ステップが番号1〜4の順に実行される。まず,アクセス要求元ブロック81−nがアクセス要求REQを発行すると,インターフェースIF_nは,そのアクセス要求REQに応答して調停回路540にアクセス要求を転送する。次に,調停回路540は,メモリ装置86がアクセス可能であり且つアクセス要求元の優先順位が最上位であれば,インターフェースIF_nにアクノリッジ信号ACKを返信するとともに,シーケンサSEQ_nにコマンド発行開始指示STARTを出力する。このコマンド発行開始指示STARTに応答して,シーケンサSEQ_nはコマンド発行に必要な各種パラメータX/Y_POS,X/Y_SIZEをインターフェースIF_nから受信する。
シーケンサSEQ_nは,上記のパラメータとレジスタに設定されているパラメータに基づいてコマンド発行を行い,メモリ装置86へのアクセスを開始する。シーケンサSEQ_nは,コマンドの発行状況に応じてデータ量に対応したイネーブル信号ENを発行し,そのイネーブル信号ENはインターフェースIF_nを経由してアクセス要求元81_nに送信される。読み出しの場合は,インターフェースIF_nを経由してメモリ装置86からのリードデータが,上記のイネーブル信号ENに応答して,アクセス要求元81_nに送信される。書き込みの場合は,インターフェースIF_nを経由してアクセス要求元81_nからのライトデータが,上記のイネーブル信号ENに応答して,メモリ装置86に転送される。
このようにメモリ装置86にコマンドを発行してアクセス制御中に,シーケンサSEQ_nは,調停回路540に,データアクセス中であることを示すアクティブ信号ACTIVEをアサートする。メモリへのアクセスが終了すると,このアクティブ信号ACTIVEはネゲートされる。
図95は,シーケンサSEQの構成図である。シーケンサSEQは,シーケンサ内部の全体制御を行う制御部940と,インターフェースIF_nから転送されるアクセス対象領域データX/Y_POS,X/Y_SIZEと,レジスタ543に設定されているフレーム画像FM−IMGの左上画素のロウアドレスROW_BASE_ADRとフレーム画像の水平方向の画素数PICTURE_MAX_XSIZEとから,中間パラメータを生成する中間パラメータ生成部941と,中間パラメータに基づいてコマンドとアドレスを生成しメモリ装置86に出力するコマンド・アドレス生成部942とを有する。
図96は,中間パラメータを生成する演算式を説明するための図である。この例では,図96(A)に示されるとおり,フレーム画像FM−IMG内の矩形領域RIMGがアクセスされ,各データは,以下の通りである。
PICTURE_MAX_XSIZE=128
ROW_BASE_ADR=0
(X_POS,Y_POS) = (28,94)
(X_SIZE,Y_SIZE)=(8,4)
また,図96(B)には,矩形領域RIMG近傍の4つのページ領域BA1/RA4,BA0/RA5,BA3/RA4,BA2/RA5における水平方向の画素番号と垂直方向の画素番号(行番号)とが示されている。これらの情報が中間パラメータとして以下の通り生成される。
中間パラメータ生成部941は,以下の演算により中間パラメータを生成する。
(1)矩形データRIMGが4つのページ領域にまたがる場合の左上バンクアドレスBAは,次の通り求められる。まず,以下の通り,フレーム画像FM−IMG内の矩形データRIMGの左上のフレーム内画素座標(X_POS,Y_POS)をそれぞれ,ページ領域の水平方向画素数16,垂直方向画素数32で除算して,バンクXアドレスBA_X_ADR,バンクYアドレスBA_Y_ADRを求める。上記除算は余りを切り捨てる。
BA_X_ADR=X_POS/16
BA_Y_ADR=Y_POS/32
このバンクXアドレスBA_X_ADRとバンクYアドレスBA_Y_ADRは,矩形領域の左上画素がメモリマッピング12内の水平方向の何番目のページ領域か,垂直方向の何番目のページ領域かに対応する。ただし,メモリマッピング12の左上は水平方向の0番目,垂直方向の0番目のページ領域とする。
そして,求めたバンクXアドレスBA_X_ADRとバンクYアドレスBA_Y_ADRが奇数か偶数かに応じて,以下の通りバンクアドレスBA[1:0]が求まる。
BA_X_ADRが偶数、BA_Y_ADRが偶数の場合、左上BA=0
BA_X_ADRが奇数、BA_Y_ADRが偶数の場合、左上BA=1
BA_X_ADRが偶数、BA_Y_ADRが奇数の場合、左上BA=2
BA_X_ADRが奇数、BA_Y_ADRが奇数の場合、左上BA=3
(2)右側のバンクアドレスBA,下側のバンクアドレスBA,右下のバンクアドレスBAは,以下の通り求められる。すなわち,メモリマッピング12によれば,上記(1)で求めた左上BA[1:0]から,右BA、下BA、右下BAが次の通りになる。なお「~」は反転を意味する。
右BA=[左上BA[1], ~左上BA[0]]
下BA=[~左上BA[1], 左上BA[0]]
右下BA=[~左上BA[1], ~左上BA[0]]
図96の例によれば,(X_POS,Y_POS)=(28,94)であるので,
左上バンクアドレスBAについては,
BA_X_ADR=X_POS/16=28/16=1
BA_Y_ADR=Y_POS/32=94/32=2
であるから,BA_X_ADR=1が奇数、BA_Y_ADR=2が偶数なので、左上バンクアドレスBA[1:0]=01である。つまり,BA1が求められる。
さらに,右BA、下BA、右下BAは,左上BA=2'b01から
右BA=[左上BA[1], ~左上BA[0]]=[00]=0
下BA=[~左上BA[1], 左上BA[0]]=[11]=3
右下BA=[~左上BA[1], ~左上BA[0]]=[10]=2
と,BA0,BA3,BA2がそれぞれ求められる。
(3)メモリの論理アドレス空間S86内におけるアクセス開始ロウアドレスROW_ADRは,次の通りである。
ROW_ADR=ROW_BASE_ADR + [PICTURE_MAX_XSIZE /(16*2)]*[Y_POS/(32*2)] + X_POS/(16*2)
つまり,ROW_BASE_ADRはフレーム画像の左上画素のロウアドレスで,PICTURE_MAX_XSIZE/(16*2)はフレーム内の水平方向のロウアドレスステップ数で,Y_POS/(32*2)は矩形領域RIMGの左上画素がフレーム内の垂直方向の何対目かを示し(図96中の参照番号961),X_POS/(16*2)が矩形領域RIMGの左上画素がフレーム内の水平方向の何対目かを示す(図96中の参照番号962)。
図96の例によれば,PICTURE_MAX_XSIZE=128,ROW_BASE_ADR=0,(X_POS,Y_POS)=(28,94)であるので,
ROW_ADR=ROW_BASE_ADR + [PICTURE_MAX_XSIZE /(16*2)]*[Y_POS/(32*2)] + X_POS/(16*2)
=0+(128/32)*(94/(32*2))+28/(16*2)
=4
である。
(4)メモリの論理アドレス空間S86内におけるアクセス開始コラムアドレスCOL_ADRは,ページ内のコラムアドレスであり,以下の通りである。
COL_ADR= 4*Y_POS%32+(X_POS/4)%4
ここで「%」は余りを意味する。つまり,図89に示したとおり,ページ領域内のコラムアドレスのステップ数は4であり,ページ領域の水平方向のコラム数は4,垂直方向の行数は32であるので,Y_POS%32はページ領域BA1,RA4内の行数を意味し,(X_POS/4)%4はページ領域内の列数を意味する。
図96の例によれば,
COL_ADR= 4*Y_POS%32+(X_POS/4)%4
=4*94%32+(28/4)%4=120+3
=123
と求められる。
(5)次に,バンク内X座標(BA_X_POS)とY座標(BA_Y_POS)は,ページ領域の水平方向の画素数が16,垂直方向の行数が32であるので,
BA_X_POS= X_POS%16
BA_Y_POS= Y_POS%32
と求められる。図96(C)に示した,右上バンク(BA1/RA4)内における矩形領域RIMGの左上画素の座標(BA_X_POS,BA_Y_POS)に対応する。
(6)矩形領域RIMGがバンク(ページ領域)を跨ぐか否かを示すX方向BANK跨ぎフラグ、Y方向BANK跨ぎフラグは,(5)で求めたバンク内X,Y座標BA_X_POS,BA_Y_POSと,矩形領域RIMGの水平方向,垂直方向のサイズX/Y_SIZEから,以下のとおり計算できる。
BA_X_POS +X_SIZE>15ならば、X方向BANK跨ぎフラグ=1
BA_Y_POS +Y_SIZE>31ならば、Y方向BANK跨ぎフラグ=1
つまり,図96(C)に示されるとおり,矩形領域RIMGの左上画素の座標(BA_X_POS,BA_Y_POS)に矩形領域のサイズX/Y_SIZEを加算した値が,ページ領域の水平方向サイズ15,垂直方向サイズ31を超えていれば,バンクを跨ぐことになることを意味する。
上記(5)(6)について図96の例で説明すると,
バンク内X座標,Y座標は,
BA_X_POS= X_POS%16=28%16=12
BA_Y_POS= Y_POS%32=94%32=30
X方向BANK跨ぎフラグ,Y方向BANK跨ぎフラグは,
BA_X_POS +X_SIZE=12+8=20で15より上なので,X方向BANK跨ぎフラグ=1
BA_Y_POS +Y_SIZE=30+4=34で31より上なので,Y方向BANK跨ぎフラグ=1
となり,X,Y方向共にバンクを跨ぐことになる。
(7)次に,4つのバンクにおける矩形領域のX,Y方向のサイズ,1ST_X_SIZE, 2ND_X_SIZE, 1ST_Y_SIZE, 2ND_Y_SIZEの計算は,次の通りである。
図96(C)に示したとおり,X方向にBANKを跨ぐ場合,左側のBANKにおけるX_SIZEを1ST_X_SIZE,右側を2ND_X_SIZEとし,Y方向にBANKを跨ぐ場合,上側のBANKにおけるY_SIZEを1ST_Y_SIZE,下側を2ND_Y_SIZEとする。そして,BANKを跨がない場合は、1STX_SIZE,1ST_Y_SIZEのみが有効となる。
よって,
X方向BANK跨ぎフラグ=1の場合は,
1ST_X_SIZE= 16 − BA_X_POS
2ND_X_SIZE=X_SIZE − 1ST_X_SIZE
X方向BANK跨ぎフラグ=0の場合は,
1ST_X_SIZE= X_SIZE
Y方向BANK跨ぎフラグ=1の場合は,
1ST_Y_SIZE= 32 − BA_Y_POS
2ND_Y_SIZE=Y_SIZE − 1ST_Y_SIZE
Y方向BANK跨ぎフラグ=0の場合は,
1ST_Y_SIZE= Y_SIZE
となる。
図96の例を適用すると,
X方向BANK跨ぎフラグ=1なので
1ST_X_SIZE= 16 − BA_X_POS =16 − 12 =4
2ND_X_SIZE=X_SIZE − 1ST_X_SIZE=8 − 4 =4
Y方向BANK跨ぎフラグ=1なので
1ST_Y_SIZE= 32 − BA_Y_POS= 32 − 30 = 2
2ND_Y_SIZE=Y_SIZE − 1ST_Y_SIZE = 4 − 2 = 2
と求められる。
(8)最後に,ロウアドレスのステップ情報RSは,フレーム画像12(FM−IMG)中のX方向の左端から右端までスキャンする際に、いくつロウアドレスが増加するかを示した数であり,以下の計算で求められる。
RS=PICTURE_MAX_XSIZE /(16*2)
図96の例であれば,RS= PICTURE_MAX_XSIZE /(16*2)=128/32=4と求められる。
以上の通り,中間パラメータ生成部94は,上記の演算式によって(1)〜(8)の中間パラメータを求めて,コマンド/アドレス生成部942に出力する。そして,コマンド/アドレス生成部942が,中間パラメータに基づいて,メモリ86に供給するコマンドとバンクアドレスBA,ロウアドレスRA,コラムアドレスCA,ロウアドレスステップ情報RS,マルチバンク情報SA’を生成する。
図97は,コマンド/アドレス生成部における動作フローチャート図である。図中,生成されるコマンドが楕円形で示されている。まず,メモリコントローラは,通常のモードレジスタセットコマンドMRSを発行し,メモリ装置内のモードレジスタに各種の初期設定を行う(S40)。この初期設定は,通常のSDRAMで行われる設定である。そして,待機状態になる(S41)。やがて,アクセス元ブロック81からアクセス要求を受信すると,中間パラメータ生成部941が,アクセス元ブロックから受信したアクセス対象領域データX/Y_POS,X/Y_SIZEと,レジスタ543内に設定されているフレーム画像の左上画素のロウアドレスROW_BASE_ADRと水平方向画素数PICTURE_MAX_XSIZEとから,前述の中間パラメータを生成する(S42)。
コントロール対象のメモリ装置にマルチバンクアクセス機能があるか否かがレジスタ543に設定されているので,それをチェックする(S43)。マルチバンクアクセス機能が設定されていない場合は,通常のコントロール動作によって,アクティブコマンドACTとリードコマンドRD(またはライトコマンド)とを,バンク数分繰り返して発行する(S44)。
マルチバンクアクセス機能が設定されている場合は,コマンド/アドレス生成部942が,バンク跨ぎフラグFlag[X:Y]に基づいてバンク数を判定する(S46)。その結果,コマンド・アドレス生成部942が,バンク跨ぎフラグFlag[X:Y]からマルチバンク情報SA’[1:0]を生成する。両者の関係は次の通りである。
Flag[X:Y]=00 SA’[1:0]=00(1つのバンクをアクティブ)
Flag[X:Y]=10 SA’[1:0]=01(X方向に2つのバンクをアクティブ)
Flag[X:Y]=01 SA’[1:0]=10(Y方向に2つのバンクをアクティブ)
Flag[X:Y]=11 SA’[1:0]=11(4つのバンクをアクティブ)
よって,コマンド/アドレス生成部942は,アクティブコマンドACTと,先頭バンクアドレスBA,先頭ロウアドレスRAと共に,マルチバンク情報SA’とを発行する(S80,S70,S60,S50)。
4つのバンクを同時に活性化する場合は,メモリコントローラ内のコマンド/アドレス発生部942は,アクティブコマンドACT及びロウアドレスRAと共にマルチバンク情報SA’=11を発行する(S50)。そして,コマンド/アドレス発生部942は,左上バンク内のコラムアドレスCAと共にリードコマンドまたはライトコマンドを発行する(S51)。このリード又はライトコマンドは,左上バンク内のX方向のアクセスサイズである1ST_X_SIZE=N回にわたり,コラムアドレスをインクリメントしながら繰り返して発行する。さらに,右バンク内のコラムアドレスCAと共にリードコマンドまたはライトコマンドを発行する(S52)。このリード又はライトコマンドは,右バンク内のX方向のアクセスサイズである2ND_X_SIZE=N回にわたり,コラムアドレスをインクリメントしながら繰り返して発行する。そして,ライン数lineを+1インクリメントし(S53),ライン数lineが左上バンク内のY方向のアクセスサイズである1ST_Y_SIZEを超えるまで工程S51,S52,S53を繰り返す(S54)。
次に,コマンド/アドレス発生部942は,下バンク内のコラムアドレスCAと共にリードコマンドまたはライトコマンドを発行する(S55)。このリード又はライトコマンドは,下バンク内のX方向のアクセスサイズである1ST_X_SIZE=N回にわたり,コラムアドレスをインクリメントしながら繰り返して発行する。さらに,右下バンク内のコラムアドレスCAと共にリードコマンドまたはライトコマンドを発行する(S56)。このリード又はライトコマンドは,右バンク内のX方向のアクセスサイズである2ND_X_SIZE=N回にわたり,コラムアドレスをインクリメントしながら繰り返して発行する。そして,ライン数lineを+1インクリメントし(S57),ライン数lineが下バンク内のY方向のアクセスサイズである2ND_Y_SIZEを超えるまで工程S55,S56,S58を繰り返す(S58)。
コマンド/アドレス生成部942は,上記のリード又はライトコマンドと共に発行するコラムアドレスを,メモリマップに基づいて,中間パラメータである先頭コラムアドレスCOL_ADR=123とコラムアドレスステップ数データCST=4とから求める。
X方向に2つのバンクを同時に活性化する場合は,メモリコントローラ内のコマンド/アドレス発生部942は,アクティブコマンドACT及びロウアドレスRAと共にマルチバンク情報SA’=01を発行する(S60)。そして,左上バンクへのリード又はライトコマンドとコラムアドレスをN回発行し(S61),更に右バンクへのリード又はライトコマンドとコラムアドレスをN回発行する(S62)。これらの工程S61,S62,S63を,ライン数lineが1ST_Y_SIZEを超えるまで繰り返す(S64)。
Y方向に2つのバンクを同時に活性化する場合は,メモリコントローラ内のコマンド/アドレス発生部942は,アクティブコマンドACT及びロウアドレスRAと共にマルチバンク情報SA’=10を発行する(S70)。そして,左上バンクへのリード又はライトコマンドとコラムアドレスをN回発行し(S71),これらの工程S71,S72を,ライン数lineが1ST_Y_SIZEを超えるまで繰り返す(S73)。同様に,下バンクへのリード又はライトコマンドとコラムアドレスの発行も同様に行う(S74,S75,S76)。
最後に,1つのバンクのみ活性化する場合は,メモリコントローラ内のコマンド/アドレス発生部942は,アクティブコマンドACT及びロウアドレスRAと共にマルチバンク情報SA’=00を発行する(S80)。そして,左上バンクへのリード又はライトコマンドとコラムアドレスをN回発行し(S81),これらの工程S81,S82を,ライン数lineが1ST_Y_SIZEを超えるまで繰り返す(S83)。
以上の通り,メモリコントローラ82は,アクセス元ブロックからアクセス要求REQと共にアクセス対象領域データX/Y_POS,X/Y_SIZEとを受信すると,レジスタ543内のフレーム領域のロウアドレスROW_BASE_ADRと水平方向画素数PICTURE_MAX_XSIZEとから,中間パラメータを生成し,同時に活性化すべきバンク数を判定し,判定結果に対応するマルチバンク情報SA’を発行して,メモリ装置内のバンクを同時に活性化させる。これにより,1回のアクティブコマンドの発行で,複数のバンクを活性化させることができ,メモリアクセスを効率的に行うことができる。
図98は,メモリコントローラとメモリ装置との間のタイミングチャート図である。これは,図96の4つのバンクに跨る矩形領域RIMGをアクセスする場合のタイミングチャート図である。まず,メモリコントローラは,拡張モードレジスタセットコマンドEMRSと共にロウアドレスステップ情報RS4を発行して,メモリ装置内のレジスタ内にロウアドレスステップ情報RSを設定する。次に,メモリコントローラは,アクティブコマンドACTと共に左上バンクアドレスBA1と先頭ロウアドレスRA4とマルチバンク情報SA’(1,1)を発行する。これに応答して,メモリ装置では,4つのバンクが同時に活性化される。
図98の例では,マルチバンク情報SA’をコラムアドレス端子CAから入力している。しかし,メモリ装置がロウアドレスRAとコラムアドレスCAとを共通のアドレス端子から入力するアドレスマルチプレクス構成を採用している場合は,図72に示したように,マルチバンク情報SA’は特殊端子SPから入力する必要がある。
さらに,メモリコントローラは,リードコマンドRDと共にバンクアドレスBAとコラムアドレスCAとを繰り返し発行する。図96(B)に示されるとおり,バンクアドレスBAとコラムアドレスCAは,(BA,CA)=(1,123),(0,120),(1,127),(0,124),(3,3),(2,0),(3,7),(2,4)となる。それら対応して,メモリの4バイト入出力端子BY0−3からは,図98中に示す画素座標(X_POS,Y_POS)の4バイトデータがそれぞれ出力され,メモリコントローラはそれらを受信する。このように,アクティブコマンドACTは1回発行されるだけである。
メモリコントローラは,マルチバンクアクセス機能を利用して1回のアクティブコマンドで複数のバンクを活性化させる場合において,バイトバウンダリ機能を利用して,4バイト領域の途中からの画像データをアクセスする場合は,図87に示したとおり,リード又はライトコマンドと共にバンクアドレスBA,コラムアドレスCAに加えてスタートバイト情報SBとメモリマップ情報BMRとを発行する。これにより,メモリコントローラは,リード又はライトコマンドの発行回数を減らすことができ,1回のアクセスでデータバス全てに有効なデータを受信または出力することができる。
なお,上記の実施の形態では,複数画素の画像データを二次元配置したデジタル画像データを記憶する画像メモリを例にして説明した。しかしながら,本発明は,画像データを記憶する画像メモリに限定されず,画像データ以外でも二次元配列されたデータを所定のマッピングルールに基づいて記憶するメモリ装置に適用可能である。記憶データが二次元配列されたデータであれば,その二次元配列データ内の任意の矩形領域をアクセスするときに複数のページ領域のデータにアクセスすることが求められることがある。その場合にも本発明は適用可能である。
《バックグランドリフレッシュ》
図6において,バックグランドリフレッシュの概略が説明された。すなわち,メモリコントローラが,メモリ装置に,水平アクセスなど特定のバンクへのアクセス動作を所定期間にわたり連続して実行させる場合,メモリコントローラは,アクセスされないバンクを指定してバックグランドリフレッシュコマンドを発行し,メモリ装置に指定したバンクでのリフレッシュ動作を実行させる。そして,メモリコントローラは,このリフレッシュ動作中に通常動作コマンドを発行することで,メモリ装置にリフレッシュ動作していないバンクでの通常アクセス動作を実行させる。
図99は,本実施の形態におけるバックグランドリフレッシュの概略説明図である。図99(A)はバックグランドリフレッシュ動作を示し,図99(B)はメモリ装置の構成を示す。メモリ装置86は,メモリセル領域990内に第1の領域991と第2の領域992とを有する。この第1,第2の領域991,992はバンク領域に対応し,それぞれ単独でアクティブ動作,リード,ライト動作,プリチャージ動作を行うことができる。さらに,メモリ装置86は,メモリコントローラ82から動作コード993,994を入力する入力回路995と,その動作コードに応答して,メモリセル領域内の第1,第2の領域991,992のいずれか一方にリフレッシュ動作を行わせ,他方に通常メモリ動作を行わせる制御回路996とを有する。動作コードは,例えばメモリコントローラが発行するコマンドである。あるいは,コマンドと特定の入力端子の信号値との組み合わせである。
図99(A)に示されるとおり,第1の動作コード993に応答して,制御回路996が,メモリ内の第1の領域991にリフレッシュ動作997を開始させる。この第1の動作コード993は,図6のバックグランドリフレッシュコマンドBRENに対応する。この第1の動作コード993と同期して,またはその前に,リフレッシュ対象領域(第1の領域)が設定され,さらに,1回のバックグランドリフレッシュコマンドに応答して実行すべきリフレッシュ回数(リフレッシュバースト長)と,1回のリフレッシュサイクルで同時にリフレッシュされるメモリのブロック数(リフレッシュブロック数)なども設定される。これらの設定に応じて,制御回路996は,リフレッシュ対象領域(第1の領域)にリフレッシュ動作997を実行させる。
バックグランドリフレッシュは,メモリ装置内の一部の領域(第1の領域)に限定して行われる。したがって,リフレッシュ対象領域以外の領域であれば,通常メモリ動作を並行して行うことができる。そこで,メモリコントローラからの第2の動作コードに応答して,制御回路996は,選択された第2の領域992で,第2の動作コード994に対応する通常メモリ動作998を実行させる。第2の動作コード994は,例えば,アクティブコマンドやリード・ライトコマンドなどである。つまり,制御回路996は,第1の領域991でのリフレッシュ動作997が完了する前でも,第2の動作コード994に応答して,第2の領域992に通常メモリ動作998を実行させる。逆に,制御回路996は,第2の領域992での通常メモリ動作998が完了する前でも,第1の動作コード993に応答して,第1の領域991にリフレッシュ動作997を実行させる。
このように,本実施の形態のバックグランドリフレッシュでは,第1の領域でのリフレッシュ動作と,第2の領域での通常メモリ動作とが,互いの動作の完了をまたずに実行可能である。これにより,メモリ装置内の全ての領域でリフレッシュ動作を実行することにより,そのリフレッシュ期間中に通常メモリ動作が中断されて,実効的なアクセス効率が低下することが抑制される。
図100は,本実施の形態におけるバックグランドリフレッシュを行うメモリシステムの概略説明図である。メモリシステム1000は,メモリコントローラ82とメモリ装置86とで構成される。メモリ装置86は図99と同じであり,メモリコントローラ82は,リフレッシュ制御回路1001と,マルチプレクサMUXと,出力回路1004とからなる。そして,リフレッシュ制御回路1001には,メモリの第1,第2の領域991,992のリフレッシュ制御をそれぞれ行う第1,第2の領域用制御回路1002,1003が設けられる。つまり,バックグランドリフレッシュ機能では,メモリ装置は,第1,第2の領域991,992の一方をリフレッシュ動作させる間に,他方を通常メモリ動作させる。そのためには,第1,第2の領域991,992をそれぞれ個別にリフレッシュ制御することが求められる。
メモリのリフレッシュの規格では,全てのメモリ領域をリフレッシュすべき期間と,それを何回のリフレッシュ動作で行うかが規定される。たとえば,64Mビットのメモリにおいて,「64ms/4096サイクル」と規定される。この場合は,64Mビットのセルの全てを64msの間にリフレッシュするために,15,6μs(=64ms÷4096)に1回の頻度でリフレッシュ動作を繰り返し,1回のリフレッシュ動作で16Kビット(=64M÷4096)ずつリフレッシュする。
これに対して,図100のように,メモリセル領域990が第1,第2の領域991,992からなる場合は,両領域の32Mビットのセルの全てを64msの間に2048回でリフレッシュすることが必要になる。したがって,第1,第2の領域をランダムに切り換えながらリフレッシュ動作を行うためには,第1,第2の領域のリフレッシュを別々に制御する制御回路1002,1003が必要になる。
図101は,バックグランドリフレッシュを制御するメモリコントローラの動作フローチャート図である。画像処理システムでは,画像処理装置がメモリコントローラにメモリ動作要求を出力し,メモリコントローラ内ではそのメモリ動作要求に対応するメモリ動作イベントが発生する。さらに,メモリコントローラ内では,リフレッシュ処理のイベントも発生する。よって,メモリ動作イベントとリフレッシュ処理イベントとを調停する必要がある。上記の例では,水平アクセスの時は,両方のイベントが同じ領域(バンク)内で発生しなければ,一方のイベントに対する処理が完了していなくても他方のイベントに対するコマンドを発行することができる。
例えば,リフレッシュイベントが発生すると,メモリコントローラは,第1の動作コードと第1の領域情報を生成し(1010),第2の領域の動作が完了していなくても(1011のNO),第1の領域が第2の領域と異なっていれば(1012のNo),第1の動作コードを発行する(1013)。リフレッシュイベント対象の第1の領域と動作中の第2の領域とが同じであれば(1012のYes),その第2の領域の動作が完了するまで待機する(1011のYes)。
同様に,メモリ動作イベントが発生すると,メモリコントローラは,第2の動作コードと第2の領域情報を生成し(1014),上記と同様に,第1の領域の動作が完了していなくても(1015のNO),第2の領域が第1の領域と異なっていれば(1016のNo),第2の動作コードを発行する(1017)。メモリ動作イベント対象の第2の領域と動作中の第1の領域とが同じであれば(1016のYes),その第1の領域の動作が完了するまで待機する(1015のYes)。
図102は,本実施の形態におけるバックグランドリフレッシュと水平アクセスとの関係を示す図である。メモリマップ12において,バンクBA0,BA1への水平アクセス1020を実行中に,バンクBA2,BA3でバックグランドリフレッシュが実行される。同様に,バンクBA2,BA3への水平アクセス1021を実行中に,バンクBA0,BA1でバックグランドリフレッシュが実行される。さらに,水平アクセス1022,1023においても同様である。このように,水平アクセスが連続して実行開始されるとき,一定期間アクセスが発生しないバンクがあらかじめ判明するので,そのアクセスのないバンクに対してリフレッシュ動作を行わせることができる。このように制御することで,水平アクセス中に,全バンクに対するリフレッシュ動作指令が発行されて,水平アクセスが中断することはない。よって,画像データなどの二次元配置されるデータを左上から右下までラスタスキャンしてアクセスする場合に,リフレッシュ動作によるデッドサイクルがなくなり高速なラスタスキャンを行うことができる。
図103は,本実施の形態におけるバックグランドリフレッシュと水平アクセス及び矩形アクセスとの関係を示す図である。前述の水平アクセス1020,1021の間に矩形アクセス1024が発生した例である。画像メモリとメモリコントローラと画像処理装置からなる画像処理システムは,画像メモリに対して水平アクセスと矩形アクセスとを混在して要求する。矩形アクセスでは,画像データの圧縮や伸長処理ごとに,メモリの任意のアドレスにアクセスされるので,どのバンクにアクセスが発生するかを予測することは困難である。一方,水平アクセスでは,一定期間は特定のバンクにしかアクセスが発生せず残りのバンクにはアクセスが発生しない。
そこで,水平アクセス1020では,バックグランドリフレッシュコマンドBREN(図中60)と共に,リフレッシュ対象のバンクを示すリフレッシュバンク情報SA(図中61)が入力される。この例では,水平アクセス1020がバンクBA0,BA1に対して発生するので,リフレッシュ対象バンクはBA2,BA3である。メモリ装置内の制御回路は,このバックグランドリフレッシュコマンドBRENに応答して,リフレッシュ対象バンクBA2,3に対してリフレッシュ動作を指令する。この水平アクセス1020では,アクティブコマンドACTと共にバンクアドレスBA=0,ロウアドレスRA=0が入力され,BA0,RA0のページ領域が活性化され,リードコマンドRDと共にバンクアドレスBA=0,コラムアドレスCA=0が入力され,データが読み出される。同様に,アクティブコマンドACTと共にバンクアドレスBA=1,ロウアドレスRA=0が入力され,BA1,RA0のページ領域が活性化され,リードコマンドRDと共にバンクアドレスBA=1,コラムアドレスCA=0が入力され,データが読み出される。水平アクセスでは,これらの動作が一定時間繰り返される。その間,バンクBA2,3ではリフレッシュ動作が繰り返される。
水平アクセス1021でも,上記と同様の動作が行われる。つまり,バックグランドリフレッシュコマンドBREN(図中65)と共に,リフレッシュバンク情報SA(図中66)としてBA0,1が入力され,バンクBA0,1でリフレッシュ動作が行われる。このリフレッシュ動作に並行して,アクティブコマンドとリードコマンドとが繰り返し入力されて,バンクBA2,3に対する水平アクセス動作が行われる。矩形アクセス1024中は,バックグランドリフレッシュ動作は行われない。
上記のバックグランドリフレッシュコマンドBRENが前述の第1のコードに対応する。また,アクティブコマンドACTとリードコマンドRD,またはライトコマンドWT(図示せず)が,前述の第2のコードに対応する。
図104は,本実施の形態におけるバックグランドリフレッシュの回数とブロック数を説明する図である。バックグランドリフレッシュは,水平アクセス時など,あらかじめ一定期間に特定のバンクにしかアクセスが発生しない時に,アクセスが発生しないバンクに対して実行される。本実施の形態では,このリフレッシュ対象バンクを示すリフレッシュバンク情報SAに加えて,1回のバックグランドリフレッシュコマンドBRENに応答して実行されるリフレッシュ回数を示すリフレッシュバースト長RBLと,1回のリフレッシュ動作で同時にリフレッシュされるブロック数,正確にはワード線数,を示すリフレッシュブロック数RBCとが,メモリコントローラからメモリ装置に供給される。
すなわち,水平アクセスではアクセス対象画像のサイズに応じて一定期間一部のバンクへのアクセスが繰り返される。ただし,水平アクセスの期間は可変であり,また水平アクセスの発生もランダムである。よって,水平アクセス期間中に,リフレッシュ対象バンクで,所望のアドレス数に対してリフレッシュ動作を実行することが求められる。例えば,水平アクセス期間Tの間にアドレスNに対してリフレッシュ動作が求められる場合,1回のリフレッシュ動作に必要なサイクルタイムτとすると,T÷τ≧Nが満たされるなら,1つのブロック(1本のワード線)に対してN回リフレッシュ動作を実行すればよい。しかし,T÷τ≧Nが満たされないなら,1回のリフレッシュ動作で同時に複数ブロック(複数のワード線)をリフレッシュ動作させることで,Nを実効的に小さくする必要がある。この同時にリフレッシュ動作するブロック数が,リフレッシュブロック数RBCである。
さらに,アクセス対象データサイズが所定サイズより大きいと,水平アクセス期間はある程度長い期間に及ぶ。そのような場合は,1回のバックグランドリフレッシュコマンドBRENに対して複数回のリフレッシュ動作が繰り返されるようにすれば,コマンド発行数を減らすことができる。この場合,水平アクセス期間Tにおいて実行可能なリフレッシュ回数はT÷τであり,これがリフレッシュバースト長RBLである。水平アクセスが開始されるときに,このリフレッシュバースト長RBLを指定することで,メモリ装置は水平アクセス期間Tが終了した時点でリフレッシュサイクルは終了しているので,その直後からアクティブコマンドを発行して通常メモリ動作の動作サイクルに入ることができる。
図104に戻り,図中,バンクBank0が4ブロックBlock−0〜3で構成されている例について,リフレッシュバースト長RBLとリフレッシュブロック数RBCの3つの組み合わせ例が示されている。各ブロックBlockは,ワード線WLとビット線BLと,ビット線BLに接続されるセンスアンプ群S/Aとを有し,4つのブロックBlock−0〜3は,それぞれセンスアンプ群S/Aを有し,同時にリフレッシュ動作可能である。なお,リフレッシュ動作は,アクティブ動作とプリチャージ動作とで構成される。また,通常動作は,アクティブ動作,リードまたはライト動作,プリチャージ動作とで構成される。
図104(A)は,RBL=2,RBC=1の例である。バックグランドリフレッシュコマンドBRENに応答して,ブロックBlock−0のワード線WL0とWL1とで連続してリフレッシュ動作が行われ,次のコマンドBRENに応答して,ブロックBlock−1のワード線WL0とWL1とで連続してリフレッシュ動作が行われている。この場合,RBC=1であるので,1ブロックでのみリフレッシュ動作が行われ,リフレッシュ動作に伴う消費電流を小さくすることができる。
図104(B)は,RBL=1,RBC=4の例である。バックグランドリフレッシュコマンドBRENに応答して,4つのブロックBlock−0〜3のワード線WL0で同時にリフレッシュ動作が行われる。1回のリフレッシュサイクルしか実行されないが,4ブロックで同時にリフレッシュされるので,4アドレス分のリフレッシュが完了する。ただし,瞬間的な消費電流は大きい。
最後に,図104(C)は,RBL=2,RBC=2の例である。バックグランドリフレッシュコマンドBRENに応答して,2つのブロックBlock−0,1のワード線WL0とワード線WL1とで連続してリフレッシュ動作が行われる。これにより,リフレッシュされるロウアドレス数は4であるが,2つのメモリブロックで同時にリフレッシュ動作するので,瞬間的な消費電流は図104(B)よりは抑えられる。
上記のように,本実施の形態のバックグランドリフレッシュでは,リフレッシュ対象バンクを示すリフレッシュバンク情報SAと,リフレッシュバースト長RBLと,リフレッシュブロック数RBCとを,コマンドBRENと共にまたはレジスタセットコマンドEMRSと共に入力して,ランダムな水平アクセスの発生と期間とに柔軟に対応することができる。
ところで,メモリコントローラは,メモリ装置にリフレッシュバースト長RBLの設定により複数回のバックグランドリフレッシュ動作を実行させることができるが,一旦リフレッシュ動作が始まるとそのリフレッシュバースト長RBL回数のリフレッシュ動作を変更できないと不便である。そこで,本実施の形態では,後述するとおり,リフレッシュバースト長RBLを,更に加算して長くしたり,新たなバースト長RBLに再設定したり,リフレッシュ動作を停止させたりすることができる。バースト長RBLの加算機能により,ランダムな水平アクセスに柔軟に対応するために,バックグランドリフレッシュコマンドを事前に発行しておくことが可能になる。バースト長の再設定機能は,新たな水平アクセスが発生した場合に利用できる。また,リフレッシュ動作の停止コマンドは,一旦設定したリフレッシュバースト長RBLが長すぎた場合に有効である。
さらに,本実施の形態では,残りのアドレス全てに対してリフレッシュ動作を実行させるリフレッシュオールコマンドの利用も可能である。これにより,有効なデータが格納されていないメモリ領域に強制的にリフレッシュ動作を行わせて,リフレッシュカウンタをリセットさせることができる。これについても後で詳述する。
図105は,本実施の形態におけるバックグランドリフレッシュの動作タイミングチャート図である。図105(A)は,バンクBA2,3への水平アクセス1020の時に,バンクBA0,1にリフレッシュ動作させる例であり,メモリ装置に,バックグランドリフレッシュコマンドBREN(図中60)と同時に,リフレッシュバースト長RBLとリフレッシュブロック数RBCとが発行されている(図中1052)。その後は,水平アクセスに対応したアクティブコマンドACTとリードコマンドRDが繰り返されている。
一方,図105(B)は,水平アクセス1020が開始される前に,レジスタアクセス1050で,拡張モードレジスタセットコマンドEMRS(図中051)と共に,リフレッシュバースト長RBLとリフレッシュブロック数RBCとが発行されている(図中1053)。これにより,メモリ装置は,内部のモードレジスタにRBL,RBCを設定する。その後,水平アクセス1020では,バックグランドリフレッシュコマンドBREN(図中1054)と同時に,リフレッシュバンク情報SAが供給され,それに応答して,メモリ装置は,登録済みのRBL,RBCに対応したリフレッシュ動作を行う。その後は,水平アクセスに対応したアクティブコマンドACTとリードコマンドRDが繰り返し発行されている。
以上の通り,リフレッシュバースト長RBLとリフレッシュブロック数RBCとは,コマンドBRENと共に毎回設定されてもよいし,あらかじめモードレジスタに設定してもよい。モードレジスタに設定すれば,コマンドBRENと共に毎回設定する必要はない。
図106は,本実施の形態におけるリフレッシュバースト長を説明する図である。図106(A)は,オートリフレッシュコマンドAREFに対して1回のリフレッシュが行われる場合のタイミングチャートである。一方,図106(B)は本実施の形態に対応し,1回のバックグランドリフレッシュコマンドBRENに対して複数回(RBL)のリフレッシュが行われる場合のタイミングチャートである。いずれも,バンクBA2,3への水平アクセス中に,バンクBA0,1にリフレッシュが行われる例である。
図106(A)では,オートリフレッシュコマンドAREFと共に,バンクアドレス端子BAにリフレッシュバンク情報(0,1)が供給され,メモリ装置内部でリフレッシュ制御信号refzがHレベルになり,リフレッシュ動作REFが行われる。コマンド間時間tRRDの後に,アクティブコマンドACTがBA2,BA3に対して発行され,それらに対応してリードコマンドRDがBA2,BA3に対して発行され,プリチャージコマンドPREがBA2,BA3に対して発行される。その後,クロック番号10のタイミングで再度オートリフレッシュコマンドAREFが発行され,バンクBA0,1に対してリフレッシュが実行される。このように,1回のオートリフレッシュコマンドAREFに対してリフレッシュ動作REFは1回しか行われないので,オートリフレッシュコマンドAREFを何回も発行する必要がある。
それに対して,図106(B)では,バックグランドリフレッシュRBENに応答して,あらかじめ設定されているリフレッシュバースト長RBLに対応する回数,リフレッシュ動作REFが繰り返される。つまり,メモリ内の制御回路は,リフレッシュ制御信号refzを活性化してリフレッシュ動作を実行し,それが終了すると,リフレッシュインターバル信号refintvalxに応答して,更にリフレッシュ制御信号refzを活性化してリフレッシュ動作を実行する。このようにしてリフレッシュ動作がリフレッシュバースト長RBLの回数繰り返される。よって,何度もリフレッシュコマンドを発行する必要はない。具体的には,クロック番号10ではリフレッシュコマンドは発行されていない。これにより,図中1060の時間だけ早く2回目のリフレッシュ動作が完了しているので,実質的にリフレッシュ動作のサイクルは短くなる。よって,リフレッシュバースト長RBLを設定して,複数回のリフレッシュを自動的に実行するようにすることで,メモリコントローラによるコマンド発行の効率を高めることができる。
図107は,本実施の形態におけるリフレッシュバースト長を説明する図である。図107(A)がリフレッシュバースト長RBLを指定してバックグランドリフレッシュを行う場合,図107(B)がRBLを指定せずにバックグランドリフレッシュを行う場合のタイミングチャート図である。ただし,いずれもコマンドBRENに応答してリフレッシュ動作を複数回繰り返す例である。
図107(A)の場合は,メモリ装置は,バックグランドリフレッシュコマンドBREN(図中1070)に応答して,あらかじめ設定されたリフレッシュバースト長RBLだけ内部でリフレッシュ動作REFを繰り返す。よって,クロック番号20では内部のリフレッシュ動作が完了しバンクBA0,1に対してプリチャージ動作が終了している。よって,メモリコントローラは,クロック番号21でバンクBA0に対するアクティブコマンドACT(図中1071)を発行して,通常アクセスを行うことができる。
これに対して図107(B)の場合は,リフレッシュ回数が指定されていないので,メモリ装置は,コマンドBREN(図中1072)に応答して,内部でリフレッシュ動作REFを繰り返す。メモリコントローラは,繰り返されるリフレッシュ動作を停止させるために,クロック番号21でバンクBA0に対してプリチャージコマンドPRE(図中1073)を発行する。しかし,クロック番号20で新たな内部のリフレッシュ動作REFが開始しているため,クロック番号21でのプリチャージコマンドPREに対してそのリフレッシュ動作を停止することができない。よって,メモリコントローラは,既に開始済みのリフレッシュ動作が完了するまでアクティブコマンドACT(図中1074)を発行することができず,結局プリチャージコマンドPREからリフレッシュ動作に要する時間tREFC(約数10ns)経過した後になってようやくアクティブコマンドACTを発行できるようになる。つまり,あらかじめリフレッシュ回数が指定されていないと,メモリコントローラは,プリチャージコマンドによりリフレッシュ動作を停止させる必要があり,且つ,リフレッシュ動作停止のためのプリチャージコマンドでは即座にリフレッシュ動作を停止できず,次に発行したいアクティブコマンドの発行が遅れてしまう。
前述の特許文献6の米国特許公開US2005/0265104A1公報に記載された発明は,上記の図107(B)に対応する。これに対して,本実施の形態は図107(A)に対応する。
以上が,バックグランドリフレッシュ機能の概略である。以下,この機能を実現するためのメモリ装置の構成について説明する。
[バックグランドリフレッシュ機能を有するメモリ装置]
図108は,バックグランドリフレッシュ機能を有するメモリ装置の全体構成図である。図中,入力端子群93には,クロックCLK,コマンド信号/CS,/RAS,/CAS,/WE,2ビットのバンクアドレスBA<1:0>,14ビットのアドレスA<13:0>の端子が示され,それぞれが入力バッファ94に入力され,クロックCLKに同期してラッチ回路720にラッチされる。コマンドデコーダ1080は,図9に示したコマンド制御部95内に設けられ,コマンド信号/CS,/RAS,/CAS,/WEをデコードして,コマンドEMRS,ACT,BREN,PREに対応する内部制御信号として,モードレジスタセットパルス信号mrspz,アクティブパルス信号actpz,リフレッシュパルス信号refpz,プリチャージパルス信号prepzを出力する。バンクアドレスBA<1:0>は,ラッチされて内部バンクアドレスbaz<1:0>となり,それに基づいて通常バンクデコーダ1081がバンク選択信号bnkz<0:3>を生成する。また,リフレッシュバンクデコーダ1082は,バンクアドレスbaz<1:0>と,アドレス端子から入力される信号と,モードレジスタ96に設定されている設定値modez*とに基づいて,リフレッシュバンク選択信号ref_bnkz<0:3>を生成する。モードレジスタ96は,モードレジスタセットパルス信号mrspzに応答して,バンクアドレスbaz<1:0>とアドレスaz<13:0>から入力される設定値を設定する。
メモリ装置86は,上記の制御回路に加えて,4つのバンク92を有する。各バンクは,メモリセルアレイとデコーダとセンスアンプなどを含むコア1086と,それを制御するコア制御回路1085と,各バンクのリフレッシュアドレス(ロウアドレス)REF_RAを生成するリフレッシュアドレスカウンタ1083と,外部から供給されるアドレスaz<13:0>またはリフレッシュアドレスREF_RAのいずれかをラッチするアドレスラッチ回路1084を有する。図中,バンクBank0についてのみ詳細な構成を示しているが,他のバンクBank1,2,3も同じ構成である。
各バンク内のコア制御回路1085は,アクティブコマンドACTに応答して生成されるアクティブパルス信号actpzに応答して,バンク選択信号bnkz<0:3>が選択状態であれば,内部のコアを活性化する。この場合,アドレスラッチ回路1084は外部から供給されるアドレスaz<13:0>をラッチし,コア1086内のデコーダに供給する。コア制御回路1085は,バックグランドリフレッシュコマンドBRENに応答して生成されるリフレッシュパルス信号refpzに応答して,リフレッシュバンク選択信号ref_bnkz<0:3>が選択状態であれば,内部のコアを活性化してリフレッシュ動作させる。この場合,アドレスラッチ回路1084はリフレッシュアドレスカウンタ1083のリフレッシュアドレスREF_RAをラッチし,コア内のデコーダに供給する。
[メモリ装置のバンク構成例]
図109は,バックグランドリフレッシュ機能を有するメモリ装置のバンク構成図である。図109は,図108の4つのバンクの構成を示している。4つのバンクBank0−3全てが,リフレッシュアドレスカウンタ1083と,アドレスラッチ回路1084と,コア1086と,コア制御回路1085とを有する。そして,4つのバンクBank0−3には,それぞれバンク選択信号bnkz<0:3>とリフレッシュバンク選択信号ref_bnkz<0:3>とが入力され,それらが選択状態のときに,コア制御回路1085がアクティブパルス信号actpzに応答してコアをアクティブ状態にし,リフレッシュパルス信号refpzに応答してコアをアクティブ状態にする。この例では,各バンクにリフレッシュアドレスカウンタ1083を有するので,バンク毎にリフレッシュ制御を独立して行うことができる。よって,他のバンクが通常メモリ動作中に,残りのバンクのうち1つ,2つ又は3つのバンクに対してリフレッシュ制御を行うことができる。各バンクで独立してリフレッシュ制御を行うことは図100で説明したとおりである。
図110は,バックグランドリフレッシュ機能を有するメモリ装置の他のバンク構成図である。この例では,各バンクBank0−3は,コア1086と,アドレスラッチ回路1084と,コア制御回路1085とを有する。そして,リフレッシュアドレスカウンタ1100が2つのバンクBank0,1に共通に設けられ,リフレッシュアドレスREF_RAを両バンクBank0,1に供給する。また,リフレッシュアドレスカウンタ1101が2つのバンクBank2,3に共通に設けられ,リフレッシュアドレスREF_RAを両バンクBank2,3に供給する。この例では,2バンク毎に独立してリフレッシュ制御を行うことができる。つまり,バンクBank0,1が通常メモリ動作中に,バンクBank2,3でリフレッシュ動作を並行して行うことができ,その逆も可能である。むろん4バンクを同時にリフレッシュ動作させることもできる。
図111は,メモリ装置の他のバンク構成図である。この例では,バンク内にリフレッシュアドレスカウンタを設けずに,アドレスデコーダ1111とワードドライバ1113との間に,リフレッシュすべきワード線を示すポインタ1112が設けられている。通常メモリ動作では,各バンクに共通に設けられたアドレスラッチ回路1110が,アクティブパルス信号actpzに応答して活性化されて,外部のアドレスaz<13:0>をラッチし,各バンク内のアドレスデコーダ1111は,バンク選択信号bnkz<0:3>が選択状態のときに活性化されてアドレスをデコードする。デコーダにより選択されたワードドライバ1113がワード線を駆動し,メモリセル領域1114をアクティブ状態にする。そして,アンプ制御回路1115が所定のタイミングでセンスアンプ1116を活性化する。
一方,バックグランドリフレッシュ時には,リフレッシュバンク選択信号ref_bnkz<0:3>が選択状態のときに,リフレッシュパルス信号refpzによりポインタ1112が活性化され,選択状態にあるポインタに対応するワードドライバ1113がワード線を駆動して,メモリセル領域1114とセンスアンプ1116とでリフレッシュ動作をさせる。リフレッシュ動作が終了すると,ポインタ1112は次のポインタを選択状態に変更する。このように,リフレッシュ動作が完了する毎に,ポインタ群1112が選択位置を後続に移動させて,メモリセル領域内のワード線を順番に駆動することができる。
図111の例では,4つのバンク全てにリフレッシュ用のポインタ群1112が設けられているので,4つのバンクは独立してリフレッシュ制御を行うことができる。
図112は,本実施の形態におけるバックグランドリフレッシュ動作を説明する図である。図112(A)は従来例に対応し,オートリフレッシュコマンドAREFを受信すると,メモリ装置は内部の全てのバンクでリフレッシュ動作を行う。この図ではリフレッシュ回数が1の例であり,リフレッシュサイクル中tREFCは,通常メモリ動作を実行することができず,クロック番号9からアクティブコマンドACTを受信して通常メモリ動作を再開する。
これに対して,図112(B)は本実施の形態に対応し,バックグランドリフレッシュコマンドBRENに応答して,メモリ装置はバンクアドレスBAで指定されたバンクBA0,1に対してリフレッシュ動作を開始する。それに並行して,メモリ装置はバンクBA2,BA3に対するアクティブコマンドACT,リードコマンドRDを受信してリード動作を行う。リードコマンドRDの後にプリチャージコマンドPREを受信しバンクBA2,BA3にプリチャージ動作させる。
なお,図112(B)の例では,バックグランドリフレッシュコマンドBRENと同時に,バンクアドレス端子BAからリフレッシュバンク情報「0,1」を,アドレス端子Addからリフレッシュバースト長「8」をそれぞれ入力している。ただし,図示したとおり,特別に設けた端子SAからリフレッシュバンク情報「0,1」を,端子RBL,RBCからリフレッシュバースト長「8」とリフレッシュブロック数「1」とを入力するようにしても良い。
図112に示されるとおり,本実施の形態のバックグランドリフレッシュ機能によれば,通常メモリ動作に並列してリフレッシュ動作が行われるので,リフレッシュ動作により通常メモリ動作を中断させることはない。
[リフレッシュバンクデコーダ,コア制御回路,アドレスラッチ回路]
次に,図108〜111で示したリフレッシュバンクデコーダ,コア制御回路,アドレスラッチ回路について具体例を説明する。なお,前提としてバンクアドレスBA<1:0>と選択されるバンクとの関係を以下に示す。
BA<1>=0,BA<0>=0で選択されるバンクはBank0
BA<1>=0,BA<0>=1で選択されるバンクはBank1
BA<1>=1,BA<0>=0で選択されるバンクはBank2
BA<1>=1,BA<0>=1で選択されるバンクはBank3
図113は,第1,第2のリフレッシュバンクデコーダの回路を示す図である。図113(A)の第1の例のリフレッシュバンクデコーダ1082(1)は,メモリ装置がリフレッシュ動作を2バンク毎に行う場合に適用され,バックグランドリフレッシュコマンドBREN入力時のバンクアドレス端子BA<1>の論理により,バンクBank0,1を選択するか,バンクBank2,3を選択するかを制御する。よって,バンクアドレス端子BA<1>の論理は有効(V:Valid),バンクアドレス端子BA<0>の論理は無効(Don't care)である。具体的には,バンクアドレス端子BA<1>=Hなら,リフレッシュバンク選択信号ref_bnkz<2,3>=HとなりバンクBank2,3が選択され,バンクアドレス端子BA<1>=Lなら,リフレッシュバンク選択信号ref_bnkz<0,1>=HとなりバンクBank0,1が選択される。
図113(B)の第2の例のリフレッシュバンクデコーダ1082(2)は,メモリ装置がリフレッシュ動作を2バンク毎に行う場合に適用され,バックグランドリフレッシュコマンドBREN入力時のバンクアドレス端子BA<0>の論理により,バンクBank0,2を選択するか,バンクBank1,3を選択するかを制御する。よって,バンクアドレス端子BA<1>の論理は無効(Don't care)である。具体的な動作は,第1の例と同様である。
水平アクセス時に行うバックグランドリフレッシュは,水平方向の1ラインを構成するバンクの組み合わせがBank0,1(又はBank2,3)の場合は,第1の例が好ましい。一方,水平方向の1ラインを構成するバンクの組み合わせがBank0,2(又はBank1,3)の場合は,第2の例が好ましい。水平方向のバンクの組み合わせは,メモリを使用するメモリシステムのメモリマッピングに依存する。したがって,メモリマッピングに応じて,メモリ装置は,第1,第2の例のいずれかのリフレッシュバンクデコーダを有する必要がある。
図114は,第3のリフレッシュバンクデコーダの回路を示す図である。第3のリフレッシュバンクデコーダ1082(3)は,第1,第2の例を合体した例であり,モードレジスタに設定された設定値modezに応じて,バンクアドレスbaz<0>側のデコード信号か,baz<1>側のデコード信号かのいずれかを選択する4つのセレクタSELを有する。図中の論理値表に示されるとおり,modez=1なら,バンクアドレスbaz<1>が有効(V:Valid)になり,baz<1>側のデコード信号が選択されてリフレッシュバンク選択信号ref_bnkz<0,1>,ref_bnkz<2,3>の組み合わせで選択される。一方,modez=0なら,バンクアドレスbaz<0>が有効(V:Valid)になり,baz<0>側のデコード信号が選択されてリフレッシュバンク選択信号ref_bnkz<0,2>,ref_bnkz<1,3>の組み合わせで選択される。よって,メモリマッピングに応じて,モードレジスタに設定値modezを設定しておけば,いずれのメモリマッピングにも対応可能である。
図115は,第4のリフレッシュバンクデコーダの回路を示す図である。第4のリフレッシュバンクデコーダ1082(4)は,モードレジスタに設定した2ビットの設定値modez<1:0>により,バンク選択モードが切り替わる。この4種類のバンク選択モードは,図中の表に示されるとおり,以下のようになる。
(1)modez<1:0>=1,1の場合は,バンクアドレス端子BA<1>およびBA<0>で指定される1つのバンクを選択する。つまり,4つのバンクから1つのバンクのみを選択する。
(2)modez<1:0>=1,0の場合は,バンクアドレス端子BA<1>で選択されるバンクBank0,1またはBank2,3のいずれかの組の2バンクを選択する。
(3)modez<1:0>=0,1の場合は,バンクアドレス端子BA<0>で選択されるバンクBank0,2またはBank1,3のいずれかの組の2バンクを選択する。
(4)modez<1:0>=0,0の場合は,リフレッシュバンク選択信号ref_bnkz<0:3>は全て選択状態になる。よって,リフレッシュコマンドBRENが入力されると4つのバンクでリフレッシュが実行される。
リフレッシュバンクデコーダ1082(4)では,modez<0>=1の場合にバンクアドレスbaz<0>が入力される2つのNANDゲートが活性化され,プリデコード信号ba0x,zが1または0になり,リフレッシュバンク選択信号ref_bnkz<0,2>,<1,3>の組み合わせで選択される。逆に,modez<1>=1の場合にバンクアドレスbaz<1>が入力される2つのNANDゲートが活性化され,プリデコード信号ba1x,zが1または0になり,リフレッシュバンク選択信号ref_bnkz<0,1>,<2,3>の組み合わせで選択される。
この例の場合は,水平方向の1ラインを構成するバンクの組み合わせがBank0,1(Bank2,3)のシステムでは,モードレジスタ設定値をmodez<1:0>=1,0に設定すればよく,また水平方向の1ラインを構成するバンクの組み合わせがBank0,2(Bank1,3)のシステムではモードレジスタ設定値をmodez<1:0>=0,1に設定すればよい。また,リフレッシュを1バンク単位で行いたいシステムではmodez<1:0>=1,1を設定し,従来通りリフレッシュを全バンク同時に行うシステムではmodez<1:0>=0,0に設定すればよい。
図116は,第5のリフレッシュバンクデコーダの回路を示す図である。第5のリフレッシュバンクデコーダ1082(5)は,コマンドBRENと同時に供給される2ビットのアドレス端子A<1:0>により,バンク選択モード(1バンク,2バンク,2バンク,4バンクのいずれか)を切り替えることができる。つまり,図115の第4の例のモードレジスタ設定値modez<1:0>の代わりに,2ビットのアドレス端子A<1:0>から入力される設定値を利用する例である。バンク選択モードの切り替えは図115と同じである。第5の例によれば,コマンドBRENを発行するたびに,リフレッシュバンク選択の組み合わせを変更することができる。よって,矩形モードのときにもリフレッシュ対象バンクの選択の組み合わせを変更してバックグランドでリフレッシュさせることができる。
図117は,第6のリフレッシュバンクデコーダの回路を示す図である。第6のリフレッシュバンクデコーダ1082(6)は,同時にリフレッシュを行う2つのバンクの組み合わせを,リフレッシュコマンドBREN入力時のバンクアドレス端子BA<1>,BA<0>によって指定することができる。2つのバンクの組み合わせを切り替え可能にする点では,図114の第3の例と同じであるが,第5の例では組み合わせの切り替えを,モードレジスタ設定値ではなく,コマンドと同時に入力するバンクアドレス端子BA<1>,BA<0>の論理により行うことができる。
リフレッシュバンクデコーダ1082(6)は,通常バンクデコーダがバンクアドレスBA<1:0>から生成したバンク選択信号bnkz<3:0>を入力し,リフレッシュバンク選択信号ref_bnkz<0:3>を生成する。
まず,メモリマップ1170のように,水平方向の1ラインを構成するバンクの組み合わせがBank0,1(又はBank2,3)のシステムでは,
BA<1>=0,BA<0>=0 であればバンク選択信号bnkz<0>が選択(bankz<0>=High、その他はLow)されバンクBank0とBank1を選択し,
BA<1>=1,BA<0>=1 であればバンク選択信号bnkz<3>が選択(bankz<3>=High、その他はLow)されバンクBank2とBank3を選択する。
一方,メモリマップ1171のように,水平方向の1ラインを構成するバンクの組み合わせがBank0,2(又はBank1,3)のシステムでは,
BA<1>=0,BA<0>=1であればバンク選択信号bnkz<1>が選択されバンクBank1とBank3を選択し,
BA<1>=1,BA<0>=0であればバンク選択信号bnkz<2>が選択されバンクBank0とBank2を選択する。
図118は,第7のリフレッシュバンクデコーダの回路を示す図である。第7のリフレッシュバンクデコーダ1082(7)は,コマンドBRENと同時に入力される4ビットのアドレス端子A<3:0>に応じて,1つのリフレッシュ対象バンクを選択する。例えば,バンクBank0にはアドレス端子A<0>を,バンクBank1にはアドレス端子A<1>を,バンクBank2にはアドレス端子A<2>を,バンクBank3にはアドレスA<3>端子をそれぞれ対応させる。そして,バックグランドリフレッシュコマンド入力時に
(1)A<3>=0,A<2>=0,A<1>=1,A<0>=1ならば, Bank0とBank1を選択
(2)A<3>=1,A<2>=1,A<1>=0,A<0>=0ならば,Bank2とBank3を選択
(3)A<3>=0,A<2>=1,A<1>=0,A<0>=1ならば,Bank0とBank2を選択
(4)A<3>=1,A<2>=0,A<1>=1,A<0>=0ならば,Bank1とBank3を選択
(5)A<3>=1,A<2>=1,A<1>=1,A<0>=1ならば,全てのBank0,1,2,3を選択する。
(6)A<3:0>のいずれかが1ならば,対応する1つのバンクを選択する。
この場合,バンクアドレス端子BA<1:0>や残りのアドレス端子A<13:4>は無視される。
図119は,コア制御回路の構成図である。このコア制御回路は,図108に示すとおり,各バンクに設けられている。また,図示したコア制御回路は,リフレッシュコマンドに応答して1回のみリフレッシュ動作を行う例である。本実施の形態のリフレッシュバースト長RBLの回数のリフレッシュ動作を制御する制御回路は後で説明する。
まず,このコア制御回路1085は,アクティブパルス信号actpz,リフレッシュパルス信号refpz,プリチャージパルス信号prepzに応答して,各種のタイミング信号を生成するタイミングコントロール回路1190と,リフレッシュパルス信号refpzに応答してリフレッシュを制御するリフレッシュコントロール回路1191とを有する。2つのNANDゲートからなるRSフリップフロップFF1はアクティブ状態をラッチし,RSフリップフロップFF3はリフレッシュ状態をラッチする。RSフリップフロップFF1にはセット入力1192と,リセット入力1193とが入力される。また,RSフリップフロップFF3にはセット入力1194とリセット入力1195が入力される。
図中,アクティブ状態信号raszは,Hレベルでアクティブ状態,Lレベルでプリチャージ状態を示す。イコライズ信号eqlonzは,Hレベルでメモリセルアレイのビット線対をイコライズし,Lレベルでイコライズを解除する。ワード線活性化信号wlonzは,Hレベルでワード線を活性化し,Lレベルならワード線を非活性とする。センスアンプ活性化信号saonzは,Hレベルでセンスアンプを活性化し,Lレベルで非活性化する。アクティブパルス信号actpzはアクティブコマンドACTに応答してコマンドデコーダによりHレベルにされる。リフレッシュパルス信号refpzはリフレッシュコマンドが入力されたときにHレベルになる。プリチャージパルス信号prepzは,プリチャージコマンドPREが入力されたときにHレベルになる。バンク選択信号bnkz<#>は,通常バンクデコーダの出力信号で,Bnkz<#>がHレベルになることでアクティブまたはプリチャージ動作を実行するバンクを指定する。#はバンクの番号である。リフレッシュバンク選択信号ref_bnkz<#>は,リフレッシュバンクデコーダの出力信号であり,ref_bnkz<#>がHレベルになることでリフレッシュ動作を実行するバンクを指定する。
図120は,コア制御回路の動作を示すタイミングチャート図である。クロック番号0でオートリフレッシュコマンドAREFに応答して,図示しないコマンドデコーダがリフレッシュパルス信号refpzを生成し,それによりref_bnkzで指定されたバンクのRSフリップフロップFF1,FF3が共にセットされる。その結果,アクティブ状態信号raszがHレベルになり,イコライズ信号eqlonzがLレベルになり,遅延回路DELAY-2の遅延時間後にワード線活性化信号wlonzがHレベルになる。これに応答して,ロウアドレスで選択されたワード線が駆動される。次に,遅延回路DELAY-3の遅延時間後にセンスアンプ活性化信号saonzがHレベルになり,センスアンプが活性化されて再書き込みが行われる。
一方,RSフリップフロップFF3のセット状態により,リフレッシュアクティブ状態信号ref_raszもHレベルになっている。そして,センスアンプ活性化信号saonzの立ち上がりエッジから,遅延回路DELAY-4の遅延時間後にANDゲート1196により,リフレッシュプリチャージパルスref_prepzがHレベルになり,RSフリップフロップFF3,FF1が共にリセットされる。RSフリップフロップFF1のリセットにより,アクティブ状態信号raszがLレベルになりワード線活性化信号wlonzもLレベルになり,ワード線がLレベルになる。そして,遅延時間DELAY-1後にエコライズ信号eqlonzがHレベルになり,メモリセルのビット線対がイコライズされて,メモリセルアレイのプリチャージが完了する。その結果,1サイクルのプリチャージ動作が終了する。
なお,通常動作では,クロック番号9で受信したアクティブコマンドACTに対応するアクティブパルス信号actpzのHレベルに応答して,RSフリップフロップFF1がセットされ,イコライズ信号eqlonzがLレベルになり,信号rasz,wlonz,saonzが順次Hレベルになり,メモリセルアレイが活性化される。そして,プリチャージコマンドPREに対応するプリチャージパルスprepzのHレベルに応答して,RSフリップフロップFF1がリセットされ,信号rasz,wlonz,saonzが順次Lレベルになり,イコライズ信号eplonzがHレベルになり,メモリセルアレイがプリチャージされる。以上が通常動作の1サイクルである。通常動作時は,リフレッシュコントロール回路1191は動作しない。
以上のように,リフレッシュ動作はアクティブ動作とプリチャージ動作とで構成され,通常動作はアクティブ動作とリード又はライト動作とプリチャージ動作とで構成される。なお,図120では,リードコマンドまたはライトコマンドは省略されている。後述するリフレッシュバースト動作では,上記の1サイクルのプリチャージ動作がリフレッシュバースト長の回数繰り返される。
図121は,アドレスラッチ回路の構成と動作を示す図である。アドレスラッチ回路1084は,図108に示されるとおり各バンクに設けられ,メモリコアにロウアドレスRA<13:0>を出力する。よって,図示されるアドレスラッチ回路1084が13個並列に設けられる。アドレスラッチ回路は,アクティブパルス信号actpzに応答して,バンク選択信号bnkz<#>がHレベルであれば,スイッチ1201が導通して外部からのアドレス信号az<13:0>をラッチ回路1200でラッチする。一方,アドレスラッチ回路は,リフレッシュパルス信号refpzに応答して,リフレッシュバンク選択信号ref_bnkz<#>がHレベルであれば,スイッチ1202が導通してリフレッシュアドレスカウンタ1083のリフレッシュアドレスREF_RA<13:0>をラッチ回路1200でラッチする。
また,図121のタイミングチャートに示されるとおり,リフレッシュパルス信号refpzに応答して,リフレッシュロウアドレスストローブパルス信号Ref_ra_strbpzが発生し,それに応答してリフレッシュアドレスカウンタ1083がアドレスをインクリメントする。このインクリメントされたリフレッシュアドレスREF_RA<13:0>が次のリフレッシュパルス信号refpzに応答して,ラッチ回路1200でラッチされる。
[リフレッシュバースト制御]
次に,本実施の形態のバックグランドリフレッシュ動作で特徴的なリフレッシュバースト制御について説明する。リフレッシュバースト制御とは,1回のバックグランドリフレッシュコマンドに応答して,メモリ装置がリフレッシュバースト長の回数リフレッシュ動作を繰り返すことをいう。これにより,図106で示したとおり,コマンドの発行回数を減らすことができ,アクセス効率を高めることができる。
図122は,リフレッシュバースト動作を示すタイミングチャート図である。この例では,図中右上のメモリマップ12において,第1行目をリフレッシュ動作しながら第2行目を水平アクセスする。クロック番号0でバックグランドリフレッシュコマンドBRENと共に,リフレッシュバンク情報SA=0,1とリフレッシュバースト長RBL=4とが,メモリコントローラからメモリ装置に供給される。また,リフレッシュブロック数RBCについても供給されるがこの例では省略している。図105に示したとおり,リフレッシュバンク情報SAとリフレッシュバースト長RBLとは,モードレジスタセットコマンドによりモードレジスタに設定されたり,リフレッシュコマンドBRENと共に供給されたりする。供給される外部端子は,例えばバンクアドレス端子,アドレス端子,特殊端子などである。具体例は後述する。
クロック番号0でバックグランドリフレッシュコマンドBRENを受信すると,メモリ装置は,バンクBank0,1に対して4回のリフレッシュ動作を繰り返し実行する。更に,メモリコントローラは,バンクBank2,3に対するアクティブコマンドACTをクロック番号2,4で発行し,リードコマンドRDをクロック番号5,7で発行し,プリチャージコマンドPREをクロック番号8,9で発行する。同様に,クロック番号11,13でバンクBank2,3に対するアクティブコマンドACTを発行し,続いてリードコマンドRD,プリチャージコマンドPREも発行する。これらに応答して,メモリ装置は,バンクBank2,3でアクティブ動作を実行する。このバンクBank2,3でのアクティブ動作は,バンクBank0,1でのリフレッシュ動作と並行して実行される。
リフレッシュバースト長RBLを指定することにより,クロック番号16で4回のリフレッシュ動作が完了し,クロック19の後すぐにバンクBank0,1に対するアクティブコマンドACTを発行することができる。
図123は,リフレッシュバースト動作を制御するコア制御回路の構成図である。図119,図120と併せて参照することで,このコア制御回路がより明らかになる。コア制御回路1085は,図119のタイミングコントロール回路1190とリフレッシュコントロール回路1191に加えて,リフレッシュバースト長RBLが設定されるリフレッシュバースト長レジスタ1231と,リフレッシュ動作回数をカウントするリフレッシュバースト長カウンタ1230と,それらの出力を比較してリフレッシュバースト動作の終了を検出するリフレッシュバースト終了検知回路1232とを有する。また,図123のコア制御回路1085は,バックグランドリフレッシュコマンドBRENと同時にリフレッシュバースト長RBL(4ビット:1〜16回)がアドレス端子A<7:4>から入力される例(図105(A)に対応)である。
リフレッシュバースト長レジスタ1231には,図中のテーブル1231Tに示されるとおり,アドレス端子az<7:4>から入力される4ビットの情報に対応して,テーブル1231Tに示されるリフレッシュバースト長RBL=1〜16が設定される。この設定は,バックグランドリフレッシュコマンドBRENに応答して生成されるリフレッシュパルス信号refpz=H,リフレッシュバンク選択信号ref_bnkz<#>=Hのときに行われる。
リフレッシュバースト長カウンタ1230は,リフレッシュパルス信号refpz=H,リフレッシュバンク選択信号ref_bnkz<#>=Hのときにリセットされる。リフレッシュコントロール回路1191は,1サイクルのリフレッシュ動作が終了するたびに次のリフレッシュ動作を指令するインターナルリフレッシュパルス信号int_refpz(=H)を出力し,それに応答して,リフレッシュバースト長カウンタ1230はカウント値をインクリメントする。そして,カウンタ1230のカウント値とリフレッシュバースト長レジスタ1231に設定されたバースト長RBLとが一致すると,リフレッシュバースト終了検出回路1232がリフレッシュバーストエンド信号rb_endz(=H)を出力する。それに応答して,リフレッシュコントロール回路1191は,リフレッシュ状態をラッチするRSフリップフロップ回路をリセットし,それ以降のインターナルリフレッシュパルス信号int_refpzとリフレッシュプリチャージパルス信号ref_prepzとは出力しない。
図124は,リフレッシュバースト動作を制御するコア制御回路の別の構成図である。このコア制御回路1085は,モードレジスタセットコマンドEMRSと共にアドレス端子az<7:4>に入力されるリフレッシュバースト長RBLをモードレジスタ96に設定する例(図105(B)に対応)である。モードレジスタ96には,モードレジスタセットパルスmrspzに応答して,アドレス端子az<7:4>に入力される4ビットデータがリフレッシュバースト長RBL(図123のテーブル1231T)として設定され,バンクアドレス端子baz<1:0>に入力されるリフレッシュ対象のバンク情報も設定される。さらに,リフレッシュブロック数RBCが設定されてもよい。
リフレッシュバースト終了検出回路1232は,モードレジスタ96からリフレッシュバースト長を示す信号modez<7:4>を入力し,リフレッシュバースト長カウンタ1230のカウント値と比較する。それ以外の構成は図123と同じである。
図125は,コア制御回路内のタイミングコントロール回路1190とリフレッシュコントロール回路1191の詳細回路図である。図中矢印1250〜1254で示した構成が,図119の構成に追加されている。つまり,リフレッシュ状態をラッチするRSフリップフロップFF2は,リフレッシュコマンドBRENにより生成されるリフレッシュパルス信号refpzに応答してセットされ,矢印1250で示したリフレッシュ状態信号ref_statezがHにセットされる。このリフレッシュ状態信号ref_statezはリフレッシュバースト動作中はHに維持される。
リフレッシュ動作の繰り返しを制御するために,リフレッシュコントロール回路1191は,リフレッシュサイクルの最後にイコライズ信号eqlonzがHレベルになってから遅延時間DELAY-5の後に,インターナルリフレッシュパルス信号int_refpz(矢印1251,1252)をHレベル(DELAY-0のパルス幅)にする。このインターナルリフレッシュパルス信号int_refpzが,RSフリップフロップFF1をセットし(矢印1253),次のリフレッシュサイクルへの開始を指示する。このインターナルリフレッシュパルス信号int_refpzは,前述のとおりリフレッシュカウンタをインクリメントする。
そして,リフレッシュ動作を停止させるために,リフレッシュコントロール回路1191では,バースト長のリフレッシュサイクルが終了したときにリフレッシュバーストエンド信号rb_endz(矢印1254)がHレベルになり,且つリフレッシュ動作サイクルが終了するときにリフレッシュプリチャージパルス信号ref_prepzがHレベルになると,リセット入力1195によりRSフリップフロップFF2がリセットされ,リフレッシュ状態信号ref_statezがLにリセットされる。その結果,ANDゲート1197の出力がLレベルに固定されて,次のリフレッシュサイクルの開始を指示するインターナルリフレッシュパルス信号int_refpzはそれ以上出力されない。
図126は,コア制御回路内のタイミングコントロール回路1190とリフレッシュコントロール回路1191の別の詳細回路図である。このコア制御回路のリフレッシュコントロール回路1191は,図125のANDゲート1197や遅延回路DELAY-5などに代えて,リフレッシュ状態信号ref_statezのHレベルにより活性化される発振器1260が設けられている。発振器1260は,リフレッシュサイクルと同程度の周波数で発振し,リフレッシュ状態信号ref_statezがHレベルの間は,次のリフレッシュサイクルの開始を指示するインターナルリフレッシュパルス信号int_refpzを出力し続ける。そして,リフレッシュバーストエンド信号rb_endzがHレベルになり且つ1サイクルのリフレッシュ動作終了時にリフレッシュプリチャージパルス信号ref_prepzがHレベルになるときに,RSフリップフロップFF2がリセットされ,リフレッシュ状態信号ref_statezがLにリセットされ,発振器1260が停止する。それ以外は,図124と同じである。
図125,126のコア制御回路の詳細な動作説明は,図127,128を説明した後に図129を参照して行う。
図127は,リフレッシュバースト長カウンタ1230,リフレッシュバースト長レジスタ1231,リフレッシュバースト終了検出回路1232の構成図である。図123の具体例であり,図124のレジスタを除いた具体例である。リフレッシュバースト長カウンタ1230内のカウンタは,リフレッシュパルス信号refpzに応答して「0」にリセットされ,リフレッシュサイクル開始を指令するインターナルリフレッシュパルス信号int_refpzに応答してインクリメントされる。カウンタ値rblcz<3:0>はリフレッシュバースト終了検出回路1232に出力される。
リフレッシュバースト長レジスタは,リフレッシュパルス信号refpzに応答してアドレス端子az<7:4>の信号をラッチし,ラッチされたリフレッシュバースト長を示すrblrz<3:0>をリフレッシュバースト終了検出回路1232に出力する。
リフレッシュバースト終了検出回路1232は,カウンタ値rblcz<3:0>とリフレッシュバースト長rblrz<3:0>を比較し,両者が完全に一致するとリフレッシュバーストエンド信号rb_endzを出力する。このリフレッシュバーストエンド信号rb_endzにより,それ以降のリフレッシュ動作が停止する。
図128は,アドレスラッチ回路の構成図である。図121の構成に加えて,矢印1280で示したインターナルリフレッシュパルス信号int_refpzに応答して,アドレスラッチ回路1084が,リフレッシュアドレスカウンタ1083の出力のリフレッシュアドレスREF_RA<13:0>を,スイッチ1202を介してラッチ回路1200にラッチする。つまり,リフレッシュバースト動作では,リフレッシュサイクルを繰り返すために,インターナルリフレッシュパルス信号int_refpz(=H)が繰り返し出力される。よって,それに応答してアドレスラッチ回路1084は新たなリフレッシュアドレスをリフレッシュアドレスカウンタ1083からラッチし,同カウンタをインクリメントすることが必要になる。
図129は,リフレッシュバースト動作のタイミングチャート図である。この図129と図120を参照して,図125〜128に示したコア制御回路によるリフレッシュバースト動作を説明する。まず,バックグランドリフレッシュコマンドBRENに応答してリフレッシュバースト動作が開始する。この例でも,リフレッシュ対象バンクBank0,1とリフレッシュバースト長RBL=4とが指定されている。
リフレッシュコマンドBRENによりリフレッシュパルス信号refpzが出力され,これに応答して,リフレッシュ対象バンクBank0,1のリフレッシュバースト長レジスタ1231にアドレス端子A<7>〜A<4>の値が取り込まれる。図中のrblrz<3:0>=0011bはバースト長RBL=4の例である。同時に,バンクBank0,1のリフレッシュバースト長カウンタ1230のカウンタ値がrblcz<3:0>=0000bにリセットされる。また,リフレッシュコントローラ回路1191内のRSフリップフロップFF2によりリフレッシュ状態信号ref_statezがHレベルにセットされる。
この時,タイミングコントロール回路1190内のRSフリップフロップFF1もセットされ,アクティブ状態信号rasz=Highとなり,リフレッシュサイクル動作が始まる。同時に,タイミングコントロール回路1190は,イコライズ信号eqlonz=Low,ワード線活性化信号wlonz=Highとし,さらに,センスアンプ活性化信号saonzを図120と同様にHレベルにする(図示せず)。これにより,バンクBank0,1はアクティブ状態になり,セルのデータが再書き込みされる。
センスアンプ活性化信号saonzから遅延時間DELAY-4後に,ANDゲート1196によりリフレッシュプリチャージ信号ref_prepzが出力され,RSフリップフロップFF1がリセットされ,アクティブ状態信号がrasz=Lowとなり,イコライズ信号がeqlonz=Highとなり,プリチャージ動作が始まる。このとき,リフレッシュバースト長レジスタ1231の値とリフレッシュバースト長カウンタ1230の値は異なる(rblrz<3:0>≠rblcz<3:0>)ため,リフレッシュエンド信号rb_endzはLowのままである。
リフレッシュコントロール回路1191は,ANDゲート1197を介して,イコライズ信号eqlonz=Highから遅延時間DELAY-5の後に,インターナルリフレッシュパルス信号int_refpzを出力し,RSフリップフロップFF1をセットし,次のリフレッシュ動作を開始する。このとき,リフレッシュバースト長カウンタの値はカウントアップされて0001bとなる。また,アドレスラッチ回路1984(図128)は,リフレッシュアドレスカウンタ1083のカウント値をラッチする。以後,同様のリフレッシュ動作を繰り返す。
3回目のインターナルリフレッシュパルス信号int_refpzが出力され, 4回目のリフレッシュ動作が開始されると,リフレッシュバースト長カウンタの値はカウントアップされてrblcz<3:0>=0011bとなる。このとき,リフレッシュバースト長レジスタの値rblrz<3:0>=とリフレッシュバースト長カウンタの値rblcz<3:0>は同じになり(rblrz<3:0>=rblcz<3:0>=0011b),リフレッシュバーストエンド検出回路1232が,リフレッシュバーストエンド信号rb_endz=Highとする。4回目のリフレッシュ動作の終了により,プリチャージ信号ref_prepzが出力されてアクティブ状態信号rasz=Lowとなるが,このときリフレッシュエンド信号rb_endz=Highなので,リセット入力1195によりRSフリップフロップFF2がリセットされ,その結果リフレッシュ状態信号ref_statezがLowに状態遷移する。このref_statez=Lowにより,プリチャージ動作に伴ってイコライズ信号eqlonz=Highになったとき,次のリフレッシュ動作を開始させるインターナルリフレッシュ信号int_refpzは出力されず,4回のリフレッシュバースト動作が終了する。
図126の例も,インターナルリフレッシュ信号int_refpzが発振器1260により出力されるが,4回目のリフレッシュ動作が開始してリフレッシュ状態信号ref_statezがLにリセットされると,発振器1260が停止し,その後インターナルリフレッシュ信号int_refpzは出力されない。その結果,リフレッシュ動作は4回で終了する。
[リフレッシュバースト停止制御]
リフレッシュバースト機能は,1回のバックグランドリフレッシュコマンドを入力すると,指定されたバースト長だけリフレッシュサイクルを繰り返すので,コマンド入力回数を減らしてメモリのアクセス効率を高めることができる。しかし,バースト長が長くなると一旦開始したバックグランドリフレッシュ動作が完了するまでそのバンクへのアクセスが許されないとすると,メモリ制御の柔軟性が失われる。そこで,本実施の形態のメモリ装置はリフレッシュバースト停止機能を有する。
図130は,リフレッシュバースト停止動作の概略を示す図である。メモリ装置は,クロック番号0でバックグランドリフレッシュコマンドBRENを入力し,バンクBNK0,1でバースト長RBL=4回のリフレッシュ動作を開始する。しかし,メモリ装置は,3回目のリフレッシュサイクル中に停止コマンドSTOPを入力すると,実行中のリフレッシュサイクルを完了した後,次のリフレッシュサイクルには入らない。実行中のリフレッシュサイクルを停止することはできないので,停止コマンドSTOPによる停止動作とは,新たなリフレッシュサイクルには入らないことを意味する。
上記の停止コマンドSTOPは,例えば,リフレッシュコマンド(例えば/CS=L, /RAS=L, /CAS=L, /WE=H)とコマンド入力時のアドレス端子の信号とで指定される。つまり,リフレッシュコマンドとはコマンド信号は同じでアドレス端子の信号で区別される。もしくは,停止コマンドSTOPは,プリチャージコマンド(例えば/CS=L, /RAS=L, /CAS=H, /WE=L)が利用される。
図131は,リフレッシュバースト停止機能を有するコア制御回路の構成図である。図123,124のコア制御回路のリフレッシュコントロール回路1191が,リフレッシュ状態コントロール回路1191Bと,リフレッシュ状態コントロール回路1191とで構成されている。そして,コマンドデコーダ1080は,バックグランドリフレッシュコマンドに応答してリフレッシュパルス信号refpzに加えて,停止コマンドに応答してリフレッシュストップパルス信号ref_stoppzを出力する。
リフレッシュ状態コントロール回路1191Bは,リフレッシュパルス信号refpzに応答してリフレッシュ状態信号ref_statezをHレベルにセットし,リフレッシュストップパルス信号ref_stoppzに応答してリフレッシュ状態信号ref_statezをLレベルにリセットする。このリフレッシュ状態信号ref_statezにより,リフレッシュコントロール回路1191のリフレッシュ開始と停止とを制御する。また,リフレッシュコントロール回路1191は,バースト長回数のリフレッシュサイクルの終了を示すリフレッシュバーストエンド信号rb_endzにより,バースト長回数のリフレッシュサイクルが完了するときも,前述の通りリフレッシュ動作を終了させる。
図132は,リフレッシュ状態コントロール回路の回路図である。図132(A)は,バックグランドリフレッシュコマンドBRENとアドレス端子の信号とにより停止コマンドが与えられる例である。また,図132(B)は,プリチャージコマンドが停止コマンドとして与えられる例である。これらに内蔵されるRSフリップフロップFF2は,図125,126のRSフリップフロップFF2に対応し,リフレッシュ状態かリフレッシュ停止状態かを示すリフレッシュ状態信号ref_statezを制御する。
いずれのリフレッシュ状態コントロール回路1191Bにおいても,RSフリップフロップFF2は,リフレッシュパルス信号refpz=Hでセットされてリフレッシュ状態信号ref_statez=Hとし,リフレッシュバーストエンド信号rb_endz<#>=H且つリフレッシュプリチャージパルス信号ref_prepz=Hに応答して,NANDゲート1321によりリセットされてリフレッシュ状態信号ref_statez=Lとする。ここまでは,通常のリフレッシュバースト動作である。
そして,図132(A)では,停止コマンドにより生成されるリフレッシュストップパルス信号ref_stoppz=Hに応答して,インバータ1322を経由して,RSフリップフロップFF2がリセットされ,リフレッシュ状態信号ref_statez=Lとなる。この場合は,リフレッシュ対象バンク内のRSフリップフロップFF2のみがセット状態(リフレッシュ状態,ref_statez=H)になっているので,メモリ装置内の共通のリフレッシュストップパルス信号ref_stoppz=Hに応答して,リフレッシュ対象バンク内のRSフリップフロップFF2のみがリセットされる。
一方,図132(B)では,プリチャージコマンドに応答して生成されるプリチャージパルス信号prepz=Hに応答して,リフレッシュバンク選択信号ref_bnkz<#>=Hにより選択中のバンクのみ,RSフリップフロップFF2がリセットされる。通常の動作サイクル中では,リフレッシュバンク選択信号ref_bnkz<#>=Lであるので,プリチャージコマンドによりRSフリップフロップFF2がリセットされることはない。
図133は,コア制御回路のタイミングコントロール回路1190とリフレッシュコントロール回路1191の回路図である。図125の回路図と異なるのは,図132のリフレッシュ状態コントロール回路1191BのRSフリップフロップFF2に加えて,リフレッシュ動作中のアクティブ状態とプリチャージ状態とを管理するRSフリップフロップFF3が設けられ,そのRSフリップフロップFF3がリフレッシュアクティブ状態信号ref_raszを生成する。そして,ANDゲート1332は,リフレッシュアクティブ状態信号ref_rasz=Hに基づき,リフレッシュ状態信号ref_statezの状態にかかわらず,リフレッシュサイクル中のプリチャージを指示するリフレッシュプリチャージパルス信号ref_prepzを出力する。このリフレッシュアクティブ状態信号ref_raszは,リフレッシュ中は,アクティブ状態信号raszと同じ動作になる。
さらに,図125と異なるのは,調停回路1334が,プリチャージ開始を指示するイコライズ信号eqlonz=Hから遅延時間DELAY-5後のタイミングと,停止コマンドまたはプリチャージコマンドによりリフレッシュ状態信号ref_statez=Lのタイミングとを監視し,リフレッシュ状態信号ref_statez=Hの時は,新たなリフレッシュサイクル開始を指示するインターナルリフレッシュパルス信号int_refpz=Hを出力し,リフレッシュ状態信号ref_statez=Lになると,新たなリフレッシュサイクル開始を指示するインターナルリフレッシュパルス信号int_refpz=Hを出力しない。
図134は,コア制御回路のタイミングコントロール回路1190とリフレッシュコントロール回路1191の別の回路図である。ここでは,図133のANDゲート1333に代えて,発振器1260を設けた例であり,図126の例に対応する。図126と同様に,発振器1260は,リフレッシュ状態信号ref_statez=Hの時にイネーブル状態になり,次のリフレッシュサイクル開始を指示するインターナルリフレッシュパルス信号int_refpz=Hを出力する。発振器は,リフレッシュ状態信号ref_statez=Lの時にディセーブル状態になる。そして,調停回路1334は,発振器の出力とリフレッシュ状態信号ref_statezのタイミングを監視し,リフレッシュ状態信号ref_statez=Hの間は発振器出力を通過させ,リフレッシュ状態信号ref_statez=Lになると発振器出力の通過を禁止する。
図135は,図133の動作を示すタイミングチャート図である。図133,図134のタイミングコントロール回路1190及びリフレッシュコントロール回路1191の動作は,次のとおりである。バックグランドリフレッシュコマンドBRENによりリフレッシュパルス信号refpz=Hに応答して,RSフリップフロップFF1とFF3とがセットされ,アクティブ状態信号raszとリフレッシュアクティブ状態信号ref_raszが共にHレベルになる。これに応答して,ワード線,センスアンプが駆動されてアクティブ動作が行われる。
そして,アクティブ動作が完了すると,センスアンプ活性化信号saonz=Hに応答して遅延時間DELAY-4の後に,リフレッシュプリチャージパルス信号ref_prepz=Hが出力され,RSフリップフロップFF1,FF3がリセットされ,アクティブ状態信号raszとリフレッシュアクティブ状態信号ref_raszが共にLレベルになる。これにより,プリチャージ動作が開始する。プリチャージ動作を開始するイコライズ信号eqlonz=Hから遅延時間DELAY-5後に,次のリフレッシュサイクル開始を指示するインターナルリフレッシュパルス信号int_refpz=Hが出力され,次のリフレッシュサイクルが始まる。
そして,3回目のリフレッシュサイクルのアクティブ動作中に停止コマンドSTOPが入力する。これに応答して,リフレッシュストップパルス信号Ref_stoppz=Hがコマンドデコーダから出力され,リフレッシュ状態コントロール回路1191Bは,リフレッシュ状態信号ref_statez=Lを出力する。そして,3回目のリフレッシュサイクルのアクティブ動作の終了を示すタイミングである,センスアンプ活性化信号saonz=Hから遅延時間DELAY-4後のタイミングで,ANDゲート1332は,リフレッシュアクティブ状態信号ref_rasz=Hに基づいて,プリチャージ開始を指示するリフレッシュプリチャージパルス信号ref_prepz=Hを出力する。これにより,3回目のリフレッシュサイクルのプリチャージ動作は確実に実行される。
リフレッシュプリチャージパルス信号ref_prepz=Hに応答して,RSフリップフロップFF1,FF3はリセットされ,イコライズ信号eqlonz=Hとなってプリチャージ動作が始まる。そして,それから遅延時間DELAY-5後のタイミングで,調停回路1334は,リフレッシュ状態信号ref_statez=Lに基づいて,次のリフレッシュサイクル開始を指示するインターナルリフレッシュパルス信号int_refpz=Hの出力を行わない。
このように,上記のコア制御回路によれば,リフレッシュ状態信号ref_statezとリフレッシュアクティブ状態信号ref_raszとを利用して,任意のタイミングで入力する停止コマンドSTOPが発生したら,動作中のリフレッシュサイクルのプリチャージ動作を確実に完了できるようにし,停止コマンドSTOP後に新たなリフレッシュサイクルに入ることを禁止できるようにしている。
図136は,リフレッシュ停止機能を実現するコマンドデコーダの回路図である。コマンドデコーダ1080のノード1361は,/CS=L, /RAS=L, /CAS=L, /WE=Hの時にHレベルになる。そして,アドレス端子A<8>1360がLレベル,az<8>=Lの時は,ANDゲート1363によりリフレッシュパルス信号refpz=Hとなり,リフレッシュ動作が開始する。一方,アドレス端子A<8>1360がHレベル,az<8>=Hの時は,ANDゲート1362によりリフレッシュストップパルス信号ref_stoppz=Hとなり,リフレッシュ動作が停止する。
[カウントダウン型のリフレッシュバースト制御]
次に,リフレッシュバースト制御をダウンカウンタを用いて行う実施の形態を説明する。前述の例では,リフレッシュバーストカウンタをリフレッシュサイクル毎にカウントアップしていったが,以下の実施の形態では,リフレッシュバーストカウンタをリフレッシュサイクル毎にカウントダウンし,リフレッシュバーストカウンタのカウント値が全て0になると,リフレッシュバースト動作を終了する。したがって,バックグランドリフレッシュ動作中の停止コマンドに応答して,リフレッシュバーストカウンタを全て0にリセットすることで,停止制御を行うことができる。
また,このダウンカウンタを用いることにより,リフレッシュバースト動作が完了する前に,新たなバックグランドリフレッシュコマンドを入力して,新たなコマンドで指定されるバースト長にリフレッシュバーストカウンタを上書きする制御や,新たなコマンドで指定されるバースト長を現在のリフレッシュバーストカウンタに加算する制御などを行うことができる。
さらに,以下の実施の形態では,リフレッシュアドレスカウンタがリフレッシュサイクル毎にインクリメントまたはデクリメントされるが,残りのリフレッシュアドレスを全て一括してリフレッシュさせるリフレッシュオールコマンドにより,リフレッシュアドレスカウンタを既存のカウント値から初期値まで戻す制御についても説明する。
図137は,カウントダウン型のリフレッシュバースト制御を行うコア制御回路1085の構成図である。この例では,バックグランドリフレッシュコマンドBRENとアドレス端子A<5>とによりリフレッシュ開始と停止とを制御する。
図131の回路図と同様に,コア制御回路1085は,コアに対するアクティブ動作とプリチャージ動作の制御信号を生成するタイミング制御回路1190と,バックグランドリフレッシュ動作におけるリフレッシュ制御を行うリフレッシュコントロール回路1191とを有する。さらに,コア制御回路は,リフレッシュパルス信号refpzに応答してアドレス端子A<3:0>から入力されるリフレッシュバースト長RBLを設定するリフレッシュバースト長レジスタ1231と,そのリフレッシュバースト長RBLをリフレッシュパルス信号refpzに応答して入力し,ダウン信号downzでダウンカウントし,停止コマンドに対応するアドレス端子A<5>=Hに応答してカウント値を全て0にするリフレッシュバースト長カウンタ1230とを有する。
バックグランドリフレッシュコマンドに対応するリフレッシュパルス信号refpzにより,リフレッシュバースト動作が始まり,リフレッシュサイクル毎にダウン信号downzが出力されてリフレッシュバースト長カウンタ1230がダウンカウントし,次のリフレッシュサイクルを指示するインターナルリフレッシュパルス信号int_refpzが出力される。リフレッシュコントロール回路1191は,リフレッシュバースト長カウンタのカウント値rblcz<3:0>が全て0(Lレベル)にならない間は,上記のリフレッシュサイクル動作を繰り返す。そして,このカウント値rblcz<3:0>が全て0(Lレベル)になると,リフレッシュコントロール回路1191は,新たなリフレッシュサイクルを指示するインターナルリフレッシュパルス信号int_refpzを出力しない。アドレス端子A<5>=Hによる停止コマンドにより,カウント値rblcz<3:0>が全て0(Lレベル)になると,同様にリフレッシュコントロール回路1191はインターナルリフレッシュパルス信号int_refpzを出力しない。
図137のコア制御回路1085は,リフレッシュアドレス比較回路1370を有する。このリフレッシュアドレス比較回路1370は,リフレッシュオールコマンドREFALLに応答して,リフレッシュオール信号rblcallz=Hにし,リフレッシュアドレスカウンタ1083のリフレッシュアドレスref_az<13:0>を監視しリフレッシュアドレスref_az<13:0>=全てHを検出すると,リフレッシュオール信号reblcallz=Lにする。リフレッシュオールコマンドREFALLに応答して,リフレッシュパルス信号int_refpzが出力されてリフレッシュ動作が開始し,リフレッシュアドレスカウンタ1083のリフレッシュアドレスref_az<13:0>が全てHになるまでのリフレッシュオール信号rblcallz=Hの期間は,リフレッシュコントロール回路1191がインターナルリフレッシュパルス信号int_refpzを出力し続ける。そして,リフレッシュアドレスref_az<13:0>=全てHによりリフレッシュオール信号rblcallz=Lになると,リフレッシュコントロール回路1191はインターナルリフレッシュパルス信号int_refpzの出力を停止し,それ以上のリフレッシュサイクルは発生しない。なお,リフレッシュアドレスカウンタ1083は,センスアンプ活性化信号saonzに応答してリフレッシュアドレスref_az<13:0>をカウントダウンする。このセンスアンプ活性化信号saonzに代えて,インターナルリフレッシュパルス信号int_refpzでカウントダウンしてもよい。
図138は,リフレッシュバースト長レジスタ1231に設定されるリフレッシュバースト長と,アドレス端子A<3:0>との対応を示す真理値表である。アドレス端子A<3:0>の値がそのままリフレッシュバースト長としてレジスタ1231に設定される。
図139は,カウントダウン型のリフレッシュバースト制御を行うコア制御回路1085の構成図である。この回路では,リフレッシュバースト長カウンタ1230が,停止コマンドREFSTOPに応答してALL=0にリセットされる。それ以外は,図137の回路図と同じである。
図140は,コア制御回路1085内のタイミングコントロール回路1190とリフレッシュコントロール回路1191の回路図である。タイミングコントロール回路1190は,前述と同様に,通常動作時のアクティブパルス信号actpz,バックグランドリフレッシュ動作時のリフレッシュパルス信号refpz,リフレッシュバースト動作中のインターナルリフレッシュパルス信号int_refpz,それぞれに応答してセットされるRSフリップフロップFF1を有する。フリップフロップFF1がセットされると,アクティブ状態信号rasz<#>などが出力され,コアがアクティブ動作する。
そして,リフレッシュコントロール回路1191は,アクティブ状態信号rasz<#>がLレベルになってから遅延時間DELAY-6後にリフレッシュインターバル信号refitvalx=Hにし,次のリフレッシュサイクルを指示するインターナルリフレッシュパルス信号int_refpzを出力する。また,リフレッシュコントロール回路1191は,ワード線駆動信号wlonz<#>=Hに応答して,遅延時間DELAY-7のパルス幅のダウン信号downz=Hを出力し,リフレッシュバースト長カウンタ1230のカウント値をカウントダウンする。
NANDゲート1400の出力は,リフレッシュバースト長カウント値rblcz<3:0>=全てL,リフレッシュオール信号rblcallz=LのときにLレベルになり,ANDゲート1401を介してインターナルリフレッシュパルス信号int_refpzの出力が禁止される。通常状態では,リフレッシュオール信号rblcallz=Lであるので,リフレッシュバースト動作中にリフレッシュバースト長カウント値rblcz<3:0>=全てLになると,インターナルリフレッシュパルス信号int_refpzの出力が禁止される。また,リフレッシュオールコマンドに対応するリフレッシュオール信号rblcallz=Hの間は,リフレッシュバースト長カウント値rblcz<3:0>にかかわらずインターナルリフレッシュパルス信号int_refpzが出力される。
なお,図140中のアドレス端子A<10>は,SDRAMが有する全バンクプリチャージ動作を指令する信号であり,RSフリップフロップFF1をリセットしてプリチャージ動作を制御する。上記の回路の具体的な動作は後で詳述する。
図141,図142は,リフレッシュバースト長レジスタ1231とリフレッシュバースト長カウンタ1230の回路図である。図141は,停止コマンドがバックグランドリフレッシュコマンドBRENとアドレス端子A<5>で入力される例であり,図142は,停止コマンドが専用のコマンドREFSTOPで入力される例である。それ以外は同じである。
リフレッシュバースト長レジスタ1231は,リフレッシュパルス信号refpzに応答して,ラッチ回路1410,1412にアドレス端子A<3:0>からのリフレッシュバースト長RBLを取り込む。ゲート1411,1413は,通常ダウン信号downzとセルフリフレッシュモード信号srefzとが共にLレベルであるので,ラッチした値をそのままリフレッシュバースト長レジスタ値rblrz<3:0>として出力する。また,リフレッシュバースト長レジスタ1231は,SDRAMの従来のリフレッシュ動作を指令するセルフリフレッシュ信号srefz=Hに応答して,レジスタ値rblrz<3:0>=0001にする。
リフレッシュバースト長カウンタ1230は,リフレッシュパルス信号refpz=Hに応答して,レジスタ値rblrz<3:0>を取り込み,ダウン信号downz=Hに応答してダウンカウントするダウンカウンタ1414を有する。また,ダウンカウンタ1414は,停止コマンドに対応するリフレッシュパルス信号refpz=Hとアドレス端子A<5>=Hに応答して(図142の例ではリフレッシュストップコマンドREFSTOPに応答して),rblcz<3:0>=全てLにリセットされる。
図143は,リフレッシュアドレスカウンタ1083とリフレッシュアドレス比較回路1370の回路図である。リフレッシュアドレスカウンタ1083は,14ビットカウンタであり,リフレッシュバンク選択信号ref_bnkz<#>=Hで且つセンスアンプ活性化信号saonz<#>=Hに応答して,リフレッシュアドレスref_az<13:0>をカウントダウンする。
リフレッシュアドレス比較回路1370は,リフレッシュオールコマンドREFALLに応答してセットされるRSフリップフロップFF4と,リフレッシュアドレスref_az<13:0>=全てHを検出するNANDゲート群1432とを有する。通常状態ではRSフリップフロップFF4はリセットされてノード1430はHレベルであり,リフレッシュオール信号rblcallz=Lである。そして,リフレッシュオールコマンドREFALLに応答してRSフリップフロップFF4がセットされ,ノード1430はLレベルになり,リフレッシュオール信号rblcallz=Hになる。rblcallz=Hの間はリフレッシュコントロール回路1191によりリフレッシュ動作が繰り返され,リフレッシュアドレスカウンタ1083がセンスアンプ活性化信号saonz=Hのたびにダウンカウントされる。リフレッシュアドレスref_az<13:0>が全てLから全てHになると,NAND群1432がそれを検出し,ノード1431をHレベルにし,リフレッシュオール信号rblcallz=Lにする。これに応答して,リフレッシュコントロール回路1191はリフレッシュ動作を停止し,RSフリップフロップFF4はリセットされる。これによりリフレッシュアドレスカウンタ1083内の残りのアドレスを全てリフレッシュさせるリフレッシュオール動作が終了する。
図144は,カウントダウン型のコア制御回路のRBL=3の場合のタイミングチャート図である。バックグランドリフレッシュコマンドBRENに応答してリフレッシュパルス信号refpz=Hが生成され,それに応答して,図141,142のレジスタ1231,カウンタ1230がリセットされて,リフレッシュバースト長レジスタ値rblrz<3:0>,リフレッシュバースト長カウンタ値rblcz<3:0>が共に0011bにセットされる。rblcz<3:0>=0011bにより,図140のリフレッシュコントロール回路1191のNAND1400の出力がLからHになり,インターナルリフレッシュパルス信号int_refpz=Hを出力する。また,図140のタイミングコントロール回路1190のRSフリップフロップFF1がセットされて,アクティブ状態信号raszがHレベルになり,リフレッシュコントロール回路1191がANDゲート1402を経由してリフレッシュインターバル信号refitvalx=Lにして,インターナルリフレッシュパルス信号int_refpz=Lになる。
そして,コアがアクティブ動作され,センスアンプ活性化信号saonz=Hに応答して,リフレッシュコントロール回路1191が,ANDゲート1430を介して,ダウン信号downz=Hを出力する。これに応答して,図141,142のリフレッシュバースト長カウンタ1230が,カウント値rblcz<3:0>をカウントダウンする。リフレッシュコントロール回路1191は,アクティブ状態信号raszがLレベルになってから遅延時間DELAY-6後にリフレッシュインターバル信号refitvalx=Hにし,新たなインターナルリフレッシュパルス信号int_refpzを出力する。
そして,上記のリフレッシュサイクルが3回繰り返されると,リフレッシュバースト長カウンタのカウント値rblcz<3:0>=0000bになり,リフレッシュコントロール回路1191のNANDゲート1400の出力がLレベルになり,ANDゲート1401によりそれ以降のインターナルリフレッシュパルス信号int_refpzは出力されない。これで,バースト長3のリフレッシュ動作が終了する。
図145は,カウントダウン型のコア制御回路のリフレッシュ停止動作のタイミングチャート図である。この例では,リフレッシュバースト長RBL=3のリフレッシュ動作中に停止コマンドによりリフレッシュ動作が停止する。リフレッシュ開始コマンドがバックグランドリフレッシュコマンドBRENとアドレス端子A<5>=Lにより入力されると,リフレッシュ動作が開始する。開始動作は,図144と同じである。そして,クロック番号7でリフレッシュ停止コマンドが,バックグランドリフレッシュコマンドBRENとアドレス端子A<5>=Hにより入力されると,リフレッシュバースト長カウンタ1230(図141)がリセットされ,そのカウント値rblcz<3:0>が0000bになる。これに応答して,リフレッシュコントロール回路1191のNANDゲート1400の出力がLレベルになり,それ以降のインターナルリフレッシュパルス信号int_refpzは出力されない。なお,リフレッシュサイクルのプリチャージは,タイミングコントロール回路1190により,通常動作と同様にして制御される。
図146は,カウントダウン型のコア制御回路のリフレッシュ停止動作のタイミングチャート図である。図145と異なり,リフレッシュ停止コマンドREFSTOPにより停止制御される。それ以外は図145と同じである。
図147は,カウントダウン型のコア制御回路のリフレッシュオール動作を示すタイミングチャート図である。リフレッシュオールコマンドREFALLに応答してREFALL=Hになり,リフレッシュアドレス比較回路1370(図143)のRSフリップフロップFF4がセットされ,ノード1430がLレベル,リフレッシュオール信号rblcallz=Hになる。それにより,リフレッシュコントロール回路1191(図140)のNANDゲート1400の出力がHレベルになり,インターナルリフレッシュパルス信号int_refpz=Hを出力し,リフレッシュサイクルが開始する。
リフレッシュサイクル毎にリフレッシュアドレスカウンタ1083(図140)のリフレッシュアドレスref_az<13:0>をカウントダウンし,ref_az<13:0>=全てL(カウント値0000h)になりさらにref_az<13:0>=全てH(カウント値3FFFh)になると, NANDゲート群(図143)がそれを検出し,リフレッシュオール信号REFALL=Lになり,リフレッシュコントロール回路1191(図140)のNANDゲート1400がLレベルになり,その後のインターナルリフレッシュパルス信号int_refpzの出力が停止する。これによりリフレッシュアドレスの残り全てについてリフレッシュ動作が終了し,リフレッシュアドレスカウンタ1083のカウント値が全て1にリセットされた状態になる。
図148は,カウントダウン型のコア制御回路のリフレッシュコマンド再設定の動作を示すタイミングチャート図である。この図では,最初のバックグランドリフレッシュコマンドBRENでは,リフレッシュバースト長RBL=14(A<3:0>=1110b)が設定されてリフレッシュ動作が始まり,リフレッシュ動作毎にリフレッシュバースト長カウンタがカウントダウンされる。そして,リフレッシュバースト長カウンタ値rblcz<3:0>=0000bになる前に,更に2回目のコマンドBRENでリフレッシュバースト長RBL=2(A<3:0>=0010b)が入力され,その時のカウンタ値rblcz<3:0>=1011bに新たなリフレッシュバースト長RBL=2(A<3:0>=0010b)が加算されて,カウンタ値rblcz<3:0>=1101b(残り13回)になる。
このように,リフレッシュバースト制御において,新たなバックグランドリフレッシュコマンドによりリフレッシュバースト長を加算する機能を有することにより,メモリコントローラは,将来のバックグランドリフレッシュ動作のためにバックグランドリフレッシュコマンドを先行して発行することができる。
図149は,カウントダウン型のコア制御回路のリフレッシュコマンド再設定の動作を示すタイミングチャート図である。この例では,2回目のコマンドBRENでリフレッシュバースト長RBL=2(A<3:0>=0010b)が入力され,その時のカウンタ値rblcz<3:0>=1011bに代えて新たなリフレッシュバースト長RBL=2(A<3:0>=0010b)が上書きされ,カウンタ値rblcz<3:0>=0010b(残り2回)になる。
このように,リフレッシュバースト制御において,新たなバックグランドリフレッシュコマンドによりリフレッシュバースト長を上書きする機能を有することにより,メモリコントローラは,一旦開始したバックグランドリフレッシュ動作を取り消して,新たなバックグランドリフレッシュ動作を開始させることができる。図148,149のような新たなバックグランドリフレッシュコマンドによりバースト長RBLを加算したり上書きしたりすることで,リフレッシュバースト動作が始まった後に,その内容を自由に変更することができ,メモリコントローラの制御のフレキシビリティを高めることができる。
[アクティブとリフレッシュ連動制御]
次にアクティブとリフレッシュとを連動させる制御について説明する。上記してきた実施の形態では,通常メモリ動作のアクティブコマンドACTと,バックグランドリフレッシュ動作のコマンドBRENとは別々のコマンドであり,メモリコントローラはそれらのコマンドを別々の発行することで,メモリ装置に通常メモリ動作とバックグランドリフレッシュ動作とを実行させる。
それに対して,以下の実施の形態では,あらかじめモードレジスタなどにアクティブコマンドに連動してバックグランドリフレッシュ動作を実行するように設定することで,メモリ装置が,通常メモリ動作のアクティブコマンドの入力に応答して,選択バンクでの通常アクティブ動作に加えて,リフレッシュ対象バンクでのリフレッシュ動作を行う。このような機能を有することにより,メモリコントローラは,バックグランドリフレッシュコマンドを発行する必要はない。
図150は,アクティブとリフレッシュ連動制御を示すタイミングチャート図である。クロック番号2では,アクティブコマンドACTと共にバンクアドレスBA=2が入力され,それに応答して,メモリ装置は,バンクBANK2がアクティブ動作を実行するとともに,バンクBANK1でリフレッシュ動作を実行する。また,クロック番号4では,図中の表に示すとおり,アクティブコマンドACTと共にバンクアドレスBA=3が入力され,それに応答して,メモリ装置は,バンクBANK3でアクティブ動作を実行するとともに,バンクBANK0でリフレッシュ動作を実行する。
つまり,図中の表に示されるとおり,アクティブコマンドACTとともに入力されるバンクアドレスBA<1:0>の値に対応して,メモリ装置は特定のバンクでリフレッシュ動作を実行する。つまり,アクティブコマンドでバンクBANK0が選択されればバンクBANK3でリフレッシュ動作,アクティブコマンドでバンクBANK1が選択されればバンクBANK2でリフレッシュ動作,アクティブコマンドでバンクBANK2が選択されればバンクBANK1でリフレッシュ動作,そして,アクティブコマンドでバンクBANK3が選択されればバンクBANK0でリフレッシュ動作する。この組み合わせであれば,図117に示したいずれのメモリマッピング1170,1171のいずれであっても,水平アクセスに伴うアクティブコマンドで,水平アクセス対象でないバンクにバックグランドリフレッシュをさせることができる。
本実施の形態では,アクティブコマンドACTに応答して,1回のバックグランドリフレッシュ動作を実行する。したがって,リフレッシュバースト長RBL=1に固定される。
図151は,アクティブとリフレッシュ連動制御におけるリフレッシュバンクデコーダの回路図である。リフレッシュバンクデコーダ1082内のANDゲート群1510は,モード値modez=Hの場合に,通常バンクデコーダが出力するバンク選択信号bnkz<#>=Hそれぞれに応答して,リフレッシュバンク選択信号ref_bnkz<#>=Hを出力する。通常アクティブ動作の選択バンクとリフレッシュ選択バンクとの関係は,図150の表に示される通りである。一方,ANDゲート群1510は,モード値modez=Lの場合は,リフレッシュバンク選択信号ref_bnkz<3:0>=全てLにして連携したリフレッシュ動作を禁止する。
モード値modez=H/Lは,あらかじめモードレジスタセットコマンドEMRSにより内蔵レジスタに設定される。または,所定の外部端子から入力される。よって,前述の例によれば,水平アクセスの場合にモード値modez=Hを設定して,アクティブコマンドACTに連携してバックグランドリフレッシュ動作を行わせ,矩形アクセスの場合はモード値modez=Lに設定して,バックグランドリフレッシュ動作を禁止することが望ましい。
図152は,アクティブとリフレッシュ連動制御におけるコア制御回路の回路図である。このコア制御回路1085は各バンク毎に設けられ,よって,バンク選択信号bnkz<#>,リフレッシュバンク選択信号ref_bnkz<#>により,バンク毎の制御が区別される。まず,選択バンク(bnkz<#>=H)では,タイミングコントロール回路1190のRSフリップフロップFF1は,NANDゲート1520を介して,アクティブパルス信号actpz=Hに応答してセットされ,アクティブ状態信号raszをHレベルにし,コアをアクティブ動作させる。
一方,リフレッシュ選択バンク(ref_bnkz<#>=H)では,RSフリップフロップFF1は,NANDゲート1521を介して,アクティブパルス信号actpz=Hに応答してセットされ,アクティブ状態信号raszをHレベルにし,コアをアクティブ動作させる。同時に,リフレッシュコントロール回路1191内のRSフリップフロップFF3も,NANDゲート1522を介して,アクティブパルス信号actpz=Hに応答してセットされ,リフレッシュアクティブ状態信号ref_raszをHレベルにセットする。アクティブ状態信号raszをHレベルによりリフレッシュ動作が開始し,センスアンプ活性化信号saonz=Hに応答して,リフレッシュプリチャージパルス信号ref_prepz=Hにより,RSフリップフロップFF1がリセットされて,プリチャージ動作が行われる。同時に,RSフリップフロップFF3はリセットされる。
図153は,アクティブとリフレッシュ連動制御におけるアドレスラッチ回路の回路図である。この回路も各バンクに設けられている。アドレスラッチ回路1084は,選択バンク(bnkz<#>=H)では,アクティブパルス信号actpz=Hに応答してラッチ回路1200が外部アドレスaz<13:0>をラッチする。一方,リフレッシュ選択バンク(ref_bnkz<#>=H)では,アクティブパルス信号actpz=Hに応答してラッチ回路1200がリフレッシュアドレスカウンタ1083のリフレッシュアドレスref_az<13:0>をラッチする。また,通常のリフレッシュパルス信号refpz=Hに応答しても,ラッチ回路1200がリフレッシュアドレスref_az<13:0>をラッチする。それ以外は,図128と同じである。
以上の通り,通常のアクティブコマンドに応答して,あらかじめ設定されたバンクの組み合わせで,通常アクティブ動作とバックグランドリフレッシュ動作とが平行に実行される。
[リフレッシュブロック数による制御]
次に,本実施の形態におけるリフレッシュブロック数RBCによる制御について説明する。本実施の形態のバックグランドリフレッシュ動作では,リフレッシュサイクル数を規定するリフレッシュバースト長RBLに加えて,1回のリフレッシュサイクルで同時にアクティブ化されるブロック数(ワード線数)RBCを設定することができる。
リフレッシュブロック数RBCを大きくすることで,同時に多くのリフレッシュアドレスに対してリフレッシュを実行することができる。よって,バックグランドリフレッシュ可能な期間が短い場合には,リフレッシュブロック数RBCを大きく設定することが望ましい。一方で,リフレッシュブロック数RBCを大きくすると同時に多くのワード線でリフレッシュ動作が実行され,瞬間的な消費電力を増大させる。よって,バックグランドリフレッシュ可能な期間が長ければ,できるだけリフレッシュブロック数RBCを小さく設定することが望ましい。よって,メモリコントローラは,上記のバックグランドリフレッシュ可能期間や消費電力の条件に応じて,リフレッシュブロック数RBCを最適値に設定する。
図154は,バンク回路の構成図である。図108で説明したとおり,各バンク92は,リフレッシュアドレスカウンタ1083と,アドレスラッチ回路1084と,コア回路を構成するメモリセルアレイ1086Mとロウデコーダ1086Dとを有する。メモリセルアレイ1086Mは,メモリセルアレイMCA0-3とセンスアンプ列対SA00,01〜SA30,31で構成された4組のブロックRBLK0-3を有する。4組のブロックRBLK0-3はいずれもセンスアンプ列SAを有するので,同時にアクティブ化されてリフレッシュ動作を行うことができる。そして,モード設定値modez<1:0>により,リフレッシュアドレスカウンタ1083のカウント値REF_A<13:0>の上位2ビットの一方又は両方が縮退(反転,非反転アドレスいずれもHレベル)する。この縮退により,ロウデコーダ1086Dに入力されるロウアドレスRA<13:0>は,4ブロックRBLK0-3を同時に活性化する,2ブロックを同時に活性化する,1ブロックを活性化するのいずれかの動作を可能にするアドレスになる。
図155は,リフレッシュブロック数に応じたコア内のメモリブロックの制御を示す図である。リフレッシュブロック数RBC=1(modez<1:0>=00)の場合は,バックグランドリフレッシュコマンドBRENに応答して,コア内のリフレッシュ対象のメモリブロックRBLK0のワード線WLが駆動されリフレッシュ動作が行われる。リフレッシュブロック数RBC=2(modez<1:0>=01)の場合は,バックグランドリフレッシュコマンドBRENに応答して,コア内のリフレッシュ対象の2つのメモリブロックRBLK0,2のワード線WLが駆動されリフレッシュ動作が行われる。そして,リフレッシュブロック数RBC=4(modez<1:0>=11)の場合は,バックグランドリフレッシュコマンドBRENに応答して,コア内のリフレッシュ対象の4つのメモリブロックRBLK0,1,2,3のワード線WLが駆動されリフレッシュ動作が行われる。
図156は,アドレスラッチ回路の回路図である。図中の真理値表に示すとおり,モードレジスタに設定されるリフレッシュブロック数RBCを設定する信号modez<0>〜<1>により同時に活性化するワード線数が1,2,4のいずれになる。
アドレスラッチ回路1084は,14ビットのロウアドレスのうち,上位2ビットのアドレスの非反転信号と反転信号をラッチするラッチ群1564と,下位12ビットのアドレスをラッチするラッチ群1565とを有する。そして,ラッチ群1564は,アクティブパルス信号actpzに応答して,外部アドレスaz<13>,<12>の非反転信号とインバータ1566,1567による反転信号とをラッチする。同様に,ラッチ群1564は,リフレッシュパルス信号refpzに応答して,リフレッシュアドレスREF_A<13>,<12>の非反転信号とインバータ1568,1569による反転信号とをラッチする。ただし,モードレジスタの設定信号modez<0>,<1>に応じて,NANDゲート1560〜1563により,リフレッシュアドレスREF_A<13>,<12>の非反転信号と反転信号はともにHレベルに縮退される。これにより,複数のメモリブロックのワード線を同時に駆動することができる。
図157は,ロウデコーダ内のプリデコーダ回路の回路図である。プリデコーダ回路の一部を示す。このプリデコーダ回路は,上位2ビットのロウアドレスの非反転信号raz<12>,<13>と,反転信号rax<12>,<13>との組み合わせにより,4つのメモリブロックを選択するブロック選択信号rblkz<3:0>が生成される。このプリデコーダ回路にいよる動作が,図中の表に示されている。
図156,図157の動作は次の通りである。
まず,RBC=1の場合は,modez<0>=modez<1>=0であり,
raz<13>はREF_A<13>と同相,rax<13>はREF_A<13>の逆相,
raz<12>はREF_A<12>と同相,rax<12>はREF_A<12>の逆相
となる。そして,プリデコーダ回路1086Dにより,4つのうちの1つのブロックRBLKが選択されて1本のワード線WLが活性化される。
次に,RBC=2の場合は,modez<0>=1,modez<1>=0であり,
raz<13>はHigh,rax<13>もHigh,raz<12>はREF_A<12>と同相,rax<12>はREF_A<12>の逆相
となる。そして,プリデコーダ回路1086Dにより,4つのうちの2つのブロックRBLKが選択されて2本のワード線WLが活性化される。
最後に,RBC=4の場合は,modez<0>=1,modez<1>=1であり,
raz<13>はHigh,rax<13>もHigh,raz<13>はHigh,rax<13>もHigh
となる。そして,プリデコーダ回路1086Dにより,4つのうちの4つのRBLKが選択されて4本のワード線WLが活性化される。
以上で,バックグランドリフレッシュ機能を有するメモリ装置の説明を終了する。次に,メモリ装置を制御してバックグランドリフレッシュ動作をさせるメモリコントローラについて説明する。
[バックグランドリフレッシュを制御するメモリコントローラ]
メモリ装置にバックグランドリフレッシュ機能を実行させるためには,メモリコントローラは,バックグランドリフレッシュコマンドBRENとリフレッシュバンク情報SAとリフレッシュバースト長RBLとをメモリ装置に与える必要がある。さらに,メモリコントローラは,リフレッシュブロック数RBCもメモリ装置に与えることが望まれる。そこで,以下,バックグランドリフレッシュを制御するメモリコントローラについて説明する。
図158は,バックグランドリフレッシュ機能を有するメモリシステムの構成図である。画像処理装置81は,二次元配列された画像データに対して水平アクセスや矩形アクセス要求をメモリコントローラ82に出力し,メモリコントローラ82はメモリ装置86にアクセス制御を行う。画像処理装置81は,アクセス要求信号REQとともにアクセスタイプ信号ATYP,画像アドレスADR,画像サイズ信号SIZE,リード・ライト信号RWXを,メモリコントローラ82に出力し,それに対してメモリコントローラ82はアクノリッジ信号ACKを返信する。また,ストローブ信号STBをアサートしながら書き込みデータまたは読み出しデータをデータバスDATAで転送する。
メモリコントローラ82は,画像処理装置81からのアクセス要求と種々の情報に基づいて,水平アクセスの場合にバックグランドリフレッシュコマンドとリフレッシュバンク情報SAとリフレッシュバースト長RBLとリフレッシュブロック数RBCとをメモリ装置86に出力し,更に,水平アクセスに対応するアクティブコマンドCMD,バンクアドレスBA,ロウアドレスRA,リード又はライトコマンドCMD,バンクアドレスBA,コラムアドレスCAを,メモリ装置86に出力する。また,矩形アクセスに対応する同様の信号をメモリ装置86に出力する。そして,メモリコントローラ82は,ライトアクセスではメモリ装置86に書き込みデータDQを出力し,リードアクセスではメモリ装置86から読み出しデータDQを入力する。
図159は,メモリマッピング例を示す図である。図中には,メモリマッピング12に対してメモリコントローラ82が画像処理装置81から受信する各種の情報との関係が示されている。このメモリマッピング12は,X方向に64画素,Y方向に32画素,合計で2048画素で構成されるフレーム画像データに対応する。8×8画素のブロックがバンクアドレスBAとロウアドレスRAにより特定されるページ領域に対応付けられる。各画素は,例えば1バイトの画像データを有する。そして,ページ領域は,奇数行がバンクアドレスBA0,BA1に,偶数行がバンクアドレスBA2,BA3に対応付けられる。
このようなメモリマップ12において,左上の画素が,画像アドレスADR=0x000,POSX,POSY=0,0に対応し,1行目の右端の画素が,画像アドレスADR=0x03F,POSX,POSY=0,63に対応し,32行目の左端の画素が,画像アドレスADR=0x7C0,POSX,POSY=31,0に対応する。この場合は,画像アドレスADRは,アクセス領域の左上画素の位置情報POSX,POSYで表すことができる。つまり,12ビットの画像アドレスADR[11:0]に対して,
POSY[5:0]=ADR[11:6], POSX[5:0]=ADR[5:0]
になる。よって,メモリコントローラ82は,画像処理装置81から受信する画像アドレスADRから,アクセス領域の左上画素の位置情報POSX,POSYを得ることができる。なお,図159の例では,垂直方向が32画素であるので,垂直方向の位置情報POSY[5:0]は5ビットでもよい。
次に,アクセス領域の水平方向のサイズSIZEX,垂直方向のサイズSIZEYは,それぞれ画像サイズ信号SIZE,アクセスタイプ信号ATYPにより供給される。つまり,
SIZEX=SIZE, SIZEY=ATYP
である。水平アクセスの場合はSIZEY=ATYP=0_0000bが供給され,矩形アクセスの場合はSIZEY=ATYPが0以外の任意の値になる。よって,メモリコントローラ82は,アクセスタイプ信号ATYPが0か否かで水平アクセスか矩形アクセスかを区別することができる。
図160は,水平アクセスと矩形アクセスにおける先頭画素アドレス,サイズ情報を示す図である。水平アクセス(A)の場合は,図示されるとおり先頭画素アドレスADR,サイズはSIZEX=SIZE, SIZEY=ATYP=0となる。矩形アクセス(B)の場合は,図示されるとおり,先頭画素アドレスADR,サイズはSIZEX=SIZE, SIZEY=ATYPとなる。
さらに,メモリコントローラ82は,アクセス領域の左上画素の位置情報POSX,POSYから,メモリマップ12に基づいて,アクセス領域の先頭画素のバンクアドレスBA,ロウアドレスRAを求めることもできる。そして,メモリコントローラ82は,アクセス領域の左上画素の位置情報POSX,POSYと,サイズ情報SIZE,ATYPとから,複数のバンクをアクセスするか否かについても区別することができる。
また,メモリコントローラ82は,サイズ情報SIZE,ATYPからメモリ装置にアクセスする画素数を求めることができ,さらに,少なくともその画素数のデータを画像処理装置との間で転送するために必要なクロックサイクル数の期間は次のメモリアクセス要求は発生しないことを,判別することができる。そして,メモリコントローラ82は,そのような期間から,バックグランドリフレッシュでのリフレッシュバースト長RBLを求めることができ,または,リフレッシュブロック数RBCも求めることができる。
図161は,メモリコントローラの構成図である。このメモリコントローラ82は,水平アクセス判定部1610,リフレッシュバースト長RBL演算部1611,アクティブバンク番号生成部1612,バックグランドリフレッシュバンク番号生成部1613,メモリインターフェース1614,その中の制御部1615などを有する。これらは,図90に示した複数のシーケンサSEQのうちの1つのシーケンサSEQを構成する。よって,複数のアクセス元に対応して,図161に示したシーケンサSEQが複数設けられる。
まず,水平アクセス判定部1610は,垂直方向のサイズSIZEYを示すアクセスタイプ信号ATYPが「0」か否かを第1の比較器CMP1により判定する。第1の比較器CPM1は,ATYP=0なら出力「1」である。さらに,水平アクセス判定部1610は,水平方向のサイズSIZEXを示すサイズ信号SIZEが1回のリフレッシュサイクルのクロック数MEMREFを超えるか否かを第2の比較器CMP2により判定する。第2の比較器CMP2は,SIZE≧MEMREFなら出力「1」である。よって,両比較器の出力が「1」であれば,ANDゲートがバックグランドリフレッシュイネーブル信号「1」を出力し,制御部1615にバックグランドリフレッシュコマンドの発行を依頼する。上記のクロック数MEMREFは,例えばメモリコントローラ内のレジスタに設定される。
次に,リフレッシュバースト長RBL演算部1611は,バックグランドリフレッシュにおけるリフレッシュバースト長RBLを演算する。具体的には,水平方向のサイズSIZEをクロック数MEMREFにより除算することで,可能なリフレッシュサイクル数を求めることができる。この除算はビットシフト回路SFTにより行われる。そして,リフレッシュバースト長RBLは,例えば,図123,図138などで示されるとおり,アドレス端子A[7:4]により0〜15または1〜16としてメモリ装置に出力される。
また,アクティブバンク番号生成部1612は,加算器ADD,第3の比較器CMP3,デコーダDEC0,セレクタSEL0,デコーダDEC1を有する。このデコーダDEC1はテーブルを参照して入力信号を出力信号に変換する。アクティブバンク番号生成部1612は,画像処理装置から供給されるサイズ信号SIZE,画像アドレスADRに基づいて,アクセス領域に対応するバンクアドレスを求める。このバンクアドレスBA[1:0]が,アクティブコマンドと共に出力されるべきバンク番号を示す。
図163は,アクティブバンク番号生成部のデコーダDEC0とセレクタSEL0を説明する図表である。アクティブバンク番号生成部1612では,加算器ADDが画像アドレスADRの下位3ビットADR[2:0]と水平方向のサイズであるサイズ信号SIZEとを加算する。画像アドレスADRの下位3ビットADR[2:0]は,先頭画素の水平方向の位置情報POSX=ADR[5:0]の下位3ビットであり,図159に示したメモリマップ12の8×8画素のページ領域内の画素位置を示す情報である。そして,比較器CMP3が,画像アドレスADRの下位3ビットADR[2:0]に水平方向のサイズSIZEを加算した値が「8」を超えるか否かを判別し,超えない場合は,水平アクセスで1つのページ領域内しかアクセスされず1つのバンクのみをアクティブ動作させればよく,超える場合は,水平アクセスで複数のページ領域をアクセスするので2つのバンクをアクティブ動作させる必要がある。そして,比較器CMP3の1バンクまたは2バンクがアクティブかを示す出力と,アクセス領域の先頭画素の位置情報の第4ビットであるADR[9]=POSY[3],ADR[3]=POSX[3]とに基づいて,デコーダDEC0がセレクタSEL0の選択制御信号0〜7を出力する。
図159のメモリマップでは,各ページ領域が8×8画素で構成されるので,先頭画素の位置情報POSX,POSYの4ビット目であるADR[9]=POSY[3],ADR[3]=POSX[3]と,バンクアドレスBA[1:0]との関係は,以下の通りである。
ADR[9]=POSY[3],ADR[3]=POSX[3]=0,0 BA[1:0]=0,0 (バンクBA0)
ADR[9]=POSY[3],ADR[3]=POSX[3]=0,1 BA[1:0]=0,1 (バンクBA1)
ADR[9]=POSY[3],ADR[3]=POSX[3]=1,0 BA[1:0]=1,0 (バンクBA2)
ADR[9]=POSY[3],ADR[3]=POSX[3]=1,1 BA[1:0]=1,1 (バンクBA3)
また,図159と異なるメモリマップでは,上記のバンクアドレスとの関係は異なる。
図163には,上記の加算器ADDの出力SIZE+ADR[2:0]と,ADR[9]=POSY[3],ADR[3]=POSX[3]との組み合わせに対応するデコーダDEC0の出力信号(SEL0の選択制御信号0〜7)が示されている。更に,図163には,デコーダDEC0の出力信号(SEL0の選択制御信号0〜7)に対応して選択される,セレクタSEL0の入力端子ACTBA0〜7も示されている。
つまり,デコーダDEC0は,SIZE+ADR[2:0]が8を超えない場合と超える場合とについて,それぞれADR[9]=POSY[3],ADR[3]=POSX[3]の4つの組み合わせについて,出力「0」〜「7」を出力する。上記の通り,ADR[9]=POSY[3],ADR[3]=POSX[3]の4つの組み合わせは,アクセス領域の先頭画素が位置するバンクアドレスに対応付けられる。また,SIZE+ADR[2:0]が8を超えない場合は1つのバンクのみアクティブであればよく,8を超える場合は2つのバンクをアクティブにする必要がある。
図161内のアクティブバンク番号生成部1612は,デコーダDEC0の出力0〜7からなる選択信号に応じて,レジスタ543のACTBA0〜7に設定された値を選択するセレクタSEL0と,セレクタSEL0で選択されたレジスタ543のACTBA0〜7の設定値を,テーブルTableを参照してアクティブバンク番号ACT_BA[1:0]に変換するデコーダDEC1とを有する。
図164は,レジスタ543のACTBAに設定されうる値000b〜111bの意味を説明する図表である。なお,「b」はバイナリ表記を意味する。設定値000b〜011bは,アクセス領域に対応してアクティブ動作されるアクティブバンクがBA0〜3の場合に対応し,設定値100b,101b,110b,111bはそれぞれアクティブバンクがBA0&1,BA0&2,BA2&3, BA1&3の場合に対応する。これらの通常メモリ動作でアクティブ化されるバンクに対して,バックグランドリフレッシュ動作対象のバンクは,メモリマップMap1,2に応じて,そしてバックグランドリフレッシュが2バンクで実行か1バンクで実行かに応じて,図164に示されるようになる。即ち以下の通りである。
アクティブバンクBA0(設定値000b)なら,2バンクリフレッシュではリフレッシュバンクはBA2&3(Map1)またはBA1&3(Map2),1バンクリフレッシュではBA2(Map1)またはBA1(Map2)である。
アクティブバンクBA1(設定値001b)なら,2バンクリフレッシュではリフレッシュバンクはBA2&3(Map1)またはBA0&2(Map2),1バンクリフレッシュではBA3(Map1)またはBA0(Map2)である。
アクティブバンクBA2(設定値010b)なら,2バンクリフレッシュではリフレッシュバンクはBA0&1(Map1)またはBA1&3(Map2),1バンクリフレッシュではBA0(Map1)またはBA3(Map2)である。
アクティブバンクBA3(設定値011b)なら,2バンクリフレッシュではリフレッシュバンクはBA0&1(Map1)またはBA0&2(Map2),1バンクリフレッシュではBA1(Map1)またはBA2(Map2)である。
アクティブバンクBA0&1(設定値100b)なら,2バンクリフレッシュではリフレッシュバンクはBA2&3(Map1),1バンクリフレッシュではBA2or3(Map1)である。メモリマップMap2は対象外である。
アクティブバンクBA0&2(設定値101b)なら,2バンクリフレッシュではリフレッシュバンクはBA1&3(Map2),1バンクリフレッシュではBA1or3(Map2)である。メモリマップMap1は対象外である。
アクティブバンクBA2&3(設定値110b)なら,2バンクリフレッシュではリフレッシュバンクはBA0&1(Map1),1バンクリフレッシュではBA0or1(Map1)である。メモリマップMap2は対象外である。
アクティブバンクBA1&3(設定値111b)なら,2バンクリフレッシュではリフレッシュバンクはBA0&2(Map2),1バンクリフレッシュではBA0or2(Map2)である。メモリマップMap1は対象外である。
このようにレジスタ543への設定値を定義しておくことで,システムが採用するメモリマッピングと,2バンクリフレッシュか1バンクリフレッシュかに応じて,デコーダDEC0の出力0〜7に対応する8つのケースに対応する,アクティブバンク番号ACT_BA[1:0]と,バックグランドリフレッシュバンク番号BR_BA[1:0],BR_A[3:0]とを,任意に設定することができる。
図165は,デコーダDEC1の変換テーブルを示す図である。セレクタSEL0の出力(DEC1の入力)0〜7にアクティブバンクが対応付けられている。この対応関係は,図164にも示されている。そこで,レジスタ設定値の例に対応するデコーダDEC1の動作について説明する。
図166は,レジスタ設定値の第1例に対応するデコーダDEC1の変換動作を示す図表である。第1例のレジスタ設定値はメモリマップMap1に対応しており,セレクタSEL0の8つの入力端子には「01234466」が設定される。それに伴い,デコーダDEC1は,セレクタSEL0の選択信号(デコーダDEC0の出力信号)に対応して選択されたセレクタSEL0の出力値「01234466」に対応して,図165のテーブルを参照し図166に示される出力(DEC1 Output)を生成する。セレクタ出力値「0123」では1バンクが選択され,セレクタ出力値「4466」では2バンクが選択される。
図167は,レジスタ設定値の第2例に対応するデコーダDEC1の変換動作を示す図表である。第2例のレジスタ設定値はメモリマップMap2に対応しており,セレクタSEL0の8つの入力端子には「01235577」が設定される。それに伴い,デコーダDEC1は,セレクタSEL0の出力値「01235577」に対応して,図165のテーブルを参照し図167に示される出力(DEC1 Output)を生成する。この場合も,セレクタ出力値「0213」では1バンクが選択され,セレクタ出力値「6677」では2バンクが選択される。
次に,図161中のバックグランドリフレッシュバンク番号生成部1613は,レジスタ543のBRBA0〜3に設定された設定値を,セレクタSEL0の出力の下位2ビットで選択するセレクタSEL1と,セレクタ出力をバックグランドリフレッシュ対象バンク番号BR_BA[1:0],BR_A[3:0]に変換するデコーダDEC2とを有する。このバックグランドリフレッシュ対象バンク番号BR_BA[1:0]は,2バンクリフレッシュする場合に対応し,例えば図117のバンクアドレスBA[1:0]に対応する。また,バックグランドリフレッシュ対象バンク番号BR_A[3:0]は,1バンクリフレッシュする場合に対応し,例えば図118のアドレス端子A[3:0]に対応する。
図168は,セレクタSEL1の動作を示す図表である。セレクタSEL0の下位2ビットを選択信号として,レジスタ543に設定されたBRBA0〜3の値を選択する。
図169は,デコーダDEC2の変換テーブルを示す図表である。デコーダ入力(DEC2 Input)は,BRBA0〜3に対応してレジスタ543に設定しうる値0〜7であり,値「0,1,2,3」は,1バンクリフレッシュに対応し,それぞれバンク0〜3をリフレッシュすることに対応する。また,値「4」「6」は,マップMap1の場合の2バンクリフレッシュに対応し,それぞれバンク0&1,2&3をリフレッシュすることに対応する。そして,値「5」「7」は,マップMap2の場合の2バンクリフレッシュに対応し,それぞれバンク0&2,1&3をリフレッシュすることに対応する。この場合も,レジスタ543には,メモリマップMap1,Map2に対応し,且つ1バンクリフレッシュか2バンクリフレッシュかに対応して,任意の値を設定することができる。
図170は,第1のレジスタ設定値の場合のデコーダDEC2の動作を示す図である。この例はメモリマップMap1における2バンクリフレッシュに適用され,第1のレジスタ設定値では,BRBA0〜3が「6644」になる。そして,セレクタSEL1でこれらの設定値が,セレクタSEL0の出力の下位2ビットに応じて選択され,デコーダDEC2は,その変換テーブル(図169)を参照して,バックグランドリフレッシュバンク番号BA[1:0]を出力する。つまり,デコーダDEC2の入力が「6」であればバンクBank2&3がリフレッシュされ,「4」であればバンクBank0&1がリフレッシュされる。
図171は,第2のレジスタ設定値の場合のデコーダDEC2の動作を示す図である。この例はメモリマップMap2における2バンクリフレッシュに適用され,第2のレジスタ設定値では,BRBA0〜3が「7755」になる。そして,セレクタSEL1でこれらの設定値が,セレクタSEL0の出力の下位2ビットに応じて選択され,デコーダDEC2は,その変換テーブル(図169)を参照して,バックグランドリフレッシュバンク番号BA[1:0]を出力する。つまり,デコーダDEC2の入力が「7」であればバンクBank1&3がリフレッシュされ,「5」であればバンクBank0&2がリフレッシュされる。
図172は,第3のレジスタ設定値の場合のデコーダDEC2の動作を示す図である。この例はメモリマップMap1における1バンクリフレッシュに適用され,第3のレジスタ設定値では,BRBA0〜3が「2301」になる。そして,セレクタSEL1でこれらの設定値が,セレクタSEL0の出力の下位2ビットに応じて選択され,デコーダDEC2は,その変換テーブル(図169)を参照して,バックグランドリフレッシュバンク番号A[3:0]を出力する。つまり,デコーダDEC2の入力が「2,3,0,1」に対応してバンクBank2,3,0,1がそれぞれリフレッシュされる。
図173は,第4のレジスタ設定値の場合のデコーダDEC2の動作を示す図である。この例はメモリマップMap2における1バンクリフレッシュに適用され,第4のレジスタ設定値では,BRBA0〜3が「1302」になる。そして,セレクタSEL1でこれらの設定値が,セレクタSEL0の出力の下位2ビットに応じて選択され,デコーダDEC2は,その変換テーブル(図169)を参照して,バックグランドリフレッシュバンク番号A[3:0]を出力する。つまり,デコーダDEC2の入力が「1,3,0,2」に対応してバンクBank1,0,3,2がそれぞれリフレッシュされる。
以上の通り,リフレッシュ対象のバンクの組み合わせは,通常アクセス動作によるアクティブバンクに対して高々4種類しかない。よって,セレクタSEL1の入力を4つに制限し,ただし,セレクタSEL0の出力値3ビットの下位2ビットで,セレクタSEL1の4入力のいずれかを選択することにより,アクティブバンクに対応するリフレッシュバンクを生成することができる。
図161に戻り,制御部1615には,バックグランドリフレッシュモード信号BRMDが入力される。このモード信号BRMDは,4バンクリフレッシュか,2または1バンクリフレッシュかを示す信号であり,レジスタ543に設定される。モード信号BRMDが4バンクリフレッシュの場合は,バックグランドリフレッシュ動作は禁止される。
制御部1615は,バックグランドリフレッシュイネーブル信号BR_ENに応答して,コマンドCMDにBREN,ACTなどを出力するときに,コマンドに対応する選択信号S2,S3,S4をセレクタ2,3,4にそれぞれ供給する。制御部1615は,バックグランドリフレッシュイネーブル信号BR_ENがHレベルの場合,コマンドBRENの出力時に,セレクタSEL2にはリフレッシュバースト長RBL_A[7:4]を選択させ,セレクタSEL3にはバックグランドリフレッシュバンク番号BR_BA[1:0]を選択させ,セレクタSEL4にはバックグランドリフレッシュアドレスBR_A[3:0]を選択させる。その結果,アドレス端子A[7:4]からはリフレッシュバースト長RBLが,バンクアドレス端子BA[1:0]からは,バックグランドリフレッシュバンク番号BR_BA[1:0]がそれぞれ出力される。そして,制御部1615は,コマンドACTの出力時に,セレクタSEL2にはその他A[7:4]を選択させ,セレクタSEL3にはアクティブバンク番号ACT_BA[1:0]を選択させ,セレクタ4にはその他A[3:0]を選択させる。その結果,アドレス端子A[7:4]からは通常のアドレスA[7:4]が,バンクアドレス端子BA[1:0]からは,アクティブ対象の選択バンクアドレスBA[1:0]がそれぞれ出力される。
図162は,メモリコントローラの動作タイミングチャート図である。この例では,画像処理装置81が,クロック番号3からアクセス要求信号REQをアサートしながら,画像アドレスADR=0x0000,サイズ信号SIZE=32,アクセスタイプ信号ATYP=000b,リードライト信号RWX=Hを出力し,クロック番号22からストローブ信号STBをアサートしながら,32バイトの読み出しデータDATAを32クロックサイクルで入力する。
一方,メモリコントローラ82は,画像アドレスADR=0x0000,サイズ信号SIZE=32,アクセスタイプ信号ATYP=000bから,画像データの先頭画素位置POSX,POSY=0,0,アクティブバンクACT_BA=BA0,BA1,ロウアドレスRA0,A1,コラムアドレスCA0などの水平アクセスであること,バックグランドリフレッシュをバンクBR_BA=BA2,BA3に対しリフレッシュバースト長RBL=4で行うことなどを決定する。そして,メモリコントローラ82はメモリ装置に,クロック番号6でバックグランドリフレッシュコマンドBRENとリフレッシュバンクBA2,3とリフレッシュバースト長RBL=4とを出力し,さらに,クロック番号8でアクティブコマンドACT,バンクアドレスBA0,ロウアドレスRA0を出力し,クロック番号10でアクティブコマンドACT,バンクアドレスBA1,ロウアドレスRA1を出力し,それに続いて,リードコマンドRD,バンクアドレスBA0,コラムアドレスCA0を出力し,リードコマンドRD,バンクアドレスBA1,コラムアドレスCA0を出力し,プリチャージコマンドPER,バンクアドレスBA0,プリチャージコマンドPER,バンクアドレスBA1を出力する。各リードコマンドのバースト長BL=8である。よって,メモリコントローラは,上記のコマンドACT,RD,PREを,更に2組出力する。その結果,メモリ装置のデータ端子DQから32バイトのデータd0〜d31を受信する。そして,メモリコントローラは,このデータd0〜d31をクロック番号22から32クロックサイクルで画像処理装置に出力する。
メモリコントローラ82は,適切なリフレッシュブロック数RBCを,レジスタセットコマンドEMRSと共にメモリに出力して,メモリ内のレジスタに設定する。その場合は,メモリコントローラ82は,サイズ信号SIZEから得られるデータ転送に必要なクロックサイクル数から,リフレッシュブロック数RBCを考慮してリフレッシュバースト長RBLを決定する。さらに,メモリコントローラ82は,リフレッシュバースト長RBLを,レジスタセットコマンドEMRSと共にメモリに出力して,メモリ内のレジスタに設定することもできる。
《パラメータの入力方法》
以上,画像データなどの二次元配置データを記憶するメモリ装置への種々のアクセスやリフレッシュの機能を説明した。その場合,種々の機能の実現に必要なパラメータがメモリコントローラからメモリ装置に入力される。このパラメータの入力方法について以下説明する。
図174は,バイトバウンダリにおけるスタートバイト信号SBを示す図である。既に説明したとおり,バイトバウンダリでは,4バイトからなるメモリ単位領域内の先頭バイトを示すスタートバイト信号SBをメモリ装置に入力する。図173では,バンク0,1とロウアドレスRA5で選択される隣接する2つのページ領域をまたぐ領域1740がアクセス対象の場合は,スタートバイト信号SB=2がメモリ装置に供給される。これにより,バンク0,ロウアドレスRA5のページ領域内であって,コラムアドレスCA7で選択される4バイトデータB0〜B3のうち,2バイトデータB2,B3と,バンク1,ロウアドレスRA5のページ領域内であって,コラムアドレスCA4で選択される4バイトデータB0〜B3のうち,2バイトデータB0,B1とが,入出力端子と対応付けられ,4バイトデータが入出力される。この4バイトデータの対応付けは,メモリマップ12がアップモードの場合に対応する。ダウンモードでは4バイトデータの対応付けは異なる。
また,メモリ装置では,アクセス領域1740のコラムアドレスCA7から,隣接するページ領域のコラムアドレスCA4を算出するために,ページ領域内のコラムアドレスのステップ数データCST=4があらかじめレジスタに設定される。
図175は,バイト組み合わせデータの第2の情報BMRと第1の情報SB(スタートバイト)との関係を示す図である。図175の上半分が第2の情報BMRがアップモード,下半分が第2の情報BMRがダウンモードに対応する。それぞれ,スタートバイトSB=0〜3に対応して,入出力端子に対応付けられる4バイトの組み合わせを示している。アップモードについては,図174で示した通りである。ダウンモードでは,4バイト領域内の4バイトの配列が,アップモードと逆になっている。それに伴い,スタートバイトSBと入出力端子に対応付けられる4バイトの組み合わせとが,アップモードと逆の関係になっている。この第2の情報BMRもメモリ装置に入力され,必要に応じて設定される。
図176は,ロウアドレスステップRSを示す図である。メモリ装置は,マルチバンクアクセスでは,矩形アクセス領域1760の左上のページ領域のバンクアドレスとロウアドレスに基づいて,残りのバンクアドレスとロウアドレスを求める。そのために,メモリマッピング12の情報として,ロウアドレスのステップ情報RSが必要になる。よって,メモリ装置は,ロウアドレスのステップ情報RSを入力し,必要に応じてレジスタ内に設定する。矩形アクセス領域1740の場合は,アクティブコマンドと共にバンクアドレスBA3,ロウアドレスRA1が与えられ,4バンクアクセス(マルチバンク情報SA'=4)の場合は,RS=4に基づいてロウアドレスRA2,RA5,RA6が求められる。
図177は,メモリマッピング情報ARを示す図である。図中には,2種類のメモリマッピングが示されている。例えば,タイプAの場合はAR=0が,タイプBの場合はAR=1が,それぞれメモリ装置に入力されレジスタに設定される。マルチバンクアクセスでは,このメモリマッピング情報ARに基づいてアクセス対象バンクの演算が行われる。また,バックグランドリフレッシュでも,メモリマッピング情報ARに基づいてリフレッシュ対象のバンクが求められる。タイプAは,奇数行がバンク0,1偶数行がバンク2,3で構成され,タイプBは,奇数行がバンク0,2偶数行がバンク1,3で構成されている。ロウアドレスRAは同じである。図176の例は,タイプAの場合である。
図178は,バックグランドリフレッシュにおけるリフレッシュバースト長RBLとリフレッシュブロック数RBCとを示す図である。バックグランドリフレッシュでは,コマンドに応答して,リフレッシュバースト長RBLの回数のリフレッシュ動作が繰り返され,各リフレッシュ動作がリフレッシュブロック数RBCのブロックで並列に行われる。図178(A)は,RBC=2,RBL=6の例であり,6回のリフレッシュで合計12本のワード線でリフレッシュが行われる。図178(B)は,RBC=3,RBL=4の例であり,この場合も4回のリフレッシュで合計12本のワード線でリフレッシュが行われる。図178(C)は,RBC=4,RBL=3の例であり,この場合も3回のリフレッシュで合計12本のワード線でリフレッシュが行われる。
以上の通り,メモリ装置は,様々なアクセスを実現するために,それぞれ必要なパラメータを入力する必要がある。このパラメータの入力方法は,専用入力端子を利用する方法,使用されていないアドレス入力端子を利用する方法などがある。また,パラメータの入力方法は,メモリ装置がシングルデータレートかダブルデータレートかによって異なる。そして,パラメータの入力方法は,アドレスがマルチプル入力(マルチプレクス方式)かノンマルチプル入力(ノンマルチプレクス方式)かによっても異なる。これらについて以下説明する。
図179は,メモリ装置内の専用入力端子とその入力バッファ及びモードレジスタの構成を示す図である。専用入力端子SPに入力されたパラメータ信号が,専用入力バッファ1790に入力され,そこでラッチされた信号1792がモードレジスタ1791に設定され,設定された信号1793が図示しない内部回路に供給される。ただし,パラメータ信号に対応する機能(バイトバウンダリ機能,マルチバンクアクセス機能,バックグランドリフレッシュ機能)がディセーブルにされる場合は,対応するパラメータはデフォルト値に設定される必要がある。
そこで,機能がイネーブルかディセーブルかを示すイネーブル信号1794に応じて,イネーブルならモードレジスタ1791には入力されたパラメータが設定され,ディセーブルならモードレジスタ1791にはパラメータとしてデフォルト値が設定される。また,入力バッファ1790は,イネーブル信号1794がイネーブルなら専用入力端子SPからの信号を取り込み,ディセーブルなら出力信号1792がHレベルにクランプされる。よって,ディセーブルの場合は,専用入力端子SPと入力バッファ1790との間を,ボンディングワイヤーで接続する必要はない。
図180は,メモリ装置内の専用入力端子とその入力バッファ及びモードレジスタの構成を示す図である。ここでは,種々のパラメータのうち,一例としてスタートバイトSB,マルチバンク情報SA',リフレッシュバンク情報SAを専用端子SPから入力する例が示されている。
2ビットのスタートバイトSBが専用端子SP0から入力され,入力バッファ1790−0に取り込まれ,モードレジスタ1791−0に設定される。モードレジスタ1791−0への設定は,モードレジスタセットパルスMRSPZに応答して行われる。ただし,イネーブル信号1800がディセーブルの場合は,モードレジスタ1791−0はデフォルト値(SB=0,スタートバイト=0)に設定され,入力バッファ1790−0の出力はクランプされる。このイネーブル信号1800は,図示しないモードレジスタMRS,ボンディングオプション,フューズ回路などから供給される。
同様に,2ビットのマルチバンク情報SA’が専用端子SP1から入力され,入力バッファ1790−1に取り込まれ,モードレジスタ1791−1に設定される。モードレジスタ1791−1への設定は,モードレジスタセットパルスMRSPZに応答して行われる。イネーブル信号1801がディセーブルの場合は,上記と同様にモードレジスタの値はデフォルト値(SA'=0,1バンクのみ選択)に設定され,入力バッファの出力はクランプされる。
同様に,2ビットのリフレッシュバンク情報SAも専用端子SP2から入力されモードレジスタ179102に設定される。また,イネーブル信号1802がディセーブルの場合は,上記と同様にモードレジスタの値はデフォルト値(SA=3,全バンク選択)に設定され,入力バッファの出力はクランプされる。これらの各2ビットの情報SB,SA’,SAはそれぞれ2つの専用端子から並列に入力される。または,1つの専用端子からシリアルに入力されてもよい。
図181は,モードレジスタの一例を示す図である。この例では,前述のパラメータをアドレス端子から入力しモードレジスタに設定する。図中,モードレジスタ領域1810,1811,1812が示されている。それぞれバンクアドレスBA0,BA1の組み合わせと,同期クロックの立ち上がりエッジRiseEdgeと立ち下がりエッジFallEdgeとに対応して,アドレス端子A0〜A6の入力値と設定値とが示されている。
まず,モードレジスタセットコマンドMRSと共にバンクアドレスBA0=0,BA1=0が入力されると,モードレジスタ1810に,クロックの立ち上がりエッジRiseEdgeでは,アドレス端子A0-A2から入力されるバース長と,アドレス端子A3-A5から入力されるリードレイテンシがそれぞれ設定され,立ち下がりエッジFallEdgeでは,アドレス端子A0-A2から入力されるライトリカバリ値が設定される。
次に,モードレジスタセットコマンドMRSと共にバンクアドレスBA0=1,BA1=0が入力されると,モードレジスタ1811に,クロックの立ち上がりエッジRiseEdgeでは,アドレス端子A0-A5から入力される値(図示)がそれぞれ設定され,立ち下がりエッジFallEdgeでは,アドレス端子A0-A4それぞれから入力されるバイトシフト機能フラグBS,バイト組み合わせ情報の第2情報BMR,マルチバンク機能フラグMB,バックグランドリフレッシュ機能フラグBR,メモリマッピング情報ARが設定される。なお,これらはイネーブルかディセーブルかを示す情報のみを図示したが、上記で説明してきたように,バイトシフト情報SB,マルチバンク情報SA’,リフレッシュバンク情報SA又はリフレッシュブロック数RBC等を指定する情報をモードレジスタに設定することも可能である。
さらに,モードレジスタセットコマンドMRSと共にバンクアドレスBA1=0,BA1=1が入力されると,モードレジスタ1812に,クロックの立ち上がりエッジRiseEdgeでは,アドレス端子A0-A5から入力されるロウアドレスステップ情報RSが,立ち下がりエッジFallEdgeでも,アドレス端子A0- A5から入力されるロウアドレスステップ情報RSが設定される。
なお,バンクアドレスBA0=1,BA1=1のときのモードレジスタ領域は試験時の設定に利用される。また,表1813は,バンクアドレスBA0,BA1の組み合わせに対する,通常モードレジスタMRSと拡張モードレジスタEMRSとを示す。さらに,表1814〜1819は,モードレジスタ領域1811におけるアドレス端子A0〜A6の値とそれぞれの設定値とを示す。
図182は,イネーブル信号生成回路の一例を示す図である。図182(A)は,ボンディングオプションにより設定されるイネーブル信号生成回路1820,1821を示す。イネーブル信号生成回路1820は,ボンディングオプション端子1825と電源端子Vddとグランド端子Vssとを有し,ボンディングオプション端子1825と電源端子Vdd間をボンディングワイヤで接続することで,イネーブル信号1794がVddになり,特殊なアクセス機能をイネーブルにする。一方,イネーブル信号生成回路1821は,ボンディングオプション端子1825とグランド端子Vssとの間をボンディングワイヤで接続することで,イネーブル信号1794がVssになり,アクセス機能をディセーブルにする。
図182(B)は,フューズFSにより設定されるイネーブル信号発声回路1822,1823を示す。イネーブル信号発声回路1822は,電源Vdd,グランド電源Vss,抵抗R1,フューズFSからなり,フューズFSを溶断することでイネーブル信号1794がVddになりイネーブル状態になる。イネーブル信号発声回路1823は,フューズFSを溶断しないことでイネーブル信号1794がVssになりディセーブル状態になる。
図183は,シングルデータレート(SDR)における入力方法を示す図である。ここでは,パラメータが専用端子(Special Pin0,1)から入力される例である。図中(A)は,クロックCLK(実線)の立ち上がりエッジに同期して,バックグランドリフレッシュコマンドBRENと共に,バンクアドレス端子からバンクアドレスBA0,BA1が,専用端子からリフレッシュバンク情報SA0,SA1がそれぞれ入力される。図中(B)は,クロックCLKの立ち上がりエッジに同期して,アクティブコマンドACTと共に,バンクアドレス端子からバンクアドレスBA0,BA1が,専用端子からマルチバンク情報SA’0,SA’1がそれぞれ入力される。図中(C)は,クロックCLKの立ち上がりエッジに同期して,リードまたはライトコマンドRD/WRと共に,バンクアドレス端子からバンクアドレスBA0,BA1が,専用端子からスタートバイト情報SB0,SB1がそれぞれ入力される。図示しないが,クロックCLKの立ち上がりエッジに同期して,拡張モードレジスタセットコマンドEMRSと共に,専用端子からRBL,RBC,AR,RST,CSなどのパラメータを入力する。
図184は,ダブルデータレート(DDR)における入力方法を示す図である。この例もパラメータが専用端子(Special Pin)から入力される例である。各コマンドとパラメータの関係は,図183と同じである。図184では,ダブルデータレートであるので,クロックの立ち上がりエッジと立ち下がりエッジに同期して,バンクアドレスBA0,1とパラメータSA0,SA1,SA’0,SA’1,SB0,SB1が入力される。
次に,専用端子を利用せずに不使用状態のアドレス端子からパラメータを入力する方法について説明する。
図185は,ADQマルチプレクス入力方式における入力方法を示す図である。ADQマルチプレクス入力方式では,アドレス入力端子とデータ入出力端子が共通端子で構成され,コマンドと共にアドレスが入力され,それに続いてデータが入出力される。そして,アドレス端子数よりデータ端子数のほうが多い場合は,コマンド入力時にアドレスと共にパラメータを共通端子から入力することができる。
図185(A)は入力回路構成を示しており,共通端子ADQ(A/DQ0〜A/DQ20,21ビット)とデータ端子DQ(DQ21〜DQ31,11ビット)が設けられ,共通端子ADQはアドレスとデータが共有し,データ端子DQはデータのみが使用する。そこで,このデータ端子DQを利用してパラメータを入力することができる。共通端子ADQは,アドレスバッファ1850と入出力バッファ1852−0に接続され,それぞれアドレスラッチ回路1851,メモリセル1853−0に接続される。また,データ端子DQは,専用バッファ1854と入出力バッファ1852−1に接続され,それぞれモードセレクタ1855とメモリセル1853−1に接続される。
図185(B)はタイミングチャートを示し,SDRの例である。まず,ライトコマンドWRと共に,共通端子ADQから21ビットのアドレスADDが,データ端子DQからパラメータSPがそれぞれ入力され,アドレスADDはアドレスバッファ1850に,パラメータSPは専用バッファ1854にそれぞれ取り込まれる。コマンドWRから3クロック後に共通端子ADQとデータ端子DQとから32ビットのデータが入力される。コマンドがリードコマンドRDであればデータが出力される。コマンドと共に入力されるパラメータSPは,例えばマルチバンク情報SA’,リフレッシュバンク情報SA,スタートバイトSBなどである。
ADQマルチプレクスでは,SDRAMのようにアクティブコマンドとライトコマンドとを時分割で入力せずに,コマンドと共にロウ,コラムアドレスを一度に入力し,その後データを入出力する。よって,コマンドと共にアドレスが入力されるときに,不使用のデータ端子DQからパラメータを入力することができる。
図186は,アドレスマルチプレクス入力方式における入力方法を示す図である。アドレスマルチプレクス入力方式はSDRAMなどの入力方式であり,アドレス端子Addがロウアドレスとコラムアドレスとで共有され,RASサイクルとCASサイクルでそれぞれロウアドレスとコラムアドレスが共通アドレス端子Addから入力される。ただし,メモリセルアレイの構成上,ロウアドレス数がコラムアドレス数よりも多い場合は,CASサイクル時に使用していないアドレス端子からパラメータを入力することができる。例えば,スタートバイトSBがCASサイクルで入力される。
図186(A)は入力回路構成を示し,アドレス端子Add(Add0〜7,8ビット)は,アドレスバッファ1850−0,1850−1に接続され,それらはそれぞれロウアドレスラッチ回路1851−0とコラムアドレスラッチ回路1851−1とに接続される。また,アドレス端子Add(Add8〜13,6ビット)は,アドレスバッファ1850−2とスタートバイトバッファ1860とに接続され,それらはそれぞれロウアドレスラッチ回路1851−2とスタートバイトセレクタ回路1861とに接続される。
図186(B)は,タイミングチャートを示し,SDRの例である。まず,RASサイクルでアクティブコマンドACTと共に,14ビットのロウアドレスRAがアドレス端子Add[7:0],Add[13:8]から入力され,CASサイクルでリードまたはライトコマンドRD/WRと共に,8ビットのコラムアドレスCAがアドレス端子Add[7:0]から,スタートバイトSB[1:0]がアドレス端子Add[13:8]のいずれかの端子からそれぞれ入力される。
図187は,ダブルデータレート(DDR)でアドレスマルチプレクス方式における入力方法を示す図である。アクティブコマンドACTが入力されるRASサイクルで,クロックの立ち上がりエッジに同期して14ビットのロウアドレスRAがアドレス端子Add[7:0],Add[13:8]から入力され,クロックの立ち下がりエッジに同期してパラメータSPがアドレス端子Add[7:0],Add[13:8]から入力される。このパラメータSPは,例えばロウアドレスステップ情報RS,メモリマップ情報AR,マルチバンク情報SA’などである。
また,リードまたはライトコマンドRD/WRが入力されるCASサイクルで,クロックの立ち上がりエッジに同期して8ビットのコラムアドレスCAがアドレス端子Add[7:0]から入力され,クロックの立ち下がりエッジに同期してパラメータSPがアドレス端子Add[7:0]のいずれかの端子から入力される。このパラメータSPは,例えばスタートバイトSB,コラムアドレスステップ情報CST,アクセス矩形サイズ情報(W,H),バイト組み合わせ第2情報BMR(UP,DOWN,ALL,EVEN,ODD)などである。
DDR,アドレスマルチプレクス方式であれば,入力タイミングが合計で4回あるので,使用されないアドレス端子を利用してパラメータを入力することができる。
図188は,ダブルデータレート(DDR)でアドレスマルチプレクス方式における入力方法を示す図である。この例では,アドレス端子の数を8ビットのAdd[5:0],Add[7:6]に減らした例である。DDR,アドレスマルチプレクス方式では,4回の入力タイミングがあるので,このようにアドレス端子を減らしてもなお不使用中のアドレス端子が存在する。よって,その不使用中のアドレス端子からパラメータを入力することができる。
まず,アクティブコマンドACTが入力されるRASサイクルで,クロックの立ち上がりエッジに同期して8ビットのロウアドレスRAがアドレス端子Add[5:0],Add[7:6]から入力され,クロックの立ち下がりエッジに同期して6ビットのロウアドレスRAがアドレス端子Add[5:0]から入力され,パラメータSPがアドレス端子Add[7:6]から入力される。このパラメータSPは,例えばマルチバンク情報SA’,ロウアドレスステップ情報RS,メモリマップ情報ARなどである。
また,リードまたはライトコマンドRD/WRが入力されるCASサイクルで,クロックの立ち上がりエッジに同期して8ビットのコラムアドレスCAがアドレス端子Add[5:0],Add[7:6]から入力され,クロックの立ち下がりエッジに同期してパラメータSPがアドレス端子Add[5:0],Add[7:6]のいずれかの端子から入力される。このパラメータSPは,例えばスタートバイトSB,コラムアドレスステップ情報CST,アクセス矩形サイズ情報(W,H),バイト組み合わせ第2情報BMR(UP,DOWN,ALL,EVEN,ODD)などである。
以上説明したとおり,バイトバウンダリアクセス,マルチバンクアクセス,バックグランドリフレッシュなどの特殊な機能の実現に必要なパラメータは,専用端子からまたは不使用状態のアドレス端子から入力することができる。メモリ装置の入力方式に対応した最適なパラメータの入力方法が選択される。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,
バックグランドリフレッシュコマンドとリフレッシュバースト長情報に応答して,リフレッシュ対象バンク内のメモリコアに該リフレッシュバースト長情報に対応する回数のリフレッシュ動作を連続して実行させる制御回路とを有するメモリ装置。
(付記2)
メモリコントローラからのコマンドに応答して動作するメモリ装置において,
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,
バックグランドリフレッシュコマンドに応答して,前記メモリコントローラにより設定されたリフレッシュ対象バンク内のメモリコアに,前記メモリコントローラにより設定されたリフレッシュバースト長の回数のリフレッシュ動作を連続して実行させ,前記リフレッシュ対象バンク内のメモリコアが前記リフレッシュ動作を実行中に,通常動作コマンドに応答して,前記リフレッシュ対象バンク以外のバンクであって前記バンクアドレスにより選択されたバンク内のメモリコアに,前記通常動作コマンドに対応する通常メモリ動作を実行させる制御回路とを有するメモリ装置。
(付記3)
付記2において,
さらに,前記複数のバンクそれぞれに,または前記複数のバンクの複数組それぞれに,対応するバンク内のリフレッシュ対象アドレスをカウントするリフレッシュアドレスカウンタを有し,
前記制御回路は,
前記バックグランドリフレッシュコマンドに応答して,前記設定されたリフレッシュ対象バンクにリフレッシュ制御信号を出力するバックグランドリフレッシュ制御部と,
前記リフレッシュバースト長が設定されるリフレッシュバースト長レジスタと,
前記複数のバンクそれぞれに設けられ,前記バックグランドリフレッシュ制御信号に応答して,前記リフレッシュバースト長レジスタに設定されたリフレッシュバースト長の回数だけ,前記リフレッシュアドレスカウンタのアドレスについて前記メモリコアにリフレッシュ動作を実行させるコアコントローラとを有することを特徴とするメモリ装置。
(付記4)
付記2において,
1回のリフレッシュサイクルで同時に活性化されるメモリブロック数を示すリフレッシュブロック数が供給され,
前記制御回路は,前記バックグランドリフレッシュコマンドに応答して,前記リフレッシュブロック数のメモリブロックを同時に活性化するリフレッシュ動作を,前記設定されたリフレッシュバースト長の回数,リフレッシュ対象バンクに実行させることを特徴とするメモリ装置。
(付記5)
付記3において,
前記バックグランドリフレッシュコマンドと同時に前記リフレッシュバースト長を入力し,前記リフレッシュバースト長レジスタが前記バンクに対応して設けられ,入力された前記リフレッシュバースト長がリフレッシュ対象バンク内のリフレッシュバースト長レジスタに設定されることを特徴とするメモリ装置。
(付記6)
付記4において,
さらに,リフレッシュブロック数レジスタを有し,
前記バックグランドリフレッシュコマンドと同時に前記リフレッシュブロック数を入力し,
前記入力されたリフレッシュブロック数が前記リフレッシュブロック数レジスタに設定されることを特徴とするメモリ装置。
(付記7)
付記3において,
前記リフレッシュバースト長レジスタがモードレジスタ内に設けられ,
モードレジスタ設定コマンドと同時に前記リフレッシュバースト長を入力し,
入力された前記リフレッシュバースト長が前記モードレジスタ内のリフレッシュバースト長レジスタに設定されるメモリ装置。
(付記8)
付記4において,
リフレッシュブロック数レジスタがモードレジスタ内に設けられ,
モードレジスタ設定コマンドと同時に前記リフレッシュブロック数を入力し,
入力されたリフレッシュブロック数が当該モードレジスタ内のリフレッシュブロック数レジスタに設定されるメモリ装置。
(付記9)
付記3において,
前記コアコントローラは,前記リフレッシュバースト長の回数のリフレッシュ動作中に,新たに入力されたバックグランドリフレッシュコマンドに応答して,前記リフレッシュ動作の残り回数に前記リフレッシュバースト長を加えた回数,前記リフレッシュ対象バンク内のメモリコアに前記リフレッシュ動作を連続して実行させることを特徴とするメモリ装置。
(付記10)
付記3において,
前記コアコントローラは,前記リフレッシュバースト長の回数のリフレッシュ動作中に,新たに入力されたバックグランドリフレッシュコマンドに応答して,前記リフレッシュ動作の残り回数にかかわらず,前記リフレッシュバースト長の回数,前記リフレッシュ対象バンク内のメモリコアに前記リフレッシュ動作を連続して実行させることを特徴とするメモリ装置。
(付記11)
付記3において,
前記コアコントローラは,リフレッシュオールコマンドに応答して,前記リフレッシュアドレスカウンタ内のアドレスから残りのアドレスまで,前記リフレッシュ対象バンク内のメモリコアにリフレッシュ動作を繰り返し実行させることを特徴とするメモリ装置。
(付記12)
付記3において,
前記コアコントローラは,前記リフレッシュバースト長の回数のリフレッシュ動作中に,バックグランドリフレッシュ停止コマンドに応答して,前記リフレッシュ対象バンク内のメモリコアにリフレッシュ動作を停止させることを特徴とするメモリ装置。
(付記13)
付記12において,
前記コアコントローラは,前記バックグランドリフレッシュ停止コマンドに応答して,前記リフレッシュ対象バンク内のメモリコアに前記実行中のリフレッシュ動作を終了させた後に,次のリフレッシュ動作を開始させないことを特徴とするメモリ装置。
(付記14)
付記3において,
モードレジスタへのアクティブリフレッシュ連動フラグの設定に基づき,前記バックグランドリフレッシュ制御部は,通常メモリ動作コマンドに応答して,入力されるバンクアドレスに対応するアクセス対象バンク以外のバンクに,前記バックグランドリフレッシュ制御信号を供給することを特徴とするメモリ装置。
(付記15)
付記3において,
前記コアコントローラは,リフレッシュ動作毎にカウントアップするリフレッシュバースト長カウンタを有し,
前記コアコントローラは,前記バックグランドリフレッシュコマンドに応答して,前記リフレッシュバースト長カウンタをリセットし,当該リフレッシュバースト長カウンタのカウンタ値が前記リフレッシュバースト長レジスタに設定されたリフレッシュバースト長に達するまで,前記リフレッシュ対象バンク内のメモリコアに前記リフレッシュ動作を実行させることを特徴とするメモリ装置。
(付記16)
付記3において,
前記コアコントローラは,リフレッシュ動作毎にカウントダウンするリフレッシュバースト長カウンタを有し,
前記コアコントローラは,前記バックグランドリフレッシュコマンドに応答して,前記リフレッシュバースト長カウンタに前記リフレッシュバースト長をセットし,当該リフレッシュバースト長カウンタのカウンタ値がゼロに達するまで,前記リフレッシュ対象バンク内のメモリコアに前記リフレッシュ動作を実行させることを特徴とするメモリ装置。
(付記17)
メモリコントローラからのコマンドに応答して動作するメモリ装置において,
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,
前記バンク内のメモリセルアレイの動作を制御する制御回路とを有し,
メモリ論理空間が前記バンクアドレスとロウアドレスにより選択される複数のページ領域を有し,前記複数のページ領域が行列状に配置され且つ隣接するページ領域が異なるバンクアドレス対応付けられたメモリマッピングに基づいて,前記複数のバンクが二次元配列データを記憶し,
前記制御回路は,前記二次元配列データを水平方向にアクセスする水平アクセス期間中において,当該水平アクセスに対応する通常動作コマンドに応答して,前記バンクアドレスにより選択されたバンク内のメモリコアに,前記通常動作コマンドに対応する通常メモリ動作を実行させ,バックグランドリフレッシュコマンドに応答して,前記水平アクセス対象バンク以外のリフレッシュ対象バンク内のメモリコアにリフレッシュ動作を実行させることを特徴とするメモリ装置。
(付記18)
付記17において,
前記制御回路は,前記二次元配列データを任意の矩形領域に対してアクセスする矩形アクセス期間中において,前記通常動作コマンドに応答して,前記バンクアドレスにより選択されたバンクと当該選択されたバンクに隣接するバンクとの中のメモリコアに,前記通常メモリ動作を実行させ,当該通常メモリ動作中においてリフレッシュ動作を禁止することを特徴とするメモリ装置。
(付記19)
メモリコントローラと,
前記メモリコントローラからのコマンドに応答して動作するメモリ装置とを有し,
前記メモリ装置は,
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,
バックグランドリフレッシュコマンドに応答して,前記メモリコントローラにより設定されたリフレッシュ対象バンク内のメモリコアに,前記メモリコントローラにより設定されたリフレッシュバースト長の回数のリフレッシュ動作を連続して実行させ,前記リフレッシュ対象バンク内のメモリコアが前記リフレッシュ動作を実行中に,通常動作コマンドに応答して,前記リフレッシュ対象バンク以外のバンクであって前記バンクアドレスにより選択されたバンク内のメモリコアに,前記通常動作コマンドに対応する通常メモリ動作を実行させる制御回路とを有することを特徴とするメモリシステム。
(付記20)
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,前記複数のバンク内のメモリコアの動作を制御する制御回路とを有するメモリ装置を制御するメモリコントローラにおいて,
上位装置からのアクセス要求に応答して,当該アクセス要求に対応する通常動作コマンドをバンクアドレスと共に前記メモリ装置に供給して,当該バンクアドレスで選択される通常アクセス対象バンク内のメモリコアに通常動作を実行させるシーケンサを有し,
前記シーケンサは,前記アクセス要求に応答して,前記通常アクセス対象バンク以外のバンクを特定するリフレッシュバンク情報と,リフレッシュ動作回数を指定するリフレッシュバースト長とを,バックグランドリフレッシュコマンドと共に前記メモリ装置に供給して,前記通常動作中に,前記リフレッシュバンク情報に対応するリフレッシュ対象バンク内のメモリコアに,前記リフレッシュバースト長の回数のリフレッシュ動作を連続して実行させることを特徴とするメモリコントローラ。
(付記21)
付記20において,
前記シーケンサは,前記アクセス要求に応答して,アクセス対象データ領域を示す情報に基づいて,前記バックグランドリフレッシュコマンドを発行可能か否かを判定し,発行可能な場合に,前記アクセス対象データ領域を示す情報に基づいて,前記リフレッシュバンク情報とリフレッシュバースト長とを求めることを特徴とするメモリコントローラ。
(付記22)
付記21において,
さらに,二次元配置データとメモリ空間とを対応付けるメモリマップ情報と,前記バックグランドリフレッシュコマンドに対応して前記リフレッシュ動作を実行させるバンク数情報とが設定されるレジスタを有し,
前記シーケンサは,前記アクセス対象データ領域を示す情報に加えて前記レジスタの設定情報に基づいて,前記リフレッシュバンク情報とリフレッシュバースト長とを求めることを特徴とするメモリコントローラ。
(付記23)
メモリコントローラと,
前記メモリコントローラからのコマンドに応答して動作するメモリ装置とを有し,
前記メモリ装置は,
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクを有し,
メモリ論理空間が前記バンクアドレスとロウアドレスにより選択される複数のページ領域を有し,前記複数のページ領域が行列状に配置され且つ隣接するページ領域が異なるバンクアドレス対応付けられたメモリマッピングに基づいて,前記複数のバンクが二次元配列データを記憶し,
さらに,前記二次元配列データを水平方向にアクセスする水平アクセス期間中において,通常動作コマンドに応答して,前記バンクアドレスにより選択されたバンク内のメモリコアに,前記通常動作コマンドに対応する通常メモリ動作を実行させ,バックグランドリフレッシュコマンドに応答して,前記水平アクセス対象バンク以外のリフレッシュ対象バンク内のメモリコアにリフレッシュ動作を実行させる制御回路を有することを特徴とするメモリシステム。
(付記24)
付記23において,
前記制御回路は,前記二次元配列データを任意の矩形領域に対してアクセスする矩形アクセス期間中において,前記通常動作コマンドに応答して,前記バンクアドレスにより選択されたバンクと当該選択されたバンクに隣接するバンクとの中のメモリコアに,前記通常メモリ動作を実行させ,当該通常メモリ動作中においてリフレッシュ動作を禁止することを特徴とするメモリシステム。
(付記25)
メモリセルアレイを含むメモリコアをそれぞれ有しバンクアドレスにより選択される複数のバンクと,前記複数のバンク内のメモリコアの動作を制御する制御回路とを有するメモリ装置を制御するメモリコントローラにおいて,
メモリ論理空間が前記バンクアドレスとロウアドレスにより選択される複数のページ領域を有し,前記複数のページ領域が行列状に配置され且つ隣接するページ領域が異なるバンクアドレス対応付けられたメモリマッピングに基づいて,前記複数のバンクが二次元配列データを記憶し,
上位装置からのアクセス要求に応答して,当該アクセス要求が前記二次元配列データを水平方向にアクセスする水平アクセスであることを判定し,当該水平アクセスに対応する通常動作コマンドをバンクアドレスと共に前記メモリ装置に供給して,当該バンクアドレスで選択される水平アクセス対象バンク内のメモリコアに通常動作を実行させるシーケンサを有し,
前記シーケンサは,前記アクセス要求に応答して,前記水平アクセス対象バンク以外のバンクを特定するリフレッシュバンク情報を,バックグランドリフレッシュコマンドと共に前記メモリ装置に供給して,前記通常動作中に,前記リフレッシュバンク情報に対応するリフレッシュ対象バンク内のメモリコアにリフレッシュ動作を実行させることを特徴とするメモリコントローラ。
(付記26)
付記25において,
前記シーケンサ,前記アクセス要求が前記二次元配列データを任意の矩形領域に対してアクセスする矩形アクセスの場合は,当該矩形アクセスに対応する通常動作コマンドをバンクアドレスと共に前記メモリ装置に供給して,当該バンクアドレスで選択されるアクセス対象バンク内のメモリコアに通常動作を実行させ,当該通常メモリ動作中において前記バックグランドリフレッシュコマンドを発行しないことを特徴とするメモリコントローラ。