本発明に係る不揮発性半導体記憶装置及びその駆動方法の各実施形態について図面を参照して説明する。
本実施形態では、メモリセルがRRAM素子を備える構成であるものとして説明する。背景技術の項でも前述したように、RRAM素子は、電圧の印加によって抵抗値(または抵抗特性)を可逆的に変化させることで情報の記憶を行う構成である。従って、書き込み動作と消去動作は、変化後の各抵抗値がそれぞれ異なるという点を除けば動作原理は同一である。より具体的に言えば、ある第1抵抗値(第1抵抗特性)に変化させるために電圧条件を設定して電圧を印加することが「書き込み動作」であり、別の第2抵抗値(第2抵抗特性)に変化させるために電圧条件を設定して電圧を印加することが「消去動作」である。つまり、消去動作と書き込み動作とは電圧条件が異なることを除けば、実際にメモリセルに対して行われる動作は同一であると言える。このため、以下では、「消去動作」は「書き込み動作」の一態様であると考え、特に断りのない限り「書き込み動作」と「消去動作」とを文言上区別しないものとする。
これに対し、「読み出し動作」は、RRAM素子の抵抗値(または抵抗特性)を変化させることなく、単に現時点におけるRRAM素子の抵抗値(または抵抗特性)を読み出す動作であるところ、抵抗値(または抵抗特性)を変化させる動作である書き込み動作とはその動作内容を異にする。このため、「読み出し動作」は「書き込み動作」と区別して表現する。
[第1実施形態]
本発明の第1実施形態(以下、適宜「本実施形態」という)につき、図1〜図6の各図を参照して説明を行う。
図1は、本実施形態における不揮発性半導体記憶装置の概念的構造を示すブロック図である。図1に示す不揮発性半導体記憶装置1は、メモリアクセス制御部20、メモリ制御部30、デコーダ部(行デコーダ53,列デコーダ51A,51B)、メモリセルアレイ(52A,52B)を備える。本実施形態では、一つのメモリ制御部30に対して2つのサブバンク52A,52Bを備え、各サブバンクは、列デコーダ(51A,51B)を個別に備える一方、行デコーダ(53)は共有している。
なお、図1におけるデコーダ部(行デコーダ53,列デコーダ51A,51B)及びサブバンク52A、52B(メモリユニット)は、説明の都合上、1アドレスに対し1ビットのデータを持つ形態を想定した図示となっている。多ビットのデータを扱う場合には、これらは図2に示されるような構成を取る。言い換えれば、図2にされる複数の各メモリユニットや各デコーダ部を、まとめて一つに図示したのが図1の構成である。
以下では、まず説明の簡単のために、1アドレスに1ビットのデータを持つ形態を想定して説明を行う。その後、図2を参照しながら1アドレスに対し多ビット(jビット)(jは2以上の自然数)のデータを持つ形態を取り扱う場合について説明する。
再び図1に戻って説明を行う。メモリ制御部30は、命令解釈部31,バッファ32,出力制御部33,バッファ34,行アドレスバッファ35,比較部37,書き込み/読み出し制御部40(読み出し制御部36,バッファ38,書き込み制御部39),読み書き切換制御部41,サブバンク入れ換え部42,及び読み出し回路43を備える。
なお、メモリアクセス制御部20は、CPU10との間で信号の授受可能な構成である。CPU10は、中央演算装置(Central Processing Unit)であり、コマンド、アドレス、並びにデータを送ることが可能なバス(CPUバス11)を介してメモリアクセス制御部20と接続されている。このCPUバス11は、CPU10,メモリアクセス制御部20以外にも、ネットワーク,ストレージ,グラフィック等の多数のハードウェアモジュール(不図示)に接続されているものとしても良い。
メモリアクセス制御部20は、CPU10から与えられた各情報を認識し、メモリバス21を介して各情報毎にメモリ制御部30内の適切な要素に与える。より具体的には、メモリアクセス制御部20は、コマンド情報を命令解釈部31に与え、アドレス情報をバッファ32に与え、データ(書き込み対象データ)をバッファ34に与える。
メモリ制御部30は、メモリアクセス制御部20より与えられる各情報(コマンド,アドレス)を、サブバンク52A,52Bに対するコマンド(書き込み,消去)やアドレス(行/列アドレス)に変換し、列デコーダ51A,51B及び行デコーダ53を制御する。
サブバンク52A,52Bはメモリセルアレイであり、列デコーダ51A,51B及び行デコーダ53から、メモリセルアレイ内の各メモリセルに対して所定の電圧が印加されることで、読み出しまたは書き込み(消去)処理が行われる。
ここで、各サブバンク52A,52Bは、共に、RRAM素子を有するメモリセルを行方向及び列方向にそれぞれ複数配列して構成される。また、行方向に延伸する複数のワード線、及び列方向に延伸する複数のビット線を備え、同一行に配置された前記メモリセルがそれぞれRRAM素子の一端側を、選択トランジスタを介して同一の前記ワード線に接続し、同一列に配置された前記メモリセルがそれぞれRRAM素子の他端側を同一の前記ビット線に接続する。サブバンク52A,52Bの一例として、各メモリセルがRRAM素子及び同素子に直列に選択トランジスタが接続されて構成される1T1R型構造を図3に示す。
図3は、サブバンク52Bの一構成例を示す回路図であり、各メモリセルが1つの選択トランジスタと1つの可変抵抗素子Rとからなる、いわゆる1T1R構成である。図3において、各メモリセルの選択トランジスタのゲートはワード線(W1〜Wn)に接続されており、各ワード線は行デコーダ53と接続される。また、各メモリセルの選択トランジスタのソースはソース線SLを介して共通のソース線に接続されている。また、各メモリセル毎の可変抵抗素子Rの一方(上部電極側)はビット線(B1〜Bm)に接続されており、各ビット線は列デコーダ51Bに接続される。n及びmは自然数である。また、サブバンク52Aも同様の構成である。
なお、本実施形態では、サブバンク52Aと52Bとは、メモリアドレスがサブバンク間で交互に連続するようにアドレス割り当てがされているものとする。より具体的には、サブバンク52Aには偶数アドレスが割り当てられ、サブバンク52Bには奇数アドレスが割り当てられている。
再び図1に戻り、命令解釈部31は、入力されたコマンドを本実施形態に即した形に変換し、読み出し制御部36,読み書き切換制御部41,及び行アドレスバッファ35に送る。具体的には、書き込み(消去)コマンド「W」が入力された場合には、命令解釈部31は、読み出し制御部36,及び読み書き切換制御部41に対して、信号ComCによって読み出しコマンド「R」を与えるとともに、信号R/Wをアクティブ(High状態)にして出力制御部33及び比較部37に与える。また、読み出しコマンド「R」が入力された場合には、命令解釈部31は、読み出し制御部36,及び読み書き切換制御部41に対して、信号ComCによって読み出しコマンド「R」を与える一方、信号R/Wはインアクティブ(Low状態)にする。すなわち、命令解釈部31は、書き込み(消去)コマンド「W」が与えられた場合であっても、読み出しコマンド「R」が与えられた場合であっても、行アドレスバッファ35,読み出し制御部36,及び読み書き切換制御部41に対して、信号ComCによって読み出しコマンド「R」を与える構成である。また、命令解釈部31には他に「行アドレス指定」コマンド(以下、「A」コマンドという)が入力されることがある。この「A」コマンドはバッファ32に行アドレス値が入力される時にメモリアクセス制御部20から入力されるものである。これが入力された時は、命令解釈部31は行アドレスバッファ35に対して、信号ComCによって「A」コマンドを与える。
バッファ32はFIFO(FirstIn First Out)バッファであり、入力されたアドレス情報を一時的に格納する。そして、命令解釈部31が信号ComCを出力するのに同期して、行アドレスバッファ35及び読み出し制御部36に対してアドレス情報を示す信号AddCを出力する。なお、このバッファ32は、必ずしもFIFOである必要はなく、1アドレス分のバッファとして、コマンドが入力された時にのみアドレス値を取り込むようにしても良い。
なお、命令解釈部31がコマンドを出力するタイミングと同期させるべく、命令解釈部31とバッファ32とが信号線(不図示)で接続されており、命令解釈部31がコマンドを出力すると、当該信号線がアクティブになる構成としても良い。この場合、当該信号線の立ち上がりに起因して、バッファ32はアドレス情報を示す信号AddCを出力すれば良い。
バッファ34は、バッファ32と同様にFIFOバッファである。本実施形態では、後述するように、書き込みコマンドが入力されてから、実際にサブバンク52A,52Bへの書き込みが行われるまでに(一定の)時間を要する。バッファ34は、書き込みコマンドが入力されてから、実際にサブバンク52A,52Bへの書き込みが行われるまでに要する時間にわたって、書き込み対象データを保持する機能を表す。バッファ34によって書き込み対象データが一定期間保持された後、バッファ34から信号DatOとして比較部37及び書き込み制御部39に出力される。
読み出し制御部36は、信号ComCによって命令解釈部31から与えられるコマンドが「R」である場合に、信号AddCによってバッファ32から指定されたアドレスに基づき、データの読み出しアドレスAddCrを演算してサブバンク入れ換え部42に出力する。メモリアクセスの設定が、バースト(複数のアドレスに連続してデータを読み書きする)になっている場合には、前記バッファ32から指定された一のアドレスに対し、設定されたバースト長(連続してデータを読み書きする回数)分のアドレスを順次計算して出力を行う。なお、前記バースト長は、本メモリと接続されたCPU10等のホストにより本メモリに対して設定される値である。また、このバースト長を設定する方法については、どのような方法を用いても良く、本件発明の主旨と外れるためその説明を割愛する。
読み出し制御部36は、また、サブバンク入れ換え部42に対して有効なアドレス値を出力している間には「High」、そうでない場合には「Low」となる信号REをサブバンク入れ換え部42に与える。
比較部37は、命令解釈部31から前記R/W信号を受け、これがアクティブであった場合に、バッファ34から与えられるDatOと読み出し回路43から与えられるDatCの比較を行い、その結果Compを書き込み制御部39に与える。後述するようにDatC及びDatOが多ビットであった場合には、比較はビット単位で行い、ビット単位での一致/不一致を書き込み制御部39に与える。つまり、データのビット幅が8ビットであれば、Compのビット幅も8ビットになり、データのビット幅が32ビットであれば、Compのビット幅も32ビットになる。R/W信号がインアクティブであった場合には何もしない。
読み書き切換制御部41は、信号ComCによって命令解釈部31から与えられるコマンド「R」を受けると、サブバンク52Aとサブバンク52Bの読み出しと書き込みを切り換えるための信号SBSelを生成し、サブバンク入れ換え部42と行デコーダ53に供給する。前述したように、本実施形態においては、サブバンク52Aには偶数アドレスが割り当てられており、サブバンク52Bには奇数アドレスが割り当てられている。つまり、連続するアドレスが、サブバンク52A,52B間で交互に割り当てられている。
ここで、前記信号SBSelは、サブバンク52Aから読み出しを行う際には信号レベルを「Low」とし、サブバンク52Bから読み出しを行う際には信号レベルを「High」とする。つまり、前記信号SBSelが「Low」である場合、読み出し対象となるサブバンク52Aに対し読み出し処理を行い、前記サブバンク52Aとは別のサブバンク52Bに対して書き込み処理を行う。逆に、前記信号SBSelが「High」である場合、読み出し対象となるサブバンク52Bに対し読み出し処理を行い、前記サブバンク52Bとは異なるサブバンク52Aに対して書き込み処理を行う。
行アドレスバッファ35は、命令解釈部31から「A」コマンドが与えられると、バッファ32から与えられるアドレス値を内部に保持する。そして、その直後に、読み出しコマンド「R」または書き込みコマンド「W」を受けとると、保持されたアドレス値を信号Rowとして適切なタイミングで行デコーダ53に出力する。なお、ここでの適切なタイミングとは、前記行アドレスによって示されるサブバンク52A、52B中のメモリセルに対するアクセス時刻に間に合うタイミングである。
バッファ38は、読み出し制御部36から出力された信号AddCrに示されるアドレス値を、信号AddCdとして書き込み制御部39に適切なタイミングで渡すためのFIFOバッファである。ここでの適切なタイミングとは、後述する比較部37が比較結果を信号Compとして出力するタイミングと同期したタイミングである。
書き込み制御部39は、比較部37からの比較結果(信号Comp)を受け、サブバンク入れ換え部42に対して、書き換えが必要なビットに対する書き込み指示(信号WE、AddOw、DatOw)を出力する。信号DatOwは、書き込み対象データを示しており、バッファ34から与えられるDatOと同様の内容を示すデータである。また、信号WEは書き込みが必要か否かを示す信号である。また、信号AddOwは列アドレス値を示し、バッファ38から与えられるアドレス値AddCdと同様の内容を示す信号であるが、出力タイミングを信号WEと同期させたものである。
出力制御部33は、読み出し回路43から読み出されたデータ(信号DatC)を、メモリバス21に出力するか否かを制御する手段である。より具体的には、命令解釈部31から与えられた信号R/Wがアクティブ(High状態)である場合には、読み出し回路43から与えられたデータをメモリバス21に出力しない。逆に、命令解釈部31から与えられた信号R/Wがインアクティブ(Low状態)である場合には、読み出し回路43から与えられたデータをメモリバス21に出力する。言い換えれば、メモリアクセス制御部20から与えられるコマンドが「W」である場合には、読み出し回路43から与えられたデータをメモリバス21に出力せず、コマンドが「R」である場合には、読み出し回路43から与えられたデータをメモリバス21に出力する。なお、読み出し回路43からDatCにデータが出力されたことは、信号DEがアクティブ(High)となることで示される。
サブバンク入れ換え部42は、サブバンク52A,52Bへの書き込みと読み出しの切り換えを行う。具体的には、サブバンク入れ換え部42は、読み書き切換制御部41から与えられる信号SBSelが「Low」である場合には、サブバンク52Aに読み出しを、サブバンク52Bに書き込みを行う指示を与え、逆に信号SBSelが「High」である場合には、サブバンク52Bに読み出しを、サブバンク52Aに書き込みを行う指示を与える。その際、読み出しは、読み出し制御部36からの信号RE、AddCrに基づいて行われ、書き込みは書き込み制御部39からの信号WE、AddOw、DatOwに基づいて行われる。
サブバンク入れ換え部42は、読み出し制御部36から与えられる信号REが「High」である場合にのみ読み出し指示を与える。そして、前記のように、読み書き切換制御部41から与えられる信号SBSelの値によって、サブバンク52Aとサブバンク52Bのどちらから読み出しを行うかが決定される。つまり、信号SBSelが「Low」の場合には、列デコーダ51Aに対して読み出し指示を出すことにより、読み出し回路43によってサブバンク52Aに記録されているデータが読み出され、逆に信号SBSelが「High」の場合には、列デコーダ51Bに対して読み出し指示を出すことにより、サブバンク52Bに記録されているデータが読み出される。このとき、読み出し制御部36から与えられる信号AddCrによって指定されたアドレスに対応したメモリセルの読み出しが行われる。
また、サブバンク入れ換え部42は、書き込み制御部39から与えられる信号WEのうち、「High」であるビットにのみ書き込み指示を与え、当該ビットに対する書き込み動作が実行される。そして、前記のように、読み書き切換制御部41から与えられる信号SBSelの値によって、サブバンク52Aとサブバンク52Bのどちらに書き込みを行うかが決定される。つまり、信号SBSelが「Low」の場合には、列デコーダ51Bに対して書き込み指示を出すことにより、サブバンク52Bに対してデータの書き込みが行われ、逆に、信号SBSelが「High」の場合には、列デコーダ51Aに対して書き込み指示を出すことにより、サブバンク52Aに対してデータの書き込みが行われる。このとき、書き込み制御部39から与えられる信号AddOwによって指定されたアドレスに対応したメモリセルに対して、書き込み制御部39から与えられる信号DatOwによって指定された書き込み対象データが書き込まれる。
行デコーダ53は、読み書き切換制御部41から与えられる信号SBSelの値によって、サブバンク52Aとサブバンク52Bに対する制御を切り換える。即ち、信号SBSelが「Low」の場合には、サブバンク52Aに対して読み出し、サブバンク52Bに対して書き込みのための制御を行い、「High」の場合には、サブバンク52Aに対して書き込み、サブバンク52Bに対して読み出しのための制御を行う。
以下、図4のタイミングチャートを用いて、具体的な書き込み動作の手順を説明する。
図4は、本実施形態における不揮発性半導体記憶装置(メモリ)へのバースト書き込み処理の手順を示すタイミングチャートである。図4では、クロック同期式のメモリで、バースト長が4である場合が想定されている。図4の上部に記載されたt1〜t20の符号は、クロックの立ち上がりの時刻を示している。なお、コマンド入力からサブバンクへの読み書きまでのレイテンシについては設計事項であり、図4によって限定される要素ではない。
メモリ制御部30に対し、行アドレス指定コマンド「A」及び行アドレス「R1」が与えられると(時刻t2)、コマンド「A」を受けた命令解釈部31は、適切なタイミング(例えばt3〜t4間)で、信号ComCによって行アドレスバッファ35に対してコマンド「A」を送る。行アドレス「R1」は、一旦バッファ32に取り込まれた後、信号ComCとしてコマンド「A」が出力されるのと同期して信号AddCとして行アドレスバッファ35及び読み出し制御部36に対して出力される。行アドレスバッファ35は、信号ComCとして入力されたコマンド「A」をトリガとして、信号AddCとして入力された行アドレス「R1」を内部のバッファに保持する。
続いて、メモリ制御部30に、書き込みコマンド「W」と指定アドレス「C1」が与えられると(時刻t4)、コマンド「W」を受けた命令解釈部31は、適切なタイミング(例えばt5〜t6間)で、読み出し制御部36、読み書き切換制御部41に対して信号ComCとしてコマンド「R」を出力する。また、アドレス「C1」は、一旦バッファ32に保持された後、信号ComCとして命令解釈部31からコマンド「R」が出力されるのと同期して、信号AddCとして読み出し制御部36に出力される。読み出し制御部36は、信号ComCとして入力されるコマンド「R」をトリガとして、信号AddCとして入力されるアドレス「C1」を内部のバッファに保持する。また、命令解釈部31は、適切なタイミングで信号R/Wを「High」レベルとする。図4では、命令解釈部31がコマンド「R」を信号ComCに出力するタイミングをトリガとして、信号R/Wを「High」レベルとしている。
読み出し制御部36は、コマンド「R」を1回受ける毎に、バースト長相当分の連続するアドレス値を信号AddCrとしてサブバンク入れ換え部42に対して出力する。ここでは、バースト長を4としているので、4回分の連続するアドレス値が信号AddCrに読み出し制御部36からサブバンク入れ換え部42へと出力されることになる。すなわち、読み出し制御部36は、前記t5〜t6間に「R」コマンドを受けた結果として、時刻t6〜t10間に、読み出し制御部36はアドレス「C1」、「C1+1」、「C1+2」、「C1+3」を信号AddCrとして出力するということになる。また、このアドレスを出力している間、読み出し制御部36は「High」レベルの信号REを出力する。
また、メモリ制御部30は、前記「W」コマンドが入力されると同時に(時刻t4)、書き込み対象データの入力を受け付ける。本実施形態で説明する実施例では、バースト長が4であるので、1つの「W」コマンドに対し4つの書き込み対象データ(D0、D1、D2、D3)が入力される(時刻t4〜t7)。入力された書き込み対象データは、時刻t8以後に、比較部37においてサブバンク52Aまたは52Bから読み出された既書き込みデータとの比較が行われるまで、バッファ34で一時的に保持される。
図4のタイミングチャートでは、サブバンクへのアクセス開始を時刻t7としているため、この時点で、行アドレスバッファ35が行デコーダ53に対して、行アドレス「R1」を示す信号Rowを供給し、当該行アドレス線をアクティブ化している。もちろん、この時刻t7よりも早いタイミングで当該行アドレス線をアクティブとしても良いが、同様のアクセスが連続する場合には、前記のタイミングがアクセス間隔を短くできて良い。
時刻t7以後、読み出し制御部36から与えられた信号RE(読み出しトリガ信号に相当)、及び信号AddCr(読み出し指定アドレス信号に相当)に基づき、サブバンク入れ換え部42は、列デコーダ51A,51Bを介して、サブバンク52A,52Bへの読み出し処理を開始する。サブバンク入れ換え部42は、読み書き切換制御部41から入力される信号SBSelの値(High/Low)により、読み出し対象サブバンクをサブバンク52A,52Bに振り分ける。このサブバンク入れ換え部42の処理によって、各サブバンク52A,52Bから交互に読み出し処理が行われる。すなわち、信号SBSelが「Low」の場合は、サブバンク入れ換え部42は列デコーダ51Aに対して読み出し指示を行い、これによって読み出し回路43がサブバンク52Aから既書き込みデータの読み出しを行う。また、信号SBSelが「High」の場合は、サブバンク入れ換え部42は列デコーダ51Bに対して読み出し指示を行い、これによって読み出し回路43がサブバンク52Bから既書き込みデータの読み出しを行う。
本実施形態では、連続するアドレスが交互にサブバンク52Aとサブバンク52Bに割り当ててられていることになるので、アドレスC1並びにC1+2は同一のサブバンク内に存在し、アドレスC1+1並びにC1+3は別の同一のサブバンク内に存在することになる。ここでは、アドレスC1並びにC1+2がサブバンク52Aに存在し、アドレスC1+1並びにC1+3がサブバンク52B内に存在するものとして説明する。
サブバンク入れ換え部42と列デコーダ51Aとの間では、信号RWA,WEA,ADA,DWA、DRAの各信号の授受が行われる。信号RWAは読み出しか書き込みかを示す信号であり、信号ADAは書き込みを行う列アドレスを示す信号であり、信号DWAは書き込みを行うデータ(書き込み対象データ)を示す信号であり、信号WEAはデータの書き込みを行うか否かを示す信号である。信号WEAに関しては、ここで説明しているように、1アドレスに対しデータが1ビットしかないような場合には無くても良いが、後述するように、データが多ビットである場合には、どのビットを書き込むかを示すという役割を担う。これらの4信号は、サブバンク入れ換え部42から列デコーダ51Aに対して出力される。
また、信号DRAは、サブバンク52Aから読み出された既書き込みデータを示す信号であり、列デコーダ51Aからサブバンク入れ換え部42に対して出力される。なお、この信号DRAは増幅前の微弱信号であり、その後、読み出し回路43によって増幅されて、既書き込みデータDatCとして出力される構成である。
列デコーダ51Aは、信号RWAが「R」である場合、信号ADAによって指定されたアドレスに格納された既書き込みデータの読み出しを行うための電圧印加を行い、既書き込みデータは信号DRAとしてサブバンク入れ換え部42に出力される。また、列デコーダ51Aは、信号RWAが「W」である場合、信号ADAによって指定されたアドレスに、信号DWAとして入力された書き込み対象データを書き込むべく電圧印加を行う。このとき、書き込みを行うか否かは信号WEAによって決定される。例えば、信号DWA(書き込みデータ)が8ビット幅であった場合、信号WEAが「00000001」という値であれば、信号DWAの最下位ビットのみが書き込みを行うビットであり、残りの7ビットは書き込みを行わないビットということになる。
サブバンク入れ換え部42と列デコーダ51Bとの間においても、列デコーダ51Aとの間と同様、信号RWB,WEB,ADB,DWB,DRBの各信号の授受が行われる。信号RWBは読み出しか書き込みかを示す信号であり、信号ADBは書き込みを行う列アドレスを示す信号であり、信号DWBは書き込みを行うデータ(書き込み対象データ)を示す信号であり、信号WEBはデータの書き込みを行うか否かを示す信号である。信号WEBについても、信号WEAと同様、ここで説明しているように、1アドレスに対しデータが1ビットしかないような場合には無くても良いが、後述するように、データが多ビットである場合には、どのビットを書き込むかを示すという役割を担う。これらの4信号は、サブバンク入れ換え部42から列デコーダ51Bに対して出力される。なお、信号DRBは、サブバンク52Bから読み出された既書き込みデータを示す信号であり、列デコーダ51Bからサブバンク入れ換え部42に対して出力される。なお、この信号DRBは増幅前の微弱信号であり、その後、読み出し回路43によって増幅されて既書き込みデータDatCとして出力される構成である。
また、列デコーダ51Aと51Bは、共に同一の機能を持つブロックである。
サブバンク入れ換え部42は、信号REが「High」である間、読み出し指示を列デコーダ51Aまたは51Bに与える。まず、時刻t7〜t8において、信号SBSelが「Low」であることより、列デコーダ51Aに対し、信号AddCrによって指定されたアドレスC1に対応したメモリセルの既書き込みデータの読み出し指示を与える。このとき、行デコーダ53によって指定された行アドレス(信号Rowによって指定された行アドレスR1)がアクティブになっている。そして、時刻t7〜t8期間内に、列デコーダ51Aは、サブバンク52AからアドレスC1に対応したメモリセルの既書き込みデータを信号DRAとしてサブバンク入れ換え部42に送出する。
次に、時刻t8〜t9において、信号SBSelが「High」であることより、サブバンク入れ換え部42は、列デコーダ51Bに対し、信号AddCrによって指定されたアドレスC1+1に対応したメモリセルの既書き込みデータの読み出し指示を与える。このとき、行デコーダ53によって指定された行アドレス(信号Rowによって指定された行アドレスR1)がアクティブになっている。そして、時刻t8〜t9期間内に、列デコーダ51Bは、サブバンク52BからアドレスC1+1に対応したメモリセルの既書き込みデータを信号DRBとしてサブバンク入れ換え部42に送出する。
以下同様の手順によって、時刻t9〜t10に列デコーダ51Aはサブバンク52AからアドレスC1+2に対応したメモリセルの既書き込みデータを信号DRAとしてサブバンク入れ換え部42に送出する。また、時刻t10〜t11に列デコーダ51Bはサブバンク52BからアドレスC1+3に対応したメモリセルの既書き込みデータを信号DRBとしてサブバンク入れ換え部42に送出する。
比較部37は、命令解釈部31から与えられる信号R/Wが「High」である場合に、読み出し回路43から与えられる信号DatCが示す既書き込みデータと、バッファ34から与えられる信号DatOが示す書き込み対象データとの比較を行い、比較結果を信号Compとして書き込み制御部39に出力する。
図4では、時刻t8〜t12にわたって、サブバンク入れ換え部42によってマージされた読み出しデータ(Q0〜Q3)が、読み出し回路43より信号DatCとして比較部37に出力される。なお、信号DatCからデータが出力されている間、信号DEがアクティブ(High)となっている。つまり、この信号DEによって信号DatCからデータが出力されていることを認識できる。また、この信号DEは、バッファ34に入力され、これにより、信号DatCが比較部37に入力されるタイミングと同期して、バッファ34から書き込み対象データDatOが比較部37に入力される(t8〜t12)。信号DEは比較部37にも入力され、比較部37は、この信号DEがアクティブである時に、書き込み対象データDatOと既書き込みデータDatCとの比較演算を行い、比較結果を信号Compとして出力する。すなわち、時刻t8〜t9間には、既書き込みデータ「Q0」と、書き込み対象データ「D0」とを比較し、その結果を示すデータ「G0」を書き込み制御部39に出力する。
以下、アドレスを1ずつずらして読み出した既書き込みデータと、対応するアドレスの書き込み対象データとの比較を行う。すなわち、時刻t9〜t10間には「D1」と「Q1」を比較して比較結果を「G1」とし、時刻t10〜t11間には「D2」と「Q2」を比較して比較結果を「G2」とし、時刻t11〜t12間には「D3」と「Q3」を比較して比較結果を「G3」とする。すなわち、比較部37は、時刻t8〜t12にかけて、既書き込みデータDatC(Q0〜Q3)と、書き込み対象データDatO(D0〜D3)の比較結果を、信号Comp(G0〜G3)として書き込み制御部39に出力する。
書き込み制御部39は、比較部37から入力された信号Compのデータに基づいてサブバンク入れ換え部42に対してデータの書き込み制御を行う。具体的には、バッファ38に保持されていたアドレスに、バッファ34に保持されていた書き込み対象データのうち、比較部37から指定されたビットを書き込むという指示を出す。このとき、書き込み制御部39は、サブバンク入れ換え部43に対し、信号AddOwによってアドレスを指定し、信号WEによって書き込みビットを指定し、信号DatOwによって書き込み対象データを指定する(時刻t9〜t13間)。なお、書き込みビットを示す信号WEは、比較部37から与えられる信号Compに基づいて生成され、後述するようにデータが多ビットである場合には、既書き込みデータと書き込み対象データの比較結果が異なるビットのみが書き込みビットとして指定される。
サブバンク入れ換え部42は、書き込み制御部39から前記データ書き込み指示を受けると、列デコーダ51A,51Bに対して書き込み指示を行う(時刻t10〜t14間)。このとき、一の列デコーダに対して読み出し処理が行われている間には、それとは別の列デコーダに対して書き込み指示を与える。より具体的には、例えば、時刻t10〜t11間には列デコーダ51Aに対して書き込み指示を与え、時刻t11〜t12間には列デコーダ51Bに対して書き込み指示を与える。これにより、列デコーダ51Bに対して読み出し指示が与えられている時刻t10〜t11間に、列デコーダ51Aに対して書き込み指示が与えられる構成となる。また、列デコーダ51Aに対して読み出し指示が与えられている時刻t11〜t12間に、列デコーダ51Bに対して書き込み指示が与えられる構成となる。
このようにして、時刻t4に入力された「W」コマンドに対応した書き込み対象データ(D0〜D3)は、時刻t10〜t14間において各サブバンク内に書き込みが完了する(もしくは同一の既書き込みデータがそのまま利用される)。時刻t8に入力された「W」コマンドに対応した書き込み対象データ(D4〜D7)に対しても、前記と同様の処理を行う。このとき、図4を参照すれば、データD3の書き込みが完了した時刻t13〜t14間のタイミングに続いて、時刻t14〜t15間にデータD4のサブバンク51Aへの書き込みが行われる。すなわち、書き込みコマンド「W」が(バースト長の間隔で)連続してメモリ制御部30に入力された場合であっても、書き込みにタイムラグが生じず、これによって書き込み速度が遅くなるということがない。
次に、図5のタイミングチャートを用いて、具体的な読み出し動作の手順を説明する。なお、図5の場合も、図4と同様、バースト長が4の場合を例示している。読み出し動作は、図4に示した書き込み動作手順において、比較部37による比較処理、書き込み制御部39及びサブバンク入れ換え部42による書き込み指示、両列デコーダ51A,51Bによる書き込み処理が行われないものと考えれば良い。
メモリ制御部30に対し、行アドレス指定コマンド「A」及び行アドレス「R1」が与えられると(時刻t2)、書き込み動作の場合と同様、コマンド「A」を受けた命令解釈部31は、適切なタイミング(例えばt3〜t4間)で、コマンド「A」を信号ComCとして行アドレスバッファ35に送る。行アドレス「R1」は、一旦バッファ32に取り込まれた後、信号ComCとしてコマンド「A」が出力されるのと同期して信号AddCとして行アドレスバッファ35及び読み出し制御部36に対して出力される。行アドレスバッファ35は、信号ComCとして入力されたコマンド「A」をトリガとして、信号AddCとして入力された行アドレス「R1」を内部のバッファに保持する。
続いて、メモリ制御部30に、読み出しコマンド「R」と指定アドレス「C1」が与えられると(時刻t4)、コマンド「R」を受けた命令解釈部31は、適切なタイミング(例えばt5〜t6間)で、読み出し制御部36、読み書き切換制御部41に対して信号ComCとしてコマンド「R」を出力する。また、アドレス「C1」は、一旦バッファ32に保持された後、信号ComCとしてコマンド「R」が出力されるのと同期して、信号AddCとして読み出し制御部36に出力される。読み出し制御部36は、信号ComCとして入力されるコマンド「R」をトリガとして、信号AddCとして入力されるアドレス「C1」を内部のバッファに保持する。ただし、命令解釈部31は、入力されたコマンドが読み出しコマンド「R」であるため、書き込み時と違って「Low」レベルの信号R/Wを出力する。この信号R/Wは、例えば命令解釈部31に対して書き込みコマンド「W」が入力されるまでの間、「Low」レベルが維持されるものとしても構わない。
読み出し制御部36は、書き込み時と同様、コマンド「R」を1回受ける毎に、バースト長相当分の連続するアドレス値を信号AddCrとしてサブバンク入れ換え部42に対して出力する。書き込み時と同様にバースト長を4とすると、前記t5〜t6間に受けた「R」コマンドに対し、時刻t6〜t10間に、アドレス「C1」、「C1+1」、「C1+2」、「C1+3」を出力する。このアドレスを出力している間、読み出し制御部36は、「High」レベルの信号REを出力する。
そして時刻t7以後、書き込み処理時の場合と同様に、読み出し制御部36から与えられた信号RE(読み出しトリガ信号に相当)、及び信号AddCr(読み出し指定アドレス信号に相当)に基づき、サブバンク入れ換え部42及び列デコーダ51A,51Bを介して、サブバンク52A,52Bへの読み出し処理が開始される。サブバンク入れ換え部42は、読み書き切換制御部41から入力される信号SBSelの値(High/Low)により、読み出し対象サブバンクをサブバンク52A,52B間で振り分け、これによって、各サブバンク52A,52Bから交互に読み出し処理が行われる。そして、読み出されたデータは、サブバンク入れ換え部42を介して読み出し回路43に与えられ、ここで増幅処理が施された後、信号DatCとして出力制御部33に送られる(時刻t8〜t12)。信号DatCからデータが出力されていることは信号DEがアクティブ(High)となることで示される。出力制御部33は、入力された信号R/Wが「Low」レベルであることを認識し、入力された信号DatCをメモリバス21へと送出する。
一方、比較部37は、入力された信号R/Wが「Low」レベルであることを認識すると、比較処理を実行しない。なお、読み出し処理であるため、当然に書き込み対象データが入力されていない状態であるから、比較部37に対して信号DatOは入力されない構成である。
なお、時刻t4に引き続き、時刻t8において読み出しコマンド「R」、及び読み出し用行アドレス「C2」が入力された場合においても、時刻t11〜t15にかけて各サブバンクに対してアドレス「C2」、「C2+1」、「C2+2」、「C2+3」に係るメモリセルの読み出し指示が行われ、これによって時刻t12〜t16にかけて当該アドレス位置のデータ読み出しが行われる。つまり、読み出しコマンド「R」が(バースト長の間隔で)連続してメモリ制御部30に入力された場合であっても、読み出しにタイムラグが生じず、これによって読み出し速度が遅くなるということがない。同様に、読み出しコマンド「R」の後に書き込みコマンド「W」が入力された場合や、その反対の場合においても、タイムラグを生じることがない。
上述したように、本実施形態のような構成とすることで、書き込みコマンド「W」が与えられた場合、実際にメモリセルに対する書き込み処理を行う前に書き込み対象のメモリセルから既書き込みデータの読み出しを行って書き込み対象データとの比較が行われる。そして、比較結果が異なる場合にのみ当該メモリセルに対して書き込み対象データの書き込み処理が行われ、比較結果が同一の場合には書き込み処理が行われない。従って、従来の書き込み処理と比較して、同一メモリセルに対して実際に書き込み用電圧が印加されて書き込み処理が行われる回数が減少する。これにより、各メモリセルを延命させることができる。
そして、上述したように、一のサブバンクに対して既書き込みデータと書き込み対象データの比較を行っている間に、他のサブバンクに対して書き込み用電圧を印加して書き込み処理を行うことができる構成であるため、書き込み処理においてタイムラグが発生するということがない。従って、従来方法から書き込み処理に要する時間を長くすることなく、メモリセルを延命させることができるという効果がある。
また、本実施形態の構成では、単純に書き込み処理時において、書き込み対象のアドレスに係るメモリセルの既書き込みデータと書き込み対象データの比較を行うことのみでメモリセルの延命措置が可能となる。すなわち、従来のように、書き込み回数や書き込み順序を管理する必要がないため、ビット単位で書き込み(書き換え)が可能なRRAMに対しても容易に適用することができる。
上記本実施形態において、サブバンク52Aには偶数アドレスが、52Bには奇数アドレスがそれぞれ割り当てられているものとしたが、奇偶が逆であっても良い。さらには、連続する1アドレス毎に、各サブバンク間で交互にアドレスを割り当てる必要はなく、2アドレス毎や4アドレス毎等、複数アドレス毎にサブバンク間で交互になるようにアドレスを割り当てるものとしても良い。この場合、前記複数アドレスの数はバースト長の約数であれば良い。以下の第2実施形態でも同様とする。
上記本実施形態において、各信号レベルが「High」であるか「Low」であるかは一例であり、このレベルが反転しても良い。例えば、信号SBSelが「Low」である場合に、サブバンク52Bから読み出しを、サブバンク52Aに書き込みを行う指示を与え、逆に信号SBSelが「High」である場合には、サブバンク52Aから読み出しを、サブバンク52Bに書き込みを行う指示を与えるものとしても良い。他の信号についても同様である。
なお、上述の実施形態では、図1に基づいて動作の概略を説明してきた。以下では、図2を参照し、jビットのデータを持つ場合の取り扱いについて説明する。
図2に示す構成は、図1におけるデコーダ部(行デコーダ53,列デコーダ51A,51B)及びサブバンク52A、52Bに代えて、行デコーダ、列デコーダA、列デコーダB、サブバンクA、サブバンクBを1組としたユニット(以下メモリユニット)をj組備える。
図2において、符号52A0、52A1、52A2、52A3、52B0、52B1、52B2、52B3はサブバンクを、符号51A0、51A1、51A2、51A3、51B0、51B1、51B2、51B2は列デコーダを、符号530、531、532、533は行デコーダをそれぞれ示している。また、各サブバンク52A0、52A1、52A2、52A3をサブバンクAと称し、各サブバンク52B0、52B1、52B2、52B3をサブバンクBと称する。同様に、列デコーダ51A0、51A1、51A2、51A3を列デコーダAと称し、列デコーダ51B0、51B1、51B2、51B2を列デコーダBと称する。なお、図2において、符号501、502、503、504は、サブバンクA及びBを1組としたメモリユニットを表す。
先ずは図2に示すようにj組のメモリユニットが搭載された装置において、図1のメモリ制御部30内で多ビット化される信号について言及する。基本的にはデータバスのビット幅がjビットに多ビット化されることになる。またその制御信号もjビットに多ビット化される。具体的には、メモリバス21と接続されるデータ、バッファ34の出力信号DatO、読み出し回路43から出力されるDatC、DatOとDatCを比較した結果である比較部37の出力Comp、書き込み制御部39の出力DatOwとその書き込みイネーブルWE、サブバンク入れ換え部42の出力(書き込み)データDWA、DWBと各々の書き込みイネーブルWEA、WEB、サブバンク入れ換え部42の入力(読み出し)データDRA、DRBが多ビット化される。Comp、WE、WEA、WEBの各ビットは、対応するデータDatOとDatC、DatOw、DWA、DWBの各ビットと対応している。つまり、DatOとDatCの最下位ビット同士の比較結果をCompの最下位ビットが示し、DatOwの最上位ビットの書き込みイネーブルをWEAの最上位ビットが示す。
次に図2における各信号線の接続について説明する。1からj番目までの全ての行デコーダに対しては、信号線RowとSBSel(信号RowとSBSelが流れる信号線)が接続される。これは、すなわち各メモリユニット間において、同一の信号に基づいて行アドレスと読み書きの切り換え制御が行われることを示している。また、k(1からjまでの自然数)番目の列デコーダAに対しては、読み書きコマンドRWA、書き込みイネーブルWEA[k]、列アドレスADA、書き込みデータDWA[k]、読み出しデータDRA[k]の各データを流す信号線が接続される。これは、読み書きコマンドRWA、列アドレスADAに関しては全ての列デコーダAに同じものが与えられ、読み書きコマンドRWAが「W(書き込み)」を示している場合には、WEA[k]がアクティブとなっているメモリユニットにのみ書き込みデータDWA[k]が書き込まれ、読み書きコマンドRWAが「R(読み出し)」を示している場合には、WEA[k]がアクティブとなっているメモリユニットからのみ読み出しデータDRA[k]が読み出される、ということを示している。列デコーダBに関しても、列デコーダAと同様である。つまり、1からj番目の各メモリユニットは、各データ及びデータ制御線の1からjビット目に各々対応している。
上述した図1の構成は、まさに図2におけるj=1のみを図示したものであり、図4及び図5におけるタイミングチャートも、j=1の場合に関して図示したものである。逆に言えば、図2の構成では、図1におけるタイミングチャートに示されるような動作が各メモリユニット毎に実行される。
以下、本実施形態における不揮発性半導体記憶装置に対する書き込み/読み出し動作の方法、並びに製造方法について簡単に説明する。なお、これらの方法は、以下の第2,第3実施形態においても同様であり、これらの実施形態内では説明を割愛する。
また、以下では、一例として各サブバンクが図3に示す回路構成である場合について説明する。さらに、本実施形態における以下の説明内においては、「書き込み」を「消去」と区別して説明する。そして、可変抵抗素子Rが低抵抗状態にある場合を「書き込み状態」と定義し、高抵抗状態にある場合を「消去状態」と定義する。
さらに、各メモリセルを構成するRRAMが図15に示されるような構成であって、下部電極103から上部電極101に向かう極性で両端に電圧が印加されることで低抵抗状態に遷移し、逆極性の電圧が印加されることで高抵抗状態に遷移する性質を有しているものとする。そして、この上部電極101にビット線が接続し、下部電極103にソース線が接続する構成であるとする。
まず、メモリセルに対する書き込み動作(可変抵抗素子の低抵抗化)について説明する。書き込み対象メモリセルが指定されると、行デコーダ53は、当該メモリセル(選択メモリセル)に接続されるワード線(選択ワード線)に+2Vを印加し、前記選択ワード線以外のワード線(非選択ワード線)に0Vを印加する。そして、ソース線Sに0Vを印加する。さらに、列デコーダ(51A,52A)は、選択メモリセルに接続されるビット線(選択ビット線)に+2Vを印加し、前記選択ビット線以外のビット線(非選択ビット線)に0Vを印加する。このとき、書き込み時には、選択メモリセルを構成する可変抵抗素子Rの上部電極に正極性の電圧が印加される(一方下部電極は接地されている)ので、当該可変抵抗素子Rが低抵抗状態に遷移し、これによってデータが書き込まれる。一方、非選択セルの可変抵抗素子Rには電圧がかからないので、データの書き込みがなされない(データの変動がない)。
なお、選択ワード線に印加する電圧は、上記説明では+2Vとしたが、この値は一例であり、実際には選択トランジスタが導通するのに十分な電圧(いわゆるトランジスタの閾値電圧)以上であれば良い。また、選択ビット線に印加する電圧は、上記説明では+2Vとしたが、この値は一例であり、実際には、ソース線に印加される電圧との電位差によって可変抵抗素子の抵抗状態を遷移させるのに十分な電圧(スイッチング動作の閾値電圧)以上であれば良い。
なお、メモリセルの消去動作(可変抵抗素子の高抵抗化)時には、消去対象メモリセル内の可変抵抗素子の両端に印加される電圧の極性を、書き込み時に対して反転させれば良い。すなわち、書き込み時と同様、選択トランジスタを導通させるべく、行デコーダ(51A,52A)は、選択ビット線に0V,非選択ビット線に+2Vを印加し、さらにソース線Sに+2Vを印加する。これにより、選択メモリセルを構成する可変抵抗素子Rの下部電極に正極性の電圧が印加される(一方上部電極は接地されている)ので、当該可変抵抗素子Rが高抵抗状態に遷移し、これによってデータが消去される。一方、非選択セルの可変抵抗素子Rには電圧がかからないので、データの消去がなされない(データの変動がない)。
次に、メモリセルの読み出し動作について説明する。読み出し対象メモリセルが指定されると、行デコーダ53は、選択メモリセルに接続される選択ワード線に+2Vを印加し、前記選択ワード線以外の非選択ワード線に0Vを印加する。そして、ソース線Sに0Vを印加する。さらに、列デコーダ(51A,52A)は、選択メモリセルに接続されるビット線(選択ビット線)に+1Vを印加し、前記選択ビット線以外のビット線(非選択ビット線)に0Vを印加する。これにより、選択メモリセルに接続された選択トランジスタが導通した状態で、ビット線−ソース線間に読み出し用の電圧1Vが印加される。実際には、配線抵抗や選択トランジスタのオン抵抗が存在するため、これらの抵抗によって電圧降下が生じるため、選択メモリセル内の可変抵抗素子Rの両端には、1Vよりも低電圧(例えば0.7V程度)が印加される状態となる。
この状態の下で、選択ビット線を流れる電流(読み出し電流)を検出し、読み出し回路43によって増幅することで、電圧信号に変換し、信号DatCとして比較部37あるいは出力制御部33に出力する。読み出し対象の選択メモリセルの可変抵抗素子が高抵抗状態である場合には読み出し電流が小さく、逆に低抵抗状態である場合には読み出し電流が大きいため、信号DatCの大きさを判断することで読み出し対象メモリセル内の可変抵抗素子の抵抗状態を検出することができる。つまり、信号DatCが小さい場合には、対象メモリセルが高抵抗状態、すなわち「消去状態」であり、逆に、信号DatCが大きい場合には、対象メモリセルが低抵抗状態、すなわち「書き込み状態」であることが認識される。
なお、読み出し動作時においても、選択ワード線に印加する電圧は、上記説明では+2Vとしたが、この値は一例であり、実際には選択トランジスタが導通するのに十分な電圧(いわゆるトランジスタの閾値電圧)以上であれば良い。また、選択ビット線に印加する電圧は、上記説明では+1Vとしたが、この値は一例であり、実際には、ソース線に印加される電圧との電位差によって可変抵抗素子の抵抗状態を検出可能で、且つ、同抵抗状態が変化しない範囲内(書き換え動作が起こらない範囲内)の電圧であれば良い。
次に、図3に示すような1T1R型のメモリセルを備えた不揮発性半導体記憶装置の製造方法について簡単に説明する。図6は、このようなメモリセルの概略断面構造図である。なお、図6は、概念的に図示したものであり、図面上の寸法比と実際の寸法比は必ずしも一致するものではない。
まず、半導体基板60に選択トランジスタTを形成する。即ち、素子分離領域61を形成した半導体基板60上にゲート絶縁膜62、ゲート電極63、及びドレイン拡散領域64とソース拡散領域65から構成される選択トランジスタTを形成する。この際、図示はしていないが、メモリセル以外の周辺回路(前述のメモリ制御部30等)を合わせて形成する。
次に、BPSG(Boron Phosphorous Silicate Glass)からなる層間絶縁膜66を形成した後、公知のフォトリソグラフィ法とドライエッチング法により選択トランジスタTのドレイン領域64に到達するコンタクトホール67を開口する。そして、公知の手法で当該コンタクトホール67内のみをW等の導電性の金属材料で埋め込んだコンタクトプラグを形成する。
次に、コンタクトホール67内に埋め込まれた導電性コンタクトプラグと可変抵抗素子Rを形成する下部電極69との電気的接続を安定に確保するためのオーミックコンタクト層68として、スパッタリング法によってTiN/Ti膜を厚さ100nm/50nmの厚みで形成する。そしてオーミックコンタクト層68上部に、TiN膜を膜厚200nmで成膜することで下部電極69を形成する。
更に、この下部電極(TiN膜)69上に可変抵抗体膜70となる酸化チタンを膜厚5〜50nmでDCマグネトロンスパッタリング法またはCVD法により形成する。次に、上部電極71として厚さ100nmのTiN膜を形成する。その後、公知のフォトリソグラフィ法とドライエッチング法により上部電極71、可変抵抗体膜70、下部電極69を順次加工し、可変抵抗素子Rを完成させる。
なお、可変抵抗体膜70は酸化チタン膜に限定されるものではなく、酸化コバルト、酸化ニッケル、酸化亜鉛、酸化ニオブ等の遷移金属元素の酸化物についても利用可能である。また、遷移金属を形成後、酸化処理を施すことで可変抵抗体膜70を形成するものとしても良い。
また、上部電極及び下部電極を、いずれもTiN(窒化チタン膜)で形成したが、電極材料は窒化チタンに限定されるものではなく、Ta,Pt,Ir,Os,Ru,Rh,Pd,Al,W等の他の金属材料を用いることもできる。
このようにして可変抵抗素子Rが生成された後、当該可変抵抗素子R上に層間絶縁膜72を膜厚50〜60nmで成膜し、可変抵抗素子R(上部電極71)に接続するコンタクトホール74及び選択トランジスタTのソース拡散領域65に接続するコンタクトホール73を開口する。
次に、配線材料としてTiN/Al−Si/TiN/Tiを成膜し、公知のフォトリソグラフィ法とドライエッチング法により加工することで配線75及び配線76を形成する。
次に、層間絶縁膜77を形成し、配線75あるいは配線76に到達するコンタクトホール(不図示)を形成した後、TiN/Al−Si/TiN/Tiを成膜し、公知のフォトリソグラフィ法とドライエッチング法により加工して配線78(加工パターンは図示せず)を形成する。最後に、プラズマCVD法により表面保護膜79としてSiN膜を形成し、メモリセル内に可変抵抗素子Rと選択トランジスタTを有する半導体記憶装置が完成する。
なお、上述した製造手順では、周辺回路のコンタクトホール形成、配線加工等は省略して記述しているが、それぞれメモリセル内の形成時に合わせて形成すれば良い。
また、上記では、1T1R構成のメモリセルの場合における製造方法並びに駆動方法について説明をしたが、メモリセルの構成は1T1R型に限られるものではない。例えば、他の例としては、ビット線及びワード線を上部電極若しくは下部電極に夫々直接接続して、両電極間の交点(クロスポイント)にある可変抵抗体のデータを直接読み出すメモリセル構成、いわゆるクロスポイント型(1R型)のメモリセルとすることもできる。さらには、クロスポイント構成での寄生電流低減のため、可変抵抗素子Rとダイオードを直列に接続した1D1R構成のメモリセルとすることもできる。該ダイオードは、可変抵抗体に対して上部電極若しくは下部電極の外側に直列に接続する構造が一般的であるが、ダイオードを可変抵抗体と上部電極との間に、若しくは可変抵抗体と下部電極との間に配置する構造としても良い。ダイオードとしては、PNダイオード特性又はショットキーダイオード特性を示す材料、又はZnOやBi2O3等のバリスタなどが用いられる。
[第2実施形態]
本発明の第2実施形態(以下、適宜「本実施形態」という)につき、図7〜図8の各図を参照して説明する。
本実施形態は、第1実施形態と比較して書き込み及び読み出しの処理手順が異なるのみであり、その構成要素は第1実施形態の場合(図1)と同一である。以下では、処理手順についてのみ、タイミングチャートを参照しながら説明し、各構成要素についての説明は割愛する。なお、本実施形態でも、データが1ビットの場合を想定して説明するが、図2を参照して説明したように、メモリ制御部30に複数のメモリユニットが接続されている構成とみなすことで、多ビットのデータについても同様に扱うことができる。
本実施形態は、書き込み及び読み出し処理時において、プリフェッチ技術を用いる点が第1実施形態と異なる。プリフェッチとは、近年の読み出し/書き込み速度の高速化の要求から、DDR SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)等の高速なメモリで用いられている技術であり、読み出し時には、複数のメモリセルから並列に読み出したデータを一旦バッファに取り込み、1列に並べ直してメモリ外部へと出力することにより高速化を図り、逆に書き込み時には、メモリに入力されたデータ列を一旦バッファに取り込み、複数のメモリセルに並列に書き込むことにより高速化を図る技術である。
図7は、本実施形態における不揮発性半導体記憶装置(メモリ)へのバースト書き込み処理の手順を示すタイミングチャートである。図7では、図4の場合と同様、クロック同期式のメモリでバースト長が4である場合が想定されている。一方で、図7では、図4の場合と違って2ビットプリフェッチが適用されている。
メモリ制御部30に対し、行アドレス指定コマンド「A」及び行アドレス「R1」が与えられると(時刻t2)、コマンド「A」を受けた命令解釈部31は、適切なタイミング(例えばt3〜t4間)で、コマンド「A」を信号ComCとして行アドレスバッファ35に送る。行アドレス「R1」は、一旦バッファ32に取り込まれた後、信号ComCとしてコマンド「A」が出力されるのと同期して信号AddCとして行アドレスバッファ35及び読み出し制御部36に対して出力される。行アドレスバッファ35は、信号ComCとして入力されたコマンド「A」をトリガとして、信号AddCとして入力された行アドレス「R1」を内部のバッファに保持する。
続いて、メモリ制御部30に、書き込みコマンド「W」と指定アドレス「C1」が与えられると(時刻t4)、コマンド「W」を受けた命令解釈部31は、適切なタイミング(例えばt5〜t6間)で、読み出し制御部36、読み書き切換制御部41に対して信号ComCとしてコマンド「R」を出力する。また、アドレス「C1」は、一旦バッファ32に保持された後、信号ComCとしてコマンド「R」が出力されるのと同期して、信号AddCとして読み出し制御部36に出力される。読み出し制御部36は、信号ComCとして入力されるコマンド「R」をトリガとして、信号AddCとして入力されるアドレス「C1」を内部のバッファに保持する。また、命令解釈部31は、適切なタイミングで信号R/Wを「High」レベルとする。
読み出し制御部36は、コマンド「R」を1回受ける毎に、バースト長相当分(ここでは4回分)の連続するアドレス値を信号AddCrとしてサブバンク入れ換え部42に対して出力する。なお、本実施形態では2ビットプリフェッチを採用しているため、2ビット毎にアドレスを指定して信号AddCrを出力することになる。具体的には、前記t5〜t6間に受けたコマンド「R」に対しては、時刻t6〜t7間にアドレス「C1」を出力し、時刻t8〜t9間にアドレス「C1+2」を出力する。そして、このアドレスを出力している間(時刻t6〜t7間、t8〜t9間)及びその直後の1サイクル間(時刻t7〜t8間、t9〜t10間)にわたって、読み出し制御部36は「High」レベルの信号REをサブバンク入れ換え部42に出力する。これは、本実施形態では、サブバンクからのデータ読み出しに2サイクルを要すること(2ビットプリフェッチが適用されること)が前提となっているため、サブバンクへのアクセス自体を2サイクル周期とする必要があり、読み出し/書き込みの切り換えも2サイクル周期とする必要がある。そこで、読み出し/書き込みの切り換え制御のための信号REも、2サイクル周期で切り換わる信号としている。ちなみに、4ビットプリフェッチを適用した場合には、4サイクル周期とすれば良いことになる。
また、第1実施形態の場合と同様、メモリ制御部30は、前記「W」コマンドが入力されると同時に(時刻t4)、書き込み対象データの入力も開始される。本実施形態で説明する実施例では、バースト長が4であるので、1つの「W」コマンドに対し4つの書き込み対象データ(D0、D1、D2、D3)が入力される(時刻t4〜t7)。入力された書き込み対象データは、時刻t9以後に、比較部37においてサブバンク52Aまたは52Bから読み出された既書き込みデータとの比較が行われるまで、バッファ34で一時的に蓄積される。
図7のタイミングチャートでは、図4の場合と同様、サブバンクへのアクセス開始を時刻t7としているため、この時点で、行アドレスバッファ35が行デコーダ53に対して行アドレス「R1」を示す信号Rowを供給し、当該行アドレス線をアクティブ化している。もちろん、この時刻t7よりも早いタイミングで当該行アドレス線をアクティブとしても良い。
時刻t7以後、読み出し制御部36から与えられた信号RE(読み出しトリガ信号に相当)、及び信号AddCr(読み出し指定アドレス信号に相当)に基づき、サブバンク入れ換え部42は、列デコーダ51A,51Bを介して、サブバンク52A,52Bへの読み出し処理を開始する。サブバンク入れ換え部42は、読み書き切換制御部41から入力される信号SBSelが「Low」の場合は、列デコーダ51Aに対して読み出し指示を行い、信号SBSelが「High」の場合は、列デコーダ51Bに対して読み出し指示を行う。すなわち、サブバンク入れ換え部42は、信号SBSelによって読み出し対象となるサブバンクを52Aと52Bの間で入れ換える。このとき、前記のとおり、本実施形態の場合には、サブバンクへのアクセスを2サイクル周期とする必要があるため、信号SBSelによる読み出し対象サブバンクの切り換えタイミングも2サイクル周期となる。
そして、本実施形態では、連続する2アドレスが同一のサブバンク内に割り当てられ、2アドレス毎に異なるサブバンクに割り当てられる構成である。すなわち、アドレスC1及びC1+1は同一のサブバンク内に存在する一方、アドレスC1+2及びC1+3は、別のサブバンク内に存在することになる。ここでは、アドレスC1及びC1+1がサブバンク52Aに存在し、アドレスC1+2及びC1+3がサブバンク52B内に存在するものとして説明する。
サブバンク入れ換え部42は、信号REが「High」である間、読み出し指示を列デコーダ51Aまたは51Bに与える。まず、時刻t7〜t8において、信号SBSelが「Low」であることより、列デコーダ51Aに対し、信号AddCrによって指定されたアドレスC1及び、このアドレスC1に連続するアドレス(すなわちアドレスC1+1)に対応したメモリセルの既書き込みデータの読み出し指示を与える。このとき、行アドレスは、行デコーダ53によって指定された行アドレス(信号Rowによって指定された行アドレスR1)がアクティブとなっている。そして、時刻t7〜t9までの間に、列デコーダ51Aはサブバンク52AからアドレスC1及びC1+1に対応したメモリセルの既書き込みデータを信号DRAとしてサブバンク入れ換え部42に送出する(データQ0,Q1)。
第1実施形態の場合、時刻t7〜t8間に、読み出しコマンド「R」及び読み出し指定アドレス「C1」が与えられると、当該アドレスC1に対応したメモリセルの既書き込みデータが読み出された。これに対し、本実施形態の場合、完全に既書き込みデータの読み出しが完了するまでには時刻t7〜t9までの時間を要する一方、読み出し対象アドレスは「C1」及び「C1+1」の2つのアドレスとなる。つまり、列デコーダ51Aへの読み出しコマンド入力から、読み出しデータDRAの出力まで2サイクルの時間を要する反面、2アドレス分のデータが読み出される構成であるため、結果として、第1実施形態と同様に、1サイクル当たり1アドレス分のデータが得られることになる。
次に、時刻t9〜t10において、信号SBSelが「High」であることより、サブバンク入れ換え部42は、列デコーダ51Bに対し、信号AddCrによって指定されたアドレスC1+2、及び、このアドレスC1+2に連続するアドレス(すなわちアドレスC1+3)に対応したメモリセルの既書き込みデータの読み出し指示を与える。このとき、行デコーダ53によって指定された行アドレスがアクティブとなっている(信号Rowによって指定された行アドレスR1)。そして、時刻t9〜t11までの間に、列デコーダ51Bはサブバンク52BからアドレスC1+2及びC1+3に対応したメモリセルの既書き込みデータを信号DRBとしてサブバンク入れ換え部42に送出する(データQ2,Q3)。
そして、時刻t9〜t10間に、サブバンク入れ換え部42によってマージされた読み出しデータ(Q0〜Q1)が、読み出し回路43において増幅された後、信号DatCとして比較部37に出力される。同様に、時刻t11〜t12間に、サブバンク入れ換え部42によってマージされた読み出しデータ(Q2〜Q3)が、読み出し回路43において増幅された後、信号DatCとして比較部37に出力される。信号DatCからデータが出力されていることは、信号DEがアクティブ(High)となることで示される。
比較部37は、命令解釈部31から与えられる信号R/Wが「High」である場合に、信号DEがアクティブであると比較演算を行う。このとき、信号DEをトリガとして、前記信号DatCと、バッファ34から出力される書き込み対象データDatOとの比較を行う。具体的には、比較部37は、時刻t9〜t10間には書き込み対象データであるD0〜D1と、サブバンク52Aから読み出したQ0〜Q1を比較し、その結果をデータG0〜G1として書き込み制御部39に出力する(信号Comp)。同様に、比較部37は、時刻t11〜t12間には書き込み対象データであるD2〜D3と、サブバンク52Bから読み出したQ2〜Q3を比較し、その結果をデータG2〜G3として書き込み制御部39に出力する(信号Comp)。
書き込み制御部39は、比較部37から入力された信号Compのデータに基づいてサブバンク入れ換え部42に対してデータの書き込み制御を行う。具体的には、バッファ38に保持されていたアドレスに、バッファ34に保持されていた書き込み対象データのうち、比較部37から指定されたビットを書き込むという指示を出す。このとき、書き込み制御部39は、サブバンク入れ換え部42に対し、信号AddOwによってアドレスを指定し、信号WEによって書き込みビットを指定し、信号DatOwによって書き込み対象データを指定する(時刻t10〜t11間、t12〜t13間)。なお、書き込みビットを示す信号WEは、比較部37から与えられる信号Compに基づいて生成され、既書き込みデータと書き込み対象データの比較結果が異なるビットのみが書き込みビットとして指定される。
サブバンク入れ換え部42は、書き込み制御部39から前記データ書き込み指示を受けると、列デコーダ51A,51Bに対して書き込み指示を行う(時刻t13〜t17間)。このとき、一の列デコーダに対して読み出し処理が行われている間には、それとは別の列デコーダに対して書き込み指示を与える。より具体的には、例えば、時刻t13〜t15間には列デコーダ51Aに対して書き込み指示を与え、時刻t15〜t17間には列デコーダ51Bに対して書き込み指示を与える。これにより、列デコーダ51Bに対して読み出し指示が与えられている時刻t13〜t15間に、列デコーダ51Aに対して書き込み指示が与えられる構成となる。また、列デコーダ51Aに対して読み出し指示が与えられている時刻t15〜t17間に、列デコーダ51Bに対して書き込み指示が与えられる構成となる。
なお、列デコーダ51Aに出力される信号WEAと、列デコーダ51Bに出力される信号WEBは、前述した信号WEによる書き込みビットの指定が反映されているため、前記比較部37による比較結果が異なるビットのみが指定された信号となる。すなわち、各サブバンク52A,52Bの双方とも、書き込み対象データが既書き込みデータと異なる値を取ったビットのみが書き込まれることになる。
また、図7では、信号DWA,DWBは一部破線で示されている。これは本実施形態が各メモリセルへの書き込みに2サイクルを要する方式であることから、一サイクル前から引き続いて書き込み処理が行われ、この2サイクル目に書き込み処理が完了することを示すものである。
本実施形態においては、サブバンクに対するアクセスが、読み出しサイクル2サイクルと、書き込みサイクル2サイクルの繰り返しで行われるため、書き込み制御部39が書き込み指示を出力した後、サブバンク入れ換え部42が列デコーダ51A,51Bに書き込み指示を出すまでに2サイクルのタイミング調整時間が必要となる(図7における信号RWAとRWBのタイミングを参照)。このタイミング調整やこれに要するバッファリングも、サブバンク入れ換え部42内で行われるものとして良い。
このようにして、時刻t4に入力された「W」コマンドに対応した書き込み対象データ(D0〜D3)は、時刻t13〜t17間において各サブバンク内に書き込みが完了する(もしくは同一の既書き込みデータがそのまま利用される)。時刻t8に入力された「W」コマンドに対応した書き込み対象データ(D4〜D7)に対しても、前記と同様の処理を行う。このとき、図7を参照すれば、データD2及びD3の書き込みが完了した時刻t15〜t17間のタイミングに続いて、時刻t17〜t19間にデータD4及びD5のサブバンク51Aへの書き込みが行われる。すなわち、書き込みコマンド「W」が(バースト長の間隔で)連続してメモリ制御部30に入力された場合であっても、書き込みにタイムラグが生じず、これによって書き込み速度が遅くなるということがない。そして、このように書き込みコマンド「W」が(バースト長の間隔で)連続して入力された場合であっても、書き込みに要する時間を確保することができており、書き込みエラーになることもない。
次に、図8のタイミングチャートを用いて、具体的な読み出し動作の手順を説明する。なお、図8の場合も、図7と同様、バースト長が4の場合を例示している。読み出し動作は、図7に示した書き込み動作手順において、比較部37による比較処理、書き込み制御部39及びサブバンク入れ換え部42による書き込み指示、両列デコーダ51A,51Bによる書き込み処理が行われないものと考えれば良い。
メモリ制御部30に対し、行アドレス指定コマンド「A」及び行アドレス「R1」が与えられると(時刻t2)、書き込み動作の場合と同様、コマンド「A」を受けた命令解釈部31は、適切なタイミング(例えばt3〜t4間)で、コマンド「A」を信号ComCとして行アドレスバッファ35に送る。行アドレス「R1」は、一旦バッファ32に取り込まれた後、信号ComCとしてコマンド「A」が出力されるのと同期して信号AddCとして行アドレスバッファ35及び読み出し制御部36に対して出力される。行アドレスバッファ35は、信号ComCとして入力されたコマンド「A」をトリガとして、信号AddCとして入力された行アドレス「R1」を内部のバッファに保持する。
続いて、メモリ制御部30に、読み出しコマンド「R」と指定アドレス「C1」が与えられると(時刻t4)、コマンド「R」を受けた命令解釈部31は、適切なタイミング(例えばt5〜t6間)で、読み出し制御部36、読み書き切換制御部41に対して信号ComCとしてコマンド「R」を出力する。また、アドレス「C1」は、一旦バッファ32に保持された後、信号ComCとしてコマンド「R」が出力されるのと同期して、信号AddCとして読み出し制御部36に出力される。読み出し制御部36は、信号ComCとして入力されるコマンド「R」をトリガとして、信号AddCとして入力されるアドレス「C1」を内部のバッファに保持する。ただし、命令解釈部31は、入力されたコマンドが読み出しコマンド「R」であるため、書き込み時と違って「Low」レベルの信号R/Wを出力する。この信号R/Wは、例えば命令解釈部31に対して書き込みコマンド「W」が入力されるまでの間、「Low」が維持されるものとしても構わない。
読み出し制御部36は、書き込み時と同様、コマンド「R」を1回受ける毎に、バースト長相当分の連続するアドレス値を信号AddCrとしてサブバンク入れ換え部42に対して出力する。ただし、本実施形態の場合、2ビットプリフェッチを採用しているため、2ビット毎にアドレスを指定して信号AddCrを出力する。具体的には、前記t5〜t6間に受けた「R」コマンドに対し、時刻t6〜t7間にアドレス「C1」を出力し、時刻t8〜t9間にアドレス「C1+2」を出力する。そして、このアドレスを出力している間(時刻t6〜t7間、t8〜t9間)及びその直後の1サイクル間(時刻t7〜t8間、t9〜t10間)にわたって、読み出し制御部36は「High」レベルの信号REをサブバンク入れ換え部42に出力する。
そして時刻t7以後、書き込み処理時の場合と同様に、読み出し制御部36から与えられた信号RE(読み出しトリガ信号に相当)、及び信号AddCr(読み出し指定アドレス信号に相当)に基づき、サブバンク入れ換え部42及び列デコーダ51A,52Bを介して、サブバンク52A,52Bへの読み出し処理が開始される。サブバンク入れ換え部42は、読み書き切換制御部41から入力される信号SBSelの値(High/Low)により、読み出し対象サブバンクをサブバンク52A,52B間で振り分け、これによって、各サブバンク52A,52Bから交互に読み出し処理が行われる。そして、読み出されたデータ(Q0〜Q1)は、サブバンク入れ換え部42を介して読み出し回路43に与えられ、ここで増幅処理が施された後、信号DatCとして出力制御部33に送られる(時刻t9〜t12)。信号DatCからデータが出力されていることは、信号DEがアクティブ(High)となることで示される。出力制御部33は、入力された信号R/Wが「Low」レベルであることを認識し、さらに信号DEがアクティブである場合に、入力された信号DatCをメモリバス21へと送出する。
なお、本実施形態では、2つのデータ(例えばQ0とQ1)が信号DatCとして読み出し回路43から出力制御部33に送られる構成である。このため、2データを2サイクルの時間を用いて信号DatCとして出力するものとして良いし、1サイクル毎に1データずつ順次読み出すものとしても良い(図8は後者)。後者の場合、例えば時刻t9〜t10間にデータQ0を信号DatCとして出力し、時刻t10〜t11間にデータQ0を信号DatCとして出力する構成とすることができる。この場合、出力制御部33は、信号DatCが示すデータを1サイクル時間バッファリング可能な構成となる。
このようにして、アドレスC1〜C1+3に対応したメモリセルのデータ(Q1〜Q3)が、時刻t10〜t14にかけて読み出される。
なお、時刻t4に引き続き、時刻t8において読み出しコマンド「R」、及び読み出し用行アドレス「C2」が入力された場合においても、時刻t11〜t15にかけて各サブバンクに対してアドレスC2〜C2+3に係るメモリセルの読み出し指示が行われ、これによって時刻t14〜t18にかけて当該アドレス位置のデータがメモリ制御部のデータバスから出力される。つまり、読み出しコマンド「R」が(バースト長の間隔で)連続してメモリ制御部30に入力された場合であっても、読み出しにタイムラグが生じず、これによって読み出し速度が遅くなるということがない。同様に、読み出しコマンド「R」の後に書き込みコマンド「W」が入力された場合や、その反対の場合においても、タイムラグを生じることがない。
以上、本実施形態では、2ビットプリフェッチを適用した場合のメモリの動作内容について説明したが、それ以上の多ビットプリフェッチを適用したメモリにおいても同様の方法で書き込み/読み出しを実行することができる。そして、本実施形態も、第1実施形態の場合と同様、書き込みコマンド「W」が与えられた場合、実際にメモリセルに対する書き込み処理を行う前に書き込み対象のメモリセルから既書き込みデータの読み出しを行って書き込み対象データとの比較を行い、比較結果が異なる場合にみ当該メモリセルに対して書き込み対象データの書き込み処理を行う構成である。従って、従来の書き込み処理と比較して、同一メモリセルに対して実際に書き込み用電圧が印加されて書き込み処理が行われる回数が減少する。これにより、各メモリセルを延命させることができる。
[第3実施形態]
本発明の第3実施形態(以下、適宜「本実施形態」という)につき、図9〜図14の各図を参照して説明する。
本実施形態は、第1及び第2実施形態と比較して、サブバンク(メモリセルアレイ)を一つ有する構成である。すなわち、第1及び第2実施形態のように、複数のサブバンク間で書き込みと読み出しを並列して実行するという処理が行えない構成である。
すなわち、本実施形態は、既書き込みデータを読み出して書き込み対象データとの比較結果が異なっている場合に、対象となるメモリセルに対して書き込み対象データの書き込みを行っている間、別のメモリセルの既書き込みデータを読み出して、書き込み対象データと比較を行うという形態を採用することができない。このため、連続して書き込み対象データを入力されても、一の書き込み処理が完了するまで次の書き込み対象データと既書き込みデータとの比較処理が行えない。すなわち、本実施形態の場合には、一のアドレス毎にデータ読み出しまたは書き込みの処理を実行する必要があることから、メモリアクセスをバーストにする意味はない。従って、以下ではメモリアクセスの設定がバーストでないものとして説明を行う。
図9は、本実施形態における不揮発性半導体記憶装置の概念的構造を示すブロック図であり、図1に示す構成図と比較して、サブバンク52B、列デコーダ51Bを備えない。すなわち、サブバンク(メモリセルアレイ)52Aを単独で備える構成であるため、読み出しと書き込みを切り換えながら実行するという制御が不要である。このため、図1における読み書き切換制御部41を備えない。また、読み出しや書き込みのタイミングを制御する必要がないため、読み出し制御部36や書き込み制御部39も不要である。さらに、複数のサブバンクを入れ換えるという動作を伴わないため、当然にサブバンク入れ換え部42を備えない。
また、バースト読み出しやバースト書き込みを行わない構成であるため、入力される一のアドレスに基づいて、バースト長相当分連続するアドレスを演算して展開する必要がない。このため、読み出し制御部36及びバッファ38が不要である。
このため、図9に示すように、本実施形態における不揮発性半導体記憶装置のメモリ制御部30は、命令解釈部31、バッファ32、出力制御部33、バッファ34、行アドレスバッファ35、比較部37、読み出し/書き込み制御部40、及び読み出し回路43を備える構成である。なお、読み出し/書き込み制御部40は、内部にアドレスバッファ44を備える。
なお、本実施形態においても、第1実施形態と同様、図9におけるデコーダ部(行デコーダ53,列デコーダ51A)及びサブバンク52Aは、説明の都合上、1アドレスに対し1ビットのデータを持つ形態を想定した図示となっている。多ビットのデータを扱う場合には、これらは図10に示されるような構成を取る。言い換えれば、図10にされる複数の各メモリユニットや各デコーダ部を、まとめて一つに図示したのが図9の構成である。なお、図10は、第1実施形態で説明した図2から、サブバンクB及び列デコーダBを削除した構成であるため、説明の重複を避けるべく、各構成要素の接続関係等の説明を省略する。
本実施形態における書き込み動作について図11のタイミングチャートを参照して説明する。
CPU10からメモリアクセス制御部20に、CPUバスコマンド(書き込み)「CW」,CPUバスアドレス「CA1」,及びCPUバスデータ(書き込み対象データ)「CD1」が送られると、メモリアクセス制御部20はこれをメモリ制御部30に適した形式に変換し、メモリバス21を介して、メモリ制御部30に送出する。具体的には、CPUバスアドレス「CA1」を上位部分「AA1(行アドレス)」と下位部分「WA1(列アドレス)」とに分割し、メモリバス21のコマンドに「AC(行アドレス指定コマンド)」を出力した時に行アドレス「AA1」を、メモリバス21のコマンドに「WC(書き込みコマンド)」を出力した時に列アドレス「WA1」を、メモリバス21のアドレスに出力する。結果として、メモリバス21のコマンドに出力された「AC」と「WC」は命令解釈部31に与えられ、メモリバス21のアドレスに出力された「AA1」と「WA1」はバッファ32に与えられる。また、メモリバス21のコマンドに「WC」を出力した際には、メモリバスデータ21のデータに「WD1」が出力され、バッファ34に供給される。尚、前記「WD1」は前記「CD1」と同一値である。
命令解釈部31は、入力されたコマンドが行アドレス指定コマンド「AC」であることを認識すると、これを信号ComCとして行アドレスバッファ35に送る。それと同期して、バッファ32から信号AddCとして行アドレス「AA1」が行アドレスバッファ35に送られるので、行アドレスバッファ35は行アドレス指定コマンド「AC」をトリガとして、行アドレス「AA1」を信号Rowとして行デコーダ53に送る。行デコーダ53はサブバンク52Aのこの信号Rowで指定された行アドレスをアクティブとする。
また、命令解釈部31は、入力されたコマンドが書き込みコマンド「WC」であることを認識すると、これを信号ComCとして読み出し/書き込み制御部40に送る。これに同期して、バッファ32から信号AddCとして列アドレス「WA1」が読み出し/書き込み制御部40に送られるので、読み出し/書き込み制御部40は、前記ComCとして送られてきた「WC」をトリガとして、内部のアドレスバッファ44にこの「WA1」を記憶する。命令解釈部31は、書き込みコマンド「WC」を受け取ると、第1実施形態と同様、信号R/Wをアクティブ(High状態)にして出力制御部33及び比較部37に与える。
読み出し/書き込み制御部40は、前記のように書き込みコマンド「WC」により、書き込み処理の指示を受けると、アドレスバッファ44に書き込みアドレス「WA1」が書き込まれた後で、メモリバス25を介して、列デコーダ51Aに対し読み出しコマンド「RC」と読み出しアドレスを出力する。なお、このときの読み出しアドレス値には、バッファ32から信号AddCとして与えられ、アドレスバッファ44に記憶されていた書き込みアドレス「WA1」を用いる。
列デコーダ51Aは、前記読み出しコマンド「RC」及び読み出しアドレス「WA1」を受け取ると、同アドレスに対応したメモリセル(選択メモリセル)の両端に読み出し用電圧が印加されるよう、ビット線に所定電圧を印加する。なお、ワード線、ソース線は、行アドレスバッファ35から信号Rowとして行デコーダに行アドレス「AA1」が与えられた時点で選択メモリセルに所定電圧が印加(アクティブ化)されている。そして、前記選択メモリセルに接続される電圧線を流れる電流値を、読み出し/書き込み制御部40を介して読み出し回路43によって読み出す。これによって、前記選択メモリセルに格納されている既書き込みデータRD1が読み出される。
読み出し回路43は、既書き込みデータRD1を信号DatCとして比較部37に出力する。また、前記データRD1の出力タイミングを示す信号DEを比較部37に出力する。比較部37は、信号R/Wがアクティブ(High状態)であるため、前記信号DEにより読み出しデータRD1が出力されていることを検知すると、その読み出しデータRD1と信号DatOとしてバッファ34から与えられる書き込み対象データWD1との比較を行う。そして、比較した結果Comp(図11上ではCmp1に相当)が不一致であった場合には、読み出し/書き込み制御部40に書き込み処理の実行を指示し、読み出し/書き込み制御部40によって同メモリセルに対して書き込み対象データWD1の書き込み指示が与えられる。一方、前記比較結果Cmp1が一致であった場合には何も行わない
具体的には、読み出し/書き込み制御部40は、前記書き込み処理の実行を指示されると、メモリバス25を介して、列デコーダ51Aに対し、書き込みコマンドWC1、書き込みアドレス、及び書き込み対象データを出力する。書き込みアドレスには、バッファ32から信号AddCとして与えられ、アドレスバッファ44に記憶されていたアドレスWA1を用い、書き込み対象データには、バッファ34から信号DatOとして与えられるデータWD1を用いる。なお、バッファ34はFIFOバッファであり、入力された書き込み対象データを一定期間遅延させて出力するようになっている。本実施形態においては、図11に示したように、バッファ34にデータが入力されてから比較部37で比較が行われるまでの時間間隔は一定であるので、FIFOを用いて遅延させるだけで足りる。列デコーダ51Aは、前記書き込みコマンド、書き込みアドレス、及び書き込み対象データを受け取ると、同アドレスに対応したメモリセル(選択メモリセル)の両端に、前記書き込み対象データを書き込むための書き込み用電圧が印加されるようビット線に所定電圧を印加する。なおワード線、ソース線は、前記読み出し処理の時と同様に、行アドレスバッファ35から信号Rowとして行デコーダに「AA1」が与えられた時点で選択メモリセルに所定電圧が印加(アクティブ化)されている。以上のようにして、前記選択メモリセルに対して書き込み処理が実行される。
CPUバスコマンドを発行してから一定時間経過すると、本実施形態の不揮発性半導体記憶装置は、新たなコマンド入力を受け付けるようになる。前記一定時間とは、直前のコマンド処理に影響を及ぼさない最短の時間のことである。これを図11を例に説明する。CPU10から出されたアドレス「CA1」にデータ「CD1」を書き込むコマンドCWが正常に完了するためには、メモリバス25のコマンドに「WC」が入力されるまで、行デコーダに信号Rowとして入力される値が「AA1」であり続ける必要がある。従って、次のコマンドはそれを満たすような時間つまり、図11中の「最小書き込み時間」だけ間を置いて入力されなければならないことになる。
なお、同図における2回目の書き込み処理は、書き込み対象データWD2(=CD2)と書き込みアドレスWA2の既書き込みデータが一致している場合(比較部37における比較結果Cmp2が一致を示している場合)を示している。この場合、比較処理完了後、実際には読み出し/書き込み制御部40からメモリセルに対して書き込み処理の指示が与えられないため、図11上では、コマンドWC,アドレスWA2,データWD2を破線で表し、実際には書き込み処理が行われないことを示している。
なお、書き込み処理時には、命令解釈部31から出力制御部33に「High」状態を示す信号R/Wが与えられるため、比較処理のために読み出し回路43によって読み出された既書き込みデータはデータバス21に出力されない。
本実施形態では、メモリセルへの書き込み処理の際、1)メモリセルからの既書き込みデータの読み出し処理、2)既書き込みデータと書き込み対象データの比較処理、3)メモリに対する書き込み対象データの書き込み処理、という各手順を順次処理するため、メモリ書き込みに要する時間が従来のメモリよりも、読み出し並びに比較処理を行う分だけ長くなる。従って、CPU10は、前記メモリセルに対する書き込み処理に要する最大時間(すなわち比較結果が異なる場合における書き込み処理が完了するまでの時間)よりも長い時間を持ってから、各コマンドを出力する必要がある。これは、例えば、CPU10自身が書き込みコマンドの出力間隔を長くすることで対処可能である。
次に、本実施形態における読み出し動作について図12のタイミングチャートを参照して説明する。
CPU10からメモリアクセス制御部20に、CPUバスコマンド(読み出し)CR,及びCPUバスアドレスCA1が送られると、メモリアクセス制御部20は、これをメモリ制御部30に適した形式に変換し、メモリバス21を介して、メモリ制御部30に送出する。具体的には、CPUバスアドレス「CA1」を上位部分「AA1(行アドレス)」と下位部分「RA1(列アドレス)」とに分割し、メモリバス21のコマンドに「AC(行アドレス指定コマンド)」を出力した時に「AA1」を、メモリバス21のコマンドに「RC(読み出しコマンド)」を出力した時に「RA1」を、メモリバス21のアドレスに出力する。結果として、メモリバス21のコマンドに出力された「AC」と「RC」は命令解釈部31に与えられ、メモリバス21のアドレスに出力された「AA1」と「RA1」はバッファ32に与えられる。
命令解釈部31は、入力されたコマンドが行アドレス指定コマンド「AC」であることを認識すると、これを信号ComCとして行アドレスバッファ35に送る。それと同期して、バッファ32から信号AddCとして行アドレス「AA1」が行アドレスバッファ35に送られるので、行アドレスバッファ35は行アドレス指定コマンド「AC」をトリガとして、行アドレス「AA1」を信号Rowとして行デコーダ53に送る。行デコーダ53はサブバンク52Aのこの信号Rowで指定された行アドレスをアクティブとする。
また、命令解釈部31は、入力されたコマンドが読み出しコマンド「RC」であることを認識すると、これをComCとして読み出し/書き込み制御部40に送る。これに同期して、バッファ32から信号AddCとして列アドレス「RA1」が読み出し/書き込み制御部40に送られるので、読み出し/書き込み制御部40は内部のアドレスバッファ44にこの「RA1」を、前記ComCとして送られてきた「RC」をトリガとして記憶する。さらに、命令解釈部31は、R/W信号をインアクティブ(「Low」状態)として、出力制御部33及び比較部37に与える。
読み出し/書き込み制御部40は、メモリバス25を介して列デコーダ51Aに対し、読み出しコマンドRCと読み出しアドレスを出力する。読み出しアドレス値としては、バッファ32から信号AddCとして与えられ、アドレスバッファ44に記憶されていた読み出しアドレス値RA1を用いる。列デコーダ51Aは、前記指示を受けると、読み出しアドレス値RA1に対応したメモリセル(選択メモリセル)の両端に読み出し用電圧が印加されるよう、ビット線に所定電圧を印加する。なお、ワード線、ソース線は、行アドレスバッファ35から信号Rowとして行デコーダに「AA1」が与えられた時点で選択メモリセルに所定電圧が印加(アクティブ化)されている。そして、前記選択メモリセルに接続される電圧線を流れる電流値を、読み出し/書き込み制御部40を介して読み出し回路43によって読み出す。これによって、前記選択メモリセルに格納されている既書き込みデータRD1が読み出される。
読み出し回路43は、前記データRD1の出力タイミングを示す信号DEを出力する。出力制御部33は、与えられる信号R/WがLow状態であることから、前記信号DEをトリガとして、信号DatCとして読み出し回路43から送られる既書き込みデータRD1を、データバス21を介してメモリアクセス制御部20に出力する。メモリアクセス制御部20は、この読み出しデータRD1をCPUバス11を介してCPU10に与える。なお、信号R/WがLow状態であるため、比較部37は、信号DatCとして読み出し回路43から送られる既書き込みデータRD1を用いた比較処理を行わない。
上述した本実施形態の不揮発性半導体記憶装置の処理は、ビット幅(ワード)単位で処理されることを前提としたものであるが、図13に示す構成のように、メモリバス25にデータのビットイネーブルを伝送する仕組みを追加すれば、書き込みの可否をビット毎の一致・不一致で行うことも可能である。この場合、メモリセルはビット単位での書き込み処理が可能であることが前提となる。ビット単位での書き込みは、図10における、WEA[1:j](jはワードのビット幅を示す)に、比較部37の比較結果の信号Compを適用することにより実現できる。
なお、図11,図12に示したタイミングチャートは、本実施例の原理を示すものであるが、バスの条件やシステム上の制約等によって、クロックの乗せ換えやアドレス値、データビット幅の変換等の処理が必要となる場合がある。しかし、これらの処理は、必要に応じて適宜選択して適用すればよく、本発明の主旨とは異なるため説明を割愛する。
なお、本実施形態において、メモリ制御部30で実現している処理は、ソフトウェアによって実現することも可能である。即ち、CPU10上で実行されるソフトウェア(あるいはファームウェア)が、図14に示されたような手順でメモリへの書き込み処理を行うことにより、前記メモリ制御部30により実現している処理と同等の処理が実現できる。
図14は、本実施形態における処理をソフトウェアによって実現する場合の処理手順を示すフローチャートである。
まず、CPU10内部で実行されるプログラムにおいて、メモリセルへの書き込み要求が発生すると(ステップS100)、前記要求の書き込み対象データを保存する(ステップS101)。前記書き込みデータの保存先としては、CPU10内部のレジスタやキャッシュ(図示なし)が望ましいが、外部にSRAMやDRAMが接続されている場合にはそれらを利用しても良い。
なお、前記ステップS100における書き込み要求時には、書き込み対象データの他、書き込み先アドレスも併せて与えられる。
次に、CPU10は、ステップS100の書き込み要求で指定された書き込み先アドレスに対し、既書き込みデータの読み出し処理を実行する(ステップS102)。そして、読み出された既書き込みデータ(データR)を受け取ったら(ステップS103)、ステップS101で保存しておいた書き込み対象データ(データW)を読み出して(ステップS104)、既書き込みデータとの比較を行う(ステップS105)。
そして、前記ステップS105における比較処理において、既書き込みデータと書き込み対象データが一致した場合には(ステップS105においてYes)、そのまま何もせずにステップS100において発生した書き込み要求に対応する書き込み処理を終了する。一方、前記比較結果が不一致の場合には(ステップS105においてNo)、書き込み対象データを書き込み先アドレスに書き込む処理を実行し(ステップS106)、ステップS100において発生した書き込み要求に対応する書き込み処理を終了する。
また、CPU10内部でメモリセルへの読み出し要求が発生した場合については、既存のCPUの読み出し処理と同じ手順で処理が行われる。
なお、以上の各実施形態では、メモリセルをRRAMで構成されるものとして説明を行ったが、RRAM以外の不揮発性記憶素子で構成されるものとしても構わない。