(57)【特許請求の範囲】
【請求項１】
複数のＤＲＡＭメモリセルをそれぞれが有する複数のメモリバンクを備えたＤＲＡＭ部と、
前記ＤＲＡＭ部の記憶情報の一部を保持するＳＲＡＭセルを有するキャッシュメモリ部と、
前記ＤＲＡＭ部と前記キャッシュメモリ部とを接続するデュアルポートの内部データバスと、
ライトデータ又はリードデータを入出力するデータ入出力ノードと、
アドレス信号及びメモリ制御信号を入力する入力回路と、
前記ＤＲＡＭ部のリフレッシュ動作を制御するためのメモリ制御回路とを有し、
前記キャッシュメモリ部は、複数のエントリを有し、
前記複数のエントリのそれぞれは、前記複数のメモリバンクの一部の情報を記憶するためのデータ部と、前記データ部に記憶された情報に対応する前記複数のメモリバンクのアドレス情報を記憶するためのタグ部とを有し、
前記データ部は、複数のサブラインを有し、
前記タグ部は、前記複数のサブラインのそれぞれに記憶された情報が有効であるかを示すための複数の第１フラグと前記複数のサブラインのそれぞれに記憶された情報を前記メモリバンクに書き戻す必要があるかを示す複数の第２フラグとを有し、
前記複数のサブラインの数をＮ、前記内部データバスのビット数をＡ、前記データ入出力ノードのビット数をＢとした場合にＡ＝Ｎ・Ｂであり、
前記メモリ制御回路は、前記複数のメモリバンクの中で前記入力回路からのメモリアクセスの要求とリフレッシュ動作の要求が重なったメモリバンクに対しては、前記入力回路からのメモリアクセスの要求を優先して実行し、
前記キャッシュメモリ部は、前記入力回路からのアドレス信号及び制御信号により書き込み動作が指示されたとき、前記データ入出力ノードからのライトデータを該当するエントリのデータ部の１つのサブラインに書き込み、当該サブラインに対応した前記第２フラグの１つを有効にする第１動作を行って当該メモリサイクルを終了し、キャッシュミスヒットに該当するエントリで前記第２フラグが有効であるとき、当該情報を前記内部データバスを通して前記ＤＲＡＭ部に書き込む第２動作を前記第１動作に先行して行う半導体装置。
【請求項２】
請求項１において、
前記複数の第１フラグは、バリッドビットであり、前記複数の第２フラグは、ダーティビットである半導体装置。
【請求項３】
請求項１において、
前記第２動作では、
前記第２フラグが有効とされるサブラインの情報を前記ＤＲＡＭ部の対応するメモリバンクに書き込み、
前記第２フラグが無効とされるサブラインの情報は前記ＤＲＡＭ部の対応するメモリバンクに書き込まない半導体装置。
【請求項４】
請求項１において、
前記サブラインに前記メモリバンクの情報を書き込む際に、対応する前記第２フラグが無効であるサブラインに情報を書き込み、対応する前記第２フラグが有効であるサブラインには情報を書き込まない半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は半導体装置に関する。特に高速、高集積、低電力な用途に好適な半導体記憶装置および、論理回路と半導体記憶装置を集積した半導体装置に関する。
【０００２】
【従来の技術】
LSIに混載するオンチップメモリとしては、スタティックランダムアクセスメモリ(以下SRAMと記す)が主流である。しかしながら、SRAMは6つのトランジスタから構成されているためにメモリセルの面積がおおきく、そのためSRAMだけで容量の大きなメモリをLSIに混載することは困難である。一方一つのトランジスタと一つのキャパシタからなる、ダイナミックランダムアクセスメモリ(以下DRAMと記す)をLSIに混載する方法もある。DRAMはメモリセルの面積が小さいため、比較的大容量を混載することができる。しかしSRAMに比べるとサイクル時間が遅く、またリフレッシュ動作が必要なため、制御が複雑になり使い勝手が悪くなってしまうという欠点があった。前者のサイクル時間については、ビット線上のメモリセルの数を減らすことで高速化できることが知られているが、後者のリフレッシュについては、外部から見て完全に隠蔽することは困難である。
【０００３】
しかし最近、DRAMのメモリセルを用いてリフレッシュ動作を隠蔽した方法が、米国特許5999474号にて報告されている。前記米国特許に記載の半導体メモリ(以下本米国特許に従い、1T-SRAMと記す)においては、複数のバンクに分割されたDRAMと１バンク分のSRAMから構成され、SRAM部分をキャッシュメモリとして使用する。キャッシュメモリにヒットしている間は、DRAM部分はアクセスがないアイドル状態となるため、その間を利用して専用コントローラがDRAM内部のリフレッシュを完了し、外部からはリフレッシュの制御を不要としている。またその構成として、キャッシュメモリは制御が容易で高速なダイレクトマップ方式を適用し、さらにキャッシュメモリとDRAMはリードデータバスとライトデータバスからなるデュアルポートで接続されているため、キャッシュメモリからDRAMへの書き戻しと、DRAMからキャッシュメモリへのフェッチオンライトが1サイクルで実行可能な構成となっている。このようにすることで、例えばリード時キャッシュメモリがミスヒットの場合でも、DRAM部分から直ちにデータを読み出すことで、アドレスが入力されてから1サイクルでデータを出力することが可能であるとしている。以上のように、1バンク分のキャッシュメモリとマルチバンク構成のDRAMを利用することで、使い勝手のよいオンチップメモリを実現できる可能性がある。
【０００４】
【発明が解決しようとする課題】
しかしながら上記公知発明を検討したところ、1T-SRAM内のキャッシュメモリのキャッシュラインのデータ幅と、外部デバイスと1T-SRAMとを結ぶデータバスのバス幅が異なる場合において、所定の条件になるとリフレッシュ動作を隠蔽することが困難になる可能性があることがわかった。
【０００５】
通常キャッシュメモリは、複数のエントリからなり、前記エントリはデータを格納するデータ部と、そのアドレスを格納するタグ部からなる。また各エントリにはデータが変更されたことを示すダーティビットが設けられている。あるエントリのデータがライトアクセスによって変更された場合にダーティビットがセットされ、前記エントリが置き換え対象になったときには、主記憶に書き戻すことでキャッシュメモリと主記憶のデータの一貫性を維持することができる。このような方式をライトバック方式という。
【０００６】
ここで上記公知発明のキャッシュメモリにおいて、あるエントリのデータがダーティの時、そのエントリに対するライトアクセスが発生し、キャッシュミス(同一エントリ、異なるタグ)を起こしたとする。この場合キャッシュメモリとDRAMとの間でデータの一貫性を維持するために、キャッシュメモリからDRAMへの書き戻し(ライトバック)と、アクセスされたキャッシュラインへ、DRAMからデータのアロケート(フェッチオンライト)が実行される。つまり、ライトアロケート方式のライトバックの如く制御する。上記公知発明の構成によれば、キャッシュメモリのタグにはDRAMの各バンクアドレスを割り当てているため、前記ライトバックと前記フェッチオンライトは必ず２つの異なるバンクにおいてそれぞれ実行される。例えば、あるエントリにバンクＡに関するデータが記憶されている状態において、前記エントリにバンクＢに対するアクセスがあった場合は、バンクＡにライトバックによるアクセスが、バンクＢにフェッチオンライトによるアクセスが発生する。次に、同じエントリに対しバンクＡに関するアクセスがあった場合は、バンクＢにはライトバックによるアクセスが、バンクＡにはフェッチオンライトによるアクセスが発生する。したがって、例えば同一エントリに対するライトアクセスのキャッシュミスが連続すると、DRAM内部の当該二つのバンクは常にアクセスが発生する。つまり当該二つのバンクにおけるリフレッシュを実行することができず、DRAM内のデータが破壊される可能性がある。このような状況のもと、本発明の目的は以上のような問題点を解決したメモリ装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するための代表的な手段の一つは、リフレッシュを隠蔽するためにキャッシュメモリと複数のバンクで構成されるDRAMからなるメモリ装置において、前記キャッシュメモリの各キャッシュラインをサブラインに分割し、各サブライン毎にバリッドビットおよびダーティビットを設ける。このような構成とすることで、ダーティビットがセットされているサブラインに対するライトアクセスキャッシュミスが起こった際には、前記DRAMアレイに対してライトバックのみを実行することができる。
【０００８】
また、同時に、アクセスされたサブライン以外のサブラインのバリッドビットをリセットし、データを無効化するように制御することで前記DRAMアレイからのアロケート動作を不要とすることができ、二つのバンクに常にアクセスが発生する状態を防ぐことができる。
【０００９】
更にDRAM部分はマルチバンク構成にし、バンクアドレスをキャッシュメモリのタグに割り当て、キャッシュメモリとDRAM部分を結ぶ内部データバスをリードデータバスとライトデータバスからなるデュアルポートで接続することで、例えばリードアクセスキャッシュミス時のDRAMアレイへのライトバックとDRAMからのデータアロケート(フェッチオンライト)が、それぞれ異なるバンクで実行されるので、１サイクル中に前記両コマンドが実行できる。
【００１０】
以上のようにすることで、問題であった同一キャッシュラインに対するライトアクセスのキャッシュミスが連続した場合でも、DRAMアレイに外部アクセスのないアイドルな状態ができ、リフレッシュ動作を実行できる。
【００１１】
【発明の実施の形態】
以下本発明の実施例を図面に基き詳細に説明する。実施例の各ブロックを構成する回路素子は、特に制限されないが公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。MOSFET(Metal Oxide Semiconductor Field Effect Transistor)の回路記号はゲートに丸印をつけないものはN型MOSFET(NMOS)を表し、ゲートに丸印をつけたP型MOSFET(PMOS)と区別される。以下MOSFETを呼ぶために簡略化してMOSあるいはMOSトランジスタと呼ぶことにする。但し本発明は金属ゲートと半導体層の間に設けられた酸化膜絶縁膜を含む電界効果トランジスタだけに限定されるわけではなくMISFET(Metal Insulator Semiconductor Field Effect Transistor)等の一般的なFETを用いた回路に適用される。
なお本来はラッチとフリップフロップあるいはレジスタは、厳密には意味が異なるが、ここでは特に限定しない限りそれらを代表してラッチと記す。
＜実施例1＞
図1は本発明の実施例の一つであるメモリ装置リフレッシュフリーダイナミックメモリRFDRAM(以下RFDRAMと記す)のブロック図である。図2はRFDRAMの動作を示すフローチャート、図3は図1に用いたキャッシュメモリの実施例、図4は図1に用いたDRAMアレイの実施例、図5はRFDRAMのタイミングチャートを示したもので、DRAMアレイへのアクセスとリフレッシュの競合が回避されたことを示した図である。
【００１２】
まず図1から説明する。本発明のRFDRAMは、キャッシュメモリCACHEMEMと複数のDRAMバンク(Bank 127〜Bank 0の128バンク構成)からなるDRAMアレイDRAMARYから構成される。なお、図1の例では、1バンクの容量が32kビット、全メモリ容量は4Mビットの例である。キャッシュメモリCACHEMEMは1バンク分の容量を有し、図1では16バイトのデータ幅を有するキャッシュライン、256エントリ構成の32kビットの例を示している。キャッシュメモリCACHEMEMのメモリセルは、4トランジスタまたは6トランジスタからなるSRAMである。また、キャッシュメモリCACHEMEMはタグメモリTAGMEMとデータを格納するデータメモリDATAMEMからなる。さらにタグメモリTAGMEMは、アドレスを格納するタグアドレスTAGと、データメモリDATAMEMを管理するバリッドビットV3〜V0とダーティビットD3〜D0からなる。一方データメモリDATAMEMのキャッシュラインは複数のラインに分割され、DATA3〜DATA0にサブライン化されている。言いかえるならば、本実施例のキャッシュラインは４つのサブラインDATA3〜DATA0を有することになり、サブラインDATA3〜DATA0のそれぞれにバリッドビットV3〜V0とダーティビットD3〜D0を有することになる。またCACHECTLはキャッシュコントローラ、CMPは比較器、SELはセレクタ、BANKDECはバンクデコーダ、MUXはマルチプレックサ、DMUXはデマルチプレックサ、ADDLはアドレスラッチ、MCTL127〜MCTL0はメモリコントローラである。キャッシュメモリCACHEMEMとDRAMアレイDRAMARYは、内部データバスDa[127:0]、Db[127:0]のデュアルポートで接続されている。このように内部データバスDa[127:0]、Db[127:0]のデュアルポートで接続することで、例えばリードアクセスキャッシュミス時のDRAMアレイへのライトバックとDRAMからのデータアロケート(フェッチオンライト)が、それぞれ異なるバンクで実行されるので、１サイクル中に前記両コマンドが実行でき高速に動作することが可能となる。ここで、サブラインDATA3〜DATA0が記憶できるデータ幅は、外部データバスEDATA[31:0]と同じデータ幅にすると使い勝手がよい。外部データバスEDATA[31:0]とは、RFDRAMを一つの半導体装置と見て、それ以外の演算回路と接続するためのバスを指し、RFDRAMのデータ入出力ノードに接続される。また、内部データバスDa[127:0]、Db[127:0]のデータ幅をＡと、キャッシュメモリのサブラインの分割数をＮと、外部データバスEDATA[31:0]のデータ幅をＢとした場合の関係は、Ａ＝Ｎ・Ｂの関係を満たすと使い勝手がよい。なお、ここで内部データバスDa[127:0]、Db[127:0]のデータ幅Ａは、リードデータバスまたはライトデータバスの一方のデータ幅を示しており、本実施例の場合は１２８となる。
【００１３】
次に本実施例のRFDRAMの動作について説明する。RFDRAMに対するアクセスには、リードアクセスキャッシュヒットと、リードアクセスキャッシュミス、ライトアクセスキャッシュヒット、ライトアクセスキャッシュミスの4つの動作が上げられる。以下これらの動作を、図1及び図2のフローチャートを用いて説明する。
(1)リードアクセス、キャッシュヒット
図2(a)において、RFDRAMにリードアクセスが要求された場合、まずキャッシュメモリCACHEMEMのタグアドレスTAGと、外部から入力されたアドレスとの比較を行う(S101)。比較したアドレスが一致した場合、ステップS102においてサブラインが有効であるかの判定を行う。ここでサブラインのバリッドビットがセットされており、データが有効であるならば、キャッシュメモリCACHEMEMにデータが存在し、キャッシュヒットと判定される。その後、要求されたデータをキャッシュメモリCACHEMEMからリードし(S103)、そのデータをリクエストマスタに転送する(S104)。
【００１４】
以上の動作を図1で詳細に説明する。外部からリードアクセス要求があった場合、外部アドレスバスEADDR[16:0]からアドレスが入力される。この時アドレスストローブ信号ADS#はロウにドライブされ、ライトイネーブル信号WE#はハイにドライブされる。入力されたアドレスはアドレスラッチADDLを経由して、上位アドレスADD[16:10]と中位アドレスADD[9:2]、下位アドレスADD[1:0]に分類される。ここで上位アドレスADD[16:10]はバンクアドレスに対応しており、タグアドレスTAGとの比較に用いられる。中位アドレスADD[9:2]は、タグメモリTAGMEMを参照するために用いられる。下位アドレスADD[1:0]はデータメモリDATAMEM中のサブラインの選択に用いられる。なお図が煩雑になるので、RFDRAM内部に分配される上位アドレスADD[16:10]、中位アドレスADD[9:2]、下位アドレスADD[1:0]、クロックCLK、アドレスストローブ信号ADS#、ライトイネーブル信号WE#等の制御信号の一部は省略してある。
【００１５】
リードアクセス時には、キャッシュメモリCACHEMEMにおいて所望のデータの有無を判定する。まず中位アドレスADD[9:2]を用いてタグメモリTAGMEMを参照する。参照されたタグアドレスTAGはタグアドレスバスTADDを経由して比較器CMPに入力される。また参照されたエントリのバリッドビットV3〜V0とダーティビットD3〜D0はキャッシュコントローラCACHECTLに入力される。比較器CMPは入力された上位アドレスADD[16:10]と参照されたタグアドレスTAGの比較を行い、二つのアドレスが同じ値である場合は、アドレス一致信号MATCHをハイにドライブしてキャッシュコントローラCACHECTLに入力する。キャッシュコントローラCACHECTLは、アドレス一致信号MATCHとバリッドビットV3〜V0、および下位アドレスADD[1:0]から、要求データがキャッシュメモリに存在するか判定を行う。
【００１６】
ここで図3を用いてデータの判定フローを説明する。図3は図1に用いたキャッシュメモリの実施例であり、タグアドレスTAG、バリッドビットV3〜V0、ダーティビットD3〜D0からなり、エントリ数は256の例を示している。図3(a)では、エントリ0に対し、タグアドレスTAGは4、バリッドビットV[3:0]=(1111)、ダーティビットD[3:0]=(0100)、サブラインDATA3〜DATA0にはそれぞれA、M、C、Dのデータが保持されている。
【００１７】
リードアクセス時、外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0000100)、中位アドレスADD[9:2]=(00000000)、下位アドレスADD[1:0]=(11)が入力されたとする。つまり上位アドレス(バンクアドレス)は”4”、エントリは”0”、参照するサブラインアドレスは”3”、サブラインDATA3である。図3(a)において、エントリ0のタグアドレスTAGは”4”であり、入力された上位アドレスの値と等しい。したがって比較器CMPはアドレス一致信号MATCHをハイにドライブする。さらにバリッドビットV3はセットされている。つまりキャッシュメモリに要求データが存在することになるので、キャッシュコントローラCACHECTLはキャッシュヒットと判定し、データセレクト信号DSELをハイにドライブする。
【００１８】
キャッシュコントローラCACHECTLはリードアクセス、キャッシュヒットと判定すると、キャッシュライトイネーブル信号CWEをロウにドライブし、データメモリDATAMEMから参照したキャッシュラインをリードする。上記の場合、エントリ0のキャッシュラインのデータ、A、M、C、Dをリードする。リードしたキャッシュラインのデータは内部データバスDa[127:0]を経由してマルチプレックサMUXに入力される。マルチプレックサMUXにはデータセレクト信号DSELを入力し、データメモリDATAMEMからの内部データバスDa[127:0]と、DRAMアレイDRAMARYからの内部データバスDb[127:0]の選択をおこなう。ここではキャッシュヒットなので、内部データバスDa[127:0]が選択される。さらに下位アドレスADD[1:0]=(11)を用いてキャッシュライン中の所望のサブラインDATA3を選択して外部データバスEDATA[31:0]に出力する。この場合、サブラインDATA3のAが外部に出力される。
【００１９】
以上がリードアクセスキャッシュヒットの動作である。キャッシュヒットの場合、所望のデータがキャッシュメモリCACHEMEMに存在するので、DRAMアレイDRAMARYにはアクセスがない。したがって、DRAMアレイDRAMARYの全てのバンクはアイドル状態となるので、メモリコントローラMCTL0〜MCTL127によりすべてのバンクのリフレッシュ動作を実行できる。
(2)リードアクセスキャッシュミス
次にリードアクセスキャッシュミスについて説明する。まず図2(a)のステップS101においてアドレスを比較する。アドレスが一致した場合ステップS102に進み、アドレスが一致しなかった場合はステップS108に進む。
【００２０】
アドレスが一致した場合、ステップS102においてバリッドビットがセットされているか判定する。ここでアクセス対象のサブラインのバリッドビットがセットされておらず所望のデータがない、すなわちキャッシュミスの時はステップS105に進む。キャッシュメモリCACHEMEMに所望のデータが存在しないので、そのデータをDRAMアレイDRAMARYからリードする必要があり、リードしたデータはキャッシュメモリCACHEMEMにフェッチオンライトする。このとき同一エントリにおいて、バリッドビットがセット、かつダーティビットがセットされているサブラインのデータはフェッチしない。なぜなら前記データは最新のデータであり、DRAMアレイDRAMARYからのデータをフェッチしてしまうと古いデータに置きかえられてしまうためである。その後フェッチしたサブラインのダーティビットをリセットし(ステップS106)、バリッドビットをセット(ステップS107)、DRAMアレイDRAMARYからリードしたデータをリクエストマスタに転送する(ステップS104)。
【００２１】
アドレスが一致しなかった場合、ステップS108において参照したキャッシュラインのサブラインがダーティであるか判定する。このとき前記キャッシュラインのサブラインが全てダーティでない場合、所望のデータをDRAMアレイDRAMARYからリードし、キャッシュメモリにフェッチオンライトする(ステップS109)。一方、参照したキャッシュライン内にダーティなサブラインが存在する時は、データの一貫性維持のためにそのサブラインのデータをライトバックする (ステップS110)、さらに所望のデータをDRAMアレイDRAMARYからフェッチオンライト(ステップS109)する。その後ステップS111においてダーティビットをリセットしバリッドビットをセット(ステップS107)、DRAMアレイDRAMARYからリードしたデータをリクエストマスタに転送する(ステップS104)。以上の動作を図1、図3を用いて説明する。はじめにアドレスが一致した場合から説明する。
(2-1)アドレス一致。サブラインデータ無効によるキャッシュミスの場合
リードアクセス、キャッシュミスにおいて、アドレスの比較(ステップS101)までは、前述のリードアクセス、キャッシュヒットと同様である。ここで外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0000100)、中位アドレスADD[9:2]=(00000001)、下位アドレスADD[1:0]=(11)が入力されたとする。つまり上位アドレス(バンクアドレス)は”4”、エントリは”1”、参照するサブラインアドレスは”3”、サブラインDATA3である。図3(a)において、エントリ1のタグアドレスTAGは”4”であり、入力された上位アドレスの値と等しい。したがって比較器CMPはアドレス一致信号MATCHをハイにドライブする。しかしサブラインDATA3のバリッドビットV3はリセットされている。つまりキャッシュメモリに要求データが存在しないことになるので、キャッシュコントローラCACHECTLはキャッシュミスと判定する。
【００２２】
キャッシュコントローラCACHECTLはリードアクセス、キャッシュミスであることを検知すると、データセレクト信号DSELをロウにドライブし、バンクデコーダBANKDECに入力する。上位アドレスADD[16:10]はバンクデコーダBANKDECによってデコードされ、メモリリードリクエスト信号MRRQ[127:0]をドライブする。ここでは上位アドレスADD[16:10]=(0000100)がデコードされバンクアドレス”4”が選択される。また、バンクからデータをリードする際には中位アドレスADD[9:2]を利用する。すなわち中位アドレスADD[9:2]のうち、ADD[9:4]はロウアドレス63〜0の参照に利用し、ADD[3:2]はカラムアドレス3〜0の参照に利用する。したがってこの例ではバンク4からロウアドレス0、カラムアドレス1のE、F、G、Hの128ビットのデータがリードされる。リードされたデータは内部データバスDb[127:0]を経由してマルチプレックサMUXに入力される。キャッシュミスの場合、データセレクト信号DSELはロウにドライブされているので内部データバスDb[127:0]が選択され、下位アドレスADD[1:0]=(11)によって所望のデータであるEが外部データバスEDATA[31:0]に出力される。一方バンク4から出力されたデータはセレクタSELを経由し、データメモリDATAMEMに入力される。キャッシュコントローラCACHECTLはリードアクセスキャッシュミスと判定しているので、キャッシュライトイネーブル信号CWEをハイにドライブし、DRAMアレイDRAMARYからリードしたデータをフェッチオンライトする。またキャッシュコントローラCACHECTLは、タグライト信号TWをハイにドライブして、上位アドレスADD[16:10]をタグメモリTAGMEMにライトする。ここで前述の通り、ダーティビットがセットされているサブラインにはフェッチオンライトしてはならない。なぜなら、図3(a)においてフェッチオンライトの対象であるキャッシュライン1には、N、O、Pという最新のデータが存在するからである。したがってバンクからリードしたE、F、G、HのうちデータF、G、Hはフェッチオンライトしない。そのためにキャッシュコントローラCACHECTLからのキャッシュデータ制御信号CDSIG[3:0]の反転信号を用い、フェッチオンライトを実行する。キャッシュコントローラCACHECTLはキャッシュミスと判定した際、アクセス対象のキャッシュライン中においてバリッドビットがセット、かつダーティビットがセット、さらにアドレス一致信号MATCHがハイにドライブされている場合にキャッシュデータ制御信号CDSIG[3:0]をハイにドライブする。つまりこの場合キャッシュライン1に対して、CDSIG[3:0]=(0111)が出力される(もしアドレスが不一致、すなわちアドレス一致信号MATCHがロウにドライブされたならば(0000)を出力する)。したがってフェッチオンライトの際は、その反転信号(1000)を用いてサブラインDATA3のみフェッチオンライトを実行する。以上がアドレス一致、サブラインデータ無効の場合のリードアクセスキャッシュミスにおける動作である。
(2-2)アドレス不一致によるキャッシュミスの場合
図2(a)のステップS101においてアドレス比較を行った結果、アドレスが不一致と判定された場合、ステップS108に進む。
【００２３】
まずダーティビットがセットされたサブラインがない場合について説明する。例えば外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0001000)、中位アドレスADD[9:2]=(00000010)、下位アドレスADD[1:0]=(11)が入力されたとする。つまり上位アドレス(バンクアドレス)は”8”、エントリは”2”、参照するサブラインアドレスは”3”、サブラインDATA3である。図3(a)において、エントリ2のサブラインDATA3〜DATA0にはそれぞれa、b、c、dのデータが保持されている。この場合サブラインにダーティなデータはなくキャッシュライン全てをフェッチオンライトする(ステップS109)。エントリ2のタグアドレスTAGは4であり、入力された上位アドレスとは異なるので比較器CMPはアドレス一致信号MATCHをロウにドライブする。すなわちキャッシュメモリにはバンク4のデータが存在するので、キャッシュコントローラCACHECTLはキャッシュミスと判定し、データセレクト信号DSELをロウにドライブする。バンクデコーダBANKDECはバンク8を選択し、Q、R、S、Tの128ビットのデータがリードされマルチプレックサMUXを通して所望のデータQが外部バスEDATA[31:0]に出力される。一方バンク8から出力されたデータはセレクタSELを経由し、データメモリDATAMEMに入力されフェッチオンライトが実行される。フェッチ対象となるサブラインを示すキャッシュデータ制御信号CDSIG[3:0]はダーティビットがセットされたデータがないことと、さらにアドレスが不一致なのでCDSIG[3:0]=(0000)を出力するので、その反転信号は(1111)となる。したがって全てのサブラインがフェッチオンライトの対象となり、この例では、エントリ2のキャッシュラインにQ、R、S、Tがフェッチされる。
【００２４】
次にダーティなサブラインがある場合について説明する。例えば外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0001000)、中位アドレスADD[9:2]=(11111111)、下位アドレスADD[1:0]=(11)が入力されたとする。つまり上位アドレス(バンクアドレス)は”8”、エントリは”255”、参照するサブラインアドレスは”3”、サブラインDATA3である。ここで図3(a)において、エントリ255のタグアドレスTAGは4であり、入力された上位アドレスとは異なるので比較器CMPはアドレス一致信号MATCHをロウにドライブする。すなわちキャッシュメモリにはバンク4のデータが存在するので、キャッシュコントローラCACHECTLはキャッシュミスと判定し、データセレクト信号DSELをロウにドライブする。またエントリ255にはダーティビットがセットされたサブラインデータY、Zが存在する。したがってデータのコヒーレンシを維持するためこれらのデータをDRAMアレイDRAMARYにライトバックする必要がある。そこでキャッシュコントローラCACHECTLはメモリライトイネーブル信号MWEをハイにドライブし、キャッシュライトイネーブル信号CWEをロウにドライブする。メモリライトイネーブル信号MWEとタグアドレスバスTADDを経由して出力されるタグアドレスTAGは、バンクデコーダBANKDECに入力されライトバックするバンクを選択する。この場合では、バンク4がライトバック対象のバンクである。一方ライトバックするデータは、データメモリDATAMEMから内部データバスDa[127:0]を経由して出力される。しかしエントリ255のキャッシュライン中には、バリッドビットがセットされていない無効なデータが存在するため、全てのサブラインデータをライトバックすることはデータを破壊することになる。そこでキャッシュコントローラCACHECTLはメモリデータ制御信号MDSIG[3:0]=(0011)を各メモリコントローラMCTLに入力し、ライトバックすべきデータを制御する。すなわちバンク4にはサブラインデータY、Zのみをライトバックする。
【００２５】
次にバンク8からのリードを説明する。ロウにドライブされたデータセレクト信号DSELと上位アドレスADD[16:10]によって、バンクデコーダBANKDECはバンク8を選択し、I、J、K、Lの128ビットのデータがリードされマルチプレックサMUXを通して所望のデータIが外部バスEDATA[31:0]に出力される。ここでリードが発生したバンクには、メモリデータ制御信号MDSIG[3:0]を全てハイにして入力するよう制御する。このような制御は、セレクタ等を使って簡単に実現できるので特に図示していない。一方バンク8から出力されたデータはセレクタSELを経由し、データメモリDATAMEMに入力されフェッチオンライトが実行される。アドレスが不一致なのでキャッシュデータ信号CDSIGはCDSIG[3:0]=(0000)を出力し、その反転信号は(1111)となる。したがって全てのサブラインがフェッチオンライトの対象となり、この例では、エントリ255のキャッシュラインにI、J、K、Lがフェッチされる。
【００２６】
以上がリードアクセスキャッシュミスの動作である。キャッシュミスの場合、所望のデータがキャッシュメモリCACHEMEMに存在しないので、DRAMアレイDRAMARYにアクセスが発生する。上記の例では、バンク4とバンク8にリードもしくはライトアクセスが生じる。したがってバンク4とバンク8以外の全てのバンクはメモリコントローラMCTLによってリフレッシュが可能である。またバンク4およびバンク8のリフレッシュは、それぞれのバンクにアクセスがないアイドル状態になった時に実行すればよい。さらに外部アクセスとリフレッシュ動作が同時に発生した場合は、メモリコントローラMCTLによって外部アクセスを優先的に処理し、バンクがアイドル状態になった際、あらためてリフレッシュを実行する(詳細は後述する)。
(3)ライトアクセスキャッシュヒット
図2(b)において、RFDRAMにライトアクセスが要求された場合、リードアクセス時と同様にキャッシュメモリCACHEMEMのタグアドレスTAGと、外部から入力されたアドレスとの比較を行う(S201)。比較したアドレスが一致した場合、ライトアクセスではサブラインのバリッドビットの状態にかかわらずキャッシュヒットと判定される。次にステップS202においてサブラインがバリッドであるか判定し、バリッドであるならばそのサブラインのダーティビットをセットし(ステップS203)、キャッシュメモリCACHEMEMにライトを実行する。一方ステップS202において、サブラインのバリッドビットがセットされていない場合は、そのサブラインのバリッドビットをセット(ステップS205)した後、同様にダーティビットをセット(S203)、キャッシュメモリCACHEMEMにライト(S204)を実行する。以上のライトアクセスキャッシュヒットの動作を図1及び図3で詳細に説明する。
【００２７】
外部からライトアクセス要求があった場合、外部アドレスバスEADDR[16:0]からアドレスが入力され、外部データバスEDATA[31:0]からライトデータが入力される。またアドレスストローブ信号ADS#はロウにドライブされ、ライトイネーブル信号WE#はロウにドライブされる。キャッシュコントローラCACHECTLはアドレスストローブ信号ADS#、ライトイネーブル信号WE#からライトアクセス要求があったことを検知すると、リードアクセス時と同様に外部から入力された上位アドレスADD[16:10]とタグメモリTAGMEMのタグアドレスTAGの比較を行う。ここで外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0000100)、中位アドレスADD[9:2]=(00000000)、下位アドレスADD[1:0]=(11)が入力されたとする。つまり上位アドレス(バンクアドレス)は”4”、エントリは”0”、参照するサブラインアドレスは”3”、サブラインDATA3である。図3(a)において、エントリ0のタグアドレスTAGは”4”であり、入力された上位アドレスの値と等しい。したがって比較器CMPはアドレス一致信号MATCHをハイにドライブする。キャッシュコントローラCACHECTLは、ライトアクセス時にアドレス一致信号MATCHがハイにドライブされたことからキャッシュヒットと判定し、キャッシュライトイネーブル信号CWEをハイにドライブする。一方外部から入力されたデータは入出力バッファI/O BUFFERを経由してデマルチプレックサDMUXに入力される。ここで下位アドレスADD[1:0]によって外部入力データeは、128ビットのデータバス内の適切な位置に配置される。さらにライトイネーブル信号WE#がロウにドライブされ、セレクタSELに入力されるので、外部からの入力データバスが選択され、データメモリDATAMEMにデータがライトされる。ここでは入力データeが、エントリ0のサブラインDATA3にライトされ、データが変更されたのでダーティビットD3をセットする。一方、キャッシュコントローラCACHECTLはタグライト信号TWをハイにドライブし、上位アドレスADD[16:10]をタグメモリTAGMEMにライトする。
【００２８】
またバリッドビットがセットされていない場合、例えば外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0000100)、中位アドレスADD[9:2]=(00000001)、下位アドレスADD[1:0]=(11)が入力されたとする。このときエントリ1のサブラインDATA3は、図3(a)においてバリッドがセットされていない。この場合はバリッドビットV3、ダーティビットD3をセットし、外部入力データeをサブラインDATA3にライトする。
【００２９】
以上がライトアクセスキャッシュヒットの動作である。リードアクセス時と同様に、キャッシュヒットの場合、所望のデータはキャッシュメモリCACHEMEMにライトされる。したがってDRAMアレイDRAMARYの全てのバンクはアイドル状態となるので、メモリコントローラMCTL0〜MCTL127によりすべてのバンクのリフレッシュ動作を実行できる。
(4)ライトアクセスキャッシュミス
次にライトアクセスキャッシュミスについて説明する。図2(b)のステップS201においてアドレス比較を行った結果、アドレスが不一致と判定された場合ステップS206に進む。次にアクセス対象のエントリの中にダーティなサブラインがあるか判定を行う(S206)。もしダーティビットがセットされたサブラインが存在しなければ、外部から入力されたデータをライトする、所望のサブラインのバリッドビット、ダーティビットをセットする(S207、S208)。さらにライト対象外のサブラインについてはデータの無効化のために、バリッドビットをリセットする。このように制御してキャッシュメモリCACHEMEMにライトする。一方ステップS206において、ダーティビットがセットされたサブラインが存在するならば、そのデータはDRAMアレイDRAMARYにライトバックする必要がある(S208)。その後、ステップS207に進み同様にキャッシュライトを実行する。
【００３０】
以上の動作を図1、図3を用いて説明する。まずステップS206において、ダーティビットがセットされたサブラインがない場合から説明する。アドレス比較はライトアクセスキャッシュヒットと同様なので省略する。ここで外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0001000)、中位アドレスADD[9:2]=(00000010)、下位アドレスADD[1:0]=(11)が入力され、外部データバスEDATA[31:0]からデータeが入力されたとする。つまり上位アドレス(バンクアドレス)は”8”、エントリは”2”、参照するサブラインアドレスは”3”、サブラインDATA3である。図3(a)では、アクセス対象のエントリ”2”のデータは、a、b、c、dである。つまりデータの変更がなく、サブラインすべてのダーティビットがリセットされている状態である。エントリ2のタグアドレスTAGは4であり、入力された上位アドレスとは異なるので比較器CMPはアドレス一致信号MATCHをロウにドライブし、キャッシュコントローラCACHECTLはキャッシュミスと判定する。その後キャッシュコントローラCACHECTLはキャッシュライトイネーブル信号CWEをハイにドライブし、外部から入力されたデータeをエントリ2のサブラインDATA3にライトする。次にサブラインDATA3のバリッドビットV3とダーティビットD3をセットし、他のサブラインのバリッドビットとダーティビットはリセットしデータを無効化する。またタグライト信号TWをハイにドライブし、上位アドレスADD[16:10]をタグメモリTAGMEMにライトする。以上のように制御することで、ライトアクセスキャッシュミスの場合にも、アクセス対象のエントリの中にダーティビットがセットされているサブラインが存在しなければ、ライトバックによるDRAMアレイDRAMARYに対するアクセスが発生することはない。すなわち全てのバンクはアイドル状態なのでリフレッシュ動作を実行でき、外部アクセスが遅延されることはない。
【００３１】
次にステップS206において、ダーティビットがセットされたサブラインがある場合について説明する。例えば同様に、外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0001000)、中位アドレスADD[9:2]=(00000001)、下位アドレスADD[1:0]=(11)が入力され、外部データバスEDATA[31:0]からデータeが入力されたとする。つまり上位アドレス(バンクアドレス)は”8”、エントリは”1”、参照するサブラインアドレスは”3”、サブラインDATA3である。エントリ1のタグアドレスTAGは4であり、アドレス不一致なので、キャッシュコントローラCACHECTLはタグライト信号TWをハイにドライブし、上位アドレスADD[16:10]をタグメモリTAGMEMにライトする。またキャッシュライトイネーブル信号CWEをハイにドライブし、外部から入力されたデータeをエントリ1のサブラインDATA3にライトする。このときエントリ1のサブラインデータはダーティビットがセットされたN、O、Pを含んでいるので、これらのデータをバンク4にライトバックする必要がある。ここでリードアクセスキャッシュミスと同様に注意しなければならないのは、サブラインDATA3をライトバックしてはならない。なぜならこのデータは無効であり、ライトバックすることで本来のデータを破壊してしまうからである。したがってキャッシュコントローラCACHECTLは、メモリデータ制御信号MDSIG[3:0]から(0111)を出力しそれらの信号をメモリコントローラMCTLに入力する。このように、サブラインDATA3以外のデータをライトバックするように制御する。
【００３２】
以上のように制御することで、アクセス対象のエントリにダーティビットがセットされたサブラインが存在した場合には、DRAMアレイDRAMARYにライトバックによるアクセスが発生する。上記の場合は、バンク4にライトバックが発生する。しかしその他のバンクはアクセスのないアイドル状態なのでリフレッシュが実行できる。またバンク4のリフレッシュ動作は、バンク4がアイドル状態になった際に行えばよい。もちろんライトバック動作とリフレッシュ動作が同時に発生した場合は、ライトバック動作を優先的に処理し、その後アクセスのないアイドル状態の時にリフレッシュ動作を実行できる。
【００３３】
次に、図4、図5を用いてメモリアクセスとリフレッシュ動作の具体的な処理方法を説明する。図4の(a)は図1に用いたメモリコントローラの実施例であり、アクセスアービタACCESS ARBITER、メモリシーケンサMEMORY SEQUENCER、リフレッシュカウンタRFCNT、リフレッシュアドレスカウンタRFADDCNT、マルチプレックサMUXから構成される。図4の例ではメモリバンクBANK4のメモリコントローラMCTL4を示してある。メモリバンクBANK 4はロウデコーダROWDEC、カラムデコーダCOLDEC、センスアンプSA、マルチプレックサMUX、メモリアレイMEMARYからなる。ADDLはアドレスラッチである。また図4の(b)はアクセスアービタACCESS ARBITERの実施例である。図5はバンクにアクセス要求があった際のメモリアクセスとリフレッシュ動作を示すタイミングチャートである。
【００３４】
まず図3、図4を用いて、ライトアクセスキャッシュミスを例に説明する。外部アドレスADD[16:0]において、上位アドレスADD[16:10]=(0001000)、中位アドレスADD[9:2]=(00000001)、下位アドレスADD[1:0]=(11)が入力されたとする。図3では、キャッシュメモリのエントリ1のタグアドレスTAGは4、サブラインDATA2〜DATA0のデータN、O、PはダーティビットがセットされているのでメモリバンクBANK4にライトバックする必要がある。したがってメモリバンクBANK4に対してメモリライトリクエスト信号MWRQ[4]をハイにドライブしライトバックを実行する。アクセスアービタACCESS ARBITERはメモリライトリクエスト信号MWRQ[4]を検知すると、外部アクセスリクエスト信号EREQ#をロウにドライブしてメモリシーケンサMEMORY SEQUENCERに入力する。アクセスアービタACCESS ARBITERの構成は特に限定されないが、例えば図4(b)のように2入力のNOR、NAND回路を用いて実現できる。メモリシーケンサMEMORY SEQUENCERは外部アクセスリクエスト信号EREQ#によるアクセス要求を受けると、メモリアレイMEMARYの動作を制御するためにロウアドレスストローブ信号RAS#、カラムアドレスストローブ信号CAS#、バンクライトイネーブル信号BWE#を発生する。これらのアレイ制御信号は、一般的な非同期式のDRAMコントローラと同様に発生すればよいことはいうまでもない。アクセスアービタACCESS ARBITERは、アクセスセレクタ信号ASELをハイにドライブしマルチプレックサMUXに入力する。この場合、マルチプレックサMUXによって外部入力アドレスであるADD[9:2]が選択され、アドレスラッチADDLを経由しロウデコーダROWDEC、カラムデコーダCOLDECに入力される。またライトバックするデータつまりこの場合ではN、O、Pのデータは、メモリデータ制御信号MDSIG[3:0]を用いてメモリバンクBANK4にライトバックされる。以上のように、メモリバンクBANK4に対してリフレッシュ要求がなく、ライトバックアクセスだけを実行する場合、外部アクセスはメモリコントローラMCTL4によって直ちに処理することができる。
【００３５】
次に、バンクに対するライトバックアクセスと、同一バンクに対するリフレッシュ動作が衝突した場合について説明する。リフレッシュ動作は、リフレッシュ信号RFが各メモリコントローラMCTLに入力されることで実行される。ここで特に図には示していないが、リフレッシュ信号RFはリフレッシュタイマによって、一定期間毎に発生させればよい。リフレッシュカウンタRFCNTはリフレッシュ信号RFが入力されると、内蔵カウンタを1つインクリメントしリフレッシュリクエスト信号RFRQをハイにドライブして、アクセスアービタACCESS ARBITERに入力する。ここでバンクに対してアクセス要求がなくリフレッシュが実行された場合は、アクセスアービタACCESS ARBITERはリフレッシュアクノリッジ信号RFACK#をロウにドライブし、リフレッシュカウンタRFCNTの内蔵カウンタを1つデクリメントする。ハイにドライブされていたリフレッシュリクエスト信号RFRQは、内蔵カウンタの値(未処理のリフレッシュ数)が0になると、ロウにネゲートされる。逆に、内蔵カウンタの値が0以外、つまり未処理のリフレッシュが存在するならば、リフレッシュカウンタRFCNTはリフレッシュリクエスト信号RFRQをハイの状態に維持して、リフレッシュ要求を継続する。リフレッシュカウンタRFCNTの構成は特に限定はしないが、例えば米国特許6,028,804号に記載されるものと同様のアップダウンカウンタを用いて実現すればよい。
【００３６】
具体的にライトアクセスキャッシュミスとリフレッシュが同時に起こった場合で説明する。メモリバンクBANK4に対するライトバックアクセスと同時にリフレッシュ信号RFが発生した場合、メモリライトリクエスト信号MWRQ[4]と、リフレッシュリクエスト信号RFRQがハイにドライブされアクセスアービタACCESS ARBITERに入力される。このときアクセスアービタACCESS ARBITERによって外部アクセス要求信号EREQ#はロウにドライブされ、アクセスセレクタ信号ASELはハイにドライブされる。またリフレッシュ制御信号RFSIG#とリフレッシュアクノリッジ信号RFACK#はハイにドライブされる。したがって、ライトバックアクセスが優先的に処理される。リフレッシュアクノリッジ信号RFACK#はハイにドライブされているので、内蔵カウンタの値はデクリメントされず0にならない。すなわち、リフレッシュリクエスト信号RFRQは、ハイにドライブされた状態を維持して、リフレッシュ要求を継続する。
【００３７】
この未処理のリフレッシュ要求は、メモリバンクBANK4に対する外部アクセス要求がないアイドル状態の時に実行する。アクセスアービタACCESS ARBITERはリフレッシュリクエスト信号RFRQがハイの状態を受け、リフレッシュ制御信号RFSIG#をロウにドライブし、外部アクセス要求信号EREQ#をハイにドライブし、アクセスセレクタ信号ASELをロウにドライブする。このときマルチプレックサMUXによってリフレッシュアドレスRFADD[5:0]が選択され、メモリバンクBANK4のリフレッシュ動作が実行される。さらにアクセスアービタACCESS ARBITERによって、ロウにドライブされたリフレッシュアクノリッジ信号RFACK#がリフレッシュカウンタRFCNTに入力され、リフレッシュカウンタRFCNTの値をデクリメントすることでリフレッシュ要求が完了する。
【００３８】
以上のように制御することで、リフレッシュ動作によって外部アクセスが遅延されることのない使い勝手のよいメモリが実現できる。
【００３９】
また本実施例における連続ライトアクセスキャッシュミスの場合のアクセスパターンを図5のタイミングチャートを用いて説明する。
【００４０】
本発明の実施例のようにキャッシュラインをサブライン化し、それぞれにバリッドビットとダーティビットを設置した場合には、ライトアクセスキャッシュミス時にバリッドビットを無効化してキャッシュライン内のデータの一貫性を維持する。図5において、#1のタイミングでは、バンク8へのライトアクセスと、バンク4へのリフレッシュ動作が同時に発生した場合を示している。このときアクセス対象のエントリにはバンク4のデータが存在し、ダーティビットがセットされているので、ライトアクセスキャッシュミスとなる。したがってバンク4へはライトバックアクセスが発生し、MWRQ[4]がハイにドライブされメモリコントローラMCTL4に入力される。メモリコントローラMCTL4は、ライトバックアクセスを優先的に処理し、バンク4におけるリフレッシュ動作は延期され、リフレッシュリクエスト信号RFRQはハイの状態を維持する。次の#2のタイミングで同一エントリへのライトアクセスが発生したとする。このときアクセス対象のエントリにはバンク8のデータが、ダーティビットがセットの状態で存在するので、連続してライトアクセスキャッシュミスとなる。したがって、バンク8へライトバックアクセスが発生する。ここで、本方式ではライトアクセス時にアクセス対象外のサブラインを無効化するので、従来行っていたバンク4からのフェッチ動作を必要としない。したがって、#2におけるライトアクセスキャッシュミス時には、メモリバンクBANK4へのリードアクセス要求が起こらないので、バンク4はアクセスのないアイドル状態となり、リフレッシュ動作が可能となる。リフレッシュ動作が実行されるので、リフレッシュアクノリッジ信号RFACK#はロウにドライブされ、リフレッシュカウンタRFCNTの内蔵カウンタがデクリメントされてリフレッシュリクエスト信号RFRQがネゲートされる。
【００４１】
以上の説明から分かるとおり、本実施例のような構成をとることで、リフレッシュ動作によって外部アクセスが遅延されることのない使い勝手のよいメモリが実現できる。またリードアクセス、ライトアクセスともにキャッシュのヒット判定からデータの入出力までを1クロック内で実行することで、本実施のメモリは外部から一般的なSRAMのようにアクセスすることができる。
【００４２】
また、本実施例によれば、従来の手法ではリフレッシュ隠蔽ができなかった、キャッシュラインのデータ幅と外部データバス幅が異なる構成においても、少量のハードウェアの追加でリフレッシュ動作を隠蔽することができる。すなわち、キャッシュラインを分割した数の分だけ、データ管理用バリッドビットやダーティビットを追加するのみで良い。またこの際DRAM部分のワード線やビット線の構成に変更はないので、キャッシュミス時のDRAMからの読み出し、書込み速度の低下の問題もない。
【００４３】
以上の本実施例によると、データ部が複数のサブラインDATA3〜DATA0を有し、また、複数のサブラインDATA3〜DATA0のそれぞれに対応するバリッドビットV3〜V0とダーティビットD3〜D0を有する構成とすることによりキャッシュミスによってアクセスが発生するバンク以外のバンクは、各バンクのメモリコントローラでリフレッシュ動作が実行できるため、リフレッシュを隠蔽することが可能となる。ここで、バリッドビット又はダーティビットの数は、複数のサブラインの数と同じとすること、または、内部データバスのデータ幅をA、サブラインの数をN、外部データバスのデータ幅をBとした場合、A＝N・Bを満たすようにすると使い勝手がよい。一方、リフレッシュ動作とバンクへのアクセス要求が同時に発生した場合には外部アクセスを優先的に処理し、リフレッシュ動作はバンクにアクセス要求がないアイドル状態になった際に実行するようにメモリコントローラで制御することで、外部アクセスがリフレッシュ動作によって遅延されることのない使い勝手のよいメモリが実現できる。
【００４４】
以上、実施例に基づき具体的に説明してきたが、本実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々の変更が可能である。例えば、1BANK分のキャッシュメモリの例で示したが、その容量は特に限定されない。1BANK以上の容量で構成されてもよい。またキャッシュメモリのラインサイズ、エントリ数等も特に限定されない。サブラインのデータ幅や外部データバス幅、サブラインの分割数も特に限定されないし、それらの関係も本願の要旨を逸脱しない範囲で変更が可能である。さらに、DRAMアレイDRAMARYの構成も特に限定しない。またキャッシュメモリCACHEMEMのメモリセル構造も特に限定しない。ポリ抵抗あるいはTFTを用いたSRAMメモリセル、または４つのトランジスタもしくは６つのトランジスタを用いたCMOS SRAMメモリセルでもよい。またDRAMアレイDRAMARYのメモリセルも特に限定しない。キャパシタを用いた1トランジスタセルあるいは1トランジスタプレーナ型メモリセル、2トランジスタ型メモリセル、3トランジスタ型メモリセルでもよいことはいうまでもない。
【００４５】
またアプリケーションによっては、外部アクセスを遅延させてもよい場合、すわなちリフレッシュ隠蔽を必要としない場合もあるが、その場合にも本実施のメモリが適用できることはいうまでもない。
＜実施例2＞
図6は、本発明のRFDRAMにおける第2の実施例である。本実施例のキャッシュメモリは、ダイレクトマップ方式により制御される。実施例1との主な違いは、外部データバスEDATA[127:0]と内部データバスDa[127:0]、Db[127:0]が等しいことである。つまり、DRAMアレイDRAMARYの入出力されるデータ幅、キャッシュラインのデータ幅及び外部データバスEDATA[127:0]のデータ幅を等しくする。上記の構成とすることにより、キャッシュラインをサブラインに分割する必要がないので、タグメモリTAGMEMを構成するバリッドビットとダーティビットは1ビットずつでよい。またデータ管理の最小単位がキャッシュラインのデータ幅と等しくなるので、キャッシュデータ制御信号CDSIG[3:0]、メモリデータ制御信号MDSIG[3:0]は省略できる。またマルチプレックサMUXに入力するデータセレクト信号DSELの代わりに、アドレス一致信号MATCHを使用している。
【００４６】
次に実施例2におけるメモリ動作を説明する。基本的な動作は実施例1と同様なので、詳細は省略し、ここではリードアクセスキャッシュミスと、ライトアクセスキャッシュミスを説明する。
【００４７】
リードアクセスキャッシュミス
外部入力アドレスの上位アドレスADD[16:10]と、アクセス対象のタグアドレスTAGの値が異なった場合、もしくはバリッドビットがリセットされていた場合はキャッシュコントローラCACHECTLがキャッシュミスと判定する。ここで、アクセス対象のエントリのダーティビットがリセットされている場合は、DRAMアレイDRAMARYに対してリードアクセスを実行して所望のデータを外部データバスEDATA[127:0]に出力する。またアクセス対象のエントリに対して、フェッチオンライトを実行する。
【００４８】
次にダーティビットがセットされている場合は、データの一貫性維持のためライトバック動作を行う。さらにDRAMアレイDRAMARYに対してリードアクセスを実行し、所望のデータを出力し、さらにそのデータはアクセス対象のエントリにフェッチオンライトする。
【００４９】
以上の動作がリードアクセスキャッシュミスである。本実施例では、キャッシュラインがサブライン化されていないので、ライトバックすべきキャッシュラインデータを判別する必要はない。同様にフェッチオンライトの際にも、フェッチすべきキャッシュラインデータを判別する必要はない。またリードアクセスキャッシュミスにおいて、リードアクセス対象のバンクと、ライトバック対象であるバンク以外のすべてのバンクは、アクセスのないアイドル状態なのでリフレッシュ動作が実行できる。もちろんそれらの外部アクセスと、リフレッシュ動作が同時に発生した場合は、図4に示したようなメモリコントローラを用いることで外部アクセスを優先的に処理し、その後リフレッシュ動作を実行すればよいことはいうまでもない。
【００５０】
ライトアクセスキャッシュミス
比較器CMPにおいて上位アドレスADD[16:10]とタグアドレスTAGのアドレス比較を行った結果、アドレスが不一致の場合はキャッシュミスと判定される。ここでアクセス対象のエントリのダーティビットがリセットされている場合は、外部入力データをデータメモリDATAMEMにライトし、バリッドビットおよびダーティビットをセットする。キャッシュラインデータ幅がデータ管理の最小単位であるので、キャッシュミス時にDRAMアレイDRAMARYからのフェッチオンライトは必要ない。したがってダーティビットがリセットの場合にはすべてのバンクがアイドル状態になるので、リフレッシュ動作が実行できる。
【００５１】
次にアクセス対象のダーティビットがセットされている場合は、データが変更されているのでデータ一貫性維持のためにライトバックする必要がある。このときキャッシュコントローラCACHECTLは外部入力データをデータメモリDATAMEMにライトし、バリッドビットおよびダーティビットをセットする。外部データバスEDATA[127:0]とキャッシュラインのデータ幅が等しいので、DRAMアレイDRAMARYからのリードおよびフェッチオンライトは必要ない。したがってライトバックが発生するバンク以外のバンクは、アクセスのないアイドル状態になるのでリフレッシュ動作が実行できる。またライトバック対象のバンクは、その後アイドル状態になった際にリフレッシュ動作を行えばよいことはいうまでもない。さらにリフレッシュ動作とライトバックアクセスが同時に発生した場合も、図4に示したようなメモリコントローラを用いることで外部アクセスを優先的に処理し、その後リフレッシュ動作を実行すればよいことはいうまでもない。また本実施例におけるタイミングチャートは図5と同様なのでここでは省略する。
【００５２】
以上の説明から分かる通り、本実施例においては、ライトアクセスキャッシュミス時にDRAMアレイDRAMARYからフェッチオンライトのためのリードアクセスは必要ない。したがってDRAMアレイDRAMARYにおいて、同一バンクへの連続アクセスが回避される。よって本実施例においては、ある一つのバンクに対して必ずアイドル状態が存在しうるので、リフレッシュ動作が実行でき、外部アクセスが遅延されることのない使い勝手のよいメモリが実現できる。
【００５３】
また、本実施例によれば、複数のメモリバンクのデータ幅、キャッシュラインのデータ幅及び外部データバス幅を等しいデータサイズにするだけでよいので、容易にリフレッシュを隠蔽したメモリが実現できる。
【００５４】
以上の実施例ではクロックCLKやアドレスストローブ信号ADS#、ライトイネーブル信号WE#等の制御信号の一部は省略してあるが、図を見やすくするための処置であって上記で説明したような制御を実現するように適所に入力すればよいことはいうまでもない。その他、各制御信号のタイミングやメモリコントローラMCTLも実施例1と同様に制御することで、図5のような動作が実現できることはいうまでもない。さらに本実施例において、実施例１と同様にキャッシュメモリの容量やラインサイズ、エントリ数も特に限定されない。もちろんDRAMアレイDRAMARYの容量や、バンク数も本実施例の構成に限定されるものではない。
＜実施例3＞
図7は、本発明のRFDRAMにおける第3の実施例である。実施例1および実施例2との主な違いは、キャッシュメモリCACHEMEMが複数のタグメモリTAGMEMa及び、タグメモリTAGMEMｂと、複数のデータメモリDATAMEMa及び、データメモリDATAMEMbから構成される点である。またキャッシュメモリの制御方法としてセットアソシアティブ方式を用いており、キャッシュヒットの判定方法が異なる。さらにライトバッファWBUFFER、ライトバックバッファWBB、ヒットウェイ信号HITWAY、ウェイセレクタ信号WAYSEL、ライトタグアドレスバスWTADD等が設けられている。
【００５５】
一方、キャッシュラインをサブライン化する必要がないので、キャッシュデータ制御信号CDSIG[3:0]、メモリデータ制御信号MDSIG[3:0]が必要ないのは、実施例2と同様である。また、データ管理のためのバリッドビットとダーティビットはキャッシュライン毎に1ビットずつしかない点も実施例2と同じである。
【００５６】
本実施例の基本的な動作は、実施例1および実施例2と同様なので、ここではライトアクセスキャッシュミスを例に説明し、その他は省略する。
【００５７】
ライトアクセスキャッシュミス
本実施例では、キャッシュメモリCACHEMEMは複数のウェイからなり、図7では2ウェイセットアソシアティブの例を示し、各ウェイは1バンク分の容量を有している。ウェイaは、タグメモリTAGMEMaとデータメモリDATAMEMaから構成され、ウェイbはタグメモリTAGMEMbとデータメモリDATAMEMｂから構成され、それぞれのウェイで比較器CMPを有する。外部アドレスバスEADDR[16:0]からアドレスが入力され、参照されたエントリのタグアドレスと比較器CMPで比較される。それぞれの比較器CMPは、参照されたタグアドレスTAGと外部入力アドレスを比較し、前記アドレスが一致した場合、アドレス一致信号MATCHa、もしくはアドレス一致信号MATCHbをハイにドライブしキャッシュコントローラCACHECTLに入力する。ここでは、いずれのウェイにも所望のデータがなくアドレス不一致、すなわちキャッシュミスと判定されたとする。この場合、どちらかのウェイに存在するデータを置換する必要があるが、そのアルゴリズムには、例えばLRU(Least Recently Used)アルゴリズムを利用すればよい。
【００５８】
置換対象となったキャッシュラインのダーティビットがセットされていない場合は、外部入力データを所望のウェイのキャッシュラインにライトする。このときキャッシュライン内のデータ一貫性を維持するために、DRAMアレイDRAMARYからリードしたデータを外部入力データとともにライトバッファWBUFFERに入力する。キャッシュコントローラCACHECTLはウェイセレクタ信号WAYSELとしてウェイaが置き換え対象であることを表す”０”を出力し、セレクタSELに入力する。このように制御することで、ライトバッファWBUFFERに入力された外部入力データとDRAMアレイDRAMARYからフェッチデータは、セレクタSELを経由してウェイaに入力され、所望のキャッシュラインにライトされる。またキャッシュコントローラCACHECTLはタグライト信号TWaをハイにドライブして、上位アドレスADD[16:10]をタグメモリTAGMEMaにライトする。
【００５９】
次に置換対象となったエントリのダーティビットがセットされている場合は、前記エントリのデータをライトバックする必要がある。すなわちキャッシュコントローラCACHECTLはウェイaのキャッシュラインデータをデータメモリDATAMEMaからリードして、ライトバックバッファWBBに入力する。このとき、置換対象となったバンクアドレスは、ライトタグアドレスバスWTADDを経由し、バンクデコーダBANKDECに入力され、バンクアドレスがデコードされる。ライトバックバッファWBBには、ウェイセレクト信号WAYSELのウェイaが置き換え対象であることを表す”０”が入力され、データメモリDATAMEMaからのデータが、DRAMアレイDRAMARYにライトバックされる。以上のように制御してライトバックを行う。外部入力データとフェッチデータのライト動作は前述の通りである。
【００６０】
以上がライトアクセスキャッシュミスの動作である。本実施例では、キャッシュミス時にDRAMアレイDRAMARYからのフェッチオンライト動作が必要となるが、複数のウェイを持つことで、バンクに対する連続アクセスは回避される。
【００６１】
図8に本実施例の動作を示すタイミングチャートの一例を示し、外部アクセスとリフレッシュ動作の説明をする。図8において、#1のタイミングでは、ライトアクセスが発生し、二つのウェイのいずれにも所望のデータがなくキャッシュミスが発生していることを示している。さらに#1のタイミングでバンク4にリフレッシュ要求が発生している。この場合、置換対象のウェイのキャッシュラインデータがダーティなので、バンク4にはライトバックアクセスが発生し、バンク8にはフェッチオンライトのためのリードアクセスが発生する。したがってバンクへのアクセスが優先的に処理されるので、リフレッシュ動作は延期される。次に#2のタイミングで、ライトアクセスが発生している。同様にアクセス対象のエントリには、所望のデータがなくキャッシュミスが発生し、バンク4に対してフェッチオンライトのためのリードアクセスが発生する。このときバンク8にはライトバックアクセスは発生しない。なぜなら、バンク8のデータがあるウェイaは、直前に置換されているので、#2ではもう一つのウェイbが置換対象になるためである。したがって、#1のタイミング同様、バンク4のリードアクセスが優先的に処理され、リフレッシュは延期される。次に#3のタイミングでライトアクセスが発生したとする。このときのバンク8のデータはすでにキャッシュメモリに存在するため、ヒットと判定される。したがってDRAMアレイDRAMARYへのアクセスは発生しない。もちろん#3でのライトアクセスのバンクアドレスが8以外の場合は、バンク8へのライトバックアクセスが発生するが、バンク4にはアクセスが発生しないのでリフレッシュ動作が実行できる。
【００６２】
以上の説明の通り、本実施例のように複数のタグメモリとデータメモリを有するセットアソシアティブ方式でキャッシュメモリを制御することで、同一バンクへの連続アクセスが回避される。よって本実施例においては、ある一つのバンクに対して必ずアイドル状態が存在しうるので、リフレッシュ動作が実行でき、外部アクセスがリフレッシュ動作によって遅延されることのない使い勝手のよいメモリが実現できる。
【００６３】
なお、本実施例によれば、キャッシュラインのデータ幅と外部データバス幅が異なる構成においても、リフレッシュが隠蔽できる。
【００６４】
また、以上の実施例では、クロックCLKやアドレスストローブ信号ADS#、ライトイネーブル信号WE#等の制御信号の一部は省略してあるが、図を見やすくするための処置であって上記で説明したような制御を実現するように適所に入力すればよいことはいうまでもない。その他、各制御信号のタイミングやメモリコントローラMCTLも実施例1と同様に制御することで、図8のような動作が実現できることはいうまでもない。さらに本実施例において、キャッシュメモリの容量やラインサイズ、エントリ数、ウェイ数も特に限定されない。もちろんDRAMアレイDRAMARYの容量や、バンク数も本実施例の構成に限定されるものではない。
【００６５】
さらに上記実施例ではキャッシュラインを分割しない例を示したが、実施例1のようにキャッシュラインを分割してサブライン化し、キャッシュメモリの制御をセットアソシアティブ方式にしてもよい。例えば、メモリバンクＢＡＮＫ０のデータ幅をＡ、キャッシュラインの分割数をＮ、外部データバス幅をＣとした場合に、Ａ＝Ｎ・Ｃとなるように構成することができる。また外部データバス幅Ａとキャッシュラインのデータ幅Ｂを等しくして、セットアソシアティブ方式でキャッシュメモリを制御してもよい。その他、リフレッシュ動作によって外部アクセスが遅延されることのないように制御するのであれば、それぞれの方式の一部あるいは全部を選択して構成することにより、さまざまな構成が実現できることはいうまでもない。
【００６６】
以上の実施例１〜３では、いずれもキャッシュメモリのライト制御として、ライトバック方式の例を示したが、キャッシュメモリとDRAMアレイの両方にデータを書きこむように本メモリを実現しても良い。この場合、キャッシュヒット時にもDRAMアレイへのライトアクセスが発生し、リフレッシュ動作と競合する時があるが、その場合、例えばキャッシュメモリのみに、データをライトするように、キャッシュコントローラによって制御すれば良い。変更されたキャッシュメモリのデータは、キャッシュミス時に改めてライトバックすれば良い。なお外部データをDRAMアレイにライトするような制御や、外部アクセス発生時にDRAMアレイへのリフレッシュ動作の有無を検出するように、本メモリを制御する必要があるが、通常の回路技術を用いて簡単に変更できる範囲なので、ここでは説明を省略する。
【００６７】
なお、実施例１〜３において、キャッシュメモリ部分を複数のバンクをもつDRAMと、その1バンク分の容量に等しいSRAMキャッシュメモリに置きかえる2重構造にして、面積の低減を図るなどの変形も可能である。また上記では、DRAMとSRAMキャッシュメモリを組み合わせた例を説明したが、本発明はこれに限らず、DRAM部分をリフレッシュ不要な他のメモリセルに、SRAM部分をリフレッシュ不要な他のメモリセルに置き換えても、リフレッシュが隠蔽されたメモリが実現できる。
【００６８】
さらに、実施例1〜３におけるRFDRAMは、他の演算回路とRFDRAMを一つの半導体チップ上に形成した場合にも適用できる。その場合において、外部データバスEDATA[31:0]とは、他の演算回路とRFDRAMを接続するデータバスを示し、外部アクセスとは同一半導体チップに形成された他の演算回路からのアクセスのことを示す。また、本実施例のRFDRAMと他の演算回路等を異なる半導体チップに形成してもよいことは言うまでもない。この場合は、外部データバスとは、RFDRAMにデータを入出力するためのバスを指す。例えば、コンピュータシステムにおいては、ＣＰＵとRFDRAMを接続するバスを指す。
【００６９】
以上の実施例による作用効果の主なものは以下の通りである。
（１）キャッシュラインをサブラインに分割し、それぞれのサブラインにデータ管理ビットである、バリッドビットとダーティビットを設けることで、ライトアクセスキャッシュミス時に、アクセス対象外のサブラインを無効化するよう制御でき、また、DRAMアレイからのフェッチ動作を不要とできるためDRAMアレイにアクセスのないアイドル状態を形成できる。このアイドル状態のときに、メモリコントローラによってリフレッシュ動作を実行することで、外部アクセスがDRAMアレイのリフレッシュ動作によって遅延されることのない使い勝手のよいメモリが実現できる。
（２）外部データバス幅と、キャッシュラインのデータ幅を等しいサイズとすることで、DRAMアレイからのフェッチ動作を不要とできアクセスのないアイドル状態を形成できる。すなわち外部アクセスがDRAMアレイのリフレッシュ動作によって遅延されることのない使い勝手のよいメモリが実現できる。
（３）キャッシュメモリの制御をセットアソシアティブ方式で制御することで、外部アクセスがDRAMアレイのリフレッシュ動作によって遅延されることのない使い勝手のよいメモリが実現できる。
（４）メモリセルにDRAMと少量のSRAMを用いることで、6トランジスタSRAMに比べてチップ面積の小さいメモリが実現できる。
【００７０】
【発明の効果】
本発明の主な効果によると、リフレッシュ動作によって外部アクセスが遅延されることのない使い勝手のよいメモリが実現できる。すなわちリフレッシュが隠蔽されたSRAM互換性を有するメモリを実現できる。
【図面の簡単な説明】
【図１】本発明の実施例を示す図である。
【図２】本発明のリフレッシュフリーダイナミックメモリの動作を示すフローチャートである。
【図３】図1の実施例におけるキャッシュメモリを示す一実施例である。
【図４】図1の実施例におけるメモリコントローラを示す一実施例である。
【図５】本発明のリフレッシュフリーダイナミックメモリによって従来の問題が解決されたことを示す動作波形の一例を示す図である。
【図６】リフレッシュを隠蔽したリフレッシュフリーダイナミックメモリの第二の実施例を示す図である。
【図７】リフレッシュを隠蔽したリフレッシュフリーダイナミックメモリの第三の実施例を示す図である。
【図８】図7のセットアソシアティブキャッシュメモリを用いた、リフレッシュフリーダイナミックメモリによって従来の問題が解決されたことを示す動作波形の一例を示す図である。
【符号の説明】
RFDRAM……リフレッシュフリーダイナミックメモリ、TAGMEM、TAGMEMa、TAGMEMb……タグメモリ、DATAMEM、DATAMEMa、DATAMEMb……データメモリ、TAG……タグアドレス、V3〜V0……バリッドビット、D3〜D0……ダーティビット、DATA3〜DATA0……サブライン、TADD、TADDa、TADDb……タグアドレスバス、TW、TWa、TWb……タグライト信号、V[3:0]……バリッドビットバス、D[3:0]……ダーティビットバス、CWE、CWEa、CWEb……キャッシュライトイネーブル信号、WTADD……ライトタグアドレスバス、CDSIG[3:0]……キャッシュデータ制御信号、MDSIG[3:0]……メモリデータ制御信号、CACHECTL……キャッシュコントローラ、MATCH、MATCHa、MATCHb……アドレス一致信号、MWE……メモリライトイネーブル信号、DSEL……データセレクト信号、SEL……セレクタ、Da[127:0]およびDb[127:0]……内部データバス、CMP……比較器、MUX……マルチプレックサ、BANK DEC……バンクデコーダ、MCTL127〜MCTL0……メモリコントローラ、BANK127〜BANK0……メモリバンク、DRAMARY……ダイナミックメモリアレイ、DMUX……デマルチプレックサ、I/O BUFFER……入出力バッファ、ADDL……アドレスラッチ、ADD[16:0]およびEADDR[16:0]……入力アドレス、EDATA[31:0]……入出力データ、CLK……クロック、ADS#……アドレスストローブ信号、WE#……ライトイネーブル信号、RF……リフレッシュ信号、RFRQ……リフレッシュリクエスト信号、RFACK#……リフレッシュアクノリッジ信号、RFADD[5:0]……リフレッシュアドレス、RFCNT……リフレッシュカウンタ、RFADDCNT……リフレッシュアドレスカウンタ、ACCESS ARBITER……アクセスアービタ、ASEL……アクセスセレクタ、EREQ#……外部アクセス要求信号、RFSIG#……リフレッシュ制御信号、MEMORY SEQUENCER……メモリシーケンサ、RAS#……ロウアドレスストローブ信号、CAS#……カラムアドレスストローブ信号、BWE#……バンクライトイネーブル信号、ROWDEC……ロウデコーダ、COLDEC……カラムデコーダ、SA&MUX……センスアンプおよびマルチプレックサ、MEMARY……メモリアレイ。
【図１】
0003985889.tif 000002
【図２】
0003985889.tif 000003
【図３】
0003985889.tif 000004
【図４】
0003985889.tif 000005
【図５】
0003985889.tif 000006
【図６】
0003985889.tif 000007
【図７】
0003985889.tif 000008
【図８】
0003985889.tif 000009