(57)【要約】【課題】メモリアクセス機能を付加する能力を備えたメモリデバイスを提供する。【解決手段】メモリデバイスは、コントローラを有する。コントローラは、ＲＡＭアドレス信号を受信する第１のアドレスバスと、ＲＡＭデータ信号を受信する第１のデータバスと、ＲＡＭ制御信号を受信する第１のコントロールバスとを有する。コントローラは更に、揮発性ＲＡＭメモリとインターフェースをとる第２のアドレスバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のデータバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のコントロールバスとを有する。コントローラは更に、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のアドレス／データバスと、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のコントロールバスとを有する。メモリデバイスは更に、上記第２のアドレスバスと、上記第２のデータバスと、上記第２のコントロールバスとに接続されたＲＡＭメモリを有する。【選択図】図１
2007183962.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、
揮発性ＲＡＭメモリデバイスとインターフェースをとる第２のバスと、
ＮＡＮＤメモリデバイスとインターフェースをとる第３のバスと、
前記メモリコントローラの動作を開始するため前記コントローラ用のブート可能コードを格納するための不揮発性メモリと、
前記第１のバスから第１のアドレスを受信し、前記第１のアドレスを前記ＮＡＮＤメモリデバイス用の第２のアドレスにマップし、前記ＮＡＮＤメモリデバイス内の前記第２のアドレスへのデータ又は該アドレスからのデータ用のキャッシュとして前記揮発性ＲＡＭメモリデバイスを操作する手段と、
前記ＮＡＮＤメモリデバイスの前記第２のアドレスに格納されたデータとキャッシュとして機能する前記揮発性ＲＡＭメモリ内に格納されたデータとの間のデータの一貫性を維持する手段と、
を含むメモリコントローラ。
【請求項２】
前記第２のバスに接続されたＲＡＭを更に含む請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のバスからＮＯＲプロトコルコマンドを受信し、前記ＮＡＮＤメモリデバイス上で前記ＮＯＲコマンドを操作する手段を更に含む請求項１に記載のメモリコントローラ。
【請求項４】
メモリコントローラであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、
揮発性ＲＡＭメモリデバイスとインターフェースをとる第２のバスと、
ＮＡＮＤメモリデバイスとインターフェースをとる第３のバスと、
前記メモリコントローラの動作を開始するため前記コントローラ用のブート可能コードを格納するためのＮＯＲメモリと、
前記第１のバスからＮＯＲプロトコルコマンドを受信し、前記ＮＯＲメモリを操作し、前記揮発性ＲＡＭメモリデバイスを操作してＮＯＲメモリの動作をエミュレートする手段と、
前記ＮＡＮＤメモリデバイスをＡＴＡストレージとして操作する手段と、
を含むメモリコントローラ。
【請求項５】
前記第１のバスからアドレスをＮＯＲ動作と、ＲＡＭ動作と、ＮＡＮＤ動作とに分けるために、ホストデバイスからの構成可能パラメータを格納するレジスタを更に含む請求項４に記載のメモリコントローラ。
【請求項６】
前記第２のバスに接続された揮発性ＲＡＭメモリデバイスを更に含む請求項４に記載のメモリコントローラ。
【請求項７】
前記揮発性ＲＡＭメモリデバイスを操作してＮＯＲメモリの動作をエミュレートする前記手段が、
前記第１のバスから第１のアドレスを受信し、前記第１のアドレスを前記ＮＡＮＤメモリデバイス用の第２のアドレスにマップし、前記ＮＡＮＤメモリデバイス内の前記第２のアドレスへのデータ又は該アドレスからのデータ用のキャッシュとして前記揮発性ＲＡＭメモリを操作する手段と、
前記ＮＡＮＤメモリデバイスの前記第２のアドレスに格納されたデータとキャッシュとして機能する前記揮発性ＲＡＭメモリ内に格納されたデータとの間のデータの一貫性を維持する手段と、
を更に含む請求項４に記載のメモリコントローラ。
【請求項８】
メモリコントローラであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、
揮発性ＲＡＭメモリデバイスとインターフェースをとる第２のバスと、
ＮＡＮＤメモリデバイスとインターフェースをとる第３のバスと、
前記ＲＡＭメモリデバイスによる動作と、前記ＮＡＮＤメモリデバイスによる動作とに前記第１のバスからアドレスを分けるため、ホストデバイスからの構成可能パラメータを格納するレジスタと、
を含むメモリコントローラ。
【請求項９】
メモリコントローラであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、
揮発性ＲＡＭメモリデバイスとインターフェースをとる第２のバスと、
ＮＯＲ不揮発性メモリデバイスであって、前記コントローラを操作するように構成されたプログラムコードを格納し、これにより前記コントローラによって受信される前記第１のバス上の第１のアドレスがＮＯＲプロトコルコマンドに応答して前記ＮＯＲメモリを操作するように機能し、前記コントローラによって受信される前記第１のバス上の第２のアドレスがＲＡＭメモリプロトコルに応答して前記ＲＡＭメモリを操作するように機能し、前記コントローラによって受信される前記第１のバス上の第３のアドレスがＮＯＲプロトコルコマンドをエミュレートする前記ＲＡＭメモリを操作するように機能するＮＯＲ不揮発性メモリデバイスと、
を含むメモリコントローラ。
【請求項１０】
メモリコントローラであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、
揮発性ＲＡＭメモリデバイスとインターフェースをとる第２のバスと、
ＮＯＲ不揮発性メモリデバイスと、
前記第１のバスからアドレスを、ＮＯＲメモリデバイスとして前記ＮＯＲメモリデバイスによる動作と、ＲＡＭメモリデバイスとして前記ＲＡＭメモリデバイスによる動作と、ＮＯＲメモリデバイスの動作をエミュレートする前記ＲＡＭメモリデバイスによる動作とに分けるために、ホストデバイスからの構成可能パラメータを格納するレジスタと、
を含むメモリコントローラ。
【請求項１１】
ＮＯＲメモリであって、
ＮＯＲプロトコルコマンド信号を受信する第１のバスを有するメモリコントローラの第１の集積回路ダイと、
ＮＡＮＤメモリプロトコルでＮＡＮＤメモリデバイスと通信する第２のバスを更に有する前記メモリコントローラと、
前記メモリコントローラの動作を開始し、前記第１のバスからＮＯＲプロトコルコマンド受信して、これに応答して前記第２のバス上にＮＡＮＤプロトコルコマンドを送出しＮＯＲメモリデバイスの動作をエミュレートするためのプログラムコードを格納するＮＯＲメモリを更に有する前記メモリコントローラと、
前記第１の集積回路のデバイスの前記第２のバスに接続されたＮＡＮＤメモリデバイスの第２の集積回路ダイと、
を含み、
前記第１及び第２の集積回路のデバイスが、共に同じパッケージ内にパッケージされていることを特徴とするＮＯＲメモリ。
【請求項１２】
ＲＡＭメモリプロトコルでＲＡＭメモリデバイスと通信する第３のバスを更に有する前記第１の集積回路ダイを更に含む請求項１１に記載のＮＯＲメモリ。
【請求項１３】
前記第３のバスに接続されたＲＡＭメモリを更に含む請求項１２に記載のＮＯＲメモリ。
【請求項１４】
前記ＲＡＭメモリが、別個の集積回路ダイであり、前記第１及び第２の集積回路ダイと同じパッケージ内にパッケージされていることを特徴とする請求項１３に記載のＮＯＲメモリ。
【請求項１５】
前記ＲＡＭメモリが、前記メモリコントローラと共に前記第１の集積回路ダイと一体化されていることを特徴とする請求項１３に記載のＮＯＲメモリ。
【請求項１６】
前記ＲＡＭメモリが、前記ＮＯＲプロトコルコマンドをエミュレートするように動作する前記ＮＡＮＤメモリデバイス用のキャッシュとして機能することを特徴とする請求項１３に記載のＮＯＲメモリ。
【請求項１７】
前記第１のバスからアドレスをＮＯＲ動作と、前記ＮＡＮＤメモリを使用するＮＯＲエミュレーション動作とに分けるためのパラメータを格納するレジスタを更に有する前記メモリコントローラの第１の集積回路ダイを更に含む請求項１３に記載のＮＯＲメモリ。
【請求項１８】
前記レジスタが、前記第１のバスからアドレスをＮＯＲ動作と、前記ＮＡＮＤメモリを使用するＮＯＲエミュレーション動作と、ＲＡＭ動作と、ＮＡＮＤ動作とに分けるためのパラメータを格納し、
前記第１のバスからアドレスを分けるための前記パラメータが、ホストデバイスからの構成可能パラメータであることを特徴とする請求項１７に記載のＮＯＲメモリ。
【請求項１９】
汎用メモリであって、
ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、ＮＡＮＤメモリとインターフェースをとる第２のバスと、ＲＡＭメモリとインターフェースをとる第３のバスと、ＮＯＲメモリとインターフェースをとる第４のバスとを有するメモリコントローラと、
前記第２のバスに接続されたＮＡＮＤメモリと、
前記第３のバスに接続されたＲＡＭメモリと、
前記第４のバスに接続されたＮＯＲメモリと、
を含み、
前記メモリコントローラが、前記第１のバスに供給されるＮＯＲプロトコルコマンドと、ＲＡＭプロトコルコマンドと、ＡＴＡ  ＮＡＮＤプロトコルコマンドとに応答することを特徴とする汎用メモリ。
【請求項２０】
前記汎用メモリが、モノリシック集積回路ダイであることを特徴とする請求項１９に記載の汎用メモリ。
【請求項２１】
前記メモリコントローラが第１の集積回路ダイであり、前記ＮＡＮＤメモリが第２の集積回路ダイであり、前記ＲＡＭメモリが第３の集積回路ダイであり、前記ＮＯＲメモリが前記メモリコントローラに一体化されたことを特徴とする請求項１９に記載の汎用メモリ。
【請求項２２】
前記第１、第２、及び第３の集積回路ダイが、共にパッケージされていることを特徴とする請求項２１に記載の汎用メモリ。
【請求項２３】
前記メモリコントローラが第１の集積回路ダイであり、前記ＮＡＮＤメモリが第２の集積回路ダイであり、前記ＲＡＭメモリ及び前記ＮＯＲメモリが前記メモリコントローラに一体化されていることを特徴とする請求項１９に記載の汎用メモリ。
【請求項２４】
前記第１及び第２の集積回路ダイが、共にパッケージされていることを特徴とする請求項２３に記載の汎用メモリ。
【請求項２５】
前記ＮＯＲメモリが、ＮＯＲアドレスとして前記第１のバス上の第１のアドレスと、ＲＡＭアドレスとして前記第１のバス上の第２のアドレスと、ＡＴＡ  ＮＡＮＤアドレスとして前記第１のバス上の第３のアドレスとに応答するように構成されたプログラムコードを格納することを特徴とする請求項１９に記載の汎用メモリ。
【請求項２６】
前記ＮＯＲメモリが、前記メモリコントローラの動作を開始するように構成されたプログラムコードを更に格納することを特徴とする請求項２５に記載の汎用メモリ。
【請求項２７】
前記メモリコントローラが、
前記第１のバスからアドレスをＮＯＲ動作と、前記ＮＡＮＤメモリを使用するＮＯＲエミュレーション動作と、ＲＡＭ動作と、ＡＴＡ  ＮＡＮＤ動作とに分けるために、ホストデバイスからの構成可能パラメータを格納するレジスタを更に含む請求項２６に記載の汎用メモリ。
【請求項２８】
前記ＮＯＲメモリが、前記ＮＡＮＤメモリを使用するＮＯＲエミュレーション動作用のキャッシュとして前記ＲＡＭメモリが使用されるように構成されたプログラムコードを更に格納することを特徴とする請求項２７に記載の汎用メモリ。
【請求項２９】
ホスト定義可能メモリであって、
ホストデバイスに接続し、アドレス信号及びデータ信号を受信するための第１のバスと、ＮＯＲメモリに接続するための第２のバスと、ＲＡＭメモリに接続するための第３のバスと、ＮＡＮＤメモリに接続するための第４のバスとを有するメモリコントローラと、
前記第２のバスに接続されたＮＯＲメモリと、
前記第３のバスに接続されたＲＡＭメモリと、
前記第４のバスに接続されたＮＡＮＤメモリと、
前記第１のバスから第１のアドレスをＮＯＲ動作に、前記第１のバスから第２のアドレスを前記ＮＡＮＤメモリ使用のＮＯＲエミュレーション動作に、前記第１のバスから第３のアドレスをＲＡＭ動作に、及び前記第１のバスから第４のアドレスをＡＴＡ  ＮＡＮＤ動作に分けるために、前記ホストデバイスからの構成可能パラメータを格納するレジスタと、
を含むホスト定義可能メモリ。
【請求項３０】
前記ＮＯＲメモリが、前記メモリコントローラと同じ集積回路ダイに一体化されていることを特徴とする請求項２９に記載のホスト定義可能メモリ。
【請求項３１】
前記ＲＡＭメモリが、前記メモリコントローラと同じ集積回路ダイに一体化されていることを特徴とする請求項３０に記載のホスト定義可能メモリ。
【請求項３２】
前記ＲＡＭメモリが第１の集積回路ダイであり、前記メモリコントローラが第２の集積回路ダイであって、前記第１の集積回路ダイと前記第２の集積回路ダイが共にパッケージされていることを特徴とする請求項３０に記載のホスト定義可能メモリ。
【請求項３３】
前記ＮＯＲメモリが、前記メモリコントローラの動作を開始するように構成されたプログラムコードを格納することを特徴とする請求項２９に記載のホスト定義可能メモリ。
【請求項３４】
ＮＯＲエミュレーティングメモリであって、
メモリコントローラの動作を開始するプログラムを格納するための不揮発性メモリを有し、ホストデバイスからアドレス及びデータ信号受信する第１のバスと、ＲＡＭメモリとインターフェースをとる第２のバスと、ＮＡＮＤメモリとインターフェースをとる第３のバスとを有するメモリコントローラと、
前記第２のバスに接続された揮発性ＲＡＭメモリと、
前記第３のバスに接続されたＮＡＮＤメモリと、
前記第１のバスからＮＯＲプロトコルコマンド及び第１のアドレスを受信し、前記第１のアドレスを前記ＮＡＮＤメモリ内の第２のアドレスにマップし、これに応答して前記ＮＡＮＤメモリを操作する手段であって、前記ＲＡＭメモリが前記ＮＡＮＤメモリ内の第２のアドレスへのデータ又は該アドレスからのデータ用のキャッシュとして機能する手段と、
前記キャッシュとして前記ＲＡＭ内に格納されたデータと前記ＮＡＮＤメモリ内の第２のアドレスのデータとの間のデータの一貫性を維持する手段と、
を含むＮＯＲエミュレーティングメモリ。
【請求項３５】
前記受信手段及び維持手段が、前記不揮発性メモリ内に格納されたプログラムコードを含むことを特徴とする請求項３４に記載のＮＯＲエミュレーティングメモリ。
【請求項３６】
前記揮発性ＲＡＭが前記メモリコントローラに組み込まれており、前記メモリコントローラが第１の集積回路ダイであり、前記ＮＡＮＤメモリが第２の集積回路ダイであり、前記第１及び第２のダイが共にパッケージされていることを特徴とする請求項３４に記載のＮＯＲエミュレーティングメモリ。
【請求項３７】
メモリデバイスであって、
複数のホストデバイスとインターフェースをとるための複数の第１のバスを有し、前記各第１のバスが前記各ホストデバイスに接続され、複数の第２のバスを更に有するメモリコントローラと、
前記複数の第２のバスに接続され、出力バスを有するアービトレーション回路と、
前記アービトレーション回路の出力バスに接続されたＮＡＮＤメモリと、
を含み、
前記ホストデバイスの各々が、前記アービトレーション回路を介して前記ＮＡＮＤメモリにアクセスすることを特徴とするメモリデバイス。
【請求項３８】
複数の第３のバスを有する前記メモリコントローラと、
前記複数の第３のバスに接続され、出力バスを有する第２のアービトレーション回路と、
前記第２のアービトレーション回路の出力バスに接続された揮発性ＲＡＭメモリと、を更に含み、
前記ホストデバイスの各々が、前記第２のアービトレーション回路を介して前記揮発性ＲＡＭメモリにアクセスすることを特徴とする請求項３７に記載のメモリデバイス。
【請求項３９】
メモリデバイスであって、
複数のホストデバイスとインターフェースをとる第１のバスを有し、前記第１のバスへのアクセスを認可するため前記各ホストデバイスに別々の制御信号を供給し、複数の第２のバス及び複数の第３のバスを更に有するメモリコントローラと、
前記複数の第２のバスに接続され、第１の出力バスを有する第１のアービトレーション回路と、
前記第１のアービトレーション回路の第１の出力バスに接続され、該第１のアービトレーション回路を介して前記ホストデバイスの各々がアクセスするＮＡＮＤメモリと、
前記複数の第３のバスに接続され、第２の出力バスを有する第２のアービトレーション回路と、
前記第２のアービトレーション回路の第２の出力バスに接続された揮発性ＲＡＭメモリと、
を含み、
前記ホストデバイスの各々が、前記第２のアービトレーション回路を介して前記揮発性ＲＡＭメモリにアクセスすることを特徴とするメモリデバイス。
【請求項４０】
メモリデバイスであって、
各々が異なるホストデバイスからアドレス信号及びデータ信号を受信するようにして複数のホストデバイスとインターフェースをとる複数の第１のバスと、ＮＡＮＤメモリとインターフェースをとる第２のバスと、ＲＡＭメモリとインターフェースをとる第３のバスと、ＮＯＲメモリとインターフェースをとる第４のバスとを有するメモリコントローラと、
前記第２のバスに接続されたＮＡＮＤメモリと、
前記第３のバスに接続されたＲＡＭメモリと、
前記第４のバスに接続されたＮＯＲメモリと、
を含み、
前記メモリコントローラが、前記異なる第１のバスの各々に供給されるＮＯＲプロトコルコマンド、ＲＡＭプロトコルコマンド、及びＡＴＡ  ＮＡＮＤプロトコルコマンドに応答することを特徴とするメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００５年１２月２８日に出願された米国仮出願６０／７５４，９３７の優先権を主張し、本開示は引用により全体が本明細書に組み込まれる。
【０００２】
本発明は、メモリデバイスに関し、より詳細には、従来のランダムなアドレス形式でアドレス及びデータを受信し、そのデータ／アドレスを、ＮＯＲメモリ、ＲＡＭメモリ、ＮＡＮＤメモリ用のキャッシュとして機能することで擬似ＮＯＲ（ＰＮＯＲ）動作をエミュレートするＲＡＭメモリ、及びＡＴＡ規格の不揮発性ＮＡＮＤメモリのいずれかにマップする能力を有するメモリデバイスに関する。アドレス及びデータは、単一のバス又は複数のバスを介して１つ又は複数のプロセッサから受信される。本発明はまた、かかるメモリデバイスに使用されるブート可能内蔵ＮＯＲメモリを備えたメモリコントローラに関する。
【背景技術】
【０００３】
ＳＲＡＭ、又はＤＲＡＭ（或いはＤＲＡＭ）、又はＰＳＲＡＭ（以下まとめてＲＡＭと呼ぶ）のような揮発性のランダムアクセスメモリは、当技術分野では公知である。典型的には、これらのタイプの揮発性メモリは、アドレスバス上のアドレス信号、データバス上のデータ信号、及びコントロールバス上の制御信号を受信する。
【０００４】
パラレルＮＯＲ型不揮発性メモリもまた当技術分野で公知である。典型的には、これは、ＲＡＭに供給されるものと同じタイプのアドレスバス上のアドレス信号、ＲＡＭに供給されるものと同じタイプのデータバス上のデータ信号、及びＲＡＭに供給されるものと同じタイプのコントロールバス上の制御信号を受信する。ＲＡＭと同様に、ＮＯＲメモリはランダムアクセスメモリデバイスである。しかしながら、ＮＯＲメモリは、ＲＡＭには必要ではないＳＥＣＴＯＲ  ＥＲＡＳＥ又はＢＬＯＣＫ  ＥＲＡＳＥのような一定の動作を必要とするため、コマンドの性質を有する動作が、一連の一定のデータパターンとしてＮＯＲデバイスに与えられる。これは、ＮＯＲプロトコルコマンドとして知られている。先行技術では、２つのタイプのＮＯＲプロトコルコマンドがあり、１）Ｉｎｔｅｌによって最初に公表されたプロトコルコマンドセットと互換性のあるプロトコルコマンド、及び２）ＡＭＤによって最初に公表されたプロトコルコマンドセットと互換性のあるプロトコルコマンドである。いずれの場合も、ＮＯＲメモリは、ＲＡＭがインターフェースをとる同じアドレスバス、データバス、及びコントロールバスと電気的にインターフェースをとる。更に、従来のＮＯＲメモリデバイスはまた、ＳＰＩ、ＬＰＣ、又はファームウェアハブのような公知の従来の形式でデータ信号、アドレス信号、及び制御信号をシリアルに供給することもできる。
【０００５】
ＮＡＮＤ型不揮発性メモリもまた、当技術分野で公知である。しかしながら、パラレルＮＯＲデバイスと違い、ＮＡＮＤメモリは、ブロック内のセルが順次形式で格納されるランダムアクセス可能なブロックにデータを格納する。更に、アドレス信号及びデータ信号は、同じバス上で、ただし多重化方式で供給される。ＮＡＮＤメモリは、ＮＯＲデバイスよりも高密度であるので、データの各ビットの格納コストが削減される利点を有する。
【０００６】
ＮＡＮＤデバイスはデータのビット当たりのコストが低いので、ＮＡＮＤデバイスを利用してＮＯＲデバイスの動作をエミュレートする試みが行われてきた。ＯｎｅＮＡＮＤ（Ｓａｍｓｕｎｇ  Ｃｏｒｐｏｒａｔｉｏｎの商標）と呼ばれるこうした１つのデバイスは、ＲＡＭメモリを利用してＮＡＮＤメモリとの間でデータを一時的にバッファすることで、ＮＯＲメモリの動作をエミュレートする。しかしながら、ＯｎｅＮＡＮＤデバイスには、２つの欠点があると考えられる。第１に、ＯｎｅＮＡＮＤをインターフェース接続するユーザ又はホストのデバイスは、データの一貫性を追跡する必要があると考えられる。データの一貫性においては、ユーザ又はホストがＲＡＭに書き込みを行うため、ＲＡＭのデータは、ＲＡＭのデータが最初に読み出されたＮＡＮＤ内の位置にあるデータよりも新しい（従って異なる）可能性がある。従って、ＯｎｅＮＡＮＤデバイスにおいては、ユーザ又はホストは、データをＲＡＭからＮＡＮＤ内の最終位置に書き戻してそのデータを格納し、或いはＲＡＭのデータが新しいデータであることを覚えておくように動作する必要がある。ＯｎｅＮＡＮＤデバイスの欠点であると考えられる第２の問題は、ＯｎｅＮＡＮＤデバイスが自動でアドレスマッピングを行うことができないことである。ＯｎｅＮＡＮＤデバイスでは、データがＯｎｅＮＡＮＤデバイスのＲＡＭ部分に書き込まれると、ホスト又はユーザは、ＲＡＭ部分にあるデータをＯｎｅＮＡＮＤデバイスのＮＡＮＤ部分にある最終位置に書き込むために、コマンド又は一連のコマンドを出す必要がある。同様に読み出し動作についても、ホスト又はユーザは、ＯｎｅＮＡＮＤのＮＡＮＤ部分にある特定の位置からの読み出しコマンドを送出し、そのデータをＲＡＭ部分にロードした後、該ＲＡＭ部分からデータを読み出す必要がある。
【０００７】
同様の欠陥を有すると考えられる別の先行技術のデバイスは、Ｍ  ＳｙｓｔｅｍｓのＤｉｓｋＯｎＣｈｉｐデバイスである。ＤｉｓｋＯｎＣｈｉｐデバイスでは、限定量のＲＡＭを備えたコントローラが、ＮＡＮＤメモリの動作を制御する。しかしながら、ＤｉｓｋＯｎＣｈｉｐデバイスのコントローラ部分は、ＮＯＲメモリのようなオンボードの不揮発性ブート可能メモリを持たないと考えられる。
【０００８】
ＮＯＲメモリの動作をエミュレートするコントローラを備えたＮＡＮＤメモリの利用を示す先行技術の公開は、２００６年３月９日に公開された米国公開特許出願２００６／００５３２４６に示されている。この公報は、複数のプロセッサに接続されたコントローラを備えたＮＡＮＤメモリの利用を示しているが、このＮＡＮＤメモリは、ＡＴＡ規格の動作により直接アクセスすることはできないと思われる。従って、このＮＡＮＤメモリへの全てのアクセスは、外部からの非直接的なアクセスでコントローラにより行われる必要がある。
【０００９】
【特許文献１】仮出願６０／７５４，９３７
【特許文献２】米国特許出願２００６／００５３２４６
【特許文献３】米国特許第６，４２７，１８６号
【特許文献４】米国特許第６，４０５，３２３号
【特許文献５】米国特許第６，１４１，２５１号
【特許文献６】米国特許第５，９８２，６６５号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、これらの欠陥がなく、先行技術にはみられないメモリアクセス機能を付加する能力を備えたメモリデバイスの必要性がある。
【課題を解決するための手段】
【００１１】
本発明では、汎用メモリデバイスはコントローラを有する。このコントローラは、ホストデバイスからアドレス信号及びデータ信号を受信する第１のバスと、ＮＡＮＤメモリとインターフェースをとる第２のバスと、ＲＡＭメモリとインターフェースをとる第３のバスと、ＮＯＲメモリとインターフェースをとる第４のバスとを有する。ＮＡＮＤメモリは、第２のバスに接続される。ＲＡＭメモリは、第３のバスに接続される。ＮＯＲメモリは、第４のバスに接続される。メモリコントローラは、ＮＯＲプロトコルコマンドと、ＲＡＭプロトコルコマンドと、ＡＴＡ  ＮＡＮＤプロトコルコマンドとに応答する。
【００１２】
また本発明は、かかるメモリデバイスで使用するメモリコントローラに関する。
【００１３】
最後に本発明はまた、メモリコントローラと、ＮＯＲメモリ、ＲＡＭメモリ、ＮＯＲエミュレーションメモリ、及びＡＴＡ  ＮＡＮＤメモリとして動作する様々なタイプのメモリのＮＯＲ、ＲＡＭ、及びＮＡＮＤとの多様な組み合わせに関する。
【発明を実施するための最良の形態】
【００１４】
図１を参照すると、メモリデバイス１０の第１の実施形態が示されている。メモリデバイス１０は、メモリコントローラ１２と、ＮＡＮＤメモリ１４と、ＲＡＭメモリ１６とを備える。メモリデバイス１０は、第１のＲＡＭアドレスバス２２と、第１のＲＡＭデータバス２４と、ウェイト２６、ＲＳＴ＃２８、並びにＣＥ＃、ＯＥ＃、及びＷＥ＃３０のような複数の制御信号とを介してホストデバイス２０とインターフェース接続し、これらの全てはＲＡＭバスの制御信号の当業者には公知である。以下において特に指定がない限り、ウェイト２６、ＲＳＴ＃２８、並びにＣＥ＃、ＯＥ＃及びＷＥ＃３０上の制御信号の全ては、第１のＲＡＭコントロールバス３２と呼ぶ。第１のＲＡＭアドレスバス２２、第１のＲＡＭデータバス２４、及び第１のＲＡＭコントロールバス３２は、ホストデバイス２０からメモリデバイス１０のメモリコントローラ１２に接続されている。更に、上述のように、メモリデバイス１０とホストデバイス２０との間のインターフェースは、データバス、アドレスバス、及びコントロールバスがホストデバイス２０とメモリデバイス１０との間でシリアルに接続されるシリアルバスを介するものとすることができる。かかるメモリデバイス１０もまた、本発明の範囲内である。
【００１５】
メモリコントローラ１２は、第２のＲＡＭアドレスバス（第１のＲＡＭアドレスバス２２と同様）と、第２のＲＡＭデータバス（第１のＲＡＭデータバス２４と同様）と、第２のコントロールバス（第１のＲＡＭコントロールバス３２と同様）とを有し、これらの全てはまとめて、ＲＡＭメモリ１６に接続された第２のＲＡＭバス４０として単に示される。メモリコントローラ１２は更に、ＮＡＮＤメモリ１４に接続されたＮＡＮＤアドレス／データバス及びＮＡＮＤコントロールバス（これらの全てはまとめてＮＡＮＤバス４２として示す）を有する。ＲＡＭメモリ１６は、シングルチップ集積回路として、メモリコントローラ１２に一体化又は組み込むことができる。或いは、ＲＡＭメモリ１６は、メモリコントローラ１２とは別個の集積回路とすることができる。或いは、ＲＡＭメモリ１６の一部をメモリコントローラ１２と統合することができ、ＲＡＭメモリ１６の一部をメモリコントローラ１２から分離することができる。ＲＡＭメモリ１６が別個のダイであることの利点は以下に説明する。しかしながら、ＲＡＭメモリ１６がメモリコントローラ１２と一体化される利点は、ＲＡＭメモリ１６の動作がより速くなることができることである。
【００１６】
一実施形態では、メモリコントローラ１２は、単一の集積回路ダイである。コントローラはまた、第１のＮＯＲメモリ４４と、第２のＮＯＲメモリ６２と、ＳＲＡＭメモリ４６と、ＳＤＲＡＭコントローラ４８（ＲＡＭ１６がＳＤＲＡＭタイプのＲＡＭメモリであって、メモリコントローラ１２の外部にある場合に、ＲＡＭ１６の動作を制御する）とを有し、これらはメモリコントローラの集積回路ダイ内に組み込まれている。勿論、第１のＮＯＲメモリ４４と第２のＮＯＲメモリ６２とは、同じ物理ＮＯＲメモリの一部とすることができる。メモリコントローラ１２のある実施形態の詳細なブロックレベルの図を図３に示す。本明細書で使用する「ＮＯＲメモリ」とは、ランダムアクセス不揮発性メモリのあらゆるタイプを意味する。ＮＯＲメモリは、限定ではないが、フローティングゲート型メモリ、ＲＯＭ、又は捕獲材料などを用いたセルを含む。更に、本明細書で使用する「ＮＡＮＤメモリ」は、不良セルを含む可能性のあるあらゆるタイプのシリアルアクセス不揮発性メモリを意味する。
【００１７】
一実施形態では、メモリコントローラ１２、ＲＡＭメモリ１６、及びＮＡＮＤメモリ１４の各々が、単一の集積回路ダイで形成され、共にＭＣＰ（マルチチップパッケージ）にパッケージ化される。かかる構成の利点は、大量（又は少量）のメモリを必要とするユーザ又はホスト２０に対して、容易に利用可能なＮＡＮＤメモリ１４のダイを単に変更することによって、或いはスピードが１つの要因である場合には、容易に利用可能なＲＡＭメモリ１６を変更することによってメモリ量を変更可能なことである。従って、メモリコントローラ１２と、ＲＡＭメモリ１６と、ＮＡＮＤメモリ１４とを別個のダイ内に備えることは、様々なサイズのメモリデバイス１０及び速度又はパフォーマンスを容易に製造することができることを意味する。
【００１８】
勿論、メモリコントローラ１２と、ＲＡＭメモリ１６と、ＮＡＮＤメモリ１４とは、単一の集積回路ダイに形成してもよい。メモリコントローラ１２と、ＲＡＭメモリ１６と、ＮＡＮＤメモリ１４とが、単一の集積回路ダイで形成される場合には、追加して外部に設けられるＮＡＮＤメモリをメモリデバイス１０に取り付けて、メモリデバイス１０のメモリ容量を拡張することができるように、外部ＮＡＮＤバス４２を設ける準備を行うことができる。
【００１９】
図２を参照すると、ホストデバイス２０により参照され、図１に示したメモリデバイス１０の第１の実施形態においてマップされるアドレスのマッピングを示すメモリマップが示されている。ホストデバイス２０によって参照されるメモリマップは、２つの一般的なセクション、すなわちランダムアクセスとマスストレージアクセスとを有する。ランダムアクセスセクションは、下位のメモリアドレス位置を占める（必要条件ではない）。ランダムアクセスセクション内では、最下位のメモリアドレスは、ＮＯＲメモリアクセス部分５０のメモリアドレスであり、これに続いて擬似ＮＯＲ（ＰＮＯＲ）メモリアクセス部分５２、次いでＲＡＭアクセス部分５４、次いで構成アクセス部分５６がある。これらの部分の各々を以下に説明する。
【００２０】
ホストデバイス２０により参照されるＮＯＲメモリアクセス部分５０は、ホスト２０がこの部分５０で動作する場合には、その結果は物理ＮＯＲメモリ４４上の動作であるものである。従って、メモリ部分５０の物理ＮＯＲメモリ４４へのマッピングは、１対１である。言い換えれば、ＮＯＲ部分５０に割り当てられるメモリ空間の量は、メモリデバイス１０で利用可能なＮＯＲメモリ４４の量によって決まる。一実施形態では、メモリコントローラ１２に組み込まれるＮＯＲメモリ４４の量は、２Ｋワードのセクタサイズ及び３２Ｋのワードブロックサイズを備えた４メガビットである。更に、ホストデバイス２０が（ｒｅａｄ／ｗｒｉｔｅ／ｅｒａｓｅなどのコマンドを送出するときのように）ＮＯＲ部分５０で動作していると考えると、結果として得られる動作は、ＮＯＲメモリ４４上に直接的なものとなる。このＮＯＲ部分５０は、待ち時間なしのランダムアクセスを要求する高性能の重要なコード／データを格納しようとするホストデバイス２０が利用することができる。更に、プログラムがＮＯＲメモリ４４に格納される場合、プログラムは、ＮＯＲメモリ４４内の所定位置で実行することができる。このようにＮＯＲメモリ４４は、ホストデバイス２０を「ブートする」プログラム又はコードを格納することができる。
【００２１】
ホストデバイス２０によって参照されるＰＮＯＲ部分５２は、ホスト２０がこの部分５２で動作するときに、ホスト２０は不揮発性のＲＡＭメモリ１６上で動作していると考えるものである。従って、ホストデバイス２０に関しては、ＮＯＲプロトコルのコマンドを送出することなく、ＰＮＯＲ部分５２に格納されたデータを除く他のあらゆるＲＡＭメモリ１６が不揮発性であるようにＰＮＯＲ部分５２上で動作することができる。一実施形態では、ＰＮＯＲ部分５２は、ＮＡＮＤメモリと同様にページに分割され、各ページは、８Ｋバイト、２Ｋバイト、又は５１２バイトのいずれかである。動作中、ホストデバイス２０がメモリデバイス１０とインターフェースをとると、ホストデバイスはＲＡＭメモリ１６とインターフェースをとり、メモリコントローラ１２がＮＡＮＤメモリ１４とのやりとりのデータを「バックアップ」してＲＡＭメモリ１６とＮＡＮＤメモリ１４との間のデータの一貫性を維持し、更に、メモリコントローラ１２は、ホストデバイス２０によって供給されたアドレスをＮＡＮＤメモリ１４内の実際のデータのアドレスにマップする。実際のＲＡＭメモリ１６よりも大量のＮＡＮＤメモリ１４が利用可能であるので、ＰＮＯＲ部分５２は、ＲＡＭメモリ１６で利用可能な実際のメモリ量よりも遙かに大きいメモリ空間とすることができる。
【００２２】
更にＰＮＯＲ部分５２は、４つの領域に分割することができ、各々がＲＡＭメモリ１６中のゾーンに、すなわちゾーン０、ゾーン１、ゾーン２、及びゾーン３にマップされる。各ゾーンは、様々な程度のマッピングを有することができる。ＰＮＯＲ部分５２の領域からＲＡＭメモリ１６のゾーンへのマッピングが１対１である場合、これは「静的ページングモード」と呼ばれる。ＰＮＯＲ部分５２の領域からＲＡＭメモリ１６のゾーンへのマッピングが多対１である場合には、これは「動的ページングモード」と呼ばれる。静的ページングモードのマッピングは、ＰＮＯＲ部分５２のメモリ空間の量（例えば２５６ページ（或いは２Ｋバイトのページの場合は５１２Ｋバイト））が常にＲＡＭ１６の同じ量のメモリ空間（例えば２５６ページ（又は５１２Ｋバイト））にマップされ、次いでこれがＮＡＮＤメモリ１４の２５６ページ（又は５１２Ｋバイト）にマップされるので、最小の待ち時間となる。この場合、ＲＡＭメモリ１６もまたランダムアクセスであるので、動作中のアクセスの待ち時間はないが、ＮＡＮＤメモリ１４とＲＡＭメモリ１６との間のやりとりの最初のロード及び格納での待ち時間がある。動的ページングモードのマッピングでは、例えば、ＰＮＯＲ部分５２のメモリ空間の４０，０００ページのマッピングでは、ＲＡＭメモリ１６の５１２ページへマップされ、次いでＮＡＮＤメモリ１４の４０，０００ページにマップされ、多大な待ち時間が発生することになる。この待ち時間は、ＮＡＮＤメモリ１４からＲＡＭ１６へデータ／プログラムを最初にロードする際と、キャッシュミスがある場合にデータ／プログラムを最初にＮＡＮＤメモリ１４からＲＡＭ１６へロードすることが必要な場合がある、ＰＮＯＲ部分５２からデータ／プログラムを読出す動作中とで発生することになる。従って、ＰＮＯＲ部分５２に関する待ち時間は、構成されるゾーンの大きさによって異なる。ＲＡＭメモリ１６の各ゾーンの境界、ひいてはＰＮＯＲ部分５２の各領域からＲＡＭメモリ１６にマップするメモリ空間の量は、ホストデバイス２０又はユーザが設定することができる。従って、ホストデバイス２０は、プログラム又はタイムクリティカルなデータを格納する／読出す静的ページングモードか、或いはプログラム又はタイムクリティカルでないデータを格納／読出し、その結果キャッシュミスがある場合に待ち時間がある動的ページングモードのいずれかで動作するように４つのゾーンを構成することができる。
【００２３】
ゾーンが静的ページングモードに構成されている場合、ＰＮＯＲ部分５２の同じ量のメモリ空間が常にＲＡＭメモリ１６の同じ量の空間にマップされるので、データ読み出しの一貫性は問題ではない。しかしながら、データ書き込みの一貫性は依然として行う必要がある。一方、ゾーンが動的ページングモードに構成されている場合、データの一貫性がもたらされなければならない。ホストデバイス２０は、２つのキャッシュ一貫性モードのうちの１つで動作するようにゾーンを構成することができる。第１のモードで、ホストデバイス２０はキャッシュ一貫性モードを開始する。このモードでは、ホストデバイス２０は、ホストデバイス２０に必要とされる限り、ＲＡＭメモリ１６内のキャッシュ動作をフラッシュする。第２のモードでは、ＲＡＭメモリ１６とＮＡＮＤメモリ１４との間のデータの一貫性を維持するために、メモリコントローラ１２に必要とされる限り、ＲＡＭメモリ１６内のキャッシュ動作をフラッシュすることにより、メモリコントローラ１２がキャッシュ一貫性モードを開始する。
【００２４】
ＰＮＯＲ部分５２のメモリ空間の量及びＲＡＭメモリ１６へのこのマッピングがユーザにより設定されると、ＲＡＭメモリ１６にある利用可能なメモリ空間の残りは、ＲＡＭメモリアクセス部分に利用することができる。ホストデバイス２０によって参照されるＲＡＭメモリアクセス部分５４は、ホスト２０がこの部分５４で動作するときに、その結果が物理ＲＡＭメモリ１６上の動作となるものである。従って、メモリ部分５４から物理ＲＡＭメモリ１６へのマッピングは１対１である。更に、ＲＡＭ部分５４に割り当てられるメモリ空間の量は、メモリデバイス１０で利用可能なＲＡＭメモリ１６の総量と、ＰＮＯＲメモリ５２のメモリ空間部分のＲＡＭメモリ１６へのマッピングの程度とによって決まる。ホストが、ＲＡＭ部分５４で動作している（読み出し／書き込みなどのコマンドを出しているなど）と考えると、結果として生じる動作は、ＲＡＭメモリ１６上に直接的なものとなる。このＲＡＭ部分５４は、メモリ空間をバッファ区域として利用しようとするホストデバイス２０が利用することができる。各ゾーンにおけるＰＮＯＲ部分５２のメモリ空間のＲＡＭメモリ１６へのマッピングは、ユーザが設定することが可能であり、ＲＡＭメモリ１６の総量は既知であるので、ＰＮＯＲ部分５２とＲＡＭ部分５４との間の境界は、間接的にユーザによって設定される。従って、大量のバッファを有することが望ましい場合、ゾーンの１つ又はそれ以上においてＰＮＯＲ部分５２とＲＡＭメモリ１６との間のマッピングを縮小することにより、大量のＲＡＭ部分５４を割り当てることができる。その上、ＰＮＯＲ部分５２とＲＡＭ部分５４との間の境界は、メモリコントローラ１２をリセットして、ＰＮＯＲ部分５２のメモリ空間とＲＡＭメモリ１６との間のマッピングを各ゾーンにおいて再構築することにより、メモリデバイス１０の動作中に変更することができる。
【００２５】
ＲＡＭメモリ１６のゾーンの各々のメモリマップの境界及びＰＮＯＲ部分５２のメモリ空間のサイズは、メモリコントローラ１２にある不揮発性の構成レジスタ６０に事前に割り当てて格納することができる。構成レジスタ６０へのアクセスは、構成アクセス部分５６を介する。不揮発性の構成レジスタ６０は、組み込みＮＯＲメモリ６２の一部とすることができる。或いは、ＲＡＭメモリ１６のゾーンの各々のメモリマップの境界及びＰＮＯＲ部分５２のメモリ空間のサイズは、ユーザが１つ又は複数のチップ選択ピンを介して選択することができる。この場合、メモリコントローラ１２の電源が入ると、様々なメモリの境界をリセットすることができる。ＮＯＲメモリ６２はまた、メモリコントローラ１２及びＭＣＵ６４のブート中及び動作中に、メモリコントローラ１２が実行するのに使用されるファームウェアコード６１を格納することもできる。
【００２６】
最後に、マスストレージアクセスセクション５８では、ホストデバイス２０がメモリ空間のそのセクションにアクセスすると、ホストデバイス２０は、ＡＴＡディスクドライブにアクセスしていると考える。メモリコントローラ１２は、公知のフラッシュファイルシステム（ＦＦＳ）プロトコルを使用して、論理ＡＴＡディスクドライブ空間のアドレスをＮＡＮＤメモリ１４の物理空間のアドレスに変換する。一実施形態では、読み出し動作に関して、マスストレージアクセスセクション５８の最初の部分は、ＡＴＡタスクファイルレジスタ７９にロードされる１６バイトの論理アドレスからなる。メモリコントローラ１２は、１６バイトのタスクコマンド及び論理アドレスをデコードし、ＮＡＮＤメモリ１４内の特定の「ページ」にアクセスするためにこれを物理アドレスに変換する。ＮＡＮＤメモリ１４のページから５１２バイトのページが読み出され、次いでデータレジスタ８１にロードされ、ここでホストデバイス２０により順次的に又はランダムにアクセスされる。書き込み動作に関しては、逆のことが起こる。５１２バイトのデータが格納されることになる論理アドレスが、最初にタスクファイルレジスタ７９にロードされる。書き込みコマンドが、タスクファイルレジスタ７９に書き込まれる。メモリコントローラ１２は、タスクファイルレジスタ内のこのコマンドを書き込みコマンドとしてデコードし、これを物理アドレスに変換してＮＡＮＤメモリ１４の特定のページにアクセスし、更に、その位置にデータレジスタ８１内の５１２バイトを格納する。別の実施形態では、いわゆるピンポン構成において２つのデータレジスタ８１（ａ＆ｂ）（図示せず）が存在する場合がある。この場合、データレジスタ８１ａの一方は、データを予めＮＡＮＤメモリ１４の１ページからロードして、５１２バイトのデータをホストデバイス２０に供給するように使用され、他方のデータレジスタ８１ｂは、ＮＡＮＤメモリ１４の別のページからデータレジスタ８１ｂにデータをロードして、データレジスタ８１ａからのデータが完全に読み出された後、データをホストデバイス２０に供給するように使用される。この方法では、ＮＡＮＤメモリ１４からデータのページの多くに渡って連続的な読み出し動作を行うことができる。また、データレジスタ８１（ａ＆ｂ）は、書き込み動作においてピンポン式に用いることも可能であり、セットアップの待ち時間がほとんど又は全くなく、データの多くの連続したページをＮＡＮＤメモリ１４に書き込むことが可能になる。
【００２７】
前述のように、メモリデバイス１０とホストデバイス２０との間のインターフェースは、シリアルバスを介することができる。詳細には、かかるシリアルバスは、メモリデバイス１０のＲＡＭ部分をホストデバイス２０と接続する従来のパラレルバスを用いて、メモリデバイス１０のＮＯＲ又はＰＮＯＲ区域をホストデバイス２０と接続することができる。
【００２８】
図３を参照すると、ＲＡＭメモリ１６及びＮＡＮＤメモリ１４とインターフェースをとるメモリコントローラ１２の詳細なブロックレベルの図が示されている。メモリコントローラ１２はマイクロコントローラ６４を含む。マイクロコントローラ６４は、ＦＦＳのあらゆるブックキーピング機能を行い又は実行する。その上、マイクロコントローラは、欠陥管理（ＤＭ）及びキャッシュデータ一貫性アルゴリズム、並びにキャッシュフラッシュ置換アルゴリズムを行い又は実行する。最後に、マイクロコントローラ６４は、キャッシュページングスキームアルゴリズムを行い又は実行する。これらの動作の全ては、メモリコントローラ１２のブート操作又は初期設定を含み、ＮＯＲメモリ６２内に格納されたファームウェア又はプログラムコード６１によって達成される。
【００２９】
マイクロコントローラ６４は、上述のようにマイクロコントローラ６４によって実行されるファームウェア６１も格納する第２のＮＯＲメモリ６２に接続されている。不揮発性の構成レジスタ６０を格納することに加えて、ＮＯＲメモリ６２はまた、ＦＦＳ及びＤＭの動作用のファームウェアを格納する。
【００３０】
またマイクロコントローラ６４は、ＭＵＸ７４を介してＳＲＡＭメモリ４６とインターフェースをとる。ＳＲＡＭメモリ４６は、ランタイムデータを格納するためのマイクロコントローラ６４用ローカル高速バッファとして機能する。その上、ＳＲＡＭメモリ４６は、欠陥マップキャッシュとＦＦＳデータ構造とを格納することができる。
【００３１】
メモリコントローラ１２の詳細な説明をハードウェア構成要素に関して記載するが、以下に記載する機能の全ては、マイクロコントローラ６４で実行するためにソフトウェアに実装することもできる。
【００３２】
メモリコントローラ１２は、内容参照可能メモリの性質で実装することができるカレントキャッシュのページアドレスレジスタ６６を含む。ＣＡＭ６６の機能は、現在のＰＮＯＲキャッシュのページアドレスを保持すること、及びＰＮＯＲ部分５２に対する読み出し又は書き込み動作中にアクセスミスがあるときにＣＡＭ６６を更新することである。ＣＡＭ６６内の各エントリは、３つの部分、すなわちページアドレス部分６６ａ、インデックスアドレス部分６６ｂ、及びステータス部分６６ｃを有する。メモリコントローラ及びＣＡＭメモリ６６の動作に関する説明は、以下の実施例に関するものであるが、本発明は、以下の実施例に限定されないことを理解されたい。ホストデバイス２０からのアドレスは、２１の最上位ビット（ビット１１〜３１）と、１１の最下位ビット（ビット０〜１０）とからなる３２ビットと仮定する。２１の最上位ビットはページアドレスを含み、１１の最下位ビットはオフセットアドレスを含む。またＣＡＭメモリ６６の各エントリは、２１ビットからなるページアドレス部分６６ａと、９ビットからなるインデックスアドレス部分６６ｂと、１２ビットからなるステータス部分とを含み、このステータス部分は有効（又は無効）の１ビット、ダーティ（又はクリーン）の１ビット、静的（又は動的）の１ビット、ホスト主導のキャッシュ一貫性（又はコントローラ主導）の１ビット、及び最終アクセスタイムスタンプ用の８ビットからなる。ホストデバイス２０からの３２ビットでは、ホストデバイスは、２32バイトすなわち１ＧＢの量のメモリ空間をアドレス指定することができる。以下に説明するように、メモリコントローラ１２は、ホストデバイス２０からのオフセットアドレスによる１１ビットに加えて、ＣＡＭメモリ６６からの９ビットのインデックスアドレス部分を使用して、２０ビットのアドレスを形成することで、ＲＡＭ１６に対する１ＭＢのアドレス指定を可能にする。勿論、これらの数字は例証に過ぎず、本発明を限定するものではない。
【００３３】
メモリコントローラ１２はまた、ヒット／ミス比較論理６８を含む。ヒット／ミス比較論理６８は、アドレスバス２２からアドレス信号を受信し、コントロールバス３２から制御信号を受信する。次いで、ヒット／ミス比較論理６８は、ホストデバイス２０からのアドレスの３２ビットからページアドレスの２１ビットをＣＡＭメモリ６６に送信する。ＣＡＭメモリ６６は、これら２１ビットのページアドレスをＣＡＭメモリ６６の各エントリに格納されたページアドレス６６ａと比較する。ヒットがある場合、すなわちホストデバイス２０からのページアドレスの２１ビットがＣＡＭメモリ６６のエントリの１つと一致する場合、ＣＡＭメモリ６６は、インデックスアドレス６６ｂの関連する９ビットをＭＵＸ７０に出力する。ミスがある場合、ヒット／ミス比較論理６８が、読み出しミス信号又は書き込みミス信号を生成する。読み出しミス信号及び書き込みミス信号は、マイクロコードコントローラ（ＭＣＣ）／エラーコード訂正（ＥＣＣ）ユニット７２がデータ一貫性を実行する信号としてＭＣＣ／ＥＣＣユニット７２に供給される。ＭＣＣ／ＥＣＣユニット７２に供給される信号は、ＲＡＭメモリ１６に格納されたカレントページアドレスの１つが、アドレスバス２２上に供給されたホストデバイス２０からのアドレスであることを示すヒットであるか、或いは、ＲＡＭメモリ１６に格納されたカレントページアドレスのいずれもが、アドレスバス２２上に供給されたホストデバイス２０からのアドレスではないことを示すミスである。最後に、ヒット／ミス比較論理６８はまた、ウェイト状態信号２６に接続される。ウェイト状態信号２６は、メモリコントローラ１２がバスサイクル動作を保持したいことをホストデバイス２０に知らせたいと望むときに生成される。ウェイト状態信号２６は、ディアサートされるとバス２２／２４／３２を解放し、ホストデバイス２０が動作を再開できるようになる。ウェイト状態信号２６がメモリコントローラ１２によってアサートされる一実施例は、読み出し／書き込みミスが存在し、メモリコントローラ１２がＮＡＮＤメモリ１４のアドレスからデータを読出し、これをＲＡＭメモリ１６にロードする必要がある場合である。データがＮＡＮＤメモリ１４から読出されて、ＲＡＭメモリ１６にロードされる時間の間、ウェイト状態信号２６は、メモリコントローラ１２によりアサートされる。
【００３４】
またメモリコントローラ１２は、マイクロコントローラ６４の制御下で動作するＭＣＣ／ＥＣＣユニット７２を含む。ＭＣＣ／ＥＣＣユニット７２は、キャッシュデータの一貫性、フラッシュ置換、及びページングの動作のために読み出しミス／書き込みミス信号を監視する。その上、マイクロコントローラ６４の制御下で、ＭＣＣ／ＥＣＣユニット７２は、ＮＡＮＤメモリ１４を操作し、ＮＡＮＤメモリ１４の欠陥管理動作を与える。更に、マイクロコントローラ６４の制御下で、ＭＣＣ／ＥＣＣユニット７２は、ＮＡＮＤメモリ１４と、ＲＡＭメモリ１６と、ＳＲＡＭメモリ４６との間でデータを移動させるようにＤＭＡ機能を提供する。最後に、ＭＣＣ／ＥＣＣユニット７２は、ＮＡＮＤメモリ１４に格納されたデータについてエラー検出及び訂正を行う。
【００３５】
メモリコントローラ１２はまた、セキュリティ及びデジタル権利管理を提供する暗号エンジン９０を含む。その上、メモリコントローラ１２は、ＲＡＭメモリ１６の量を増強するのに利用するため、追加のＲＡＭメモリ９２をコントローラに組み込み、すなわち同じ集積回路ダイ上に形成することができる。上記のように、ＲＡＭメモリ１６は、別個の集積回路ダイとすることができ、この場合メモリコントローラ１２に組み込まれたＲＡＭメモリ９２がＲＡＭメモリ１６を増強する。しかしながら、ＲＡＭメモリ１６とメモリコントローラ１２とが同じダイに一体化されている場合、ＲＡＭメモリ１６及びＲＡＭメモリ９２は共に、同じメモリアレイの一部とすることができる。
【００３６】
次に、様々な動作モードに関してメモリデバイス１０を説明する。パワーアップ中、ヒット／ミス比較論理６８は、ウェイト信号を生成して、ウェイト状態信号２６をアサートする。メモリコントローラ１２は、不揮発性レジスタ６０から構成パラメータを読み出し、これを揮発性レジスタ４６（ＳＲＡＭ４６の一部とすることができる）にロードする。静的ページ、すなわちＰＮＯＲ部分５２に静的にマップされるＮＡＮＤメモリ１４からのデータもまた、ＮＡＮＤメモリ１４から読み出され、ＲＡＭメモリ１６内に格納される。これは、ＭＣＣ／ＥＣＣ７２を介してマイクロコントローラ６４により行われ、ＦＦＳプロトコルを実行してＮＡＮＤメモリ１４からのページのアドレスを変換し、更にＮＡＮＤメモリ１４への物理アドレス及び制御信号を生成してデータをそこから引き出し、これをＲＡＭメモリ１６に格納する。パワーアップ中、ＭＣＵ６４及びＭＣＣ／ＥＣＣ７２もまた、ＮＡＮＤメモリ１４をスキャンしマスタインデックステーブルを探索する。マスタインデックステーブルは、読み出されてローカルＳＲＡＭメモリ４６に格納される。ＭＣＵ６４は、マスタインデックステーブルのデータ構造の完全性を調べる。ＭＣＵ６４及びＭＣＣ／ＥＣＣ７２はまた、ＮＡＮＤメモリ１４をスキャンし、マスタインデックステーブルの再構築が必要であるかどうかを判断する。ＭＣＵ６４及びＭＣＣ／ＥＣＣ７２はまた、ＮＡＮＤメモリ１４から２ページのデータをローカルＳＲＡＭメモリ６４に取り込む。Ｖｐａｇｅと呼ばれるＮＡＮＤメモリ１４からの最初の２ページのデータは、ホストデバイス２０の論理アドレスをＮＡＮＤメモリ１４の物理アドレスにマップするためのデータを含み、ＮＡＮＤメモリ１４の欠陥セクタをスキップする能力を備えている。次にＦＦＳは、マッピング変換要求を受け入れる準備が整う。次にヒット／ミス比較論理６８が、ウェイト状態信号２６をディアサートし、すなわちウェイト状態信号２６を解除する。
【００３７】
パワーアップ中、メモリコントローラ１２が、ＮＡＮＤメモリからの静的ページの引き出し、及びこれらのＲＡＭメモリ１６への格納、並びにＮＡＮＤメモリ１４のマスタインデックステーブルの更新などといった他のオーバーヘッド機能を実施している間、メモリデバイス１０は、ホストデバイス２０によって更に利用可能である点に留意されたい。詳細には、ウェイト状態信号２６のアサーションは、メモリ空間のＰＮＯＲ部分５２に対する要求をアドレス指定するのに向けた動作にのみ影響を与えるので、ＮＯＲメモリ４４は、パワーアップ中でもホストデバイス２０がアクセスすることが可能である。
【００３８】
ＮＯＲメモリの動作
ＮＯＲメモリ４４の読み出し動作では、ホストデバイス２０は、メモリ空間のＮＯＲメモリアクセス部分５０内にあるアドレス信号をアドレスバス２２上でメモリデバイス１０に送信する。更に、ホストデバイス２０によって適切な制御信号がコントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＰＮＯＲメモリアクセス部分５２以外の空間にあるので、ヒット／ミス比較論理６８は起動されず、ウェイト状態信号２６はアサートされない。アドレス信号及び制御信号は、ＮＯＲメモリ４４に供給され、そこで供給されたアドレスからのデータを読み出す。次いでデータは、データバスに沿ってＭＵＸ８４に供給され、更にデータバス２４に沿ってホストデバイス２０へ出されることで読み出しサイクルを完了する。
【００３９】
ＮＯＲメモリ４４の書き込み又はプログラム動作では、ホストデバイス２０は、メモリ空間のＮＯＲメモリアクセス部分５０内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって適切な制御信号がコントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＰＮＯＲメモリアクセス部分５２以外の空間にあるので、ヒット／ミス比較論理６８は起動されず、ウェイト状態信号２６はアサートされない。アドレス信号及び制御信号は、ＮＯＲメモリ４４に供給される。書き込まれ又はプログラムされるデータ及びプログラムコマンドは、ホストデバイス２０からデータバス２４に沿ってメモリコントローラ１２に送信され、ＭＵＸ８４に入る。次いでＭＵＸ８４から、データがＮＯＲメモリ４４に送信され、そこでデータはアドレスバス２２で供給されるアドレスでＮＯＲメモリ４４内にプログラムされる。ホストデバイス２０は、ＮＯＲメモリ４４をバイト単位でプログラムすることができるバイトプログラム動作を行うことができる。書き込み又はプログラムサイクルは、データがＮＯＲメモリ４４に書き込まれると完了する。
【００４０】
ＮＯＲメモリ４４のセクタ消去又はブロック消去などの消去動作では、ホストデバイス２０は、メモリ空間のＮＯＲメモリアクセス部分５０内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって適切な制御信号がコントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＰＮＯＲメモリアクセス部分５２以外の空間にあるので、ヒット／ミス比較論理６８は起動されず、ウェイト状態信号２６はアサートされない。アドレス信号及び制御信号は、ＮＯＲメモリ４４に供給される。消去コマンドプロトコルを表すデータ信号は、ホストデバイス２０からデータバス２４に沿ってメモリコントローラ１２に送信され、ＭＵＸ８４に入る。次いでＭＵＸ８４から、データがＮＯＲメモリ４４に送信され、そこで該データはＮＯＲメモリ４４によってデコードされ、次いで消去動作が実行される。ＮＯＲメモリ４４が消去サイクルを完了すると、消去サイクルは完了する。
【００４１】
ＰＮＯＲメモリの動作−読み出し
ＰＮＯＲメモリの読み出し動作では、ホストデバイス２０は、メモリ空間のＰＮＯＲメモリアクセス部分５２内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。読み出しヒットと読み出しミスの２つのことが起こりうる。
【００４２】
読み出しヒットの場合、アドレスバス２２に供給されたアドレス信号のページアドレス部分が、ヒット／ミス比較論理６８によって受信され、ＣＡＭ６６内に格納されたＲＡＭメモリ１６内に現在あるアドレスと比較される。アドレスバス２２に供給されたページアドレスが、ＣＡＭ６６内に格納されているページアドレス内に存在する場合、ヒットが存在する。ヒット／ミス論理６８は、アドレス信号及び制御信号が次にＲＡＭメモリ１６へ向けられるようにＭＵＸ７０を起動させ、ＣＡＭメモリ６６からの関連するインデックスアドレス６６ｂをホストデバイス２０からのオフセットアドレスと連結して、ＲＡＭメモリ１６をアドレス指定する。次いで、ＲＡＭメモリ１６によるその下位アドレスから読み出されたデータは、ＭＵＸ８０に送信され、そこからＭＵＸ８４に供給され（ＭＵＸ８０のデフォルト状態）、ＭＵＸ８４は、ヒット／ミス比較論理６８により命令されて、データをデータバス２４に沿ってホストデバイス２０に送信することができるようにし、これによって読み出しサイクルを完了する（図示せず）。
【００４３】
読み出しミスの場合、起こり得る幾つかのことがある。まず、キャッシュフラッシュのない読み出しミスと呼ばれるものがある。アドレスバス２２からのアドレス信号のページアドレス部分をＣＡＭ６６からのページアドレスレジスタ６６ａと比較した結果ミスとなる場合、すなわちアドレスバス２２上のページアドレスが、ＲＡＭメモリ１６に格納されたページのアドレス内にない場合には、ヒット／ミス比較論理６８は、ＭＣＣ／ＥＣＣユニット７２に読み出しミス信号を送り、ＭＣＣ／ＥＣＣ７２が読み出し一貫性サイクルを開始する。更に、ヒット／ミス比較論理６８は、ウェイト状態信号２６上に信号をアサートする。ＭＣＵ６４の制御下にあるＭＣＣ／ＥＣＣユニット７２は、ＦＦＳ動作を実行して、ホストデバイス２０により供給されたアドレスをＮＡＮＤメモリ１４内の物理アドレスに変換する。次いで、ＭＣＣ／ＥＣＣユニット７２は、ＮＡＮＤメモリ１４に対して適切なアドレス信号及び制御信号を生成し、更に、ＲＡＭメモリ１６に対して適切なアドレス信号及び制御信号を生成する。
【００４４】
アドレスバス２２で特定されるアドレスからのデータを含むデータのページ全体は、ＮＡＮＤメモリ１４から読み出され、ＭＵＸ８０を介してＲＡＭメモリ１６に転送され、そこでＭＣＣ／ＥＣＣユニット７２により特定されたＲＡＭメモリ１６内の位置のページ全体に書き込まれ、ＭＣＣ／ＥＣＣユニット７２により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、ＣＡＭ６６のカレントページアドレスレジスタが更新され、カレント読み出しミスアドレス内にあるアドレスページのアドレスを追加する。ヒット／ミス比較論理６８は、ウェイト状態信号２６上の信号をディアサートする。更に、ＭＣＵ６４は、ＭＵＸ８０をデフォルト位置に切り替える。ヒット／ミス比較論理６８は、インデックスアドレス６６ｂをＭＵＸ７０に送信し、そこでインデックスアドレスは、アドレスバス２２からのオフセットアドレス部分と組み合わされ、ＲＡＭメモリ１６をアドレス指定する。次いで、ＲＡＭメモリ１６上での読み出し動作からのデータは、ＭＵＸ８０を介し、更にＭＵＸ８４を介してホストデバイス２０へのデータバス２４に供給され、これによりサイクルを完了する。ＮＡＮＤメモリ１４から読み出されたデータの量は、ページベースであるので、データのページ全体がＲＡＭメモリ１６内に格納される必要がある。キャッシュフラッシュのない読み出しミスのこのケースでは、ＲＡＭメモリ１６のページ全体がＮＡＮＤメモリ１４からのデータを格納するのに利用可能であるか、或いはデータのページ全体が格納されることになるＲＡＭメモリ１６内の位置には（ＮＡＮＤメモリ１４にあるデータと同様の）一貫性のあるデータが含まれていると仮定すると、ＮＡＮＤメモリ１４から読み出されたデータのページ全体は、ＲＡＭメモリ１６のある位置に格納することができる。キャッシュフラッシュとは、ＲＡＭメモリ１６からＮＡＮＤメモリ１４へデータの書き込むことで、データ一貫性の問題のあるキャッシュ（ＲＡＭメモリ１６）をフラッシュすることを意味する。
【００４５】
読み出しミスの別の可能性のあるケースは、キャッシュフラッシュのある読み出しミスと呼ばれる。このケースでは、ＮＡＮＤメモリ１４からのデータのページ全体は、ＮＡＮＤメモリ１４内のデータよりも新しい、ＲＡＭメモリ１６内のあるデータを上書きすることなく、ＲＡＭメモリ１６に格納する可能性がある。これは、データ一貫性の問題を生じる。従って、ＲＡＭメモリ１６内のデータのページは、最初にＮＡＮＤメモリ１４に書き込む必要があり、その後で、異なる位置のＮＡＮＤメモリ１４からのデータをＲＡＭメモリ１６に読み込むことができる。一連の動作は以下の通りである。ホストデバイス２０によるアドレスバス２２からのアドレス信号のページアドレス部分をＣＡＭ６６からのページアドレス信号６６ａと比較して、アドレスバス２２からのアドレス信号が、カレントページアドレスのいずれかの中にあるかどうかを判断する。この比較はミスとなり、ヒット／ミス比較論理６８がＭＣＣ／ＥＣＣユニット７２に対して読み出しミス信号を送信し、ＭＣＣ／ＥＣＣユニット７２が読み出し一貫性サイクルを開始する。更に、ヒット／ミス比較論理６８は、ウェイト状態信号２６上の信号をアサートする。ＮＡＮＤメモリ１４からのデータがＲＡＭメモリ１６に読み込まれる場合にはデータ一貫性の問題が生じるので、ＭＣＵ６４の制御下のＭＣＣ／ＥＣＣユニット７２は、最初にＲＡＭメモリ１６内のデータのページをＮＡＮＤメモリ１６に書き込む必要があると判断する。ＭＣＵ６４は、ＦＦＳ動作を実行し、ＲＡＭメモリ１６からのアドレスをＮＡＮＤメモリ１４のアドレスに変換する。
【００４６】
データのページ全体が、ＲＡＭメモリ１６から読み出され、ＭＵＸ８−を通ってＮＡＮＤメモリ１４に供給され、そこでＮＡＮＤメモリ１４に格納される。その後、ホストデバイス２０からのアドレスは、ＭＣＵ６４によってＦＦＳ動作で物理ＮＡＮＤアドレスに変換される。次に、ＭＣＣ／ＥＣＣユニット７２は、ＭＣＵ６４の指示を受けてＮＡＮＤメモリ１４に対しての適切なアドレス信号及び制御信号を生成し、更に、ＣＡＭメモリ６６からのインデックスアドレス６６ｂと、ＭＣＣ／ＥＣＣ７２からの制御信号及びオフセットアドレス部分とを使用して、ＲＡＭメモリ１６をアドレス指定する。次に、ＮＡＮＤメモリ１４から読み出されたデータのページ全体は、ＮＡＮＤメモリ１４からＭＵＸ８０を介してＲＡＭメモリ１６に転送され、そこでＭＣＣ／ＥＣＣユニット７２により特定されたＲＡＭメモリ１６内の位置のページに書き込まれ、ＭＣＣ／ＥＣＣユニット７２により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、ＣＡＭ６６のカレントページアドレスレジスタ６６ａが更新され、カレント読み出しミスアドレスを含むページアドレスと、関連するインデックスアドレス６６ｂとを追加する。ヒット／ミス比較論理６８は、ウェイト状態信号２６上の信号をディアサートする。更に、ＭＣＵ６４は、ＭＵＸ８０をデフォルト位置に切り替える。ヒット／ミス比較論理６８は、インデックスアドレス６６ｂをＭＵＸ７０に送信し、そこでインデックスアドレスがアドレスバス２２からのオフセットアドレスと組み合わされ、ＲＡＭメモリ１６で読み出し動作を開始する。次いで、データがＲＡＭメモリ１６から読み出され、ＭＵＸ８０を介し、更にＭＵＸ８４を介してホストデバイス２０へのデータバス２４に供給され、これにより読み出しサイクルを完了する。
【００４７】
読み出しヒット、キャッシュフラッシュのない読み出しミス、キャッシュフラッシュのある読み出しミスの各々の場合では、この動作は、ホストデバイス２０の視点からＲＡＭデバイスに対する読み出しと同様であり、読み出しミスの場合に待ち時間を伴う。ホストデバイス２０は、アドレスの変換及び／又はデータの一貫性に対処する必要がない。
【００４８】
ＰＮＯＲメモリの動作−書き込み
ＰＮＯＲメモリの書き込み動作では、ホストデバイス２０は、ＲＡＭメモリ１６に書き込まれるデータと共に、メモリ空間のＰＮＯＲメモリアクセス部分５２内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。書き込みヒット及び書き込みミスといった２つのことが起こり得る。
【００４９】
書き込みヒットの場合、アドレスバス２２に供給されたアドレス信号のページアドレス部分は、ヒット／ミス比較論理６８によって受信され、ＲＡＭメモリ１６内に現在格納されているデータを反映するＣＡＭ６６内のページアドレス６６ａと比較される。アドレスバス２２に供給されたページアドレスは、ＣＡＭ６６内に格納されたページアドレス内にある。ヒット／ミス論理６８は、アドレス信号及び制御信号がその後ＲＡＭメモリ１６へ向けられるようにＭＵＸ７０を起動する。ＣＡＭ６６からのインデックスアドレス６６ｂとアドレスバス２２からのアドレス信号のオフセットアドレス部分とが組み合わされて、ＭＵＸ７０を介してＲＡＭメモリ１６にアクセスするのに使用されるアドレス信号が生成される。データバス２４からのデータは、ＭＵＸ８４を通り、ＭＵＸ８０を通ってＲＡＭメモリ１６に供給され、そこでＲＡＭメモリ１６に書き込まれ、これにより書き込みヒットサイクルが完了する。
【００５０】
ＲＡＭメモリ１６内のデータは、書き込みヒット動作後は、ＮＡＮＤメモリ１４の同じ位置からのデータに対して一貫性がなくなる点に留意されたい。実際には、ＲＡＭメモリ１６のデータは最新のものとなる。データの一貫性の問題を解決するには、２つの解決法がある。
【００５１】
第１に、メモリデバイス１０は、必要に応じてデータの一貫性の問題を自動的に解決することができる。上記のように、例えばキャッシュフラッシュ動作での読み出しミスの場合には、ＮＡＮＤメモリ１４から新しく要求されるデータのページを格納するために、ＲＡＭメモリ１６内のデータのページが置き換えられる必要がある場合、ＲＡＭメモリ１６内のより新しいデータは、ＮＡＮＤメモリ１４に書き戻されることになる。以下に説明するように、ＭＣＵ６４はまた、キャッシュフラッシュ動作での書き込みミスにおいて、データをＮＡＮＤメモリ１４に書き戻すことによりＲＡＭメモリ１６のデータに関してキャッシュフラッシュを行う。
【００５２】
データの一貫性の問題に対する別の解決法は、ホストデバイス２０の制御下でデータの一貫性を実施することである。すなわち、ホストデバイス２０は、メモリコントローラ１２に一貫性のないデータをＲＡＭメモリ１６からＮＡＮＤメモリ１４に書き戻させるキャッシュフラッシュのコマンドを送出することができる。この動作の利点は、限定ではないが、アプリケーションの変更、シャットダウン、又は受信した低出力割り込みなどの重要なイベントを含む、あらゆる時点でホストデバイス２０がこの動作を行うことができることである。しかしながら、メモリコントローラ１２もまた自動的にデータの一貫性を実施することができるので、ホストデバイス２０のユーザがデータの一貫性の動作を実施できない場合には、このような動作は、必要に応じてメモリコントローラ１２が行うこともある。
【００５３】
書き込みミスの場合、起こり得る幾つかのことがある。まず、キャッシュフラッシュのない書き込みミスと呼ばれるものがある。アドレスバス２２からのアドレス信号のページアドレス部分をＣＡＭ６６からのページアドレス信号６６ａと比較した結果、ミスとなる場合、すなわちアドレスバス２２上のアドレスが、ＲＡＭメモリ１６に格納されたページのアドレス内にない場合には、ヒット／ミス比較論理６８は、ＭＣＣ／ＥＣＣユニット７２に書き込みミス信号を送る。更に、ヒット／ミス比較論理６８は、ウェイト状態信号２６上に信号をアサートする。ＭＣＣ／ＥＣＣユニット７２は、ホストデバイス２０からのアドレスバス２２上で特定されたアドレスのデータを含む、ＮＡＮＤメモリ１４からのデータの新しいページが、古い一貫性のあるデータ上、或いはＲＡＭメモリ１６の空き区域上に格納されることになるかどうかを判断する。この場合、メモリコントローラ１２は、データをＮＡＮＤメモリ１４からＲＡＭメモリ１６内の位置に転送する前に、書き込み一貫性サイクルを行う必要がない。ＭＣＵ６４の制御下にあるＭＣＣ／ＥＣＣユニット７２は、ＦＦＳ動作を実行して、ホストデバイス２０により供給されたアドレスをＮＡＮＤメモリ１４内の物理アドレスに変換する。次いで、ＭＣＣ／ＥＣＣユニット７２は、ＮＡＮＤメモリ１４に対して適切なアドレス信号及び制御信号を生成し、更に、ＲＡＭメモリ１６に対して適切なアドレス信号及び制御信号を生成する。
【００５４】
アドレスバス２２で特定されるアドレスからのデータを含む、データのページ全体は、ＮＡＮＤメモリ１４から読み出され、ＭＵＸ８０を介してＲＡＭメモリ１６に転送され、そこでＭＣＣ／ＥＣＣユニット７２及びインデックスアドレス６６ｂにより特定されたＲＡＭメモリ１６内の位置のページ全体に書き込まれ、そこでＭＣＣ／ＥＣＣユニット７２により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、ＣＡＭ６６のカレントページアドレスレジスタ６６ａが更新され、カレント書き込みミスアドレス内にあるアドレスページのアドレス及び関連するインデックスアドレス６６ｂ（インデックスアドレス６６ｂはデータのページが格納されるＲＡＭメモリ１６のアドレスの上位９ビットである）を追加する。ヒット／ミス比較論理６８は、ウェイト状態信号２６上に信号をディアサートする。更に、ＭＣＵは、ＭＵＸ８０をデフォルト位置に切り替える。ヒット／ミス比較論理６８は、インデックスアドレス６６ｂをＭＵＸ７０に送信し、そこでインデックスアドレスはアドレスバス２２からのオフセットアドレスと組み合わされ、ＲＡＭメモリ１６において書き込み動作を開始する。次いで、データは、ホストデバイス２０からＭＵＸ８４を通って、更にＭＵＸ８０を通りＲＡＭメモリ１６に書き込まれ、これによりサイクルを完了する。ここではＲＡＭメモリ１６内のデータはもはやＮＡＮＤメモリ１４内の同じアドレスにあるデータと一貫性がない。この一貫性の問題は、全て上述されたように、メモリコントローラ１２が必要に応じて自動的に書き込みキャッシュフラッシュを開始するか、又はホストデバイス２０が常に書き込みキャッシュフラッシュを開始することによって解決される。
【００５５】
書き込みミスの別の起こり得るケースは、キャッシュフラッシュを伴う書き込みミスと呼ばれる。このケースでは、ＮＡＮＤメモリ１４からのデータのページ全体は、ＮＡＮＤメモリ１４内のデータよりも新しい、ＲＡＭメモリ１６内のあるデータを上書きすることなくＲＡＭメモリ１６に格納することはできない。これは、データ一貫性の問題を生じる。従って、ＲＡＭメモリ１６内のデータのページは、最初にＮＡＮＤメモリ１４に書き込む必要があり、その後で、異なる位置のＮＡＮＤメモリ１４からのデータをＲＡＭメモリ１６に読み込むことができる。一連の動作は以下の通りである。ホストデバイス２０によるアドレスバス２２からの信号のページアドレス部分をＣＡＭ６６からのページアドレス信号６６ａと比較して、アドレスバス２２からのアドレス信号が、カレントページアドレスのいずれかの中にあるかどうかを判断する。この比較はミスとなり、ヒット／ミス比較論理６８がＭＣＣ／ＥＣＣユニット７２に対して書き込みミス信号を送信し、ＭＣＣ／ＥＣＣユニット７２が書き込み一貫性サイクルを開始する。更に、ヒット／ミス比較論理６８は、ウェイト状態信号２６上の信号をアサートする。ＮＡＮＤメモリ１４からのデータがＲＡＭメモリ１６に読み込まれる場合には、データ一貫性の問題が生じるので、ＭＣＵ６４の制御下のＭＣＣ／ＥＣＣユニット７２は、最初にＲＡＭメモリ１６内のデータのページをＮＡＮＤメモリ１６に書き込む必要があると判断する。ＭＣＵユニット６４は、ＦＦＳ動作を実行し、ＲＡＭメモリ１６からのアドレスをＮＡＮＤメモリ１４のアドレスに変換する。
【００５６】
データのページ全体が、ＲＡＭメモリ１６から読み出され、ＭＵＸ８０を通ってＮＡＮＤメモリ１４に供給され、そこでＮＡＮＤメモリ１４に格納される。その後、ホストデバイス２０からのアドレスは、ＦＦＳ動作により物理ＮＡＮＤアドレスに変換される。次に、ＭＣＣ／ＥＣＣユニット７２は、ＦＦＳからの物理ＮＡＮＤアドレスを使用してＮＡＮＤメモリ１４に対して適切なアドレス信号及び制御信号を生成し、更に、ＲＡＭメモリ１６に対してインデックスアドレス及び制御信号を生成する。次に、ＮＡＮＤメモリ１４から読み出されたデータのページ全体は、ＮＡＮＤメモリ１４からＭＵＸ８０を通ってＲＡＭメモリ１６に転送され、そこでＭＣＣ／ＥＣＣユニット７２からのオフセットアドレス及びインデックスアドレスレジスタ６６ｂからのインデックスアドレスにより特定されたＲＡＭメモリ１６内の位置のページに書き込まれ、ＭＣＣ／ＥＣＣユニット７２により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、ＣＡＭ６６のカレントページアドレスレジスタが更新され、カレント読み出しミスのアドレスを含むページアドレス６６ａ及び関連するインデックスアドレス６６ｂを追加する。ヒット／ミス比較論理６８は、ウェイト状態信号２６上に信号をディアサートする。更に、ＭＣＵは、ＭＵＸ８０をデフォルト位置に切り替える。ヒット／ミス比較論理６８は、インデックスアドレス６６ｂをＭＵＸ７０に送信し、そこでインデックスアドレスはアドレスバス２２からのオフセットアドレスと組み合わされて、ＲＡＭメモリ１６に書き込むアドレスを形成する。次いでデータは、ホストデバイス２０からデータバス２４にＭＵＸ８４を介し、更にＭＵＸ８０を介してＲＡＭメモリ１６内に書き込まれる。キャッシュフラッシュのない書き込みミスに関する前述の説明と同様に、ＲＡＭメモリ１６のデータはここではより新しくなっており、データの一貫性の問題が生じ、ホストデバイス２０がキャッシュフラッシュを開始するか、或いはメモリコントローラ１２がキャッシュフラッシュ動作を開始することにより解決することができる。
【００５７】
書き込みヒット、キャッシュフラッシュのない書き込みミス、キャッシュフラッシュのある書き込みミスの各々の場合では、この動作は、ホストデバイス２０の視点からＲＡＭデバイスに対する書き込みと同様であり、書き込みミスの場合には待ち時間を伴う。ホストデバイス２０は、アドレスの変換及び／又はデータの一貫性に対処する必要がない。
【００５８】
データの一貫性問題を解決するためにはＲＡＭメモリ１６からＮＡＮＤメモリ１４への書き込み動作を最初に行う必要があるので、キャッシュフラッシュのある読み出しミス又はキャッシュフラッシュのある書き込みミスの場合の待ち時間を更に短縮するために、以下のことを実施することができる。ＮＡＮＤメモリ１４に書き込まれることになるデータのページは、最初にＲＡＭメモリ１６からローカルＳＲＡＭ４６に書き込まれる。これは、直接ＮＡＮＤメモリ１４に書き込むよりも遙かに高速の動作である。これ以降、キャッシュフラッシュのある読み出しミス又はキャッシュフラッシュのある書き込みミスの動作は、キャッシュフラッシュのない読み出しミス又はキャッシュフラッシュのない書き込みミスの動作であるかのように続く。読み出しミス又は書き込みミスの動作が完了すると、ローカルＳＲＡＭ４６に格納されたデータは、メモリデバイス１０がアイドル状態であるか、又はアクセスがＮＯＲメモリのアクセス部分５０、もしくはＲＡＭメモリのアクセス部分５４、もしくは構成レジスタのアクセス部分５６での動作に限定されている場合、バックグラウンド動作でＮＡＮＤメモリ１４に書き込むことができる。
【００５９】
ＰＮＯＲ動作では、この動作は、ホストデバイス２０の視点からＲＡＭメモリに対して実行するのと同様であり、データは不揮発性であるが、ホストデバイス２０がセクタ又はブロック消去などのＮＯＲプロトコルコマンドを送出することがない点に留意されたい。しかしながら、メモリデバイス１０がＲＡＭメモリ１６及びＮＡＮＤメモリ１４を用いてＮＯＲ動作をエミュレート可能であることはまた、本発明の範囲内である。この場合、ＮＯＲメモリのアクセス部分５０に対するメモリ空間のマッピングは、ＮＯＲメモリ４４への正確なマッピングよりも拡大することになる。ＮＯＲメモリのアクセス部分５０は、ＲＡＭメモリ１６の一部にマップされ、ＲＡＭメモリ１６はＮＡＮＤメモリ１４に静的にマップすることができるので、アクセス中の待ち時間の問題は存在しない。ＮＡＮＤメモリ１４からのデータは、電源投入時にはＲＡＭ１６にロードされ、ＮＯＲメモリのアクセス部分５０への読み出し／書き込みは、ＲＡＭメモリ１６からの読み出し又はＲＡＭメモリ１６への書き込みとなる。他の唯一の変更は、メモリコントローラ１２がＮＯＲプロトコルコマンドに応答することである。上述のように、かかるＮＯＲプロトコルコマンドが、ホストデバイス２０により送出されると、これらは一連の固有データパターンとして供給される。データは、データバス２４上に供給され、ＭＵＸ８４を介し、ＭＵＸ８０を通る。アドレスバス上に供給されたアドレスは、この動作がＲＡＭメモリ１６によりエミュレートされたＮＯＲメモリアクセス部分５０におけるものとなることを示すので、ＭＵＸ７４は、ＭＣＵ６４がデータパターンを受信できるように切り替えられる。そのデータパターンが、ＮＯＲコマンドとしてデコードされると、例えばそのコマンドが消去である場合には、ＭＣＵはそのＮＯＲコマンドでＮＡＮＤメモリ１４を操作する。勿論、ＲＡＭメモリ１６は、揮発性メモリであるため、「消去」される必要はない。従って、ＮＯＲプロトコルコマンドの実行は、ＮＯＲプロトコルコマンドを実行する真のＮＯＲメモリ４４よりもＮＯＲメモリ４４をエミュレートするＲＡＭメモリ１６によってより高速の操作となる。その上、このエミュレーションは、ＮＯＲプロトコルコマンドのフルセットをエミュレートする必要はない。代わりに、コントローラ１２は、ＮＯＲプロトコルコマンドの一部のセットをエミュレートすることができる。従って、本明細書で使用する用語「ＮＯＲプロトコルコマンド」とは、例えばＩｎｔｅｌ又はＡＭＤにより公表されているＮＯＲプロトコルコマンドのフルセットからの１つ又は複数のコマンドを意味する。
【００６０】
ＲＡＭメモリの動作
ＲＡＭメモリ１６の読み出し動作では、ホストデバイス２０は、メモリ空間のＲＡＭメモリアクセス部分５４内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって適切な制御信号が、コントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＲＡＭメモリアクセス部分５４にあるので、ヒット／ミス比較論理６８がＭＵＸ７０を起動し、アドレスバス２２及びコントロールバス３２からのアドレス信号／制御信号をＲＡＭメモリ１６に供給することができるようにする。しかしながら、ウェイト状態信号２６はアサートされない。更に、ホストデバイス２０からのアドレスはデコードされ、コントロールバス３２からの制御信号と共に、ＲＡＭメモリ１６に供給されるアドレス信号を形成し、そこで、供給されるアドレスからのデータが読み出される。次いで、データは、データバスに沿ってＭＵＸ８０及びＭＵＸ８４に供給され、データバス２４に沿ってホストデバイス２０に出されることで、読み出しサイクルを完了する。
【００６１】
ＲＡＭメモリ１６の書き込み動作では、ホストデバイス２０は、メモリ空間のＲＡＭメモリアクセス部分５４内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって適切な制御信号が、コントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＲＡＭメモリアクセス部分５４にあるので、ヒット／ミス比較論理６８がＭＵＸ７０を起動し、アドレスバス２２及びコントロールバス３２からのアドレス信号／制御信号をＲＡＭメモリ１６に供給することを可能にする。しかしながら、ウェイト状態信号２６はアサートされない。更に、ホストデバイス２０からのアドレスがデコードされ、コントロールバス３２からの制御信号と共に、ＲＡＭメモリ１６に供給されるアドレス信号を形成し、ここで、データバス２４からのデータは、供給されるアドレスでＲＡＭメモリ１６に書き込まれる。
【００６２】
ホストデバイス２０の観点からすると、ＲＡＭメモリアクセス部分における読み出し又は書き込みの動作は、待ち時間なしでＲＡＭデバイスにアクセスするのと同様である。
【００６３】
構成レジスタの動作
構成レジスタの動作では、ホストデバイス２０は、メモリ空間の構成レジスタアクセス部分５６内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって、適切な制御信号がコントロールバス３２でメモリデバイス１０に送信される。次いでデータが不揮発性レジスタ６０に書き込まれる。
【００６４】
ＮＡＮＤメモリの動作
ＮＡＮＤメモリ１４の読み出し動作では、ホストデバイス２０は、メモリ空間のマスストレージアクセスセクション５８、すなわちＡＴＡメモリアクセス部分５８内にあるアドレス信号をアドレスバス２２でメモリデバイス１０に送信する。更に、ホストデバイス２０によって、適切な制御信号がコントロールバス３２でメモリデバイス１０に送信される。アドレス信号は、ＰＮＯＲメモリアクセス部分５２以外の空間にあるので、ヒット／ミス比較論理６８は起動されず、ウェイト状態信号２６はアサートされない。ホストデバイス２０は、ＡＴＡプロトコルに従って、ＡＴＡ読み出し／書き込みコマンドに対してタスクファイルレジスタ７９に読み出し／書き込みをする。タスクファイルレジスタ７９は、コマンド、ステータス、シリンダ、ヘッド、セクタなどを格納するレジスタを含む。ＭＣＵ６４の制御下にあるＭＣＣ／ＥＣＣユニット７２は、ホスト論理アドレスをＮＡＮＤ物理アドレスに変換するフラッシュファイルシステムを操作し、欠陥ＮＡＮＤセクタを使用することを回避する能力を備える。米国特許第６，４２７，１８６号、第６，４０５，３２３号、第６，１４１，２５１号、及び第５，９８２，６６５号を参照し、これらの開示は、引用により全体が本明細書に組み込まれる。ホストデバイス２０からの各論理アドレスは、Ｖｐａｇｅと呼ばれるテーブルにエントリを有する。エントリの内容は、論理アドレスのデータが格納されている物理アドレスを指す。
【００６５】
あるデータのページをＮＡＮＤメモリ１４から読み出すために、アドレス信号及び制御信号がＮＡＮＤメモリ１４に供給される。ホストデバイス２０は、ＡＴＡプロトコルに従って、タスクファイルレジスタ７９がコマンド及び論理アドレスを格納する。各セクタサイズは５１２バイトである。ホストデバイス２０は、メモリ空間のタスクファイルレジスタのアクセス部分５８にあるステータスレジスタ７９を読み出すことにより、メモリ１０の準備状況を調べる。ホストデバイス２０は、メモリ空間５８内のコマンドレジスタ７９に「ｒｅａｄ」コマンドを書き込む。ＭＣＵ６４は、論理アドレスから物理アドレスへのＦＦＳ変換を行い、ＭＣＵ６４の制御下にあるＭＣＣ／ＥＣＣユニット７２が、ＮＡＮＤメモリ１４からデータを読み出し、データのページをバッファ８１に転送する。データのページ全体がデータレジスタ８１に格納され、ＭＣＣ／ＥＣＣユニット７２により操作されて、誤り訂正チェックなどを介してデータの完全性が確保された後、データはデータバス２４に沿ってメモリコントローラ１２から読み出される。
【００６６】
ＮＡＮＤメモリ１４への書き込み動作は、ＮＡＮＤメモリ１４からの読み出しの動作と同様である。ホストデバイス２０は、タスクメモリ空間５８部分にあるステータスレジスタ７９を読み出すことにより、メモリ１０の準備状況を調べる。ホストデバイス２０は、１ページのデータをデータレジスタ８１に書き込み、次に論理アドレスと共に、「ｗｒｉｔｅ」コマンドをコマンドレジスタ７９に書き込む。その後、ＦＦＳを使用するＭＣＵ６４が、論理アドレスを物理アドレスに変換し、ＭＣＵ６４の制御下にあるＭＣＣ／ＥＣＣユニット７２が、その１ページのデータをＡＴＡバッファ８１からＮＡＮＤメモリ１４へ書き込む。
【００６７】
ＦＦＳは、更新されることになるページの物理アドレスを特定することによってデータのページを更新する。ＦＦＳは、消去されたセクタを「バッファセクタ」として探索し、又は消去されたセクタがない場合には、あるセクタに対し消去動作を最初に行う。次にＦＦＳは、変更されておらず、且つプログラムされていない古いデータをバッファセクタに読み出す。次いでＦＦＳは、更新されたページデータをプログラムする。次にＦＦＳは、次の要求を待機する。次のページが同じ消去セクタ上にある場合、ＦＦＳは更新動作を続ける。次のページが、転送中の消去セクタ以外である場合、変更されていないデータの残りは、バッファセクタにコピーされることになる。マッピングテーブルのエントリは、バッファセクタの物理アドレスに変更される。次いで、新しいページの更新動作が開始される。
【００６８】
図４を参照すると、メモリデバイス１１０の第２の実施形態が示されている。このメモリデバイス１１０は、図１に示したメモリデバイス１０と同様である。従って、同じ要素は同じ参照符号で示されている。メモリデバイス１１０とメモリデバイス１０との唯一の違いは、メモリデバイス１００では、第２のＲＡＭバス４０が、ＲＡＭメモリ１００をメモリコントローラ１２にではなく、直接ホストデバイス２０に接続することである。従って、メモリデバイス１１０では、ホストデバイスは、ＲＡＭメモリ１００に直接アクセスし制御する。
【００６９】
メモリデバイス１０の実施形態とメモリデバイス１１０の実施形態とのこの相違点は、図５に示したメモリマッピングに反映されている。メモリデバイス１０と同様に、メモリデバイス１１０のメモリマッピングは、ＮＯＲメモリ４４にマップされるＮＯＲメモリアクセス部分５０と、メモリデバイス１１０のＲＡＭメモリ１６にマップされ、その後ＮＡＮＤメモリ１４にマップされるＰＮＯＲメモリアクセス部分５２と、ＲＡＭメモリ１６にマップされるＲＡＭメモリアクセス部分５４とを含む。しかしながら、第２のＲＡＭバス４０を介してホストデバイス２０が直接アクセス可能なＲＡＭメモリ１００では、メモリデバイス１１０のメモリマッピングはまた、ＲＡＭメモリ１００に直接マップする別のＲＡＭメモリアクセス部分５５を含む。従って、メモリデバイス１１０はまた、メモリデバイス１０で説明したものと同様に、構成レジスタアクセス部分５６と、最後に、ＡＴＡメモリアクセス部分５８とを含む。
【００７０】
メモリコントローラ１２がホストデバイス２０と、更にＮＡＮＤメモリ１４とインターフェースをとると、メモリデバイス１０は、従来技術のメモリデバイスよりも強い保護が得られる。詳細には、メモリコントローラは、デジタル権利管理に関することと同様、ＮＡＮＤメモリ１４に格納されたあるデータへのアクセスを制限することができる。更にメモリコントローラ１２は、機密データを保護するために、ＮＡＮＤメモリ１４に格納されたデータを暗号化することができる。最後に、メモリコントローラ１２は、ＮＡＮＤメモリ１４のある部分のデータを誤って消去することからの保護を提供することができる。最後に、プログラムがＮＯＲメモリ６２内に格納されていることで、メモリコントローラ１２は、ホストデバイス２０からの開始のコマンドを必要としない点において自動作動デバイスである。
【００７１】
図６を参照すると、本発明のメモリデバイス２１０のブロック図が示されている。メモリデバイス２１０は、メモリデバイス１０と同様である。これは、メモリコントローラ１２と同様に、ＮＡＮＤメモリ１４及びＲＡＭメモリ１６に接続されたメモリコントローラ１１２を含む。コントローラ１１２は、単一のバス２３に接続され、このバスは、図１に示した第１のＲＡＭアドレスバス２２と、第１のＲＡＭデータバス２４と、第１のＲＡＭコントロールバス３２との集合である。しかしながら、図１に示す実施形態とは異なり、単一のバス２３は、複数のプロセッサ１２０（ａ〜ｃ）に接続される。複数のプロセッサ１２０（ａ〜ｃ）の各々はバス２３にアクセスし、これによりメモリデバイス２１０にアクセスすることができる。従って、単一のバス２３は、プロセッサ１２０（ａ〜ｃ）の全てによって共有される。
【００７２】
プロセッサ１２０（ａ〜ｃ）の各々がメモリデバイス２１０にアクセスするために、各プロセッサ１２０は、バス２３にアクセスするための許可を要求する信号をコントローラ１１２に送る関連バス要求信号ライン１２２と、該要求を認可するメモリデバイス２１０のコントローラ１１２からのバス認可信号ライン１２４とを有する。従って、コントローラによってプロセッサ１２０の１つに許可が認可されると、他のプロセッサ１２０へのバス認可ライン１２４は禁止モードになる。プロセッサ１２０の各々は、図２に示すように、メモリデバイス２１０のメモリ空間の全てにアクセスすることができ、又はメモリデバイス２１０のメモリ空間を分割して、一定のアドレス空間だけが一定のプロセッサ１２０に利用されるようにすることができる。メモリデバイス２１０の実施形態の欠点は、プロセッサ１２０の全てが、同じバス２３を共有しなければならないことである。従って、パフォーマンスヒットになる場合がある。
【００７３】
図７を参照すると、本発明のメモリデバイス３１０の別の実施形態のブロック図が示されている。メモリデバイス３１０は、メモリデバイス２１０と同様である。メモリデバイス３１０は、ＮＡＮＤメモリ１４と、ＲＡＭメモリ１６とに接続されたメモリコントローラ２１２を含む。メモリコントローラ２１２は、３つのバス２３（ａ〜ｃ）に接続され、このバスの各々は、図１に示した第１のＲＡＭアドレスバス２２と、第１のＲＡＭデータバス２４と、第１のＲＡＭコントロールバス３２との集合である。バス２３（ａ〜ｃ）の各々は、１つのプロセッサ１２０（ａ〜ｃ）に接続される。複数のプロセッサ１２０（ａ〜ｃ）の各々が、そのバス２３にアクセスし、これによりメモリデバイス３１０にアクセスすることができる。
【００７４】
更に、メモリコントローラ２１２は、複数のコントローラ１２（ａ〜ｃ）を含み、各コントローラ１２が専用の関連するＮＯＲメモリ４４とＳＲＡＭメモリ４６とを有する。すなわち、各プロセッサ１２０は、関連する専用バス２３と、関連する専用コントローラ１２とを有する。従って、図６に示したメモリデバイス２１０の実施形態とは異なり、各プロセッサ１２０がバス認可を要求する（及び待機する）必要がない。更に、各コントローラ１２が、専用ＮＯＲメモリ４４を有するので、図２に示すアドレス空間のＮＯＲメモリアクセス部分５０は、プロセッサ１２０の各々が個々にアドレス可能である。その上、プロセッサ１２０の各々に専用の各コントローラ１２の各々におけるＳＲＡＭ４６は、そのプロセッサ１２０にだけ役立つ１次キャッシュとして機能する。メモリデバイス３１０は、プロセッサ１２０の全てにより一般的に共有されるＮＡＮＤメモリ１４及びＳＤＲＡＭメモリ１６を有する。従って、ＮＡＮＤメモリ１４又はＳＤＲＡＭ１６へのアクセス要求は、アービトレーション回路２５０に供給する必要がある。コントローラ１２が、ＳＤＲＡＭメモリ１６へのアクセスを要求する場合、コントローラは、バス要求ラインでアービトレーション回路２５０に要求し、アービトレーション回路２５０は、要求しているコントローラ１２にバス認可信号を送信することで応答する。次いで、アービトレーション回路２５０は、他のコントローラ１２によるバスへのアクセスを禁止する。これは、図６に示すバス２３のアクセスに関してこれまで説明した方式と同様である。メモリコントローラ２１２からは、図１で図示し説明した実施形態と同様に、単一のバス４０がＳＤＲＡＭ１６に接続し、単一のバス４２がＮＡＮＤメモリ１４に接続している。
【００７５】
動作中、ヒットがあるときにはプロセッサ１２０側では性能の低下はない。プロセッサの各々が、ＮＯＲメモリアドレス空間５０へのアクセスを要求する場合でもやはり性能の低下はない。各プロセッサ１２０がＰＮＯＲ空間５２又はＲＡＭアドレス空間５４のアドレスを要求し、１次キャッシュミスがある場合、すなわちデータが関連するＳＲＡＭ４６で見つからない場合には、コントローラ１２の各々は、ＳＤＲＡＭ１６へのバスの制御を求めてアービトレーション回路２５０にアクセスする。２次キャッシュもまたミスである場合、コントローラ１２は、ＮＡＮＤメモリ１４へのバスの制御を求める。データが、ＮＡＮＤメモリ１４から読出され、２次キャッシュメモリＳＤＲＡＭ１６に入ると、その同じデータをまた、（ＳＤＲＡＭメモリ４６のサイズに応じて）要求中のコントローラ１２における１次キャッシュＳＲＡＭメモリ４６に書き込むことも可能である。全てのプロセッサ１２０（ａ〜ｃ）が別々のアドレスレンジを使用する場合、個々のキャッシュが維持されることになる。全てのプロセッサ１２０（ａ〜ｃ）が同じアドレスレンジを共有する場合は、変更、排他、共有、無効（ＭＥＳＩ）キャッシュプロトコルが使用される。１つの高密度メモリのＳＤＲＡＭメモリ１６又はＮＡＮＤメモリ１４を有することは、複数の低密度メモリを有するよりもコスト効率が良い。
【００７６】
図８を参照すると、本発明のメモリデバイス４１０の別の実施形態のブロック図が示されている。メモリデバイス４１０は、メモリデバイス３１０と同様である。メモリデバイス４１０は、メモリコントローラ２１２と同様に単一のバス４２を介してＮＡＮＤメモリ１４に接続され、且つ複数のバス４０（ａ〜ｃ）を介して複数のＲＡＭメモリ１６に接続されたメモリコントローラ３１２を含む。メモリコントローラ３１２は、３つのバス２３（ａ〜ｃ）に接続され、このバスの各々は、図１に示した第１のＲＡＭアドレスバス２２と、第１のＲＡＭデータバス２４と、第１のＲＡＭコントロールバス３２との集合である。バス２３（ａ〜ｃ）の各々は、関連するプロセッサ１２０（ａ〜ｃ）に接続される。複数のプロセッサ１２０（ａ〜ｃ）の各々が、そのバス２３にアクセスし、これによりメモリデバイス４１０にアクセスすることができる。
【００７７】
更に、メモリコントローラ３１２は、複数のコントローラ１２（ａ〜ｃ）を含み、各コントローラ１２が専用の関連するＮＯＲメモリ４４及びＳＲＡＭメモリ４６を有し、更に関連する専用のＳＤＲＡＭメモリ１６を有する。従って、各プロセッサ１２０は、関連する専用バス２３と、関連する専用コントローラ１２と、関連するＳＤＲＡＭメモリ１６とを有する。この結果、図７に示したメモリデバイス３１０の実施形態とは異なり、各プロセッサ１２０は、ＳＤＲＡＭメモリ１６に格納された２次キャッシュにアクセスしたい場合にバス認可を要求する（及び待機する）必要がない。更に、各コントローラ１２が、専用ＮＯＲメモリ４４を有するので、ＮＯＲメモリアクセス部分５０は、プロセッサ１２０の各々が別々にアドレス可能である。その上、プロセッサ１２０の各々に専用であるコントローラ１２及びＳＤＲＡＭ１６の各々におけるＳＲＡＭ４６は、そのプロセッサ１２０にだけ役立つ１次及び２次キャッシュとして機能する。メモリデバイス４１０は、プロセッサ１２０の全てに一般的に共有されるＮＡＮＤメモリ１４を有する。従って、ＮＡＮＤメモリ１４へのアクセス要求は、アービトレーション回路２５に供給する必要がある。
【００７８】
動作中、ヒットがあるときにはプロセッサ１２０側では性能の低下はない。プロセッサの各々が、ＮＯＲメモリアドレス空間５０へのアクセスを要求する場合でもやはり性能の低下はない。各プロセッサ１２０がＰＮＯＲ空間５２又はＲＡＭアドレス空間５４のアドレスを要求し、１次キャッシュミスがある場合、すなわちデータが関連するＳＲＡＭ４６で見つからない場合には、コントローラ１２の各々は、関連するＳＤＲＡＭメモリ１６にアクセスする。２次キャッシュもまたミスである場合、コントローラ１２は、ＮＡＮＤメモリ１４へのバスの制御を求める。データが、ＮＡＮＤメモリ１４から読出されると、データは２次キャッシュメモリＳＤＲＡＭ１６に入る。全てのプロセッサ１２０（ａ〜ｃ）が別々のアドレスレンジを使用する場合、個々のキャッシュは維持されることになる。全てのプロセッサ１２０（ａ〜ｃ）が同じアドレスレンジを共有する場合は、変更、排他、共有、無効（ＭＥＳＩ）キャッシュプロトコルが使用される。１つの高密度ＮＡＮＤメモリ１４を有することは、複数の低密度メモリを有するよりもコスト効率が良い。
【００７９】
図９を参照すると、本発明のメモリデバイス５１０の別の実施形態のブロック図が示されている。メモリデバイス５１０は、メモリデバイス４１０と同様である。メモリデバイス５１０は、メモリコントローラ３１２と同様に、単一のバス４２を介してＮＡＮＤメモリ１４に接続されたメモリコントローラ４１２を備える。メモリコントローラ３１２は、３つのバス２３（ａ〜ｃ）に接続され、このバスの各々は、図１に示した第１のＲＡＭアドレスバス２２と、第１のＲＡＭデータバス２４と、第１のＲＡＭコントロールバス３２との集合である。バス２３（ａ〜ｃ）の各々は、関連するプロセッサ１２０（ａ〜ｃ）に接続される。複数のプロセッサ１２０（ａ〜ｃ）の各々が、そのバス２３にアクセスし、これによりメモリデバイス４１０にアクセスすることができる。
【００８０】
更に、メモリコントローラ３１２は、複数のコントローラ１２（ａ〜ｃ）を含み、各コントローラ１２が専用の関連するＮＯＲメモリ４４及びＳＲＡＭメモリ４６、並びにこれに一体化されたＳＤＲＡＭ１６を有する。従って、図８に示したメモリデバイス４１０の実施形態と異なり、メモリデバイス５１０は、メモリコントローラ４１２をメモリコントローラ４１２の外部にあるＳＤＲＡＭ１６に接続するバス４０がない。他の全ての点では、メモリデバイス５１０は、メモリデバイス４１０と同様である。
【００８１】
本発明には多くの態様がある。まず、メモリデバイス１０、１１０、２１０、３１０、４１０、又は５１０は、汎用メモリデバイスである。メモリデバイスは、ＲＡＭアドレス信号を受信する第１のアドレスバスと、ＲＡＭデータ信号を受信する第１のデータバスと、ＲＡＭ制御信号を受信する第１のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは、組み込みのＮＯＲメモリを有し、更に、揮発性ＲＡＭメモリとインターフェースをとる第２のアドレスバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のデータバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のコントロールバスとを有する。このコントローラは更に、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のアドレス／データバスと、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のコントロールバスとを有する。このメモリデバイスは更に、上記第２のアドレスバスと、上記第２のデータバスと、上記第２のコントロールバスとに接続されたＲＡＭメモリを有する。このメモリデバイスは更に、第３のアドレス／データバスと第３のコントロールバスとに接続された不揮発性ＮＡＮＤメモリを有する。このコントローラは、第１のアドレスバスに供給されるアドレス信号に応答することによりＮＯＲメモリが、第１のアドレスバスに供給される第１のアドレスレンジに応答し、これによりＲＡＭメモリが、第１のアドレスバスに供給される第２のアドレスレンジに応答し、更にこれによりＮＡＮＤメモリが、第１のアドレスバスに供給される第３のアドレスレンジに応答する。
【００８２】
本発明の更に別の態様では、メモリデバイスは、汎用メモリデバイスであり、ここでユーザがメモリ空間の割り当てを定義することができる。メモリデバイスは、ＲＡＭアドレス信号を受信する第１のアドレスバスと、ＲＡＭデータ信号を受信する第１のデータバスと、ＲＡＭ制御信号を受信する第１のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは、組み込みのＮＯＲメモリを有し、更に、揮発性ＲＡＭメモリとインターフェースをとる第２のアドレスバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のデータバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のコントロールバスとを有する。このコントローラは更に、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のアドレス／データバスと、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のコントロールバスとを有する。このメモリデバイスは更に、上記第２のアドレスバスと、上記第２のデータバスと、上記第２のコントロールバスとに接続されたＲＡＭメモリを有する。このメモリデバイスは更に、第３のアドレス／データバスと第３のコントロールバスとに接続された不揮発性ＮＡＮＤメモリを有する。このメモリデバイスは、ユーザ定義のメモリ空間の割り当てに応答し、第１のアドレスバスに供給される第１のアドレスレンジでは、メモリデバイスは、ＮＯＲプロトコルコマンドへの応答を含むＮＯＲメモリの動作に応答し、第１のアドレスバスに供給される第２のアドレスレンジでは、メモリデバイスはＲＡＭ動作に応答し、アドレスバスに供給される第３のアドレスレンジでは、メモリデバイスはＡＴＡディスクドライブ装置として動作するＮＡＮＤメモリの動作に応答し、ここで、第１、第２及び第３のアドレスレンジは全てユーザが定義することができる。
【００８３】
本発明の更に別の態様では、メモリデバイスは、ＲＡＭアドレス信号を受信する第１のアドレスバスと、ＲＡＭデータ信号を受信する第１のデータバスと、ＲＡＭ制御信号を受信する第１のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは更に、揮発性ＲＡＭメモリとインターフェースをとる第２のアドレスバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のデータバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のコントロールバスとを有する。このコントローラは更に、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のアドレス／データバスと、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のコントロールバスとを有する。このメモリデバイスは更に、上記第２のアドレスバスと、上記第２のデータバスと、上記第２のコントロールバスとに接続されたＲＡＭメモリを有する。このメモリデバイスは更に、第３のアドレス／データバスと第３のコントロールバスとに接続された不揮発性ＮＡＮＤメモリを有する。コントローラは更に、第１のアドレスバス上の第１のアドレスを受信して、第１のアドレスを不揮発性ＮＡＮＤメモリ内の第２のアドレスにマップし、揮発性ＲＡＭメモリが不揮発性ＮＡＮＤメモリ内の第２のアドレスとやりとりするデータ用のキャッシュとして役立つ手段と、キャッシュとして揮発性ＲＡＭメモリに格納されたデータと不揮発性ＮＡＮＤメモリの第２のアドレスにあるデータとの間のデータの一貫性を保持する手段とを有する。更に、揮発性ＲＡＭメモリに格納されたデータと不揮発性ＮＡＮＤメモリに格納されたデータとの間のデータの一貫性を保持する手段は、ハードウェアベース、又はソフトウェアベースとすることができる。最後に、第１のアドレスバス上のアドレスを不揮発性ＮＡＮＤメモリ内の第２のアドレス上のアドレスにマップする手段もまたハードウェアベース、又はソフトウェアベースとすることができる。
【００８４】
本発明の更に別の態様では、メモリデバイスは、ＮＯＲアドレス信号を受信する第１のアドレスバスと、ＮＯＲデータ信号及びデータプロトコルコマンドを受信する第１のデータバスと、ＮＯＲ制御信号を受信する第１のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは更に、揮発性ＲＡＭメモリとインターフェースをとる第２のアドレスバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のデータバスと、揮発性ＲＡＭメモリとインターフェースをとる第２のコントロールバスとを有する。このコントローラは更に、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のアドレス／データバスと、不揮発性ＮＡＮＤメモリとインターフェースをとる第３のコントロールバスとを有する。このメモリデバイスは更に、上記第２のアドレスバスと、上記第２のデータバスと、上記第２のコントロールバスとに接続されたＲＡＭメモリを有する。このメモリデバイスは更に、第３のアドレス／データバスと第３のコントロールバスとに接続された不揮発性ＮＡＮＤメモリを有する。このコントローラは更に、ＲＡＭメモリを作動して、ＮＯＲプロトコルコマンドを含むＮＯＲメモリデバイスの動作をエミュレートする。
【図面の簡単な説明】
【００８５】
【図１】単一のホストシステム又はユーザに接続された、メモリコントローラを含むメモリデバイスの第１の実施形態のブロックレベル図である。
【図２】メモリデバイスの外部にある単一のホスト又はユーザによって参照されるアドレス空間の、図１に示すメモリデバイスの第１の実施形態におけるＮＯＲメモリ、ＲＡＭメモリ、及びＮＡＮＤメモリへのマッピングを示すメモリマッピング図である。
【図３】メモリデバイスに使用されるコントローラの詳細なブロックレベルの回路図である。
【図４】単一のホストシステム又はユーザに接続された、メモリコントローラを含むメモリデバイスの第２の実施形態のブロックレベル図である。
【図５】メモリデバイスの外部にある単一のホスト又はユーザによって参照されるアドレス空間の、図４に示すメモリデバイスの第２の実施形態のＮＯＲメモリ、ＲＡＭメモリ、及びＮＡＮＤメモリへのマッピングを示すメモリマッピング図である。
【図６】複数の要求バスを備えて単一のバスを介して複数のホストシステム又はユーザに接続された、本発明のメモリコントローラを含む本発明のメモリデバイスの第３の実施形態のブロックレベル図である。
【図７】複数のバスを介して複数のホストシステム又はユーザに接続された、本発明のメモリコントローラを含む本発明のメモリデバイスの第４の実施形態のブロックレベル図である。
【図８】複数のバスを介して複数のホストシステム又はユーザに接続された、本発明のメモリコントローラを含む本発明のメモリデバイスの第５の実施形態のブロックレベル図である。
【図９】複数のバスを介して複数のホストシステム又はユーザに接続された、本発明のメモリコントローラを含む本発明のメモリデバイスの第６の実施形態のブロックレベル図である。
【符号の説明】
【００８６】
１０  メモリデバイス
１２  メモリコントローラ
１４  ＮＡＮＤメモリ
１６  ＲＡＭメモリ
２０  ホストデバイス
【図１】
2007183962.tif 000003
【図２】
2007183962.tif 000004
【図３】
2007183962.tif 000005
【図４】
2007183962.tif 000006
【図５】
2007183962.tif 000007
【図６】
2007183962.tif 000008
【図７】
2007183962.tif 000009
【図８】
2007183962.tif 000010
【図９】
2007183962.tif 000011
【外国語明細書】
2007183962.tif 000012
2007183962.tif 000013
2007183962.tif 000014
2007183962.tif 000015
2007183962.tif 000016
2007183962.tif 000017
2007183962.tif 000018
2007183962.tif 000019
2007183962.tif 000020
2007183962.tif 000021
2007183962.tif 000022
2007183962.tif 000023
2007183962.tif 000024
2007183962.tif 000025
2007183962.tif 000026
2007183962.tif 000027
2007183962.tif 000028
2007183962.tif 000029
2007183962.tif 000030
2007183962.tif 000031
2007183962.tif 000032
2007183962.tif 000033
2007183962.tif 000034
2007183962.tif 000035
2007183962.tif 000036
2007183962.tif 000037
2007183962.tif 000038
2007183962.tif 000039
2007183962.tif 000040
2007183962.tif 000041
2007183962.tif 000042
2007183962.tif 000043
2007183962.tif 000044
2007183962.tif 000045
2007183962.tif 000046
2007183962.tif 000047
2007183962.tif 000048
2007183962.tif 000049
2007183962.tif 000050
2007183962.tif 000051
2007183962.tif 000052
2007183962.tif 000053
2007183962.tif 000054
2007183962.tif 000055
2007183962.tif 000056
2007183962.tif 000057
2007183962.tif 000058
2007183962.tif 000059
2007183962.tif 000060
2007183962.tif 000061
2007183962.tif 000062
2007183962.tif 000063