(57)【要約】本発明は、読取りよりも書込みに高いコストを要する少なくとも１つのメモリ・セルを有するメモリ用のコントローラを提供する。このメモリ・セルは、第１のアドレス情報に割り振られ、メモリ・データを格納するようにされている。本発明のメモリ・コントローラは、レジスタを備えている。前記レジスタおよび前記メモリに接続された書込みコントローラは、前記第１のアドレス情報およびそれに割り振られた書込みデータを含む書込み要求を受け取り、前記第１のアドレス情報が前記レジスタ内に格納されているかどうか確認するようにされている。ＹＥＳの場合、書込みコントローラは、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた、前記レジスタ内の以前の書込み要求の第２の書込みデータと比較する。ＮＯの場合、書込みコントローラは、前記第１の書込みデータを、第１のアドレス情報に割り振られた前記メモリ・データと比較する。書込みコントローラはさらに、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記レジスタに転送し、第１または第２の書込みデータがそれぞれ前記メモリ・データと異なる場合、前記レジスタから前記メモリへの前記第１または第２の書込みデータの書込み動作をそれぞれ開始する。本発明のメモリ・コントローラを使用すると、メモリへの連続的アクセスを提供しながら、書込み電力を節減することができる。
2006512657.tif 000002
【特許請求の範囲】
【請求項１】
読取りよりも書込みにより高いコストを要し、第１のアドレス情報を割り振られ、メモリ・データを格納するようにされた少なくとも１つのメモリ・セルを有するメモリ用のコントローラであって、
前記メモリに接続され、書込みデータ用および書込みデータに割り振られたアドレス情報用のレジスタ空間を有するレジスタと、
前記レジスタおよび前記メモリに接続され、
前記第１のアドレス情報と、前記第１のアドレス情報に割り振られた第１の書込みデータとを含む書込み要求を受け取り、
前記第１のアドレス情報が前記レジスタ内に格納されているかどうか確認し、
ＹＥＳの場合は、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた、前記レジスタ内の以前の書込み要求の第２の書込みデータと比較し、
ＮＯの場合は、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記メモリ・データと比較し、
前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記レジスタに転送し、
前記第１または第２の書込みデータがそれぞれ前記メモリ・データと異なる場合、それぞれ前記第１または第２の書込みデータの、前記レジスタから前記メモリへの書込み動作を開始するようにされた書込みコントローラと、を備えるメモリ・コントローラ。
【請求項２】
前記レジスタは、ＦＩＦＯレジスタである請求項１に記載のメモリ・コントローラ。
【請求項３】
前記レジスタおよび前記メモリに接続され、
前記第１のアドレス情報を含む読取り要求を受け取り、
前記第１のアドレス情報が前記レジスタ内に格納されているかどうか確認し、
前記第１のアドレス情報が前記レジスタ内に格納されているか否かに応じて、それぞれ前記読取り要求を前記レジスタまたは前記メモリに転送するようにされた読取りコントローラをさらに備える請求項１または２に記載のメモリ・コントローラ。
【請求項４】
前記書込みコントローラは、前記書込み要求を受け取り次第、前記読取りコントローラに、前記書込み要求に含まれる前記第１のアドレス情報を含む読取り要求を送るようになされている請求項３に記載のメモリ・コントローラ。
【請求項５】
前記書込みコントローラは、
前記比較結果を示すフラグを、前記第１の書込みデータに割り振り、
前記フラグを前記第１の書込みデータと、前記第１のアドレス情報とともに前記レジスタに転送し、
前記フラグが、前記第１の書込みデータと前記メモリ・データまたは前記第２の書込みデータとの間に差異があることをそれぞれ示す第１の書込みデータについてのみ、メモリへの書込み動作を開始するようにされている請求項１に記載のメモリ・コントローラ。
【請求項６】
前記書込みコントローラは、前記レジスタが満杯であるか空であるかを確認するようにされている請求項５に記載のメモリ・コントローラ。
【請求項７】
前記書込みコントローラは、前記レジスタが満杯であるとの評価後に、前記レジスタから前記メモリへの少なくとも１回の書込み動作を開始するようにされている請求項６に記載のメモリ・コントローラ。
【請求項８】
前記書込みコントローラは、前記レジスタが空でないとの評価後、未処理の書込み要求がない場合に、前記レジスタから前記メモリへの書込み動作を開始するようにされている請求項１に記載のメモリ・コントローラ。
【請求項９】
前記書込みコントローラは、前記第１の書込みデータと前記第２の書込みデータまたは前記メモリとの比較を、一時に少なくとも１ビットずつ実行するようにされている請求項１に記載のメモリ・コントローラ。
【請求項１０】
前記書込みコントローラは、バイト単位またはビット単位で前記比較を実行するようにされている請求項９に記載のメモリ・コントローラ。
【請求項１１】
前記書込みコントローラは、ビット単位で前記比較を実行するようにされている請求項９に記載のメモリ・コントローラ。
【請求項１２】
前記第１の書込みデータ用の第１の入力部と、前記メモリ・データまたは前記第２の書込みデータ用の第２の入力部と、をそれぞれ有しかつ前記書込みコントローラに接続された出力ポートを有するＸＯＲゲートを備えている請求項９に記載のメモリ・コントローラ。
【請求項１３】
前記書込みコントローラが、前記ＸＯＲゲートの前記出力部から少なくとも１つの論理「ＴＲＵＥ」信号を受信した後に、前記第１のアドレス情報および前記第１の書込みデータを前記レジスタに転送するようにされている請求項９に記載のメモリ・コントローラ。
【請求項１４】
少なくとも１つの不揮発性メモリ・セルを有するメモリと、請求項１記載のメモリ・コントローラとを備えるメモリ・デバイス。
【請求項１５】
前記メモリが、ＭＲＡＭおよびＦＥＲＡＭからなる群のうちのメモリ・セルを備えるメモリ・デバイス。
【請求項１６】
第１のアドレス情報を割り振られ、メモリ・データを格納するようにされた少なくとも１つの不揮発性メモリ・セルを有するメモリ用のコントローラであって、
前記メモリに接続され、書込みデータ用および書込みデータに割り振られたアドレス情報用のレジスタ空間を含むレジスタと、
前記レジスタおよび前記メモリに接続され、
前記第１のアドレス情報と、第１のアドレス情報に割り振られた第１の書込みデータとを含む書込み要求を受け取り、
前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記メモリ・データと比較し、
前記第１の書込みデータが前記メモリ・データと異なる場合に、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記レジスタに転送するようにされた書込みコントローラと、
を備えるメモリ・コントローラ。
【請求項１７】
少なくとも第１のメモリ・アドレスを一意に割り振られ、読取りよりも書込みに高いコストを要する、メモリ・データを格納するための少なくとも１つのメモリ・セルを含む不揮発性メモリに書込みキューを使用して書き込む方法であって、
前記第１のアドレス情報と、前記第１のアドレス情報に割り振られた第１の書込みデータとを含む書込み要求を受け取るステップと、
前記第１のアドレス情報が、前記書込みキューに格納されているかどうか確認するステップと、
ＹＥＳの場合に、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記書込みキュー中の第２の書込みデータと比較するステップと、
ＮＯの場合に、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記メモリ・データと比較するステップと、
前記第１の書込みデータが前記第２の書込みデータまたは前記メモリ・データと異なる場合に、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ、前記書込みキューに転送するステップと、
前記第１の書込みデータを、前記書込みキューから前記第１のアドレスに対応する前記メモリ・セルに書き込むステップと、
を含む方法。
【請求項１８】
様々な書込み要求の前記第１の書込みデータは、先入れ先出しルールに従って前記書込みキューから前記メモリに書き込まれる請求項１７に記載の方法。
【請求項１９】
前記第１のアドレス情報を含む読取り要求を受け取るステップと、
前記第１のアドレス情報が、前記レジスタ内に格納されているかどうか確認するステップと、
前記第１のアドレス情報が前記レジスタ内に格納されているか否かに応じて、それぞれ前記読取り要求を前記書込みキューまたは前記メモリに転送するステップと、
前記書込みキューまたは前記メモリから、それぞれ前記書込みキュー・データまたは前記第１のアドレス情報に割り振られた前記メモリ・データを受け取るステップと、
をさらに含む請求項１７に記載の方法。
【請求項２０】
前記書込み要求を受け取り次第、前記書込み要求に含まれる前記第１のアドレス情報を有する読取り要求を実行するステップを含む請求項１７に記載の方法。
【請求項２１】
前記書込みキューが満杯であるかどうか、および／または前記書込みキューが空であるかどうか確認するステップを含む請求項１７に記載の方法。
【請求項２２】
前記レジスタが満杯であるとの評価後に、前記書込みキューから前記メモリに書き込むステップを含む請求項２１に記載の方法。
【請求項２３】
前記書込みキューが空でないことを確認した後、未処理の書込み要求がない場合に、前記書込みキューから前記メモリに書き込むステップを含む請求項２１に記載の方法。
【請求項２４】
一時に少なくとも１ビットの前記第１の書込みデータと、少なくとも１ビットの前記第２の書込みデータまたは前記メモリ・データとを比較するステップを含む請求項１７に記載の方法。
【請求項２５】
前記比較ステップは、前記第１の書込みデータと前記メモリ・データまたは前記第２の書込みデータとの間で、それぞれＸＯＲ演算を実行するステップを含む請求項２４に記載の方法。
【請求項２６】
少なくとも第１のメモリ・アドレスを一意に割り振られ、読取りよりも書込みに高いコストを要し、メモリ・データを格納するための少なくとも１つのメモリ・セルを含む不揮発性メモリに書込みキューを使用して書き込む方法であって、
前記第１のアドレス情報と、前記第１のアドレス情報に割り振られた第１の書込みデータとを含む書込み要求を受け取るステップと、
前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記メモリ・データと比較するステップと、
第１の書込みデータが前記第２の書込みデータまたは前記メモリ・データと異なる場合に、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記書込みキューに転送するステップと、
前記書込みデータを、前記書込みキューから前記第１のアドレスに対応する前記メモリ・セルに書き込むステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読取りよりも書込みに高いコストを要する、少なくとも１つのメモリ・セルを有するメモリ用のコントローラに関する。本発明はさらに、そのようなメモリに書き込む方法に関する。
【背景技術】
【０００２】
磁気ランダム・アクセス・メモリ（ＭＲＡＭ）は、既存のＲＡＭ技術全体に勝る多くの利点を提供する。すなわち、ＭＲＡＭを使用すると、スタティックＲＡＭ（ＳＲＡＭ）の読み書き速度、ダイナミックＲＡＭ（ＤＲＡＭ）の密度、およびフラッシュ・メモリの不揮発性にまで達すると言われている。
【０００３】
他方、ＭＲＡＭの欠点の１つは、書込み動作の消費電力が読取り動作の消費電力よりも約１桁高いことである。
【０００４】
米国特許第６０５２３０３号明細書は、ＭＲＡＭの所与のアドレスに書き込まれる書込みデータ・ビットを、その所与のアドレスをもつセルに格納されたメモリ・データ・ビットと比較するようにされた比較ユニットを含む、ＭＲＡＭシステム用コントローラを開示している。このメモリ・セルへの書込み動作は、書込みデータ・ビットがメモリ・データ・ビットと異なる場合にしか実行されない。このシステムおよびその中で実施する方法では、必要なときしか、すなわち未処理の書込み要求を実行するためにセルの状態を変えなければならないときしか書込み電流を流さないという利点がある。このため、書込み動作のためのエネルギーの一部、普通ならセルをその中に現在格納されているメモリ・ビットと同一の書込みビットで上書きするために不要に使われるはずのエネルギーが節減される。
【０００５】
しかし、メモリ・データと書込みデータとの比較に必要な読取り動作ならびにそれらのデータの比較動作が、メモリへの書込みに関与する遅延を増大させることが、このコントローラおよびその中で実装されるＭＲＡＭに書き込む方法の欠点である。このため、読取り時、比較時、最終的には書込み時に、中央演算処理装置（ＣＰＵ）またはその他の任意のメモリ・クライアント用メモリへのアクセスが妨害される。したがって、この種のＭＲＡＭコントローラおよび書込み方法を用いると、データ処理システムの全体的な速度が低下する。
【０００６】
この問題は一般的なものである。この問題は、書込み動作コストが読取り動作コストよりも高い、周知のどんなタイプのメモリでも生じる。この問題は、たとえば強誘電体メモリ・セル（ＦＥＲＡＭ）をベースにした不揮発性メモリにも関係する。コストという用語は、エネルギー、時間、電力、電流密度、電圧など、書込みプロセスに関連する測定可能な量であることを理解されたい。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の一目的は、そのようなメモリ用のコントローラと、一方では書込み動作のコストを節減し、他方ではメモリへの高速アクセスを可能にする書込み方法とを提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によれば、読取りよりも書込みに高いコストを要し、第１のアドレス情報が割り振られ、メモリ・データを格納するようにされた少なくとも１つのメモリ・セルを有するメモリ用のコントローラが提供される。このメモリ・コントローラは、
前記メモリに接続され、書込みデータおよびそれに割り振られたアドレス情報用のレジスタ空間を有するレジスタと、
前記レジスタおよび前記メモリに接続されており、
前記第１のアドレス情報およびそれに割り振られた第１の書込みデータを含む書込み要求を受け取り、
前記第１のアドレス情報が前記レジスタ内に格納されているかどうか確認し、
ＹＥＳの場合は、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた、前記レジスタ内の第２の書込みデータと比較し、
ＮＯの場合は、前記第１の書込みデータを、第１のアドレス情報に割り振られた前記メモリ・データと比較し、
前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記レジスタに転送し、
第１または第２の書込みデータがそれぞれ前記メモリ・データと異なる場合、それぞれ前記第１または第２の書込みデータの、前記レジスタから前記メモリへの書込み動作を開始するようにされた書込みコントローラと、を備えている。
【０００９】
本発明のメモリ・コントローラは、このメモリに接続されたレジスタを備えている。レジスタという用語は、本発明に関しては、任意のタイプの高速アクセス一時記憶手段に対して使用される。様々なタイプのレジスタを用いた好ましい実施形態について以下に説明する。動作中、レジスタを使用して、ここでは第１の書込みデータとも呼ぶ書込みデータと、それに割り振られた、ここでは第１のアドレス情報とも呼ぶアドレス・データとを、一時的に格納することができる。メモリ・コントローラが、第１のアドレス・データおよび第１の書込みデータを含む書込み要求を処理するとすぐに、それに対応するレジスタ内の格納スペースが開放されて、別の書込み要求に使用できるようになる。
【００１０】
例えば、ＭＲＡＭといった実際のメモリとは対照的に、レジスタ内にはデータを一時的に格納するという性質上、レジスタ用には書込みコストが低い周知の半導体メモリ技術の使用が可能になる。
【００１１】
レジスタを使用すると、メモリ・コントローラにより、要求された書込み動作を、他のメモリ・クライアントがメモリへのアクセスを要求しない時間内のある時点まで延期することが可能になる。書込み要求、すなわち第１の書込みデータおよびそれに割り振られた第１のアドレス情報を、レジスタ内に一時的に格納することができる。これにより、１つまたは複数の書込み要求が未処理のときでも、メモリが他のメモリ・クライアントのために利用可能となる。このように、メモリへの全体的なアクセス速度は、レジスタを用いない解決法、したがってメモリがメモリ・コントローラによって書込み要求を処理しているときにアクセス不可能となる解決法に比べて増加する。
【００１２】
レジスタをコントローラと一体化させて、１つの集積回路（ＩＣ）にすることができる。レジスタはまた、書込み動作中にデータが移動する距離が長くなるのを回避するためにメモリの近傍に実装することもできる。したがって、コントローラおよびレジスタをメモリと一体化させて１つのメモリ・デバイスにすることにより、メモリへの読み書きアクセス速度を最も向上させる、本発明の一実施形態がもたらされる。
【００１３】
本発明のメモリ・コントローラでは、書込みコントローラがレジスタおよびメモリに接続されている。動作中、この書込みコントローラは、通常、処理すべき書込み要求のメモリ・セルの各アドレスに割り振られた第１の書込みデータ・ビットと異なる格納済みメモリ・データ・ビットを有するメモリ・セルに対してのみ、メモリ・コントローラに書込み動作を実行させる役割をする。このため、書込みコントローラは、第１の書込みデータを第１のアドレス情報に割り振られた前記メモリ・データと比較し、第１の書込みデータが第２の書込みデータまたは前記メモリ・データと異なる場合に、それぞれ前記第１のアドレス情報および前記第１の書込みデータをレジスタに転送するようにされている。
【００１４】
さらに、本発明のメモリ・コントローラの書込みコントローラは、レジスタへの入力動作およびレジスタからの出力動作を管理するようにされている。それにより、レジスタをクライアントにとって「可視(visible)」にすることなく、全てのメモリ・クライアントに対してメモリへの書込みアクセスを提供する。
【００１５】
本発明によれば、書込みコントローラは、ある書込み要求がそれに対して未処理の書込み要求が既にレジスタ内に存在するメモリ・アドレスを対象にしているかどうか、書込み動作前に確認するようにされている。こうした以前の書込み要求の書込みデータを、ここでは第２の書込みデータと呼び、またそれに対応するアドレス情報を第２のアドレス情報と呼ぶ。レジスタ内に第１のアドレス情報と同じ第２のアドレス情報がないという第１のケースでは、第１の書込みデータと第１のアドレス情報に割り振られたメモリ・データとの間で比較が行われる。同じメモリ・アドレスに対する以前の書込み要求が存在する第２のケースでは、メモリにアクセスする必要はない。この比較は、むしろ第１の書込みデータと第２の書込みデータとの間で行われる。好都合な時点でのレジスタからメモリへの書込み動作を待って、レジスタ内にある（以前の）第２の書込みデータとは異なる第１の書込みデータだけをメモリに書き込む必要がある。第１の書込みデータは、それに関係する第１のアドレス情報とともに常にレジスタ内に格納される。
【００１６】
本発明のメモリ・コントローラでは、第１のアドレス情報および第１の書込みデータは、それらが後に実際にメモリに書き込まれるかどうかに関係なくレジスタに転送される。しかし、書込みコントローラは、第１の書込みデータが第１のアドレス情報に対応するアドレスにおけるメモリ・データと異なる場合にのみ、レジスタからメモリへの第１の書込みデータの書込み動作を開始するようにされている。
【００１７】
したがって、このようにレジスタの適切な管理を提供することにより、本発明のメモリ・コントローラは、ほとんどの場合にメモリへの短いアクセス時間を可能にする。
【００１８】
レジスタの適切な記憶容量を提供するのは、実際のシステム設計上の問題である。記憶容量が増大するほど、より多くの要求を先送りにすることができる。しかし、遅延される書込み要求が多いと、レジスタの揮発性に起因するシステム破壊のデータ損失リスクを負うことになる。
【００１９】
このメモリ・コントローラは、原理上、１セル構造をはじめとするどんなサイズのメモリにも使用することができる。このメモリ・コントローラは、より大きなメモリ構造、特により大きなＭＲＡＭ構造に対して最も多くの利点がある。
【００２０】
好ましい一実施形態では、レジスタがＦＩＦＯレジスタである。ＦＩＦＯレジスタでは、現在の書込み要求は、まだ書込み動作を待つ以前の書込み要求キューの末端に付加される。これらの要求は、先入れ先出しの順に処理される。ただし、「入」はレジスタへの入力を意味し、「出」はレジスタからメモリへの書込み動作を意味する。
【００２１】
本発明のさらなる好ましい実施形態は、レジスタおよびメモリに接続された読取りコントローラを備えている。この読取りコントローラは、
第１のアドレス情報を含む読取り要求を受け取り、
第１のアドレス情報がレジスタ内に格納されているかどうか確認し、
第１のアドレス情報がレジスタ内に格納されているか否かに応じて、それぞれこの読取り要求をレジスタまたはメモリに転送するようにされている。この実施形態のメモリ・マネージャは、レジスタの利点を提供し、メモリからの読取り動作も提供する。それにより、読取り要求があり次第、読取り要求中で与えられたアドレス情報に常に割り振られる最新データが、読取り要求を出したクライアントに確実に返送されるようになる。説明を簡単にするために、このアドレス情報を第１のアドレス情報とも呼ぶ。しかし、書込み要求が、読取り要求と異なるメモリ内のアドレスを対象とし得ることは明らかである。
【００２２】
この実施形態では、書込みコントローラは、前記書込み要求を受け取り次第、前記読取りコントローラに読取り要求を送るようにされていることが好ましい。前記読取り要求は、前記書込み要求に含まれる前記第１のアドレス情報を含んでいる。このようにして、書込みコントローラは、新規書込み要求が、既にレジスタ内にあるメモリ・アドレスに対するものか否かを評価するために、読取りコントローラを有効に利用する。読取りコントローラは、対応するメモリ・データまたはレジスタ内にある対応する第２のデータを見つけ出し、適宜返送する。
【００２３】
本発明のメモリ・コントローラのさらなる好ましい実施形態では、書込みコントローラはさらに、
比較結果を示すフラグを、前記第１の書込みデータに割り振り、
このフラグを前記第１の書込みデータおよび前記第１のアドレス情報とともにレジスタに転送し、
このフラグが、それに対して前記第１の書込みデータと前記メモリ・データまたは前記第２の書込みデータとの間に差異があることをそれぞれ示す第１の書込みデータについてのみ、メモリへの書込み動作を開始するようにされている。この実施形態では、第１構成要素を第１のアドレス情報とし、第２構成要素を第１の書込みデータとし、第３構成要素を第１の書込みデータに割り振られたフラグとする、３つの構成要素を含むデータ構造がレジスタに書き込まれる。このフラグは、第１の書込みデータがメモリに書き込まれるべきか否かを示す。一例として、比較の結果、第１の書込みデータがメモリ・データまたは第２の書込みデータと異なっていることをそれぞれ示す第１のケースでは、フラグを「１」とし、それが異なっていない第２のケースではフラグを「０」とする。キュー型レジスタでは、第１の書込みデータがレジスタ内で最古のデータであるとき、書込みコントローラはフラグをチェックし、フラグが「１」の状態にある場合のみメモリへの書込み動作を実行する。いずれにしても、第１の書込みデータは、レジスタ内でその次に古い書込み要求データで置き換えられることになる。
【００２４】
したがって、この実施形態は、書込みコントローラの主要な機能の１つ、条件付き書込み動作の単純で効果的な実装を提供する。
【００２５】
本発明のさらなる好ましい実施形態では、書込みコントローラは、前記レジスタが満杯であるか空であるかを確認するようにされている。この実施形態により、書込みコントローラは、その性能を現在の要求レートに適合させることができる。レジスタが満杯であることを確認した後、１つの選択肢は、従来のメモリ動作に戻ることである。このことは、レジスタ内で未処理の全ての第１の書込み要求が処理されることを意味する。メモリ・クライアントからの要求は、こうした書込み動作中には処理されない。全ての書込み動作を終了して初めて、新規要求が受け入れられる。しかし、より効果的なメモリ管理法は、レジスタが満杯であることを確認後に、より少しのレジスタからメモリへの書込み動作を開始することである。これにより、以前の時点でのメモリ・クライアントからの新規要求が可能となる。最も好ましくは、レジスタが満杯であることを評価した後、要求があるかどうかおよびレジスタが満杯であるかどうか再び確認する前に、１回だけ書込み動作を実行する。このようにして、入ってくる要求をいつでもレジスタに受け入れることができる。レジスタ内のその他の未処理の書込み要求は、新規書込み要求のレートが低下したときに処理することができる。この場合もやはり、要求されればいつでもメモリ・クライアントへのメモリ・アクセスが可能となるように、所与のアプリケーション環境に対して、レジスタが満杯になるのを極力回避できるように適切なレジスタ容量を提供することによって行う。
【００２６】
この実施形態では、書込みコントローラは、レジスタが空でないと評価後、および未処理の書込み要求がない場合に、レジスタからメモリへの書込み動作を開始するようになされることが好ましい。この実施形態は、レジスタが空でなく新規要求がメモリ・コントローラの入力ポートを通って入ってこない限り、自動的に未処理の書込み要求を実行する。
【００２７】
本発明の他の好ましい実施形態では、書込みコントローラは、前記第１の書込みデータと前記第２の書込みデータまたは前記メモリとの比較を、一時に少なくとも１ビットずつ実行するようにされている。
【００２８】
例えば、この比較は、バイト単位で実行することができる。この例では、メモリ・アドレス指定に、より小さいレジスタ容量しか必要でない。というのは、１バイト分が、単一のアドレスによって、あるいはメモリ・ブロックの最初と最終のセルを示す第１と第２のアドレスによって、まとめてアドレス指定できる１つのメモリ・セル・ブロックに書き込まれるからである。一方、書込み動作のためのエネルギーはあまり節減されない。というのは、一般に、書込みデータ・バイトとメモリ・データが互いに少なくとも１ビット異なる確率は、５０％よりずっと高いからである。１ビットだけでも異なっていれば、たとえ７ビットが変わらなくても、メモリ内のバイト全体を上書きしなければならない。
【００２９】
好ましくは、この比較はビット単位で実行される。この実施形態は、最良の書込み電力節減結果をもたらす。なぜなら、上書きが必要かどうか、ビットごとに、すなわちメモリ・セルごとにチェックされるからである。一方、アドレス指定には、より大きなレジスタ空間が必要である。レジスタ内のメモリ空間は安価であるので、こうした欠点は、書込み電力を節減できるという利点と比べると重要ではない。
【００３０】
さらなる好ましい実施形態では、ＸＯＲ（排他的論理和）ゲートが、前記第１の書込みデータ用の第１の入力部と、前記メモリ・データまたは前記第２の書込みデータ用の第２の入力部と、をそれぞれ備え、かつ書込みコントローラに接続された出力ポートを備える。このＸＯＲゲートは、入力ビットが互いに異なる場合に「１」すなわち論理「ＴＲＵＥ」を出力し、入力ビットが同じ場合に「０」すなわち論理「ＦＡＬＳＥ」を出力する。ＸＯＲゲートを使用して、前述のフラグをセットすることができる。
【００３１】
この実施形態では、書込みコントローラは、ＸＯＲゲートの出力部から少なくとも１つの論理「ＴＲＵＥ」信号を受信した後、前記第１のアドレス情報および前記第１の書込みデータを前記レジスタに転送するようにされていることが好ましい。
【００３２】
本発明のメモリ・コントローラをメモリと一体化させて、１つのメモリ・デバイスを形成することができる。
【００３３】
本発明の第２の態様によれば、読取りよりも書込みに高いコストを要する、少なくとも１つのメモリ・セルを有するメモリ用のコントローラが提供される。前記メモリ・セルは、第１のアドレス情報が割り振られており、メモリ・データを格納するようにされている。このコントローラは、
前記メモリに接続され、書込みデータおよびそれに割り振られたアドレス情報用のレジスタ空間を含むレジスタと、
前記レジスタおよび前記メモリに接続されており、
前記第１のアドレス情報およびそれに割り振られた第１の書込みデータを含む書込み要求を受け取り、
前記第１の書込みデータを、第１のアドレス情報に割り振られた前記メモリ・データと比較し、
第１の書込みデータが前記メモリ・データと異なる場合に、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記レジスタに転送するようになされた書込みコントローラと、を備えている。
【００３４】
本発明のこの態様のメモリ・コントローラは、前述のメモリ・コントローラの特徴および利点のほとんどを有している。このコントローラには、新規書込み要求がレジスタに付加される前に第１のアドレス情報を含む未処理の要求があるかどうかレジスタをチェックする機能がないだけである。要求がレジスタ内に入力される前に、メモリ・データだけが書込みデータと比較される。
【００３５】
このメモリ・コントローラには、上述のメモリ・コントローラよりも単純であり、したがって、より高速であるという利点がある。この利点のコストは、レジスタ内の同じメモリ・アドレスに対する第１および第２の書込み要求が、１つのメモリ・セルまたは一群のメモリ・セルに対して同じ書込みデータを含むことである。このことは、これらのメモリ・セルが、まず第１の書込み要求に対する書込み動作が実行されたときに上書きされ、次いで第２の書込み要求を処理するときに同じデータで再び上書きされることを意味する。しかし、これらの事象数は、一般にそれほど多くはない。
【００３６】
本発明のこの態様によるメモリ・コントローラは、前述の実施形態による追加の特徴を備えてもよい。
【００３７】
本発明の第３の態様によれば、メモリに書き込む方法が提供される。このメモリは、メモリ・データを格納するための少なくとも１つのメモリ・セルを含む。このメモリ・セルは、少なくとも第１のメモリ・アドレスに一意に割り振られ、読取りよりも書込みに高いコストを要する。この方法では書込みキューを使用する。この方法は、
第１のアドレス情報およびそれに割り振られた第１の書込みデータを含む書込み要求を受け取るステップと、
前記第１のアドレス情報が、前記書込みキューに格納されているかどうか確認するステップと、
ＹＥＳの場合は、前記第１の書込みデータを、前記第１のアドレス情報に割り振られた前記書込みキュー中の第２の書込みデータと比較するステップと、
ＮＯの場合は、前記第１の書込みデータを、第１のアドレス情報に割り振られた前記メモリ・データと比較するステップと、
第１の書込みデータが第２の書込みデータまたは前記メモリ・データと異なる場合、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ、前記書込みキューに転送するステップと、
前記第１の書込みデータを、前記書込みキューから前記第１のアドレスに対応する前記メモリ・セルに書き込むステップと、を含む。
【００３８】
この方法は、本発明の第１の態様によるメモリ・コントローラに関する。この方法では、書込みキューを使用する。この書込みキューは、上述のようにレジスタによって実施することができる。原理的には、必ずしもＦＩＦＯキューを使用する必要はない。本発明のこの方法の利点については、本発明のメモリ・コントローラ構造に関して先に述べた。その好ましい実施形態についても先に説明した。好ましい実施形態のその他の特徴は、以下の通りである。
【００３９】
好ましい一実施形態によれば、様々な書込み要求の第１の書込みデータが、先入れ先出しルールに従って前記書込みキューから前記メモリに書き込まれる。
【００４０】
他の好ましい実施形態によれば、この方法はさらに、
前記第１のアドレス情報を含む読取り要求を受け取るステップと、
前記第１のアドレス情報が、前記レジスタ内に格納されているかどうか確認するステップと、
前記第１のアドレス情報が前記レジスタ内に格納されているか否かに応じて、それぞれ前記読取り要求を前記書込みキューまたは前記メモリに転送するステップと、
前記書込みキューまたは前記メモリから、それぞれ前記書込みキュー・データまたは前記第１のアドレス情報に割り振られた前記メモリ・データを受け取るステップと、を含む。
【００４１】
他の好ましい実施形態によれば、この方法は、前記書込み要求を受け取り次第、読取り要求を実行するステップを含み、前記読取り要求が、前記書込み要求に含まれる前記第１のアドレス情報を有している。
【００４２】
他の好ましい実施形態によれば、この方法は、前記書込みキューが満杯であるかどうか、かつ／または前記書込みキューが空であるかどうか確認するステップを含む。この実施形態は、好ましくは、レジスタが満杯であると評価後に、書込みキューからメモリに書き込むステップを含む。好ましくはさらに、書込みキューが空でないことを確認した後、未処理の書込み要求がない場合に、書込みキューからメモリに書き込むステップが提供される。
【００４３】
他の実施形態は、前記第１の書込みデータと、少なくとも１ビットの前記第２の書込みデータまたは前記メモリ・データを一時に少なくとも１ビットずつ比較するステップを含む。
【００４４】
この比較ステップは、好ましくは、前記第１の書込みデータと前記メモリ・データまたは前記第２の書込みデータとの間で、それぞれＸＯＲ演算を実行するステップを含む。
【００４５】
本発明の第４の態様によれば、書込みキューを使用してメモリに書き込むさらなる方法が提供される。このメモリは、読取りよりも書込みに高いコストを要する、メモリ・データを格納するための少なくとも１つのメモリ・セルを含んでおり、前記メモリ・セルは、少なくとも第１のメモリ・アドレスを一意に割り振られる。この方法は、
第１のアドレス情報およびそれに割り振られた第１の書込みデータを含む書込み要求を受け取るステップと、
前記第１の書込みデータを、第１のアドレス情報に割り振られた前記メモリ・データと比較するステップと、
第１の書込みデータが第２の書込みデータまたは前記メモリ・データと異なる場合に、前記第１のアドレス情報および前記第１の書込みデータをそれぞれ前記書込みキューに転送するステップと、
前記書込みデータを、前記書込みキューから前記第１のアドレスに対応する前記メモリ・セルに書き込むステップと、を含む。
【００４６】
この方法は、本発明の第２の態様によるメモリ・コントローラに関する。この方法の様々な実施形態は、本発明の第３の実施形態による方法に関して説明した実施形態の追加の特徴を有する。
【００４７】
以下に、添付の図を参照して、好ましい実施形態に基づき本発明をより詳細に説明する。
【発明を実施するための最良の形態】
【００４８】
図１は、本発明のメモリ・デバイス１０の第１の実施形態の簡略構成図を示す。メモリ・デバイス１０は、ＭＲＡＭ  １２を備えている。ＭＲＡＭ  １２は、多数のメモリ・セルを有する不揮発性磁気メモリである。通常、これらのメモリ・セルはマトリックス状に配列されている。ＭＲＡＭブロック１２内の各メモリ・セルは、当技術分野で周知のように、行アドレスと列アドレスとの組合せによって一意にアドレス指定することができる。
【００４９】
メモリ・デバイス１０はさらに、ＭＲＡＭ  １２に接続されたコントローラ１４を備えている。コントローラ１４は、メモリ・デバイス１０の外部クライアントとの通信に際して、ＭＲＡＭ  １２からの読取り動作およびＭＲＡＭ  １２への書込み動作を管理する。これについては、コントローラ１４に向けて指す矢印とコントローラ１４から離れる向きの矢印とによって、またこれらの矢印がメモリ・デバイス１０の破線と交差することによって示されている。コントローラ１４はまた、先入れ先出し（ＦＩＦＯ）レジスタ１６にも接続されている。
【００５０】
メモリ・デバイス１０の動作について、図２の状況で以下に説明する。
【００５１】
図２は、第２の実施形態として、ＭＲＡＭ  ２２およびコントローラ２４を備えるメモリ・デバイス２０を示す。示した構成図は、このデバイスの論理構造を表している。このデバイスの物理的実装は、ここで示した構造と異なっていてもよい。このコントローラは、メモリ・データ用のメモリ入力ポート２６と、ＭＲＡＭ  ２２に書き込まれる書込みデータ用のメモリ出力ポート２８と、ＣＰＵなどのメモリ・クライアントからのアドレス・データおよび書込みデータ用のクライアント入力ポート３０と、メモリ・データをメモリ・クライアントに送るためのクライアント出力ポート３２とを備えている。
【００５２】
図２の実施形態のメモリ・コントローラ２４は、クライアント入力ポート３０に接続して一体化させたＦＩＦＯレジスタ３４を備えている。ＦＩＦＯコントローラ３６もＦＩＦＯレジスタ３４に接続されている。さらに、コマンド・デコーダ３８が、クライアント入力ポート３０、書込みコントローラ４０、および読取りコントローラ４２に接続されている。メモリ入力ポート２６と書込みコントローラ４０との間にＸＯＲゲート４４が相互接続されている。
【００５３】
次に、図３の流れ図を参照して、メモリ・コントローラ２４の動作について説明する。しかし、図３に示す流れ図が必ずしも図２のコントローラ構造で使用されるものではないことを留意されたい。適切などんなデバイスでも、図３に示した方法を実行することができる。例えば、この流れをソフトウェアとして実装することもできる。
【００５４】
メモリ・クライアントからの着信要求は、クライアント入力部３０からコマンド・デコーダ３８に転送される。コマンド・デコーダはこの要求を分析する。この分析は、図３のステップＳ１２およびＳ１４に従って行うことができる。ステップＳ１２では、この要求が読取りコマンドを含んでいるかどうかチェックする。そうでない場合、コマンド・デコーダは、ステップＳ１４でそのコマンドが書込みコマンドであるかどうか確認する。
【００５５】
ステップＳ１２およびＳ１４の要求分析ルーチンは、クライアント入力ポート３０を準連続的に監視するためにも使用されることに留意されたい。したがって、ステップＳ１４の後には、読取り要求も書込み要求も存在しないことが分かる。この場合、書込みコントローラ４０は、ＦＩＦＯレジスタ３４内の書込みキューが空かどうかチェックする。そうである場合、図３の方法で、ステップＳ１２に戻ってクライアント入力ポートを監視する。
【００５６】
着信読取り要求の場合、コマンド・デコーダ３８は、この要求を読取りコントローラ４２に転送する。読取りコントローラ４２は、要求に含まれているアドレス情報を抜き出し、それをＦＩＦＯコントローラ３６に転送する。ＦＩＦＯコントローラ３６は、ＦＩＦＯレジスタ内の書込み要求によって構成されたアドレス・リストを保持する。このアドレスがそのリストに含まれている場合は、ＦＩＦＯコントローラ４４がＦＩＦＯ  ３４をトリガして、対応する書込みデータをクライアント出力ポート３２に送る。ＦＩＦＯコントローラ３６は、読取り要求を処理したことを読取りコントローラ４２に戻す。このアドレスがそのリストに含まれていない場合は、ＦＩＦＯコントローラは、この結果を読取りコントローラ４２に返送し、読取りコントローラ４２は、ＭＲＡＭ  ２２内の所与のアドレスからの読取り動作をトリガする。ＭＲＡＭは、要求されたデータをメモリ入力ポート２６に返送する。このデータは、そこからクライアント出力ポート３２に転送され、要求しているクライアントに送られる。
【００５７】
着信書込み要求の場合、書込みコントローラ４２は、最初にＦＩＦＯレジスタが満杯であるかどうか確認する。そうである場合、ＦＩＦＯレジスタ３４のキュー中の最も古い書込み要求が処理される。
【００５８】
この実施形態では、書込み要求は、図３の流れから部分的にそれて、以下の方法で処理する。書込みコントローラ４０が、読取り要求を読取りコントローラ４２に送る。読取りコントローラ４２は、ステップＳ１８〜Ｓ２２を実行し、キュー３４からまたはメモリ２２からデータを返送する。図２の流れは簡略化した変形形態を示しており、この変形形態では、データはステップＳ３０でアドレス指定されたメモリ・セクタから直接読み出される。
【００５９】
これらのデータは、メモリ入力ポート２６またはＦＩＦＯ  ３４からＸＯＲゲート４４に転送される。ＸＯＲゲート４４は、ステップＳ３２で、書込みデータおよびメモリ・データまたはレジスタ・データで、それぞれ論理「ＥＸＣＬＵＳＩＶＥ−ＯＲ」演算を実行する。すなわち、ＸＯＲゲート４４は、本明細書において「ｍａｓｋ（マスク）」と呼ぶ信号を書込みコントローラ４０に返送する。この信号は、ＸＯＲゲート４４の入力部におけるデータが互いに異なる場合、「ＴＲＵＥ」信号（「１」）となる。ＸＯＲゲート４４は、それらのデータが同一の場合、「ＦＡＬＳＥ」信号を返す。
【００６０】
書込みコントローラ４０は、ＸＯＲゲート４４からの信号を書込み要求に添付し、この書込み要求をＦＩＦＯレジスタ３４に転送する。このデータは、マスクが「１」である場合にしか書き込まれない。
【００６１】
書込みコントローラ４４が、ステップＳ２４でＦＩＦＯレジスタ３４内のキューが満杯でないのに気付いた場合、ステップＳ３０にジャンプし、上述の部分的にそれた読取りルーチンを実行する。
【００６２】
以下に、本発明によるＭＲＡＭコントローラの動作を記述するアルゴリズムを示す。このアルゴリズムは、ＣまたはＣ＋＋に類似の擬似コードで与えられる。記号「！＝」がこのコードでは「等しくない」を意味することを留意されたい。下記コード・ラインを説明するコメントは、「／＊」および「＊／」によってコードから分離されている。以下の記述を明瞭に参照できるように、下記アルゴリズムの５行ごとに、ページ行とは無関係に番号を付してある。
【００６３】
このアルゴリズムは、３つの部分に分割することができる。すなわち、１行目から９行目の間で、読取り制御機能が定義される。１０行目から２４行目の間で、書込み制御アルゴリズムが定義される。２５行目から３７行目の間で、要求がないときの制御機能が定義される。書込み制御は、さらに分割することができる。すなわち、１１行目から１９行目までで、書込みキューが満杯の場合の書込み制御機能が定義される。１９行目から２４行目までで、書込みキューが満杯でない別の場合の書込み制御機能が定義される。
【００６４】
下記アルゴリズム中の最も重要なコマンドが、「ｑｕｅｕｅ．ｅｎｑｕｅｕｅ」および「ｍｒａｍ．ｗｒｉｔｅ」である。最初のコマンドは、たとえば図１または２のＦＩＦＯレジスタである、書込みアドレス情報（「ｒｅｑ．ａｄｄｒ」）および書込みデータ（「ｒｅｑ．ｄａｔａ」）からなるデータ・フィールドへの書込みをトリガする。１９行目に、このコマンドは書込み要求の全ビットを含んでいる。２６行目に、このコマンドはＸＯＲ演算の結果を示す「ｍａｓｋ」ビットを含んでいる。
【００６５】
コマンド「ｍｒａｍ．ｗｒｉｔｅ」は、ｍａｓｋビットが「１」の場合、そのコマンドに含まれるデータを、そのコマンドに含まれるＭＲＡＭアドレスに書き込む。
【表１】
2006512657.tif 000003
【図面の簡単な説明】
【００６６】
【図１】第１の好ましい実施形態による、メモリ・コントローラを備えるＭＲＡＭメモリの構成図である。
【図２】第２の好ましい実施形態による、メモリ・コントローラを備えるＭＲＡＭメモリの詳細構成図である。
【図３】ＭＲＡＭメモリに書き込む方法の流れ図である。
【図１】
2006512657.tif 000004
【図２】
2006512657.tif 000005
【図３】
2006512657.tif 000006
【国際調査報告】
2006512657.tif 000007
2006512657.tif 000008
2006512657.tif 000009