(57)【要約】  本発明は、メモリ管理に関し、特に、携帯電話などの不揮発性メモリにアクセスし、これを管理する方法およびシステムに関する。携帯電話用メモリコントローラであって、携帯電話の不揮発性メモリに接続されるように構成された第１のインターフェース回路と、携帯電話の揮発性メモリに接続されるように構成された第２のインターフェース回路と、第１の携帯電話プロセッサに接続されるように構成され、前記携帯電話の揮発性メモリへのアクセスを前記第１のプロセッサに提供するように構成された第１のプロセッサインターフェースと、第２の携帯電話プロセッサに接続されるように構成された第２のプロセッサインターフェースと、携帯電話の不揮発性メモリのデータの少なくとも一部分を前記携帯電話の揮発性メモリにコピーするように構成されたコントローラ回路と、を備える携帯電話用メモリコントローラを開示する。
2008511929.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに接続されるように構成された不揮発性メモリコントローラ回路と、
揮発性メモリに接続されるように構成された揮発性メモリコントローラ回路と、
前記不揮発性メモリコントローラ回路に接続されるように構成され、ユーザ定義のブートプログラムコードが不揮発性メモリからメモリコントローラ用メモリに読み込まれるように構成されたブートコントローラ回路と、
第１のリセット信号を含み、第１の携帯電話プロセッサに接続されるように構成され、前記ユーザ定義のブートコードが前記メモリコントローラ用メモリに読み込まれた後に、前記第１の携帯電話プロセッサをリセット状態から解放するように構成された第１のプロセッサインターフェースと、
第２のリセット信号を含み、第２の携帯電話プロセッサに接続されるように構成され、該第２のリセット信号が前記第１のプロセッサによって少なくとも部分的に制御されるように構成された第２のプロセッサインターフェースと、
を備える携帯電話用メモリコントローラ。
【請求項２】
第１のディスプレイに接続されるように構成された第１のディスプレイインターフェイスと、
第２のディスプレイに接続されるように構成された第２のディスプレイインターフェイスと、をさらに備え、
前記第１のプロセッサからのメモリ転送要求が受け取られたことに応答して、前記揮発性メモリから少なくとも前記第２のディスプレイに表示用データを少なくとも部分的に転送するようにさらに構成された、請求項１に記載の携帯電話用メモリコントローラ。
【請求項３】
着脱可能なメモリデバイスに接続されるように構成されたインターフェースをさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項４】
着脱可能なメモリカードに接続されるように構成されたインターフェースをさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項５】
前記ユーザ定義のブートコードはブート用揮発性メモリにロードされる、請求項１に記載の携帯電話用メモリコントローラ。
【請求項６】
前記不揮発性メモリはＮＡＮＤフラッシュメモリを含む、請求項１に記載の携帯電話用メモリコントローラ。
【請求項７】
前記不揮発性メモリはＡＮＤフラッシュメモリを含む、請求項１に記載の携帯電話用メモリコントローラ。
【請求項８】
前記揮発性メモリはＳＤＲＡＭメモリを含む、請求項１に記載の携帯電話用メモリコントローラ。
【請求項９】
前記第１のプロセッサのポートを介して受け取られた要求に応答して、前記不揮発性メモリから前記揮発性メモリにデータを転送するように構成されたＤＭＡコントローラと、
前記不揮発性メモリから読み出されたデータの誤り検出訂正を行うように構成されたＥＣＣ回路と、
をさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項１０】
ユーザ定義のフラッシュメディア管理コードを記憶するメモリをさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項１１】
不揮発性データ転送に関するデータをバッファリングするのに使用されるデータバッファをさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項１２】
前記第１または第２のプロセッサの介入なしに、不揮発性メモリから読み出されたデータにおけるデータ誤りの少なくとも一部分を検出し訂正することができる誤り検出訂正回路をさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項１３】
前記第１または第２のプロセッサの介入なしに、複数のページデータを、不揮発性メモリから揮発性メモリにコピーする回路をさらに備える、請求項１に記載の携帯電話用メモリコントローラ。
【請求項１４】
第２の不揮発性メモリコントローラと、第２の揮発性メモリコントローラとをさらに備える請求項１に記載の携帯電話用メモリコントローラ。
【請求項１５】
電源投入のリセット後に、ブート回路を使用して第１のアドレスを生成するステップと、
前記第１のアドレスに記憶されているデータを少なくとも含む、前記携帯電話の不揮発性フラッシュメモリからのデータにアクセスするステップと、
アクセス対象の前記データをページバッファに記憶するステップと、
アクセス対象の前記データがブートコードであるのかそれともフラッシュメモリ管理コードであるのかを判定するステップと、
アクセス対象の前記データがブートコードである場合には、前記データを前記ページバッファからブート用ランダムアクセスメモリにコピーするステップと、
アクセス対象の前記データがフラッシュメモリ管理コードである場合には、前記データを、前記ページバッファからフラッシュメモリ管理用ランダムアクセスメモリにコピーするステップと、
を含む、携帯電話の不揮発性メモリからデータを転送する方法。
【請求項１６】
前記フラッシュメモリ管理用のバッファに記憶されている前記フラッシュメモリ管理コードを使用してフラッシュメモリ管理の初期化が実施されている間、第１のモデムプロセッサをリセット状態に保つステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記モデムプロセッサをリセットから解放するステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記モデムプロセッサが前記ブート用ランダムアクセスメモリに記憶されている前記ブートコードを実行することができるようになるデータパスを提供するステップをさらに含む、請求項１７に記載の方法。
【請求項１９】
携帯電話の不揮発性メモリに接続されるように構成された第１のインターフェース回路と、
携帯電話の揮発性メモリに接続されるように構成された第２のインターフェース回路と、
第１の携帯電話プロセッサに接続されるように構成され、前記第１のプロセッサが前記携帯電話の揮発性メモリへアクセスできるようにする第１のプロセッサインターフェースと、
第２の携帯電話プロセッサに接続されるように構成された第２のプロセッサインターフェースと、
前記第１のプロセッサまたは前記第２のプロセッサの介入なしに、携帯電話の不揮発性メモリのデータの少なくとも一部分を前記携帯電話の揮発性メモリにコピーするように構成されたコントローラ回路と、
を備える携帯電話用メモリコントローラ。
【請求項２０】
前記コントローラ回路は、前記第１のプロセッサから前記携帯電話の不揮発性メモリにデータを書き込むように構成される、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２１】
前記揮発性メモリがフラッシュメモリであり、前記第１または第２のプロセッサの介入なしに、フラッシュメモリ管理プロセスを実行するように構成された回路をさらに備える、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２２】
前記第１のプロセッサおよび前記第２のプロセッサが、前記不揮発性メモリへのアクセスの際、前記コントローラ回路に論理アドレスを提供し、
前記コントローラ回路は、前記第１または第２のプロセッサからの要求に応答して前記不揮発性メモリへアクセスするときに使用される論理アドレスから物理アドレスへの翻訳を実施するように構成される、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２３】
前記コントローラ回路は、電源投入のリセット後前記第１のプロセッサを起動する前に、ユーザ定義のタスクをユーザ定義の順序に従って自動的に実施するように構成され、
前記ユーザ定義のタスクは、
電源投入のリセット後、前記携帯電話の不揮発性メモリからフラッシュメモリマネージャ回路のローカルメモリにフラッシュメディア管理コードをロードし、
セキュリティチェックするか、または、前記携帯電話の不揮発性メモリに記憶されているデータを実施することを含む、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２４】
前記携帯電話の不揮発性メモリからブート用揮発性メモリにブートプログラムコードを転送するように構成された制御回路をさらに備え、
前記第１のプロセッサインターフェースが、前記ブートプログラムコードの少なくとも一部分が前記ブート用揮発性メモリに転送されている間前記第１のプロセッサをリセット状態に保つように構成されたリセット信号をさらに有する、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２５】
前記携帯電話の不揮発性メモリはページモードでアクセスされるように構成される、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２６】
前記携帯電話の不揮発性メモリから読み出されたデータに関する誤りを検出し訂正するように構成された誤り訂正検出回路をさらに備える、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２７】
前記携帯電話の不揮発性メモリをさらに備え、前記メモリコントローラと前記携帯電話の不揮発性メモリとが単一のデバイスパッケージに収容され、前記携帯電話の不揮発性メモリへのアクセスが、前記メモリコントローラによって制御され、それによって前記不揮発性メモリに対する無許可アクセスが防止される、請求項１９に記載の携帯電話用メモリコントローラ。
【請求項２８】
リセット信号をディアサートするステップと、
携帯電話の不揮発性メモリに記憶されているブートデータに対応する第１のアドレスを生成するステップと、
前記第１のアドレスから始まるブートプログラムコードを前記携帯電話の不揮発性メモリから読み出すステップと、
前記ブートプログラムコードに関する誤り検出を行うステップと、
第１の誤りが検出された場合に少なくとも第１の誤りを訂正するステップと、
訂正ブートコードが存在する場合はそれらも含めて、前記ブートコードを揮発性ランダムアクセスメモリにロードするステップと、
前記携帯電話の不揮発性メモリからフラッシュメモリ管理用揮発性メモリにフラッシュメモリ管理用プログラムコードをロードするステップと、
フラッシュメモリ管理回路によって前記フラッシュメモリ管理用プログラムコードが実行されることを可能にするステップと、
前記携帯電話用メモリ回路に接続された第１の携帯電話プロセッサをリセット状態から解放するステップと、
前記第１の携帯電話プロセッサが前記ブートプログラムコードへアクセスできるようにするステップと、
第２の携帯電話プロセッサが前記揮発性メモリに記憶されているコードへアクセスできるようにするステップと、
を含む、携帯電話用のメモリ回路を操作する方法。
【請求項２９】
前記第１の携帯電話プロセッサが少なくとも第１のメモリ構成回路に１セットの第１の情報をロードするのを可能にするステップと、
少なくとも部分的に、前記第１の携帯電話プロセッサからのコマンドおよび前記第１の１セットの情報に応答して、前記不揮発性メモリから前記揮発性メモリにプログラムコードを転送するステップと、をさらに含み、前記第１の携帯電話プロセッサが、前記揮発性メモリに記憶されている少なくとも第１のプログラムを実行する、請求項２８に記載の方法。
【請求項３０】
前記第１の携帯電話プロセッサからディスプレイ書込みコマンドを受け取るステップと、
第１の揮発性メモリアドレスを生成するステップと、
前記第１のアドレスから始まるデータを、前記揮発性メモリから第１の携帯電話のディスプレイにコピーするステップと、
をさらに含む、請求項２８に記載の方法。
【請求項３１】
揮発性ランダムアクセスメモリから、第１の電話のディスプレイおよび第２の電話の第２のディスプレイに表示用データを転送するステップをさらに含む、請求項２８に記載の方法。
【請求項３２】
携帯電話の不揮発性メモリに記憶されるように構成され、ユーザ部分に記憶されるユーザデータおよび予備部分に記憶される予備データを含む第１のページデータを受け取るステップと、
前記第１のページデータに関するページパリティデータを生成するステップと、
前記ページパリティデータを前記携帯電話の不揮発性メモリに記憶するステップと、
不揮発性メモリ管理のブックキーピングデータおよび／またはシステムフラグを含む予備データを、前記携帯電話の不揮発性メモリに記憶するステップと、
前記予備データに関するパリティデータを生成し、前記携帯電話の不揮発性メモリに記憶するステップと、
前記携帯電話の不揮発性メモリから前記予備データを読み出すステップと、
前記携帯電話の不揮発性メモリから前記予備データに関する前記パリティデータを読み出すステップと、
必要に応じて、前記予備データのパリティ情報を使用して前記携帯電話の不揮発性メモリの前記予備データに関する誤り検出および誤り訂正を実施するステップと、
を含む、方法。
【請求項３３】
パリティデータはリードソロモン符号を使用して計算される、請求項３２に記載の方法。
【請求項３４】
パリティデータはハミング符号を使用して計算される、請求項３２に記載の方法。
【請求項３５】
携帯電話用メモリコントローラであって、
携帯電話の不揮発性メモリに接続された第１のポートと、
携帯電話の揮発性メモリに接続された第２のポート回路と、
第１の携帯電話プロセッサに接続され、前記第１のプロセッサが前記携帯電話の揮発性メモリへアクセスできるようにする第１のプロセッサインターフェースと、
第２の携帯電話プロセッサに接続された第２のプロセッサインターフェースと、
を備え、
前記第１のプロセッサ及び前記第２のプロセッサの一方が、モデム制御を行うように構成される携帯電話用メモリコントローラ。
【請求項３６】
前記携帯電話の不揮発性メモリからブート用揮発性メモリにブートプログラムコードを転送する制御回路をさらに備え、前記第１のプロセッサインターフェースは、さらに、
前記ブートプログラムコードの少なくとも一部分が前記ブート用揮発性メモリに転送されている間は前記第１のプロセッサをリセット状態に保つように設定されたリセット信号を備える、請求項３５に記載の携帯電話用メモリコントローラ。
【請求項３７】
着脱可能なメモリカードに接続されるように構成されたメモリカードインターフェイスをさらに備える、請求項３５に記載の携帯電話用メモリコントローラ。
【請求項３８】
メモリスティックカード、スマートメディアカード、セキュアデジタルカード、コンパクトフラッシュカード、および、マルチメディアカードの内の１つまたは複数に接続されるように構成されたインターフェースをさらに備える、請求項３５に記載の携帯電話用メモリコントローラ。
【請求項３９】
転送開始後に、前記第１または前記第２のプロセッサの介入なしに、前記携帯電話の不揮発性メモリから前記携帯電話の揮発性メモリにデータを転送するように構成されたダイレクトメモリアクセス回路をさらに備える、請求項３５に記載の携帯電話用メモリコントローラ。
【請求項４０】
メモリアクセス権を複数の要求元に選択的に付与するように構成されたメモリアクセス回路をさらに備える、請求項３５に記載の携帯電話用メモリコントローラ。
【請求項４１】
携帯電話の不揮発性メモリに接続された第１のポートと、
携帯電話の揮発性メモリに接続された第２のポート回路と、
第１の携帯電話プロセッサに接続され、を前記第１のプロセッサが前記携帯電話の揮発性メモリへアクセスできるようにする第１のデバイスインターフェイスと、
第２の携帯電話プロセッサ、または、携帯電話のディスプレイに接続されるように選択的に設定可能な第２のデバイスインターフェイスと、
を備える、携帯電話用メモリコントローラ。
【請求項４２】
前記携帯電話の不揮発性メモリからブート用揮発性メモリにブートプログラムコードを転送する制御回路をさらに備え、前記第１のプロセッサインターフェースは、前記ブートプログラムコードの少なくとも一部分が前記ブート用揮発性メモリに転送されている間、前記第１のプロセッサをリセット状態に保つように構成されるリセット信号をさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４３】
着脱可能なメモリカードに接続されるように構成されたメモリカードインターフェイスをさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４４】
少なくとも１つの携帯電話プロセッサに接続されるように構成された第３のデバイスインターフェイスをさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４５】
転送開始後に、前記第１のプロセッサの介入なしに、前記携帯電話の不揮発性メモリから前記携帯電話の揮発性メモリにデータを転送するように構成されたダイレクトメモリアクセス回路をさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４６】
メモリアクセス権を複数の要求元に選択的に付与するように構成されたメモリアクセス回路をさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４７】
表示開始アドレス、揮発性メモリの開始アドレス、および前記揮発性メモリのアドレスから前記ディスプレイに転送すべきデータ量に関する指標を記憶するように設けられたメモリ素子をさらに備える、請求項４１に記載の携帯電話用メモリコントローラ。
【請求項４８】
携帯電話用メモリコントローラデバイスであって、
携帯電話の不揮発性メモリに接続されるように構成された第１のポートと、
携帯電話のモデムプロセッサに接続されるように構成された第２のポート回路と、
ブート用揮発性メモリと、
前記携帯電話の不揮発性メモリから前記ブート用揮発性メモリにブートコードをコピーするように構成されたブートコントローラと、
前記モデムプロセッサからのコマンドに応答して、前記不揮発性メモリから前記ブート用揮発性メモリにデータをコピーするように構成されたダイレクトメモリアクセスコントローラと、
前記モデムプロセッサがブート用メモリデータを読み出すことができるようになるパスを提供する手段と、
を備える携帯電話用メモリコントローラデバイス。
【請求項４９】
前記第１のポートが、前記携帯電話の揮発性メモリから読み込まれたデータに関する誤りを検出し、検出された誤りの少なくとも一部分を訂正するように構成された誤り訂正検出回路をさらに含む、請求項４８に記載の携帯電話用メモリコントローラ。
【請求項５０】
前記第１のポートは、前記第１のポートのデータ転送速度と前記第２のポートのデータ転送速度との不整合を調整するように設けられたデータバッファをさらに含む、請求項４８に記載の携帯電話用メモリコントローラ。
【請求項５１】
着脱可能なメモリカードに接続されるように構成されたメモリカードインターフェイスをさらに備える請求項４８に記載の携帯電話用メモリコントローラ。
【請求項５２】
少なくとも１つの携帯電話プロセッサに接続されるように構成された第３のポートをさらに備える請求項４８に記載の携帯電話用メモリコントローラ。
【請求項５３】
書込み可能不揮発性メモリに記憶されているデータが上書きされないように保護するために携帯電話用メモリシステムを操作する方法であって、
メモリ制御回路において、第１の携帯電話プロセッサから、携帯電話の不揮発性メモリへの書込み処理を実施するよう指示する書込みコマンドを受け取るステップと、
前記メモリ制御回路において、前記第１の携帯電話プロセッサからデータを書き込むべき第１の論理アドレスに対応する第１の論理アドレスを受け取るステップと、
携帯電話のメモリ制御回路において、前記第１の論理アドレスを、前記携帯電話の不揮発性メモリの第１の保護領域が上書きされるのを防止するために少なくとも前記第１の保護領域を避けるように選択される第１の物理アドレスに翻訳するステップと、
前記書込みコマンドに応答して、前記第１の携帯電話プロセッサの命令に従い、前記第１の物理アドレスにデータを少なくとも部分的に書き込むステップと、
を含む方法。
【請求項５４】
前記第１の保護領域が、メモリ管理コードを記憶する、請求項５３に記載の方法。
【請求項５５】
前記第１の保護領域が、前記携帯電話の不揮発性メモリに記憶された、前記第１の保護領域を論理アドレスもしくは物理アドレスまたはその両方を用いて定義するコードによって定義される、請求項５３に記載の方法。
【請求項５６】
前記第１の携帯電話プロセッサがモデム機能を有する、請求項５３に記載の方法。
【請求項５７】
携帯電話の不揮発性メモリに接続されるように構成された第１のインターフェース回路と、
第１の携帯電話プロセッサに接続されるように構成された第１のプロセッサインターフェースと、
前記第１のインターフェース回路および前記第１のプロセッサインターフェースに接続され、前記第１のプロセッサインターフェースを介して前記携帯電話の不揮発性メモリに関する論理アドレスを受け取り、前記論理アドレスを、前記携帯電話の不揮発性メモリに記憶されているコードまたはデータにアクセスするのに使用される物理アドレスに翻訳するように構成されることによって、前記第１の携帯電話プロセッサが前記携帯電話の不揮発性メモリに記憶されているコードまたはデータの少なくともサブセットにアクセスする上で前記コードまたはデータのサブセットに関する物理アドレスを知る必要がなくなる、コントローラ回路と、
を備える携帯電話用メモリコントローラ。
【請求項５８】
コンピュータ読取り可能なメモリに記憶され、前記第１のプロセッサインターフェースに接続される第１の携帯電話プロセッサのタイプに依存しないフラッシュメモリ管理コードをさらに備える、請求項５７に記載の携帯電話用メモリコントローラ。
【請求項５９】
前記制御回路に接続されるかまたは揮発性メインメモリに接続されるように構成された揮発性メモリインターフェイスをさらに備える、請求項５７に記載の携帯電話用メモリコントローラ。
【請求項６０】
前記制御回路に接続され、第２の携帯電話プロセッサに接続されるように構成された第２のプロセッサインターフェースをさらに備える、請求項５７に記載の携帯電話用メモリコントローラ。
【請求項６１】
ブート用揮発性メモリと、
前記携帯電話の不揮発性メモリから前記ブート用揮発性メモリにブートプログラムコードを転送するように構成された制御回路とをさらに備え、前記第１のプロセッサインターフェースは、前記ブートプログラムコードの少なくとも一部分が前記ブート用揮発性メモリに転送されている間は前記第１のプロセッサをリセット状態に保つように構成されるリセット信号をさらに有する、請求項５７に記載の携帯電話用メモリコントローラ。
【請求項６２】
前記携帯電話の不揮発性メモリをさらに備え、前記メモリコントローラと、前記携帯電話の不揮発性メモリとが単一のデバイスパッケージに収容され、前記携帯電話の不揮発性メモリへのアクセスが前記メモリコントローラによって制御され、それによって前記不揮発性メモリに対する無許可アクセスが防止される、請求項５７に記載の携帯電話用メモリコントローラ。
【請求項６３】
前記揮発性メモリがフラッシュメモリであり、前記第１の携帯電話プロセッサの介入なしに、フラッシュメモリ管理プロセスを実行するように構成された回路をさらに備える請求項５７に記載の携帯電話用メモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
（著作権表示）
この特許文書の開示の一部分には著作権の保護を受ける事項が含まれている。当該著作権者は、それが特許商標庁のファイルまたは記録に所在する限り、この特許文書または特許開示のいずれかによる複製に対して異議を唱えるものではないが、その他の全ての著作権は保留するものである。
【０００２】
（優先権主張出願）
本願は、米国特許法第１１９条（ｅ）項に基づく米国仮出願第６０／６０５２６５号（出願日：２００４年８月３０日）および米国仮特許出願第６０／６１１２１９号（出願日：２００４年９月２０日）の利益を主張する。各出願の内容はいずれも参照により本明細書に組み込まれる。
【０００３】
本発明はメモリ管理に関し、特に、携帯電話などの不揮発性メモリにアクセスしてこれを管理する方法およびシステムに関する。
【背景技術】
【０００４】
小型で高速かつ低消費電力の、プロセッサ、メモリ、ＡＳＩＣといった電子部品の出現に伴い、多くの携帯電話が、マルチメディア情報や、一般に「アプリケーション」と呼ばれるエンターテインメントなどの、益々複雑な機能を提供するようになっている。携帯電話はまた、一般に「モデム」と呼ばれる、無線通信の変調／復調機能を含んでいる。多くの携帯電話構造は、モデムやアプリケーション機能に対応するために２つのプロセッサを含んでおり、「アプリケーションプロセッサ」がアプリケーション機能を制御し、「モデムプロセッサ」が通信機能を制御する。携帯電話の中には、デジタル信号処理（ＤＳＰ）アルゴリズムを実施するよう特別に設計された、他のプロセッサを含むものもある。単一のプロセッサの携帯電話もたしかに存在するが、現行の複雑な携帯電話の多くは複数のプロセッサを含んでいる。従来の多くの応用例では、各プロセッサが不揮発性メモリと揮発性メモリとの両方を利用してそれぞれの機能を実施する。
【０００５】
また、携帯電話の不揮発性メモリとしては従来、ＮＯＲフラッシュメモリが一般に使用されてきた。近年、いくつかの新しいフラッシュメモリ技術が市場に投入されている。ＡＮＤフラッシュメモリやＮＡＮＤフラッシュメモリといった比較的新しい高密度フラッシュメモリは、ＮＯＲフラッシュメモリよりも低コスト、小サイズ、高記憶容量に設計されている。したがって、こうした高密度フラッシュメモリ技術は、複雑な携帯電話の不揮発性大容量データ記憶装置として好ましい技術であることが多い。しかしながら、現時点でＮＯＲフラッシュメモリを使用する従来の携帯電話の多くは、設計変更および／または回路基板の変更しない限り、ＡＮＤまたはＮＡＮＤフラッシュメモリをドロップインリプレースメント（ｄｒｏｐ−ｉｎ  ｒｅｐｌａｃｅｍｅｎｔ）して使用することができない。この理由は、上記の高密度フラッシュ技術は、ＮＯＲフラッシュメモリよりも複雑な特徴を有しており特別な取扱いを要するからである。
【０００６】
例えば、高密度フラッシュメモリは、典型的には初期のアクセス時間をかなり要するページモードでアクセスされるものであるが、プロセッサは一般にバイトまたはワードレベルのランダムアクセスを必要とするので、プロセッサがプログラムコードを実行するのには適さない。したがって、通常はまず、高密度フラッシュメモリに記憶されているプログラムコードをＲＡＭメモリに移動し、次いでプロセッサが当該ＲＡＭメモリからプログラムコードを実行する。また、高密度フラッシュメモリはしばしば、ＮＯＲフラッシュメモリと比較してそれ自体に記憶されたデータにエラー生じやすく、したがって、高密度フラッシュにアクセスする際に誤り訂正符号化（ＥＣＣ）が必要とされることが多い。さらに、高密度フラッシュメモリは典型的には、所定回数の消去／再書込みサイクルしか許容することができない。フラッシュメモリデバイスの耐久性および信頼性を高めるために、損耗平均化、ガベージコレクション、不良ブロック置換、停電復旧などのフラッシュメディア管理技法がよく利用される。
【０００７】
高密度フラッシュ技術を活用するために、多くの携帯電話のシステム設計において、上述した高密度フラッシュの特有の性質に対応する、非常に複雑なフラッシュメディア管理用のアルゴリズムや工程が、システムソフトウェアの形で組み込まれている。これらの複雑なアルゴリズムおよび工程は、フラッシュにアクセスするプロセッサ（Ｆｌａｓｈ−ａｃｃｅｓｓｉｎｇ  ｐｒｏｃｅｓｓｏｒ）の計算／制御容量を使い果たしてシステムの性能を低下させる。そこで、フラッシュメディア管理技術のアルゴリズムや工程およびＥＣＣを行って、フラッシュにアクセスするプロセッサをそのような負荷から解放する制御回路を携帯電話に設けることが有利と考えられる。
【０００８】
プロセッサ、不揮発性メモリ、および揮発性メモリを含む電子システムでは、通常、プロセッサによって実施されるタスクは、あるメモリから別のメモリにデータを移動させることである。データ移動処理の一例としては、プログラムコードを、不揮発性のページモードメモリデバイスから揮発性のランダムアクセスメモリデバイスに移動させ、プロセッサが同プログラムコードを実行できるようにすることである。データ移動処理の他の例としては、揮発性メモリから不揮発性メモリにデータを移動させ、当該データを恒久的に記憶することである。また、グラフィックスやビデオといったマルチメディア機能を備えた携帯電話においては、しばしば、１つ（または複数）のプロセッサが画像データをメモリから携帯電話のディスプレイ（例えばＬＣＤディスプレイ）に移動させ、画像を表示させる。メモリデータの出し入れは繰返しの非常に多いプロセスであり、プロセッサの計算／制御容量を大量に消費する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記に鑑みて、携帯電話などの携帯電話設計に関するコストを低減し、また、サイズの全体的な規模を縮小するには、各プロセッサがそれ自体の別個のメモリ管理回路を必要とするのではなく、複数のプロセッサのメモリ容量の要求に応じた１つのメモリ管理回路を有することが有利であると考えられる。メモリシステムの数を減少させることにより、メモリデバイスの数が減少するだけでなく、プロセッサ間のデータ転送も効率化される。
【００１０】
さらに、上記に鑑みて、携帯電話は、高密度フラッシュメモリと、ＲＡＭメモリと、１つまたは複数のプロセッサの制御下でメモリとディスプレイ（例えばＬＣＤ画面）および／または外付けメモリカードとの間のデータ転送をするＤＭＡ機能を有した制御回路と、を含むメモリシステムを備えることが有利と考えられる。
【００１１】
携帯電話は、また、プロセッサの介入を最小限としつつ、ＥＣＣやユーザ定義のフラッシュメディア管理を自律的に行い、１つ（または複数）のプロセッサが当該メモリシステム内のメモリにアクセスできるようにするメモリシステムを有していることが有利と考えられる。かかるメモリシステムを用いると、メモリが必要とする複数のプロセッサをより少数のシステムメモリに統合し、さらには単一のメモリシステムに集約し、ひいては携帯電話のコストおよびサイズを低減することができる。高密度フラッシュメモリを大容量データ記憶装置として使用することにより、電話機のコストおよびサイズをさらに低減することができる。さらに、データ転送という一般的なの機能を実施すること、ＥＣＣやフラッシュメディアを管理することからプロセッサを解放し、携帯電話システムの性能を向上させることが有利であろう。
【００１２】
しかしながら、必ずしも本明細書に言及する全ての利点が本発明の所定の一実施形態によって達成される必要はないことが、理解されるべきである。
【課題を解決するための手段】
【００１３】
一実施形態は、携帯電話用メモリコントローラであって、不揮発性メモリに接続された不揮発性メモリコントローラ回路と、揮発性メモリに接続されるように構成された揮発性メモリコントローラ回路と、前記不揮発性メモリコントローラ回路に接続され、ユーザ定義のブートプログラムコードが不揮発性メモリからメモリコントローラ用メモリに読み込まれるように構成されたブートコントローラ回路と、第１のリセット信号を含み、第１の携帯電話プロセッサに接続された第１のプロセッサインターフェースであって、前記メモリコントローラが、前記ユーザ定義のコードが前記メモリコントローラ用メモリに読み込まれた後に、前記第１の携帯電話プロセッサをリセット状態から解放するように構成される、第１のプロセッサインターフェースと、第２のリセット信号を含み、第２の携帯電話プロセッサに接続された第２のプロセッサインターフェースであって、前記第２のリセット信号が、前記第１のプロセッサによって少なくとも部分的に制御されるように構成される、第２のプロセッサインターフェースと、を備える携帯電話用メモリコントローラを提供する。
【００１４】
別の実施形態は、携帯電話の不揮発性メモリからデータを転送する方法であって、電源投入のリセット後に、ブート回路を使用して第１のアドレスを生成するステップと、少なくとも前記第１のアドレスに記憶されているデータを含む、前記携帯電話の不揮発性フラッシュメモリのデータにアクセスするステップと、アクセス対象の前記データをページバッファに記憶するステップと、アクセス対象の前記データがブートコードであるのかそれともフラッシュメモリ管理コードであるのかを判定するステップと、アクセス対象の前記データがブートコードである場合には、前記データを前記ページバッファからブート用ランダムアクセスメモリにコピーするステップと、アクセス対象の前記データがフラッシュメモリ管理コードである場合には、前記データを前記ページバッファからフラッシュメモリ管理用ランダムアクセスメモリにコピーするステップと、を含む方法を提供する。
【００１５】
他の実施形態は、携帯電話用メモリコントローラであって、携帯電話の不揮発性メモリに接続されるように構成された第１のインターフェース回路と、携帯電話の揮発性メモリに接続されるように構成された第２のインターフェース回路と、第１の携帯電話プロセッサに接続されるように構成され、前記携帯電話の揮発性メモリへのアクセスを前記第１のプロセッサに提供するように構成された第１のプロセッサインターフェースと、第２の携帯電話プロセッサに接続されるように構成された第２のプロセッサインターフェースと、前記第１のプロセッサまたは前記第２のプロセッサの介入なしに、携帯電話の不揮発性メモリのデータの少なくとも一部分を前記携帯電話の揮発性メモリにコピーするように構成されたコントローラ回路と、を備える携帯電話用メモリコントローラを提供する。
【００１６】
他の実施形態は、携帯電話用メモリ回路を操作する方法であって、リセット信号をディアサートするステップと、携帯電話の不揮発性メモリに記憶されているブートデータに対応する第１のアドレスを生成するステップと、前記第１のアドレスから始まるブートプログラムコードを、前記携帯電話の不揮発性メモリから読み出すステップと、前記ブートプログラムコードに関する誤り検出を行うステップと、第１の誤りが検出された場合に少なくとも第１の誤りを訂正するステップと、訂正ブートコードが存在する場合はそれらも含めて前記ブートコードを揮発性ランダムアクセスメモリにロードするステップと、前記携帯電話の不揮発性メモリからフラッシュメモリ管理用揮発性メモリに損耗平均化コードを含むフラッシュメモリ管理用プログラムコードをロードするステップと、前記フラッシュメモリ管理用プログラムコードがフラッシュメモリ管理回路によって実行されることを可能にするステップと、前記携帯電話用メモリ回路に接続された第１の携帯電話プロセッサをリセット状態から解放するステップと、前記ブートプログラムコードへのアクセスを前記第１の携帯電話プロセッサに提供するステップと、前記揮発性メモリに記憶されているコードへのアクセスを第２の携帯電話プロセッサに提供するステップと、を含む方法を提供する。
【００１７】
一実施形態は、携帯電話の不揮発性メモリに記憶済みのデータまたは記憶中のデータに関する誤り訂正を実施する方法であって、携帯電話の不揮発性メモリに記憶されるように構成され、ユーザ部分に記憶されるユーザデータと、予備部分（ｓｐａｒｅ  ｐｏｒｔｉｏｎ）に記憶される予備データ（ｓｐａｒｅ  ｄａｔａ）とを含む第１のページデータを受け取るステップと、前記第１のページデータに関するページパリティデータを生成するステップと、前記ページパリティデータを前記携帯電話の不揮発性メモリに記憶するステップと、不揮発性メモリ管理のブックキーピングデータおよび／またはシステムフラグを含む予備データを前記携帯電話の不揮発性メモリに記憶するステップと、前記予備データに関するパリティデータを生成し、前記携帯電話の不揮発性メモリに記憶するステップと、前記携帯電話の不揮発性メモリから前記予備データを読み出すステップと、前記携帯電話の不揮発性メモリから前記予備データに関する前記パリティデータを読み出すステップと、前記予備データのパリティ情報を使用して、必要に応じて前記携帯電話の不揮発性メモリの前記予備データに関する誤り検出および誤り訂正を実施するステップと、を含む方法を提供する。
【００１８】
一実施形態は、携帯電話用メモリシステムであって、携帯電話の不揮発性メモリに接続された第１のポートと、携帯電話の揮発性メモリに接続された第２のポート回路と、第１の携帯電話プロセッサに接続され、前記携帯電話の揮発性メモリへのアクセスを前記第１のプロセッサに提供するように構成された第１のプロセッサインターフェースと、第２の携帯電話プロセッサに接続された第２のプロセッサインターフェースとを備え、前記第１のプロセッサと前記第２のプロセッサの内の１つは、モデム制御を行うように構成される、携帯電話用メモリシステムを提供する。
【００１９】
別の実施形態は、携帯電話用メモリコントローラデバイスであって、携帯電話の不揮発性メモリに接続されるように構成された第１のポートと、携帯電話のモデムプロセッサに接続されるように構成された第２のポート回路と、ブート用揮発性メモリと、前記携帯電話の不揮発性メモリから前記ブート用揮発性メモリにブートコードをコピーするように構成されたブートコントローラと、前記モデムプロセッサからのコマンドに応答して、前記不揮発性メモリから前記ブート用揮発性メモリにデータをコピーするように構成されたダイレクトメモリアクセスコントローラと、前記モデムプロセッサがブート用メモリデータを読み出すことができるようになるパスを提供する手段とを備える携帯電話用メモリコントローラデバイスを提供する。
【００２０】
例示的な諸実施形態を添付の図面に示すが、添付の図面は単なる例示に過ぎない。
【発明を実施するための最良の形態】
【００２１】
本発明は、メモリ管理に関し、特に、携帯電話などの電子デバイスの不揮発性メモリおよび揮発性メモリにアクセスし、これらを管理する方法およびシステムに関するものである。
【００２２】
本明細書に記載されるように任意の実施形態によれば、携帯電話などといった対象となるデバイスのコストおよびサイズを低減することができる。また、本明細書に記載のメモリ管理システムの任意の実施形態によれば、メモリの管理やフラッシュメモリのブックキーピングなどの負荷からプロセッサを解放することによって、それらに関するプロセッサ負荷を低減することができる。
【００２３】
さらに、任意の実施形態を用いると、ユーザ（例えば携帯電話の製造業者）は、メモリ管理チップの製造業者のコードに依存する必要なく、独自のブートコードおよびユーザ独自のフラッシュメモリ管理（ＦＭＭ）コード（損耗平均化、ガベージコレクション、不良ブロック置換、停電復旧などの内の１つまたは複数）を、書き込みし、実行し、記憶することが可能となる。ＦＭＭコードは、限定されるものではないが、電話機の製造業者の代わりにメモリ管理チップの製造業者が書き込むこともできる。ある実施形態では、かかるメモリ管理コードは、どのプロセッサがメモリ管理システムと共に使用されるかが不明な場合、および／または、どのような携帯電話がメモリ管理システムで使用されるかが不明な場合にも、書き込むことができる。
【００２４】
また、ある実施形態は、フラッシュメモリ上のあるアドレス空間または領域を、「保護対象（ｐｒｏｔｅｃｔｅｄ）」として定義し、モデムプロセッサやアプリケーションプロセッサ等のプロセッサが保護領域を上書きするのを防止し、それによりソフトウェアハック（ソフトウェアの不正な改変）を防止できるメモリ管理システムを含む。また、ある実施形態は、メモリに対する無許可アクセスを防止してソフトウェアハックを防止できるように、揮発性ＳＤＲＡＭメモリ、不揮発性フラッシュメモリおよびメモリマネージャを単一パッケージの形態で有しており、この場合、チップピン（任意であるが、テストピンを除く）もバスも設けられないため、ＳＤＲＡＭメモリやフラッシュメモリへのダイレクトアクセスが可能となる。そのためこの実施形態では、ユーザは、チップパッケージを開けたり、内部のチップ回路を精査したりするなどの極端な措置または費用の嵩む措置を講じない限り、ＳＤＲＡＭおよびフラッシュメモリにはメモリマネージャを介してしかアクセスすることはできない。
【００２５】
ある実施形態は、任意のプロセスに関するコードをフラッシュメモリからＳＤＲＡＭメモリにコピーすることができ、および／または、ブートコントローラがプロセッサを起動する前にソフトウェアのセキュリティチェックを行う、セキュアブート機能を備える。
【００２６】
さらに、ある実施形態は、特にフラッシュページの予備部分に関し、ページレベルＥＣＣと誤り訂正符号化（ＥＣＣ）とが行われる２レベルＥＣＣによるデータ保護を実現する。
【００２７】
以下の説明では、例示的な一実施形態として携帯電話などの無線電話に言及することがあるが、本発明がそれに限定されるわけではない。他の例示的な応用例としては、携帯情報端末、携帯型電子ゲーム、デジタルエンターテインメントシステム、携帯型ビデオデバイス、といった、携帯型または非携帯型電子デバイスが挙げられる。本明細書に記載の携帯電話は、スピーカ、キーボード、マイクロフォン、揮発性および不揮発性メモリ、ならびにメモリ制御システムを含むことができるが、必ずしも上記の全ての要素を必要とするわけではない（例えばキーパッドが必要ないこともある）。また、例示のために、特定の例示的なメモリ技術に言及することもあるが、本発明は、そのような例示的なメモリ技術に限定されるわけではない。例えば、本発明は、フラッシュメモリまたはＳＤＲＡＭメモリの使用に限定されるわけではない。他のタイプの揮発性メモリや不揮発性メモリを使用することもできる。また、別段の明示的な指示がない限り、データ転送の文脈の「転送」という表現は、ある位置から別の位置にデータをコピーすることを意味する。
【００２８】
また、本明細書に記載の例示的なプロセスに関しては、必ずしも全てのプロセス状態に到達する必要はなく、また、それらの状態は必ずしも図示の順序で実施される必要はない。さらに、順次実行されるものとして記載する特定のプロセス状態は、並列実行することもできる。また、本明細書に記載する全ての機能または利点が必ずしも必要とされるわけではなく、様々な回路およびアーキテクチャを使用して各機能を実施することができる。ある機能は、プロセッサなどのハードウェアが実行するプログラムコードによって実施されるものとして記載されているが、他の実施形態では、ハードワイヤード回路またはステートマシンを使用して同一または同様の機能を実施することができる。また、ある種の機能は、ハードワイヤード回路によって実施されるものとして記載されているが、他の実施形態では、コード実行用プロセッサを使用して同一または同様の機能を実施することもできる。
【００２９】
図１に示されるように、第１の実施形態では、例示的なメモリシステム（１０２）は、携帯電話の電子システムの一部として提供される（１０１）。メモリシステム（１０２）は、高密度の不揮発性フラッシュメモリ（１０４）と、揮発性ランダムアクセスメモリ（１０５）と、制御回路（１０３）とを含む。以下では、限定のためではなく説明を分かりやすくするために、メモリシステム（１０２）内にあるが制御回路（１０３）の一部ではない揮発性ランダムアクセスメモリを「メインＲＡＭ」と呼ぶ（１０５）。例示的なメモリシステム（１０２）では、フラッシュメモリ（１０４）とメインＲＡＭ（１０５）はどちらも制御回路（１０３）に接続されている。制御回路（１０３）は、以下で詳細に説明するフラッシュメモリ（１０４）を操作するための制御信号を提供するフラッシュメモリコントローラと、やはり以下で詳細に説明するメインＲＡＭ（１０５）を操作しメインＲＡＭ（１０５）とのインターフェースとなる制御信号を供給するメインＲＡＭコントローラと、を含んでいる。以下でより詳細に論じるように、フラッシュメモリコントローラはさらに、フラッシュメモリ（１０４）に記憶されているデータの整合性を保つために、ＥＣＣによる符号化および復号化を実施するＥＣＣ（誤り訂正符号化）回路を有している。
【００３０】
制御回路（１０３）はさらに、物理的におよび／または機能的にメモリシステム（１０２）の外部に所在する１つまたは複数のプロセッサなどの電子機器（１０６）が、メモリシステム（１０２）内のタスクを実施するように制御回路（１０３）を設定しアクティブ化することができるようになる、プロセッサ用のインターフェースを有する。例えば、これらのタスクとしては、機器（１０６）がメインＲＡＭ（１０５）にアクセスするのを可能にすること、およびフラッシュメモリ（１０４）とメインＲＡＭ（１０５）の間の双方向ＤＭＡ（ダイレクトメモリアクセス）転送を実施すること、を挙げることができる。
【００３１】
例示的な一実施形態では、制御回路（１０３）は、任意的に、本明細書では「ＦＭＭプロセス」と呼ぶこともあるユーザ定義のフラッシュメディア管理（ＦＭＭ）アルゴリズムおよびプロセスを実施することも可能である。例えば、ＦＭＭプロセスはそれだけに限らないが、損耗平均化、ガベージコレクション、不良ブロック置換、停電復旧などの内の１つまたは複数を含むことができる。例示的な一実施形態では、かかるＦＭＭプロセスは、メモリシステム（１０２）の外部にある１つ（または複数）のプロセッサの介入を最小限に抑えてまたはそれらの介入なしに、メモリシステム（１０２）によって自律的に実施することができる。フラッシュメモリ（１０４）へのアクセスが発生したときは、ＦＭＭプロセスは、論理アドレス空間を物理アドレス空間にマッピングし、論理ページアドレス（ＬＰＡ）を物理ページアドレス（ＰＰＡ）に翻訳する。
【００３２】
以下で図３に関して詳細に論じるように、例示的な一実施形態では、組込み型の制御回路プロセッサ（ＦＭＭ回路３１１内のＦＭＭ＿Ｐ）が、ＦＭＭプロセスを実施する。制御回路内の揮発性メモリ（ＦＭＭ回路３１１内のＦＭＭ＿ＲＡＭ）は、組込み型の制御回路プロセッサ（ＦＭＭ回路３１１内のＦＭＭ＿Ｐ）によって実行されるＦＭＭプログラムコードを記憶するのに使用される。例示的な一実施形態では、ＦＭＭプログラムコードは、組込み型の制御回路プロセッサ（ＦＭＭ＿Ｐ）に対する命令に基づく一連の命令である。ＦＭＭプロセスは、任意的に、不揮発性フラッシュメモリに記憶されるプログラムコードの形で実装され、一実施形態は、電源投入時のブートプロセスの間に制御回路によってＦＭＭ＿ＲＡＭにロードされる。
【００３３】
再び図１を参照すると、例示的な制御回路（１０３）は、フラッシュメモリ（１０４）とメインＲＡＭ（１０５）の間のデータ転送を実施するＤＭＡ機能を有している。
【００３４】
例示的な制御回路（１０３）は任意的に、電源投入のリセットがディアサートまたは解放されたほぼ直後に、制御回路（１０３）を自動的にアクティブ化またはイネーブルして、ＦＭＭプログラムコードおよびシステム初期化プログラム（ＳＩＰ）コード（ブートコードとも呼ぶ）をフラッシュメモリ（１０４）から制御回路のローカルメモリにロードする、電源投入時のブート制御プロセスも実行する。例えば、ＳＩＰコードは、ＳＩＰコードの受取り用に割り付けられている制御回路用揮発性ＲＡＭ（ＢＯＯＴ＿ＲＡＭ）にロードすることができ、ＦＭＭコードは、ＦＭＭコードの受取り用に割り付けられている制御回路用揮発性ＲＡＭ（ＦＭＭ＿ＲＡＭ）にロードすることができる。次いで、電源投入時のブート制御プロセスは、組込み型の制御回路プロセッサ（ＦＭＭ＿Ｐ）と、外部の電子機器の一部分（例えば選択されたプロセッサ）とをリセットから解放し、それによって各機器は、それぞれの対応する制御回路用メモリから（例えば、それぞれＦＭＭ＿ＲＡＭおよびＢＯＯＴ＿ＲＡＭから）プログラムコードを実行することができるようになる。
【００３５】
以下「システムブートコード」と呼ぶシステム初期化プログラムコードは、第１のプロセッサ（限定されるものではないが１次プロセッサと呼ぶこともある）が電源投入のリセットから解放されたときに携帯電話の電子システムの他のある部分を初期化するために当該１次プロセッサによって実行されるソフトウェアである。例えば、第１のプロセッサは、モデムプロセッサとして動作し、または、アプリケーション用プロセッサとしても動作することができる。同様に、第２のプロセッサ（本明細書では２次プロセッサと呼ぶこともある）は、モデムプロセッサとして動作し、または、アプリケーション用プロセッサとしても動作することができる。
【００３６】
制御回路（１０３）の例示的な第２の実施形態では、制御回路（１０３）内にＢＯＯＴ＿ＲＡＭが存在しない。電源投入時のブート制御プロセスは、電源投入のリセットのほぼ直後に、ＳＩＰコードを制御回路用メモリ（ＢＯＯＴ＿ＲＡＭ）にロードする代わりにメインＲＡＭ（１０５）にロードし、次いで１次プロセッサを解放してメインＲＡＭ（１０５）からプログラムコードを実行する。本実施形態については以下でより詳細に説明する。
【００３７】
第３の実施形態では、ＳＩＰコードに割り付けられる制御回路用メモリが、制御回路内に存在しないか、または、ＳＩＰコード記憶域にも割り付けられない。しかしながら、ＦＭＭ回路３１１は、ブートコントローラ回路（ＢＯＯＴ＿ＣＴＬＲ  ３１３３）の代わりにフラッシュメモリからメインＲＡＭにシステムブートコードをロードする役割を果たす。
【００３８】
メモリシステムの第４の実施形態では、メモリシステム制御回路は、複数のフラッシュメモリコントローラと、複数のメインＲＡＭコントローラとを含んでおり、したがってメモリシステムにおけるより多くのメモリ空間を提供するだけでなく、より高速なデータ転送速度も提供する。
【００３９】
第５の実施形態では、メモリシステム制御回路はさらに、１つまたは複数のディスプレイ（例えば携帯電話のＬＣＤまたはＯＬＥＤ画面）を操作するための制御信号を有し、これらディスプレイは、メモリシステム制御回路から供給された制御信号を介してメモリシステムに接続される。本実施形態では、１次プロセッサは、制御回路をアクティブ化し、外部プロセッサを殆どまたは全く介入させることなく、メインＲＡＭからディスプレイに画像データを転送することができる。
【００４０】
第６の実施形態では、メモリシステム制御回路はさらに、着脱可能な内蔵（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）メモリモジュールまたはカード（例えばＳＤ、コンパクトフラッシュ、メモリスティック、または他の着脱可能なメモリデバイス）を操作するための制御信号を有し、メモリシステム制御回路から供給されたこの制御信号を介してメモリカードがメモリシステムに接続される。メモリカードが携帯電話で使用される場合は、携帯電話はメモリカードの提供するデータ記憶空間にアクセスすることができる。本実施形態では、１次プロセッサは、メモリシステム制御回路をアクティブ化して、プロセッサを殆どまたは全く介入させることなく、メインＲＡＭとメモリカードの間のデータ転送を行うことができる。
【００４１】
第７の実施形態では、メモリシステム制御回路は、メインＲＡＭを必要とせずに動作する。
【００４２】
次に添付の図面を参照して、上記の様々な実施形態についてより詳細に論じる。メモリシステムのアーキテクチャに関する様々な実施形態と同様に、メモリシステム制御回路の設計および動作についても説明する。さらに、１つの例示的な応用例を詳しく説明するために、携帯電話におけるメモリシステムの様々な実施形態についても説明する。
【００４３】
例えば図２を参照すると、第１の実施形態では、以下、限定ではなく便宜のために「メモリシステム」（２０２）と呼ばれるメモリシステムが、無線携帯電話（２０１）の電子システムの一部として設けられている。以下では、携帯電話の電子システムの他の部分を「外部電子機器」（２０６）と呼ぶ。外部電子機器は、他の要素の中でもとりわけ、以下では「外部プロセッサ」（例えばプロセッサ２０７、２０８）と呼ばれる１つまたは複数のプロセッサを含むことができる。メモリシステム（２０２）は、以下では「フラッシュメモリ」（２０４）と呼ばれる高密度の不揮発性フラッシュメモリと、以下では「メインＲＡＭ」（２０５）と呼ばれる揮発性ランダムアクセスメモリと、以下では「制御回路」（２０３）と呼ばれる制御回路とを備える。
【００４４】
フラッシュメモリ（２０４）およびメインＲＡＭ（２０５）は制御回路（２０３）に接続されており、この制御回路（２０３）は、フラッシュメモリ（２０４）に接続されてそれを動作させる制御信号と、メインＲＡＭ（２０５）に接続されてそれを動作させる制御信号と、を備える。制御回路（２０３）はさらにプロセッサインターフェースを有し、同インターフェースを介して、１つまたは複数の外部プロセッサが制御回路（２０３）を設定しアクティブ化しメモリシステム（２０２）内の処理を実施することができるようになる。例示的な処理としては、外部プロセッサがメインＲＡＭ（２０５）にアクセスするのを可能にすること、および、フラッシュメモリ（２０４）とメインＲＡＭ（２０５）の間の双方向ＤＭＡ転送を実施することが挙げられる。制御回路（２０３）は、また、外部電子機器を殆どまたは全く介入させることなく制御回路（２０３）自体が自律的に設定しアクティブ化する処理を行う。
【００４５】
メモリシステム（２０２）の各要素（例えばフラッシュメモリ（２０４）、メインＲＡＭ（２０５）、および／または制御回路（２０３））は、必ずしも個別にパッケージングされた３つの別個のデバイスとして実装する必要はないことを理解されたい。任意的に、これらの要素のサブセットを、単一のＩＣ（集積回路）として実装することも複数のＩＣとして実装することもできる。本発明は、メモリシステム（２０２）の物理的な実装形態の統合レベルを制限するものではない。
【００４６】
さらに、本明細書の記載では、制御回路（２０３）は、制御回路（２０３）の機能全体を説明するのに適した手法で複数の機能ブロックに分割されることも理解されたい。制御回路（２０３）は、様々な通信信号が機能ブロック同士を連結する多くの様々な手法で複数の機能ブロックに分割でき、依然として本明細書に記載される各機能と同じ機能を全て含み得ることが当業者には理解されるであろう。本明細書における諸実施形態の説明は、制御回路（２０３）を複数の機能ブロックに分割する手法またはそれらの機能ブロックを互いに連結する手法を限定するものではない。
【００４７】
本実施形態では、制御回路（２０３）は、制御回路（２０３）の様々な機能を制御および認識可能にする書込み可能な構成／制御レジスタと、読出し可能な結果／状態レジスタとを含む。これらのレジスタは、制御回路（２０３）の様々な機能がどのように構成され、様々なモードで動作することができるかを示す一例として提供されるものであることを理解されたい。より多くのレジスタまたは他の要素を追加することにより、制御回路（２０３）のさらに多くの機能を構成できるようにすることができるし、または、レジスタの数を減少させ、別の形で動作するようにプログラム的に構成可能ではない固定式のハードワイヤード回路に上記の機能の一部を組み込むこともできることが当業者には理解されるであろう。さらに、上記の構成可能な機能は、必ずしも本明細書に記載の例示的な諸実施形態と同じ手法でレジスタにグループ化される必要はない。さらに別法として、制御回路（２０３）の処理に関するより多くの結果および状態を格納するために、より多くの読出し可能なレジスタを追加して制御回路（２０３）の様々な機能の認識可能性を高めることもできる。
【００４８】
例示的なフラッシュメモリ（２０４）は、１つまたは複数のＮＡＮＤフラッシュデバイス（２１０）を含むように図示されているが、ＡＮＤフラッシュデバイスなど他のタイプのフラッシュメモリが使用されてもよい。同様に、例示的なメインＲＡＭ（２０５）は、１つまたは複数のＳＤＲＡＭデバイス（２１１）を含むように図示されているが、ＰＳＲＡＭ（擬似スタティックＲＡＭ）デバイスなど他のタイプの揮発性ランダムアクセスメモリが使用されてもよい。ＰＳＲＡＭは、高密度かつ低ビットコストのＤＲＡＭ（ダイナミックＲＡＭ）セルを含み、ＳＲＡＭ外部インターフェースを有する。
【００４９】
図３は、限定されるものではないが、図２の制御回路（２０３）に対応可能な制御回路（２０３）の一例のブロック図を示している。次に、様々な例示的な制御回路の機能ブロックについて説明し、後段では例示的なメモリシステム（３０１）の処理について説明する。
【００５０】
プロセッサインターフェース回路（ＰＩ）について：
【００５１】
例示的なＰＩ（３０２）は、１つまたは複数の外部プロセッサとのインターフェースを有し、それによって外部プロセッサは、制御回路が実施するタスクを、設定、制御および／または監視し、ならびにメモリシステム（３０１）に記憶されているデータへのアクセスを行う。例示的なＰＩ回路（３０２）は、プロセッサバススレーブ回路（ＰＢＳ）（３０３、３０４）を含む。ＰＳＢは、プロセッサ（３１４、３１５）など対応する個々の外部プロセッサとのインターフェースを有している。ＰＢＳは、それが対応する外部プロセッサのメモリバスに取り付けられており、メモリバスのデータ転送プロトコルに従ってメモリバスにアクセスし、これを制御する。したがって、ＰＢＳは、それが対応する外部プロセッサにとって、外部プロセッサのメモリバスに取り付けられたメモリデバイス（一般に「バススレーブ」として知られる）に見える。
【００５２】
任意的な一実施形態では、外部プロセッサのメモリバスのインターフェイスプロトコルは、モデム携帯電話で多く使用されるメモリバスプロトコルとしてよく知られる「バーストモードＳＲＡＭ」インターフェースである。現在市販されている、このプロトコルに準拠するメモリデバイスの２つの例は、擬似ＳＲＡＭ（ＰＳＲＡＭ）と、バーストモードＮＯＲフラッシュである。言い換えれば、任意的な一実施形態では、各ＰＢＳはそれが対応する外部プロセッサにとって、プロセッサのメモリバスに取り付けられたＰＳＲＡＭデバイスまたはバーストモードＮＯＲフラッシュデバイスに見える。「バーストモード」という用語は、当該インターフェイスプロトコルが１つの転送コマンドおよび１つのアドレスによる転送が開始された後の複数の連続ワードの転送をサポートすることを指す。バースト転送の典型的な長さは、１、４、８、または１６ワードであり、ここで「ワード」とは、メモリバスのデータ信号の幅を指す（例えばあるワードは１６ビットのデータ信号を伴う、メモリバス用の１６ビットのデータである）。このインターフェイスプロトコルを用いることにより、メモリバス上のメモリデバイスが、プロセッサからのコマンドをすぐに実施できる状態でない場合に、「待機（ｗａｉｔ）」信号をアサートしてバス上のデータ転送を一時的に停止することが可能となる。
【００５３】
本実施形態では、バーストモードＳＲＡＭインターフェイスプロトコルが、各外部プロセッサがそれを介してそれぞれ対応するＰＢＳと通信するバスインターフェイスであるものと想定しているが、他のバスインターフェイスプロトコルが使用されてもよいことに留意されたい。例えば、制御回路が外部プロセッサの要求にすぐに応じられない場合に、ＰＢＳが「待機」信号を送出して外部プロセッサの開始したデータ転送を一時的に停止することが可能となる、他のバスインターフェイスプロトコルを使用することもできる。
【００５４】
図３に示される例示的な実施形態では、携帯電話内の第１の外部プロセッサ（３１４）は、「１次プロセッサ」として示され、他の外部プロセッサ（３１５）は、「２次プロセッサ」として示されている。同様に、ＰＩ回路（３０２）内の第１のＰＢＳ（３０３）は、１次プロセッサとのインターフェースを備えるように示されており、「１次ＰＢＳ」（またはＰＰＢＳ）と名付けられている。この例では、他のＰＢＳは、それぞれの対応する２次プロセッサとのインターフェースを備えるように示されており、「２次ＰＢＳ」（またはＳＰＢＳ）（３０４）と名付けられている。外部プロセッサは、ＰＩ（３０２）を介して、ＳＤＲＡＭ（３１８）に記憶されているデータにアクセスすることができ、１次プロセッサ（３１４）は、ＮＡＮＤフラッシュとＳＤＲＡＭとの間のＤＭＡデータ転送といった、制御回路の多くの機能を、設定しアクティブ化し監視する別の役割を果たす。
【００５５】
ＰＰＢＳ（３０３）は、１次プロセッサ（３１４）からのメモリバス信号を、コマンド、データ、およびアドレス情報に翻訳し、次いでその情報をコマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  ３０５）に渡し、コマンドコントローラは、制御回路の該当する部分をアクティブ化してメモリシステム（３０１）内の関連する処理を実施する。ＰＰＢＳ（３０３）はさらに、コマンドコントローラ（３０５）が制御回路の様々な部分から読み出したデータを、メモリバスを介して、待機信号と共に、１次プロセッサ（３１４）に送り返す。言い換えれば、ＰＰＢＳ（３０３）はインターフェースであり、１次プロセッサ（３１４）は同インターフェースを介して制御回路を構成しアクティブ化し監視すると共に、メモリシステム（３０１）に記憶されているデータにアクセスする。
【００５６】
ＰＰＢＳ（３０３）は、１次プロセッサ（３１４）からアクセスされたときに、メモリバス制御信号を、「ＲＡＭ  Ｒｅａｄ（ＲＡＭ読出し）」、「ＲＡＭ  Ｗｒｉｔｅ（ＲＡＭ書込み）」、「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ（レジスタ読出し）」、「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ（レジスタ書込み）」、「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ（ダウンロードＤＭＡ転送）」、または「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ（アップロードＤＭＡ転送）」の内の１つに翻訳し、それをコマンドコントローラ（３０５）に送る。メモリバスのデータおよびアドレス信号は、コマンドに関連するデータおよびアドレス情報を、コマンドコントローラ（３０５）に提供する。メモリバスのデータ信号は双方向であり、そのため書込みデータと読出しデータの両方の情報が通信される。もし制御回路が他のタスクでビジー状態にあり、コマンドが直ちに実行できない場合は、コマンドコントローラ（３０５）は、ＰＰＢＳ（３０３）を介して待機信号を送出し、当該コマンドが実行できるようになるまで、メモリバス上のデータ転送を一時的に停止する。以下、コマンドコントローラ（３０５）がどのように１次プロセッサのコマンドを実行するかについて詳細に説明する。
【００５７】
ＳＰＢＳは、それが対応する２次プロセッサからの、ＳＤＲＡＭ（３１８）へのアクセスを要求するメモリバス信号をＳＤＲＡＭアクセス要求に翻訳し、メモリアクセスディストリビュータ（ＭＡＤ）回路（３０８）に送る役割と、ＳＤＲＡＭ（３１８）から読み出されたデータならびに待機信号を、メモリバスを介してプロセッサに送り返す役割を果たす。ＭＡＤ回路（３０８）は、制御回路の様々な部分からの、ＳＤＲＡＭ（３１８）へのアクセスを求める複数の要求を受け取る役割と、優先順位スキームに基づいて要求元のマスタの内の１つに対して当該要求を許可する役割を果たす。対応する２次プロセッサは、ＳＰＢＳを介してＳＤＲＡＭ（３１８）のデータの読み書きを行うことができる。
【００５８】
ＭＡＤ回路（３０８）が実質上ＳＤＲＡＭ（３１８）へのアクセス権を要求元のＳＰＢＳに直ちに付与しない場合は、ＳＰＢＳは待機信号を送出して、ＭＡＤ回路（３０８）がＳＤＲＡＭ（３１８）へのアクセス権を当該ＳＰＢＳに付与するまで、メモリバス上のデータ転送を停止する。ＳＰＢＳは任意的に、対応する２次プロセッサとＳＤＲＡＭ（３１８）の間で転送されるデータを一時的に記憶するデータバッファ（例えば一般にＦＩＦＯとして知られる先入れ先出しバッファ）を含む。このデータバッファ（図示せず）を用いると、ＳＰＢＳインターフェースのデータ転送速度とＳＤＲＡＭ（３１８）インターフェースのデータ転送速度と間の不整合が許容される。ＳＰＢＳインターフェース上のバースト転送の長さ、およびＳＤＲＡＭ（３１８）インターフェース上のバースト転送の長さは、それぞれＲＥＧＳ回路（３０６）内の２つのレジスタ、すなわちＰＩ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタおよびＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタ、によって定義されている。各インターフェースのデータワードのサイズは、任意的に、当該インターフェースのデータ信号の幅によって決定され、特定のサイズには限定されない。
【００５９】
次に図４を参照すると、例示的なＰＩ回路（４０６）はリセット信号を含んでおり、ここでは、任意的に、各外部プロセッサ（４１２、４１３）毎に独立したリセット信号（４１０、４１１）が示されている。リセット信号（４１０、４１１）は、対応するＰＢＳ（４０７、４０８）を介して外部プロセッサ（４１２、４１３）に与えられる。リセット信号（４１０、４１１）は、任意的に、少なくとも部分的に、制御回路（４０１）によって以下のように制御される。
【００６０】
ＰＰＢＳ（４０７）を介して１次プロセッサ（４１２）に付与されるリセット信号（４１０）は、ＢＯＯＴ＿ＣＴＬＲ回路（４０２）によって生成される。それぞれ対応するＳＰＢＳ（４０８）を介して２次プロセッサへと向かうリセット信号は、ＲＥＧＳ回路（４０４）内のＲＥＳＥＴレジスタ（４０５）からの出力信号である。ＲＥＳＥＴレジスタの電源投入時のデフォルト値は、２次プロセッサをリセット状態に保つ。１次プロセッサ（４１２）は、それ自体がアクティブ状態にあるときに、必要に応じてＲＥＳＥＴレジスタ（４０５）に適切な値を書き込むことができる。つまり、各２次プロセッサのリセットは任意的に、ＲＥＳＥＴレジスタ（４０５）を介し１次プロセッサ（４１２）によって制御され、１次プロセッサ（４１２）のリセットは、制御回路のブート制御回路（ＢＯＯＴ＿ＣＴＬＲ  ４０２）によって制御される。
【００６１】
電源投入のリセット（４１４）がホストデバイス（例えば携帯電話）によってアサートされることにより、制御回路４０１および外部プロセッサ（４１２、４１３）がそれぞれリセットモードに入る。電源投入のリセットがディアサートされると、ＢＯＯＴ＿ＣＴＬＲ回路（４０２）は制御回路（４０１）の様々な機能を初期化するタスクを実行し始めると同時に、それ自体のリセット信号（４１０）をアサート状態に保つことにより、１次プロセッサ（４１２）をリセット状態に保つ。これらの初期化タスクを完了させた後、ＢＯＯＴ＿ＣＴＬＲ回路（４０２）は、リセット信号（４１０）をディアサートして１次プロセッサ（４１２）をリセットから解放する。１次プロセッサ（４１２）がアクティブ状態になると、１つまたは複数の２次プロセッサをリセットから解放し個々のアプリケーションからの要求に応じてＲＥＳＥＴレジスタ（４０５）に適切な値を書き込むことにより、１つまたは複数の２次プロセッサをリセット状態に戻すことが可能となる。
【００６２】
図５を参照すると、例示的な一実施形態では、ＰＩ５０７は、割込み信号を含んでおり、図５には、限定されるものではないが、外部プロセッサ（５１２、５１３）毎に独立した割込み信号（５１５、５１６）が示されている。割り込み信号（５１５、５１６）は、対応するＰＢＳ（５０８、５０９）を介して外部プロセッサ（５１２、５１３）にやりとりされる。割り込み信号（５１５）は、任意的に、少なくとも部分的に、コマンドコントローラ（ＣＭＤ＿ＣＴＬＲ５０２）を介して制御回路（５０１）により以下のように制御される。
【００６３】
ＣＭＤ＿ＣＴＬＲ（５０２）が１次プロセッサ（５１２）から受け取ったコマンドを完了すると、同ＣＭＤ＿ＣＴＬＲ（５０２）は割り込み信号（５０３）、好ましくは、レジスタビットを介して割り込みパルスを記録する、マルチビットレジスタＩＮＴ＿ＲＥＣＯＲＤ（５０５）を含むＲＥＧＳブロック（５０４）とやりとりされるショートパルスを生成する。レジスタＩＮＴ＿ＲＥＣＯＲＤ（５０５）は、１次プロセッサ（５１２）によって読出し可能でありクリア可能である。
【００６４】
一例としてＳＰＢＳ（５０９）は入力ポートを備え、該ポート経由で、対応する２次プロセッサ（５１３）がＲＥＧＳブロック（５０４）に向かう割り込み信号（５１６）を制御回路（５０１）に送り、対応する割当てビットを用いて割り込み信号（５１６）をＩＮＴ＿ＲＥＣＯＲＤレジスタ（５０５）に記録することができる。したがって、ＣＭＤ＿ＣＴＬＲ回路（５０２）および２次プロセッサ（５１３）によって生成された割り込み信号（５０３、５１６）は、ＩＮＴ＿ＲＥＣＯＲＤレジスタ（５０５）の対応ビットの形で別々に記録される。これらの割り込み信号（５０３、５１６）はさらに、ＯＲゲート（５０６）に送られ、同ゲート（５０６）の出力信号はＰＰＢＳインターフェース（５０８）を介して１次プロセッサ（５１２）に向かう。したがって、２次プロセッサまたはＣＭＤ＿ＣＴＬＲ回路（５０２）によって生成された割り込み信号は、ＩＮＴ＿ＲＥＣＯＲＤレジスタ（５０５）に記録され、また１次プロセッサ（５１２）に送られて、１次プロセッサ（５１２）が、レジスタ（５０５）を読み出してどの割り込みが発生したかを発見し、当該割り込みに応答して適当なルーチンを実施することができる。次いで、１次プロセッサ（５１２）は、レジスタ（５０５）が次の割り込みを記録することができるように、レジスタ（５０５）の全部または任意の一部をクリアすることができる。
【００６５】
上述のように、例示的な本実施形態は、それぞれを介して１次プロセッサ（５１２）が各２次プロセッサ（５１３）のリセットステージを制御する仕組みを備えることが好ましい。例示的な本実施形態はさらに、各２次プロセッサ（５１３）が１次プロセッサ（５１２）に割り込むことができるようになる仕組みを備えることが好ましい。しかしながら、ある種の携帯電話においては既に、携帯電話のメモリシステムを必要としないプロセッサ間通信の仕組みが設けられている。例えば、ある種の携帯電話設計では、実際に複数のプロセッサを単一チップ上に実装することができ、単一チップ内の効率的なプロセッサ間通信も容易に実現できる。このため、かかる一実装形態では、携帯電話内の外部プロセッサが互いに制御し合い管理し合う他の仕組みを有する場合は、本実施形態で提供されるリセットおよび割り込みの仕組みを使用せずにおくことも、除外することもできる。
【００６６】
例示的な本実施形態では、ＰＩ回路（５０７）は、ＰＰＢＳ（５０８）と、２つのＳＰＢＳ（５０９）とを含む。携帯電話が１つのプロセッサしか有さない場合は、当該プロセッサが１次プロセッサ（５１２）と見なされ、ＰＰＢＳ（５０８）に接続されることになる。この場合、ＳＰＢＳ（５０９）は使用または実装もされることはない。
【００６７】
次に、例示的なコマンドコントローラ（図３ではＣＭＤ＿ＣＴＬＲ３０５、図５ではＣＭＤ＿ＣＴＬＲ５０２）についてより詳細に説明する。以下の説明では図３のＣＭＤ＿ＣＴＬＲ（３０５）を参照するが、図５のＣＭＤ＿ＣＴＬＲ（５０２）は任意的に、同じまたは同様の機能を実施することができ、任意的に同じまたは同様の回路を含むこともできる。
【００６８】
図３のＣＭＤ＿ＣＴＬＲ３０５は、ＰＰＢＳ（３０３）を介して１次プロセッサ（３１４）から、コマンド、データ、およびアドレス情報を受け取り、次いで少なくとも部分的にＰＰＢＳ（３０３）から受け取られた情報に基づいて制御回路内の該当する機能ブロックまたは回路を調整して、関連するタスクを実施する役割を果たす。コマンドが完了すると、ＣＭＤ＿ＣＴＬＲ  ３０５は、割り込み信号を、ＰＰＢＳ（３０３）を介して１次プロセッサ（３１４）に送る。ＰＰＢＳインターフェース上のバースト転送の長さ、およびＳＤＲＡＭインターフェース上のバースト転送の長さはそれぞれ、ＰＩバースト長レジスタ（ＰＩ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨ）やＳＤＲＡＭバースト長レジスタ（ＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨ）といった１つまたは複数のレジスタによって決めることができる。各インターフェースのデータワードのサイズは、当該インターフェースのデータ信号の幅によって決定され、特定の長さには限定されない。
【００６９】
ＰＰＢＳ（３０３）がＣＭＤ＿ＣＴＬＲ（３０５）に送るように設定された例示的なコマンドは、「ＲＡＭ  Ｒｅａｄ」、「ＲＡＭ  Ｗｒｉｔｅ」、「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」、「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」、「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」、および「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」であり、以下ではこれらのコマンドについて説明する。
【００７０】
「ＲＡＭ  Ｒｅａｄ」および「ＲＡＭ  Ｗｒｉｔｅ」について：例示的な本実施形態では、メモリシステム（３０１）内で１次プロセッサ（３１４）が直接アクセスできる２つの揮発性ＲＡＭが存在し、すなわちブートＲＡＭ（ＢＯＯＴ＿ＲＡＭ  ３０７）およびＳＤＲＡＭ（３１８）が存在するが、他の実施形態は、より少ないメモリを提供することもより多くのメモリを提供することもできる。１次プロセッサ（３１４）に関しては、メモリシステム（３０１）内のＲＡＭメモリ空間は、ＢＯＯＴ＿ＲＡＭ（３０７）にアクセスするためのアドレス範囲と、ＳＤＲＡＭ（３１８）にアクセスするためのアドレス範囲との範囲に分割される。１次プロセッサ（３１４）が、「ＲＡＭ  Ｒｅａｄ」または「ＲＡＭ  Ｗｒｉｔｅ」コマンドを生成すると、ＣＭＤ＿ＣＴＬＲ（３０５）が、ＰＰＢＳ（３０３）を介して受け取られたアドレス情報に応じて、ＢＯＯＴ＿ＲＡＭ（３０７）とＳＤＲＡＭ（３１８）とのどちらにアクセスすべきか判定する。
【００７１】
アドレスがＢＯＯＴ＿ＲＡＭのアドレス範囲内にある場合、ＣＭＤ＿ＣＴＬＲ（３０５）は、１次プロセッサ（３１４）がＢＯＯＴ＿ＲＡＭ（３０７）との間のバースト転送をできるようにする。ＰＰＢＳ（３０３）から受け取られるアドレス情報は、バースト転送時に最初にアクセスすべきＢＯＯＴ＿ＲＡＭ（３０７）の位置も指定する。これは、１次プロセッサ（３１４）がリセットから解放されたほぼ直後に、１次プロセッサ（３１４）がＢＯＯＴ＿ＲＡＭ（３０７）に記憶されているシステムブートコードを実行するための仕組みである。
【００７２】
アドレスがＳＤＲＡＭのアドレス範囲内にある場合、ＣＭＤ＿ＣＴＬＲ（３０５）は、１次プロセッサ（３１４）がＳＤＲＡＭ（３１８）との間のバースト転送できるようにする。ＣＭＤ＿ＣＴＬＲ（３０５）はさらに、１次プロセッサ（３１４）とＳＤＲＡＭ（３１８）との間のデータ転送用の一時記憶域として（一般にＦＩＦＯとして知られる）データバッファを含むことが好ましい。このデータバッファを用いることにより、ＰＰＢＳ（３０３）インターフェースのデータ転送速度とＳＤＲＡＭ（３１８）インターフェースのデータ転送速度との不整合が許容される。
【００７３】
１次プロセッサ（３１４）のＲＡＭ  ＲｅａｄまたはＲＡＭ  Ｗｒｉｔｅコマンドを実行するため、ＣＭＤ＿ＣＴＬＲ（３０５）はまず、ＳＤＲＡＭ（３１８）へのアクセスを求めるアクセス要求をＭＡＤ回路（３０８）に送る。ＭＡＤ回路（３０８）におけるアービトレーションによっては、ＣＭＤ＿ＣＴＬＲ（３０５）は、アクセス要求がＭＡＤ回路（３０８）に送られた直後にＳＤＲＡＭ（３１８）へのアクセス権を付与されることもあれば、付与されないこともある。アクセス権が直ちに付与されない場合は、ＣＭＤ＿ＣＴＬＲ（３０５）はＰＰＢＳ（３０３）に対する「待機」信号をアサートして、ＣＭＤ＿ＣＴＬＲ（３０５）がアクセス権を獲得するまで、１次プロセッサ（３１４）のメモリバスを停止する。「ＲＡＭ  Ｗｒｉｔｅ」コマンドに関しては、ＳＤＲＡＭ（３１８）へのアクセス権が付与された後、ＣＭＤ＿ＣＴＬＲ（３０５）が待機信号をディアサートし、１次プロセッサ（３１４）がＰＰＢＳ（３０３）を介してデータバッファにデータバーストを送ると、ＣＭＤ＿ＣＴＬＲ（３０５）が、ＳＤＲＡＭ＿ＣＴＬＲを介してＳＤＲＡＭ（３１８）に当該データバーストを転送する。
【００７４】
「ＲＡＭ  Ｒｅａｄ」コマンドに関しては、ＣＭＤ＿ＣＴＬＲ（３０５）は、ＳＤＲＡＭ（３１８）へのアクセス権が付与された後も引き続き待機信号をアサートしながら、ＳＤＲＡＭ＿ＣＴＬＲを介してデータバッファにＳＤＲＡＭ（３１８）内のデータバーストをコピーする。ＳＤＲＡＭ（３１８）のデータがデータバッファに入力されると、ＣＭＤ＿ＣＴＬＲ（３０５）は、待機信号をディアサートし、１次プロセッサ（３１４）がデータバッファからデータバーストを読み出すことができるようにする。これは、１次プロセッサがＳＤＲＡＭ（３１８）に記憶されているプログラムコードを実行すると共に、ＳＤＲＡＭ（３１８）に記憶されているユーザデータにアクセスするための仕組みである。
【００７５】
ＢＯＯＴ＿ＲＡＭ（３０７）は、電源投入後に例示的な１次プロセッサ（３１４）など多くのプロセッサがそこからプログラムコードを実行するＲＡＭ空間の部分に該当し、また、多くのプロセッサはリセットから解放された後に最初の命令をアドレスゼロからフェッチするように設計されているので、ＢＯＯＴ＿ＲＡＭ（３０７）のアドレス範囲は任意的に、アドレスゼロから始まるメモリマップのより低位の部分とされる。アドレス範囲は、１次プロセッサ（３１４）がＢＯＯＴ＿ＲＡＭ（３０７）にアクセスすることになるのかそれともＳＤＲＡＭ（３１８）にアクセスすることになるのかを判定する唯一の方法ではないことを理解されたい。他の例示的な方法としてはそれだけに限らないが、１次プロセッサ（３１４）によって書込み可能であり、１次プロセッサ（３１４）のデータアクセスの宛先がそれ自体の値で判定される設定レジスタを実装する方法が挙げられる。
【００７６】
「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」および「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」について：
これらの２つのコマンドに関して、ＣＭＤ＿ＣＴＬＲ（３０５）は、ＰＰＢＳ（３０３）からのアドレス情報でアドレス指定されたＲＥＧＳブロック（３０５）内のレジスタの書込みまたは読出しを行う。書込みデータは、ＰＰＢＳ（３０３）を介してメモリバスのデータ信号によって付与され、ＲＥＧＳから読み出されたデータは、ＰＰＢＳ（３０３）を介してデータ信号に乗せて送り返され、１次プロセッサ（３１４）によって読み出される。これは、１次プロセッサ（３１４）が制御回路（３０１）の動作を制御し監視するために、ＲＥＧＳブロック（３０６）内のレジスタの読み書きを行うための仕組みである。
【００７７】
「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」および「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」について：
これらの２つのコマンドにより、ＣＭＤ＿ＣＴＬＲ（３０５）がＤＭＡコントローラ（ＤＭＡ＿ＣＴＬＲ  ３１２）をアクティブ化させ、それぞれＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）またはＳＤＲＡＭ（３１８）からＮＡＮＤフラッシュメモリ（３１７）へのＤＭＡ転送（アップロード）を実施させる。ＣＭＤ＿ＣＴＬＲ（３０５）によってアクティブ化された後に、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＲＥＧＳブロック（３０６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタからＤＭＡ転送に関連する情報を取得し、好ましくはＮＡＮＤフラッシュページ数で記述される移動すべきデータ量、ＮＡＮＤフラッシュの論理ページアドレス（ＬＰＡ）や、ＳＤＲＡＭの開始アドレスなどを取得する。
【００７８】
したがって、例えば１次プロセッサ（３１４）は、ＤＭＡ＿ＣＯＮＦＩＧレジスタに適切な値をロードした後に、ＣＭＤ＿ＣＴＬＲ（３０５）に対してＤＭＡコマンドを発行する。ＤＭＡ＿ＣＴＬＲ（３１２）によるＤＭＡ転送が完了すると、ＣＭＤ＿ＣＴＬＲ（３０５）は、ＰＰＢＳインターフェースを介して１次プロセッサ（３１４）にＤＭＡ転送の完了を示す割り込み信号を送る。
【００７９】
次に、レジスタ（ＲＥＧＳ  ３０６）の一実施形態について説明する。
【００８０】
例示的なＲＥＧＳブロック（３０６）は、１次プロセッサ（３１４）の制御下にある機能ブロックの動作モードを構成する設定レジスタと、制御回路によって実施される処理の結果または状態を格納する状態レジスタとを含む。ＲＥＧＳブロック（３０６）は、ＰＰＢＳ（３０３）インターフェースを介して１次プロセッサ（３１４）から「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」または「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」コマンドを受け取った後は、ＲＥＧＳブロック（３０６）内のレジスタの書込みまたは読出しを行うＣＭＤ＿ＣＴＬＲ（３０５）によって制御される。言い換えれば、ＲＥＧＳブロック（３０６）は、制御回路によって実施される処理を設定しアクティブ化し監視する機能を１次プロセッサ（３１４）にもたらす。
【００８１】
例示的な一実施形態では、ＲＥＧＳブロック（３０６）は、次のレジスタの内の１つまたは複数を含む。ＤＭＡ＿ＣＯＮＦＩＧレジスタは、ＮＡＮＤフラッシュの開始ＬＰＡ、ＳＤＲＡＭの開始アドレス、転送すべきＮＡＮＤフラッシュページ数など、ＮＡＮＤフラッシュメモリ（３１７）とＳＤＲＡＭ（３１８）の間のＤＭＡ転送に関する情報を格納する。ＰＩ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタは、ＰＩ回路内の各ＰＢＳインターフェースに関するバースト転送の長さを定義する。ＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタは、ＳＤＲＡＭインターフェースに関するバースト転送の長さを定義する。ＳＤＲＡＭ＿ＰＡＲＴＩＴＩＯＮレジスタは、各２次プロセッサがアクセスするＳＤＲＡＭの開始アドレスを定義し、各２次プロセッサには任意的に、それぞれ独自のＳＤＲＡＭ開始アドレスが割り当てられる。ＲＥＳＥＴレジスタは、各２次プロセッサのリセットを個別に制御する。ＭＡＤ＿ＰＲＩＯＲＩＴＹレジスタは、ＳＤＲＡＭへのアクセスを求めるＳＤＲＡＭマスタのアービトレーションの優先順位を定義する。
【００８２】
ＩＮＴ＿ＲＥＣＯＲＤレジスタは、ＣＭＤ＿ＣＴＬＲ（３０５）および各２次プロセッサからの割り込み信号を記録する。ＰＯＷＥＲ＿ＯＦＦレジスタは、１次プロセッサ（３１４）によって「ａｃｔｉｖｅ」コマンドが書き込まれたときにＦＭＭ回路（３１１）をアクティブ化して、メモリシステムの電源遮断工程（ｐｏｗｅｒ−ｏｆｆ  ｐｒｏｃｅｄｕｒｅ）を実施する。ＦＭＭ回路（３１１）が電源遮断工程を完了させたときに、ＰＯＷＥＲ＿ＯＦＦレジスタの値は、ＦＭＭ回路（３１１）からの信号により当該レジスタの電源投入時のデフォルト値である「ｉｄｌｅ」に戻される。任意的に、追加的な書込み可能な構成／制御レジスタおよび／または読出し可能な結果／状態レジスタを追加して、１次プロセッサが制御回路を制御する能力を高めることもできる。上述のレジスタは制御回路の処理を説明する例として提示されるものであり、本発明を限定するものではない。
【００８３】
次に図３を参照して、ＢＯＯＴ  ＲＡＭ（ＢＯＯＴ＿ＲＡＭ３０７）の一実施形態について説明する。
【００８４】
例示的な本実施形態では、ＢＯＯＴ＿ＲＡＭ（３０７）は、１次プロセッサ（３１４）がリセットから解放されたときに実行する「システム初期化」のプログラムコードが記憶されるスタティックランダムアクセスメモリ（ＳＲＡＭ）である。ＢＯＯＴ＿ＲＡＭ（３０７）は、ＢＯＯＴ＿ＣＴＬＲ（３１３）またはＣＭＤ＿ＣＴＬＲ（３０５）の制御下にあるが、任意的に、同時に両方のコントローラの制御下に入ることはない。電源投入のリセット後に、ＢＯＯＴ＿ＣＴＬＲ（３１３）はデフォルトで、ＢＯＯＴ＿ＲＡＭ（３０７）にアクセスすることができ、制御回路を初期化する一環として、制御回路の該当する部分をアクティブ化して、「システム初期化」プログラムコードをＮＡＮＤフラッシュからＢＯＯＴ＿ＲＡＭ（３０７）にロードする。制御回路が初期化された後に、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＢＯＯＴ＿ＲＡＭ（３０７）の制御をＣＭＤ＿ＣＴＬＲ（３０５）の制御に代え、１次プロセッサ（３１４）をリセットから解放し、１次プロセッサ（３１４）が、ＣＭＤ＿ＣＴＬＲ（３０５）を介してＢＯＯＴ＿ＲＡＭ（３０７）に記憶されているプログラムコードを実行できるようにする。
【００８５】
次に図３を参照して、メモリアクセスディストリビュータ（ＭＡＤ３０８）の例示的な一実施形態について説明する。
【００８６】
制御回路には、ＳＤＲＡＭ（３１８）へのアクセスを求める要求を行うことができる複数の機能ブロック（例えばＣＭＤ＿ＣＴＬＲ（３０５）、ＤＭＡ＿ＣＴＬＲ（３１２）、およびＳＰＢＳ）が存在する。以下では、ＳＤＲＡＭにアクセスすることができる任意の機能ブロックを「ＳＤＲＡＭマスタ」または単に「マスタ」と呼ぶ。ＭＡＤ回路（３０８）は、複数のＳＤＲＡＭマスタからの要求間のアービトレーションを行い、優先順位スキームにに従って最も高い優先順位を有するマスタにアクセス権を付与する。優先順位スキームは、任意的に、ＲＥＧＳブロック（３０６）内のＭＡＤ＿ＰＲＩＯＲＩＴＹレジスタを介して構成することができる。マスタにアクセス権を付与すると、ＭＡＤ回路（３０８）は、アクセス権の付与されたマスタ（ｇｒａｎｔｅｄ  ｍａｓｔｅｒ）がＳＤＲＡＭ＿ＣＴＬＲ（３０９）に直接接続されているのと同じように、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）へアクセスできるようになり、他のマスタがＳＤＲＡＭ＿ＣＴＬＲ（３０９）にアクセスするのをブロックする。次いで、アクセス権の付与されたマスタは、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）の利用を開始して、ＳＤＲＡＭアドレスや転送タイプ（すなわち読出しまたは書込み）といった転送に関する情報をＳＤＲＡＭ＿ＣＴＬＲ（３０９）に送ることによって、ＳＤＲＡＭ（３１８）との間のバースト転送を実施する。ＳＤＲＡＭ（３１８）に対する書込みバーストに関しては、アクセス権の付与されたマスタは、ＭＡＤ回路（３０８）を介してＳＤＲＡＭ＿ＣＴＬＲ（３０９）にデータバーストを供給し、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、当該データをＳＤＲＡＭ（３１８）に書き込む。ＳＤＲＡＭ（３１８）からの読出しバーストに関して、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、ＳＤＲＡＭ（３１８）からデータバーストを読み出し、ＭＡＤ回路（３０８）を介してアクセス権の付与されたマスタに当該データを送る。
【００８７】
次に図３を参照して、ＳＤＲＡＭコントローラ（ＳＤＲＡＭ＿ＣＴＬＲ  ３０９）について説明する。
【００８８】
ＳＤＲＡＭ＿ＣＴＬＲ回路（３０９）は、ＳＤＲＡＭインターフェースのプロトコルに従ってＳＤＲＡＭを操作するために、制御信号、データ信号、およびアドレス信号をＳＤＲＡＭに供給する役割を果たす。ＳＤＲＡＭ（３１８）インターフェースのデータ転送プロトコルは従来技術でよく知られているので、本発明では説明しない。ＳＤＲＡＭ＿ＣＴＬＲ（３０９）が実施する処理としては、ＳＤＲＡＭ（３１８）との間のデータバーストの読み書きを行うことと、ＳＤＲＡＭインターフェースのプロトコルに従って必要に応じてＳＤＲＡＭ（３１８）のプリチャージおよびリフレッシュを行うこととが挙げられる。ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、ＭＡＤブロックを介してアクセス権の付与されたＳＤＲＡＭマスタから、書込み転送に関する書込みデータ、ＳＤＲＡＭアドレス、ならびに転送タイプ（すなわち読出しまたは書込み）など、特定の転送に付随する情報を取得する。ＭＡＤ回路（３０８）は、ＳＤＲＡＭ（３１８）へのアクセスを要求するＳＤＲＡＭマスタ間のアービトレーションを行い、アクセス権の付与されたマスタがデータ、アドレス、および転送タイプ情報をＳＤＲＡＭ＿ＣＴＬＲ（３０９）に送ることができるようにする。ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、制御回路の電源投入の間にデフォルト値がロードされ、標準動作の間に１次プロセッサ（３１４）によって変更できるＲＥＧＳブロック（３０６）内のＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタから、バースト転送の長さを取得する。
【００８９】
任意的な一実施形態として、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、各２次プロセッサがアクセスするＳＤＲＡＭ（３１８）内のアドレス範囲を１次プロセッサ（３１４）が指定するための「メモリパーティション」機能を有している。ＳＤＲＡＭへのアクセスが２次プロセッサによって開始される度に、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、当該２次プロセッサのアドレスにオフセット値を追加して、ＳＤＲＡＭアクセス用の真のアドレスとして使用される合計値を取得する。ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、１次プロセッサ（３１４）が適切な値をロードすることができるＲＥＧＳブロック（３０６）内のＳＤＲＡＭ＿ＰＡＲＴＩＴＩＯＮレジスタから、各２次プロセッサに関するオフセット値を取得する。
【００９０】
したがって、本実施形態では、各２次プロセッサから見ると、それぞれがアドレスゼロから開始するアドレス範囲でＳＤＲＡＭアクセスを実施しているように見えるものの、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は実際には、１次プロセッサ（３１４）によって指定されたオフセットアドレスから始まるアドレス範囲で３つのＳＤＲＡＭアクセスを実施している。この仕組みを用いることにより、複数の２次プロセッサが、ＳＤＲＡＭ（３１８）の様々なアドレス範囲のすべてのアレンジに適合するように２次プロセッサのソフトウェアを修正する必要なしに、ＳＤＲＡＭのメモリ空間の様々なアドレス範囲で動作することが可能となる。各外部プロセッサのアドレス範囲は、アプリケーション次第で、互いに重複することもあれば、重複しないこともある。重複するアドレス範囲が存在する場合は、その重複したアドレス範囲を２つの外部プロセッサの共用メモリ領域として使用して情報を交換することができる。１次プロセッサ（３１４）は、任意的に、全てのＳＤＲＡＭアドレスにアクセスすることができ、ＳＤＲＡＭ（３１８）を利用する任意の２次プロセッサと情報を交換することができる。
【００９１】
また、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は任意的に、複数のＳＤＲＡＭデバイスを操作することもできる。一実施形態としては、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）が、複数の出力ポートを介して制御回路の外部の回路に対する複数のチップ選択信号を駆動し、所定のチップ選択信号が個々のＳＤＲＡＭデバイスのチップ選択入力ポートに接続される。複数のＳＤＲＡＭデバイスは任意的に、チップ選択信号を除くＳＤＲＡＭ＿ＣＴＬＲ（３０９）からの他の、制御信号、アドレス信号、およびデータ信号を共用する。ＳＤＲＡＭのメモリ空間は、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）内に構築された、あるいは、マップメモリに記憶されたアドレスマップに応じて、それぞれがチップ選択信号に対応する複数のアドレス範囲に分割される。ＳＤＲＡＭ＿ＣＴＬＲ（３０９）は、ＭＡＤ回路（３０８）を介してアクセス権の付与されたマスタから受け取られたアドレスがどのアドレス範囲に入るかに基づいて、アクセスすべきＳＤＲＡＭデバイスを判定し、すなわちアサートすべきチップ選択信号を判定する。この仕組みを用いると、単一のＳＤＲＡＭデバイスによって提供される最大限の空間よりも広くメモリシステム（３０１）におけるＳＤＲＡＭのメモリ空間を拡大することができる。
【００９２】
次に図３を参照して、フラッシュメモリコントローラ（ＦＬＡＳＨ＿ＣＴＬＲ３１０）について説明する。
【００９３】
ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュインターフェイスのデータ転送プロトコルに従って、ＮＡＮＤフラッシュメモリを操作する制御信号を供給する役割を果たす。
【００９４】
ＮＡＮＤフラッシュインターフェイスのデータ転送プロトコルはよく知られているので、本明細書では詳細に説明しない。また、「データ入力」、「自動プログラム」、「読出しモード」、「予備読出しモード」、「ブロック消去」、「デバイスリセット」など、ＮＡＮＤフラッシュインターフェイスを介してＮＡＮＤフラッシュデバイスをアクティブ化して操作することができる様々な機能もよく知られているので、本明細書では詳細に説明しない。
【００９５】
ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＢＯＯＴ＿ＣＴＬＲ（３１３）またはＦＭＭの制御下にあるものの、限定されるものではないが、両方のコントローラの制御下に同時に入ることはない。電源投入のリセットがディアサートされた後に、ＢＯＯＴ＿ＣＴＬＲ（３１３）はデフォルトで、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を制御し、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用してＮＡＮＤフラッシュメモリ（３１７）からＦＭＭプログラムコードおよびシステムブートコードを読み出す。次いで、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）の制御をＦＭＭ（３１１）に切り換え、ＦＭＭ（３１１）は、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用して、ＮＡＮＤフラッシュメモリとＳＤＲＡＭ（３０８）の間のＤＭＡ転送の際にＮＡＮＤフラッシュにアクセスするか、または、ＮＡＮＤフラッシュメモリ（３１７）からのアドレス翻訳テーブルの読出しやＮＡＮＤフラッシュメモリ（３１７）内のアドレス翻訳テーブルの更新といったＦＭＭブックキーピングタスクを実施する。
【００９６】
ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、任意的にＳＲＡＭの形をとることができるバッファを含んでおり、以下ではこれをＰＡＧＥ＿ＢＵＦＦと呼ぶこともある。ＰＡＧＥ＿ＢＵＦＦは、ＮＡＮＤフラッシュページとやりとりされるデータ用の一時記憶域として使用され、また、ＥＣＣ誤り訂正が実施されている間、データを記憶するのに使用される。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＢＯＯＴ＿ＣＴＬＲ（３１３）の制御下にある間は、ＰＡＧＥ＿ＢＵＦＦは、ＢＯＯＴ＿ＣＴＬＲ（３１３）からアクセス可能となる。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＦＭＭ（３１１）の制御下にある間は、ＰＡＧＥ＿ＢＵＦＦは、ＦＭＭ（３１１）またはＤＭＡ＿ＣＴＬＲ（３１２）からアクセス可能となる。ＦＭＭ（３１１）がＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用してＮＡＮＤフラッシュメモリ（３１７）とＳＤＲＡＭ（３１８）の間のＤＭＡ転送を実施しているときは、ＤＭＡ＿ＣＴＬＲ（３１２）がＰＡＧＥ＿ＢＵＦＦにアクセスすることができる。ＦＭＭ（３１１）がＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用して通常のＦＭＭブックキーピングタスクを実施しているときは、ＦＭＭ（３１１）はＰＡＧＥ＿ＢＵＦＦにアクセスすることができる。
【００９７】
ＦＬＡＳＨ＿ＣＴＬＲ（３１０）はさらに、ＥＣＣ符号化、復号化、および訂正を実施してＮＡＮＤフラッシュメディアがそれ自体の記憶データに導入する誤りに対処し、それらの発生を防ぐ、誤り訂正符号化（ＥＣＣ）回路も含む。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＰＡＧＥ＿ＢＵＦＦからＮＡＮＤフラッシュデバイスにデータを転送しているときに、ＥＣＣ回路は、符号化（例えば転送データに基づくパリティ符号の計算）を実施する。また、パリティ符号はＮＡＮＤフラッシュデバイスに転送され記憶される。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＮＡＮＤフラッシュからＰＡＧＥ＿ＢＵＦＦにデータおよびパリティ符号を転送しているときに、ＥＣＣ回路は、復号化を実施し、転送データの誤りが発生しているかどうか判定する。もし誤りが発見された場合、ＥＣＣ回路は、例えばＰＡＧＥ＿ＢＵＦＦに対するリード−モディファイ−ライトを実施することによって当該データの訂正を実施する。
【００９８】
さらに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は任意的に、ＢＯＯＴ＿ＣＴＬＲ（３１３）およびＦＭＭ（３１１）がＮＡＮＤフラッシュデバイスを操作するのに必要な情報が当該レジスタから提供されるようにプログラムすることができる設定レジスタ（図示せず）も含む。Ｆ＿ＣＯＭＭＡＮＤレジスタは、「ｐａｇｅ  ｗｒｉｔｅ（ページ書込み）」、「ｐａｇｅ  ｒｅａｄ（ページ読出し）」、「ｐａｇｅ  ｓｐａｒｅ  ｒｅａｄ（ページの予備読出し）」、「ｂｌｏｃｋ  ｅｒａｓｅ（ブロック消去）」、「ｄｅｖｉｃｅ  ｒｅｓｅｔ（デバイスリセット）」といった、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）が実施すべき処理のタイプを示す情報を格納する。ＰＰＡレジスタは、「ｐａｇｅ  ｒｅａｄ」、「ｐａｇｅ  ｗｒｉｔｅ」、「ｂｌｏｃｋ  ｅｒａｓｅ」などアドレス特有の処理に必要となる物理ページアドレス（ＰＰＡ）を格納する。Ｆ＿ＩＤＬＥレジスタは、書込みを行うことによってＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアイドルモードから解放することができ、読出しを行うことによってＦＬＡＳＨ＿ＣＴＬＲ（３１０）の状態を取得することができる。このレジスタの電源投入時のデフォルト値は任意的に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアイドルモードにあることを示す「ｉｄｌｅ」とされる。
【００９９】
Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」コマンドが書き込まれたときは、Ｆ＿ＩＤＬＥレジスタは、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアイドルから解放してＦ＿ＣＯＭＭＡＮＤレジスタで指定されている処理を実施する。この処理が完了すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、レジスタの値を「ｉｄｌｅ」に戻す。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される前に、Ｆ＿ＣＯＭＭＡＮＤレジスタと、任意的にＰＰＡレジスタとがセットアップされ、それらのレジスタに適切な値が書き込まれる。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化された後は、Ｆ＿ＩＤＬＥレジスタをポーリングしてＦＬＡＳＨ＿ＣＴＬＲ（３１０）の動作状態を確認することができる。さらに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化する値である「ａｃｔｉｖｅ」がＦ＿ＩＤＬＥレジスタに書き込まれる前に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアイドルモードにあることを保証する値「ｉｄｌｅ」がＦ＿ＩＤＬＥレジスタに格納されるまで、Ｆ＿ＩＤＬＥレジスタのポーリングが行われる。
【０１００】
次に図６を参照すると、１レベルＥＣＣに関するＮＡＮＤフラッシュページの例示的な一構成を示すブロック図が示されている。例示的なＮＡＮＤフラッシュページ（６０１）は、「ユーザ部分」（６０２）と、「予備部分」（６０３、６０４）とに分割される。ユーザ部分（６０２）はその名のとおり、ユーザデータを記憶するのに使用される。予備部分（６０３、６０４）は、ＥＣＣパリティ符号（６０４）と、任意的に予備データ（６０３）とを記憶するのに使用される。限定ではなく例示として、予備データは、ファイルシステムフラグまたはＦＭＭ回路のブックキーピングレコードの内の１つまたは複数を含むことができる。
【０１０１】
現在、商用利用可能な多くのＮＡＮＤフラッシュデバイスでは、これらの２つの部分は、各ページが５２８バイトを含む場合には、ユーザ部分が各ページの低位５１２バイトを占有し、予備部分がその上位１６バイトを占有するように構成されており、また、各ページが２１１２バイトを含む場合には、ユーザ部分が各ページの低位２０４８バイトを占有し、予備部分がその上位６４バイトを占有するように構成されている。他のいくつかの商用利用可能なフラッシュデバイスでは、フラッシュデバイスの製造業者によってページが２つの部分に分割されないこともある。この場合にも、ページは、フラッシュデバイスのユーザによって一方の部分が「ユーザ部分」として使用され、他方の部分が「予備部分」として使用される形で、概念上２つの部分に分割されることもある。任意的に、ＥＣＣを必要とせず、ファイルシステムフラグやＦＭＭのブックキーピングレコードといったシステム関係情報をフラッシュメモリに記憶する必要もないフラッシュメモリデバイスまたはシステムでは、フラッシュデバイスは任意的に、各ページの「予備部分」を含まず、ページ全体が「ユーザ部分」と見なされる。
【０１０２】
図６は、ページのＥＣＣパリティ符号がどのようにページに記憶されるかに関する一例も示している。この例では、ＥＣＣ機能は１レベルＥＣＣと仮定されている。言い換えれば、ＥＣＣパリティ符号は、１つの特定のＥＣＣ符号に基づいて、「ユーザ部分」に記憶されているデータから計算され、任意的に「予備部分」に記憶されているデータから計算される。ＥＣＣパリティ符号の計算の基となるデータならびにＥＣＣパリティ符号自体は一般に、「符号語（ｃｏｄｅｗｏｒｄ）」として知られる。したがって、ページ書込み処理の際は、１レベルＥＣＣは１ページに単一の符号語を記憶することになる。ページ読出し処理の際にＥＣＣが誤り検出および誤り訂正を実施するには、ページから符号語全体を読み出す必要がある。したがって、もしページから予備部分のデータのような符号語の断片しか読み出されない場合には、１レベルＥＣＣによるデータ保護は実現されない。
【０１０３】
ＦＭＭアルゴリズムおよびプロセスが実施できるタスクの１つは、ユーザ部分のデータを読み出すことなく、ファイルシステムフラグやＦＭＭのブックキーピングレコードの一部といったシステム関係情報を取得するために、ＮＡＮＤフラッシュページの予備部分からデータを読み出すことである。この場合、１レベルＥＣＣによるデータ保護が実現されず、ＦＭＭアルゴリズムおよびプロセスにおいて破損情報が受け取られることもある。したがって、ＥＣＣ機能は任意的に、２レベルＥＣＣとして実装することもできる。
【０１０４】
図７に示されるように、例示的な一実施形態では、ＥＣＣ回路は、一方のレベルが予備部分のデータ（７０３）を保護し、他方のレベルがユーザ部分のデータと予備部分のデータの両方を含むページ全体（７０１）を保護する、ＮＡＮＤフラッシュページ（７０１）に関する２レベルのデータ保護を有している。予備部分の保護のために、ＥＣＣ回路は、予備部分に記憶されるデータに基づくＥＣＣパリティ符号（予備パリティ符号７０４）を計算する。ページ全体の保護のために、ＥＣＣは、ユーザ部分（７０２）と予備部分（７０３、７０４、および７０５）の両方に記憶されるデータに基づくＥＣＣパリティ符号（ページパリティ符号７０５）を計算する。
【０１０５】
図３に示されるＦＬＡＳＨ＿ＣＴＬＲ（３１０）のようなＦＬＡＳＨ＿ＣＴＬＲが、ユーザ部分にユーザデータを書き込み、予備部分に予備データを書き込むことに加えて、ページ書込みを実施したときは、２つのＥＣＣパリティ符号（予備パリティ符号（７０４）およびページパリティ符号（７０５））も予備部分に書き込まれる。言い換えれば、２つのＥＣＣ符号語は、フラッシュページ単位で記憶される。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＮＡＮＤフラッシュメモリからページ全体を読み出した場合、ＥＣＣ回路は、ページパリティ符号に基づいてページ全体の誤りを検出し訂正する。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページの予備部分だけを読み出した場合、ＥＣＣ回路は、予備パリティ符号に基づいて予備データの誤りを検出し訂正する。
【０１０６】
ページパリティ符号は任意的に、予備部分のデータではなく、ユーザ部分のデータだけに基づいて計算することができ、予備パリティ符号は任意的に、予備部分のデータに基づいて計算される。この場合、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ全体を読み出したときに、ＥＣＣは、ページパリティ符号と予備パリティ符号の両方に基づいて誤り検出訂正を実施して、それぞれユーザ部分のデータと予備部分のデータの保護を実現する。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がユーザ部分のページおよび関連するページパリティ符号だけを読み出したときは、ＥＣＣ回路は任意的に、ページパリティ符号だけに基づいて誤り検出訂正を実施する。
【０１０７】
ＥＣＣ回路によって使用される誤り訂正符号は任意的に、ブロック符号とされるが、本発明は特定のＥＣＣ符号あるいは特定のＥＣＣブロック符号に限定されるものではない。任意的に使用できるよく知られたブロック符号の２つの例は、リードソロモン符号と、ハミング符号である。ブロック符号に関する符号化および復号化アルゴリズムはよく知られているので、本明細書では詳細に説明しない。２レベルＥＣＣが使用される場合は、２つのＥＣＣパリティ符号は任意的に、２つの別々のブロック符号に基づくものとされる。
【０１０８】
図３を再び参照すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＦＭＭ回路（３１１）またはＢＯＯＴ＿ＣＴＬＲから受け取られた物理ページアドレス（ＰＰＡ）に基づいて、ＮＡＮＤフラッシュのページ読出しまたはページ書込み処理を実施するが、論理ページアドレス（ＬＰＡ）は認識していない。ＢＯＯＴ＿ＣＴＬＲは任意的に、例示的な一実施形態にあるように、ＮＡＮＤフラッシュメモリ（３１７）を読み出したときに、ＮＡＮＤフラッシュメモリ（３１７）のブートセクションを読み出し、ＰＰＡを直接生成するが、ブートセクション内のページについてはＬＰＡとＰＰＡの区別はない。したがって、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を直接使用して、論理アドレスから物理アドレスへの翻訳を実施する必要なく、ＮＡＮＤフラッシュメモリ（３１７）にアクセスすることができる。しかし、ＮＡＮＤフラッシュメモリ（３１７）とＳＤＲＡＭ（３１８）の間のＤＭＡ転送の際に、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＦＭＭ回路（３１１）に対して論理ページアドレス（ＬＰＡ）を発行することによって各ＮＡＮＤフラッシュページのアクセスをアクティブ化し、ＦＭＭ回路（３１１）は、ＬＰＡをＰＰＡに翻訳し、次いでＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用して、ＰＰＡでアドレス指定されたＮＡＮＤフラッシュページにアクセスする。
【０１０９】
さらに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は任意的に、複数のＮＡＮＤフラッシュデバイスを操作することができる。例示的な一実施形態では、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）はこれを達成するために、複数の出力ポートを介して制御回路の外部の回路に対する複数のチップ選択信号を駆動する。例示的な本実施形態では、所定のチップ選択信号は、個々のＮＡＮＤフラッシュデバイスの対応するチップ選択入力ポートに接続される。複数のＮＡＮＤフラッシュデバイスは任意的に、チップ選択信号を除くＦＬＡＳＨ＿ＣＴＬＲ（３１０）との間の他の制御信号およびＩ／Ｏ信号を共用する。ＮＡＮＤフラッシュの記憶空間は、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）の回路でハードワイヤされたまたはプログラマブルメモリに記憶されているアドレスマップに従って、それぞれチップ選択信号に対応する複数のアドレス範囲に分割される。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＢＯＯＴ＿ＣＴＬＲまたはＦＭＭ回路（３１１）から受け取られたＰＰＡがどのアドレス範囲に入るかに基づいて、アクセスすべきＮＡＮＤフラッシュデバイスを判定し、すなわちアサートすべきチップ選択信号を判定する。この仕組みを用いると、単一のＮＡＮＤフラッシュデバイスによって提供される最大限の空間よりも広くメモリシステムにおけるＮＡＮＤフラッシュの記憶空間を拡大することができる。
【０１１０】
次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化して操作することができるいくつかの例示的な処理について説明する。本明細書に記載の処理に加えて、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）はさらに、１つ（または複数）のＮＡＮＤフラッシュデバイス対するより多くの処理を実施しうる。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は任意的に、本明細書に記載されるものとは別のまたは異なる機能を実施することもできる。例示的な一実施形態では、Ｆ＿ＣＯＭＭＡＮＤレジスタの値は、ＮＡＮＤフラッシュデバイスが実施する処理ではなく、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）の実施する処理を指定する。
【０１１１】
「ｐａｇｅ  ｗｒｉｔｅ」処理は、ＰＡＧＥ＿ＢＵＦＦ内のデータをＰＰＡでアドレス指定されたＮＡＮＤフラッシュページに転送するものである。典型的には、「ｐａｇｅ  ｗｒｉｔｅ」処理がアクティブ化される前に、ユーザ部分のデータと、場合によっては予備部分のデータと、を含むＮＡＮＤフラッシュページに書き込むべきデータが、ＰＡＧＥ＿ＢＵＦＦにロードされる。まず、ＰＰＡレジスタにＰＰＡが書き込まれ、Ｆ＿ＣＯＭＭＡＮＤレジスタに「ｐａｇｅ  ｗｒｉｔｅ」が書き込まれる。次いで、Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」が書き込まれたときに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される。本明細書で使用されるように、コマンドまたは状態をレジスタに書き込むことに関して「〜が書き込まれる（ｗｒｉｔｔｅｎ  ｗｉｔｈ）」という表現が使用されたときは、当該コマンドまたは状態に対応するデジタル値が実際に書き込まれることになる（例えば「ａｃｔｉｖｅ」は「０００００００１」という値で表現することもできるし、他の所望の表現とすることもできる）。次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュデバイスの「データ入力」機能をアクティブ化し、ＰＡＧＥ＿ＢＵＦＦからＮＡＮＤフラッシュデバイスの内部データレジスタへのデータ転送を開始する。これと同時に、ＮＡＮＤフラッシュデバイスに転送されているデータに基づいてＥＣＣパリティ符号を計算するために、任意的に、ＥＣＣ回路がイネーブルされる。
【０１１２】
ＰＡＧＥ＿ＢＵＦＦ内のデータがＮＡＮＤフラッシュデバイスに転送された後は、ＥＣＣパリティ符号が転送される。次いで、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）が、ＮＡＮＤフラッシュデバイスの「自動プログラム」機能をアクティブ化して、自己の内部データレジスタ内のデータをフラッシュメモリセルに記憶する。ＮＡＮＤデバイスの「自動プログラム」機能が完了すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、Ｆ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻す。
【０１１３】
「ｐａｇｅ  ｒｅａｄ」処理は、ＰＰＡでアドレス指定されたＮＡＮＤフラッシュページのユーザ部分のデータと、場合によっては予備部分のデータと、をＰＡＧＥ＿ＢＵＦＦに転送し、フラッシュメディアによって導入される潜在的な誤り（ｐｏｔｅｎｔｉａｌ  ｅｒｒｏｒ）を訂正する。まず、ＰＰＡレジスタにＰＰＡが書き込まれ、Ｆ＿ＣＯＭＭＡＮＤレジスタに「ｐａｇｅ  ｒｅａｄ」が書き込まれる。次いで、Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」が書き込まれたときに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される。次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュデバイスの「読出しモード」機能をアクティブ化して、ＰＰＡにおいてアドレス指定されたフラッシュメモリセル内のページデータを、ＮＡＮＤフラッシュデバイスの内部データレジスタに読み出す。次いで、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ページデータとＥＣＣパリティ符号とをＮＡＮＤフラッシュデバイスの内部データレジスタからＰＡＧＥ＿ＢＵＦＦに転送し、その間にＥＣＣ回路をイネーブルにして当該データの誤りの有無を検査し、ＰＡＧＥ＿ＢＵＦＦ内の誤り訂正を行う。誤り訂正が完了すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、Ｆ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻す。
【０１１４】
「ｐａｇｅ  ｓｐａｒｅ  ｒｅａｄ」処理は、ＰＰＡによってアドレス指定されたＮＡＮＤフラッシュページの予備部分に記憶されているデータを、ＰＡＧＥ＿ＢＵＦＦに転送するものである。まず、ＰＰＡレジスタにＰＰＡが書き込まれ、Ｆ＿ＣＯＭＭＡＮＤレジスタに「ｐａｇｅ  ｓｐａｒｅ  ｒｅａｄ」コマンドが書き込まれる。Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」コマンドが書き込まれたときに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される。次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュデバイスの「予備読出しモード」機能をアクティブ化して、ＰＰＡによってアドレス指定されたフラッシュメモリセル内のページの予備部分をＮＡＮＤフラッシュデバイスの内部データレジスタに読み出す。次いで、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、当該予備ページのデータをＮＡＮＤフラッシュデバイスの内部データレジスタからＰＡＧＥ＿ＢＵＦＦに転送し、２レベルＥＣＣが使用される場合は、ＮＡＮＤフラッシュからも、ＥＣＣ回路がそれを使用して予備データの誤りの有無を検査し、ＰＡＧＥ＿ＢＵＦＦ内の誤り訂正を行う予備パリティ符号も読み出される。次いで、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、Ｆ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻す。
【０１１５】
「ｂｌｏｃｋ  ｅｒａｓｅ」処理は、「ブロック」として知られるＮＡＮＤフラッシュの消去単位全体を消去するものである。１つのブロックは、複数のページを含む。したがって、例示的な一実施形態では、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＰＰＡの最小有効ビットを取り除くことによってＰＰＡからブロックアドレスを導出する。例えば、あるブロックが３２ページを含んでいる場合は、ブロックアドレスは、ＰＰＡの５つの最小有効ビットを取り除くことによって取得される。まず、ＰＰＡレジスタにＰＰＡが書き込まれ、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がこれをブロックアドレスに変換し、Ｆ＿ＣＯＭＭＡＮＤレジスタに「ｂｌｏｃｋ  ｅｒａｓｅ」が書き込まれる。次いで、Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」コマンドが書き込まれたときに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される。次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュデバイスの「ブロック消去」機能をアクティブ化する。ＮＡＮＤフラッシュデバイスの「ブロック消去」機能が完了すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、Ｆ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻す。
【０１１６】
「ｄｅｖｉｃｅ  ｒｅｓｅｔ」処理は、ＮＡＮＤフラッシュデバイスの回路を、それ自体の電源投入時のデフォルト状態に復元するものである。まず、Ｆ＿ＣＯＭＭＡＮＤレジスタに「ｄｅｖｉｃｅ  ｒｅｓｅｔ」が書き込まれる。次いで、Ｆ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」が書き込まれたときに、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアクティブ化される。次に、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ＮＡＮＤフラッシュデバイスの「リセット」機能をアクティブ化する。ＮＡＮＤフラッシュデバイスの「リセット」機能が完了すると、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、Ｆ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻す。
【０１１７】
次に、例示的なフラッシュメディアマネージャ（ＦＭＭ）について説明する。
【０１１８】
「フラッシュメディア管理」処理の例としては、限定されるものではないが、次の技法の内の１つまたは複数が挙げられる：損耗平均化、ガベージコレクション、不良ブロック置換、および停電復旧。これらの技法は、特有の消去単位で実施される消去−再書込みサイクル数の影響を受ける高密度フラッシュ技術に伴う課題を克服するために使用される。消去単位は、単一の消去処理で消去可能な記憶媒体上の領域として定義される。ＮＡＮＤフラッシュメモリでは、消去単位はブロックと同じであり、すなわち、複数のページ（例えば３２または６４ページ）を含んでおり、１つのページ（例えば５２８または２１１２バイト）は、単一の書込みコマンドで記憶媒体に書込み可能な、または、単一の読出しコマンドで記憶媒体から読出し可能なデータアクセス単位となる。書き込み済みのブロックに新しいデータを上書きする必要があるときは、当該ブロックに新しいデータを書き込み得る状態とする前に、全体のブロックを消去する必要がある。ブロックを消去した後に当該ブロックに新しいデータを書き込む上記のプロセスは、１回の消去−再書込みサイクルとしてカウントされる。
【０１１９】
現在の高密度フラッシュデバイスでは、１ブロックは通常、最大１万回〜１０万回の消去−再書込みサイクルに耐えることができるが、それを超えたより多くの消去−再書込みサイクルが発生するとブロックに欠陥が生じたり、当該ブロックが信頼性のある形でデータを記憶することがもはやできなくなることが多い。信頼性のある形でデータを記憶することができない欠陥ブロックは「不良ブロック」と呼ばれ、それ以上データを記憶するのに使用すべきではない。理論的には、フラッシュメモリに対して行われる消去−再書込みサイクルの数が増加すればするほど、使用可能なブロック数は減少していき、最終的には使用可能なブロックが全く存在しなくなる。
【０１２０】
もしオペレーティングシステムなどのソフトウェアプログラムが、高密度フラッシュメモリの制限された消去−再書込みサイクルを考慮していない場合は、当該ソフトウェアによって無制限に、あるフラッシュメモリ位置に新しいデータが繰返し上書きされる可能性が高い。例えば、ファイルシステムのファイルアロケーションテーブル（ＦＡＴ）は、非常に頻繁に更新される。このため、あるブロックはすぐにそれぞれの消去−再書込みサイクル限界に達し、不良ブロックとなる。ソフトウェアが不良ブロックを良好ブロックで置き換え、通常であれば不良ブロックに記憶されたはずのデータを、記憶するのに良好ブロックを使用した場合でさえ、同じフラッシュメモリ位置に実際に無制限に上書きすることになれば、フラッシュ全体の全ての良好ブロックまたはその大部分がすぐに使い果たされる可能性があり、フラッシュデバイスの寿命が許容できないほど短い期間となる恐れもある。
【０１２１】
フラッシュデバイスの期待寿命を延長しまたは最大化するために、フラッシュメディア内のデータの構成および追跡を行う多くの方法が開発されている。これらの方法はしばしば、「論理」アドレス空間を「物理」アドレス空間と分離することを要し、より上位のシステムソフトウェアが「論理」フラッシュアドレスを用いてフラッシュのデータ記憶空間を操作する。アドレス翻訳スキームによって論理アドレスが物理アドレスに翻訳された後、当該物理アドレスは、低位のデバイスドライバソフトウェアがフラッシュメディアにアクセスするのに使用される。
【０１２２】
論理アドレスと物理アドレスの関連付けを維持するために、通常、アドレス翻訳テーブルが使用される。より上位のシステムソフトウェアが関連する物理アドレスを消去し、新しいデータを同じ物理アドレスに書き込む代わりに、書き込み済みの論理アドレスを新しいデータで上書きしたときは、より低位のソフトウェアが実際に未書込みの物理アドレスを発見し、新しく発見した当該物理アドレスに新しいデータを書き込む。次いで、論理アドレスと物理アドレスの新しい関連付けを反映するために、アドレス翻訳テーブルが更新される。この技法は一般に、同じ論理アドレスに対する複数の書込みが複数の異なる物理アドレスに分散され、したがって特定の物理アドレス上の損耗が最小限に抑えられることから、「損耗平均化」と呼ばれている。
【０１２３】
論理アドレスが複数回にわたって再書込みされたときは、当該論理アドレスの最新データが１つの物理アドレスに格納されるが、それ以前に当該論理アドレスと関連付けられた他の多くの物理アドレスには、古くなったデータが格納されているはずである。これらの古くなった物理アドレスは、それらの消去処理を実施することによって回収（ｒｅｃｌａｉｍ）することができ、「未書込みの」物理アドレスに戻すことができる。この技法は一般に、「ガベージコレクション」と呼ばれている。
【０１２４】
損耗平均化の技術を使用した場合であっても、いくつかのブロックは最終的に、信頼性のある形でデータを記憶するのに使用できない不良ブロックとなる可能性があり、したがって良好ブロックで置き換えられる。言い換えれば、ブロックが不良ブロックとなった場合は、通常であれば不良ブロックに記憶されたはずのデータを記憶するための良好ブロックが選ばれる。この技法は一般に、「不良ブロック置換」と呼ばれている。
【０１２５】
上記の各種技法では一般に、論理アドレスから物理アドレスへの翻訳テーブル、不良ブロック位置、古くなったデータを含む物理アドレスなど、ある種のブックキーピングレコードを維持する必要がある。これらのレコードは、フラッシュメモリ内のデータ構成を追跡するためにフラッシュメモリに記憶され、フラッシュメモリ内の最新のデータ構成を反映するのに十分な頻度で更新される。しかしながら、レコードがフラッシュメモリ内で適切に更新される前に突然停電が起きた場合は、当該レコードは、ホストデバイス（例えば携帯電話）の電源が再び投入されたときに最新の情報を含んでいないことになる。このような潜在的な障害を克服するために、停電が起きた場合に最新のブックキーピングレコードを復元する多くの従来の技法が開発されている。これらの技法は一般に、「停電復旧」技法と呼ばれている。
【０１２６】
本明細書では、上述の各種技法をまとめて「フラッシュメディア管理」と呼ぶ。当業者に知られ利用できる多くのフラッシュメディア管理技法が存在する。しかしながら、従来の多くの携帯電話メモリシステムとは異なり、一実施形態は、外部プロセッサを殆どまたは全く介入させることなく、ユーザ定義のフラッシュメディア管理スキームをメモリシステムに実装する方法を提供する。
【０１２７】
図３を参照すると、フラッシュメディアマネージャ（ＦＭＭ  ３１１）のブロックは、フラッシュメディア管理のアルゴリズムおよびプロセスを実施し、論理的なＮＡＮＤフラッシュのアドレス空間と物理的なＮＡＮＤフラッシュのアドレス空間との間のインターフェースとして働く回路を表している。例示的なＦＭＭ回路（３１１）は任意的に、組込み型プロセッサ用ランダムアクセスメモリ（例えばスタティックＲＡＭ）を含む。先に論じたように、組込み型プロセッサを「ＦＭＭ＿Ｐ」と呼び、ＦＭＭランダムアクセスメモリを「ＦＭＭ＿ＲＡＭ」と呼ぶ。ＦＭＭ＿ＲＡＭは、後にＦＭＭ＿Ｐによって実行可能なＦＭＭプログラムコードを記憶するのに使用できる揮発性ランダムアクセスメモリを提供する。ＦＭＭ＿ＲＡＭは、ＢＯＯＴ＿ＣＴＬＲ（３１３）およびＦＭＭ＿Ｐからアクセス可能であるが、同時に両方からアクセスすることはできない。
【０１２８】
ＢＯＯＴ＿ＣＴＬＲ（３１３）は、電源投入時のブートプロセスの間にＦＭＭプログラムコードをＦＭＭ＿ＲＡＭにロードし、次いでＦＭＭ＿Ｐを解放して、ＦＭＭ＿ＲＡＭに記憶されているＦＭＭプログラムコードを実行するためにＦＭＭ＿ＲＡＭにアクセスする。ＦＭＭプログラムコードは、ＦＭＭ＿Ｐの命令セットに基づく一連の命令である。ＦＭＭ＿Ｐは、それらの命令をＦＭＭ＿ＲＡＭからフェッチすることによってＦＭＭプログラムコードを実行する。また、ＦＭＭ＿Ｐは任意的に、ＦＭＭ＿ＲＡＭを使用して、ＦＭＭプログラムコードを走らせることによって生成される中間情報と、ＦＭＭアルゴリズムのブックキーピングレコードとを記憶する。ユーザ定義のフラッシュメディア管理のアルゴリズムは、それらのアルゴリズムを実施するためにＦＭＭ＿Ｐによって実行されるＦＭＭプログラムコードの形で実装することができる。
【０１２９】
図８は、図３に示されるシステムで任意的に使用できるＦＭＭ＿Ｐ（８０１）の例示的な一実施形態のブロック図を示している。例示的なＦＭＭ＿Ｐ（８０１）は、限定されるものではないが、内部レジスタ（８０２）と、ＡＬＵ（８０４）と、命令ポインタ（ＩＰ）（８０３）と、制御ユニット（ＣＵ）（８０５）とを含んでいる。内部レジスタ（８０２）は、ＦＭＭ＿Ｐ（８０１）に読み込まれるデータ、ならびに、ＦＭＭ＿Ｐ（８０１）から書き出されるデータを一時的に記憶するのに使用される。ＡＬＵ（８０４）は、加算や減算あるいはＡＮＤ、ＯＲ、ＸＯＲといった論理演算などの算術演算を内部レジスタに対して実施する。命令ポインタ（ＩＰ）（８０３）は、次にＦＭＭ＿Ｐ（８０１）に読み込まれるべき命令を含むＦＭＭ＿ＲＡＭ位置のアドレスを格納するレジスタである。ＣＵ（８０５）は、ＩＰ値の変更、ＦＭＭ＿ＲＡＭからの命令およびデータの読出し、ＦＭＭ＿ＲＡＭへのデータの書込み、制御回路の様々な部分からの割り込み信号の受取りおよびそれに対する応答、制御回路内の他の機能ブロックの設定およびアクティブ化といった命令実行タスクを制御する。
【０１３０】
図３を再び参照すると、ＦＭＭ（３１１）はさらに、ＢＯＯＴ＿ＣＴＬＲ（３１３）およびＤＭＡ＿ＣＴＬＲ（３１２）がＦＭＭ（３１１）を設定しアクティブ化するための仕組みとしてコンフィギュレーション（図示せず）を有している。ＬＰＡレジスタは、アクセスされるＮＡＮＤフラッシュページのＬＰＡを格納する。Ｆ＿ＣＯＭＭＡＮＤレジスタは、「ｐａｇｅ  ｒｅａｄ」や「ｐａｇｅ  ｗｒｉｔｅ」といった、ＦＭＭ（３１１）によって実施される処理を格納する。このレジスタは、電源投入後にＦＭＭ（３１１）が初期化タスクを完了させるまで、ＦＭＭ（３１１）から無視される。ＦＭＭ＿ＩＮＩＴレジスタは、ＦＭＭ（３１１）が初期化されたか否かを示す。このレジスタの電源投入時のデフォルト値は「ｎｏｔ  ｉｎｉｔｉａｌｉｚｅｄ」であり、ＦＭＭ（３１１）が初期化タスクを完了した後にＦＭＭ（３１１）によって「ｉｎｉｔｉａｌｉｚｅｄ」に変更される。ＦＭＭ＿ＩＤＬＥレジスタは、ＦＭＭ＿Ｐ（８０１）をアイドルモードから解放するために書き込むことができる。このレジスタの電源投入時のデフォルト値は「ｉｄｌｅ」であり、これはＦＭＭ（３１１）がアイドルモードにあることを示す。ＦＭＭ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」の値が書き込まれたときは、ＦＭＭ＿ＩＤＬＥレジスタは、ＦＭＭ＿Ｐ（８０１）をアイドルモードから解放してＦＭＭプログラムコードを実行し、ＦＭＭ（３１１）は、ＦＭＭ（３１１）の初期化またはＦＭＭ＿ＣＯＭＭＡＮＤレジスタによって指定されたタスクの実施を開始する。このタスクが完了すると、ＦＭＭ（３１１）は、レジスタの値を「ｉｄｌｅ」に戻す。ＦＭＭをアクティブ化する「ａｃｔｉｖｅ」がＦＭＭ＿ＩＤＬＥレジスタに書き込まれる前に、ＦＭＭ（３１１）がアイドルモードにあることを保証する「ｉｄｌｅ」がＦＭＭ＿ＩＤＬＥレジスタに格納されるまで、ＦＭＭ＿ＩＤＬＥレジスタのポーリングが行われる。
【０１３１】
ＦＭＭ＿Ｐ（８０１）の命令セットは、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化してＮＡＮＤフラッシュメモリ（３１７）を操作するためにＦＬＡＳＨ＿ＣＴＬＲ（３１０）内の設定レジスタの読書きを行う命令と、ＮＡＮＤフラッシュメモリ（３１７）との間のデータ転送を行うためにＦＭＭ＿ＲＡＭとＰＡＧＥ＿ＢＵＦＦの間でデータ転送を行う命令とを有する。ＦＭＭ＿Ｐ（８０１）の命令セットはさらに、ＦＭＭ＿ＲＡＭとＳＤＲＡＭの間のデータ転送を行うために、ＭＡＤ（３０８）およびＳＤＲＡＭ＿ＣＴＬＲ（３０９）を介して、ＳＤＲＡＭ（３１８）に対するデータアクセスを実施する命令も提供する。言い換えれば、ＦＭＭ（３１１）はＳＤＲＡＭのマスタであり、ＭＡＤを介し、ＭＡＤブロックのアクセス権付与ハンドシェークプロトコルに従ってＳＤＲＡＭ（３１８）にアクセスする。ＦＭＭ＿Ｐ（８０１）は、ＳＤＲＡＭ（３１８）を使用して、ＦＭＭプログラムコードを走らせることによって生成される中間情報と、ＦＭＭ＿ＲＡＭにこの目的のための十分なメモリ空間が存在しない場合はＦＭＭ（３１１）アルゴリズムのブックキーピングレコードと、を記憶する。ＦＭＭ（３１１）はこれらの命令を用いて、ＦＭＭ＿ＲＡＭを介して、ＮＡＮＤフラッシュとＳＤＲＡＭ（３１８）の間のデータ転送を行うことができる。
【０１３２】
ＦＭＭプログラムコードは不揮発性ＮＡＮＤフラッシュメモリ（３１７）に記憶され、ブートアッププロセスの間にＢＯＯＴ＿ＣＴＬＲ（３１３）によってＦＭＭ＿ＲＡＭにロードされる。しかしながら、ＦＭＭ（３１１）は、ＦＭＭプログラムコードがＢＯＯＴ＿ＣＴＬＲ（３１３）によってＮＡＮＤフラッシュメモリ（３１７）から読み出されている間は、まだ機能しない。したがって、ＦＭＭプログラムコードは、ＦＭＭアルゴリズムが利用されず、したがって論理ページアドレスと物理ページアドレスの区別がないＮＡＮＤフラッシュメモリ（３１７）内のセクションに記憶され、このセクションを本明細書では「ブートセクション」と呼ぶ。言い換えれば、ＦＭＭ（３１１）アルゴリズムは、ＮＡＮＤフラッシュメモリ（３１７）のブートセクションからデータを読み出す際は必要とされない。このブートセクションについては、ＢＯＯＴ＿ＣＴＬＲ（３１３）の説明を参照しながらより詳細に説明する。
【０１３３】
電源投入のリセットがディアサートされると、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＭＭ（３１１）をアイドルモードに保ちながらＦＭＭプログラムコードをＦＭＭ＿ＲＡＭにロードする。次いで、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＭＭ（３１１）がアクティブであることを表す「ａｃｔｉｖｅ」をＦＭＭ＿ＩＤＬＥレジスタに書き込むことによってＦＭＭ（３１１）をアイドルモードから解放する。次いで、ＦＭＭ＿Ｐ（８０１）は、ＦＭＭ＿ＲＡＭからのＦＭＭプログラムコードの実行を開始する。この時点でもなおＦＭＭ＿ＩＮＩＴレジスタは「ｎｏｔ  ｉｎｉｔｉａｌｉｚｅｄ」の指示を格納しており、これによりＦＭＭ＿Ｐ（８０１）が、ＦＭＭ＿Ｐ（８０１）にＦＭＭの初期化を実施するよう命令するＦＭＭプログラムコード内のルーチンに分岐することになる。
【０１３４】
ＦＭＭの初期化はＦＭＭ機能の一部であり、したがってユーザ定義型であって、エンドデバイス（例えば携帯電話）の製造業者および／または他の該当するユーザが、フラッシュメディア管理のアルゴリズムおよびプロセスを定義することができる。本発明は、ＦＭＭの初期化に要するタスクまたはタスクシーケンスを限定するものではない。以下の記載は、ＦＭＭ（３１１）を使用して実施できるいくつかの例示的な初期化タスクを提示するものである。
【０１３５】
ＦＭＭ（３１１）を初期化するには、アドレス翻訳テーブルなどフラッシュメディア管理に必要な、ＦＭＭ（３１１）のブックキーピングレコードをＮＡＮＤフラッシュメモリ（３１７）から発見し、ＦＭＭ＿ＲＡＭまたはＳＤＲＡＭ（３１８）にコピーする必要がある。ＦＭＭのブックキーピングレコードを発見するには通常、多くのＮＡＮＤフラッシュページの予備部分をＦＭＭ＿ＲＡＭにロードし、ＦＭＭ（３１１）が各ページの予備部分のデータを検査して、対応するＮＡＮＤフラッシュページがＦＭＭのブックキーピングレコードを含んでいるかどうか判定する必要がある。ＦＭＭのブックキーピングレコードの一部を含むページが発見されると、当該ページのユーザ部分はＮＡＮＤフラッシュメモリ（３１７）から読み出され、ＦＭＭ＿ＲＡＭまたはＳＤＲＡＭ（３１８）にロードされる。
【０１３６】
ＦＭＭ（３１１）は、ＮＡＮＤフラッシュページからＦＭＭ＿ＲＡＭにデータ（ユーザ部分のデータまたは予備部分のデータあるいはその両方）をコピーするために、ＮＡＮＤフラッシュのＰＰＡを生成し、当該ＰＰＡによってアドレス指定されたＮＡＮＤフラッシュページをＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦに読み込むようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。次いで、ＦＭＭ（３１１）は、当該データをＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭにロードする。ＦＭＭ（３１１）は、をＳＤＲＡＭにＮＡＮＤフラッシュページデータコピーするために、まずＮＡＮＤフラッシュのＰＰＡとＳＤＲＡＭのアドレスとを生成し、次いで当該ＰＰＡによってアドレス指定されたＮＡＮＤフラッシュページをＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦに読み込むようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。次いで、ＦＭＭ（３１１）は、当該データをＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭに読み込み、当該データをＦＭＭ＿ＲＡＭからＭＡＤ（３０８）を介してＳＤＲＡＭ（３１８）に書き込む。
【０１３７】
フラッシュメディア管理の初期化が完了した後は、ＦＭＭ（３１１）は、ＦＭＭ＿ＩＮＩＴレジスタの値を「ｉｄｌｅ」に、ＦＭＭ＿ＩＮＩＴレジスタの値を「ｉｎｉｔｉａｌｉｚｅｄ」に変更する。この時点で、ＦＭＭ（３１１）は、論理アドレスから物理アドレスへの翻訳を実施する準備が整っており、ＤＭＡ＿ＣＴＬＲ（３１２）からコマンドを受け取って１次プロセッサが要求するＤＭＡ転送をサポートする準備が整う。ＦＭＭ＿Ｐ（８０１）がアイドルモードから再び解放されると、ＦＭＭ＿ＩＮＩＴレジスタの値「ｉｎｉｔｉａｌｉｚｅｄ」は、ＦＭＭ＿Ｐ（８０１）に対して、初期化を実施する代わりにＦＭＭ＿ＣＯＭＭＡＮＤレジスタによって指定された処理を実施するＦＭＭプログラムコードの一部に分岐するよう命令する。
【０１３８】
ＦＭＭのブックキーピングレコードは、標準動作の間、ＦＭＭ＿ＲＡＭもしくはＳＤＲＡＭ（３１８）またはその両方に、保持することができる。ＦＭＭプログラムコードが既にＦＭＭ＿ＲＡＭ内にあるので、ブックキーピングレコードもＦＭＭ＿ＲＡＭに容易に記憶することができる。本実施形態の動作を説明するために、以下の記載では、ＦＭＭのブックキーピングレコードがＳＤＲＡＭ（３１８）に保持されるものと仮定する。ＦＭＭアルゴリズムがＳＤＲＡＭ（３１８）に記憶されたブックキーピングレコードを読み出してあるタスク（例えばアドレス翻訳テーブルを読み出して論理アドレスから物理アドレスへの翻訳を実施すること）を実施する必要がある場合、ＦＭＭ（３１１）は、当該ブックキーピングレコードの一部分を、ＳＤＲＡＭ（３１８）からＭＡＤ（３０８）を介してＦＭＭ＿ＲＡＭにコピーし、ＦＭＭアルゴリズムコードはコピー済みのデータを読み出す。ＦＭＭアルゴリズムコードがＳＤＲＡＭ内のブックキーピングレコードの一部分を更新する必要がある場合、ＦＭＭ（３１１）は、当該ブックキーピングレコードの一部分の新しいバージョンをＦＭＭ＿ＲＡＭ内で生成し、次いで当該データをＦＭＭ＿ＲＡＭからＭＡＤ（３０８）を介してＳＤＲＡＭ（３１８）にコピーして、ＳＤＲＡＭ（３１８）に記憶されている古い方のバージョンを上書きする。
【０１３９】
ＦＭＭアルゴリズムは、通常、その時々に、ある種のブックキーピングレコードをＮＡＮＤフラッシュメモリ（３１７）に書き込んだり、またはそれを更新したりする必要があり、そのため、ＮＡＮＤフラッシュの様々なブロックを消去し、ＳＤＲＡＭ（３１８）からＮＡＮＤフラッシュメモリ（３１７）にデータをコピーする必要がある。ＦＭＭ（３１１）は、ＮＡＮＤフラッシュのブロックを消去するために、消去すべきＮＡＮＤフラッシュのブロックのブロックアドレスを生成し、次いで当該ブロックアドレスをＰＰＡレジスタにロードし、当該ＮＡＮＤフラッシュのブロックを消去するようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。ＦＭＭ（３１１）は、あるＳＤＲＡＭのアドレスのデータをＮＡＮＤフラッシュページにコピーするために、まずＮＡＮＤフラッシュのＰＰＡとＳＤＲＡＭのアドレスとを生成し、次いで当該データをＳＤＲＡＭ（３１８）からＭＡＤ（３０８）を介してＦＭＭ＿ＲＡＭに読み込み、当該データをＦＭＭ＿ＲＡＭからＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦに書き込む。次いで、ＦＭＭ（３１１）は、ＰＡＧＥ  ＢＵＦＦ内のデータを上記のＰＰＡによってアドレス指定されたＮＡＮＤフラッシュページに書き込むようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。
【０１４０】
ＦＭＭ（３１１）アルゴリズムは、標準動作の間、制御回路の他の機能ブロックまたは１次プロセッサ（３１４）によってアクティブ化されることなく、あるいは、それらが介入することなく、ＮＡＮＤフラッシュメモリ（３１７）内のブックキーピングレコードの更新を開始できる点に留意されたい。ＦＭＭ（３１１）は、ＦＭＭ＿ＣＯＭＭＡＮＤレジスタに書き込まれるコマンドをＦＭＭ（３１１）が行えないようになる自己開始タスク（ｓｅｌｆ  ｉｎｉｔｉａｔｅｄ  ｔａｓｋ）を実施する必要があるときは、このタスクを開始する前にＦＭＭ＿ＩＤＬＥレジスタの値を「ａｃｔｉｖｅ」に変更する。このタスクが完了すると、ＦＭＭ（３１１）はレジスタの値を「ｉｄｌｅ」に戻す。したがって、ＦＭＭ（３１１）をアクティブ化する「ａｃｔｉｖｅ」がＦＭＭ＿ＩＤＬＥレジスタに書き込まれる前においては、ＦＭＭ（３１１）がアイドルモードにあることを保証する「ｉｄｌｅ」がＦＭＭ＿ＩＤＬＥレジスタに格納されるまでＦＭＭ＿ＩＤＬＥレジスタのポーリングが行われる。
【０１４１】
ＤＭＡ＿ＣＴＬＲ（３１２）は、設定レジスタを使用することにより、ＦＭＭ（３１１）を使用して、ＬＰＡに基づいてＮＡＮＤフラッシュページにアクセスすることができる。ＤＭＡ＿ＣＴＬＲ（３１２）は、ＮＡＮＤフラッシュＬＰＡからの読出しを行うようにＦＭＭ（３１１）を設定するために、ＬＰＡレジスタに当該ＬＰＡを書き込み、ＦＭＭ＿ＣＯＭＭＡＮＤレジスタにコマンド「ｐａｇｅ  ｒｅａｄ」を書き込む。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＦＭＭ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」を書き込んでＦＭＭ（３１１）をアクティブ化し、ＦＭＭ＿ＩＤＬＥレジスタのポーリングを開始する。ＦＭＭ（３１１）がアクティブ化されると、ＦＭＭ（３１１）は、論理アドレスから物理アドレスへの翻訳を行いＬＰＡをＰＰＡに変換し、次いで当該ＰＰＡの物理的なＮＡＮＤフラッシュページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ読出しを完了したときは、ＦＭＭ（３１１）は、ＦＭＭ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に変更し、それにより、現在ＰＡＧＥ＿ＢＵＦＦ内にＮＡＮＤフラッシュページデータがあることがＤＭＡ＿ＣＴＬＲ（３１２）に示される。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＰＡＧＥ＿ＢＵＦＦを読み出してページデータを取得することができる。
【０１４２】
ＤＭＡ＿ＣＴＬＲ（３１２）は、ＮＡＮＤフラッシュＬＰＡにデータを書き込むようにＦＭＭ（３１１）を設定するために、まずＰＡＧＥ＿ＢＵＦＦにデータを書き込み、ＬＰＡレジスタにＬＰＡを書き込み、ＦＭＭ＿ＣＯＭＭＡＮＤレジスタにコマンド「ｐａｇｅ  ｗｒｉｔｅ」を書き込む。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＦＭＭ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」を書き込んでＦＭＭ（３１１）をアクティブ化し、ＦＭＭ＿ＩＤＬＥレジスタのポーリングを開始する。ＦＭＭ（３１１）がアクティブ化されると、ＦＭＭ（３１１）は、論理アドレスから物理アドレスへの翻訳を実施してＬＰＡをＰＰＡに変換し、次いでＰＡＧＥ＿ＢＵＦＦ内のデータを当該ＰＰＡの物理的なＮＡＮＤフラッシュページに書き込むようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。次いで、ＦＭＭ（３１１）は、ＦＭＭ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に変更し、それにより、ページ書込みが完了したことがＤＭＡ＿ＣＴＬＲ（３１２）に示される。
【０１４３】
ＦＭＭプログラムコードは、限定されるものではないが、ＮＡＮＤフラッシュメモリ（３１７）内のある領域がシステムブートコード、ＦＭＭプログラムコード、本質的なオペレーティングシステムのプログラムコードといった重要なデータを含んでいる場合にそれらの領域が消去または上書きされるのを防止するように設けられている。このような措置は、ＮＡＮＤフラッシュメモリ（３１７）に記憶されている重要なデータが誤って改変されないように、または、ＮＡＮＤフラッシュメモリ（３１７）内のデータを意図的に破損させようとする悪意のあるアプリケーションソフトウェアにより改変されないように保護するものである。以下では、保護されたＮＡＮＤフラッシュメモリ（３１７）の領域をＦＭＭ保護領域（ＦＭＭ−ｐｒｏｔｅｃｔｅｄ  ａｒｅａ）と呼ぶ。ＦＭＭ保護領域は、論理アドレスもしくは物理アドレスまたはその両方を用いて、ＦＭＭプログラムコード内で指定することができる。例えば、ＤＭＡ＿ＣＴＬＲ（３１２）が、あるＬＰＡのＮＡＮＤフラッシュページへの書込みを行うようにＦＭＭ（３１１）を設定した場合、ＦＭＭ（３１１）はまず、当該ＬＰＡがＦＭＭ保護領域に入るかどうか確認する。ＦＭＭ保護領域に入る場合、ＦＭＭ（３１１）は、ＬＰＡからＰＰＡへの翻訳は実施せず、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化して対応するＰＰＡに対して書込みを行うこともしない。保護が特に望まれうる領域の１つは、ＦＭＭプログラムコードが記憶されている領域である。この理由は、ＮＡＮＤフラッシュメモリ（３１７）内の他のデータを保護するにはＦＭＭプログラムコード自体を保護する必要があるからである。
【０１４４】
例示的な本実施形態では、１次プロセッサ（３１４）がリセットから解放される前に、ＦＭＭプログラムコードがＢＯＯＴ＿ＣＴＬＲ（３１３）のハードウェアによってＮＡＮＤフラッシュメモリ（３１７）から読み出されてＦＭＭ（３１１）が機能するようになるので、ＦＭＭプログラムコード内で定義されたＦＭＭ保護領域は、１次プロセッサ（３１４）によって改変されることはない。ＦＭＭ保護領域がブートセクションを含んでいる場合、ＦＭＭプログラムコードおよびシステムブートコードは１次プロセッサによって改変されることはない。すなわち、ＦＭＭ（３１１）は、ＮＡＮＤフラッシュメモリ（３１７）に記憶されているデータを、１次プロセッサ（３１４）または外部電子機器内の他のプロセッサによって実行されるソフトウェアプログラムから保護することができる。
【０１４５】
ユーザがホストデバイス（例えば携帯電話）に対して、電源を遮断する（例えば電源遮断ボタンを押すことによって）コマンドを発行した場合、ＦＭＭ（３１１）アルゴリズムは、携帯電話の電源が再び投入されたときに最新のブックキーピングレコードが使用可能となるように、ＮＡＮＤフラッシュメモリ（３１７）内のある種のブックキーピングレコードを更新する必要が生じることもある。これは、「電源遮断工程」と呼ばれている。ＦＭＭ（３１１）がＮＡＮＤフラッシュメモリ（３１７）内のブックキーピングレコードの更新を完了させることができるように、ＦＭＭ（３１１）がアクティブ化され、ＦＭＭ（３１１）が電源遮断工程を完了させるまでメモリシステム（３０１）の電源を好ましくは維持しつつ、電源遮断工程が実施される。
【０１４６】
ユーザからの電源遮断コマンドが受け取られると、１次プロセッサ（３１４）は、ＲＥＧＳブロック（３０６）内のＰＯＷＥＲ＿ＯＦＦレジスタに「ａｃｔｉｖｅ」を書き込み、次いで、ＦＭＭ（３１１）に、電源遮断工程をアクティブ化する信号を送る。次いで、１次プロセッサ（３１４）は、ＦＭＭ（３１１）が電源遮断工程を実施している間にレジスタのポーリングを開始する。ＦＭＭ（３１１）が電源遮断工程を完了したときは、ＦＭＭ（３１１）は、ＰＯＷＥＲ＿ＯＦＦレジスタの値を「ｉｄｌｅ」に戻す信号をＲＥＧＳブロックに送り、それにより１次プロセッサ（３１４）が外部の電子機器内で携帯電話の電源を遮断するのに必要なタスクを実施する。電源遮断工程を開始する信号がＲＥＧＳブロック（３０６）から受け取られた場合、ＦＭＭ（３１１）がアイドルのこともあれば、別の処理の最中のこともある。ＦＭＭプログラムコードは、進行中の処理を中断した後に電源遮断工程を開始するように設けられていてもよいし、進行中の処理を完了させた後に電源遮断工程を開始するように設けられていてもよい。
【０１４７】
このＦＭＭアーキテクチャによれば、限定されるものではないが、メモリシステム（３０１）は、外部プロセッサを殆ど介入させることなく、または、その介入を最小限に抑えながら、フラッシュメディア管理タスクを実施することができる。１次プロセッサ（３１４）が実行するソフトウェアプログラムは、「論理」アドレスを用いてフラッシュのデータ記憶空間を操作するものであり、したがって外部プロセッサでは、物理的なフラッシュメディア内のデータ構成の管理、維持、または変更のオーバーヘッドは生じない。このようなＦＭＭ（３１１）の自律性は、ハードウェア実装の場合と同様の利益をもたらす。例示的な一実施形態では、ＦＭＭ（３１１）は、限定されるものではないが、ユーザ定義のＦＭＭプログラムコードを走らせる組込み型プロセッサとして実装されるので、ユーザが制御回路に実装されたハードウェアに何ら変更も加えずにプログラムコードを修正することが可能であり、そのため、メモリシステムのハードウェアが実装された後、あるいは携帯電話設計が確定した後でさえ、バグ修正およびＦＭＭプログラムコードのアップグレードを容易に行うことが可能となる。したがって、ＦＭＭ（３１１）は、ソフトウェア実装と同様の利点ももたらす。
【０１４８】
次に図３を参照して、ＤＭＡコントローラ（ＤＭＡ＿ＣＴＬＲ  ３１２）の一例についてより詳細に説明する。ＤＭＡ＿ＣＴＬＲ（３１２）は、１次プロセッサ（３１４）の制御下で、また１次プロセッサ（３１４）によって監視されている間に、ＮＡＮＤフラッシュメモリ（３１７）とＳＤＲＡＭ（３１８）の間のＤＭＡ転送を実施する役割を果たす。より具体的には、ＣＭＤ＿ＣＴＬＲ（３０５）は、ＰＰＢＳ（３０３）を介して１次プロセッサ（３１４）からＤＭＡ転送コマンド（例えば「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」または「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」）を受け取った後、ＤＭＡ＿ＣＴＬＲ（３１２）をアクティブ化してＤＭＡ転送を実施する。ＤＭＡ転送コマンド自体は転送方向を示す。「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」コマンドは、ＮＡＮＤフラッシュからＳＤＲＡＭへの転送が行われるようにするものである。「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」は、ＳＤＲＡＭからＮＡＮＤフラッシュへの転送が行われるようにするものである。ＤＭＡ＿ＣＴＬＲ（３１２）は、（例えばＮＡＮＤフラッシュページ数で記述される）転送すべきデータ量、ＮＡＮＤフラッシュの開始論理ページアドレス（ＬＰＡ）、ＳＤＲＡＭの開始アドレスなど、上記のＤＭＡ転送コマンドに付随する他の情報を、ＲＥＧＳブロック（３０６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタから取得する。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、転送すべきＮＡＮＤフラッシュページのＬＰＡ、ならびに転送すべき各ＮＡＮＤフラッシュページに対応するＳＤＲＡＭの開始アドレスを生成する。
【０１４９】
ＤＭＡ＿ＣＴＬＲ（３１２）は、ＮＡＮＤフラッシュページのＤＭＡ転送を達成するために、ＮＡＮＤフラッシュメモリ（３１７）およびＳＤＲＡＭ（３１８）にアクセスする。ＤＭＡ＿ＣＴＬＲ（３１２）が論理的なＮＡＮＤフラッシュのアドレス空間（すなわちＬＰＡ）で動作し、ＦＭＭ（３１１）がＦＭＭアルゴリズムおよび／またはテーブルに基づいて論理アドレスから物理アドレスへの翻訳を実施する必要が生じるので、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＮＡＮＤフラッシュメモリ（３１７）にアクセスするために、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を直接制御する代わりに、ＦＭＭ（３１１）をアクティブ化してＦＬＡＳＨ＿ＣＴＬＲ（３１０）を制御する。
【０１５０】
ＤＭＡ＿ＣＴＬＲ（３１２）は、ＮＡＮＤフラッシュページの転送を開始するために、ＬＰＡレジスタおよびＦＭＭ＿ＣＯＭＭＡＮＤレジスタにＬＰＡおよび転送タイプを（例えばＤｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒの場合には「ｐａｇｅ  ｒｅａｄ」を、Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒの場合には「ｐａｇｅ  ｗｒｉｔｅ」を）書き込み、次いでＦＭＭ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」を書き込む。次いで、ＦＭＭ（３１１）は、アドレス翻訳を実施してＰＰＡを取得し、当該ＰＰＡのＮＡＮＤフラッシュページの読出しまたは書込みを行うようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定する。Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒの場合、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）は、ページ読出し処理を実施するように設定される。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ読出し処理を完了させたときは、ページデータは、潜在的な誤りが既にＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、次のＬＰＡを生成し、ＦＭＭをアクティブ化してＮＡＮＤフラッシュメモリ（３１７）からの次のページ読出しを実施しながら、当該データをＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（３１８）に移動させる。
【０１５１】
Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒの場合、ＤＭＡ＿ＣＴＬＲ（３１２）はまず、１ページ分のデータをＳＤＲＡＭ（３１８）からＰＡＧＥ＿ＢＵＦＦに移動させ、次いでＦＭＭ（３１１）をアクティブ化し、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用してページ書込み処理を実施する。ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がＰＡＧＥ＿ＢＵＦＦからＮＡＮＤフラッシュメモリ（３１７）にデータを移動させているときに、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ（３１８）からＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦへの次のページデータの移動を開始する。このプロセスは、ＤＭＡ転送が完了するまで繰り返される。
【０１５２】
ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ（３１８）にアクセスするために、他のＳＤＲＡＭマスタの場合と同様にＭＡＤ（３０８）にアクセス要求を送り、アクセス権が付与されるのを待つ。アクセス権が付与されたときは、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）を使用することによってＳＤＲＡＭ（３１８）との間のバースト転送を実施し、次いで次のバースト転送を実施するために、アクセス要求を再び送出する。ＤＭＡ＿ＣＴＬＲ（３１２）は、複数のバースト転送を実施して１ページ分のＮＡＮＤフラッシュページのデータ転送を完了させる。バーストの長さは、１次プロセッサ（３１４）がＤＭＡ転送を開始する前に適当な値をロードしたＲＥＧＳブロック（３０６）内のＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタによって決定される。
【０１５３】
次に図３を参照して、ブートコントローラ（ＢＯＯＴ＿ＣＴＬＲ  ３１３）の例示的な一実施形態についてより詳細に説明する。ＢＯＯＴ＿ＣＴＬＲ（３１３）は、電源投入のほぼ直後にシステムブートコードおよびＦＭＭプログラムコードをそれぞれＮＡＮＤフラッシュメモリ（３１７）からＢＯＯＴ＿ＲＡＭ（３０７）およびＦＭＭ＿ＲＡＭにロードすること、ＦＭＭ（３１１）をアイドルから解放すること、１次プロセッサ（３１４）をリセットから解放することといったタスクを実施して制御回路を初期化する役割を果たす。ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用してＮＡＮＤフラッシュメモリ（３１７）のブートセクションを読み出す。一実施形態では、ブートセクションにはＦＭＭアルゴリズムが適用されないので、ブートセクション内のデータについては論理アドレスと物理アドレスの区別がない。ブートセクションが読み出されたときは、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、論理アドレスから物理アドレスへの翻訳を行うことなくブートセクション内の各ページのＰＰＡを直接生成し、次いでＦＬＡＳＨ＿ＣＴＬＲ（３１０）を使用してブートセクション内の各ＰＰＡからの読出しを行う。
【０１５４】
図９は、例示的なＮＡＮＤフラッシュの記憶空間（９０１）の割付けを示している。この例では、ＮＡＮＤフラッシュの記憶空間（９０１）は、ブートセクション（９０２）とＦＭＭ制御セクション（９０３）とに分割される。ＮＡＮＤフラッシュメモリ（例えば図３のＮＡＮＤフラッシュメモリ（３１７））のブートセクション（９０２）は、任意的に、損耗平均化、ガベージコレクション、不良ブロック置換、および停電復旧を実施するＦＭＭアルゴリズムから除外される。ブートセクション（９０２）は、システムブートコードおよびＦＭＭプログラムコードが記憶される領域である。これらのプログラムコードは、製造業者が携帯電話を組み立てるときにだけＮＡＮＤフラッシュのブートセクション（９０２）に書き込まれ、バグ修正または携帯電話に記憶されているプログラムコードのアップグレードという比較的稀な事象を除いて、携帯電話の通常の使用中には消去されないことが好ましい。
【０１５５】
したがって、ブートセクション（９０２）は、ＮＡＮＤフラッシュメモリの残りの部分程には消去−再書込みサイクルによって損耗されず、したがって携帯電話の寿命期間中に欠陥が生じる可能性は低い。したがって、ＦＭＭアルゴリズムは任意的に、ブートセクション（９０２）には適用されない。言い換えれば、本実施形態では、ブートセクション（９０２）内のデータについては論理アドレスと物理アドレスの区別がなく、したがって当該セクションにアクセスするときは論理アドレスから物理アドレスへの翻訳が必要とされない（９０６）。ＦＭＭ制御セクション（９０３）は、他のプログラムコード、ユーザデータ、およびＦＭＭアルゴリズムのブックキーピングレコードが記憶される場所である。ＦＭＭ制御セクション（９０３）では、そこに記憶されるデータは、損耗平均化および不良ブロック置換のために様々な物理アドレスに移動され、ＦＭＭアルゴリズムによって維持され追跡される。したがって、ＦＭＭ制御セクション内のデータにアクセスするときは、ＦＭＭ（例えば図３のＦＭＭ（３１１））によって論理アドレスから物理アドレスへの翻訳（９０７）が実施される。
【０１５６】
図９に示されるように、ブートセクション（９０２）は、ＦＭＭプログラムコード（９０４）と、システムブートコード（９０５）とを格納している。図３を参照すると、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、電源投入のリセット信号がディアサートされると自動的にアクティブになり、次いでＮＡＮＤフラッシュメモリ（３１７）のブートセクション（９０２）からデータをフェッチするようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定しアクティブ化する。ブートセクション（９０２）の各ページがＦＬＡＳＨ＿ＣＴＬＲ（３１０）のＰＡＧＥ＿ＢＵＦＦにフェッチされるときに、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、当該ページがＦＭＭプログラムコードの一部である場合にはページデータをＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭに転送し、当該ページがシステムブートコードの一部である場合にはページデータをＰＡＧＥ＿ＢＵＦＦからＢＯＯＴ＿ＲＡＭ（３０７）に転送する。次いで、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＰＡＧＥ＿ＢＵＦＦからデータを取り出しながらＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化して、次のＮＡＮＤフラッシュページをＰＡＧＥ＿ＢＵＦＦにフェッチする。このプロセスは、ＮＡＮＤフラッシュメモリ（３１７）のブートセクション（９０２）におけるプログラムコードがＦＭＭ＿ＲＡＭおよびＢＯＯＴ＿ＲＡＭ（３０７）にロードされるまで繰り返される。
【０１５７】
次いで、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＭＭ＿ＩＤＬＥレジスタに「ａｃｔｉｖｅ」を書き込んでＦＭＭ（３１１）をアイドルから解放し、ＦＭＭ＿ＩＤＬＥレジスタのポーリングを開始する。次いで、ＦＭＭ＿Ｐが、ＦＭＭ＿ＲＡＭに記憶されているＦＭＭプログラムコードの実行を開始し、ＦＭＭアルゴリズムの初期化を実施する。初期化の後、ＦＭＭ（３１１）は、ＦＭＭ＿ＩＤＬＥレジスタの値を「ｉｄｌｅ」に戻し、それによってＢＯＯＴ＿ＣＴＬＲ（３１３）がＰＰＢＳ（３０３）を介して１次プロセッサ（３１４）に向かうリセット信号をディアサートする。次いで、１次プロセッサ（３１４）はアクティブになり、ＢＯＯＴ＿ＲＡＭ（３０７）に記憶されているシステムブートコードの実行を開始する。この時点でＢＯＯＴ＿ＣＴＬＲ（３１３）は、それ自体の機能を完了させ、ＢＯＯＴ＿ＣＴＬＲ（３１３）が上記のプロセスを繰り返すようになる電源投入のリセット信号が再びアサートされディアサートされるまでアイドルのままとなる。
【０１５８】
ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＮＡＮＤフラッシュメモリ（３１７）のブートセクション（９０２）からプログラムコードを読み出すために、ＦＭＭプログラムコードおよびシステムブートコードに関するＮＡＮＤフラッシュのＰＰＡ範囲を知る必要がある。この情報をＢＯＯＴ＿ＣＴＬＲ（３１３）に提供する１つの方法は、ＢＯＯＴ＿ＣＴＬＲ（３１３）が常に固定されたＮＡＮＤフラッシュのＰＰＡからプログラムコードを読み出すように、当該情報をＢＯＯＴ＿ＣＴＬＲ（３１３）の回路に構築しまたはハードワイヤすることである。別の方法は、ブートセクション（９０２）内のＮＡＮＤフラッシュページの予備部分に「ブートフラグ（ｂｏｏｔ  ｆｌａｇ）」を記憶することであり、それにより、当該ブートフラグによってページがＦＭＭプログラムコードまたはシステムブートコードの一部として識別され、あるいはどちらの一部としても識別されず、一方、ＢＯＯＴ＿ＣＴＬＲ（３１３）の回路は、ブートセクション（９０２）のＰＰＡ範囲の知識を用いて構築され、また、ＦＭＭプログラムコードまたはシステムブートコードとしてページの内容を識別するために、ブートセクション（９０２）のＮＡＮＤフラッシュページがＰＡＧＥ＿ＢＵＦＦに読み込まれるときにブートフラグを検査する機能を用いて構築される。ページの内容が識別されると、次いでＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦのデータをＦＭＭ＿ＲＡＭまたはＢＯＯＴ＿ＲＡＭ（３０７）に移動させる。
【０１５９】
次に、各フローチャートおよび図３を参照して任意の実施形態の処理について説明する。
【０１６０】
まず、電源投入のリセット後のブートアッププロセスについて説明する。図１０は、ＢＯＯＴ＿ＣＴＬＲ（３１３）によって実施される例示的なブートアップ工程を示している。電源投入のリセット信号がアサートされると、メモリシステムおよび外部の電子機器がリセットモードに入る。状態（１００１）で、電源投入のリセット信号はディアサートされる。電源投入のリセット信号がディアサートされると、ＢＯＯＴ＿ＣＴＬＲ（３１３）は自動的にアクティブになり、状態（１００２）で、ブートセクションの最初のＰＰＡの生成を開始する。次いで、状態（１００３、１００４）で、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、当該ＰＰＡのＮＡＮＤフラッシュページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定しアクティブ化する。
【０１６１】
状態（１００５）で、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアイドルかどうか判定され、したがってＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ読出し処理を完了させたかどうか判定される。読み出されたＮＡＮＤフラッシュページは、潜在的な誤りがＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。次いで、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、当該ページがシステムブートコードの一部であるのか、それともＦＭＭプログラムコードの一部であるのかに応じて、ページデータをＰＡＧＥ＿ＢＵＦＦからＢＯＯＴ＿ＲＡＭ（３０７）またはＦＭＭ＿ＲＡＭにコピーするが、この処理については各状態（１００６、１００７、および１００８）を参照されたい。
【０１６２】
状態（１００９）では、転送すべきページがそれ以上存在するかどうか判定される。ブートセクションにまだページが残っている場合には、状態（１０１０）に進み、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ブートセクション内のプログラムコードが全てＢＯＯＴ＿ＲＡＭ（３０７）またはＦＭＭ＿ＲＡＭに読み込まれコピーされるまで上記のダウンロードプロセスを繰り返して他のＮＡＮＤフラッシュページをダウンロードする。次いで状態（１０１２）で、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＦＭＭ（３１１）をアイドルから解放する。ＦＭＭ（３１１）が解放されると、状態（１０１３）で、ＦＭＭ（３１１）は、ＦＭＭ＿ＲＡＭに記憶されているＦＭＭプログラムコードの実行を開始する。
【０１６３】
状態（１０１３）では、ＦＭＭプログラムコードはＦＭＭ（３１１）に対して、ＮＡＮＤフラッシュメモリ（３１７）にアドレス翻訳テーブルを読み込み、それをＳＤＲＡＭ（３１８）にコピーすることなど、ＦＭＭスキームの初期化を行うよう命令する。状態（１０１４）でＦＭＭ（３１１）が初期化を完了させたときは、状態（１０１５）で、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、ＰＰＢＳインターフェースを介して１次プロセッサ（３１４）へと向かうリセット信号をディアサートすることによって当該１次プロセッサをリセットから解放する。次いで状態（１０１６）で、ＢＯＯＴ＿ＣＴＬＲ（３１３）はアイドルとなるが、１次プロセッサ（３１４）はアクティブとなり、ＢＯＯＴ＿ＲＡＭ（３０７）のシステムブートコードの実行を開始する。状態（１０１７）で、メモリシステム（３０１）は、「標準動作モード」に入る。
【０１６４】
「標準動作モード」とは、ＦＭＭ（３１１）が初期化され、論理的なＮＡＮＤフラッシュアドレスから物理的なＮＡＮＤフラッシュアドレスへの翻訳が実施でき、１次プロセッサ（３１４）がシステムブートコードを実行するためにリセットから解放された状態を指す。さらに、１次プロセッサ（３１４）は、ＰＰＢＳ（３０３）およびＣＭＤ＿ＣＴＬＲ（３０５）を介して、ＢＯＯＴ＿ＲＡＭ（３０７）およびＳＤＲＡＭ（３１８）の内外にデータバーストを転送するコマンドを発行し、メモリシステム（３０１）の動作を構成／監視するためにＲＥＧＳブロック（３０６）のレジスタの読み書きを行い、ＮＡＮＤフラッシュメモリ（３１７）とＳＤＲＡＭ（３１８）の間のＤＭＡ転送をアクティブ化し、ＣＭＤ＿ＣＴＬＲ（３０５）または２次プロセッサの内の１つまたは複数によって生成された割り込み信号を受け取ることができる。さらに、標準動作モードでは、１次プロセッサ（３１４）によって２次プロセッサを個別に解放してＳＤＲＡＭ（３１８）にアクセスし、必要に応じて１次プロセッサ（３１４）に割り込み信号を送ることもできる。
【０１６５】
標準動作モードに入ると、ＤＭＡ転送は、一般的に使用される機能となる。次に、制御回路によって実施されるＤｏｗｎｌｏａｄ  ＤＭＡ  ｔｒａｎｆｅｒおよびｕｐｌｏａｄ  ｄＭＡ  Ｔｒａｎｓｆｅｒについてより詳細に説明する。
【０１６６】
図１１は、ＮＡＮＤフラッシュからＳＤＲＡＭ（３１８）への転送が実施される例示的な「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」プロセスを示している。状態（１１０１）では、１次プロセッサ（３１４）は、ＮＡＮＤフラッシュの開始ＬＰＡ、ＳＤＲＡＭ（３１８）の開始アドレス、ＤＭＡ＿ＣＯＮＦＩＧレジスタに転送すべきデータ量などのＤＭＡ関連情報をプログラムする。状態（１１０２）で１次プロセッサ（３１４）は、「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒコマンド」を発行し、当該コマンドによってＣＭＤ＿ＣＴＬＲ（３０５）が、状態（１１０３）でＤＭＡ＿ＣＴＬＲ（３１２）をアクティブ化してＤＭＡ転送を実施する。状態（１１０４）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＤＭＡ関連情報をＤＭＡ＿ＣＯＮＦＩＧレジスタから取得する。状態（１１０４）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＤＭＡ＿ＣＯＮＦＩＧレジスタの情報に基づいて最初のＮＡＮＤフラッシュＬＰＡと、それに対応するＳＤＲＡＭアドレスとを生成し、次いで状態（１１０５）で、ＦＭＭ（３１１）をアクティブ化して当該ＬＰＡのＮＡＮＤフラッシュページを読み出す。ＦＭＭ（３１１）は、状態（１１０６）で論理アドレスから物理アドレスへの翻訳を実施してＬＰＡをＰＰＡに変換し、次いで状態（１１０７）で当該ＰＰＡのＮＡＮＤフラッシュページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定しアクティブ化する。
【０１６７】
状態（１１０８）で、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ読出し処理を完了させたと判定された場合は、ページデータは、潜在的な誤りが既にＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。ここで、ＤＭＡ＿ＣＴＬＲ（３１２）は、ページデータをＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（３１８）に移動させる必要がある。ＤＭＡ＿ＣＴＬＲ（３１２）はまず、ページデータを、ＳＤＲＡＭのバーストと整列するデータバーストに分解し、状態（１１０９）で、所定のバースト毎のＳＤＲＡＭアクセス要求をＭＡＤ（３０８）に送る。状態（１１１０）で、アクセス権が付与されたと判定された場合は、状態（１１１１）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ＿ＣＴＬＲ（３０９）を介してページバッファからＳＤＲＡＭ（３１８）にデータバーストを転送する。状態（１１１２）で、転送する必要のあるバーストがそれ以上ページデータ内に存在するかどうか判定される。バーストが存在する場合は、状態（１１１３）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ（３１８）へのアクセスを繰り返し、当該ＳＤＲＡＭアクセスは引き続き、全てのページデータがＳＤＲＡＭ（３１８）に転送されるまで繰り返される。次いで、ＤＭＡ＿ＣＴＬＲ（３１２）は、全体のＤＭＡ転送が完了するまでページ転送プロセスを繰り返す（１１１４、１１１５）。状態（１１１６）で、ＣＭＤ＿ＣＴＬＲ（３０４）は、１次プロセッサ（３１４）に割り込んでＤＭＡ転送の完了を指示する。
【０１６８】
図１２は、ＳＤＲＡＭからＮＡＮＤフラッシュへの転送プロセスが実施される例示的な「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」プロセスを示している。図３および１２を参照すると、状態（１２０１）で、１次プロセッサ（３１４）は、ＮＡＮＤフラッシュの開始ＬＰＡ、ＳＤＲＡＭ（３１８）の開始アドレス、ＤＭＡ＿ＣＯＮＦＩＧレジスタに転送すべきデータ量などのＤＭＡ関連情報をプログラムする。状態（１２０２）で、１次プロセッサ（３１４）は、「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒコマンド」を発行する。これにより、状態（１２０３）で、ＣＭＤ＿ＣＴＬＲ（３０５）は、ＤＭＡ＿ＣＴＬＲ（３１２）をアクティブ化してＤＭＡ転送を実施する。ＤＭＡ＿ＣＴＬＲ（３１２）は、ＤＭＡ関連情報をＤＭＡ＿ＣＯＮＦＩＧレジスタから取得する。状態（１２０４）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＤＭＡ＿ＣＯＮＦＩＧレジスタからのＤＭＡ関連情報に基づいて、最初のＮＡＮＤフラッシュＬＰＡと、それに対応するＳＤＲＡＭアドレスとを生成する。
【０１６９】
ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ（３１８）からＰＡＧＥ＿ＢＵＦＦにページデータを移動させることから始める。状態（１２０６）で、ＤＭＡ＿ＣＴＬＲの要求に応答してＭＡＤ（３０８）がアクセス権を付与したかどうか判定され、ＤＭＡ＿ＣＴＬＲ（３１２）はまず、ＳＤＲＡＭ（３１８）のページデータをバーストに分解し、バースト毎のＳＤＲＡＭ（３１８）アクセス要求をＭＡＤ（３０８）に送る（状態１２０５）。状態（１２０７）でアクセス権が付与された場合は、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＳＤＲＡＭ（３１８）からＰＡＧＥ＿ＢＵＦＦにデータバーストを転送する。状態（１２０８、１２０９）を参照すると、ＤＭＡ＿ＣＴＬＲ（３１２）は、全てのページデータがＰＡＧＥ＿ＢＵＦＦに転送されるまでＳＤＲＡＭ（３１８）へのアクセスを繰り返す。
【０１７０】
状態（１２１０）で、ＤＭＡ＿ＣＴＬＲ（３１２）は、ＦＭＭ（３１１）をアクティブ化してページデータをＬＰＡのＮＡＮＤフラッシュページに書き込む。ＦＭＭ（３１１）はまず、状態（１２１１）で論理アドレスから物理アドレスへの翻訳を実施してＬＰＡをＰＰＡに変換し、次いで状態（１２１２）で当該ＰＰＡのＮＡＮＤフラッシュページへの書込みを行うようにＦＬＡＳＨ＿ＣＴＬＲ（３１０）を設定しアクティブ化する。状態（１２１３）で、ＦＬＡＳＨ＿ＣＴＬＲ（３１０）がアイドルかどうか判定され、それによってＦＬＡＳＨ＿ＣＴＬＲ（３１０）がページ書込み処理を完了させたかどうか判定され、ページデータおよびＥＣＣ回路によって計算されたＥＣＣパリティ符号が当該ＰＰＡのＮＡＮＤフラッシュページに書き込まれたかどうか判定される。状態（１２１４）の時点で、ＤＭＡ＿ＣＴＬＲ（３１２）は、転送すべきページがそれ以上存在するかどうかを判定することにより、全体のＤＭＡ転送が完了するまで上記と同じページ転送を繰り返し、状態（１２１６）で、ＣＭＤ＿ＣＴＬＲ（３０５）は、１次プロセッサ（３１４）に割り込んでＤＭＡ転送の完了を指示する。
【０１７１】
例示的な一実施形態では、ＮＡＮＤフラッシュメモリ（３１７）に記憶されている全てのプログラムコードに対してＢＯＯＴ＿ＲＡＭ（３０７）のサイズが小さいので、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、１次プロセッサ（３１４）のＢＯＯＴ＿ＲＡＭ（３０７）には電源投入のほぼ直後に実行すべきプログラムコードを少ししかロードすることができない。１次プロセッサ（３１４）はしばしば、モデム携帯電話の複雑な機能を実施するために、より大きいサイズのより多くのプログラムコードを必要とする。１次プロセッサ（３１４）は、標準動作モードに入ったときは、ＤＭＡ転送を実施して全てのプログラムコード、またはオペレーティングシステム、ファイルシステム、デバイスドライバなど少なくとも基本的なシステムプログラムコードをＳＤＲＡＭ（３１８）にコピーするように制御回路を設定することが好ましい。その後、１次プロセッサ（３１４）は、引き続きＢＯＯＴ＿ＲＡＭ（３０７）からの実行を行うことも、必要に応じてＳＤＲＡＭ（３１８）からの実行に分岐することもできる。この時点から、携帯電話（または他のホストデバイス）は「ユーザモード」に入る。
【０１７２】
「ユーザモード」とは、標準動作モードとは別のものであり、ホストデバイスが携帯電話である例示的な一実施形態では、ユーザが携帯電話のユーザインターフェイスを用いて携帯電話の機能を起動（ｌａｕｎｃｈ）し始めることが可能になるほど十分な量のソフトウェアプログラムコードがＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）に転送された状態を指す。
【０１７３】
図１３は、１次プロセッサ（３１４）が標準動作モードからユーザモードに入るために実施する例示的な工程を示している。状態（１３０１）で、システムは、標準動作モードにある。状態（１３０２）で、１次プロセッサ（３１４）は、ユーザモードに必要なプログラムを特定する。状態（１３０３〜１３０８）を参照すると、１次プロセッサはプログラム毎にＤＭＡ転送をアクティブ化して、ユーザモードで必要とされる全てのプログラムコードがＮＡＮＤフラッシュからＳＤＲＡＭ（３１８）にダウンロードされるまでＮＡＮＤフラッシュからＳＤＲＡＭにプログラムコードをコピーする。次いで状態（１３０９）で、１次プロセッサ（３１４）は、ユーザモードプログラムの実行に分岐し、状態（１３１０）で、ユーザモードに入る（１３１０）。
【０１７４】
ユーザモードに入る前に一部のプログラムコード（例えばアプリケーションソフトウェアプログラム）がＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にコピーされなかった場合、それらのアプリケーションソフトウェアプログラムは、ユーザがそれらのプログラムの実行を要するあるアプリケーションを起動したときに、必要に応じてＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にコピーされる。
【０１７５】
図１４は、ユーザモードの間にユーザによって起動されたアプリケーションを１次プロセッサ（３１４）が実行する例示的な工程を示している。状態（１４０１）で、１次プロセッサ（３１４）は、アプリケーションを起動するユーザコマンドを受け取る。状態（１４０２）で、１次プロセッサ（３１４）は、ユーザによって起動されたアプリケーションに必要であるがＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にコピーされていないプログラムを特定する。状態（１４０３〜１４０８）を参照すると、１次プロセッサは各プログラム毎にＤＭＡ転送をアクティブ化して、ＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にプログラムコードをコピーする。アプリケーションに必要なプログラムがＳＤＲＡＭ（３１８）に記憶されると、次いで状態（１４０９）で、１次プロセッサ（３１４）は、アプリケーションの実行に分岐する。
【０１７６】
さらに、１次プロセッサ（３１４）は任意的に、ＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）に２次プロセッサの内の１つまたは複数によって実行されるプログラムコードをコピーし、２次プロセッサのリセットを少なくとも部分的に制御し、２次プロセッサの発生させる割り込みに応答する役割を果たす。
【０１７７】
図１５は、１次プロセッサ（３１４）が２次プロセッサを制御する例示的な工程を示している。状態（１５０１）で、１次プロセッサ（３１４）は、２次プロセッサ（例えばグラフィックスまたはマルチメディアプロセッサ）によって実施されるべきアプリケーションをアクティブ化するユーザコマンドを受け取る。状態（１５０２）で２次プロセッサをアクティブ化するために、１次プロセッサ（３１４）はまず、２次プロセッサによって実施されるべき特定のタスクに必要なプログラムを特定する。状態（１５０３〜１５０８）を参照すると、１次プロセッサ（３１４）は各プログラム毎にＤｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒをアクティブ化し、それによって対応するプログラムコードをＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にコピーする。２次プロセッサに必要なプログラムがＳＤＲＡＭ（３１８）に記憶されると、状態（１５０９）で、１次プロセッサ（３１４）は、ＳＤＲＡＭ（３１８）内の領域が２次プロセッサからのアクセスに適した形で設定されるように、ＳＤＲＡＭ＿ＰＡＲＴＩＴＩＯＮレジスタをプログラムする。この領域は、ＮＡＮＤフラッシュメモリ（３１７）からダウンロードされ２次プロセッサによって実行されるプログラムを格納することになる。状態（１５１０）で、１次プロセッサ（３１４）は、ＲＥＳＥＴレジスタに適切な値を書き込んで２次プロセッサのリセット信号をディアサートする。状態（１５１１）で、２次プロセッサはアクティブになり、該当するＳＤＲＡＭ（３１８）パーティションからプログラムコードを実行する。
【０１７８】
２次プロセッサは、様々な理由で（例えばタスクが完了したことを１次プロセッサに知らせるために）１次プロセッサ（３１４）に割り込む必要が生じる可能性がある。例示的なこの工程では、２次プロセッサは処理が完了したときにだけ１次プロセッサに割り込むものと仮定されるが、２次プロセッサは任意的に、他の理由で割り込みを発生させることもできる。１次プロセッサ（３１４）は、状態（１５１２）で割り込みを受け取ると、次いで状態（１５１３）で、ＩＮＴ＿ＲＥＣＯＲＤレジスタを読み出し、２次プロセッサが割り込みを発行したことを判定する。状態（１５１４）で、１次プロセッサ（３１４）は、対応するルーチンを実施して割り込みに応答する。この例では、状態（１５１４）で、１次プロセッサ（３１４）は、ＲＥＳＥＴレジスタへの書込みを行って２次プロセッサをリセットモードに戻す。
【０１７９】
標準動作モードでは、１次プロセッサ（３１４）はさらに、１次プロセッサの必要に応じてまたは２次プロセッサのためにＮＡＮＤフラッシュメモリ（３１７）からＳＤＲＡＭ（３１８）にユーザデータをコピーし、逆もまた同様にコピーする役割を果たす。
【０１８０】
他の例示的な実施形態について：
次に、いくつかの例示的な追加の実施形態について説明する。以下の説明では、上述の第１の実施形態とは異なる追加の実施形態の諸要素に焦点を当てる。
【０１８１】
第２の例示的な一実施形態では、制御回路は限定されるものではないがＢＯＯＴ＿ＲＡＭを有さない。ＢＯＯＴ＿ＣＴＬＲは、ＭＡＤ回路を介してＳＤＲＡＭにアクセスできるようにＭＡＤ回路に接続される。ＢＯＯＴ＿ＣＴＬＲによって実施されるブートアップ工程は、第１の実施形態に関して上述した工程とは異なる。ＢＯＯＴ＿ＣＴＬＲは電源投入の後、ＮＡＮＤフラッシュメモリからＢＯＯＴ＿ＲＡＭにシステムブートコードをコピーする代わりに、任意的に、ＳＤＲＡＭ＿ＣＴＬＲを使用してＳＤＲＡＭを初期化し、次いでシステムブートコードをＳＤＲＡＭにロードした後に、１次プロセッサを解放してＳＤＲＡＭからコードを実行する。
【０１８２】
図１６は、メモリシステム（１６０１）の第２の実施形態を示している。次に、上述の機能ブロックと異なる本実施形態の制御回路の機能ブロックについて説明する。
【０１８３】
例示的な本実施形態は、１次プロセッサ（１６１４）と、１つまたは複数の２次プロセッサ（１６０４）と、ＰＩ（１６０２）（ＰＰＢＳ（１６０３）および１つまたは複数のＳＰＢＳ（１６０４）を含む）と、ＣＭＤ＿ＣＴＬＲ（１６０５）と、ＲＥＧＳブロック（１６０６）と、ＭＡＤ（１６０８）と、ＦＭＭ（１６１１）と、ＤＭＡ＿ＣＴＬＲ（１６１２）と、ＳＤＲＡＭ＿ＣＴＬＲ（１６０９）と、ＦＬＡＳＨ＿ＣＴＬＲ（１６１０）と、ＢＯＯＴ＿ＣＴＬＲ（１６１３）と、ＮＡＮＤフラッシュメモリ（１６１７）と、ＳＤＲＡＭ（１６１８）とを含む。
【０１８４】
先に論じたように、本実施形態にはＢＯＯＴ＿ＲＡＭが存在しない。
【０１８５】
本実施形態の例示的なＢＯＯＴ＿ＣＴＬＲ（１６１３）は、それ自体がシステムブートコードをＢＯＯＴ＿ＲＡＭに移動させる代わりにＳＤＲＡＭ（１６１８）に移動させる点で、第１の実施形態のＢＯＯＴ＿ＣＴＬＲとは異なる。以下では、ＢＯＯＴ＿ＣＴＬＲ（１６１３）によって実施されるブートアップ工程について説明する。
【０１８６】
ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、電源投入のリセット信号（１６１６）がディアサートされると自動的にアクティブになる。ＢＯＯＴ＿ＣＴＬＲ（１６１３）はアクティブになった後、システムブートコードおよびＦＭＭプログラムコードを格納しているＮＡＮＤフラッシュメモリ（１６１７）のブートセクションからデータをフェッチするようにＦＬＡＳＨ＿ＣＴＬＲ（１６１０）を設定する。潜在的な誤りがＦＬＡＳＨ＿ＣＴＬＲのＥＣＣ回路によって訂正された状態でブートセクションの各ページがＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦにフェッチされるときに、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、当該ページがＦＭＭプログラムコードの一部である場合にはページデータをＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭに移動させ、当該ページがシステムブートコードの一部である場合にはページデータをＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（１６１８）に移動させる。同時に、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は任意的に、ＦＬＡＳＨ＿ＣＴＬＲ（１６１０）をアクティブ化して次のＮＡＮＤフラッシュメモリページをＰＡＧＥ＿ＢＵＦＦにフェッチする。このプロセスは、ＦＭＭプログラムコードがＦＭＭ＿ＲＡＭにロードされ、システムブートコードがＳＤＲＡＭ（１６１８）にロードされるまで繰り返される。
【０１８７】
ページバッファからＳＤＲＡＭ（１６１８）にページデータを移動させるために、ＢＯＯＴ＿ＣＴＬＲ（１６１３）からＭＡＤ（１６０８）に至る接続（１６１９）であって、ＳＤＲＡＭマスタとなるＢＯＯＴ＿ＣＴＬＲ（１６１３）がそれを介してＳＤＲＡＭ（１６１８）にアクセスする接続（１６１９）が設けられる。ＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（１６１８）にページデータを転送するために、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＰＡＧＥ＿ＢＵＦＦ内のページデータをＳＤＲＡＭのバーストと整列する複数のデータバーストに分解し、全体のページデータがＳＤＲＡＭ（１６１８）にコピーされるまで、ＭＡＤ（１６０８）のアクセス権付与プロトコルに従って、各バーストをＭＡＤ（１６０８）を介してＳＤＲＡＭ（１６１８）に転送する。
【０１８８】
ＮＡＮＤフラッシュメモリのブートセクションがＦＭＭ＿ＲＡＭおよびＳＤＲＡＭ（１６１８）にロードされた後、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＦＭＭ（１６１１）を解放してフラッシュメディア管理を初期化し、その後ＰＰＢＳ（１６０３）を介して１次プロセッサ（１６１４）に向かうリセット信号をディアサートする。次いで、１次プロセッサ（１６１４）は、ＳＤＲＡＭ（１６１８）に記憶されているシステムブートコードの実行を開始する。この時点で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、それ自体の機能を完了させ、ＢＯＯＴ＿ＣＴＬＲ（１６１３）が上記のプロセスを繰り返すようになる電源投入のリセット信号が再びアサートされディアサートされるまでアイドルのままとなる。
【０１８９】
次に、図１６に示されるコマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  １６０５）の例示的な実施形態について説明する。本実施形態にはＢＯＯＴ＿ＲＡＭが存在しないので、ＣＭＤ＿ＣＴＬＲ（１６０５）はいうまでもなく、ＢＯＯＴ＿ＲＡＭへのアクセスを実施しない。１次プロセッサ（１６１４）からアクセス可能なＲＡＭメモリ空間は、ＳＤＲＡＭ（１６１８）によって体現される。ＣＭＤ＿ＣＴＬＲ（１６０５）は、ＰＰＢＳ（１６０３）を介して１次プロセッサ（１６１４）から「ＲＡＭ  Ｒｅａｄ」または「ＲＡＭ  Ｗｒｉｔｅ」コマンドを受け取ったときは、１次プロセッサ（１６１４）がＳＤＲＡＭ（１６１８）との間のバースト転送を実施するのを可能にするために、ＭＡＤ（１６０８）にアクセス要求を送り、ＭＡＤ（１６０８）からアクセス権が付与されるのを待つ。
【０１９０】
次に、図１６に示されるメモリアクセスディストリビュータ（ＭＡＤ  １６０８）の例示的な実施形態について説明する。
【０１９１】
ＢＯＯＴ＿ＣＴＬＲ（１６１３）がＦＬＡＳＨ＿ＣＴＬＲ（１６１０）内のＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（１６１８）にデータを移動させるのを可能にするために、ＭＡＤ（１６０８）は、ＢＯＯＴ＿ＣＴＬＲ（１６１３）からのアクセス要求を受け入れ、それ自体のアクセス要求について他のＳＤＲＡＭマスタとのアービトレーションを行うように構成される。したがって、ＭＡＤ（１６０８）は、ＢＯＯＴ＿ＣＴＬＲ（１６１３）を別のＳＤＲＡＭマスタとして扱う。
【０１９２】
次に図１７を参照して、図１６に示される第２の実施形態の動作について説明する。図１７は、ＢＯＯＴ＿ＣＴＬＲ（１６１３）によって実施されるブートアップ工程を示している。状態（１７０１）で電源投入のリセット信号がアサートされると、メモリシステム（１６０１）および外部電子機器がリセットモードに入る。電源投入のリセット信号がディアサートされると、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、状態（１７０２）で自動的にアクティブになり、ブートセクションの最初のＰＰＡの生成を開始し、状態（１７０３、１７０４）で当該ＰＰＡのＮＡＮＤフラッシュページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（１６１０）を設定しアクティブ化する。状態（１７０５）でＦＬＡＳＨ＿ＣＴＬＲ（１６１０）がページ読出し処理を完了させたと判定された場合は、読み出されたＮＡＮＤフラッシュページは、潜在的な誤りがあればそれらがＦＬＡＳＨ＿ＣＴＬＲのＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。状態（１７０６）で、当該ページがシステムブートコードの一部であるのかそれともＦＭＭプログラムコードの一部であるのかが判定される。状態（１７０７）で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、当該ページがＦＭＭプログラムコードの一部である場合には、ページデータをＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭにコピーする。当該ページがシステムブートコードの一部である場合には、状態（１７０８）に進み、当該ページは、本明細書に記載されるようにＳＤＲＡＭ（３１８）にコピーされる。
【０１９３】
状態（１７０８）を参照すると、ページデータがシステムブートコードの一部である場合は、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ページデータをＳＤＲＡＭのバーストと整列するデータバーストに分解し、バースト毎のＳＤＲＡＭアクセス要求をＭＡＤ（１６０８）に送る。状態（１７０９）で、ＭＡＤ（１６０８）によってアクセス権が付与されたかどうか判定される。アクセス権が付与されたときは、状態（１７１０）で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＳＤＲＡＭ＿ＣＴＬＲ（１６０９）を介してＰＡＧＥ＿ＢＵＦＦからＳＤＲＡＭ（３１８）にデータバーストを転送する。状態（１７１１）で、ページバーストがそれ以上存在するかどうか判定される。ページバーストが存在する場合は、状態（１７１２）に進み、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は次のバースト用のＳＤＲＡＭアドレスを生成する。ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＰＡＧＥ＿ＢＵＦＦ内の全てのページデータがＳＤＲＡＭ（３１８）に転送されるまでＳＤＲＡＭ（３１８）に対するバースト転送を繰り返す。
【０１９４】
状態（１７１３）で、ブートセクション内にそれ以上ページが存在するかどうかが判定される。それ以上ページが存在する場合、状態（１７１４）に進み、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は次のＰＰＡを生成する。ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ブートセクション内の全てのプログラムコードがＮＡＮＤフラッシュに読み込まれ、ＦＭＭ＿ＲＡＭまたはＳＤＲＡＭ（３１８）にコピーされるまでＮＡＮＤフラッシュページの読出しを繰り返す。次いで状態（１７１５）で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＦＭＭ（１６１１）を解放する。ＦＭＭ（１６１１）が解放されると、次いで状態（１７１６）で、ＦＭＭ（１６１１）は、ＦＭＭ＿ＲＡＭに記憶されているＦＭＭプログラムコードの実行を開始する。ＦＭＭプログラムコードはＦＭＭに対して、ＮＡＮＤフラッシュメモリ（１６１７）にアドレス翻訳テーブルを読み込み、それをＳＤＲＡＭ（３１８）にコピーすることなど、ＦＭＭスキームを初期化するタスクを実施するよう命令する。
【０１９５】
ＦＭＭ（１６１１）が初期化を完了させたときは（１７１７）、状態（１７１８）で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）は、ＰＰＢＳインターフェース（１６０３）を介して１次プロセッサ（１６１４）へと向かうリセット信号をディアサートすることによって１次プロセッサ（１６１４）をリセットから解放する。状態（１７１９）で、ＢＯＯＴ＿ＣＴＬＲ（１６１３）はアイドルとなるが、１次プロセッサ（１６１４）はアクティブとなり、ＳＤＲＡＭ（３１８）の内外にデータバーストを転送することによってＳＤＲＡＭ（３１８）内のシステムブートコードの実行を開始する。状態（１７２０）で、メモリシステム（１６０１）は「標準動作モード」に入る（１７２０）。
【０１９６】
図１８は、メモリシステム（１８０１）の第３の実施形態を示している。本実施形態では、図３に示される第１の実施形態と比較すると、制御回路内にＢＯＯＴ＿ＲＡＭが存在しない。したがって、ブートアッププロセスは、第１の実施形態に関して上述したブートプロセスとは異なる。
【０１９７】
第３の例示的な実施形態は、１次プロセッサ（１８１４）と、１つまたは複数の２次プロセッサ（１８１５）と、ＰＩ（１８０２）（ＰＰＢＳ（１８０３）および１つまたは複数のＳＰＢＳ（１８０４）を含む）と、ＣＭＤ＿ＣＴＬＲ（１８０５）と、ＲＥＧＳブロック（１８０６）と、ＭＡＤ（１８０８）と、ＦＭＭ（１８１１）と、ＤＭＡ＿ＣＴＬＲ（１８１２）と、ＳＤＲＡＭ＿ＣＴＬＲ（１８０９）と、ＦＬＡＳＨ＿ＣＴＬＲ（１８１０）と、ＢＯＯＴ＿ＣＴＬＲ（１８１３）と、ＮＡＮＤフラッシュメモリ（１８１７）と、ＳＤＲＡＭ（１８１８）とを含む。
【０１９８】
ＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（３１８）にブートコードが転送されるシステムブートコードの転送プロセスは、ＦＭＭの初期化プロセスの一環として、ＦＭＭプログラムコードの初期化ルーチンを介して実施される。したがって、ＦＭＭ（１８１１）は、ＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にＦＭＭアルゴリズムに関するＦＭＭのブックキーピングレコードをロードすることに加えて、ＦＭＭの初期化ルーチンを走らせている間にＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にシステムブートコードもロードするようにプログラムされている。ＢＯＯＴ＿ＲＡＭは必要とされず、また、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＮＡＮＤフラッシュメモリ（１８１７）からシステムブートコードをロードする役割を負わない。ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＮＡＮＤフラッシュメモリ（１８１７）からＦＭＭ＿ＲＡＭへのＦＭＭプログラムコードのロードを行い、ＦＭＭ（１８１１）をアイドルから解放し、１次プロセッサ（１８１４）をリセットから解放する。１次プロセッサ（１８１４）は、ＢＯＯＴ＿ＣＴＬＲ（１８１３）によってリセットから解放されたときに、ＢＯＯＴ＿ＲＡＭの代わりにＳＤＲＡＭ（３１８）からシステムブートコードを実行する。
【０１９９】
以下では、図３に示される第１の実施形態とは異なる図１８に示される制御回路の機能ブロックについて説明する。
【０２００】
先に論じたように、本実施形態にはＢＯＯＴ＿ＲＡＭが存在しない。本実施形態のＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＮＡＮＤフラッシュメモリ（１８１７）からＢＯＯＴ＿ＲＡＭへのシステムブートコードのロードを実施しない点で、第１の実施形態のＢＯＯＴ＿ＣＴＬＲとは異なる。
【０２０１】
ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、電源投入のリセット信号がディアサートされると自動的にアクティブになる。ＢＯＯＴ＿ＣＴＬＲ（１８１３）はアクティブになった後、ＮＡＮＤフラッシュメモリ（１８１７）のブートセクションからＦＭＭプログラムコードをフェッチするようにＦＬＡＳＨ＿ＣＴＬＲ（１８１０）を設定する。潜在的な誤りがＥＣＣ回路によって訂正された状態でＦＭＭプログラムコードの各ページがＰＡＧＥ＿ＢＵＦＦにフェッチされるときに、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ページデータをＦＬＡＳＨ＿ＣＴＬＲ＿ＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭに移動させる。その間に、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は任意的に、ＦＬＡＳＨ＿ＣＴＬＲ（１８１０）をアクティブ化して次のＮＡＮＤフラッシュメモリページをＰＡＧＥ＿ＢＵＦＦにフェッチする。このプロセスは、ＦＭＭプログラムコードがＦＭＭ＿ＲＡＭにロードされるまで繰り返される。
【０２０２】
ＦＭＭプログラムコードがＦＭＭ＿ＲＡＭにロードされた後、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＦＭＭ（１８１１）を解放してＦＭＭの初期化を実施する。ＦＭＭの初期化は、ＦＭＭプログラムコードの初期化ルーチンの形で実施されたときは、ＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にＦＭＭのブックキーピングレコードだけでなくシステムブートコードもロードする。ＦＭＭ（１８１１）が初期化を完了させた後に、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＰＰＢＳ（１８０３）を介して１次プロセッサ（１８１４）に向かうリセット信号をディアサートする。次いで、１次プロセッサ（１８１４）は、ＳＤＲＡＭ（１８１８）に記憶されているシステムブートコードの実行を開始する。この時点で、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、それ自体の機能を完了させ、ＢＯＯＴ＿ＣＴＬＲ（１８１３）が上記のプロセスを繰り返すようになる電源投入のリセット信号が再びアサートされディアサートされるまでアイドルのままとなる。
【０２０３】
ＣＭＤ＿ＣＴＬＲ（１８０５）は、ＣＭＤ＿ＣＴＬＲ（１６０５）に関して上述したのと同様の形で動作する。
【０２０４】
次に図１９を参照して、図１８に示される第３の実施形態の処理について説明する。図１９は、図１８に示されるＢＯＯＴ＿ＣＴＬＲ（１８１３）によって実施される例示的なブートアップ工程を示している。状態（１９０１）で、電源投入のリセット信号がアサートされると、メモリシステム（１８０１）および外部電子機器がリセットモードに入る。状態（１９０２）で電源投入のリセット信号がディアサートされると、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、自動的にアクティブになり、ＦＭＭプログラムコードを格納するブートセクションの最初のＰＰＡの生成を開始する。状態（１９０３、１９０４）で、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、当該ＰＰＡのＮＡＮＤフラッシュメモリ（１８１７）ページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（１８１０）を設定しアクティブ化する。
【０２０５】
状態（１９０５）で、ＦＬＡＳＨ＿ＣＴＬＲ（１８１０）がアイドルであるかどうか検知することによってＦＬＡＳＨ＿ＣＴＬＲ（１８１０）がページ読出し処理を完了させたかどうかが判定され、読み出されたＮＡＮＤフラッシュメモリ（１８１７）ページは、潜在的な誤りがＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。状態（１９０６）で、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ページデータをＦＬＡＳＨ＿ＣＴＬＲＰＡＧＥ＿ＢＵＦＦからＦＭＭ＿ＲＡＭにコピーする。ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ブートセクション内にそれ以上ページが存在するかどうかに関して行われた状態（１９０７）の判定に基づいて、状態（１９０８）で、ＦＭＭプログラムコードがＮＡＮＤフラッシュメモリ（１８１７）からＦＭＭ＿ＲＡＭに読み込まれコピーされるまで、次のＰＰＡを生成することによってＮＡＮＤフラッシュメモリ（１８１７）ページの読出しを繰り返す。
【０２０６】
状態（１９０９）で、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＦＭＭ（１８１１）をアイドルから解放する。ＦＭＭがもはやアイドルではなくなり解放された状態になると、ＦＭＭ（１８１１）は、ＦＭＭ＿ＲＡＭに記憶されているＦＭＭプログラムコードの実行を開始する。ＦＭＭプログラムコードはＦＭＭ（１８１１）に対して、ＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にシステムブートコードをコピーすることを含めて、ＦＭＭ（１８１１）を初期化するタスクを実施するよう命令する。ＦＭＭ（１８１１）が初期化を完了させたときは、状態（１９１０）で、ＢＯＯＴ＿ＣＴＬＲは、ＰＰＢＳインターフェース（１９１１）を介して１次プロセッサ（１８１４）へと向かうリセット信号をディアサートすることによって１次プロセッサ（１８１４）をリセットから解放する。次いで状態（１９１２）で、ＢＯＯＴ＿ＣＴＬＲ（１８１３）はアイドルとなるが、１次プロセッサ（１８１４）はアクティブとなり、ＳＤＲＡＭ（１８１８）の内外にデータバーストを転送することによってＳＤＲＡＭ（１８１８）内のシステムブートコードの実行を開始する。状態（１９１３）で、メモリシステム（１８０１）は「標準動作モード」に入る（１９１３）。
【０２０７】
ＦＭＭがＮＡＮＤフラッシュメモリ（１８１７）からシステムブートコードを読み出す前にＦＭＭアルゴリズムが機能するようにＦＭＭの初期化ルーチンが設定されている場合は、ＦＭＭ（１８１１）がシステムブートコードを読み出すときには既にＮＡＮＤフラッシュメモリの論理アドレスから物理アドレスへの翻訳が機能しているので、ＮＡＮＤフラッシュメモリ（１８１７）のブートセクションにシステムブートコードを所在させる必要はない。言い換えれば、ＦＭＭアルゴリズムが機能すれば、ＦＭＭ（１８１１）は、ＦＭＭプログラムコード内のシステムブートコードの位置が論理的なＮＡＮＤフラッシュメモリアドレスを用いて定義されている場合にも、ＮＡＮＤフラッシュメモリ（１８１７）のＦＭＭ制御セクションにアクセスし、ＦＭＭ制御セクションに記憶されているシステムブートコードを位置決めすることができる。同様に、システムブートコードだけでなくＦＭＭプログラムコードも、任意的に、他のプログラムコードまたはデータをＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にロードするように設定される。任意的に、全体のＮＡＮＤフラッシュメモリのデータイメージをＳＤＲＡＭ（１８１８）にコピーすることができ、また、ＳＤＲＡＭ（１８１８）が保持できる量のデータイメージをコピーすることもできる。
【０２０８】
携帯電話など一部のデバイスでは、外部電子機器は、１次プロセッサ（１８１４）用のシステムブートコードを記憶するのに使用されるフラッシュメモリや読取り専用メモリ（ＲＯＭ）などの不揮発性メモリを含むことができる。この場合には、システムブートコードは、メモリシステム（１８０１）内のＮＡＮＤフラッシュメモリ（１８１７）に記憶されず、１次プロセッサ（１８１４）がリセットから解放されたときに、外部電子機器の他の仕組みによって１次プロセッサ（１８１４）が使用可能な状態にされる。したがって、ＢＯＯＴ＿ＲＡＭは必要とされず、ＢＯＯＴ＿ＣＴＬＲ（１８１３）は、ＮＡＮＤフラッシュメモリ（１８１７）からシステムブートコードをロードする役割を負わないが、それでもなお、ＮＡＮＤフラッシュメモリ（１８１７）からＦＭＭ＿ＲＡＭにＦＭＭプログラムコードをロードし、ＦＭＭおよび１次プロセッサ（１８１４）をリセットから解放することができる。
【０２０９】
１次プロセッサ（１８１４）は、ＢＯＯＴ＿ＣＴＬＲ（１８１３）によってリセットから解放されたときに、メモリシステム（１８０１）からではなく外部電子機器から命令をフェッチすることによってシステムブートコードを実行する。さらに、携帯電話などある種の電子デバイスでは、外部電子機器は、１次プロセッサ（１８１４）のリセットを直接制御することもできる。この場合には、ＢＯＯＴ＿ＣＴＬＲ（１８１３）が１次プロセッサ（１８１４）に向かうリセット信号をディアサートするときに、１次プロセッサ（１８１４）が外部電子機器によって既にリセットから解放されていることもあれば、まだ解放されていないこともある。したがって、ＢＯＯＴ＿ＣＴＬＲ（１８１３）が１次プロセッサ（１８１４）に送るリセット信号は代替的に、メモリシステムが初期化され１次プロセッサ（１８１４）からのコマンドをサービスする準備が整っているか否かを指示する信号として、１次プロセッサ（１８１４）によって使用されてもよい。
【０２１０】
１次プロセッサ（１８１４）がＢＯＯＴ＿ＣＴＬＲ（１８１３）によってリセットから解放される前にシステムブートコードをＳＤＲＡＭ（１８１８）にロードすることだけでなく、ＦＭＭ（１８１１）が各種タスクを実施する能力は、多くの応用例に利用することができる。例えば、１次プロセッサ（１８１４）は任意的に、１次プロセッサ（１８１４）がリセットから解放されたときにソフトウェア全体またはそのサブセットをランダムアクセス形式で読み出すことが可能となるよう求めることもできる。一例として、１次プロセッサ（１８１４）がＲＯＭベースのマイクロプロセッサを用いて実装される場合には、リセットから解放された直後に、実際にソフトウェアを実行する前にソフトウェア全体またはそのサブセットのセキュリティチェックを実施して、そのソフトウェアがＮＡＮＤフラッシュメモリ（１８１７）に記憶されているデータを破損させる恐れがある悪意のあるプログラムコードを含んでいないことを保証する要求がある場合がある。かかる要求を達成するために、ＦＭＭの初期化ルーチンは任意的に、ＢＯＯＴ＿ＣＴＬＲ（１８１３）が１次プロセッサ（１８１４）をリセットから解放する前に、携帯電話システムのソフトウェア全体またはその内の選択されたサブセット部分がＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にロードされるように設定される。
【０２１１】
任意的に、１次プロセッサ（１８１４）がソフトウェアに関するそのようなセキュリティチェックを実施しない場合には、セキュリティチェックをＦＭＭプログラムコード内で実施し、それによりＮＡＮＤフラッシュメモリ（１８１７）からＳＤＲＡＭ（１８１８）にソフトウェアがロードされた後に、ＦＭＭ（１８１１）がＳＤＲＡＭ（１８１８）内のソフトウェアのセキュリティチェックを実施することができるようになる。ＦＭＭプログラムコードは任意的に、暗号化／復号化アルゴリズムを実行するように設定される。この場合、ＦＭＭプログラムコードを除く外部プロセッサによって実行されるべきソフトウェアプログラムコードは、暗号形式でＮＡＮＤフラッシュメモリ（１８１７）に記憶することができ、ＦＭＭ（１８１１）は、それらのソフトウェアプログラムコードがＳＤＲＡＭ（１８１８）にロードされた後に、それらのプログラムコードを外部プロセッサが実行可能な形式に復号化する。様々な従来型、非従来型、および未実施のセキュリティチェックアルゴリズムならびに暗号化／復号化アルゴリズムを使用することができ、また、メモリシステムは特定のアルゴリズムに限定されるものではない。
【０２１２】
上記の例示的なメモリシステムアーキテクチャを用いることにより、ＦＭＭプログラムコードに多種多様なアルゴリズムを実装することができ、その結果、ＦＭＭは、ＮＡＮＤフラッシュメモリ（１８１７）内のデータを管理し、ＮＡＮＤフラッシュメモリ（１８１７）とＳＤＲＡＭ（１８１８）との間でデータを転送し、それらに記憶されているデータに対する様々な処理を多様な手法で実施することができるようになる。本明細書に記載されるＦＭＭの処理は単なる例として提示されるに過ぎず、ＦＭＭ（１８１１）の使用を特定の例に限定するものではない。
【０２１３】
図２０は、メモリシステム（２００１）の第４の実施形態を示している。本実施形態では、制御回路は、ＦＬＡＳＨ＿ＣＴＬＲおよびＳＤＲＡＭ＿ＣＴＬＲの複数のコピーを含む。図２０に示される例では、ＦＬＡＳＨ＿ＣＴＬＲ（以下、ＦＬＡＳＨ＿ＣＴＬＲ＿１（２０１１）およびＦＬＡＳＨ＿ＣＴＬＲ＿２（２０１２）と呼ぶ）の２つのコピーと、ＳＤＲＡＭ＿ＣＴＬＲ（以下、ＳＤＲＡＭ＿ＣＴＬＲ＿１（２００９）およびＳＤＲＡＭ＿ＣＴＬＲ＿２（２０１０）と呼ぶ）の２つのコピーとが、制御回路内に設けられるが、ＦＬＡＳＨ＿ＣＴＬＲおよびＳＤＲＡＭ＿ＣＴＬＲの数は２つに制限されない。第４の例示的な実施形態はさらに、１次プロセッサ（２０１６）と、１つまたは複数の２次プロセッサ（２０１７）と、ＰＩ（２００２）（ＰＰＢＳ（２００３）および１つまたは複数のＳＰＢＳ（２００４）を含む）と、ＣＭＤ＿ＣＴＬＲ（２００５）と、ＲＥＧＳブロック（２００６）と、ＭＡＤ（２００８）と、ＦＭＭ（２０１３）と、ＤＭＡ＿ＣＴＬＲ（２０１４）と、ＢＯＯＴ＿ＣＴＬＲ（２０１５）と、ＮＡＮＤフラッシュメモリ（２０１９、２０２０）と、ＳＤＲＡＭ（２０２１、２０２２）とを含む。
【０２１４】
上述のように、ＦＬＡＳＨ＿ＣＴＬＲおよび／またはＳＤＲＡＭ＿ＣＴＬＲは、それぞれ複数のＮＡＮＤフラッシュデバイスおよび複数のＳＤＲＡＭデバイスを操作するための複数のチップ選択信号を有することができる。しかしながら、例示的な一構成では、複数のメモリデバイスを各コントローラの制御下におくことができるが、各コントローラ（ＦＬＡＳＨ＿ＣＴＬＲまたはＳＤＲＡＭ＿ＣＴＬＲ）は任意的に、所定の時間に単一のメモリデバイスの内外に動的にデータを転送するように制限される。各アクセスのメモリアドレスは、構築されたメモリマップに基づいてどのメモリデバイスをアクティブ化すべきか、あるいはコントローラがどのメモリデバイスにアクセスすべきかを判定し、それによって各メモリデバイスについてメモリマップのアドレス範囲が指定される。言い換えれば、複数のチップ選択信号を提供するコントローラは、単一のメモリデバイスによって提供される最大限のメモリ空間を超えて合計のメモリ空間を拡大することができるが、単一のメモリデバイスの最大データ転送速度を超えるデータ転送速度に拡大することはできない可能性がある。
【０２１５】
ＦＬＡＳＨ＿ＣＴＬＲの２つのコピーおよびＳＤＲＡＭ＿ＣＴＬＲの２つのコピーを有することにより、ＮＡＮＤフラッシュメモリとＳＤＲＡＭとの両方のメモリ空間が２倍になるだけでなく、ＮＡＮＤフラッシュとＳＤＲＡＭの両方のデータ転送速度も２倍になる。所定のＦＬＡＳＨ＿ＣＴＬＲに関して、制御回路は、対応するＦＬＡＳＨ＿ＣＴＬＲによって操作されるＮＡＮＤフラッシュデバイスに接続されることになる１セットの入出力ポートを提供する。同様に、所定のＳＤＲＡＭ＿ＣＴＬＲに関しても、制御回路は、対応するＳＤＲＡＭ＿ＣＴＬＲによって操作されるＳＤＲＡＭデバイスに接続されることになる１セットの入出力ポートを提供する。したがって、本実施形態でＮＡＮＤフラッシュデバイスおよびＳＤＲＡＭデバイスに接続可能な入出力ポートの合計数は、第１の実施形態の合計数の２倍となる。
【０２１６】
本実施形態は、２つのＦＬＡＳＨ＿ＣＴＬＲまたは２つのＳＤＲＡＭ＿ＣＴＬＲの動作の調整を特定の技法に限定するものではない。本実施形態を例示するために、以下に記載の例では、２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）が同じ処理を実施し、２つのＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）が同じ処理を実施するものと仮定する。
【０２１７】
ＮＡＮＤフラッシュに対するデータアクセスを実施するときに、ＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）はどちらも、ほぼ同時に同じ処理を実施する。言い換えれば、制御回路は、ＮＡＮＤフラッシュの記憶空間から２つのページを読み出しまたはそこに２つのページを書き込むことになり、各ページは、ＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）の内の１つによって転送されることになる。このハードウェアアーキテクチャを達成するために、ＮＡＮＤフラッシュの記憶空間の論理ページの構成を２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）間で「インターリーブ」させることができる。例えば、ＮＡＮＤフラッシュの記憶空間全体のデータが、ＬＰＡ０、１、２、３．．．などのページで論理的に構成されている場合は、ＬＰＡ０、２．．．など偶数のＬＰＡは、ＦＬＡＳＨ＿ＣＴＬＲ＿１に取り付けられたＮＡＮＤフラッシュデバイス（２０１９）に記憶され、ＬＰＡ１、３．．．など奇数のＬＰＡは、ＦＬＡＳＨ＿ＣＴＬＲ＿２に取り付けられたＮＡＮＤフラッシュデバイス（２０２０）に記憶される。したがって、制御回路は常に、ＬＰＡ０と１を一体としてアクセスし、ＬＰＡ２と３を一体としてアクセスし、以下同様にアクセスする。２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）を用いると、ＮＡＮＤフラッシュの記憶空間のＬＰＡの合計数が、第１の実施形態の合計数の２倍になる。
【０２１８】
この例では、各ＦＬＡＳＨ＿ＣＴＬＲは、独立した物理アドレス空間（例えばＰＰＡ）と、一意の論理-物理間の関連付け（ｌｏｇｉｃａｌ−ｔｏ−ｐｈｙｓｉｃａｌ  ａｓｓｏｃｉａｔｉｏｎ）とを有する。偶数のＬＰＡは、ＦＬＡＳＨ＿ＣＴＬＲ＿１の一意の論理／物理間の関連付けに基づいてＦＬＡＳＨ＿ＣＴＬＲ＿１の物理アドレス空間に記憶される。奇数のＬＰＡは、ＦＬＡＳＨ＿ＣＴＬＲ＿２の一意の論理／物理間の関連付けに基づいてＦＬＡＳＨ＿ＣＴＬＲ＿２の物理アドレス空間に記憶される。
【０２１９】
以下では、「論理ダブルページ」（Ｌｏｇｉｃａｌ  Ｄｏｕｂｌｅ  Ｐａｇｅ：ＬＤＰ）と呼ぶ新しいデータ単位が導入される。各ＬＤＰは、一方が偶数、他方が奇数の連続するＬＰＡにおける２つのＮＡＮＤフラッシュページを含む。各ＬＤＰには、以下では「ＬＤＰアドレス」（ＬＤＰＡ）と呼ばれるアドレスが割り当てられる。例えば、ＬＤＰＡ０は、ＬＰＡ０およびＬＰＡ１の２つのページをアドレス指定し、ＬＤＰＡ１は、ＬＰＡ２およびＬＰＡ３の２つのページをアドレス指定し、以下同様にアドレス指定される。ＦＬＡＳＨ＿ＣＴＬＲ＿１が偶数のＬＰＡを転送し、ＦＬＡＳＨ＿ＣＴＬＲ＿２が奇数のＬＰＡを転送する２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）を用いると、制御回路は単一のＮＡＮＤフラッシュアクセス動作で、ＮＡＮＤフラッシュ空間との間の１つのＬＤＰの転送を行う。
【０２２０】
ＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）と同様に、２つのＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）も、同時に同じデータアクセス処理を実施する。言い換えれば、制御回路は、ＳＤＲＡＭのメモリ空間に対するデータアクセスを実施するときは、２つのデータバーストの読出しまたは２つのデータバーストの書込みを同時に行い、各バーストは、ＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）の内の１つによって転送される。同時に同じコマンドを処理する２つのＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）を有することは、データワードの幅を２倍にするのと同じ効果がある。例えば、単一のＳＤＲＡＭバーストのデータサイズがそれぞれ１６ビット幅の８ワードである場合は、同じ時間における２つのＳＤＲＡＭバーストは、それぞれ３２ビット幅の８ワードと等価である。
【０２２１】
以下では、図３に示される第１の実施形態の機能ブロックとは異なる、図２０に示される実施形態の制御回路の機能ブロックについて説明する。
【０２２２】
制御回路は、それぞれ第１の実施形態と同じまたは同様の機能を有するＦＬＡＳＨ＿ＣＴＬＲの２つのコピーを含む。各ＦＬＡＳＨ＿ＣＴＬＲは、複数のＮＡＮＤフラッシュデバイスを操作するための複数のチップ選択信号を出力するが、アクセスは、一時に１つのＮＡＮＤフラッシュデバイスに制限することもできる。ＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）はどちらも、ＢＯＯＴ＿ＣＴＬＲ（２０１５）およびＦＭＭ（２０１１）の制御下にあり、同時に同じデータアクセス処理を実施する。
【０２２３】
ＢＯＯＴ＿ＣＴＬＲ（２０１５）に関しては、ＮＡＮＤフラッシュの記憶空間のブートセクションにはＦＭＭアルゴリズムが適用されないので、ブートセクション内の論理アドレスと物理アドレスは区別されない。第１の実施形態では、ブートセクションの読出しの際に、ＢＯＯＴ＿ＣＴＬＲ（３１３）は、論理アドレスから物理アドレスへの翻訳を行うことなく値を増分させながらＰＰＡを直接生成し、次いでＦＬＡＳＨ＿ＣＴＬＲ（３１０）をアクティブ化してブートセクションから各ＰＰＡを読み出す。図２０に示される本実施形態では、ブートセクションのページは、２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）間でインターリーブされ、それによって２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）の物理アドレス空間において、好ましくはどちらもＰＰＡ０から始まる同じＰＰＡが占有されることになる。言い換えれば、ＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）はどちらも、「ブートセクションＰＰＡ」として指定される同じＰＰＡを有する。
【０２２４】
したがって、ブートセクションの読出しの際に、ＢＯＯＴ＿ＣＴＬＲ（２０１５）は、ブートセクションＰＰＡを直接生成し、次いで両方のＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）を同時にアクティブ化して、それぞれが同じＰＰＡのＮＡＮＤフラッシュページを読み出すようにする。両方のＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）がそれぞれのページ読出し処理を完了させたときは、各ＰＡＧＥ＿ＢＵＦＦは、１つのページデータを格納し、ＢＯＯＴ＿ＣＴＬＲ（２０１５）は、２つのページのＰＰＡに応じてそれらのページデータをＢＯＯＴ＿ＲＡＭまたはＦＭＭ＿ＲＡＭに移動させる。
【０２２５】
ＳＤＲＡＭコントローラ（ＳＤＲＡＭ＿ＣＴＬＲ）に関して、制御回路は、それぞれ第１の実施形態と同じ機能を有するＳＤＲＡＭ＿ＣＴＬＲの２つのコピーを含む。２つのＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）は、同時に同じデータアクセス処理を実施する。各ＳＤＲＡＭマスタにとって、ＳＤＲＡＭのメモリ空間へのアクセスは、単一のＳＤＲＡＭデバイスにおけるデータワードの２倍の幅を有するデータワードのバースト単位で実施される。
【０２２６】
フラッシュメディアマネージャ（ＦＭＭ  ２０１３）に関して、ＦＭＭ（２０１３）は、第１の実施形態に関して説明したのと同様の形でフラッシュメディア管理タスクを実施するだけでなく、かかるタスクを１セットのＬＰＡおよび別個の２組のＰＰＡに基づいて実施し、したがって２つの論理アドレスと物理アドレスの関連付け（ｌｏｇｉｃａｌ−ｔｏ−ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  ａｓｓｏｃｉａｔｉｏｎ）を維持することができる（他の実施形態では、ＦＭＭが他の追加的なフラッシュコントローラおよびＳＤＲＡＭコントローラに対処するように拡張することもできる）。第１の例示的な関連付けは、偶数のＬＰＡとＦＬＡＳＨ＿ＣＴＬＲ＿１のＰＰＡとの間、および奇数のＬＰＡとＦＬＡＳＨ＿ＣＴＬＲ＿２のＰＰＡとの間の関連付けである。どちらの関連付けも任意的に、第１の実施形態と同じまたは同様のＦＭＭアルゴリズムに基づいて行われる。ＤＭＡ＿ＣＴＬＲ（２０１４）がＦＭＭ（２０１３）をアクティブ化して、偶数のＬＰＡおよび奇数のＬＰＡの２つのページをアドレス指定するＬＤＰＡを読み出すときに、ＦＭＭ（２０１３）は、２つのアドレス翻訳を実施して偶数のＬＰＡをＦＬＡＳＨ＿ＣＴＬＲ＿１のＰＰＡに、奇数のＬＰＡをＦＬＡＳＨ＿ＣＴＬＲ＿２のＰＰＡに変換する。次いで、ＦＭＭ（２０１３）は、それぞれの対応するＰＰＡからページ読出し処理をほぼ同時に実施するように両方のＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）を設定する。したがって、第１の実施形態におけるＦＭＭ（２０１３）のＬＰＡレジスタは、「ＬＤＰＡ」レジスタに置き換えられる。
【０２２７】
レジスタ（ＲＥＧＳ  ２００６）に関して、第１の実施形態では、ＤＭＡ＿ＣＯＮＦＩＧレジスタは、ＮＡＮＤフラッシュの開始ＬＰＡ、ＳＤＲＡＭの開始アドレス、転送すべきＮＡＮＤフラッシュページ数など、ＮＡＮＤフラッシュとＳＤＲＡＭの間のＤＭＡ転送に関する情報を格納している。本実施形態では、ＮＡＮＤフラッシュの開始ＬＰＡが開始ＬＤＰＡに置き換えられ、転送すべきＮＡＮＤフラッシュページ数が転送すべきＬＤＰ数に置き換えられている。ＳＤＲＡＭの開始アドレスは、単一のＳＤＲＡＭデバイスにおけるデータワードの２倍の幅のデータワードを参照する。
【０２２８】
２つのＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）が同時に動作するＤＭＡコントローラ（ＤＭＡ＿ＣＴＬＲ  ２０１４）に関して、ＤＭＡ＿ＣＴＬＲ（２０１４）は、ＮＡＮＤフラッシュ空間に対するアクセス毎に２つのＮＡＮＤフラッシュページまたは１つのＬＤＰをダウンロードまたはアップロードすることによってＤＭＡ転送を実施する。ＤＭＡ＿ＣＴＬＲ（２０１４）は、同時に動作する２つのＳＤＲＡＭ＿ＣＴＬＲ（２００９、２０１０）を用いて、単一のＳＤＲＡＭデバイスにおけるデータワードの２倍の幅のデータワードからなるバーストを転送することによって、ＳＤＲＡＭ空間に対する各アクセスを実施する。
【０２２９】
ＤＭＡ＿ＣＴＬＲ（２０１４）は、好ましくは論理ダブルページ（ＬＤＰ）数で記述される転送すべきデータ量、開始論理ダブルページアドレス（ＬＤＰＡ）、ＳＤＲＡＭの開始アドレスなど当該ＤＭＡ転送コマンドに付随する他の情報を、ＲＥＧＳブロック（２００６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタから取得する。次いで、ＤＭＡ＿ＣＴＬＲ（２０１４）は、転送すべきＬＤＰのＬＤＰＡ、ならびに各ＬＤＰに対応するＳＤＲＡＭの開始アドレスを生成する。
【０２３０】
ＬＤＰを転送するために、ＤＭＡ＿ＣＴＬＲ（２０１４）は、ＬＤＰＡと転送タイプ（例えばＬＤＰ読出しまたはＬＤＰ書込み）とをＦＭＭ（２０１３）に送り、その後ＦＭＭ（２０１３）は、アドレス翻訳を実施してＦＬＡＳＨ＿ＣＴＬＲ毎に１つずつ、合わせて２つのＰＰＡを取得し、次いでそれぞれのＰＰＡの対応するＮＡＮＤフラッシュページの読出しまたはそこへの書込みを行うように両方のＦＬＡＳＨ＿ＣＴＬＲ（２０１１、２０１２）を設定する。ＤＭＡ転送は任意的に、整数のＬＤＰと等価なデータ量を移動させ、ＤＭＡ転送を開始せず、またはＬＤＰの途中でＤＭＡ転送を終了する。
【０２３１】
次に、コマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  ２００５）について説明する。第１の実施形態に関して上述したのと同様に、ＣＭＤ＿ＣＴＬＲ（２００５）は、１次プロセッサ（２０１６）とメモリシステム（２００１）の間のデータ転送用の一時記憶域としてデータバッファを含むことが好ましい。このデータバッファを用いると、ＰＰＢＳインターフェース（２００３）のデータ転送速度とＳＤＲＡＭインターフェースのデータ転送速度との不整合が許容される。本実施形態では、ＳＤＲＡＭインターフェース上のバースト転送の長さは依然として、ＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタによって定義されるが、データワードのサイズが第１の実施形態の２倍であることから、これに伴いＣＭＤ＿ＣＴＬＲ（２００５）がＭＡＤブロック（２００８）を介してＳＤＲＡＭ＿ＣＴＬＲとの間でデータを転送するための信号は、ＳＤＲＡＭインターフェース上の２倍のワードサイズに対応できるように拡張される。言い換えれば、ＣＭＤ＿ＣＴＬＲのデータバッファとＳＤＲＡＭ＿ＣＴＬＲの間のデータ転送速度は、他の要因が等しい場合は第１の実施形態の２倍の速さとなる。
【０２３２】
次に、プロセッサインターフェース（ＰＩ  ２００２）について説明する。第１の実施形態に関して上述したのと同様に、ＳＰＢＳは、対応する２次プロセッサとＳＤＲＡＭの間のデータ転送用の一時記憶域としてデータバッファを含むことが好ましい。このデータバッファを用いると、ＳＰＢＳインターフェースのデータ転送速度とＳＤＲＡＭインターフェースのデータ転送速度との不整合が許容される。本実施形態では、ＳＤＲＡＭインターフェース上のバースト転送の長さは依然として、ＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタによって定義されるが、データワードのサイズが第１の実施形態の２倍であることから、これに伴いＳＰＢＳがＭＡＤブロック（２００８）を介してＳＤＲＡＭ＿ＣＴＬＲとの間でデータを転送するための信号は、ＳＤＲＡＭインターフェース上の２倍のワードサイズに対応できるように拡張される。言い換えれば、ＳＰＢＳのデータバッファとＳＤＲＡＭ＿ＣＴＬＲの間のデータ転送は、第１の実施形態の２倍の速さで転送を実施する。
【０２３３】
図２１は、例示的な携帯電話の電子システムのブロック図を示している。本実施形態では、メモリシステム（２１０１）は、メモリシステム（２１０１）に取り付けられる１つまたは複数のディスプレイ（例えばＬＣＤまたはＯＬＥＤ画面）（２１１２）とのインターフェースを有する。さらに、メモリシステム（２１０１）は、ＳＤＲＡＭ（２１０４）からディスプレイ（２１１２）へのデータ転送を実施するように制御回路（２１０２）を設定しアクティブ化する外部電子機器（２１０５）の一部分、例えば１次プロセッサ（２１０６）および／または２次プロセッサ（２０１７）も提供する。図２１には２つのディスプレイが示されているが、メモリシステム（２１０１）は、より少ないまたはより多くのディスプレイとのインターフェースとなっていてもよい。
【０２３４】
図２２は、メモリシステム（２２０１）の第５の実施形態を含めて図２１に示される実施形態をより詳細に示している。以下では、第１の実施形態と異なる本実施形態の制御回路の機能ブロックについて説明する。
【０２３５】
プロセッサインターフェース（ＰＩ  ２２０２）は、ＰＰＢＳ（２２０３）と、複数のＳＰＢＳ（２２０４）とを含む。本実施形態では、ＳＰＢＳは、それ自体が２次プロセッサのメモリバスに接続されたときは通常のＳＰＢＳとして機能し、それ自体が１つまたは複数のＬＣＤ画面に接続されたときはＬＣＤのドライバインターフェイスとして機能するようにプログラムできるインターフェースとして指定される。便宜上、この特定のＳＰＢＳを「ＳＰＢＳ」の代わりに「ＳＰＢＳ＿ＬＣＤ」（２２０４）と呼ぶ。それ自体が通常のＳＰＢＳとして機能するようにプログラムされた場合には、ＳＰＢＳ＿ＬＣＤ（２２０４）は、ＰＩ回路（２２０２）内の他のＳＰＢＳと同じ様式で対応する２次プロセッサのメモリバスと相互作用する。
【０２３６】
それ自体がディスプレイ（例えばＬＣＤ）のドライバインターフェイスとして機能するようにプログラムされた場合には、ＳＰＢＳ＿ＬＣＤ（２２０４）は、ディスプレイのデータ転送プロトコルに従ってメモリシステム（２２０１）の外部の１つまたは複数のディスプレイを操作するための制御信号、データ信号、およびアドレス信号を提供する。この例では、ＳＰＢＳ＿ＬＣＤ（２２０４）内のデータバッファは、ＳＤＲＡＭ（３１８）からＬＣＤ画面（２２１９）へのデータ転送用の一時データ記憶域として使用される。このデータバッファを用いると、ＬＣＤ画面（２２１９）とＳＤＲＡＭ（２２１８）との間のデータ転送速度の不整合が許容される。ＲＥＧＳブロック（２２０６）内のＬＣＤ＿ＣＯＮＦＩＧレジスタは、１次プロセッサ（２２１４）によって書込み可能であり、ＳＰＢＳ＿ＬＣＤ（２２０４）がＳＰＢＳとして機能しているのかそれともＬＣＤインターフェイスドライバとして機能しているのかを判定する。ＳＰＢＳ＿ＬＣＤ（２２０４）は、メモリシステム（２２０１）の出力ポートを介して複数のＬＣＤ画面に複数のチップ選択信号を供給することによって、複数のＬＣＤ画面を操作することができる。図示の実施形態の一例では、ＳＰＢＳ＿ＬＣＤ（２２０４）は、独立したチップ選択信号を各ディスプレイに供給することによって２つのＬＣＤ画面（２２１９）をサポートする。
【０２３７】
１次プロセッサ（２２１４）からのアクセスが発生したときは、ＰＰＢＳ（２２０３）は、次のコマンド、すなわち「ＲＡＭ  Ｒｅａｄ」、「ＲＡＭ  Ｗｒｉｔｅ」、「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」、「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」、「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」、および「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」に加えて、メモリバス制御信号を「ＬＣＤ  Ｗｒｉｔｅ（ＬＣＤ書込み）」コマンドに翻訳することもできる。
【０２３８】
レジスタ（ＲＥＧＳ  ２２０６）に関して、ＲＥＧＳ（２２０６）は、ＬＣＤ画面（または他のディスプレイ）の操作に関する設定情報を提供するＬＣＤ＿ＣＯＮＦＩＧレジスタを含む。このレジスタは、次のフィールドを含む。「ＬＣＤイネーブル」フィールドは、ＳＰＢＳ＿ＬＣＤ（２２０４）がＳＰＢＳとして機能しているのかそれともＬＣＤインターフェイスドライバとして機能しているのかを判定する。また、このフィールドは、判定に従ってＬＣＤ＿ＣＴＬＲ（２２２０）をディスエーブルまたはイネーブルする。ディスプレイがメモリシステム（２２０１）に接続されていない場合は、ＬＣＤ＿ＣＴＬＲ（２２２０）はディスエーブルされ、ＳＰＢＳ＿ＬＣＤ（２２０４）はＳＰＢＳとして機能するように設定される。ＬＣＤイネーブルフィールドは任意的に、メモリシステムの電源投入後のレジスタのデフォルト値として「ｄｉｓａｂｌｅ」にセットされるが、当該デフォルト値は任意的に「ｅｎａｂｌｅ」にセットすることもできる。携帯電話の少なくとも１つのＬＣＤ画面がＳＰＢＳ＿ＬＣＤインターフェースに取り付けられている場合は、電源投入の後に、１次プロセッサは、「ｅｎａｂｌｅ」の値をレジスタフィールドに書き込み、それによってＬＣＤ＿ＣＴＬＲ（２２２０）をイネーブルし、ＳＰＢＳ＿ＬＣＤ（２２０４）をＬＣＤのドライバインターフェイスとして設定する。
【０２３９】
ＬＣＤ＿ＣＯＮＦＩＧレジスタはさらに、次のフィールド、すなわち「ＬＣＤの開始アドレス」、「ＳＤＲＡＭの開始アドレス」、および「ＬＣＤに転送すべきデータ量」のフィールドも含み、これらのフィールドは、ＳＤＲＡＭからＬＣＤ画面（２２１９）へのデータ転送を構成するのに使用される。「ＬＣＤアドレスパーティション」フィールドは、複数のＬＣＤ画面または他のディスプレイがメモリシステム（２２０１）に取り付けられている場合に、ＬＣＤのアドレス空間全体における各ＬＣＤ画面の開始アドレスを定義する。
【０２４０】
コマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  ２２０５）を参照すると、ＣＭＤ＿ＣＴＬＲ（２２０５）は、ＰＰＢＳ（２２０３）を介して１次プロセッサ（２２１４）からコマンド「ＬＣＤ  Ｗｒｉｔｅ」を受け取ったときに、ＬＣＤ＿ＣＴＬＲ（２２２０）をアクティブ化して、ＳＰＢＳ＿ＬＣＤインターフェースを介しＳＤＲＡＭからメモリシステムの外部のＬＣＤ画面へのデータ転送を実施する。ＬＣＤ＿ＣＴＬＲ（２２２０）がデータ転送を完了させたときは、ＣＭＤ＿ＣＴＬＲ（２２０５）は、ＰＰＢＳ（２２０３）を介して１次プロセッサ（２２１４）に割り込み信号を送ってデータ転送が完了したことを指示する。
【０２４１】
ＬＣＤコントローラ（ＬＣＤ＿ＣＴＬＲ  （２２２０））を参照すると、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＳＤＲＡＭ（２２１８）に記憶されている画像データを、ＳＰＢＳ＿ＬＣＤ（２２０４）インターフェースを介してメモリシステムの外部のＬＣＤ画面（２２１９）に出力する役割を果たす。ＬＣＤ＿ＣＯＮＦＩＧレジスタの「ＬＣＤイネーブル」フィールドは、ＬＣＤ＿ＣＴＬＲ（２２２０）をイネーブルまたはディスエーブルする。ＬＣＤ＿ＣＴＬＲ（２２２０）がイネーブルされると、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＣＭＤ＿ＣＴＬＲ（２２０５）の制御下に入り、ＣＭＤ＿ＣＴＬＲ（２２０５）は、ＰＰＢＳ（２２０３）を介して１次プロセッサ（２２１４）の制御下に入る。ＬＣＤ＿ＣＯＮＦＩＧレジスタは、ＬＣＤ＿ＣＴＬＲ（２２２０）がＳＤＲＡＭ（２２１８）から該当するＬＣＤ画面へのデータ転送を実施するのに使用する情報を格納する。
【０２４２】
例えば、ＬＣＤ＿ＣＯＮＦＩＧレジスタは、転送すべきデータ量の指示、ＳＤＲＡＭの開始アドレス、ＬＣＤの開始アドレス、および２つのＬＣＤ画面のアドレス部分を記憶する。ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＣＭＤ＿ＣＴＬＲ（２２０５）からの「ＬＣＤ  Ｗｒｉｔｅ」コマンドによってアクティブ化されたときに、転送関連情報をＬＣＤ＿ＣＯＮＦＩＧレジスタから取得し、データ転送をＳＤＲＡＭのバースト転送と整列する複数のバースト転送に分解する。２つのＬＣＤ画面のＬＣＤアドレス部分およびＬＣＤの開始アドレスに基づいて、ＬＣＤ＿ＣＴＬＲ（２２２０）はさらに、２つのＬＣＤ画面の内のどちらの画面がデータを受け取るべきか判定する。ＬＣＤ＿ＣＴＬＲ（２２２０）はバースト転送毎に、ＳＤＲＡＭ（２２１８）へのアクセスを求めるアクセス要求をＭＡＤ（２２０８）に送る。アクセス権が付与されると、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＳＤＲＡＭ（２２１８）からのバースト読出し処理を実施し、読み出されたデータをＳＰＢＳ＿ＬＣＤ（２２０４）内のデータバッファに書き込み、ＳＰＢＳ＿ＬＣＤ（２２０４）は、当該データを選択されたＬＣＤ画面に書き込む。ＬＣＤ＿ＣＴＬＲ（２２２０）は、全体のデータ転送が完了するまでこのバースト転送を繰り返す。
【０２４３】
次に図２３を参照して、図２２に示される第５の実施形態の処理について説明する。図２３は、ＳＤＲＡＭ（２２１８）からＬＣＤ画面に画像データを転送する例示的なプロセスを示している。状態（２３０１）で、１次プロセッサ（２２１４）は、ＬＣＤ＿ＣＯＮＦＩＧレジスタの「ＬＣＤイネーブル」フィールドへの書込みを行ってＬＣＤ＿ＣＴＬＲ（２２２０）をイネーブルし、ＳＰＢＳ＿ＬＣＤ（２２０４）がＬＣＤのドライバインターフェイスとして働くように設定すると共に、ＳＤＲＡＭからＬＣＤ画面へのデータ転送を設定する。１次プロセッサ（２２１４）は、状態（２３０２）で「ＬＣＤ  Ｗｒｉｔｅ」コマンドを発行し、状態（２３０３）で、ＣＭＤ＿ＣＴＬＲ（２２０５）にＬＣＤ＿ＣＴＬＲ（２２２０）をアクティブ化させてＳＤＲＡＭ（２２１８）からＬＣＤ画面へのデータ転送を実施させる。ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＭＡＤ（２２０８）のアクセス権付与プロトコルに従って、ＭＡＤ（２２０８）を介してＳＤＲＡＭ（２２１８）からデータを読み出し、対応する全ての画像データがＳＤＲＡＭ（２２１８）からＬＣＤ画面に転送されるまで１つ（または複数）のＬＣＤ画面にデータを書き込む。この時点で、ＣＭＤ＿ＣＴＬＲ（２２０５）は、１次プロセッサ（２２１４）に割り込んでデータ転送の完了を指示する（２３１０）。
【０２４４】
特に状態（２３０４）で、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＬＣＤ＿ＣＯＮＦＩＧレジスタの値に基づいて初期のバースト転送用のＳＤＲＡＭアドレスを生成する。状態（２３０５）で、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＭＡＤ（２２０８）を介してＳＤＲＡＭアクセスを要求する。状態（２３０６）で、ＭＡＤ（２２０８）がＳＤＲＡＭアクセス権を付与したかどうか判定され、状態（２３０７）で、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＳＤＲＡＭ（２２１８）からＬＣＤ画面（２２１９）にデータバーストを転送する。状態（２３０８）で、実施すべきデータバーストが残っているかどうか判定される。転送すべきバーストが残っている場合は、状態（２３０９）に進み、ＬＣＤ＿ＣＴＬＲ（２２２０）は、次のバースト転送用のＳＤＲＡＭアドレスを生成する。該当する全ての画像データがＳＤＲＡＭ（２２１８）からＬＣＤ画面に転送されると、状態（２３１０）で、ＣＭＤ＿ＣＴＬＲ（２２０５）は、１次プロセッサ（２２１４）に割り込んでデータ転送の完了を指示する。
【０２４５】
ＬＣＤ＿ＣＴＬＲ（２２２０）は、任意的に、それ自体がディスエーブルされたときにＳＰＢＳ＿ＬＣＤ（２２０４）とＭＡＤブロック（２２０８）の間の単純な接続の働きをする。ＳＰＢＳ＿ＬＣＤ（２２０４）は、通常のＳＰＢＳインターフェースとして機能し、ＬＣＤ＿ＣＴＬＲ（２２２０）が存在しない場合と同様にＭＡＤブロック（２２０８）と相互作用してＳＤＲＡＭ（２２１８）にアクセスする。
【０２４６】
例示的な本実施形態では、ＬＣＤ＿ＣＴＬＲ（２２２０）は、ＳＤＲＡＭ（２２１８）からＬＣＤ画面（２２１９）にデータを移動させるが、任意的に、ＳＤＲＡＭ（２２１８）内の画像データをＬＣＤ画面（２２１９）に移動させる前に当該画像データを異なる形式に加工する、より複雑な機能を実施することもできる。本明細書には詳細な画像処理技法を記載していないが、それらの画像処理技法は、必要に応じてまたは所望の形でユーザによって定義することができ、また、メモリシステム（２２０１）を用いると、外部プロセッサの計算能力を過度に利用することのない画像処理および画像レンダリングを行って画像を表示することが可能となる。
【０２４７】
ＳＰＢＳ＿ＬＣＤ（２２０４）は、１次プロセッサ（２２１４）によって２次プロセッサの制御下に入る通常のＳＰＢＳインターフェースとして構成することも、ＬＣＤ画面（２２１９）を制御するＬＣＤインターフェースとして構成することもできるが、ＳＰＢＳ＿ＬＣＤ（２２０４）は任意的に、それらの２つの構成の内の１つを任意の特定の携帯電話で使用するように制限される。したがって、メモリシステム（２２０１）が携帯電話など特定のデバイスにインストールされた場合は、ＳＰＢＳ＿ＬＣＤ（２２０４）は任意的に、２次プロセッサあるいは１つまたは複数のディスプレイに恒久的に取り付けられ（あるいはいずれのデバイスにも取り付けられず）、したがって電源投入後に１次プロセッサ（２２１４）によって構成されることから、携帯電話が標準動作モードにある間にＳＰＢＳ＿ＬＣＤ（２２０４）を２つの構成間で切り換える必要がなくなる。
【０２４８】
図２４は、メモリシステム（２４０１）の第６の実施形態を示している。例示的なメモリシステム（２４０１）は、外部から挿入される１つまたは複数の着脱可能なメモリカード（２４１２）とのインターフェースを有しており、さらに、ＳＤＲＡＭ（２４０４）とメモリカード（２４１２）の間のデータ転送を実施するように制御回路（２４０２）を設定しアクティブ化する１次プロセッサを有している。限定ではなく例示として、着脱可能なメモリカードは、メモリスティックカード、スマートメディアカード、セキュアデジタルカード、コンパクトフラッシュカード、マルチメディアカード、あるいは他のカード形式とすることができる。図示の例ではメモリシステム（２４０１）に１つのメモリカードが接続されるように示してあるが、他の実施形態は、複数のメモリカードインターフェイスおよび複数のカードを含むことができる。
【０２４９】
メモリカードとは、任意的に携帯電話のスロットやレセプタクルなど対象デバイスのスロットに挿入することができ、それによって対象デバイスの電子システムに接続することができる着脱可能なデータ記憶装置を指す。携帯電話または他の対象デバイスはその後、メモリカードによって提供されるデータ記憶空間にアクセスできるようになる。以下、「メモリカード」という用語はＭＣと記載する。ＭＣの挿入が携帯電話によって許容されるように、携帯電話は、ＭＣとの機械的かつ電気的な互換性を有するＭＣインターフェイスを提供する。メモリシステム（２４０１）は、ＭＣとの電気的な互換性を有し、ＭＣのバスプロトコルに対応できるインターフェースを提供し、携帯電話の筐体は、ＭＣとの機械的な互換性を有するスロットおよびコネクタを含む。
【０２５０】
図２５は、ＭＣ（２５１９）とのインターフェースをもつ制御回路を含めたメモリシステム（２５０１）の詳細なブロック図を示している。以下では、第１の実施形態の機能ブロックと異なる本実施形態の制御回路の機能ブロックについて説明する。
【０２５１】
ＰＩ回路（２５０２）を参照すると、ＰＩ回路（２５０２）は、ＰＰＢＳ（２５０３）と、複数のＳＰＢＳ（２５０４）とを含む。本実施形態では、ＳＰＢＳの内の少なくとも１つは、それ自体が２次プロセッサのメモリバスに接続されたときは通常のＳＰＢＳとして機能し、それ自体が着脱可能なＭＣ（２５１９）とのインターフェースとなるときにはＭＣ（２５１９）のドライバインターフェイスとして機能する形でプログラムできるように設定可能なインターフェースを有する。かかるＳＰＢＳを「ＳＰＢＳ＿ＭＣ（２５０４）」（２５０４）と呼ぶ。それ自体が通常のＳＰＢＳとして機能するようにプログラムされた場合には、ＳＰＢＳ＿ＭＣ（２５０４）は、他のＳＰＢＳに関して上述したのと同様の形で対応する２次プロセッサのメモリバスと相互作用する。それ自体がＭＣのドライバインターフェイスとして機能するようにプログラムされた場合には、ＳＰＢＳ＿ＭＣ（２５０４）は、ＭＣのデータ転送プロトコルに従ってＭＣ（２５１９）を操作するための、制御信号、データ信号、およびアドレス信号を提供する。
【０２５２】
この例では、ＳＰＢＳ＿ＭＣ（２５０４）内のデータバッファは、ＳＤＲＡＭ（２５１８）とＭＣ（２５１９）の間のデータ転送用の一時データ記憶域として使用される。このデータバッファを用いると、ＭＣ（２５１９）とＳＤＲＡＭ（２５１８）の間のデータ転送速度の不整合が許容される。ＲＥＧＳブロック（２５０６）内のＭＣ＿ＣＯＮＦＩＧレジスタは、１次プロセッサ（２５１４）によって書込み可能であり、ＳＰＢＳ＿ＭＣ（２５０４）がＳＰＢＳとして機能しているのかそれともＭＣのインターフェイスドライバとして機能しているのかを判定する。
【０２５３】
ＰＰＢＳ（２５０３）は、１次プロセッサ（２５１４）からアクセスされたときは、「ＲＡＭ  Ｒｅａｄ」、「ＲＡＭ  Ｗｒｉｔｅ」、「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」、「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」、「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」、および「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」コマンドに加えて、メモリバス制御信号を次の２つの追加コマンド、すなわち「ＭＣ  Ｗｒｉｔｅ（ＭＣ書込み）」および「ＭＣ  Ｒｅａｄ（ＭＣ読出し）」に翻訳することもできる。
【０２５４】
ＲＥＧＳブロック（２５０６）に関して、当該ブロックにはＭＣの操作に関する設定情報を提供するＭＣ＿ＣＯＮＦＩＧレジスタが含まれている。ＭＣ＿ＣＯＮＦＩＧレジスタは、次のフィールドを格納する。ＳＰＢＳ＿ＭＣ（２５０４）がＳＰＢＳとして機能しているのかそれともＭＣのインターフェイスドライバとして機能しているのかを判定する「ＭＣイネーブル」フィールドが設けられている。また、このフィールドは、判定に従ってＭＣ＿ＣＴＬＲ（２５２０）をディスエーブルまたはイネーブルする。メモリシステム（２５０１）がＭＣインターフェイスを提供しないことが企図される場合には、ＭＣ＿ＣＴＬＲ（２５２０）はディスエーブルされ、ＳＰＢＳ＿ＭＣ（２５０４）はＳＰＢＳとして機能するように設定される。これは任意的に、メモリシステム（２５０１）の電源投入後の当該レジスタフィールドのデフォルト値とされる。メモリシステム（２５０１）がＭＣインターフェイスを提供することが企図される場合には、１次プロセッサ（２５１４）は、「ＭＣイネーブル」レジスタのフィールドにｅｎａｂｌｅの値を書き込んでＭＣ＿ＣＴＬＲ（２５２０）をイネーブルし、ＳＰＢＳ＿ＭＣ（２５０４）をＭＣのドライバインターフェイスとして構成する。「ＭＣ（２５１９）の開始アドレス」、「ＳＤＲＡＭ（２５１８）の開始アドレス」、および「ＭＣとの間で転送すべきデータ量」の内の１つまたは複数を含む追加的なフィールドは、ＳＤＲＡＭ（２５１８）とＭＣ（２５１９）の間のデータ転送を設定する。
【０２５５】
コマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  ２５０５）に関して、ＣＭＤ＿ＣＴＬＲ（２５０５）は、ＰＰＢＳ（２５０３）を介して１次プロセッサ（２５１４）から「ＭＣ  Ｗｒｉｔｅ」または「ＭＣ  Ｒｅａｄ」コマンドを受け取ったときに、ＭＣ＿ＣＴＬＲ（２５２０）をアクティブ化して、それぞれＳＰＢＳ＿ＭＣ（２５０４）インターフェースを介してＳＤＲＡＭ（２５１８）からＭＣ（２５１９）へのまたはＭＣ（２５１９）からＳＤＲＡＭ（２５１８）へのデータ転送を実施する。ＭＣ＿ＣＴＬＲ（２５２０）がデータ転送を完了させたときは、ＣＭＤ＿ＣＴＬＲ（２５０５）は、ＰＰＢＳ（２５０３）を介して１次プロセッサ（２５１４）に割り込み信号を送ってデータ転送が完了したことを指示する。
【０２５６】
ＭＣコントローラ（ＭＣ＿ＣＴＬＲ  ２５２０）に関して、ＭＣ＿ＣＴＬＲ（２５２０）は、ＳＰＢＳ＿ＭＣ（２５０４）インターフェースを介してＳＤＲＡＭ（２５１８）とＭＣ（２５１９）の間でデータを転送する役割を果たす。先に論じたように、ＭＣ＿ＣＯＮＦＩＧレジスタの「ＭＣイネーブル」フィールドは、ＭＣ＿ＣＴＬＲ（２５２０）をイネーブルまたはディスエーブルする。ＭＣ＿ＣＴＬＲ（２５２０）がイネーブルされると、ＭＣ＿ＣＴＬＲ（２５２０）は、ＣＭＤ＿ＣＴＬＲ（２５０５）の制御下に入り、ＣＭＤ＿ＣＴＬＲ（２５０５）は、ＰＰＢＳ（２５０３）を介して１次プロセッサ（２５１４）の制御下に入る。ＭＣ＿ＣＯＮＦＩＧレジスタは、転送すべきデータ量、ＳＤＲＡＭ（２５１８）の開始アドレス、ＭＣ（２５１９）の開始アドレスなど、ＭＣ＿ＣＴＬＲ（２５２０）がＳＤＲＡＭ（２５１８）とＭＣ（２５１９）の間のデータ転送を実施するのに必要な情報を格納する。
【０２５７】
ＭＣ＿ＣＴＬＲ（２５２０）は、ＣＭＤ＿ＣＴＬＲ（２５０５）からの「ＭＣ  Ｗｒｉｔｅ」または「ＭＣ  Ｒｅａｄ」コマンドによってアクティブ化されたときに、転送関連情報をＭＣ＿ＣＯＮＦＩＧレジスタから取得し、データ転送をＳＤＲＡＭ（２５１８）のバースト転送と整列する複数のバースト転送に分解し、ＭＣ＿ＣＴＬＲ（２５２０）はバースト転送毎に、ＳＤＲＡＭ（２５１８）へのアクセスを求めるアクセス要求をＭＡＤに送る。アクセス権が付与されると、書込みコマンド「ＭＣ  Ｗｒｉｔｅ」に関して、ＭＣ＿ＣＴＬＲ（２５２０）は、ＳＤＲＡＭ（２５１８）からデータバーストを読み出し、当該データバーストをＳＰＢＳ＿ＭＣ（２５０４）内のデータバッファを介してＭＣ（２５１９）に書き込む。読出しコマンド「ＭＣ  Ｒｅａｄ」が実施される場合は、ＭＣ＿ＣＴＬＲ（２５２０）によって、ＳＰＢＳ＿ＭＣ（２５０４）内のデータバッファを介してＭＣ（２５１９）からデータバーストが読み出され、ＭＣ＿ＣＴＬＲ（２５２０）は、当該データバーストをＳＤＲＡＭ（２５１８）に書き込む。ＭＣ＿ＣＴＬＲ（２５２０）は、全体のデータ転送が完了するまでこのバースト転送を繰り返す。
【０２５８】
メモリシステム制御回路は任意的に、本実施形態に関して論じたようなＭＣインターフェイスおよび関連回路に加え、第５の実施形態に関して上述したようなディスプレイインターフェイスおよび関連回路を含むこともできる。
【０２５９】
次に図２６を参照して、図２５に示される第６の実施形態の処理について説明する。図２６は、ＳＤＲＡＭ（２５１８）からＭＣ（２５１９）にデータが転送される例示的なデータ転送プロセスを示している。状態（２６０１）で、１次プロセッサ（２５１４）は、ＭＣ＿ＣＯＮＦＩＧレジスタへの書込みを行ってＭＣ＿ＣＴＬＲ（２５２０）をイネーブルし、ＳＰＢＳ＿ＭＣ（２５０４）がＭＣ（２５１９）のドライバインターフェイスとして働くように設定すると共に、ＳＤＲＡＭ（２５１８）とＭＣ（２５１９）の間のデータ転送を設定する。１次プロセッサ（２５１４）は、状態（２６０２）で「ＭＣ  Ｗｒｉｔｅ」コマンドを発行し、状態（２６０３）で、ＣＭＤ＿ＣＴＬＲ（２５０５）にＭＣ＿ＣＴＬＲ（２５２０）をアクティブ化させてＳＤＲＡＭ（２５１８）からＭＣ（２５１９）へのデータ転送を実施させる。ＭＣ＿ＣＴＬＲ（２５２０）は、ＭＣ＿ＣＯＮＦＩＧレジスタの値に基づいてＳＤＲＡＭ（２５１８）内のデータをＳＤＲＡＭ（２５１８）のバーストと整列するデータバーストに分解し、ＭＡＤブロック（２５０８）のアクセス権付与プロトコルに従って、ＭＡＤブロック（２５０８）を介してＳＤＲＡＭ（２５１８）から各バーストを読み出し、当該バーストをＭＣ（２５１９）に書き込む（２６０４〜２６０７）。特に状態（２６０４）で、ＭＣ＿ＣＴＬＲ（２５２０）は、最初のバースト転送用のＳＤＲＡＭアドレスを生成する。状態（２６０５）で、ＭＣ＿ＣＴＬＲは、ＭＡＤブロック（２５０８）にアクセス要求を送る。状態（２６０６）で、ＭＡＤブロック（２５０８）がアクセスを提供したかどうか判定される。ＭＡＤブロック（２５０８）がアクセス権を付与した場合は、状態（２６０８）に進み、バーストが残っているかどうか判定される。バーストがまだ残っている場合は、状態（２６０９）に進み、ＭＣ＿ＣＴＬＲ（２５２０）は、次のバースト転送用のＳＤＲＡＭアドレスを生成し、状態（２６０５）に進む。残りのバーストがなくなり、したがってＭＣ＿ＣＴＬＲ（２５２０）がデータ転送を完了させると、状態（２６１０）に進み、ＭＣ＿ＣＴＬＲ（２５２０）は、１次プロセッサ（２５１４）に割り込む。
【０２６０】
反対方向の（ＭＣ（２５１９）からＳＤＲＡＭ（２５１８）への）データ転送が実施される場合、その処理は、１次プロセッサ（２５１４）がＣＭＤ＿ＣＴＬＲのＭＣ＿ＣＴＬＲ（２５２０）に対して「ＭＣ  Ｒｅａｄ」コマンドを発行し、ＭＣ＿ＣＴＬＲ（２５２０）がＭＣ（２５１９）からＳＤＲＡＭ（２５１８）へのデータ転送を実施する点を除けば、上述の処理と同様である。
【０２６１】
ＭＣ＿ＣＴＬＲ（２５２０）がディスエーブルされると、ＭＣ＿ＣＴＬＲ（２５２０）は、ＳＰＢＳ＿ＭＣ（２５０４）とＭＡＤブロック（２５０８）の間の接続の働きをする。ＳＰＢＳ＿ＭＣ（２５０４）は、通常のＳＰＢＳインターフェースとして機能し、ＭＣ＿ＣＴＬＲ（２５２０）が存在しない場合または必要ない場合と同様に、ＭＡＤブロック（２５０８）と相互作用してＳＤＲＡＭ（２５１８）にアクセスする。
【０２６２】
さらに、ＳＰＢＳ＿ＭＣ（２５０４）は、１次プロセッサ（２５１４）によって２次プロセッサの制御下に入る通常のＳＰＢＳインターフェースとして構成することも、ＭＣを制御するＭＣインターフェイスとして構成することもできるが、ＳＰＢＳ＿ＭＣ（２５０４）は、それらの２つの構成の内の１つを任意の特定の携帯電話で使用することが企図される。したがって、メモリシステム（２５０１）が携帯電話にインストールされた場合は、ＳＰＢＳ＿ＭＣ（２５０４）は、２次プロセッサに恒久的にまたは固定式に取り付けられあるいはＭＣインターフェイスとして使用され（あるいは全く使用されず）、したがって電源投入後に１次プロセッサ（２５１４）によって構成されることから、携帯電話が標準動作モードにある間にＳＰＢＳ＿ＭＣ（２５０４）を２つの構成間で切り換える必要がなくなる。
【０２６３】
次に、メモリシステムの第７の実施形態について説明する。図２７に示されるように、例示的なメモリシステム（２７０２）は、フラッシュメモリ（２７０４）と、制御回路（２７０３）とを含み、それによって制御回路（２７０３）は、第１の実施形態に関して上述したのと同様の形でフラッシュメモリ（２７０４）を操作するための制御信号を提供する。任意的に、この例示的なメモリシステム（２７０２）には図２に示されるメインＲＡＭ（２０５）が存在しない。さらに、図２７を参照すると、この例では、メモリシステム（２７０２）にアクセスできる外部電子機器（２７０６）内の１つの外部プロセッサが示されており、この外部プロセッサは、１次プロセッサ（２７０７）として指定されている。任意的に、追加のプロセッサおよび関連するインターフェース回路（例えばＰＢＳ）も含むことができる。
【０２６４】
１次プロセッサ（２７０７）は、第１の実施形態に関して上述したのと同様の形で制御回路に接続されている。１次プロセッサ（２７０７）は、メモリシステム（２７０２）にアクセスすることに加えて、外部電子機器内に揮発性メモリ（例えばＳＤＲＡＭ、ＤＲＡＭなど）および／または不揮発性メモリ（例えばフラッシュメモリ、ＥＥＰＲＯＭ、ＲＯＭなど）も備えることができる。
【０２６５】
図２８は、本実施形態の制御回路の機能ブロックを示している。図示の実施形態は、１次プロセッサ（２８１４）と、ＰＩ（２８０２）と、ＰＰＢＳ（２８０３）と、ＣＭＤ＿ＣＴＬＲ（２８０５）と、ＲＥＧＳブロック（２８０６）と、ＢＯＯＴ＿ＲＡＭ（２８０７）と、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）と、ＦＭＭ（２８１１）と、ＤＭＡ＿ＣＴＬＲ（２８１２）と、ＢＯＯＴ＿ＣＴＬＲ（２８１３）と、電源投入のリセット信号（２８１６）と、不揮発性ＮＡＮＤフラッシュメモリ（２８１７）とを含む。以下では、第１の実施形態と異なる制御回路の機能ブロックについて説明する。
【０２６６】
図２８に示される例示的な実施形態は任意的に、ＭＡＤブロック（図３に示されるＭＡＤ（３０８）など）またはＳＤＲＡＭ＿ＣＴＬＲブロック（図３に示されるＳＤＲＡＭ＿ＣＴＬＲ（３０９）など）を含まない。
【０２６７】
プロセッサインターフェース（ＰＩ  ２８０２）に関して、ＰＩブロック（２８０２）は、任意的にＰＢＳおよびＰＰＢＳ（２８０３）を１つだけ含み、限定されるものではないがＳＰＢＳブロックを含まない。本実施形態のＰＰＢＳ（２８０３）と第１の実施形態のＰＰＢＳの違いを以下で説明する。
【０２６８】
第１の実施形態の場合と同様に、ＰＰＢＳ（２８０３）は、１次プロセッサ（２８１４）からのメモリバス信号をコマンド、データ、およびアドレス情報に翻訳し、次いで当該情報をＣＭＤ＿ＣＴＬＲ（２８０５）に渡す役割を果たす。次に、ＣＭＤ＿ＣＴＬＲ（２８０５）は、制御回路の該当する部分をアクティブ化してメモリシステム（２８０２）内の関連する処理を実施する。しかしながら、ＰＰＢＳ（２８０３）がメモリバス制御信号から翻訳するコマンドの内の２つ、すなわち「Ｄｏｗｎｌｏａｄ  ＤＭＡ  Ｔｒａｎｆｅｒ」および「Ｕｐｌｏａｄ  ＤＭＡ  Ｔｒａｎｓｆｅｒ」は、「Ｆｌａｓｈ  Ｒｅａｄ（フラッシュ読出し）」および「Ｆｌａｓｈ  Ｗｒｉｔｅ（フラッシュ書込み）」コマンドによって置き換えられまたは補完される。より具体的には、本実施形態のＰＰＢＳ（２８０３）は、１次プロセッサ（２８１４）のメモリバス制御信号を次の例示的なコマンドの内の１つまたは複数、すなわち「ＲＡＭ  Ｒｅａｄ」、「ＲＡＭ  Ｗｒｉｔｅ」、「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」、「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」、「Ｆｌａｓｈ  Ｒｅａｄ」、または「Ｆｌａｓｈ  Ｗｒｉｔｅ」（および任意的に追加のコマンド）の内の１つまたは複数に翻訳し、当該１つ（または複数）のコマンドをＣＭＤ＿ＣＴＬＲ（２８０５）に送る。
【０２６９】
ＰＩブロック（２８０２）がＳＰＢＳブロックを含まない場合は、第１の実施形態で提供された１次プロセッサ（２８１４）が２次プロセッサに向かうリセット信号を制御するための仕組みが必ずしも存在する必要はない。しかしながら、本実施形態では、制御回路が１次プロセッサ（２８１４）に向かうリセット信号を制御するための仕組みは、依然として提供されることが好ましい。
【０２７０】
図２８に示される実施形態はさらに、他の実施形態に関して上述したのと同様に追加のＰＢＳを介したＭＣインターフェイスおよび／または追加のＰＢＳを介したディスプレイインターフェイスも含むことができる。
【０２７１】
図２９は、図２８に示される実施形態に任意的に含めることができるリセット関連回路を示している。図示の回路は、１次プロセッサ（２９１２）と、ＣＭＤ＿ＣＴＬＲ（２９０１）と、ＢＯＯＴ＿ＣＴＬＲ（２９０２）と、ＰＩ（２９０６）と、ＰＰＢＳ（２９０７）と、１次プロセッサ（２９１２）をＰＰＢＳ（２９０７）と接続させるメモリバス（２９０９）と、電源投入のリセット信号（２９１４）と、リセット信号（２９１０）とを含む。図２９に示されるように、電源投入のリセット（２９１４）がアサートされると、ＢＯＯＴ＿ＣＴＬＲ（２９０２）がリセットモードに入り、それによってＢＯＯＴ＿ＣＴＬＲ（２９０２）は、１次プロセッサ（２９１２）のリセット信号（２９１０）をアサート状態に保つ。電源投入のリセットがディアサートされると、ＢＯＯＴ＿ＣＴＬＲ（２９０２）は、１次プロセッサ（２９１２）のリセット信号をアサート状態に保つことによって１次プロセッサ（２９１２）をリセット状態に保ちながら、同時に、制御回路（２９０１）の様々な機能を初期化するタスクの実施を開始する。ＢＯＯＴ＿ＣＴＬＲ（２９０２）は、初期化タスクを完了させた後にリセット信号をディアサートして１次プロセッサ（２９１２）をリセットから解放する。
【０２７２】
図３０は、図２８に示される実施形態に任意的に含めることができる割り込み関連回路を示している。図示の回路は、１次プロセッサ（３０１２）と、制御回路（３００１）とを含む。制御回路は、ＰＩ（３００７）と、ＰＰＢＳ（３００８）と、１次プロセッサ（３０１２）をＰＰＢＳ（３００８）と接続させるメモリバス（３０１４）と、割り込み信号（３０１５）と、ＲＥＧＳブロック（３００４）と、ＩＮＴ＿ＲＥＣＯＲＤレジスタ（３００５）とを含む。
【０２７３】
図３０に示されるように、２次プロセッサが存在しない場合は、２次プロセッサが１次プロセッサ（３０１２）に割り込むための仕組みは必要でないことから、当該仕組みは任意的に存在しない。ＣＭＤ＿ＣＴＬＲ（３００２）が１次プロセッサ（３０１２）に割り込むための仕組みは、依然として提供されることが好ましい。ＣＭＤ＿ＣＴＬＲ（３００２）によって生成される割り込み信号（３００３）は任意的に、ＰＰＢＳ（３００８）および信号（３０１５）を介して１次プロセッサ（３０１２）に直接送られ、また、割り込み記録レジスタ、すなわち１次プロセッサ（３０１２）によって読み出されクリアされ得るＲＥＧＳブロック（３００４）内のＩＮＴ＿ＲＥＣＯＲＤ（３００５）レジスタに記録される。
【０２７４】
図２８を再び参照すると、コマンドコントローラ（ＣＭＤ＿ＣＴＬＲ  ２８０５）は、以下で説明するように第１の実施形態とは異なる形で、ＰＰＢＳ（２８０３）を介して１次プロセッサ（２８１４）から受け取られたコマンドを実施する。
【０２７５】
「ＲＡＭ  Ｒｅａｄ」および「ＲＡＭ  Ｗｒｉｔｅ」コマンドに関しては、メモリシステム（２８０１）がＳＤＲＡＭを含んでいないので、ＢＯＯＴ＿ＲＡＭ（２８０７）は、１次プロセッサ（２８１４）がアクセス可能なメモリシステムのＲＡＭメモリ空間を提供する。１次プロセッサ（２８１４）が「ＲＡＭ  Ｒｅａｄ」または「ＲＡＭ  Ｗｒｉｔｅ」コマンドを発行したときは、ＣＭＤ＿ＣＴＬＲ（２８０５）は、１次プロセッサ（２８１４）がＢＯＯＴ＿ＲＡＭ（２８０７）との間のバースト転送を実施するのを許可する。
【０２７６】
「Ｒｅｇｉｓｔｅｒ  Ｒｅａｄ」および「Ｒｅｇｉｓｔｅｒ  Ｗｒｉｔｅ」コマンドに関して、ＣＭＤ＿ＣＴＬＲ（２８０５）は、第１の実施形態に関して上述したのと同様の形でそれらの２つのコマンドを実施する。
【０２７７】
「Ｆｌａｓｈ  Ｒｅａｄ」および「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドに関して、Ｆｌａｓｈ  Ｒｅａｄコマンドは、ＣＭＤ＿ＣＴＬＲ（２８０５）にＤＭＡ＿ＣＴＬＲ（２８１２）をアクティブ化させてＮＡＮＤフラッシュメモリ（２８１７）からＢＯＯＴ＿ＲＡＭ（２８０７）へのデータ転送を実施させる。Ｆｌａｓｈ  Ｗｒｉｔｅコマンドは、ＣＭＤ＿ＣＴＬＲ（２８０５）にＤＭＡ＿ＣＴＬＲ（２８１２）をアクティブ化させてＢＯＯＴ＿ＲＡＭ（２８０７）からＮＡＮＤフラッシュメモリ（２８１７）へのデータ転送を実施させる。
【０２７８】
ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＣＭＤ＿ＣＴＬＲ（２８０５）によってアクティブ化された後に、ＲＥＧＳブロック（２８０６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタから、限定されるものではないが、ＮＡＮＤフラッシュページ数を用いて記述される移動させるべきデータ量、ＮＡＮＤフラッシュの開始論理ページアドレス（ＬＰＡ）、ＢＯＯＴ＿ＲＡＭの「転送セクション」のアドレス範囲などデータ転送に関連する情報を取得する。したがって、１次プロセッサ（２８１４）は、ＤＭＡ＿ＣＯＮＦＩＧレジスタに適切な値をロードした後に、ＣＭＤ＿ＣＴＬＲ（２８０５）に対して「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドを発行する。コマンドが完了すると、ＣＭＤ＿ＣＴＬＲ（２８０５）は、ＰＰＢＳ（２８０３）インターフェースを介して１次プロセッサ（２８１４）に割り込み信号を送る。ＣＭＤ＿ＣＴＬＲ（２８０５）は任意的に、第１の実施形態に存在するデータバッファを含まない。
【０２７９】
「Ｆｌａｓｈ  Ｒｅａｄ」および「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドに関するデータ転送は、ＤＭＡ＿ＣＴＬＲ（２８１２）およびＣＭＤ＿ＣＴＬＲ（２８０５）がそれぞれの側のＢＯＯＴ＿ＲＡＭ（２８０７）上のデータトラフィックを制御して、ＢＯＯＴ＿ＲＡＭ（２８０７）とＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦとの間のデータ転送と、ＢＯＯＴ＿ＲＡＭ（２８０７）と１次プロセッサ（２８１４）の間のデータ転送と、が同時に発生するように実施されることが好ましい。ＢＯＯＴ＿ＲＡＭ（２８０７）の「転送セクション」が一杯であり、１次プロセッサ（２８１４）からのデータをすぐに受け取ることができない場合、または「Ｆｌａｓｈ  Ｒｅａｄ」処理の際にＢＯＯＴ＿ＲＡＭ（２８０７）の「転送セクション」が空になった場合は、ＣＭＤ＿ＣＴＬＲ（２８０５）は、ＰＰＢＳ（２８０３）を介して１次プロセッサ（２８１４）に対する「待機」信号をアサートして、ＢＯＯＴ＿ＲＡＭ（２８０７）のデータ転送を続行する準備が整うまでメモリバス上のデータ転送を一時的に停止する。
【０２８０】
次にレジスタ（ＲＥＧＳ  ２８０６）を参照すると、メモリシステム（２８０１）が制御回路の外部のＳＤＲＡＭを含んでいないので、かかるＳＤＲＡＭにアクセスすることに関するＳＤＲＡＭ＿ＢＵＲＳＴ＿ＬＥＮＧＴＨレジスタやＭＡＤ＿ＰＲＩＯＲＩＴＹレジスタなどの情報を格納するレジスタは任意的に、ＲＥＧＳ（２８０６）から省略される。ＤＭＡ＿ＣＯＮＦＩＧレジスタは、図２８に示される制御回路が第１の実施形態のようなＮＡＮＤフラッシュとＳＤＲＡＭの間のＤＭＡ転送を行う代わりに、「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドを実施するときに使用する情報を格納する。
【０２８１】
次にブートＲＡＭ（ＢＯＯＴ＿ＲＡＭ  ２８０７）を参照すると、ＢＯＯＴ＿ＲＡＭ（２８０７）は、ＢＯＯＴ＿ＣＴＬＲ（２８１３）およびＣＭＤ＿ＣＴＬＲ（２８０５）に加えて、接続（２８１９）を介してＤＭＡ＿ＣＴＬＲ（２８１２）の制御下にも入る。ＢＯＯＴ＿ＣＴＬＲ（２８１３）はデフォルトで、電源投入のリセット後にＢＯＯＴ＿ＲＡＭ（２８０７）の制御を有し、制御回路の初期化の一環として、ＮＡＮＤフラッシュメモリ（２８１７）からＢＯＯＴ＿ＲＡＭ（２８０７）にシステムブートコードをロードする。次いで、ＢＯＯＴ＿ＣＴＬＲ（２８１３）は、ＣＭＤ＿ＣＴＬＲ（２８０５）およびＤＭＡ＿ＣＴＬＲ（２８１２）とＢＯＯＴ＿ＲＡＭ（２８０７）の制御を交代する。「ＲＡＭ  Ｒｅａｄ」または「ＲＡＭ  Ｗｒｉｔｅ」処理の際に、ＣＭＤ＿ＣＴＬＲ（２８０５）は、１次プロセッサ（２８１４）がＢＯＯＴ＿ＲＡＭ（２８０７）との間のＤＭＡ転送を実施するのを許可する。「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」処理の際に、ＣＭＤ＿ＣＴＬＲ（２８０５）は、１次プロセッサ（２８１４）がＢＯＯＴ＿ＲＡＭ（２８０７）との間のＤＭＡ転送を実施するのを許可する一方、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＢＯＯＴ＿ＲＡＭ（２８０７）とＦＬＡＳＨ＿ＣＴＬＲ（２８１０）内のＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦとの間のデータ転送を実施する。
【０２８２】
「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」処理の際に、ＢＯＯＴ＿ＲＡＭ（２８０７）内のあるセクションは、概念的に「転送セクション」として指定され、当該「転送セクション」は、１次プロセッサ（２８１４）とＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦとの間を流れるデータを一時的に記憶するのに使用される。ＢＯＯＴ＿ＲＡＭ（２８０７）内の「転送セクション」のアドレス範囲は、１次プロセッサ（２８１４）が「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドを発行する前に適当な値を用いてプログラムする、ＲＥＧＳブロック（２８０６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタによって定義される。ＢＯＯＴ＿ＲＡＭ（２８０７）内の転送セクションの目的は、システムブートコードなどＢＯＯＴ＿ＲＡＭ（２８０７）内の既存のデータがデータ転送中に上書きされないように指定されるデータ転送用セクションを作成することである。
【０２８３】
フラッシュメモリコントローラ（ＦＬＡＳＨ＿ＣＴＬＲ（２８１０））に関して、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）は、ＤＭＡ＿ＣＴＬＲ（２８１２）がＦＬＡＳＨ＿ＣＴＬＲ（２８１０）の動作を停止させるための「ｆｌａｓｈ＿ｈａｌｔ（フラッシュ停止）」という入力信号を提供する。「ｆｌａｓｈ＿ｈａｌｔ」信号がアサートされると、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）は、ＮＡＮＤフラッシュメモリの処理を停止するが、現在の処理状態は、依然として維持される。「ｆｌａｓｈ＿ｈａｌｔ」信号がディアサートされると、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）は、現在の処理状態からＮＡＮＤフラッシュメモリの処理を続行する。
【０２８４】
フラッシュメディアマネージャ（ＦＭＭ  ２８１１）に関しては、本実施形態ではメモリシステム（２８０１）がＳＤＲＡＭを含んでいないので、ＦＭＭ（２８１１）のＦＭＭ＿Ｐは、ＦＭＭ＿ＲＡＭとＳＤＲＡＭの間でデータを転送する命令を提供する必要はない。したがって、ＦＭＭプログラムコードおよびＦＭＭアルゴリズムのブックキーピングレコードは標準動作モードの間、ＦＭＭ＿ＲＡＭに保持される。
【０２８５】
ＤＭＡコントローラ（ＤＭＡ＿ＣＴＬＲ（２８１２））に関して、本実施形態のＤＭＡ＿ＣＴＬＲ（２８１２）は、第１の実施形態のようなＮＡＮＤフラッシュメモリとＳＤＲＡＭの間のＤＭＡ転送を実施する代わりに、ＮＡＮＤフラッシュメモリ（２８１７）とＢＯＯＴ＿ＲＡＭ（２８０７）の間のデータ転送処理を「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドの形で実施する。
【０２８６】
より具体的には、ＣＭＤ＿ＣＴＬＲ（２８０５）がＤＭＡ＿ＣＴＬＲ（２８１２）をアクティブ化して「Ｆｌａｓｈ  Ｒｅａｄ」または「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドを実施するときに、ＤＭＡ＿ＣＴＬＲ（２８１２）は、好ましくはＮＡＮＤフラッシュページ数として記述される転送すべきデータ量、ＮＡＮＤフラッシュの開始論理ページアドレス（ＬＰＡ）、ＢＯＯＴ＿ＲＡＭの転送セクションのアドレス範囲など当該コマンドに付随する情報を、ＲＥＧＳブロック（２８０６）内のＤＭＡ＿ＣＯＮＦＩＧレジスタから取得する。次いで、ＤＭＡ＿ＣＴＬＲ（２８１２）は、転送すべきＮＡＮＤフラッシュページのＬＰＡ、ならびに各ＮＡＮＤフラッシュページに対応するＢＯＯＴ＿ＲＡＭ（２８０７）の開始アドレスを生成する。
【０２８７】
各ＮＡＮＤフラッシュページのデータ転送を達成するために、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＮＡＮＤフラッシュメモリ（２８１７）およびＢＯＯＴ＿ＲＡＭ（２８０７）にアクセスする。ＤＭＡ＿ＣＴＬＲ（２８１２）は、第１の実施形態と同じ様式でＮＡＮＤフラッシュメモリ（２８１７）にアクセスする。ＢＯＯＴ＿ＲＡＭ（２８０７）にアクセスするために、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションからの読出しまたはそこへの書込みを直接行う。
【０２８８】
「Ｆｌａｓｈ  Ｒｅａｄ」および「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドに関するデータ転送は限定されるものではないが、ＤＭＡ＿ＣＴＬＲ（２８１２）およびＣＭＤ＿ＣＴＬＲ（２８０５）がそれぞれの側のＢＯＯＴ＿ＲＡＭ（２８０７）上のデータトラフィックを制御して、ＢＯＯＴ＿ＲＡＭ（２８０７）とＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦとの間のデータ転送と、ＢＯＯＴ＿ＲＡＭ（２８０７）と１次プロセッサ（２８１４）の間のデータ転送と、が同時に発生し得るように実施される。「Ｆｌａｓｈ  Ｒｅａｄ」処理の際にＢＯＯＴ＿ＲＡＭ（２８０７）が一杯であり、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦからのデータをすぐに受け取ることができない場合は、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦからＢＯＯＴ＿ＲＡＭ（２８０７）へのデータ転送を停止し、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）に対する「ｆｌａｓｈ  ｈａｌｔ」信号をアサートして、１次プロセッサ（２８１４）がＢＯＯＴ＿ＲＡＭ（２８０７）からデータを読み出すまでＮＡＮＤフラッシュの処理を一時的に停止する。
【０２８９】
「ＲＡＭ  Ｗｒｉｔｅ」処理の間にＢＯＯＴ＿ＲＡＭ（２８０７）が空になった場合は、ＤＭＡ＿ＣＴＬＲ（２８１２）は、１次プロセッサ（２８１４）がＢＯＯＴ＿ＲＡＭ（２８０７）にデータを書き込むまで、ＢＯＯＴ＿ＲＡＭ（２８０７）からＦＬＡＳＨ＿ＣＴＬＲ（２８１０）のＰＡＧＥ＿ＢＵＦＦへのデータ転送を停止する。
【０２９０】
次に図３１を参照して、図２８に示される第７の実施形態の処理について説明する。電源投入のリセットがディアサートされた後にＢＯＯＴ＿ＣＴＬＲ（２８１３）によって実施されるブートアップ工程は、第１の実施形態に関して上述したのと同様である。ＢＯＯＴ＿ＣＴＬＲ（２８１３）がブートアップ工程を完了させた後に、メモリシステム（２８０１）は「標準動作モード」に入る。
【０２９１】
本実施形態では、「標準動作モード」とは、ＦＭＭ（２８１１）が初期化され、ＮＡＮＤフラッシュの論理アドレスから物理アドレスへの翻訳が実施でき、１次プロセッサ（２８１４）がシステムブートコードを実行するためにリセットから解放され、ＰＰＢＳ（２８０３）およびＣＭＤ＿ＣＴＬＲ（２８０５）を介してＢＯＯＴ＿ＲＡＭ（２８０７）の内外にデータバーストを転送し、ＲＥＧＳブロック（２８０６）内のレジスタの読み書きを行ってメモリシステム（２８０１）の動作を設定／監視し、ＮＡＮＤフラッシュメモリ（２８１７）とＢＯＯＴ＿ＲＡＭ（２８０７）の間のデータ転送をアクティブ化し、ＣＭＤ＿ＣＴＬＲ（２８０５）によって生成される割り込み信号を受け取ることができる状態を指す。
【０２９２】
標準動作モードでは、ＢＯＯＴ＿ＲＡＭ（２８０７）を介した１次プロセッサ（２８１４）との間のデータ転送は、一般的に使用される機能となる。したがって、ここでは「Ｆｌａｓｈ  Ｒｅａｄ」および「ＲＡＭ  Ｗｒｉｔｅ」コマンドの処理について詳細に説明する。
【０２９３】
図３１は、「Ｆｌａｓｈ  Ｒｅａｄ」コマンドに応答して実施される例示的なフラッシュ読出しプロセスを示している。状態（３１０１）で、１次プロセッサ（２８１４）は、ＮＡＮＤフラッシュの開始ＬＰＡ、ＢＯＯＴ＿ＲＡＭの転送セクションのアドレス範囲、ＤＭＡ＿ＣＯＮＦＩＧレジスタに転送すべきデータ量などのコマンド関連情報をプログラムする。状態（３１０２）で、１次プロセッサ（２８１４）は、「Ｆｌａｓｈ  Ｒｅａｄ」コマンドを発行し、それによって状態（３１０３）で、ＣＭＤ＿ＣＴＬＲ（２８０５）がＤＭＡコントローラをアクティブ化する。一方、状態（３１０３）で、ＣＭＤ＿ＣＴＬＲ（２８０５）は、「待機」信号をアサートして、ＢＯＯＴ＿ＲＡＭ（２８０７）へのＮＡＮＤフラッシュデータのコピーが開始されるまで１次プロセッサのメモリバス上のデータ転送を一時的に停止する。ＤＭＡ＿ＣＴＬＲ（２８１２）は、状態（３１０４）でＤＭＡ＿ＣＯＮＦＩＧレジスタの値に基づいて最初のＮＡＮＤフラッシュＬＰＡと、ＢＯＯＴ＿ＲＡＭアドレスとを生成し、次いで、状態（３１０５）でＦＭＭをアクティブ化して当該ＬＰＡのＮＡＮＤフラッシュページを読み出す（３１０５）。ＦＭＭ（２８１１）はまず、状態（３１０６）で論理アドレスから物理アドレスへの翻訳を実施してＬＰＡをＰＰＡに変換し、状態（３１０７）で当該ＰＰＡのＮＡＮＤフラッシュページを読み出すようにＦＬＡＳＨ＿ＣＴＬＲ（２８１０）を設定しアクティブ化する。
【０２９４】
状態（３１０８）で、ＦＬＡＳＨ＿ＣＴＬＲ（２８１０）がアイドル状態に入ったかどうか判定され、それによってＦＬＡＳＨ＿ＣＴＬＲ（２８１０）がページ読出し処理を完了させたことが示される。状態（３１０９）で、ページデータは、潜在的な誤りが既にＥＣＣ回路によって訂正された状態でＰＡＧＥ＿ＢＵＦＦに記憶される。状態（３１０９）で、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ページデータをＰＡＧＥ＿ＢＵＦＦからＢＯＯＴ＿ＲＡＭ（２８０７）に転送する。ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが空でないことが判定されると、ＣＭＤ＿ＣＴＬＲ（２８０５）は、状態（３１１０）で「待機」信号をディアサートして、状態（３１１１）で発生する１次プロセッサ（２８１４）によるＢＯＯＴ＿ＲＡＭ（２８０７）の読出しを可能にする。
【０２９５】
ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが一杯である場合は、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＰＡＧＥ＿ＢＵＦＦからＢＯＯＴ＿ＲＡＭ（２８０７）へのデータ転送を停止し、「ｆｌａｓｈ＿ｈａｌｔ」信号をアサートしてＮＡＮＤフラッシュメモリ（２８１７）の読出しを一時的に停止する。状態（３１１２）で、転送すべきページがそれ以上存在するかどうか判定される。ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが空になった場合は、状態（３１１３）で、ＣＭＤ＿ＣＴＬＲ（２８０５）は、「待機」信号をアサートして１次プロセッサ（２８１４）によるＢＯＯＴ＿ＲＡＭ（２８０７）の読出しを一時的に停止させる。ＤＭＡ＿ＣＴＬＲ（２８１２）は、次のＬＰＡおよびＢＯＯＴ＿ＲＡＭアドレスを生成する。この工程は、「Ｆｌａｓｈ  Ｒｅａｄ」転送が完了するまでＮＡＮＤフラッシュページ毎に繰り返される。転送が完了すると、状態（３１１５）に進み、ＣＭＤ＿ＣＴＬＲ（２８０５）は、１次プロセッサ（２８１４）に割り込んでデータ転送の完了を指示する。
【０２９６】
図３２は、「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドに応答して実施される例示的なフラッシュ書込みプロセスを示している。状態（３２０１）で、１次プロセッサ（２８１４）は、ＮＡＮＤフラッシュの開始ＬＰＡ、ＢＯＯＴ＿ＲＡＭの転送セクションのアドレス範囲、ＤＭＡ＿ＣＯＮＦＩＧレジスタに転送すべきデータ量などのコマンド関連情報をプログラムする。状態（３２０２）で、１次プロセッサ（２８１４）は、「Ｆｌａｓｈ  Ｗｒｉｔｅ」コマンドを発行する。それに応答して、ＣＭＤ＿ＣＴＬＲ（２８０５）は、状態（３２０３）でＤＭＡ＿ＣＴＬＲ（２８１２）をアクティブ化する。一方、状態（３２０４）で、１次プロセッサ（２８１４）は、ＢＯＯＴ＿ＲＡＭ（２８０７）に対するデータの書込みを開始する。ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが空でないことが判定されると、ＤＭＡ＿ＣＴＬＲ（２８１２）は、状態（３２０５）でＢＯＯＴ＿ＲＡＭ（２８０７）からＦＬＡＳＨ＿ＣＴＬＲＰＡＧＥ＿ＢＵＦＦへのデータ転送を開始する。
【０２９７】
１ページ分のデータがＰＡＧＥ＿ＢＵＦＦに書き込まれた後は、ＤＭＡ＿ＣＴＬＲ（２８１２）は、状態（３２０６）でＤＭＡ＿ＣＯＮＦＩＧレジスタの値に基づいて最初のＮＡＮＤフラッシュＬＰＡを生成し、状態（３２０７）でＦＭＭ（２８１１）をアクティブ化して当該ＬＰＡのＮＡＮＤフラッシュページへの書込みを行う。ＦＭＭ（２８１１）は、状態（３２０８）で論理アドレスから物理アドレスへの翻訳を実施してＬＰＡをＰＰＡに変換し、次いで状態（３２０９）で当該ＰＰＡのＮＡＮＤフラッシュページへの書込みを行うようにＦＬＡＳＨ＿ＣＴＬＲ（２８１０）を設定しアクティブ化する。
【０２９８】
一方、１次プロセッサ（２８１４）は、ＢＯＯＴ＿ＲＡＭ（２８０７）に対するデータの書込みを続行し、それによってＤＭＡ＿ＣＴＬＲ（２８１２）がＢＯＯＴ＿ＲＡＭ（２８０７）からＰＡＧＥ＿ＢＵＦＦにデータを転送する。ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが一杯である場合は、ＣＭＤ＿ＣＴＬＲ（２８０５）は、「待機」信号をアサートして１次プロセッサ（２８１４）によるＢＯＯＴ＿ＲＡＭ（２８０７）への書込みを一時的に停止させる。ＢＯＯＴ＿ＲＡＭ（２８０７）の転送セクションが空になった場合は、ＤＭＡ＿ＣＴＬＲ（２８１２）は、ＢＯＯＴ＿ＲＡＭ（２８０７）からＰＡＧＥ＿ＢＵＦＦへのデータ転送を停止する。この工程は、転送すべきページがそれ以上残っているかどうかに関して行われた状態（３２１１）の判定を介して、全体の「Ｆｌａｓｈ  Ｗｒｉｔｅ」転送が完了するまでＮＡＮＤフラッシュページ毎に繰り返される。状態（３２１２）で、ＣＭＤ＿ＣＴＬＲ（２８０５）は、１次プロセッサ（２８１４）に割り込んでデータ転送の完了を指示する。
【０２９９】
標準動作モードに入ると、図２８に示されるメモリシステム（２８０１）はそれ以上、第１の実施形態の場合のように「ユーザモード」に入ることはない。１次プロセッサ（２８１４）は、ＢＯＯＴ＿ＲＡＭ（２８０７）からのシステムブートコードの実行を続行しても続行しなくてもよい。一部の携帯電話では、外部電子機器は、１次プロセッサ（２８１４）から容易にアクセス可能な揮発性ランダムアクセスメモリを含むことができる。この場合には、標準動作モードに入りＢＯＯＴ＿ＲＡＭ（２８０７）からシステムブートコードが実行されると、１次プロセッサ（２８１４）は、メモリシステム（２８０１）内に記憶されている１次プロセッサ（２８１４）用のソフトウェアプログラムコードの一部または全部を外部電子機器内の揮発性ランダムアクセスメモリに転送した後、当該メモリからソフトウェアプログラムコードを実行するように分岐することができる。
【０３００】
一部の携帯電話では、外部電子機器はさらに、１次プロセッサ用のシステムブートコードを記憶するのに使用されるフラッシュメモリやＲＯＭなどの不揮発性メモリを含むことができる。この場合には、システムブートコードは、任意的に、メモリシステム内のＮＡＮＤフラッシュメモリには記憶されず、１次プロセッサがリセットから解放されたときに外部電子機器を介してアクセス可能な状態にされる。したがって、ＢＯＯＴ＿ＣＴＬＲは、ＮＡＮＤフラッシュメモリからＢＯＯＴ＿ＲＡＭにシステムブートコードをロードする役割は負わないが、依然としてＮＡＮＤフラッシュメモリからＦＭＭ＿ＲＡＭにＦＭＭプログラムコードをロードする役割も、ＦＭＭおよび１次プロセッサをリセットから解放する役割も果たす。
【０３０１】
この例では、１次プロセッサは、ＢＯＯＴ＿ＣＴＬＲによってリセットから解放されたときに、メモリシステムからではなく外部電子機器から命令をフェッチすることによってシステムブートコードを実行する。さらに、かかる携帯電話では、外部電子機器は、１次プロセッサのリセットを直接制御することができる。この場合には、ＢＯＯＴ＿ＣＴＬＲが１次プロセッサに向かうリセット信号をディアサートするときに、１次プロセッサが外部電子機器によって既にリセットから解放されていることもあれば、まだ解放されていないこともある。したがって、ＢＯＯＴ＿ＣＴＬＲが１次プロセッサに送るリセット信号は代替的に、メモリシステムが初期化され１次プロセッサからのコマンドをサービスする準備が整っているか否かを指示する信号として、１次プロセッサによって使用されてもよい。
【０３０２】
本発明をいくつかの実施形態および例示的な状況を開示してきたが、本発明の範囲は、本明細書に具体的に開示される諸実施形態の範囲を超えて、本発明の他の諸代替実施形態および／または使用形態ならびに本発明の明白な修正形態および等価物の範囲に及ぶことが当業者には理解されるであろう。さらに、本発明のいくつかの変形形態を図面に示し詳細に説明してきたが、当業者には、本開示に基づいて本発明の範囲内の他の修正形態が容易に理解されるであろう。また、諸実施形態の個々の特徴および態様の様々な組合せまたはサブコンビネーションが可能であり、その場合にも本発明の範囲内にあることが企図される。したがって、本明細書に開示される発明の様々な形態を形成するために、本明細書に開示される諸実施形態の様々な特徴および態様を互いに組み合わせることも互いに置き換えることもできることが理解されるはずである。したがって、本明細書に開示される本発明の範囲は、具体的に開示した上述の諸実施形態に限定されるべきものではない。
【図面の簡単な説明】
【０３０３】
【図１】例示的な携帯電話の電子システムを示すブロック図である。
【図２】図１の携帯電話のような例示的な無線電話をより詳細に示し、別の例示的なメモリシステムをさらに示すブロック図である。
【図３】例示的なメモリシステムの制御回路に関する第１の実施形態を示すブロック図である。
【図４】例示的な制御回路のリセット制御を示すブロック図である。
【図５】制御回路内の例示的な制御回路の割り込み制御を示すブロック図である。
【図６】１レベルＥＣＣに関するＮＡＮＤフラッシュページの例示的な一構成を示すブロック図である。
【図７】２レベルＥＣＣに関するＮＡＮＤフラッシュページの例示的な一構成を示すブロック図である。
【図８】例示的なフラッシュメディア管理回路を示すブロック図である。
【図９】ＮＡＮＤフラッシュの記憶空間の例示的な一構成を示す図である。
【図１０】メモリシステムの第１の実施形態によって実施される、電源投入状態から標準動作モードまでの例示的なブートプロセスを示すフローチャートである。
【図１１】不揮発性フラッシュメモリから揮発性ＳＤＲＡＭメモリにデータを転送する例示的なＤＭＡ転送プロセスを示すフローチャートである。
【図１２】ＳＤＲＡＭメモリからＮＡＮＤフラッシュメモリにデータを転送する例示的なＤＭＡ転送プロセスを示すフローチャートである。
【図１３】例示的なメモリシステムが標準動作モードからユーザモードに入る例示的なプロセスを示すフローチャートである。
【図１４】１次プロセッサがユーザ起動アプリケーションを操作する例示的なプロセスを示すフローチャートである。
【図１５】１次プロセッサが２次プロセッサをアクティブ化し、割り込みに応答する例示的なプロセスを示すフローチャートである。
【図１６】メモリシステムの第２の実施形態を示すブロック図である。
【図１７】メモリシステムの第２の実施形態によって実施される、電源投入状態から標準動作モードまでの例示的なブートプロセスを示すフローチャートである。
【図１８】メモリシステムの第３の実施形態を示すブロック図である。
【図１９】メモリシステムの第３の実施形態によって実施される、電源投入状態から標準動作モードまでの例示的なブートプロセスを示すフローチャートである。
【図２０】メモリシステムの第４の実施形態を示すブロック図である。
【図２１】例示的な携帯電話の電子システムを示すブロック図である。
【図２２】メモリシステムの第５の実施形態を示すブロック図である。
【図２３】図２２に示されるような揮発性メモリから携帯電話のディスプレイにデータが転送される例示的なデータ転送プロセスを示すフローチャートである。
【図２４】別の例示的な携帯電話の電子システムを示すブロック図である。
【図２５】メモリシステムの第６の実施形態を示すブロック図である。
【図２６】図２５に示されるような揮発性メモリから着脱可能なメモリカードにデータが転送される例示的なデータ転送プロセスを示すフローチャートである。
【図２７】メモリシステムの第７の実施形態を示す携帯電話のブロック図である。
【図２８】図２７に示される制御回路の機能ブロックをより詳細に示すブロック図である。
【図２９】制御回路の第７の実施形態における例示的なリセット制御を示すブロック図である。
【図３０】制御回路の第７の実施形態における例示的な割り込み制御回路を示すブロック図である。
【図３１】制御回路の第７の実施形態と併せて使用可能な「フラッシュ読出し」コマンドの例示的な工程を示すフローチャートである。
【図３２】制御回路の第７の実施形態と併せて使用可能な「フラッシュ書込み」コマンドの例示的な工程を示すフローチャートである。
【図１】
2008511929.tif 000003
【図２】
2008511929.tif 000004
【図３】
2008511929.tif 000005
【図４】
2008511929.tif 000006
【図５】
2008511929.tif 000007
【図６】
2008511929.tif 000008
【図７】
2008511929.tif 000009
【図８】
2008511929.tif 000010
【図９】
2008511929.tif 000011
【図１０】
2008511929.tif 000012
【図１１】
2008511929.tif 000013
【図１２】
2008511929.tif 000014
【図１３】
2008511929.tif 000015
【図１４】
2008511929.tif 000016
【図１５】
2008511929.tif 000017
【図１６】
2008511929.tif 000018
【図１７】
2008511929.tif 000019
【図１８】
2008511929.tif 000020
【図１９】
2008511929.tif 000021
【図２０】
2008511929.tif 000022
【図２１】
2008511929.tif 000023
【図２２】
2008511929.tif 000024
【図２３】
2008511929.tif 000025
【図２４】
2008511929.tif 000026
【図２５】
2008511929.tif 000027
【図２６】
2008511929.tif 000028
【図２７】
2008511929.tif 000029
【図２８】
2008511929.tif 000030
【図２９】
2008511929.tif 000031
【図３０】
2008511929.tif 000032
【図３１】
2008511929.tif 000033
【図３２】
2008511929.tif 000034
【手続補正書】
【提出日】平成19年5月10日(2007.5.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリに接続されるように構成されるとともに、実行のため、ブートプログラムコードが前記不揮発性メモリから読み込まれるように構成されたブートメモリコントローラと、
第１のホストプロセッサに接続されるように構成された第１のホストプロセッサインターフェースと、
第２のホストプロセッサに接続されるように構成された第２のホストプロセッサインターフェースと、
を備えるメモリコントローラ。
【請求項２】
前記ブートコントローラに接続された前記不揮発性メモリが第１の不揮発性メモリであり、
第２の不揮発性メモリをさらに有し、
前記第１および第２のプロセッサインターフェースが該第２の不揮発性メモリに接続されている、請求項１に記載のメモリコントローラ。
【請求項３】
揮発性メモリをさらに有し、
前記第１および第２のプロセッサインターフェースが、該揮発性メモリに接続されている、請求項１に記載のメモリコントローラ。
【請求項４】
前記ブートメモリコントローラが、前記ブートプログラムコードをブート用揮発性メモリにロードするように、さらに構成されている、請求項１に記載のメモリコントローラ。
【請求項５】
前記第１のホストプロセッサに接続される第１のリセット信号をさらに含み、
前記ブートコードプログラムが揮発性メモリ内に読み込まれた後、前記第１のホストプロセッサをリセット状態から開放するように構成されている、請求項１に記載のメモリコントローラ。
【請求項６】
前記第２のホストプロセッサに接続される第１のリセット信号をさらに含み、
前記第１のリセット信号が、前記第１のホストプロセッサによって、少なくとも部分的に制御されるように構成されている、請求項１に記載のメモリコントローラ。
【請求項７】
第１のディスプレイに接続されるように構成された第１のディスプレイインターフェースと、
第２のディスプレイに接続されるように構成された第２のディスプレイインターフェースと、をさらに備え、
さらに、
前記第１のホストプロセッサからのメモリ転送要求を受け取って、ディスプレイデータを、揮発性メモリから少なくとも前記第２のディスプレイに転送するように構成されている、請求項１に記載のメモリコントローラ。
【請求項８】
ユーザの取外し可能なメモリデバイスに接続されるように構成されたインターフェースをさらに備える、請求項１に記載のメモリコントローラ。
【請求項９】
前記第１または第２のプロセッサの介入なしに、不揮発性メモリから読み出されたデータにおけるデータ誤りの少なくとも一部分を検出し訂正することができる誤り検出訂正回路をさらに備える、請求項１に記載のメモリコントローラ。
【請求項１０】
前記第１または第２のプロセッサの介入なしに、複数のページデータを、不揮発性メモリから揮発性メモリにコピーする回路をさらに備える、請求項１に記載のメモリコントローラ。
【請求項１１】
不揮発性メモリに接続されるように構成された第１のインターフェース回路と、
揮発性メモリに接続されるように構成された第２のインターフェース回路と、
第１のホストプロセッサに接続されるように構成され、前記第１のプロセッサが前記揮発性メモリへアクセスできるようにする第１のプロセッサインターフェースと、
第２のホストプロセッサに接続されるように構成された第２のプロセッサインターフェースと、
前記第１のプロセッサまたは前記第２のプロセッサの介入なしに、前記不揮発性メモリのデータの少なくとも一部分を実行するように構成されたコントローラ回路と、
を備えるメモリコントローラ。
【請求項１２】
前記コントローラ回路は、前記第１のホストプロセッサから前記不揮発性メモリにデータを書き込むように構成される、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記コントローラ回路が、前記第１または第２のホストプロセッサの介入なしに、揮発性メモリ管理プロセスを実行するように構成されている、請求項１１に記載のメモリコントローラ。
【請求項１４】
前記第１のホストプロセッサおよび前記第２のホストプロセッサが、前記不揮発性メモリへのアクセスの際、前記コントローラ回路に論理アドレスを提供し、
前記コントローラ回路は、前記第１または第２のホストプロセッサからの要求に応答して前記不揮発性メモリへアクセスするときに使用される論理アドレスから物理アドレスへの翻訳を実施するように構成される、請求項１１に記載のメモリコントローラ。
【請求項１５】
前記コントローラ回路は、電源投入のリセット後前記第１のホストプロセッサを起動する前に、自動的に、
電源投入のリセット後前記不揮発性メモリからフラッシュメモリマネージャ回路のローカルメモリに不揮発生メディア管理コードをロードし、
前記不揮発性メモリに記憶されているデータのチェックをする、請求項１１に記載のメモリコントローラ。
【請求項１６】
前記不揮発性メモリからブート用揮発性メモリにブートプログラムコードを転送するように構成された制御回路をさらに備え、
前記第１のプロセッサインターフェースが、前記ブートプログラムコードの少なくとも一部分が前記ブート用揮発性メモリに転送されている間前記第１のプロセッサをリセット状態に保つように構成されたリセット信号をさらに有する、請求項１１に記載のメモリコントローラ。
【請求項１７】
前記不揮発性メモリはＮＡＮＤメモリを含む、請求項１１に記載のメモリコントローラ。
【請求項１８】
前記不揮発性メモリはＡＮＤメモリを含む、請求項１１に記載のメモリコントローラ。
【請求項１９】
ユーザの取外し可能なメモリデバイスに接続されるように構成されたインターフェースをさらに備える、請求項１１に記載のメモリコントローラ。
【請求項２０】
不揮発性メモリをさらに備え、
前記メモリコントローラと該不揮発性メモリとが単一のデバイスパッケージに収容され、前記不揮発性メモリへのアクセスが前記メモリコントローラによって制御され、それによって前記不揮発性メモリに対する無許可アクセスが防止される、請求項１１に記載のメモリコントローラ。
【国際調査報告】
2008511929.tif 000035