説明

ハードディスクドライブキャッシュメモリ及び再生デバイス

【課題】バッテリ電源を節約する改善されたデバイスを提供する。
【解決手段】コンピュータシステムにおいて、メインメモリの代わり或いはBIOS NORメモリの代わりに、コントローラ及びNANDメモリを用いたNORエミュレーティングデバイスを用いることが可能である。従って、エミュレーティングデバイスは、ブート可能メモリとして機能することができる。加えて、デバイスは、ハードディスクドライに対するキャッシュとして機能することができる。更に、MP3プレーヤコントローラをデバイスに加えることで、デバイスは、PCが電源オフ又は休止状態である間もスタンドアロンのオーディオ再生デバイスとして機能することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2005年12月28日に出願された米国仮出願60/754,937の優先権を主張し、本開示は引用により全体が本明細書に組み込まれる。
【0002】
本発明は、メモリデバイスに関し、より詳細には、PCなどのパーソナルコンピュータにおけるディスクドライブのキャッシュメモリとして使用され、PCが休止モード又はオフモード状態の間でも音楽又はビデオの再生用の再生デバイスとしても機能することができるメモリデバイスに関する。
【背景技術】
【0003】
SRAM、又はDRAM(或いはDRAM)、又はPSRAM(以下まとめてRAMと呼ぶ)のような揮発性のランダムアクセスメモリは、当技術分野では公知である。典型的には、これらのタイプの揮発性メモリは、アドレスバス上のアドレス信号、データバス上のデータ信号、及びコントロールバス上の制御信号を受信する。
【0004】
パラレルNOR型不揮発性メモリもまた当技術分野で公知である。典型的には、これは、RAMに供給されるものと同じタイプのアドレスバス上のアドレス信号、RAMに供給されるものと同じタイプのデータバス上のデータ信号、及びRAMに供給されるものと同じタイプのコントロールバス上の制御信号を受信する。RAMと同様に、NORメモリはランダムアクセスメモリデバイスである。しかしながら、NORメモリは、RAMには必要ではないSECTOR ERASE又はBLOCK ERASEのような一定の動作を必要とするため、コマンドの性質を有する動作が、一連の一定のデータパターンとしてNORデバイスに与えられる。これは、NORプロトコルコマンドとして知られている。先行技術では、2つのタイプのNORコマンドプロトコルがあり、1)Intelによって最初に公表されたプロトコルコマンドセットと互換性のあるプロトコルコマンド、及び2)AMDによって最初に公表されたプロトコルコマンドセットと互換性のあるプロトコルコマンドである。いずれの場合も、NORメモリは、RAMがインターフェースをとる同じアドレスバス、データバス、及びコントロールバスと電気的にインターフェースをとる。更に、従来のNORメモリデバイスはまた、SPI、LPC、又はファームウェアハブのような公知の従来の形式でデータ信号、アドレス信号、及び制御信号をシリアルに供給することもできる。
【0005】
NAND型不揮発性メモリもまた、当技術分野で公知である。しかしながら、パラレルNORデバイスと違い、NANDメモリは、ブロック内のセルが順次形式で格納されるランダムアクセス可能なブロックにデータを格納する。更に、アドレス信号及びデータ信号は、同じバス上で、ただし多重化方式で供給される。NANDメモリは、NORデバイスよりも高密度であるので、データの各ビットの格納コストが削減される利点を有する。
【0006】
NANDデバイスはデータのビット当たりのコストが低いので、NANDデバイスを利用してNORデバイスの動作をエミュレートする試みが行われてきた。OneNAND(Samsung Corporationの商標)と呼ばれるこうした1つのデバイスは、RAMメモリを利用してNANDメモリとの間でデータを一時的にバッファすることで、NORメモリの動作をエミュレートする。しかしながら、OneNANDデバイスには、2つの欠点があると考えられる。第1に、OneNANDをインターフェース接続するユーザ又はホストのデバイスは、データの一貫性を追跡する必要があると考えられる。データの一貫性においては、ユーザ又はホストがRAMに書き込みを行うため、RAMのデータは、RAMのデータが最初に読み出されたNAND内の位置にあるデータよりも新しい(従って異なる)可能性がある。従って、OneNANDデバイスにおいては、ユーザ又はホストは、データをRAMからNAND内の最終位置に書き戻してそのデータを格納し、或いはRAMのデータが新しいデータであることを覚えておくように動作する必要がある。OneNANDデバイスの欠点であると考えられる第2の問題は、OneNANDデバイスが自動でアドレスマッピングを行うことができないことである。OneNANDデバイスでは、データがOneNANDデバイスのRAM部分に書き込まれると、ホスト又はユーザは、RAM部分にあるデータをOneNANDデバイスのNAND部分にある最終位置に書き込むために、コマンド又は一連のコマンドを出す必要がある。同様に読み出し動作についても、ホスト又はユーザは、OneNANDのNAND部分にある特定の位置からの読み出しコマンドを送出し、そのデータをRAM部分にロードした後、該RAM部分からデータを読み出す必要がある。
【0007】
同様の欠陥を有すると考えられる別の先行技術のデバイスは、M SystemsのDiskOnChipデバイスである。DiskOnChipデバイスでは、限定量のRAMを備えたコントローラが、NANDメモリの動作を制御する。しかしながら、DiskOnChipデバイスのコントローラ部分は、NORメモリのようなオンボードの不揮発性ブート可能メモリを持たないと考えられる。
【0008】
NORメモリの動作をエミュレートするコントローラを備えたNANDメモリの利用を示す先行技術の公開は、2006年3月9日に公開された米国公開特許出願2006/0053246に示されている。この公報は、複数のプロセッサに接続されたコントローラを備えたNANDメモリの利用を示しているが、このNANDメモリは、ATA規格の動作により直接アクセスすることはできないと思われる。従って、このNANDメモリへの全てのアクセスは、外部からの非直接的なアクセスでコントローラにより行われる必要がある。
【0009】
コンピュータシステムは当該技術分野で公知である。詳細には、「IBM PC」規格に準拠したコンピュータシステムが当該技術分野で公知である。図6を参照すると、先行技術によるコンピュータシステム300が図示されている。コンピュータシステム300は、「IBM PC」アーキテクチャに準拠している。システム300は、通常、IntelCorporation製のPentiumマイクロプロセッサのようなプロセッサ314、Northbridge(ノースブリッジ)チップ316としても知られるメモリコントローラハブチップ316、及びSouthbridge(サウスブリッジ)チップ318としても知られるIOコントローラハブチップ318などの様々な構成要素が搭載されたマザーボード312を含む。Northbridge316及びSouthbridge318はチップセットとして知られ、IntelCorporationから入手することができる。最後に、マザーボード312は、バス350を介してSouthbridge318に接続された通常はNOR型不揮発性メモリであるBIOS320を含む。バス350はまた、ハードディスクドライブ(HDD)326、モデム328、USB又は他のポート327、スピーカ325、キーボード322、及びマウス324などのシステム300の他の構成要素に接続される。米国特許第6,330,635号を参照されたい。
【0010】
コンピュータシステム300の動作では、プロセッサ314は、BIOS320内に最初に格納されているコードから起動する。プロセッサ314がBIOS320から初期コードを実行すると、プロセッサ314はHDD326上に格納された別のコード/データを検索するようHDD326に信号を送信する。その後、オペレーションは次に進む。
【0011】
【特許文献1】仮出願60/754,937
【特許文献2】米国特許出願2006/0053246
【特許文献3】米国特許第6,427,186号
【特許文献4】米国特許第6,405,323号
【特許文献5】米国特許第6,141,251号
【特許文献6】米国特許第5,982,665号
【発明の開示】
【発明が解決しようとする課題】
【0012】
上述のことから分かるように、ドライブ326が起動されると、プロセッサ314及びシステム300全体が「オン」にならなければならない。ラップトップコンピュータ300のバッテリ時間は限られているので、バッテリ電源は節約されるのが望ましい。更に、このようなシステム300の性能を改善することが望ましい。従って、上述のことを満足することができる改善されたデバイスに対する必要性がある。
【課題を解決するための手段】
【0013】
本発明では、新規のメモリデバイスが開示される。本新規のメモリデバイスは、NANDフラッシュメモリを用いてNORメモリの機能をエミュレートする。更に、メモリデバイスは、PCシステムで利用され、揮発性DRAMを置き換え、又はブート可能BIOSメモリとして使用される。加えて、本メモリデバイスは、ハードディスクドライブに対するキャッシュとして機能することができる。更に、本メモリデバイスは、USBデバイス用ハブとして機能するので、メインプロセッサへの給電がオフの間でもハードディスクドライブとの間のデータ転送を制御することができる。更に、本メモリデバイスは、コントローラを有し、本コントローラがMP3再生などの他の機能(又はDSPなどの専用のプロセッサを用いてもよい)を実行することができる。従って、本メモリデバイスは、PCの電源がオフであるか、又は休止状態にある間でもスタンドアロンのオーディオ再生デバイスとして機能することができる。最後に、MP3プレーヤコントローラを有すると、メモリデバイスは、同様にPCがオフモード状態又は休止モード状態でもハードドライブ上に格納された別のオーディオデータにアクセスすることができる。
【発明を実施するための最良の形態】
【0014】
図1を参照すると、メモリデバイス10の第1の実施形態が示されている。メモリデバイス10は、メモリコントローラ12と、NANDメモリ14と、RAMメモリ16とを備える。メモリデバイス10は、第1のRAMアドレスバス22と、第1のRAMデータバス24と、ウェイト26、RST#28、並びにCE#、OE#、及びWE#30のような複数の制御信号とを介してホストデバイス20とインターフェース接続し、これらの全てはRAMバスの制御信号の当業者には公知である。以下において特に指定がない限り、ウェイト26、RST#28、並びにCE#、OE#及びWE#30上の制御信号の全ては、第1のRAMコントロールバス32と呼ぶ。第1のRAMアドレスバス22、第1のRAMデータバス24、及び第1のRAMコントロールバス32は、ホストデバイス20からメモリデバイス10のメモリコントローラ12に接続されている。更に、上述のように、メモリデバイス10とホストデバイス20との間のインターフェースは、データバス、アドレスバス、及びコントロールバスがホストデバイス20とメモリデバイス10との間でシリアルに接続されるシリアルバスを介するものとすることができる。かかるメモリデバイス10もまた、本発明の範囲内である。
【0015】
メモリコントローラ12は、第2のRAMアドレスバス(第1のRAMアドレスバス22と同様)と、第2のRAMデータバス(第1のRAMデータバス24と同様)と、第2のコントロールバス(第1のRAMコントロールバス32と同様)とを有し、これらの全てはまとめて、RAMメモリ16に接続された第2のRAMバス40として単に示される。メモリコントローラ12は更に、NANDメモリ14に接続されたNANDアドレス/データバス及びNANDコントロールバス(これらの全てはまとめてNANDバス42として示す)を有する。RAMメモリ16は、シングルチップ集積回路として、メモリコントローラ12に一体化又は組み込むことができる。或いは、RAMメモリ16は、メモリコントローラ12とは別個の集積回路とすることができる。或いは、RAMメモリ16の一部をメモリコントローラ12と統合することができ、RAMメモリ16の一部をメモリコントローラ12から分離することができる。RAMメモリ16が別個のダイであることの利点は以下に説明する。しかしながら、RAMメモリ16がメモリコントローラ12と一体化される利点は、RAMメモリ16の動作がより速くなることができることである。
【0016】
一実施形態では、メモリコントローラ12は、単一の集積回路ダイである。コントローラはまた、第1のNORメモリ44と、第2のNORメモリ62と、SRAMメモリ46と、SDRAMコントローラ48(RAM16がSDRAMタイプのRAMメモリであって、メモリコントローラ12の外部にある場合に、RAM16の動作を制御する)とを有し、これらはメモリコントローラの集積回路ダイ内に組み込まれている。勿論、第1のNORメモリ44と第2のNORメモリ62とは、同じ物理NORメモリの一部とすることができる。メモリコントローラ12のある実施形態の詳細なブロックレベルの図を図3に示す。本明細書で使用する「NORメモリ」とは、ランダムアクセス不揮発性メモリのあらゆるタイプを意味する。NORメモリは、限定ではないが、フローティングゲート型メモリ、ROM、又は捕獲材料などを用いたセルを含む。更に、本明細書で使用する「NANDメモリ」は、不良セルを含む可能性のあるあらゆるタイプのシリアルアクセス不揮発性メモリを意味する。
【0017】
一実施形態では、メモリコントローラ12、RAMメモリ16、及びNANDメモリ14の各々が、単一の集積回路ダイで形成され、共にMCP(マルチチップパッケージ)にパッケージ化される。かかる構成の利点は、大量(又は少量)のメモリを必要とするユーザ又はホスト20に対して、容易に利用可能なNANDメモリ14のダイを単に変更することによって、或いはスピードが1つの要因である場合には、容易に利用可能なRAMメモリ16を変更することによってメモリ量を変更可能なことである。従って、メモリコントローラ12と、RAMメモリ16と、NANDメモリ14とを別個のダイ内に備えることは、様々なサイズのメモリデバイス10及び速度又はパフォーマンスを容易に製造することができることを意味する。
【0018】
勿論、メモリコントローラ12と、RAMメモリ16と、NANDメモリ14とは、単一の集積回路ダイに形成してもよい。メモリコントローラ12と、RAMメモリ16と、NANDメモリ14とが、単一の集積回路ダイで形成される場合には、追加して外部に設けられるNANDメモリをメモリデバイス10に取り付けて、メモリデバイス10のメモリ容量を拡張することができるように、外部NANDバス42を設ける準備を行うことができる。
【0019】
図2を参照すると、ホストデバイス20により参照され、図1に示したメモリデバイス10の第1の実施形態においてマップされるアドレスのマッピングを示すメモリマップが示されている。ホストデバイス20によって参照されるメモリマップは、2つの一般的なセクション、すなわちランダムアクセスとマスストレージアクセスとを有する。ランダムアクセスセクションは、下位のメモリアドレス位置を占める(必要条件ではない)。ランダムアクセスセクション内では、最下位のメモリアドレスは、NORメモリアクセス部分50のメモリアドレスであり、これに続いて擬似NOR(PNOR)メモリアクセス部分52、次いでRAMアクセス部分54、次いで構成アクセス部分56がある。これらの部分の各々を以下に説明する。
【0020】
ホストデバイス20により参照されるNORメモリアクセス部分50は、ホスト20がこの部分50で動作する場合には、その結果は物理NORメモリ44上の動作であるものである。従って、メモリ部分50の物理NORメモリ44へのマッピングは、1対1である。言い換えれば、NOR部分50に割り当てられるメモリ空間の量は、メモリデバイス10で利用可能なNORメモリ44の量によって決まる。一実施形態では、メモリコントローラ12に組み込まれるNORメモリ44の量は、2Kワードのセクタサイズ及び32Kのワードブロックサイズを備えた4メガビットである。更に、ホストデバイス20が(read/write/eraseなどのコマンドを送出するときのように)NOR部分50で動作していると考えると、結果として得られる動作は、NORメモリ44上に直接的なものとなる。このNOR部分50は、待ち時間なしのランダムアクセスを要求する高性能の重要なコード/データを格納しようとするホストデバイス20が利用することができる。更に、プログラムがNORメモリ44に格納される場合、プログラムは、NORメモリ44内の所定位置で実行することができる。このようにNORメモリ44は、ホストデバイス20を「ブートする」プログラム又はコードを格納することができる。
【0021】
ホストデバイス20によって参照されるPNOR部分52は、ホスト20がこの部分52で動作するときに、ホスト20は不揮発性のRAMメモリ16上で動作していると考えるものである。従って、ホストデバイス20に関しては、NORプロトコルのコマンドを送出することなく、PNOR部分52に格納されたデータを除く他のあらゆるRAMメモリ16が不揮発性であるようにPNOR部分52上で動作することができる。一実施形態では、PNOR部分52は、NANDメモリと同様にページに分割され、各ページは、8Kバイト、2Kバイト、又は512バイトのいずれかである。動作中、ホストデバイス20がメモリデバイス10とインターフェースをとると、ホストデバイスはRAMメモリ16とインターフェースをとり、メモリコントローラ12がNANDメモリ14とのやりとりのデータを「バックアップ」してRAMメモリ16とNANDメモリ14との間のデータの一貫性を維持し、更に、メモリコントローラ12は、ホストデバイス20によって供給されたアドレスをNANDメモリ14内の実際のデータのアドレスにマップする。実際のRAMメモリ16よりも大量のNANDメモリ14が利用可能であるので、PNOR部分52は、RAMメモリ16で利用可能な実際のメモリ量よりも遙かに大きいメモリ空間とすることができる。
【0022】
更にPNOR部分52は、4つの領域に分割することができ、各々がRAMメモリ16中のゾーンに、すなわちゾーン0、ゾーン1、ゾーン2、及びゾーン3にマップされる。各ゾーンは、様々な程度のマッピングを有することができる。PNOR部分52の領域からRAMメモリ16のゾーンへのマッピングが1対1である場合、これは「静的ページングモード」と呼ばれる。PNOR部分52の領域からRAMメモリ16のゾーンへのマッピングが多対1である場合には、これは「動的ページングモード」と呼ばれる。静的ページングモードのマッピングは、PNOR部分52のメモリ空間の量(例えば256ページ(或いは2Kバイトのページの場合は512Kバイト))が常にRAM16の同じ量のメモリ空間(例えば256ページ(又は512Kバイト))にマップされ、次いでこれがNANDメモリ14の256ページ(又は512Kバイト)にマップされるので、最小の待ち時間となる。この場合、RAMメモリ16もまたランダムアクセスであるので、動作中のアクセスの待ち時間はないが、NANDメモリ14とRAMメモリ16との間のやりとりの最初のロード及び格納での待ち時間がある。動的ページングモードのマッピングでは、例えば、PNOR部分52のメモリ空間の40,000ページのマッピングでは、RAMメモリ16の512ページへマップされ、次いでNANDメモリ14の40,000ページにマップされ、多大な待ち時間が発生することになる。この待ち時間は、NANDメモリ14からRAM16へデータ/プログラムを最初にロードする際と、キャッシュミスがある場合にデータ/プログラムを最初にNANDメモリ14からRAM16へロードすることが必要な場合がある、PNOR部分52からデータ/プログラムを読出す動作中とで発生することになる。従って、PNOR部分52に関する待ち時間は、構成されるゾーンの大きさによって異なる。RAMメモリ16の各ゾーンの境界、ひいてはPNOR部分52の各領域からRAMメモリ16にマップするメモリ空間の量は、ホストデバイス20又はユーザが設定することができる。従って、ホストデバイス20は、プログラム又はタイムクリティカルなデータを格納する/読出す静的ページングモードか、或いはプログラム又はタイムクリティカルでないデータを格納/読出し、その結果キャッシュミスがある場合に待ち時間がある動的ページングモードのいずれかで動作するように4つのゾーンを構成することができる。
【0023】
ゾーンが静的ページングモードに構成されている場合、PNOR部分52の同じ量のメモリ空間が常にRAMメモリ16の同じ量の空間にマップされるので、データ読み出しの一貫性は問題ではない。しかしながら、データ書き込みの一貫性は依然として行う必要がある。一方、ゾーンが動的ページングモードに構成されている場合、データの一貫性がもたらされなければならない。ホストデバイス20は、2つのキャッシュ一貫性モードのうちの1つで動作するようにゾーンを構成することができる。第1のモードで、ホストデバイス20はキャッシュ一貫性モードを開始する。このモードでは、ホストデバイス20は、ホストデバイス20に必要とされる限り、RAMメモリ16内のキャッシュ動作をフラッシュする。第2のモードでは、RAMメモリ16とNANDメモリ14との間のデータの一貫性を維持するために、メモリコントローラ12に必要とされる限り、RAMメモリ16内のキャッシュ動作をフラッシュすることにより、メモリコントローラ12がキャッシュ一貫性モードを開始する。
【0024】
PNOR部分52のメモリ空間の量及びRAMメモリ16へのこのマッピングがユーザにより設定されると、RAMメモリ16にある利用可能なメモリ空間の残りは、RAMメモリアクセス部分に利用することができる。ホストデバイス20によって参照されるRAMメモリアクセス部分54は、ホスト20がこの部分54で動作するときに、その結果が物理RAMメモリ16上の動作となるものである。従って、メモリ部分54から物理RAMメモリ16へのマッピングは1対1である。更に、RAM部分54に割り当てられるメモリ空間の量は、メモリデバイス10で利用可能なRAMメモリ16の総量と、PNORメモリ52のメモリ空間部分のRAMメモリ16へのマッピングの程度とによって決まる。ホストが、RAM部分54で動作している(読み出し/書き込みなどのコマンドを出しているなど)と考えると、結果として生じる動作は、RAMメモリ16上に直接的なものとなる。このRAM部分54は、メモリ空間をバッファ区域として利用しようとするホストデバイス20が利用することができる。各ゾーンにおけるPNOR部分52のメモリ空間のRAMメモリ16へのマッピングは、ユーザが設定することが可能であり、RAMメモリ16の総量は既知であるので、PNOR部分52とRAM部分54との間の境界は、間接的にユーザによって設定される。従って、大量のバッファを有することが望ましい場合、ゾーンの1つ又はそれ以上においてPNOR部分52とRAMメモリ16との間のマッピングを縮小することにより、大量のRAM部分54を割り当てることができる。その上、PNOR部分52とRAM部分54との間の境界は、メモリコントローラ12をリセットして、PNOR部分52のメモリ空間とRAMメモリ16との間のマッピングを各ゾーンにおいて再構築することにより、メモリデバイス10の動作中に変更することができる。
【0025】
RAMメモリ16のゾーンの各々のメモリマップの境界及びPNOR部分52のメモリ空間のサイズは、メモリコントローラ12にある不揮発性の構成レジスタ60に事前に割り当てて格納することができる。構成レジスタ60へのアクセスは、構成アクセス部分56を介する。不揮発性の構成レジスタ60は、組み込みNORメモリ62の一部とすることができる。或いは、RAMメモリ16のゾーンの各々のメモリマップの境界及びPNOR部分52のメモリ空間のサイズは、ユーザが1つ又は複数のチップ選択ピンを介して選択することができる。この場合、メモリコントローラ12の電源が入ると、様々なメモリの境界をリセットすることができる。NORメモリ62はまた、メモリコントローラ12及びMCU64のブート中及び動作中に、メモリコントローラ12が実行するのに使用されるファームウェアコード61を格納することもできる。
【0026】
最後に、マスストレージアクセスセクション58では、ホストデバイス20がメモリ空間のそのセクションにアクセスすると、ホストデバイス20は、ATAディスクドライブにアクセスしていると考える。メモリコントローラ12は、公知のフラッシュファイルシステム(FFS)プロトコルを使用して、論理ATAディスクドライブ空間のアドレスをNANDメモリ14の物理空間のアドレスに変換する。一実施形態では、読み出し動作に関して、マスストレージアクセスセクション58の最初の部分は、ATAタスクファイルレジスタ79にロードされる16バイトの論理アドレスからなる。メモリコントローラ12は、16バイトのタスクコマンド及び論理アドレスをデコードし、NANDメモリ14内の特定の「ページ」にアクセスするためにこれを物理アドレスに変換する。NANDメモリ14のページから512バイトのページが読み出され、次いでデータレジスタ81にロードされ、ここでホストデバイス20により順次的に又はランダムにアクセスされる。書き込み動作に関しては、逆のことが起こる。512バイトのデータが格納されることになる論理アドレスが、最初にタスクファイルレジスタ79にロードされる。書き込みコマンドが、タスクファイルレジスタ79に書き込まれる。メモリコントローラ12は、タスクファイルレジスタ内のこのコマンドを書き込みコマンドとしてデコードし、これを物理アドレスに変換してNANDメモリ14の特定のページにアクセスし、更に、その位置にデータレジスタ81内の512バイトを格納する。別の実施形態では、いわゆるピンポン構成において2つのデータレジスタ81(a&b)(図示せず)が存在する場合がある。この場合、データレジスタ81aの一方は、データを予めNANDメモリ14の1ページからロードして、512バイトのデータをホストデバイス20に供給するように使用され、他方のデータレジスタ81bは、NANDメモリ14の別のページからデータレジスタ81bにデータをロードして、データレジスタ81aからのデータが完全に読み出された後、データをホストデバイス20に供給するように使用される。この方法では、NANDメモリ14からデータのページの多くに渡って連続的な読み出し動作を行うことができる。また、データレジスタ81(a&b)は、書き込み動作においてピンポン式に用いることも可能であり、セットアップの待ち時間がほとんど又は全くなく、データの多くの連続したページをNANDメモリ14に書き込むことが可能になる。
【0027】
前述のように、メモリデバイス10とホストデバイス20との間のインターフェースは、シリアルバスを介することができる。詳細には、かかるシリアルバスは、メモリデバイス10のRAM部分をホストデバイス20と接続する従来のパラレルバスを用いて、メモリデバイス10のNOR又はPNOR区域をホストデバイス20と接続することができる。
【0028】
図3を参照すると、RAMメモリ16及びNANDメモリ14とインターフェースをとるメモリコントローラ12の詳細なブロックレベルの図が示されている。メモリコントローラ12はマイクロコントローラ64を含む。マイクロコントローラ64は、FFSのあらゆるブックキーピング機能を行い又は実行する。その上、マイクロコントローラは、欠陥管理(DM)及びキャッシュデータ一貫性アルゴリズム、並びにキャッシュフラッシュ置換アルゴリズムを行い又は実行する。最後に、マイクロコントローラ64は、キャッシュページングスキームアルゴリズムを行い又は実行する。これらの動作の全ては、メモリコントローラ12のブート操作又は初期設定を含み、NORメモリ62内に格納されたファームウェア又はプログラムコード61によって達成される。
【0029】
マイクロコントローラ64は、上述のようにマイクロコントローラ64によって実行されるファームウェア61も格納する第2のNORメモリ62に接続されている。不揮発性の構成レジスタ60を格納することに加えて、NORメモリ62はまた、FFS及びDMの動作用のファームウェアを格納する。
【0030】
またマイクロコントローラ64は、MUX74を介してSRAMメモリ46とインターフェースをとる。SRAMメモリ46は、ランタイムデータを格納するためのマイクロコントローラ64用ローカル高速バッファとして機能する。その上、SRAMメモリ46は、欠陥マップキャッシュとFFSデータ構造とを格納することができる。
【0031】
メモリコントローラ12の詳細な説明をハードウェア構成要素に関して記載するが、以下に記載する機能の全ては、マイクロコントローラ64で実行するためにソフトウェアに実装することもできる。
【0032】
メモリコントローラ12は、内容参照可能メモリの性質で実装することができるカレントキャッシュのページアドレスレジスタ66を含む。CAM66の機能は、現在のPNORキャッシュのページアドレスを保持すること、及びPNOR部分52に対する読み出し又は書き込み動作中にアクセスミスがあるときにCAM66を更新することである。CAM66内の各エントリは、3つの部分、すなわちページアドレス部分66a、インデックスアドレス部分66b、及びステータス部分66cを有する。メモリコントローラ及びCAMメモリ66の動作に関する説明は、以下の実施例に関するものであるが、本発明は、以下の実施例に限定されないことを理解されたい。ホストデバイス20からのアドレスは、21の最上位ビット(ビット11〜31)と、11の最下位ビット(ビット0〜10)とからなる32ビットと仮定する。21の最上位ビットはページアドレスを含み、11の最下位ビットはオフセットアドレスを含む。またCAMメモリ66の各エントリは、21ビットからなるページアドレス部分66aと、9ビットからなるインデックスアドレス部分66bと、12ビットからなるステータス部分とを含み、このステータス部分は有効(又は無効)の1ビット、ダーティ(又はクリーン)の1ビット、静的(又は動的)の1ビット、ホスト主導のキャッシュ一貫性(又はコントローラ主導)の1ビット、及び最終アクセスタイムスタンプ用の8ビットからなる。ホストデバイス20からの32ビットでは、ホストデバイスは、232バイトすなわち1GBの量のメモリ空間をアドレス指定することができる。以下に説明するように、メモリコントローラ12は、ホストデバイス20からのオフセットアドレスによる11ビットに加えて、CAMメモリ66からの9ビットのインデックスアドレス部分を使用して、20ビットのアドレスを形成することで、RAM16に対する1MBのアドレス指定を可能にする。勿論、これらの数字は例証に過ぎず、本発明を限定するものではない。
【0033】
メモリコントローラ12はまた、ヒット/ミス比較論理68を含む。ヒット/ミス比較論理68は、アドレスバス22からアドレス信号を受信し、コントロールバス32から制御信号を受信する。次いで、ヒット/ミス比較論理68は、ホストデバイス20からのアドレスの32ビットからページアドレスの21ビットをCAMメモリ66に送信する。CAMメモリ66は、これら21ビットのページアドレスをCAMメモリ66の各エントリに格納されたページアドレス66aと比較する。ヒットがある場合、すなわちホストデバイス20からのページアドレスの21ビットがCAMメモリ66のエントリの1つと一致する場合、CAMメモリ66は、インデックスアドレス66bの関連する9ビットをMUX70に出力する。ミスがある場合、ヒット/ミス比較論理68が、読み出しミス信号又は書き込みミス信号を生成する。読み出しミス信号及び書き込みミス信号は、マイクロコードコントローラ(MCC)/エラーコード訂正(ECC)ユニット72がデータ一貫性を実行する信号としてMCC/ECCユニット72に供給される。MCC/ECCユニット72に供給される信号は、RAMメモリ16に格納されたカレントページアドレスの1つが、アドレスバス22上に供給されたホストデバイス20からのアドレスであることを示すヒットであるか、或いは、RAMメモリ16に格納されたカレントページアドレスのいずれもが、アドレスバス22上に供給されたホストデバイス20からのアドレスではないことを示すミスである。最後に、ヒット/ミス比較論理68はまた、ウェイト状態信号26に接続される。ウェイト状態信号26は、メモリコントローラ12がバスサイクル動作を保持したいことをホストデバイス20に知らせたいと望むときに生成される。ウェイト状態信号26は、ディアサートされるとバス22/24/32を解放し、ホストデバイス20が動作を再開できるようになる。ウェイト状態信号26がメモリコントローラ12によってアサートされる一実施例は、読み出し/書き込みミスが存在し、メモリコントローラ12がNANDメモリ14のアドレスからデータを読出し、これをRAMメモリ16にロードする必要がある場合である。データがNANDメモリ14から読出されて、RAMメモリ16にロードされる時間の間、ウェイト状態信号26は、メモリコントローラ12によりアサートされる。
【0034】
またメモリコントローラ12は、マイクロコントローラ64の制御下で動作するMCC/ECCユニット72を含む。MCC/ECCユニット72は、キャッシュデータの一貫性、フラッシュ置換、及びページングの動作のために読み出しミス/書き込みミス信号を監視する。その上、マイクロコントローラ64の制御下で、MCC/ECCユニット72は、NANDメモリ14を操作し、NANDメモリ14の欠陥管理動作を与える。更に、マイクロコントローラ64の制御下で、MCC/ECCユニット72は、NANDメモリ14と、RAMメモリ16と、SRAMメモリ46との間でデータを移動させるようにDMA機能を提供する。最後に、MCC/ECCユニット72は、NANDメモリ14に格納されたデータについてエラー検出及び訂正を行う。
【0035】
メモリコントローラ12はまた、セキュリティ及びデジタル権利管理を提供する暗号エンジン90を含む。その上、メモリコントローラ12は、RAMメモリ16の量を増強するのに利用するため、追加のRAMメモリ92をコントローラに組み込み、すなわち同じ集積回路ダイ上に形成することができる。上記のように、RAMメモリ16は、別個の集積回路ダイとすることができ、この場合メモリコントローラ12に組み込まれたRAMメモリ92がRAMメモリ16を増強する。しかしながら、RAMメモリ16とメモリコントローラ12とが同じダイに一体化されている場合、RAMメモリ16及びRAMメモリ92は共に、同じメモリアレイの一部とすることができる。
【0036】
次に、様々な動作モードに関してメモリデバイス10を説明する。パワーアップ中、ヒット/ミス比較論理68は、ウェイト信号を生成して、ウェイト状態信号26をアサートする。メモリコントローラ12は、不揮発性レジスタ60から構成パラメータを読み出し、これを揮発性レジスタ46(SRAM46の一部とすることができる)にロードする。静的ページ、すなわちPNOR部分52に静的にマップされるNANDメモリ14からのデータもまた、NANDメモリ14から読み出され、RAMメモリ16内に格納される。これは、MCC/ECC72を介してマイクロコントローラ64により行われ、FFSプロトコルを実行してNANDメモリ14からのページのアドレスを変換し、更にNANDメモリ14への物理アドレス及び制御信号を生成してデータをそこから引き出し、これをRAMメモリ16に格納する。パワーアップ中、MCU64及びMCC/ECC72もまた、NANDメモリ14をスキャンしマスタインデックステーブルを探索する。マスタインデックステーブルは、読み出されてローカルSRAMメモリ46に格納される。MCU64は、マスタインデックステーブルのデータ構造の完全性を調べる。MCU64及びMCC/ECC72はまた、NANDメモリ14をスキャンし、マスタインデックステーブルの再構築が必要であるかどうかを判断する。MCU64及びMCC/ECC72はまた、NANDメモリ14から2ページのデータをローカルSRAMメモリ64に取り込む。Vpageと呼ばれるNANDメモリ14からの最初の2ページのデータは、ホストデバイス20の論理アドレスをNANDメモリ14の物理アドレスにマップするためのデータを含み、NANDメモリ14の欠陥セクタをスキップする能力を備えている。次にFFSは、マッピング変換要求を受け入れる準備が整う。次にヒット/ミス比較論理68が、ウェイト状態信号26をディアサートし、すなわちウェイト状態信号26を解除する。
【0037】
パワーアップ中、メモリコントローラ12が、NANDメモリからの静的ページの引き出し、及びこれらのRAMメモリ16への格納、並びにNANDメモリ14のマスタインデックステーブルの更新といった他のオーバーヘッド機能を実施している間、メモリデバイス10は、ホストデバイス20によって更に利用可能である点に留意されたい。詳細には、ウェイト状態信号26のアサーションは、メモリ空間のPNOR部分52に対する要求をアドレス指定するのに向けた動作にのみ影響を与えるので、NORメモリ44は、パワーアップ中でもホストデバイス20がアクセスすることが可能である。
【0038】
NORメモリの動作
NORメモリ44の読み出し動作では、ホストデバイス20は、メモリ空間のNORメモリアクセス部分50内にあるアドレス信号をアドレスバス22上でメモリデバイス10に送信する。更に、ホストデバイス20によって適切な制御信号がコントロールバス32でメモリデバイス10に送信される。アドレス信号は、PNORメモリアクセス部分52以外の空間にあるので、ヒット/ミス比較論理68は起動されず、ウェイト状態信号26はアサートされない。アドレス信号及び制御信号は、NORメモリ44に供給され、そこで供給されたアドレスからのデータを読み出す。次いでデータは、データバスに沿ってMUX84に供給され、更にデータバス24に沿ってホストデバイス20へ出されることで読み出しサイクルを完了する。
【0039】
NORメモリ44の書き込み又はプログラム動作では、ホストデバイス20は、メモリ空間のNORメモリアクセス部分50内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって適切な制御信号がコントロールバス32でメモリデバイス10に送信される。アドレス信号は、PNORメモリアクセス部分52以外の空間にあるので、ヒット/ミス比較論理68は起動されず、ウェイト状態信号26はアサートされない。アドレス信号及び制御信号は、NORメモリ44に供給される。書き込まれ又はプログラムされるデータ及びプログラムコマンドは、ホストデバイス20からデータバス24に沿ってメモリコントローラ12に送信され、MUX84に入る。次いでMUX84から、データがNORメモリ44に送信され、そこでデータはアドレスバス22で供給されるアドレスでNORメモリ44内にプログラムされる。ホストデバイス20は、NORメモリ44をバイト単位でプログラムすることができるバイトプログラム動作を行うことができる。書き込み又はプログラムサイクルは、データがNORメモリ44に書き込まれると完了する。
【0040】
NORメモリ44のセクタ消去又はブロック消去などの消去動作では、ホストデバイス20は、メモリ空間のNORメモリアクセス部分50内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって適切な制御信号がコントロールバス32でメモリデバイス10に送信される。アドレス信号は、PNORメモリアクセス部分52以外の空間にあるので、ヒット/ミス比較論理68は起動されず、ウェイト状態信号26はアサートされない。アドレス信号及び制御信号は、NORメモリ44に供給される。消去コマンドプロトコルを表すデータ信号は、ホストデバイス20からデータバス24に沿ってメモリコントローラ12に送信され、MUX84に入る。次いでMUX84から、データがNORメモリ44に送信され、そこで該データはNORメモリ44によってデコードされ、次いで消去動作が実行される。NORメモリ44が消去サイクルを完了すると、消去サイクルは完了する。
【0041】
PNORメモリの動作−読み出し
PNORメモリの読み出し動作では、ホストデバイス20は、メモリ空間のPNORメモリアクセス部分52内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。読み出しヒットと読み出しミスの2つのことが起こりうる。
【0042】
読み出しヒットの場合、アドレスバス22に供給されたアドレス信号のページアドレス部分が、ヒット/ミス比較論理68によって受信され、CAM66内に格納されたRAMメモリ16内に現在あるアドレスと比較される。アドレスバス22に供給されたページアドレスが、CAM66内に格納されているページアドレス内に存在する場合、ヒットが存在する。ヒット/ミス論理68は、アドレス信号及び制御信号が次にRAMメモリ16へ向けられるようにMUX70を起動させ、CAMメモリ66からの関連するインデックスアドレス66bをホストデバイス20からのオフセットアドレスと連結して、RAMメモリ16をアドレス指定する。次いで、RAMメモリ16によるその下位アドレスから読み出されたデータは、MUX80に送信され、そこからMUX84に供給され(MUX80のデフォルト状態)、MUX84は、ヒット/ミス比較論理68により命令されて、データをデータバス24に沿ってホストデバイス20に送信することができるようにし、これによって読み出しサイクルを完了する(図示せず)。
【0043】
読み出しミスの場合、起こり得る幾つかのことがある。まず、キャッシュフラッシュのない読み出しミスと呼ばれるものがある。アドレスバス22からのアドレス信号のページアドレス部分をCAM66からのページアドレスレジスタ66aと比較した結果ミスとなる場合、すなわちアドレスバス22上のページアドレスが、RAMメモリ16に格納されたページのアドレス内にない場合には、ヒット/ミス比較論理68は、MCC/ECCユニット72に読み出しミス信号を送り、MCC/ECC72が読み出し一貫性サイクルを開始する。更に、ヒット/ミス比較論理68は、ウェイト状態信号26上に信号をアサートする。MCU64の制御下にあるMCC/ECCユニット72は、FFS動作を実行して、ホストデバイス20により供給されたアドレスをNANDメモリ14内の物理アドレスに変換する。次いで、MCC/ECCユニット72は、NANDメモリ14に対して適切なアドレス信号及び制御信号を生成し、更に、RAMメモリ16に対して適切なアドレス信号及び制御信号を生成する。
【0044】
アドレスバス22で特定されるアドレスからのデータを含むデータのページ全体は、NANDメモリ14から読み出され、MUX80を介してRAMメモリ16に転送され、そこでMCC/ECCユニット72により特定されたRAMメモリ16内の位置のページ全体に書き込まれ、MCC/ECCユニット72により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、CAM66のカレントページアドレスレジスタが更新され、カレント読み出しミスアドレス内にあるアドレスページのアドレスを追加する。ヒット/ミス比較論理68は、ウェイト状態信号26上の信号をディアサートする。更に、MCU64は、MUX80をデフォルト位置に切り替える。ヒット/ミス比較論理68は、インデックスアドレス66bをMUX70に送信し、そこでインデックスアドレスは、アドレスバス22からのオフセットアドレス部分と組み合わされ、RAMメモリ16をアドレス指定する。次いで、RAMメモリ16上での読み出し動作からのデータは、MUX80を介し、更にMUX84を介してホストデバイス20へのデータバス24に供給され、これによりサイクルを完了する。NANDメモリ14から読み出されたデータの量は、ページベースであるので、データのページ全体がRAMメモリ16内に格納される必要がある。キャッシュフラッシュのない読み出しミスのこのケースでは、RAMメモリ16のページ全体がNANDメモリ14からのデータを格納するのに利用可能であるか、或いはデータのページ全体が格納されることになるRAMメモリ16内の位置には(NANDメモリ14にあるデータと同様の)一貫性のあるデータが含まれていると仮定すると、NANDメモリ14から読み出されたデータのページ全体は、RAMメモリ16のある位置に格納することができる。キャッシュフラッシュとは、RAMメモリ16からNANDメモリ14へデータの書き込むことで、データ一貫性の問題のあるキャッシュ(RAMメモリ16)をフラッシュすることを意味する。
【0045】
読み出しミスの別の可能性のあるケースは、キャッシュフラッシュのある読み出しミスと呼ばれる。このケースでは、NANDメモリ14からのデータのページ全体は、NANDメモリ14内のデータよりも新しい、RAMメモリ16内のあるデータを上書きすることなく、RAMメモリ16に格納する可能性がある。これは、データ一貫性の問題を生じる。従って、RAMメモリ16内のデータのページは、最初にNANDメモリ14に書き込む必要があり、その後で、異なる位置のNANDメモリ14からのデータをRAMメモリ16に読み込むことができる。一連の動作は以下の通りである。ホストデバイス20によるアドレスバス22からのアドレス信号のページアドレス部分をCAM66からのページアドレス信号66aと比較して、アドレスバス22からのアドレス信号が、カレントページアドレスのいずれかの中にあるかどうかを判断する。この比較はミスとなり、ヒット/ミス比較論理68がMCC/ECCユニット72に対して読み出しミス信号を送信し、MCC/ECCユニット72が読み出し一貫性サイクルを開始する。更に、ヒット/ミス比較論理68は、ウェイト状態信号26上の信号をアサートする。NANDメモリ14からのデータがRAMメモリ16に読み込まれる場合にはデータ一貫性の問題が生じるので、MCU64の制御下のMCC/ECCユニット72は、最初にRAMメモリ16内のデータのページをNANDメモリ16に書き込む必要があると判断する。MCU64は、FFS動作を実行し、RAMメモリ16からのアドレスをNANDメモリ14のアドレスに変換する。
【0046】
データのページ全体が、RAMメモリ16から読み出され、MUX8−を通ってNANDメモリ14に供給され、そこでNANDメモリ14に格納される。その後、ホストデバイス20からのアドレスは、MCU64によってFFS動作で物理NANDアドレスに変換される。次に、MCC/ECCユニット72は、MCU64の指示を受けてNANDメモリ14に対しての適切なアドレス信号及び制御信号を生成し、更に、CAMメモリ66からのインデックスアドレス66bと、MCC/ECC72からの制御信号及びオフセットアドレス部分とを使用して、RAMメモリ16をアドレス指定する。次に、NANDメモリ14から読み出されたデータのページ全体は、NANDメモリ14からMUX80を介してRAMメモリ16に転送され、そこでMCC/ECCユニット72により特定されたRAMメモリ16内の位置のページに書き込まれ、MCC/ECCユニット72により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、CAM66のカレントページアドレスレジスタ66aが更新され、カレント読み出しミスアドレスを含むページアドレスと、関連するインデックスアドレス66bとを追加する。ヒット/ミス比較論理68は、ウェイト状態信号26上の信号をディアサートする。更に、MCU64は、MUX80をデフォルト位置に切り替える。ヒット/ミス比較論理68は、インデックスアドレス66bをMUX70に送信し、そこでインデックスアドレスがアドレスバス22からのオフセットアドレスと組み合わされ、RAMメモリ16で読み出し動作を開始する。次いで、データがRAMメモリ16から読み出され、MUX80を介し、更にMUX84を介してホストデバイス20へのデータバス24に供給され、これにより読み出しサイクルを完了する。
【0047】
読み出しヒット、キャッシュフラッシュのない読み出しミス、キャッシュフラッシュのある読み出しミスの各々の場合では、この動作は、ホストデバイス20の視点からRAMデバイスに対する読み出しと同様であり、読み出しミスの場合に待ち時間を伴う。ホストデバイス20は、アドレスの変換及び/又はデータの一貫性に対処する必要がない。
【0048】
PNORメモリの動作−書き込み
PNORメモリの書き込み動作では、ホストデバイス20は、RAMメモリ16に書き込まれるデータと共に、メモリ空間のPNORメモリアクセス部分52内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。書き込みヒット及び書き込みミスといった2つのことが起こり得る。
【0049】
書き込みヒットの場合、アドレスバス22に供給されたアドレス信号のページアドレス部分は、ヒット/ミス比較論理68によって受信され、RAMメモリ16内に現在格納されているデータを反映するCAM66内のページアドレス66aと比較される。アドレスバス22に供給されたページアドレスは、CAM66内に格納されたページアドレス内にある。ヒット/ミス論理68は、アドレス信号及び制御信号がその後RAMメモリ16へ向けられるようにMUX70を起動する。CAM66からのインデックスアドレス66bとアドレスバス22からのアドレス信号のオフセットアドレス部分とが組み合わされて、MUX70を介してRAMメモリ16にアクセスするのに使用されるアドレス信号が生成される。データバス24からのデータは、MUX84を通り、MUX80を通ってRAMメモリ16に供給され、そこでRAMメモリ16に書き込まれ、これにより書き込みヒットサイクルが完了する。
【0050】
RAMメモリ16内のデータは、書き込みヒット動作後は、NANDメモリ14の同じ位置からのデータに対して一貫性がなくなる点に留意されたい。実際には、RAMメモリ16のデータは最新のものとなる。データの一貫性の問題を解決するには、2つの解決法がある。
【0051】
第1に、メモリデバイス10は、必要に応じてデータの一貫性の問題を自動的に解決することができる。上記のように、例えばキャッシュフラッシュ動作での読み出しミスの場合には、NANDメモリ14から新しく要求されるデータのページを格納するために、RAMメモリ16内のデータのページが置き換えられる必要がある場合、RAMメモリ16内のより新しいデータは、NANDメモリ14に書き戻されることになる。以下に説明するように、MCU64はまた、キャッシュフラッシュ動作での書き込みミスにおいて、データをNANDメモリ14に書き戻すことによりRAMメモリ16のデータに関してキャッシュフラッシュを行う。
【0052】
データの一貫性の問題に対する別の解決法は、ホストデバイス20の制御下でデータの一貫性を実施することである。すなわち、ホストデバイス20は、メモリコントローラ12に一貫性のないデータをRAMメモリ16からNANDメモリ14に書き戻させるキャッシュフラッシュのコマンドを送出することができる。この動作の利点は、限定ではないが、アプリケーションの変更、シャットダウン、又は受信した低出力割り込みなどの重要なイベントを含む、あらゆる時点でホストデバイス20がこの動作を行うことができることである。しかしながら、メモリコントローラ12もまた自動的にデータの一貫性を実施することができるので、ホストデバイス20のユーザがデータの一貫性の動作を実施できない場合には、このような動作は、必要に応じてメモリコントローラ12が行うこともある。
【0053】
書き込みミスの場合、起こり得る幾つかのことがある。まず、キャッシュフラッシュのない書き込みミスと呼ばれるものがある。アドレスバス22からのアドレス信号のページアドレス部分をCAM66からのページアドレス信号66aと比較した結果、ミスとなる場合、すなわちアドレスバス22上のアドレスが、RAMメモリ16に格納されたページのアドレス内にない場合には、ヒット/ミス比較論理68は、MCC/ECCユニット72に書き込みミス信号を送る。更に、ヒット/ミス比較論理68は、ウェイト状態信号26上に信号をアサートする。MCC/ECCユニット72は、ホストデバイス20からのアドレスバス22上で特定されたアドレスのデータを含む、NANDメモリ14からのデータの新しいページが、古い一貫性のあるデータ上、或いはRAMメモリ16の空き区域上に格納されることになるかどうかを判断する。この場合、メモリコントローラ12は、データをNANDメモリ14からRAMメモリ16内の位置に転送する前に、書き込み一貫性サイクルを行う必要がない。MCU64の制御下にあるMCC/ECCユニット72は、FFS動作を実行して、ホストデバイス20により供給されたアドレスをNANDメモリ14内の物理アドレスに変換する。次いで、MCC/ECCユニット72は、NANDメモリ14に対して適切なアドレス信号及び制御信号を生成し、更に、RAMメモリ16に対して適切なアドレス信号及び制御信号を生成する。
【0054】
アドレスバス22で特定されるアドレスからのデータを含む、データのページ全体は、NANDメモリ14から読み出され、MUX80を介してRAMメモリ16に転送され、そこでMCC/ECCユニット72及びインデックスアドレス66bにより特定されたRAMメモリ16内の位置のページ全体に書き込まれ、そこでMCC/ECCユニット72により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、CAM66のカレントページアドレスレジスタ66aが更新され、カレント書き込みミスアドレス内にあるアドレスページのアドレス及び関連するインデックスアドレス66b(インデックスアドレス66bはデータのページが格納されるRAMメモリ16のアドレスの上位9ビットである)を追加する。ヒット/ミス比較論理68は、ウェイト状態信号26上に信号をディアサートする。更に、MCUは、MUX80をデフォルト位置に切り替える。ヒット/ミス比較論理68は、インデックスアドレス66bをMUX70に送信し、そこでインデックスアドレスはアドレスバス22からのオフセットアドレスと組み合わされ、RAMメモリ16において書き込み動作を開始する。次いで、データは、ホストデバイス20からMUX84を通って、更にMUX80を通りRAMメモリ16に書き込まれ、これによりサイクルを完了する。ここではRAMメモリ16内のデータはもはやNANDメモリ14内の同じアドレスにあるデータと一貫性がない。この一貫性の問題は、全て上述されたように、メモリコントローラ12が必要に応じて自動的に書き込みキャッシュフラッシュを開始するか、又はホストデバイス20が常に書き込みキャッシュフラッシュを開始することによって解決される。
【0055】
書き込みミスの別の起こり得るケースは、キャッシュフラッシュを伴う書き込みミスと呼ばれる。このケースでは、NANDメモリ14からのデータのページ全体は、NANDメモリ14内のデータよりも新しい、RAMメモリ16内のあるデータを上書きすることなくRAMメモリ16に格納することはできない。これは、データ一貫性の問題を生じる。従って、RAMメモリ16内のデータのページは、最初にNANDメモリ14に書き込む必要があり、その後で、異なる位置のNANDメモリ14からのデータをRAMメモリ16に読み込むことができる。一連の動作は以下の通りである。ホストデバイス20によるアドレスバス22からの信号のページアドレス部分をCAM66からのページアドレス信号66aと比較して、アドレスバス22からのアドレス信号が、カレントページアドレスのいずれかの中にあるかどうかを判断する。この比較はミスとなり、ヒット/ミス比較論理68がMCC/ECCユニット72に対して書き込みミス信号を送信し、MCC/ECCユニット72が書き込み一貫性サイクルを開始する。更に、ヒット/ミス比較論理68は、ウェイト状態信号26上の信号をアサートする。NANDメモリ14からのデータがRAMメモリ16に読み込まれる場合には、データ一貫性の問題が生じるので、MCU64の制御下のMCC/ECCユニット72は、最初にRAMメモリ16内のデータのページをNANDメモリ16に書き込む必要があると判断する。MCUユニット64は、FFS動作を実行し、RAMメモリ16からのアドレスをNANDメモリ14のアドレスに変換する。
【0056】
データのページ全体が、RAMメモリ16から読み出され、MUX80を通ってNANDメモリ14に供給され、そこでNANDメモリ14に格納される。その後、ホストデバイス20からのアドレスは、FFS動作により物理NANDアドレスに変換される。次に、MCC/ECCユニット72は、FFSからの物理NANDアドレスを使用してNANDメモリ14に対して適切なアドレス信号及び制御信号を生成し、更に、RAMメモリ16に対してインデックスアドレス及び制御信号を生成する。次に、NANDメモリ14から読み出されたデータのページ全体は、NANDメモリ14からMUX80を通ってRAMメモリ16に転送され、そこでMCC/ECCユニット72からのオフセットアドレス及びインデックスアドレスレジスタ66bからのインデックスアドレスにより特定されたRAMメモリ16内の位置のページに書き込まれ、MCC/ECCユニット72により動作されて、誤り訂正チェックなどを通じてデータの完全性が確保される。次いで、CAM66のカレントページアドレスレジスタが更新され、カレント読み出しミスのアドレスを含むページアドレス66a及び関連するインデックスアドレス66bを追加する。ヒット/ミス比較論理68は、ウェイト状態信号26上に信号をディアサートする。更に、MCUは、MUX80をデフォルト位置に切り替える。ヒット/ミス比較論理68は、インデックスアドレス66bをMUX70に送信し、そこでインデックスアドレスはアドレスバス22からのオフセットアドレスと組み合わされて、RAMメモリ16に書き込むアドレスを形成する。次いでデータは、ホストデバイス20からデータバス24にMUX84を介し、更にMUX80を介してRAMメモリ16内に書き込まれる。キャッシュフラッシュのない書き込みミスに関する前述の説明と同様に、RAMメモリ16のデータはここではより新しくなっており、データの一貫性の問題が生じ、ホストデバイス20がキャッシュフラッシュを開始するか、或いはメモリコントローラ12がキャッシュフラッシュ動作を開始することにより解決することができる。
【0057】
書き込みヒット、キャッシュフラッシュのない書き込みミス、キャッシュフラッシュのある書き込みミスの各々の場合では、この動作は、ホストデバイス20の視点からRAMデバイスに対する書き込みと同様であり、書き込みミスの場合には待ち時間を伴う。ホストデバイス20は、アドレスの変換及び/又はデータの一貫性に対処する必要がない。
【0058】
データの一貫性問題を解決するためにはRAMメモリ16からNANDメモリ14への書き込み動作を最初に行う必要があるので、キャッシュフラッシュのある読み出しミス又はキャッシュフラッシュのある書き込みミスの場合の待ち時間を更に短縮するために、以下のことを実施することができる。NANDメモリ14に書き込まれることになるデータのページは、最初にRAMメモリ16からローカルSRAM46に書き込まれる。これは、直接NANDメモリ14に書き込むよりも遙かに高速の動作である。これ以降、キャッシュフラッシュのある読み出しミス又はキャッシュフラッシュのある書き込みミスの動作は、キャッシュフラッシュのない読み出しミス又はキャッシュフラッシュのない書き込みミスの動作であるかのように続く。読み出しミス又は書き込みミスの動作が完了すると、ローカルSRAM46に格納されたデータは、メモリデバイス10がアイドル状態であるか、又はアクセスがNORメモリのアクセス部分50、もしくはRAMメモリのアクセス部分54、もしくは構成レジスタのアクセス部分56での動作に限定されている場合、バックグラウンド動作でNANDメモリ14に書き込むことができる。
【0059】
PNOR動作では、この動作は、ホストデバイス20の視点からRAMメモリに対して実行するのと同様であり、データは不揮発性であるが、ホストデバイス20がセクタ又はブロック消去などのNORプロトコルコマンドを送出することがない点に留意されたい。しかしながら、メモリデバイス10がRAMメモリ16及びNANDメモリ14を用いてNOR動作をエミュレート可能であることはまた、本発明の範囲内である。この場合、NORメモリのアクセス部分50に対するメモリ空間のマッピングは、NORメモリ44への正確なマッピングよりも拡大することになる。NORメモリのアクセス部分50は、RAMメモリ16の一部にマップされ、RAMメモリ16はNANDメモリ14に静的にマップすることができるので、アクセス中の待ち時間の問題は存在しない。NANDメモリ14からのデータは、電源投入時にはRAM16にロードされ、NORメモリのアクセス部分50への読み出し/書き込みは、RAMメモリ16からの読み出し又はRAMメモリ16への書き込みとなる。他の唯一の変更は、メモリコントローラ12がNORプロトコルコマンドに応答することである。上述のように、かかるNORプロトコルコマンドが、ホストデバイス20により送出されると、これらは一連の固有データパターンとして供給される。データは、データバス24上に供給され、MUX84を介し、MUX80を通る。アドレスバス上に供給されたアドレスは、この動作がRAMメモリ16によりエミュレートされたNORメモリアクセス部分50におけるものとなることを示すので、MUX74は、MCU64がデータパターンを受信できるように切り替えられる。そのデータパターンが、NORコマンドとしてデコードされると、例えばそのコマンドが消去である場合には、MCUはそのNORコマンドでNANDメモリ14を操作する。勿論、RAMメモリ16は、揮発性メモリであるため、「消去」される必要はない。従って、NORプロトコルコマンドの実行は、NORプロトコルコマンドを実行する真のNORメモリ44よりもNORメモリ44をエミュレートするRAMメモリ16によってより高速の操作となる。その上、このエミュレーションは、NORプロトコルコマンドのフルセットをエミュレートする必要はない。代わりに、コントローラ12は、NORプロトコルコマンドの一部のセットをエミュレートすることができる。従って、本明細書で使用する用語「NORプロトコルコマンド」とは、例えばIntel又はAMDにより公表されているNORプロトコルコマンドのフルセットからの1つ又は複数のコマンドを意味する。
【0060】
RAMメモリの動作
RAMメモリ16の読み出し動作では、ホストデバイス20は、メモリ空間のRAMメモリアクセス部分54内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって適切な制御信号が、コントロールバス32でメモリデバイス10に送信される。アドレス信号は、RAMメモリアクセス部分54にあるので、ヒット/ミス比較論理68がMUX70を起動し、アドレスバス22及びコントロールバス32からのアドレス信号/制御信号をRAMメモリ16に供給することができるようにする。しかしながら、ウェイト状態信号26はアサートされない。更に、ホストデバイス20からのアドレスはデコードされ、コントロールバス32からの制御信号と共に、RAMメモリ16に供給されるアドレス信号を形成し、そこで、供給されるアドレスからのデータが読み出される。次いで、データは、データバスに沿ってMUX80及びMUX84に供給され、データバス24に沿ってホストデバイス20に出されることで、読み出しサイクルを完了する。
【0061】
RAMメモリ16の書き込み動作では、ホストデバイス20は、メモリ空間のRAMメモリアクセス部分54内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって適切な制御信号が、コントロールバス32でメモリデバイス10に送信される。アドレス信号は、RAMメモリアクセス部分54にあるので、ヒット/ミス比較論理68がMUX70を起動し、アドレスバス22及びコントロールバス32からのアドレス信号/制御信号をRAMメモリ16に供給することを可能にする。しかしながら、ウェイト状態信号26はアサートされない。更に、ホストデバイス20からのアドレスがデコードされ、コントロールバス32からの制御信号と共に、RAMメモリ16に供給されるアドレス信号を形成し、ここで、データバス24からのデータは、供給されるアドレスでRAMメモリ16に書き込まれる。
【0062】
ホストデバイス20の観点からすると、RAMメモリアクセス部分における読み出し又は書き込みの動作は、待ち時間なしでRAMデバイスにアクセスするのと同様である。
【0063】
構成レジスタの動作
構成レジスタの動作では、ホストデバイス20は、メモリ空間の構成レジスタアクセス部分56内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって、適切な制御信号がコントロールバス32でメモリデバイス10に送信される。次いでデータが不揮発性レジスタ60に書き込まれる。
【0064】
NANDメモリの動作
NANDメモリ14の読み出し動作では、ホストデバイス20は、メモリ空間のマスストレージアクセスセクション58、すなわちATAメモリアクセス部分58内にあるアドレス信号をアドレスバス22でメモリデバイス10に送信する。更に、ホストデバイス20によって、適切な制御信号がコントロールバス32でメモリデバイス10に送信される。アドレス信号は、PNORメモリアクセス部分52以外の空間にあるので、ヒット/ミス比較論理68は起動されず、ウェイト状態信号26はアサートされない。ホストデバイス20は、ATAプロトコルに従って、ATA読み出し/書き込みコマンドに対してタスクファイルレジスタ79に読み出し/書き込みをする。タスクファイルレジスタ79は、コマンド、ステータス、シリンダ、ヘッド、セクタなどを格納するレジスタを含む。MCU64の制御下にあるMCC/ECCユニット72は、ホスト論理アドレスをNAND物理アドレスに変換するフラッシュファイルシステムを操作し、欠陥NANDセクタを使用することを回避する能力を備える。米国特許第6,427,186号、第6,405,323号、第6,141,251号、及び第5,982,665号を参照し、これらの開示は、引用により全体が本明細書に組み込まれる。ホストデバイス20からの各論理アドレスは、Vpageと呼ばれるテーブルにエントリを有する。エントリの内容は、論理アドレスのデータが格納されている物理アドレスを指す。
【0065】
あるデータのページをNANDメモリ14から読み出すために、アドレス信号及び制御信号がNANDメモリ14に供給される。ホストデバイス20は、ATAプロトコルに従って、タスクファイルレジスタ79がコマンド及び論理アドレスを格納する。各セクタサイズは512バイトである。ホストデバイス20は、メモリ空間のタスクファイルレジスタのアクセス部分58にあるステータスレジスタ79を読み出すことにより、メモリ10の準備状況を調べる。ホストデバイス20は、メモリ空間58内のコマンドレジスタ79に「read」コマンドを書き込む。MCU64は、論理アドレスから物理アドレスへのFFS変換を行い、MCU64の制御下にあるMCC/ECCユニット72が、NANDメモリ14からデータを読み出し、データのページをバッファ81に転送する。データのページ全体がデータレジスタ81に格納され、MCC/ECCユニット72により操作されて、誤り訂正チェックなどを介してデータの完全性が確保された後、データはデータバス24に沿ってメモリコントローラ12から読み出される。
【0066】
NANDメモリ14への書き込み動作は、NANDメモリ14からの読み出しの動作と同様である。ホストデバイス20は、タスクメモリ空間58部分にあるステータスレジスタ79を読み出すことにより、メモリ10の準備状況を調べる。ホストデバイス20は、1ページのデータをデータレジスタ81に書き込み、次に論理アドレスと共に、「write」コマンドをコマンドレジスタ79に書き込む。その後、FFSを使用するMCU64が、論理アドレスを物理アドレスに変換し、MCU64の制御下にあるMCC/ECCユニット72が、その1ページのデータをATAバッファ81からNANDメモリ14へ書き込む。
【0067】
FFSは、更新されることになるページの物理アドレスを特定することによってデータのページを更新する。FFSは、消去されたセクタを「バッファセクタ」として探索し、又は消去されたセクタがない場合には、あるセクタに対し消去動作を最初に行う。次にFFSは、変更されておらず、且つプログラムされていない古いデータをバッファセクタに読み出す。次いでFFSは、更新されたページデータをプログラムする。次にFFSは、次の要求を待機する。次のページが同じ消去セクタ上にある場合、FFSは更新動作を続ける。次のページが、転送中の消去セクタ以外である場合、変更されていないデータの残りは、バッファセクタにコピーされることになる。マッピングテーブルのエントリは、バッファセクタの物理アドレスに変更される。次いで、新しいページの更新動作が開始される。
【0068】
図4を参照すると、メモリデバイス110の第2の実施形態が示されている。このメモリデバイス110は、図1に示したメモリデバイス10と同様である。従って、同じ要素は同じ参照符号で示されている。メモリデバイス110とメモリデバイス10との唯一の違いは、メモリデバイス100では、第2のRAMバス40が、RAMメモリ100をメモリコントローラ12にではなく、直接ホストデバイス20に接続することである。従って、メモリデバイス110では、ホストデバイスは、RAMメモリ100に直接アクセスし制御する。
【0069】
メモリデバイス10の実施形態とメモリデバイス110の実施形態とのこの相違点は、図5に示したメモリマッピングに反映されている。メモリデバイス10と同様に、メモリデバイス110のメモリマッピングは、NORメモリ44にマップされるNORメモリアクセス部分50と、メモリデバイス110のRAMメモリ16にマップされ、その後NANDメモリ14にマップされるPNORメモリアクセス部分52と、RAMメモリ16にマップされるRAMメモリアクセス部分54とを含む。しかしながら、第2のRAMバス40を介してホストデバイス20が直接アクセス可能なRAMメモリ100では、メモリデバイス110のメモリマッピングはまた、RAMメモリ100に直接マップする別のRAMメモリアクセス部分55を含む。従って、メモリデバイス110はまた、メモリデバイス10で説明したものと同様に、構成レジスタアクセス部分56と、最後に、ATAメモリアクセス部分58とを含む。
【0070】
メモリコントローラ12がホストデバイス20と、更にNANDメモリ14とインターフェースをとると、メモリデバイス10は、従来技術のメモリデバイスよりも強い保護が得られる。詳細には、メモリコントローラは、デジタル権利管理に関することと同様、NANDメモリ14に格納されたあるデータへのアクセスを制限することができる。更にメモリコントローラ12は、機密データを保護するために、NANDメモリ14に格納されたデータを暗号化することができる。最後に、メモリコントローラ12は、NANDメモリ14のある部分のデータを誤って消去することからの保護を提供することができる。最後に、プログラムがNORメモリ62内に格納されていることで、メモリコントローラ12は、ホストデバイス20からの開始のコマンドを必要としない点において自動作動デバイスである。
【0071】
本発明には多くの態様がある。まず、メモリデバイス10又は110は、汎用メモリデバイスである。メモリデバイスは、RAMアドレス信号を受信する第1のアドレスバスと、RAMデータ信号を受信する第1のデータバスと、RAM制御信号を受信する第1のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは、組み込みのNORメモリを有し、更に、揮発性RAMメモリとインターフェースをとる第2のアドレスバスと、揮発性RAMメモリとインターフェースをとる第2のデータバスと、揮発性RAMメモリとインターフェースをとる第2のコントロールバスとを有する。このコントローラは更に、不揮発性NANDメモリとインターフェースをとる第3のアドレス/データバスと、不揮発性NANDメモリとインターフェースをとる第3のコントロールバスとを有する。このメモリデバイスは更に、上記第2のアドレスバスと、上記第2のデータバスと、上記第2のコントロールバスとに接続されたRAMメモリを有する。このメモリデバイスは更に、第3のアドレス/データバスと第3のコントロールバスとに接続された不揮発性NANDメモリを有する。このコントローラは、第1のアドレスバスに供給されるアドレス信号に応答することによりNORメモリが、第1のアドレスバスに供給される第1のアドレスレンジに応答し、これによりRAMメモリが、第1のアドレスバスに供給される第2のアドレスレンジに応答し、更にこれによりNANDメモリが、第1のアドレスバスに供給される第3のアドレスレンジに応答する。
【0072】
本発明の更に別の態様では、メモリデバイスは、汎用メモリデバイスであり、ここでユーザがメモリ空間の割り当てを定義することができる。メモリデバイスは、RAMアドレス信号を受信する第1のアドレスバスと、RAMデータ信号を受信する第1のデータバスと、RAM制御信号を受信する第1のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは、組み込みのNORメモリを有し、更に、揮発性RAMメモリとインターフェースをとる第2のアドレスバスと、揮発性RAMメモリとインターフェースをとる第2のデータバスと、揮発性RAMメモリとインターフェースをとる第2のコントロールバスとを有する。このコントローラは更に、不揮発性NANDメモリとインターフェースをとる第3のアドレス/データバスと、不揮発性NANDメモリとインターフェースをとる第3のコントロールバスとを有する。このメモリデバイスは更に、上記第2のアドレスバスと、上記第2のデータバスと、上記第2のコントロールバスとに接続されたRAMメモリを有する。このメモリデバイスは更に、第3のアドレス/データバスと第3のコントロールバスとに接続された不揮発性NANDメモリを有する。このメモリデバイスは、ユーザ定義のメモリ空間の割り当てに応答し、第1のアドレスバスに供給される第1のアドレスレンジでは、メモリデバイスは、NORプロトコルコマンドに応答することを含んで、NORメモリの動作に応答し、第1のアドレスバスに供給される第2のアドレスレンジでは、メモリデバイスはRAM動作に応答し、アドレスバスに供給される第3のアドレスレンジでは、メモリデバイスはATAディスクドライブ装置として動作するNANDメモリの動作に応答し、ここで、第1、第2及び第3のアドレスレンジは全てユーザが定義することができる。
【0073】
本発明の更に別の態様では、メモリデバイスは、RAMアドレス信号を受信する第1のアドレスバスと、RAMデータ信号を受信する第1のデータバスと、RAM制御信号を受信する第1のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは更に、揮発性RAMメモリとインターフェースをとる第2のアドレスバスと、揮発性RAMメモリとインターフェースをとる第2のデータバスと、揮発性RAMメモリとインターフェースをとる第2のコントロールバスとを有する。このコントローラは更に、不揮発性NANDメモリとインターフェースをとる第3のアドレス/データバスと、不揮発性NANDメモリとインターフェースをとる第3のコントロールバスとを有する。このメモリデバイスは更に、上記第2のアドレスバスと、上記第2のデータバスと、上記第2のコントロールバスとに接続されたRAMメモリを有する。このメモリデバイスは更に、第3のアドレス/データバスと第3のコントロールバスとに接続された不揮発性NANDメモリを有する。コントローラは更に、第1のアドレスバス上の第1のアドレスを受信して、第1のアドレスを不揮発性NANDメモリ内の第2のアドレスにマップし、揮発性RAMメモリが不揮発性NANDメモリ内の第2のアドレスとやりとりするデータ用のキャッシュとして役立つ手段と、キャッシュとして揮発性RAMメモリに格納されたデータと不揮発性NANDメモリの第2のアドレスにあるデータとの間のデータの一貫性を保持する手段とを有する。
【0074】
本発明の更に別の態様では、メモリデバイスは、NORアドレス信号を受信する第1のアドレスバスと、NORデータ信号及びデータプロトコルコマンドを受信する第1のデータバスと、NOR制御信号を受信する第1のコントロールバスとを有するメモリコントローラを有する。メモリコントローラは更に、揮発性RAMメモリとインターフェースをとる第2のアドレスバスと、揮発性RAMメモリとインターフェースをとる第2のデータバスと、揮発性RAMメモリとインターフェースをとる第2のコントロールバスとを有する。このコントローラは更に、不揮発性NANDメモリとインターフェースをとる第3のアドレス/データバスと、不揮発性NANDメモリとインターフェースをとる第3のコントロールバスとを有する。このメモリデバイスは更に、上記第2のアドレスバスと、上記第2のデータバスと、上記第2のコントロールバスとに接続されたRAMメモリを有する。このメモリデバイスは更に、第3のアドレス/データバスと第3のコントロールバスとに接続された不揮発性NANDメモリを有する。このコントローラは更に、RAMメモリを作動して、NORプロトコルコマンドを含むNORメモリデバイスの動作をエミュレートする。
【0075】
本発明のメモリ10又は110の用途の1つは、図6に示されるPCシステム300におけるものである。メモリ10又は110は以下のモードで機能することができる。
【0076】
第1に、メモリ10又は110は、DRAM340を置き換えることができる。更に、メモリ10又は110はまた不揮発性部分を有するので、そのNANDメモリ14内に特定のソフトウェアを格納することができ、PC300の起動時にソフトウェアは、HDD326から読出されることなくメモリ10又は110のコントローラ12を介してNANDフラッシュメモリ14から直ぐに読み出され、プロセッサ314が実行することができるようになる。加えて、オペレーティングシステムによってモニタされるように、ユーザの使用頻度の高い特定のデータ又はプログラムはまた、HDD326から先取りされ、メモリ10又は110のNAND14又はNORメモリ44部分に格納することができるので、特定のユーザが知覚する動作中の時間が節約される。最後に、メモリ10又は110は、HDD326からのデータ/プログラム用のディスクキャッシュとして用いることができる。
【0077】
第2に、メモリ10又は110は、BIOS320を置き換えることができる。メモリ10又は110は、NORの様に動作可能であるのでBIOS320を置き換えることができ、プロセッサ314がPC300を始動するのに必要なスタートアップコードを格納するのに使用ことができる。BIOS320からSouthbridge318に対するインターフェースは、シリアル又はパラレルのいずれであってもよい。加えて、メモリ10又は110は、少なくとも2つの部分、すなわち1つがBIOSコードを格納する部分で、他方がオペレーティングシステム用のコードを格納する部分にパーティションで区切ることができる。この場合において、オペレーティングコードの一部はHDD326上に格納されるのではなく、メモリ10又は110の不揮発性メモリ部分にあるので、PC300のスタートアップをより迅速にすることができる。コントローラ12は、どちらか一方を許可するためにセキュリティアクセスを実現することができる。このモードでの操作時には、メモリ10又は110はRAM16を全く含む必要がない。メモリ10又は110は、単に少量のNORメモリ44及びNANDフラッシュメモリ14を備えたコントローラ12であり、RAM16を全く含む必要がなく、又は擬似NORにおいて動作することができる。更に、BIOS320命令の全てがNORメモリ44内に格納する必要がある訳ではない。BIOS320の命令の一部は、NORメモリ44に格納することができ、他の部分はNANDフラッシュメモリ14に格納される。
【0078】
第3に、メモリ10又は110は、BIOS320を置き換えると共に、バス350を2つのバス、すなわち図7に示すように、Southbridge318からBIOS320までのパラレル又はSPI(シリアル)である第1のバス351と、Southbridge318からBIOS320までの業界標準規格のATAバスである第2のバス352とに分割することができる。このモードは、上述の第2のモードの変形形態であり、メモリ10又は110はRAM16を全く含む必要がない。BIOS命令の記憶及び読出しの機能に加え、メモリ10又は110はまたATAバスを有するので、アプリケーションにおける「ライト」HDDとして用いることができ、ここではPCシステム300は、HDD326を必要とせずにシンクライアントとして使用される。従って、メモリ10又は110は、BIOS命令の記憶機能と同時にNANDフラッシュメモリ14におけるオペレーティングシステム又はユーザデータの記憶機能として動作することができる。すなわち、本明細書で使用されるバス350は、限定ではないが、PCI、PCIエクスプレス、USB、ATAなどを含めて、あらゆるタイプのバス又はバスのグループを意味することができる。
【0079】
第4に、メモリ10又は110は、BIOS320を置き換えると共に、図7Bに示すように、メモリ10又は110がSouthbridge318からHDD326又はUSBポート327までの信号の間に置かれるように経路変更されたバスを有することができる。メモリ10又は110はコントローラ12を有するので、動作可能な3つのモードがある。第1に、メモリは完全にトランスペアレントにすることができ、すなわち、あたかもメモリ10又は110が存在しないかのようにされ、バス350上の通信がSouthbridge318からHDD326又はUSBポート327に向けられる。第2に、メモリ10又は110は、Southbridge318とHDD326との間のコマンド又はデータを表す信号を「インテリジェント」にリスンし、このようなあらゆるコマンド又はデータを「捕捉」又は「取り込む」ことができる。Southbridge318によって要求されるデータがメモリデバイス10又は110内に格納される場合、HDD326が応答することなく該メモリ10又は110がこれに応答することができる。従って、メモリ10又は110がHDD326のキャッシュとして機能することで性能が改善される。この動作モードは、どのような特定のドライバをも必要としない点に留意されたい。最後に、オフモードのPC300では、MCU12及びメモリデバイス10又は110はHDD326に対するホストとして機能し、その動作を制御することができる。この能力は、以下でより詳細に説明する。この場合もやはり、このモードでの動作時には、メモリ10又は110はどのようなRAM16も必要ではない。メモリ10又は110は、単に、少量のNORメモリ44及びNANDフラッシュメモリ14とすることができる。第3の動作モードと同様に、Southbridge318をBIOS320に接続するバス350は、NORメモリ44にアクセスするためのパラレル又はSPIバス351、及びNANDフラッシュメモリ14にアクセスするための業界標準規格ATAバス352などのバスのグループを含むことができる。NORフラッシュメモリ44は、BIOS320へのアクセスがパラレル又はSPIバス351に沿ったモノである場合、上述のようにBIOS320用の命令を格納するよう機能することができる。加えて、NORフラッシュメモリ44は、BIOS320用の命令の残りを格納するのに使用され、MCU12に読み出し、パラレル又はSPIバス351に沿って供給することができる。加えて、Southbridge318がATAバス352に沿ってHDD326からデータを読出そうとする場合、NANDフラッシュメモリ14を用いて、ハードディスクドライブ326からのキャッシュデータを格納することができる。図7Bに示す実施例の変形形態が図7Cで示されており、ここではメモリデバイス10又は110はまた、PCIバス、PCIエクスプレスバス、又はUSBバスを介してNorthbridgeチップ316に接続される。
【0080】
第5に、メモリデバイス10又は110のMCU12はプロセッサであるので、上述の機能以外の他の機能を果たすようにプログラムすることができる。例えば、MCU12は、メモリデバイス10又は110がNANDメモリ14に格納された曲/ビデオと共にMP3プレーヤ又はビデオ再生装置として機能することができるようにプログラムすることができる。メモリコントローラ12のMCU64を動作させるのに必要なプログラムコードは、NORメモリ62内に格納することができる。MCU12が十分には堅牢ではなく、MP3/ビデオ機能を実行する専用のハードウェアを有することが望ましい場合には、専用DSPプロセッサ又は専用のMP3プレーヤプロセッサをメモリデバイス10又は110に一体化することができる。従って、この機能を有すると、PC300の有無に関わらず、メモリデバイス10又は110はNANDメモリ14に格納された曲又はビデオを再生することができる。
【0081】
第6に、メモリデバイス10又は110がMP3又はビデオ再生用にプログラムされたMCU12を有し、又はメモリデバイス10又は110がMP3又はビデオ再生用専用プロセッサを有すると、PC300がオフ或いは休止状態にある場合でも、メモリデバイス10又は110は、HDD326上に格納された追加のオーディオ/ビデオデータにアクセスすることができる。
【0082】
上記の第6のモードの機能に加えて、PC300が追加のディスプレイ、例えば小さな補助ディスプレイを有する場合、PC300がオフ又は休止モードでは、メモリデバイス10又は110は、HDD326上に格納されたオーディオ/ビデオデータを読み出し、これを主ディスプレイ332又は補助ディスプレイ(図示せず)に表示することができる。この場合も同様に、この動作モードでは、電源を必要とするPC300の唯一の「アクティブ」な構成要素には、メモリデバイス10又は110、HDD326、及びディスプレイ332又は補助ディスプレイ(図示せず)とがある。従って、プロセッサ314がオフモード又は休止モードである場合にメモリデバイス10又は110が「オン」である場合にだけ「アクティブ」である小さな補助ディスプレイを有すると、省電力が得られる。
【0083】
最後に、第7のモードでは、バス350がまた、USBポート327などの外部ポートに接続されていると、メモリデバイス10又は110は、プロセッサ314がオンであるとUSBハブ又はデバイスを通るUSBパスとして機能することができる。しかしながら、プロセッサ314がオフであると、メモリデバイス10又は110は、USBホストとして機能し、すなわち、メモリデバイス10又は110は、USBポート327に接続される全てのデバイスを制御し、及び電力を供給する。USBバスは、本発明が対象とするバスタイプの単一の実施例である点に留意されたい。上述のように、バス350は、限定ではないが、PCI、PCIエクスプレス、USB、ATAなどを含むあらゆるタイプのバスとすることができる。USBポート327に接続することができるデバイスの中でも、HDD326へのファイルイメージバックアップを伴うシステム300を提供するカードリーダ、追加のストレージ又はバックアップ用の外部USBストレージデバイス、及びBlootooth通信デバイスなどの追加デバイスを含む。すなわち、このもーどでは、PC300全体に給電することなくHDD326からファイルを「複写」することが可能となる。
【図面の簡単な説明】
【0084】
【図1】ホストシステム又はユーザに接続された、メモリコントローラを含むメモリデバイスの第1の実施形態のブロックレベル図である。
【図2】図1のメモリデバイスの外部にあるホスト又はユーザによって参照されるアドレス空間の、図1に示すメモリデバイスの第1の実施形態におけるNORメモリ、RAMメモリ、及びNANDメモリへのマッピングを示すメモリマッピング図である。
【図3】図1のメモリデバイスに使用されるコントローラの詳細なブロックレベルの回路図である。
【図4】ホストシステム又はユーザに接続された、メモリコントローラを含むメモリデバイスの第2の実施形態のブロックレベル図である。
【図5】図4のメモリデバイスの外部にある単一のホスト又はユーザによって参照されるアドレス空間の、図4に示すメモリデバイスの第2の実施形態のNORメモリ、RAMメモリ、及びNANDメモリへのマッピングを示すメモリマッピング図である。
【図6】先行技術の「IBM PC」アーキテクチャによるコンピュータシステムのブロックレベル図である。
【図7A】図6に示した「IBM PC」の構成要素を備えた第1又は第2の実施形態によるメモリデバイスの接続及び利用を示すブロックレベル図である。
【図7B】図6に示した「IBM PC」の構成要素を備えた第1又は第2の実施形態によるメモリデバイスの接続及び利用を示すブロックレベル図である。
【図7C】図6に示した「IBM PC」の構成要素を備えた第1又は第2の実施形態によるメモリデバイスの接続及び利用を示すブロックレベル図である。
【符号の説明】
【0085】
10 メモリデバイス
12 メモリコントローラ
14 NANDメモリ
16 RAMメモリ
20 ホストデバイス

【特許請求の範囲】
【請求項1】
メインプロセッサと、
前記メインプロセッサに接続されたメモリと、
を備えるパーソナルコンピュータであって、
前記メモリが、
前記メインプロセッサからのアドレス信号及びデータ信号を受信するための第1のバスと、NANDメモリとインターフェースをとる第2のバスと、RAMメモリとインターフェースをとる第3のバスと、NORメモリとインターフェースをとる第4のバスとを有するメモリコントローラと、
前記第2のバスに接続されたNANDメモリと、
前記第3のバスに接続されたRAMメモリと、
前記第4のバスに接続されたNORメモリと、
を含み、
前記メモリコントローラが、前記第1のバスに供給されるNORプロトコルコマンドとRAMプロトコルコマンドとに応答することを特徴とするコンピュータ。
【請求項2】
前記NORメモリが前記メインプロセッサ用のブート可能コードを格納することを特徴とする請求項1に記載のコンピュータ。
【請求項3】
前記NANDメモリが前記メインプロセッサ用のブート可能コードを格納することを特徴とする請求項1に記載のコンピュータ。
【請求項4】
前記メモリがモノシリック集積回路ダイであることを特徴とする請求項1に記載のコンピュータ。
【請求項5】
前記メモリコントローラが第1の集積回路ダイであり、前記NANDメモリが第2の集積回路ダイであり、前記RAMメモリが第3の集積回路ダイであり、前記NORメモリが前記メモリコントローラ内に一体化されることを特徴とする請求項1に記載のコンピュータ。
【請求項6】
前記第1、第2、及び第3の集積回路ダイが共にパッケージ化されることを特徴とする請求項5に記載のコンピュータ。
【請求項7】
前記メモリコントローラが第1の集積回路ダイであり、前記NANDメモリが第2の集積回路ダイであり、前記RAMメモリ及び前記NORメモリが前記メモリコントローラ内に一体化されることを特徴とする請求項1に記載のコンピュータ。
【請求項8】
前記第1及び第2の集積回路ダイが共にパッケージ化されることを特徴とする請求項7に記載のコンピュータ。
【請求項9】
前記メモリが、NORアドレスとして前記第1のバス上の第1のアドレスと、RAMアドレスとして前記第1のバス上の第2のアドレスと、ATA NANDアドレスとして前記第1のバス上の第3のアドレスとに応答するように構成されたプログラムコードを格納することを特徴とする請求項1に記載のコンピュータ。
【請求項10】
前記NORメモリが前記メモリコントローラの動作を開始するように構成されたプログラムコードを更に格納することを特徴とする請求項7に記載のコンピュータ。
【請求項11】
前記メモリコントローラが更に、前記第1のバスからのアドレスをNOR動作、前記NANDメモリを用いたNORエミュレーション動作、RAM動作、及びATA NAND動作に分けるためのホストデバイスからの構成可能なパラメータを格納するレジスタを含むことを特徴とする請求項8に記載のコンピュータ。
【請求項12】
前記NORメモリが、前記RAMメモリを前記NANDメモリを用いたNORエミュレーション動作用のキャッシュとして使用させるように構成されたプログラムコードを更に格納することを特徴とする請求項11に記載のコンピュータ。
【請求項13】
メインプロセッサと、
前記メインプロセッサに接続されたメインメモリと、
前記メインプロセッサに接続された補助メモリと、
を備えるコンピュータであって、
前記補助メモリが、
前記メインプロセッサからのアドレス信号及びデータ信号を受信するための第1のバスと、NANDメモリとインターフェースをとる第2のバスと、NORメモリとインターフェースをとる第3のバスと、を有するメモリコントローラと、
前記第2のバスに接続されたNANDメモリと、
前記第3のバスに接続されたNORメモリと、
を含み、
前記補助メモリが、前記コンピュータの動作を開始するBIOS命令用の記憶機構として機能することを特徴とするコンピュータ。
【請求項14】
前記NORメモリが前記メモリコントローラの動作を開始するプログラムコードを格納することを特徴とする請求項13に記載のコンピュータ。
【請求項15】
前記NANDメモリが前記コンピュータの動作を開始するためのプログラムコードを格納することを特徴とする請求項13に記載のコンピュータ。
【請求項16】
前記メモリコントローラが前記メインメモリからATA互換の信号を受信するための第4のバスを有することを特徴とする請求項13に記載のコンピュータ。
【請求項17】
前記補助メモリ及び前記第5のバスに接続されたハードディスクを更に備え、前記NANDメモリが前記ハードディスクドライブ用のキャッシュとして機能することを特徴とする請求項16に記載のコンピュータ。
【請求項18】
前記補助メモリが更に、入出力ポートに接続可能であることを特徴とする請求項16に記載のコンピュータ。
【請求項19】
前記入出力ポートがUSBポートである請求項18に記載のコンピュータ。
【請求項20】
前記補助メモリが更に、PCIバス又はPCIエクスプレスに接続可能であることを特徴とする請求項16に記載のコンピュータ。
【請求項21】
前記補助メモリが、前記メインプロセッサへの給電状態に関係なく、入出力ポートとの間及びハードディスクドライブとの間のデータのやりとりを行うよう機能することを特徴とする請求項18に記載のコンピュータ。
【請求項22】
前記NORメモリが更に、デジタルオーディオ/画像再生デバイスとして前記メモリコントローラを動作させるプログラムコードを格納することを特徴とする請求項21に記載のコンピュータ。
【請求項23】
前記メインプロセッサに接続されたディスプレイデバイスを更に備え、前記補助メモリが前記ディスプレイデバイスを動作させるために前記ディスプレイデバイスに接続されていることを特徴とする請求項22に記載のコンピュータ。
【請求項24】
前記補助メモリが、前記メインプロセッサと前記ハードディスクドライブとの間をトランスペアレント、トラップ、又は再送信の3つのモードのうちの1つで動作可能であることを特徴とする請求項17に記載のコンピュータ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図7C】
image rotate


【公開番号】特開2007−183961(P2007−183961A)
【公開日】平成19年7月19日(2007.7.19)
【国際特許分類】
【外国語出願】
【出願番号】特願2006−357456(P2006−357456)
【出願日】平成18年12月26日(2006.12.26)
【出願人】(500147506)シリコン ストーリッジ テクノロージー インコーポレイテッド (24)
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
【Fターム(参考)】