(57)【要約】  システムは、プロセッサと、フラッシュメモリ装置と、フラッシュ制御乖離と、ワーキングメモリとを有する。インタラプトプログラムの命令は、フラッシュメモリ装置に格納維持される。命令プロセッサがインタラプト信号を受信すると、命令プロセッサは、フラッシュ制御回路にフラッシュメモリ装置からのインタラプトプログラムの命令をワーキングメモリにロードさせるロード命令を実行する。インタラプトプログラムの命令は、その後にワーキングメモリから命令プロセッサにより実行される。好ましくは、インタラプトプログラムの命令のコピーがインタラプト時にワーキングメモリに格納されているかテストされる。当該コピーが格納されていると判明した場合、コピーからの命令の実行が、インタラプト時に進捗していないアクセス命令の実行終了前にスタートされる。コピーが格納されていると判明しない場合、アクセス命令の実行がまず終了され、その後に命令プロセッサは、ロード命令を実行し、その後にワーキングメモリからインタラプトプログラムのコピーの命令の実行を行う。
2010500682.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ装置にアクセスするためのフラッシュインタフェースポートと、
前記フラッシュインタフェースに接続されるワーキングメモリと、
フラッシュ制御回路と、
前記ワーキングメモリと前記フラッシュ制御回路とに接続される命令プロセッサと、
を有するフラッシュメモリアクセス回路であって、
前記命令プロセッサは、インタラプト入力を有し、
前記命令プロセッサは、前記ワーキングメモリへの格納のため、前記フラッシュ制御回路に前記フラッシュメモリから前記フラッシュインタフェースを介しインタラプトプログラムの命令のコピーをロードさせるロード命令を実行することによって、前記インタラプト入力において通知されるインタラプトを処理し、その後、前記ワーキングメモリからの前記コピーの命令を実行することによって前記インタラプトを処理するようプログラムされるフラッシュメモリアクセス回路。
【請求項２】
前記命令プロセッサは、リクエスト処理命令系列を実行することによって前記フラッシュメモリにアクセスするリクエストの処理を実行させるようプログラムされ、
前記命令プロセッサは、前記インタラプトの受付に応答して、前記インタラプト前に前記コピーが前記ワーキングメモリに格納されたかテストし、前記コピーが格納されていたと判明しなかった場合、前記リクエスト処理命令系列の実行終了後に前記ロード命令を実行するよう構成されるプロセッサに含まれ、
前記命令プロセッサは、前記インタラプトが前記リクエスト処理命令系列の実行開始後に行われる場合、前記コピーが以前に格納されていることが判明したか否かに応じて、前記リクエスト処理命令系列の実行終了の前後に、前記コピーの命令を実行することによって前記インタラプトを処理するようプログラムされる、請求項１記載のフラッシュメモリアクセス回路。
【請求項３】
前記フラッシュメモリ装置は、前記フラッシュインタフェースに接続される、請求項１記載のフラッシュメモリアクセス回路。
【請求項４】
前記フラッシュメモリ装置は、ＮＡＮＤフラッシュメモリ装置である、請求項３記載のフラッシュメモリアクセス回路。
【請求項５】
外部通信インタフェースと、
前記外部通信インタフェースと前記ワーキングメモリとの間に接続される通信回路と、
を有し、
前記通信回路は、前記外部通信インタフェースにおけるリクエストの受信に応答して、前記インタラプトを生成するため前記インタラプト入力に接続される、請求項１記載のフラッシュメモリアクセス回路。
【請求項６】
前記命令プロセッサは、前記フラッシュメモリ装置にアクセスするための連続的に受付されるリクエストのキューを表し、前記リクエストが前記キューに追加されたシーケンスにおける前記連続的に受付されるアクセスリクエストの処理を実行させるための複数のリクエスト処理命令系列を実行するようプログラムされる、請求項１記載のフラッシュメモリアクセス回路。
【請求項７】
前記命令プロセッサは、前記インタラプトに応答して前記コピーが前記ワーキングメモリに検出されない場合、前記インタラプト信号の受付時に前記キューのエンドに前記インタラプトプログラムの命令をロードするリクエストを追加するようプログラムされる、請求項６記載のフラッシュメモリアクセス回路。
【請求項８】
前記命令プロセッサは、前記キューのアクセスリクエストをパイプライン形式に処理させるようプログラムされる、請求項６記載のフラッシュメモリアクセス回路。
【請求項９】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをプログラムするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックの前記フラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの暗号化、及び前記データブロックの誤り訂正符号への符号化の各アクションの少なくとも１つが先行する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストのプログラミングを実行させるようプログラムされる、請求項８記載のフラッシュメモリアクセス回路。
【請求項１０】
前記フラッシュ制御回路は、暗号化手段と、誤り訂正符号のためのエンコーダとを有し、
前記命令プロセッサは、前記暗号化手段と前記エンコーダとに、先行するアクセスリクエストのデータブロックのプログラミングと並行してリクエストのデータブロックを処理させるようプログラムされる、請求項８記載のフラッシュメモリアクセス回路。
【請求項１１】
前記フラッシュ制御回路は、第１及び第２ローカルメモリを有し、
前記暗号化手段と前記エンコーダの両方が、前記第１及び第２ローカルメモリの１つに接続され、前記フラッシュ制御回路が前記第１及び第２ローカルメモリの他の１つについてデータを前記フラッシュメモリ装置にプログラムする間に、同一のデータブロックを連続的に処理する、請求項１０記載のフラッシュメモリアクセス回路。
【請求項１２】
前記アクセスリクエストのそれぞれは、リードリクエストとプログラミングリクエストとを含む複数の異なるタイプのリクエストの１つに属し、
前記命令プロセッサは、追加される各リクエストを前記キューに追加すると、前記追加されたリクエストが前記キューの以前に追加されたリクエストのタイプの１つである第２タイプと異なるタイプの１つである第１タイプであるか検出し、そうである場合、前記追加されたリクエストの処理をスタートさせる前に、前記第２タイプのキューされているすべてのリクエストの処理を終了させるようプログラムされる、請求項６記載のフラッシュメモリアクセス回路。
【請求項１３】
フラッシュメモリ装置にアクセスするためのフラッシュインタフェースポートと、
前記フラッシュインタフェースに接続されるワーキングメモリと、
フラッシュ制御回路と、
前記ワーキングメモリと前記フラッシュ制御回路とに接続される命令プロセッサと、
を有するフラッシュメモリアクセス回路であって、
前記命令プロセッサは、前記フラッシュメモリ装置にアクセスするための連続的に受け付けたリクエストのキューを表し、前記リクエストのそれぞれに応答して、リクエスト処理命令系列を実行するようプログラムされ、
前記リクエスト処理命令は、前記フラッシュ制御回路に前記アクセスリクエストを連続的に処理する各ステージを処理させるためのものであり、
前記命令プロセッサは、前記フラッシュ制御回路が前記リクエストが前記キューに追加されたシーケンスに従ってパイプライン形式により動作させるように、異なるリクエストに対して前記リクエスト処理命令の実行のシーケンスを選択するようプログラムされるフラッシュメモリアクセス回路。
【請求項１４】
前記アクセスリクエストのそれぞれは、リードリクエストとプログラミングリクエストとを含む複数の異なるタイプのリクエストの１つに属し、
前記命令プロセッサは、追加される各リクエストを前記キューに追加すると、前記追加されたリクエストが前記キューの以前に追加されたリクエストのタイプの１つである第２タイプと異なるタイプの１つである第１タイプであるか検出し、そうである場合、前記追加されたリクエストの処理をスタートさせる前に、前記第２タイプのキューされているすべてのリクエストの処理を終了させるようプログラムされる、請求項１３記載のフラッシュメモリアクセス回路。
【請求項１５】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをプログラムするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックのフラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの暗号化、及び前記データブロックの誤り訂正符号への符号化の各アクションの少なくとも１つが先行する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストのプログラミングを実行させるようプログラムされる、請求項１３記載のフラッシュメモリアクセス回路。
【請求項１６】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをリードするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックの前記フラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの解読、及び前記データブロックの誤り訂正符号に従った復号化の各アクションの少なくとも１つが後続する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストの読み込みを実行させるようプログラムされる、請求項１３記載のフラッシュメモリアクセス回路。
【請求項１７】
命令プロセッサと、フラッシュメモリ装置と、フラッシュ制御回路と、ワーキングメモリとを有するシステムの動作方法であって、
前記フラッシュメモリ装置にインタラプトプログラムの命令を格納させ続けるステップと、
前記命令プロセッサにおいてインタラプト信号を受信するステップと、
前記インタラプト信号に応答して前記命令プロセッサによるロード命令の実行を利用して、前記フラッシュ制御回路に前記フラッシュメモリ装置から前記ワーキングメモリに前記インタラプトプログラムの命令をロードさせるステップと、
前記ワーキングメモリからの前記インタラプトプログラムの命令を前記命令プロセッサにより実行するステップと、
を有する方法。
【請求項１８】
少なくとも前記インタラプト信号の受信時に前記フラッシュメモリ装置にアクセスするためのリクエストを処理するため、前記命令プロセッサがアクセス命令系列の実行を進捗中であるとき、
当該方法は、
前記インタラプト信号に応答して、前記インタラプトプログラムの命令のコピーが前記ワーキングメモリに格納されているかテストするステップと、
前記コピーが格納されていると判明した場合、前記アクセス命令系列の実行の終了前に、前記コピーからの命令の実行をスタートするステップと、
前記コピーが格納されていると判明しない場合、前記アクセス命令系列の実行を終了し、その後に前記命令プロセッサを利用して、前記ロード命令を実行し、その後に前記命令プロセッサによる前記ワーキングメモリからの前記インタラプトプログラムのコピーの命令の実行が行われるステップと、
を有する、請求項１７記載の方法。
【請求項１９】
前記フラッシュメモリ装置に対して連続的に受け付けたアクセスリクエストのキューを表すステップと、
前記リクエストが前記キューに追加されたシーケンスにおいて前記アクセスリクエストを処理するステップと、
をさらに有する、請求項１７記載の方法。
【請求項２０】
前記コピーが検出されない場合、前記インタラプト信号の受信時に前記キューのエンドに前記インタラプトプログラムをロードするリクエストを追加するステップをさらに有する、請求項１９記載の方法。
【請求項２１】
前記キューにおいて前記アクセスリクエストをパイプライン形式に処理するステップをさらに有する、請求項１９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリアクセス回路と、フラッシュメモリアクセス回路の動作方法とに関する。
【背景技術】
【０００２】
フラッシュメモリは、それ自体周知である。フラッシュメモリは、高密度不揮発性メモリを提供する。特に、ＮＡＮＤフラッシュは、高い回路密度を提供する。しかしながら、これは、最新のＲＡＭメモリと比較して長いアクセス遅延と相対的に遅いアクセス速度とを犠牲にする。このため、処理システムのメインプロセッサによるフラッシュメモリの制御は、処理をかなり低速化する可能性がある。
【０００３】
ＵＳ６，８７４，０４４は、フラッシュメモリとＵＳＢバスとの間のデータ転送と、ローカルインテリジェンスとを制御するフラッシュメモリを開示する。データ転送のため、フラッシュカードリーダは、ＵＳＢバスとインタフェースをとるシリアルエンジンと、フラッシュメモリに接続されるフラッシュカードリーダと、フラッシュカードコントローラとシリアルインタフェースとの間のデータをバッファリングするＲＡＭバッファとを有する。フラッシュカードはまた、ＣＰＵとＲＯＭ命令メモリとを含む。ＣＰＵは、ＲＯＭからの命令を実行する命令プロセッサである。これは、その機能を向上させるため、フラッシュカードリーダにおいてローカルにプログラムを実行することを可能にする。
【０００４】
ＵＳ６，８７４，０４４は、ＣＰＵとフラッシュメモリとによるプログラム関連データ転送（命令ロード処理を含む）間のバスコンフリクトが速度を低下させることを回避するため、シリアルエンジンとフラッシュカードコントローラとの間で２つのバスを利用する。ＣＰＵとシリアルインタフェースの両方が、アクセスリクエストをフラッシュカードコントローラに送信することができる。フラッシュカードコントローラは、ＣＰＵとシリアルインタフェースが他のアクションを実行可能である間、これらのリクエストを自律的に処理する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、特に命令プロセッサのプログラムのための格納を提供するのにより少ないオーバヘッドしか必要としないシンプルなフラッシュメモリアクセス回路を提供することである。本発明は、独立クレームにより規定される。従属クレームが、効果的な実施例を規定する。
【課題を解決するための手段】
【０００６】
一特徴によると、請求項１記載のフラッシュメモリアクセス回路が提供される。当該回路では、命令プロセッサによる命令の実行は、フラッシュメモリ装置にアクセスするフラッシュ制御回路を制御するのに使用される。これは、フラッシュメモリの使用と組み合わされ、命令プロセッサに通知されるインタラプトを処理するためのインタラプトプログラムの命令を少なくとも有するプログラム命令を命令プロセッサに提供する。一実施例では、インタラプトは、ＵＳＢスレーブ回路などのフラッシュメモリアクセス回路の通信回路により生成されるインタラプトを有する。
【０００７】
命令プロセッサは、フラッシュメモリからワーキングメモリにロードされたインタラプトプログラムの命令のコピーを利用して、ワーキングメモリからのインタラプトプログラムの命令を実行することによりインタラプトを処理する。命令プロセッサは、ワーキングメモリを直接アドレス指定してもよいし、又はメモリ管理ユニットは、フラッシュメモリの記憶位置のプロセッサにより発行されたアドレスをフラッシュメモリのコンテンツのコピーが格納されるワーキングメモリの位置にマップするのに使用されてもよい。インタラプトが生成され、インタラプトを処理する命令がワーキングメモリにないとき、命令プロセッサは、フラッシュメモリからインタラプトプログラムの命令をロードするためのロード命令をまず実行することによって、インタラプトを処理する。従って、インタラプトプログラムを格納するための命令メモリスペースの必要が回避され、インタラプトプログラムのための固定されたスペースが予めワーキングメモリに確保される必要がない。
【０００８】
典型的な実施例では、インタラプト処理は、他のインタラプトを自動的に不可にし（少なくとも同一及び下位の優先レベルのインタラプト）、当該他のインタラプトを不可にしたままインタラプト処理プログラムの命令の実行を実行し、その後にインタラプトを再実行することを含む。さらなる実施例では、フラッシュメモリ装置からロードされるコピーにおけるインタラプトプログラムの命令は、上記再実行前に実行される命令を有する。
【０００９】
一実施例では、インタラプトプログラムの命令のコピーが、インタラプトの受付前にすでにワーキングメモリに格納されているかテストされる。テストは、命令プロセッサ自体によって、又はメモリ管理ユニットなどによって実行されるかもしれない。さらなる実施例では、命令プロセッサがインタラプトプログラムの命令と、以前にスタートされたアクセスリクエストを終了させる命令とを実行する順序は、コピーが以前に格納されているか検出されるか否かに依存する。そうである場合、命令プロセッサは、まずインタラプトプログラムの命令を実行し、そうでない場合、命令プロセッサは、以前にスタートされたアクセスリクエストを処理するための命令の実行が終了した後まで、コピーのロード及び以降の実行を遅延させる。このように、インタラプトを処理するための最大速度が、以前のアクセスリクエストの処理を再スタートさせる必要のオーバヘッドなく、又は当該リクエストのデータを欠落させることなく実現可能である。
【００１０】
これらの実施例では、ＮＡＮＤフラッシュアクセスについて特に効果的である。なぜなら、それらは大きなアクセス遅延の効果を軽減するためである。
【００１１】
他の特徴によると、命令プロセッサは、フラッシュメモリ装置に対するアクセスリクエストのキューを規定する。一実施例では、インタラプトプログラムの命令のコピーが、以前のリクエストの後にキューにそれを実行するリクエストを配置し、命令プロセッサを使用して、インタラプトプログラムの命令のコピーをロードするリクエストを処理する前にキューにある以前のリクエストを処理し、インタラプトを処理することによりロードされる。
【００１２】
一実施例では、命令プロセッサは、キューにあるリクエストのパイプライン形式による処理を実行させるための命令を実行する。ここで使用される“パイプライン処理”とは、アクセスリクエストの処理が、アクセスデータに異なる処理が適用される連続するステージを有することを仮定する。パイプライン形式による処理は、異なるリクエストを処理する異なるステージが互いにパラレルに実行されることを意味する。異なるステージの具体例として、フラッシュメモリのメモリセルのブロックを消去し、メモリセルのブロックをプログラミングし、メモリセルのブロックを読み込み、フラッシュメモリチップとフラッシュコントローラとの間でデータを転送し、フラッシュコントローラとワーキングメモリとの間でデータを転送し、データブロックを誤り訂正符号（ＥＣＣ）に符号化し、ＥＣＣ（すなわち、誤り訂正）に従って復号化し、暗号化及び解読の実行などがあげられる。プログラミング及び読み込みは、フラッシュメモリの異なるバンクについてパラレルに実行されてもよいが、これが１つのリクエストのデータについて起こる限り、これは、異なるリクエストのパイプライン化された実行と呼ばれない。
【００１３】
アクセスリクエストを処理する異なるステージは、フラッシュ制御回路の異なる回路部分により実行されてもよいが、これら回路部分は、命令プロセッサにより実行される命令の制御の下で命令プロセッサからの各ステージをスタートする制御信号をプロセッサから受け付ける。従って、命令プロセッサは、異なるパイプラインステージが実行される時点を制御しさえすればよい。
【００１４】
一実施例では、リクエストに対する暗号化及びＥＣＣへの符号化は、１つのステージとして連続的に実行され、他のリクエストに対するプログラミングを伴うステージによりパイプライン処理される。この場合、何れか１つが１つのリクエストに対する暗号化及び符号化を実行するのに使用され、他方が他のリクエストについてプログラミングを実行するよう使用されるメモリのペアが設けられ、これらのメモリの役割が交互のリクエストについて交換される。暗号化及び符号化が互いにパイプライン処理されない場合であっても、最大速度が実現されるようなプログラミング速度となることが示された。
【００１５】
一実施例では、キューにおけるフラッシュリードリクエストとフラッシュプログラミングリクエストのパイプライン処理された実行をミックスすることが回避される。１つのタイプのリクエスト（リード又はプログラミング）の第１ステージの実行をスタートする前、異なるタイプ（プログラミング又はリード）の以前のリクエストのステージの実行のすべてのステージがまず終了される。これは、フラッシュメモリアクセスを大きく簡単化する。
【００１６】
上記及び他の課題並びに効果的な特徴が、以下の図面を用いて実施例の説明から明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】図１は、フラッシュメモリシステムを示す。
【図２】図２は、インタラプト処理のフローチャートを示す。
【図３】図３は、フラッシュメモリシステムを示す。
【図４】図４は、ＮＡＮＤフラッシュ制御回路を示す。
【発明を実施するための形態】
【００１８】
図１は、命令プロセッサ１０と、メモリ管理インタフェース１２と、ＮＡＮＤフラッシュ制御回路１４と、ＮＡＮＤフラッシュメモリ１４ａと、ローカルメモリ回路１６と、通信インタフェース１８とを有するフラッシュメモリシステムの実施例を示す。命令プロセッサ１０は、メモリ管理インタフェース１２を介しローカルメモリ回路１６と通信インタフェース１８とに接続される。さらに、メモリ管理インタフェース１２は、ＮＡＮＤフラッシュ制御回路１４とフラッシュメモリポート３０１とを介しＮＡＮＤフラッシュメモリ１４ａに接続される。通信インタフェース１８は、情報を送受信するためのターミナル１９と、命令プロセッサ１０のインタラプト入力に接続される出力とを有する。通信インタフェース１８は、例えば、既知のＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）による通信などをターミナル１９を介しサポートするかもしれない。ローカルメモリ回路１６は、ＳＲＡＭやＤＲＡＭなどの揮発性メモリ回路であるかもしれない。システムのコンポーネントは、集積回路に集積されるかもしれない。一実施例では、ＮＡＮＤフラッシュメモリ１４ａを除くコンポーネントは集積回路に集積され、ＮＡＮＤフラッシュメモリ１４ａが１以上の個別の集積回路に集積される。本実施例では、フラッシュメモリポート３０１は、ＮＡＮＤフラッシュメモリ１４ａを除くコンポーネントが集積される集積回路のターミナルを有する。
【００１９】
動作について、命令プロセッサ１０は、ＮＡＮＤフラッシュメモリ１４ａにより提供される命令のプログラムを実行する。命令プロセッサ１０がこのような命令を実行する必要があるとき、それは、メモリ管理インタフェース１２にＮＡＮＤフラッシュメモリ１４ａからの複数の命令を含むプログラム又はプログラムセクションをローカルメモリ回路１６にロードさせる。その後、命令プロセッサ１０が命令のアドレスを発行すると、メモリ管理インタフェース１２はこれらのアドレスをローカルメモリ回路１６にマップし、命令プロセッサ１０による実行のため、ローカルメモリ回路１６からこれらの命令を抽出する。メモリ管理インタフェース１２は、コピーなどを格納するためのワーキングメモリ位置を選択する完全なメモリ管理ユニットであってもよいし、又は命令プロセッサ１０により管理が実行されてもよい。また、メモリ管理インタフェース１２のすべての機能は、命令プロセッサ１０により実現されてもよい（マッピングは、例えば、ベースアドレスポインタを利用することにより実現される）。メモリ管理の実行時、メモリ管理インタフェース１２と命令プロセッサ１０、又は命令プロセッサ自体をここではプロセッサと呼ぶ。
【００２０】
これらの命令は、ＮＡＮＤフラッシュメモリ１４ａとの間でデータを読み書きするための命令を含むかもしれない。ＮＡＮＤフラッシュメモリ１４ａの読み書きは、典型的には、ブロック単位で実行され、各ブロックはページやセクションなどの複数のアドレスのデータを含む。また、ＮＡＮＤフラッシュメモリ１４ａにおける読み書きは、典型的には、命令プロセッサ１０の異なる命令の制御の下で実行される複数の連続するアクションをブロックに適用することを含む。
【００２１】
プログラム実行中、コマンドを実行させる信号が、ターミナル１９に接続されるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの外部装置（図示せず）により生成されてもよい。通信インタフェース１８がこのような信号を検出すると、それは命令プロセッサ１０に通常プログラムの実行を中断させ、インタラプトプログラムの実行をスタートさせるため、命令プロセッサに対するインタラプトを生成する。インタラプトプログラムの命令は、ＮＡＮＤフラッシュメモリ１４ａに格納され、インタラプトプログラムの実行のため、ローカルメモリ回路１６にコピーされる。
【００２２】
図２は、インタラプトの処理中の動作のフローチャートを示す。第１ステップ２１において、処理回路１０はインタラプトを受け付ける。このインタラプトのため、インタラプトプログラムが規定される。一実施例では、複数の異なるタイプのインタラプトが可能であり、それぞれが異なるインタラプトプログラムに関連付けされる（例えば、インタラプトベクトルテーブル又はジャンプテーブルなどにより）。第２ステップ２２において、インタラプトのためのインタラプトプログラムが以前にローカルメモリ回路１６にコピーされたか、そして依然としてローカルメモリ回路１６に格納されているかテストされる。このステップは、命令プロセッサ１０からのインタラプトプログラムのＮＡＮＤフラッシュメモリアドレスに応答して、メモリ管理インタフェースなどにより実行されるかもしれない。インタラプトプログラムのコピーがローカルメモリ回路１６に格納されている場合、第３ステップ２３が実行され、命令プロセッサ１０が、ローカルメモリ回路１６からの命令を用いてインタラプトプログラムを実行する。インタラプトプログラムの完了後、命令プロセッサ１０にインタラプト後に中断された部分から通常プログラムの実行を再開させる。
【００２３】
第２ステップ２２において、コピーが格納されていないと検出された場合、第４ステップ２４が実行され、命令プロセッサ１０がインタラプト時にＮＡＮＤフラッシュアクセス処理を実行していたかテストされる。そうである場合、第５ステップ２５が実行され、中断されたプログラムのＮＡＮＤフラッシュアクセス処理を終了させるための命令が実行される。第５ステップ２５における上記終了は、少なくともＮＡＮＤフラッシュメモリ１４ａのプログラミングユニットのためのプログラミングアクションのデータ要素の連続する書き込みの終了を含む。知られているように、ＮＡＮＤフラッシュのプログラミングは、他のユニットの読み書きの介入なくユニット毎に実行される必要がある。他のユニットがアクセスされると、前のユニットは、全体としてのみプログラム可能である。プログラミングアクションの完了後、インターラプトプログラムのロード後にプログラミングアクションの全体を繰り返すことは不要とされる。第５ステップ２５における上記終了が実行された後、ＮＡＮＤフラッシュメモリ１４ａからのインタラプトプログラムをローカルメモリ回路１６にロードする第６ステップ２６が実行される。その後、第３ステップ２３が実行される。
【００２４】
第４ステップ２４において、命令プロセッサ１０がインタラプト時にＮＡＮＤフラッシュアクセス処理を実行していなかったと検出された場合、第６ステップ２６が、中断されたプログラムからの命令の事前の実行なく第４ステップ２４の直後に実行される。
【００２５】
このように、インタラプトプログラムのコピーがローカルメモリ回路１６において利用可能である場合、インタラプトが即座に処理されるが、インタラプトプログラムがＮＡＮＤフラッシュメモリ１４ａからロードされる必要があるとき、ＮＡＮＤフラッシュアクセス処理は、インタラプトプログラムの実行前に最初に終了されるかもしれない。従って、インタラプトプログラムの格納のため特別な不揮発性メモリは必要でなく、インタラプトプログラムのコピーが格納されるとき、インタラプトに対する高速レスポンスが利用可能である。
【００２６】
典型的には、ローカルメモリ回路１６のアドレススペースのサイズは、ＮＡＮＤフラッシュメモリ１４ａのものよりはるかに小さい。ＮＡＮＤフラッシュメモリ１４ａに格納されているすべてのプログラムのすべての命令が、必ずしもローカルメモリ回路１６に同時に格納可能であるとは限らない。従って、ローカルメモリ回路１６にロードされる命令は、典型的には、他の命令が以前に格納されたメモリ位置に書き込まれ、これにより、これら他の命令は再び必要になるときに再ロードされる必要がある。一実施例では、インタラプトプログラムの一部分のみがロードされてもよい。この場合、中断されたフラッシュメモリアクセス処理は、たとえインタラプトプログラムのスタートがローカルメモリ回路１６に格納されていても、好ましくは、インタラプトプログラムの実行前に終了される。しかしながらあるいは、インタラプトプログラムの格納されている部分は、インタラプトに応答して即座に実行されてもよく、インタラプトプログラムの格納されていない部分が以降においてロードされた場合、その前に中断されたフラッシュメモリアクセス処理が終了される。
【００２７】
第５ステップ２５におけるアクセス命令の終了を確実にするため、各種手段が利用されるかもしれない。一実施例では、命令プロセッサ１０のプログラムは、１以上のフラッシュメモリアクセス処理の進捗と、当該命令に関係するデータの位置とを示す状態情報を格納するよう構成される。本実施例では、インタラプトプログラムがローカルメモリ回路１６にないとき、格納されている状態情報が、終了されるべきタイプのアクセス処理が進捗していることを示すかテストされる。そうである場合、状態情報は、第５ステップ２５においてアクセス処理を終了させるのに利用され、状態情報が更新される。命令プロセッサ１０の各プログラムが、フラッシュメモリアクセスに関する状態情報を含む状態情報セットを規定してもよいことに留意されたい。典型的には、状態情報セットの他のすべての部分が、インタラプト時に保存され、インタラプトの処理後にそれらの保存されている値に復元される。アクセス処理に関する状態情報は、インタラプト後であって中断されたプログラムの再開前に更新されるという点で、例外的なものである。
【００２８】
他の実施例では、第５ステップ２５におけるアクセス命令の終了は、アクセス命令を示す情報を（命令プロセッサ１０又はローカルメモリ回路１６などに）格納するか、又は所定のアドレス範囲内のメモリ位置に当該アクセス命令を格納することによって実行されるかもしれない。この場合、中断時のプログラムカウンタ値は、格納されている情報又は所定のアドレス範囲と比較され、中断時の命令がアクセスに関するものであると検出された場合、アクセス命令の実行が継続される。アクセスに関する命令系列の終了時、第６ステップ２６において実行を開始するため、インタラプト処理が継続中であるか検出するための命令がプログラムに含まれてもよい。
【００２９】
他の実施例では、命令プロセッサ１０のプログラムは、命令プロセッサ１０にＮＡＮＤフラッシュアクセス処理のパイプラインを維持させるよう構成されてもよい。ＮＡＮＤフラッシュアクセス処理は、暗号化及び解読、誤り訂正符号化／復号化、ページアドレッシング、消去、フラッシュコントローラとＮＡＮＤフラッシュメモリとの間のデータ転送、プログラミング及び読み込みなど、連続する各ステージに分割されてもよい。パイプラインは、例えば、それぞれが対応するステージが次に適用される必要があるアクセス処理を示し、各ステージのための連続するアクセス処理及びポインタセットのリストを格納することにより実現されてもよい。あるいは、リストの各リクエストが、当該リクエストに適用される必要がある次のステージを示すステージインジケータと組み合わされてもよい。あるいは、各リストが各ステージについて用意され、当該ステージが連続的に適用される必要があるアクセス処理を示す複数のリストが、利用されてもよい。（前のステージが適用されると、アクセス処理が次にステージのためリストに追加される。）
本実施例では、命令プロセッサは、他のプログラムに加えてパイプライン処理プログラムを実行する。その他のプログラムは、パイプラインに挿入されるＮＡＮＤフラッシュアクセスリクエストを発行し、パイプライン処理プログラムが、パイプラインのＮＡＮＤフラッシュアクセスリクエストへのステージの適用を制御する。アクセスリクエストを処理するパイプライン処理プログラムが終了すると、それはこれをその他のプログラムに通知し、これにより、アクセスに依存する実行の一部を継続することが可能とされる。
【００３０】
本実施例では、インタラプトに応答して、インタラプトプログラムがローカルメモリ回路１６にないとき、インタラプトに応答してＮＡＮＤフラッシュメモリ１４ａからインタラプトプログラムをロードするアクセス処理が、前にスタートされたアクセス処理の後にパイプラインに配置される。この場合、命令プロセッサによるパイプライン処理プログラムの命令の実行は、インタラプトプログラムがローカルメモリ回路１６にない場合、インタラプトプログラムの実行のため中断されない。その代わりに、パイプライン処理命令の実行は、インタラプトプログラムがロードされるまで継続され、その後、インタラプトプログラムが実行される。しかしながら、インタラプト後、命令プロセッサ１０は、インタラプトプログラムが実行されるまで、パイプライン処理プログラム以外のプログラムの実行をサスペンドする。
【００３１】
本実施例では、パイプライン処理の各種ステージをパラレルに実行する追加的な回路が設けられてもよい。このため、命令プロセッサ１０は、当該追加的回路によりステージの実行が行われている間、他のプログラムを実行するよう構成されてもよい。あるいは、命令プロセッサ１０は、ステージの実行が当該追加的回路により実行される間、他のステージを実行してもよい。
【００３２】
図３は、処理回路３０とＮＡＮＤフラッシュメモリ回路１４ａとを有するフラッシュメモリシステムの実施例を示す。処理回路３０は、通信ポート３００と、フラッシュメモリポート３０１と、ローカルバス３０２とを有する。ＮＡＮＤフラッシュメモリ回路１４ａは、フラッシュメモリポート３０１に接続される。処理回路３０は、命令プロセッサ１０と、ローカルメモリ回路１６と、通信ポートインタフェース１８と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）回路３４と、ＮＡＮＤ制御回路３６とを有し、そのすべてがローカルバス３０２に接続される。命令プロセッサ１０は、メモリ管理インタフェース１２を介しローカルバス３０２に接続される。通信ポートインタフェース１８は、通信ポート３００とローカルバス３０２との間に接続される。ＮＡＮＤ制御回路３６は、フラッシュメモリポート３０１とローカルバス３０２との間に接続される。
【００３３】
一実施例では、図３の各種コンポーネントは、通信ポートＮＡＮＤフラッシュインタフェース装置として使用するため、単一の集積回路装置に集積される。
【００３４】
動作について、メモリ管理インタフェース１２は、ローカルバス３０２を介しローカルメモリ回路１６からプログラム命令をロードし、命令プロセッサ１０は、これらの命令を実行する。命令を含むプログラム部分は、この目的のため、ＮＡＮＤフラッシュメモリ１４ａからローカルメモリ回路１６にロードされる。典型的には、命令プロセッサ１０は、プログラム部分に対するリクエストを発行することによって、又は当該プログラム部分の最初の命令をアドレス指定することによって、ロード処理を開始する。メモリ管理インタフェース１２は、これに応答して、ＮＡＮＤ制御回路３４及びＤＭＡ回路３６にコマンドを送信する。
【００３５】
これに応答して、ＮＡＮＤ制御回路３４は、ＮＡＮＤフラッシュメモリ１４ａからプログラム部分を抽出し、それを復号化する。ＤＭＡ回路３６は、ＮＡＮＤ制御回路３６からローカルメモリ回路１６へのプログラム部分の転送を制御する。一実施例では、プロセッサ１０は、メモリ管理インタフェース１２から実行するための信号を受信した後、ＮＡＮＤフラッシュコントローラ３４とＤＭＡコントローラ３６とを制御する。これは、ＮＡＮＤフラッシュコントローラとＤＭＡコントローラの制御がソフトウェアにより実現可能であることを意味する。
【００３６】
通信ポートインタフェース１８は、通信ポート３００に接続されるホストプロセッサ（図示せず）からコマンドを受信する。このため、通信ポート３００と通信ポートインタフェース１８とは、例えば、既知のＵＳＢインタフェースなどをサポートするようにしてもよい。あるタイプのコマンドを受信すると、通信ポートインタフェース１８は、インタラプト信号を命令プロセッサ１０に送信する。インタラプト信号に応答して、命令プロセッサ１０は、現在のプログラム部分の実行から、中断を処理するための命令を有するインタラプトプログラムの実行にスイッチする。インタラプトルーティングの命令がローカルメモリ回路１６に格納される場合、命令プロセッサ１０は、それがインタラプトを付与すると、インタラプトルーチンをすぐに実行する。しかしながら、インタラプトルーティングの命令がローカルメモリ回路１６に格納されない場合、命令プロセッサ１０はまず、ＮＡＮＤフラッシュメモリ１４ａからのインタラプトルーチンの命令をローカルメモリ回路１６にロードするリクエストを発行する。当該リクエストはパイプラインに追加され、パイプラインにおけるリクエストの処理が、インタラプトプログラムをロードするリクエストが処理されるまで継続される。このインタラプトプログラムは、ロードされると実行される。
【００３７】
複数のステージにおいて、ＮＡＮＤフラッシュメモリ１４ａにアクセスするリクエストの処理が実行される。一実施例では、読み込みのためのステージは、ＮＡＮＤフラッシュメモリ１４ａからのデータ転送、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）復号化及び解読を含む。他の実施例では、プログラミングのためのステージは、暗号化、ＥＣＣ符号化及びＮＡＮＤフラッシュメモリ１４ａへのデータ転送を含む。
【００３８】
図４は、第１バッファメモリ４０ａと、第２バッファメモリ４０ｂと、バスインタフェース４１と、ＥＣＣ処理回路４２と、解読／暗号化処理回路４４と、ローカルＤＭＡ回路４６と、制御回路４８とを含むＮＡＮＤフラッシュ制御回路３４の実施例を示す。バスインタフェース４１は、図３のＤＭＡ回路３６（図示せず）の制御の下、バッファメモリ４０ａ，４０ｂとの間でデータを転送するよう構成される。ＥＣＣ処理回路４２と解読／暗号化処理回路４４は、他方のバッファメモリ４０ａ，４０ｂへの自由なアクセスを残しながら、バッファメモリ４０ａ，４０ｂの選択可能な１つにおいてデータを処理するよう構成される。ローカルＤＭＡ回路４６は、他方のバッファメモリ４０ａ，４０ｂへの自由なアクセスを残しながら、バッファメモリ４０ａ，４０ｂの選択可能な１つとフラッシュメモリ１４ａ（図示せず）との間でデータを転送するよう構成される。
【００３９】
動作について、ＮＡＮＤ制御回路３４は、ＮＡＮＤフラッシュメモリ１４ａ、ＥＣＣ復号化及び符号化、並びに解読／暗号化との間のデータ転送を実行する。一実施例では、図４の回路を利用して、パイプラインアクセス処理は、バッファメモリ４０ａ，４０ｂとの間の転送のさらなるステージを含む。
【００４０】
データブロックのプログラミング処理は、（１）バッファメモリ４０ａ，４０ｂの１つへのデータブロックのＤＭＡ転送、（２）暗号化、（３）ＥＣＣ符号化、（４）バッファメモリからのデータを利用したＮＡＮＤフラッシュメモリ１４ａのプログラミングの各ステージに関する。ＮＡＮＤフラッシュのプログラミングは、（１）フラッシュへの所定のプログラムコマンドバイトと、その後のアドレスの書き込み、（２）ローカルＤＭＡコントローラ４６を介したフラッシュへのデータの転送、（３）フラッシュへのプログラム実行コマンドバイトの書き込み、（４）フラッシュがコマンドを終了することを待機、（５）リード状態コマンドバイトのフラッシュへの書き込み及び当該状態の読み返しの各ステップを含むかもしれない。暗号化及びＥＣＣ符号化は、バッファメモリの１つにおけるデータの置換及び／又は追加により実行される。異なるステージが、バッファメモリ４０ａ，４０ｂの異なるものを利用して、異なるアクセスリクエストについてパラレルに実行可能である。
【００４１】
データブロックのための暗号化及びＥＣＣ符号化が、当該データブロックを格納する同一のバッファメモリ４０ａ，４０ｂに対して実行される。あるいは、暗号化に対してデータが１つのバッファメモリから読み込まれ、結果が他のバッファメモリに書き込まれ、ＥＣＣ符号化に対しても同様に行われるように、いくつかのバッファメモリがステージ間に含まれてもよい。しかしながら、暗号化とＥＣＣ符号化の双方に対して１つのバッファメモリを使用することによって、バッファメモリスペースが節約可能であることが示されている。なぜなら、双方は、ＮＡＮＤフラッシュメモリとの間でデータブロックを転送するのに必要な時間において実行可能であるためである。
【００４２】
データブロックのリード処理は、ＮＡＮＤフラッシュにリードページコマンドをと、その後にアドレスバッファを送信し、（２）ＮＡＮＤフラッシュがリクエストされた情報を抽出するのを待機し、（３）ＮＡＮＤフラッシュメモリ１４ａからバッファメモリの１つにデータブロックを転送し、（４）ＥＣＣ復号化（すなわち、誤り訂正）、（５）解読、及び（６）バッファメモリ４０ａ，４０ｂからバスへのデータブロックのＤＭＡ転送の各ステージを伴う。解読及びＥＣＣ復号化は、バッファメモリの１つにおけるデータの置換及び／又は追加により実行される。異なるステージが、バッファメモリ４０ａ，４０ｂの異なるものを用いて異なるアクセスリクエストについてパラレルに実行可能である。
【００４３】
一実施例では、パイプライン処理が命令プロセッサ１０により制御される。命令プロセッサ１０は、パイプラインのリクエストの状態を記述した情報を維持する。この情報に基づき、命令プロセッサ１０は、ＤＭＡコントローラ３６，ＥＣＣ処理回路４２、解読／暗号化処理回路４４及びローカルＤＭＡ回路４６に、あるユニットがフリーになり、パイプラインにおいて当該ユニットの処理対象のリクエストの順番になると、これらのユニットによるデータブロックの処理をトリガーする信号を送信する。命令プロセッサ１０は、データブロックが処理された時点を決定し（例えば、ポーリング又はインタラプトベースにより）、パイプラインにおける各リクエストの状態を記述した情報を更新する。
【００４４】
一実施例では、１つのタイプのリクエストのみが（プログラミング又は読み込み）、一時にパイプライン処理される。第１タイプの１以上のリクエストがパイプライン処理され、第２の異なるタイプのリクエストが受け付けられると、第２タイプのリクエストの処理がスタートする前に、第１タイプの１以上のリクエストを処理するステージがまず終了される。これは、パイプライン処理を簡単化する。
【００４５】
上述した実施例は、本発明を限定するものでなく説明するためのものであり、当業者は添付した請求項の範囲から逸脱することなく他の多数の実施例を設計可能であることに留意すべきである。請求項において、括弧内の参照符号は請求項を限定するものとして解釈されるべきでない。“有する”という用語は、請求項に列記された以外の要素又はステップの存在を排除するものでない。要素に先行する“ある”という用語は、このような要素が複数存在することを排除するものでない。本発明は、複数の異なる要素を有するハードウェアによって、及び／又は適切にプログラムされたプロセッサによって実現可能である。複数の手段を列記した装置の請求項において、これらの手段のいくつかが１つの同一のハードウェアアイテムにより実現されてもよい。ある手段が互いに異なる従属項に記載されているという事実は、これらの手段の組み合わせが効果的に利用可能でないことを示すものでない。
【図１】
2010500682.tif 000003
【図２】
2010500682.tif 000004
【図３】
2010500682.tif 000005
【図４】
2010500682.tif 000006
【手続補正書】
【提出日】平成21年2月17日(2009.2.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリアクセス回路と、フラッシュメモリアクセス回路の動作方法とに関する。
【背景技術】
【０００２】
フラッシュメモリは、それ自体周知である。フラッシュメモリは、高密度不揮発性メモリを提供する。特に、ＮＡＮＤフラッシュは、高い回路密度を提供する。しかしながら、これは、最新のＲＡＭメモリと比較して長いアクセス遅延と相対的に遅いアクセス速度とを犠牲にする。このため、処理システムのメインプロセッサによるフラッシュメモリの制御は、処理をかなり低速化する可能性がある。
【０００３】
ＵＳ６，８７４，０４４は、フラッシュメモリとＵＳＢバスとの間のデータ転送と、ローカルインテリジェンスとを制御するフラッシュメモリを開示する。データ転送のため、フラッシュカードリーダは、ＵＳＢバスとインタフェースをとるシリアルエンジンと、フラッシュメモリに接続されるフラッシュカードリーダと、フラッシュカードコントローラとシリアルインタフェースとの間のデータをバッファリングするＲＡＭバッファとを有する。フラッシュカードはまた、ＣＰＵとＲＯＭ命令メモリとを含む。ＣＰＵは、ＲＯＭからの命令を実行する命令プロセッサである。これは、その機能を向上させるため、フラッシュカードリーダにおいてローカルにプログラムを実行することを可能にする。
【０００４】
ＵＳ６，８７４，０４４は、ＣＰＵとフラッシュメモリとによるプログラム関連データ転送（命令ロード処理を含む）間のバスコンフリクトが速度を低下させることを回避するため、シリアルエンジンとフラッシュカードコントローラとの間で２つのバスを利用する。ＣＰＵとシリアルインタフェースの両方が、アクセスリクエストをフラッシュカードコントローラに送信することができる。フラッシュカードコントローラは、ＣＰＵとシリアルインタフェースが他のアクションを実行可能である間、これらのリクエストを自律的に処理する。
【０００５】
ＵＳ２００３１５６４７３は、コントローラと、システムのスタートアップ及び通常動作のためのファームウェアを格納する不揮発性メモリとを有するメモリシステムを開示する。コントローラは、揮発性メモリとプロセッサとを有し、コントローラによるハードウェア制御の下で、不揮発性メモリに格納されているスタートアップファームウェアが揮発性メモリにロードされ、プロセッサが停止されると、揮発性メモリのスタートアップファームウェアがプロセッサによりその後に実行されるように、システムの初期化又は設定中に動作するよう構成される。
【０００６】
ＵＳ５８８１２９５は、オンチップイレーサブルかつプログラマブル不揮発性フラッシュプログラムメモリのプログラミング及びイレーシング中にインタラプトを制御するデータプロセッサを開示する。一般に、インタラプト又はアドレスエラーが発生すると、中央処理ユニットによる処理は、インタラプト処理ルーチン又は例外処理ルーチンに分岐される。インタラプト処理ルーチン又は例外処理ルーチンの先頭アドレスを示すベクトルアドレスが、中央処理ユニットによる処理をインタラプト処理ルーチン又は例外処理ルーチンに分岐するのに使用される。しかしながら、インタラプト又は例外処理が発生した場合、フラッシュメモリがプログラムメモリとして使用され、ユーザプログラムモード又はブートモードにおいてフラッシュメモリに対してイレーシング又はプログラミングが実行されると、中央処理ユニットは、フラッシュメモリのベクトルアドレス格納エリアに格納されている所望のベクトルアドレスを取得することができない。このため、プログラムメモリのデータがイレース又はプログラムされている間、インタラプトリクエスト又は例外処理リクエストが中央処理ユニットに行われると、処理対象となるインタラプト処理又は例外処理のためのベクトルアドレスデータが、プログラムメモリ以外のメモリの所定のエリアに以前に格納される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、特に命令プロセッサのプログラムのための格納を提供するのにより少ないオーバヘッドしか必要としないシンプルなフラッシュメモリアクセス回路を提供することである。本発明は、独立クレームにより規定される。従属クレームが、効果的な実施例を規定する。
【課題を解決するための手段】
【０００８】
一特徴によると、フラッシュメモリアクセス回路が提供される。当該回路では、命令プロセッサによる命令の実行は、フラッシュメモリ装置にアクセスするフラッシュ制御回路を制御するのに使用される。これは、フラッシュメモリの使用と組み合わされ、命令プロセッサに通知されるインタラプトを処理するためのインタラプトプログラムの命令を少なくとも有するプログラム命令を命令プロセッサに提供する。一実施例では、インタラプトは、ＵＳＢスレーブ回路などのフラッシュメモリアクセス回路の通信回路により生成されるインタラプトを有する。
【０００９】
命令プロセッサは、フラッシュメモリからワーキングメモリにロードされたインタラプトプログラムの命令のコピーを利用して、ワーキングメモリからのインタラプトプログラムの命令を実行することによりインタラプトを処理する。命令プロセッサは、ワーキングメモリを直接アドレス指定してもよいし、又はメモリ管理ユニットは、フラッシュメモリの記憶位置のプロセッサにより発行されたアドレスをフラッシュメモリのコンテンツのコピーが格納されるワーキングメモリの位置にマップするのに使用されてもよい。インタラプトが生成され、インタラプトを処理する命令がワーキングメモリにないとき、命令プロセッサは、フラッシュメモリからインタラプトプログラムの命令をロードするためのロード命令をまず実行することによって、インタラプトを処理する。従って、インタラプトプログラムを格納するための命令メモリスペースの必要が回避され、インタラプトプログラムのための固定されたスペースが予めワーキングメモリに確保される必要がない。
【００１０】
典型的な実施例では、インタラプト処理は、他のインタラプトを自動的に不可にし（少なくとも同一及び下位の優先レベルのインタラプト）、当該他のインタラプトを不可にしたままインタラプト処理プログラムの命令の実行を実行し、その後にインタラプトを再実行することを含む。さらなる実施例では、フラッシュメモリ装置からロードされるコピーにおけるインタラプトプログラムの命令は、上記再実行前に実行される命令を有する。
【００１１】
一実施例では、インタラプトプログラムの命令のコピーが、インタラプトの受付前にすでにワーキングメモリに格納されているかテストされる。テストは、命令プロセッサ自体によって、又はメモリ管理ユニットなどによって実行されるかもしれない。さらなる実施例では、命令プロセッサがインタラプトプログラムの命令と、以前にスタートされたアクセスリクエストを終了させる命令とを実行する順序は、コピーが以前に格納されているか検出されるか否かに依存する。そうである場合、命令プロセッサは、まずインタラプトプログラムの命令を実行し、そうでない場合、命令プロセッサは、以前にスタートされたアクセスリクエストを処理するための命令の実行が終了した後まで、コピーのロード及び以降の実行を遅延させる。このように、インタラプトを処理するための最大速度が、以前のアクセスリクエストの処理を再スタートさせる必要のオーバヘッドなく、又は当該リクエストのデータを欠落させることなく実現可能である。
【００１２】
これらの実施例では、ＮＡＮＤフラッシュアクセスについて特に効果的である。なぜなら、それらは大きなアクセス遅延の効果を軽減するためである。
【００１３】
他の特徴によると、命令プロセッサは、フラッシュメモリ装置に対するアクセスリクエストのキューを規定する。一実施例では、インタラプトプログラムの命令のコピーが、以前のリクエストの後にキューにそれを実行するリクエストを配置し、命令プロセッサを使用して、インタラプトプログラムの命令のコピーをロードするリクエストを処理する前にキューにある以前のリクエストを処理し、インタラプトを処理することによりロードされる。
【００１４】
一実施例では、命令プロセッサは、キューにあるリクエストのパイプライン形式による処理を実行させるための命令を実行する。ここで使用される“パイプライン処理”とは、アクセスリクエストの処理が、アクセスデータに異なる処理が適用される連続するステージを有することを仮定する。パイプライン形式による処理は、異なるリクエストを処理する異なるステージが互いにパラレルに実行されることを意味する。異なるステージの具体例として、フラッシュメモリのメモリセルのブロックを消去し、メモリセルのブロックをプログラミングし、メモリセルのブロックを読み込み、フラッシュメモリチップとフラッシュコントローラとの間でデータを転送し、フラッシュコントローラとワーキングメモリとの間でデータを転送し、データブロックを誤り訂正符号（ＥＣＣ）に符号化し、ＥＣＣ（すなわち、誤り訂正）に従って復号化し、暗号化及び解読の実行などがあげられる。プログラミング及び読み込みは、フラッシュメモリの異なるバンクについてパラレルに実行されてもよいが、これが１つのリクエストのデータについて起こる限り、これは、異なるリクエストのパイプライン化された実行と呼ばれない。
【００１５】
アクセスリクエストを処理する異なるステージは、フラッシュ制御回路の異なる回路部分により実行されてもよいが、これら回路部分は、命令プロセッサにより実行される命令の制御の下で命令プロセッサからの各ステージをスタートする制御信号をプロセッサから受け付ける。従って、命令プロセッサは、異なるパイプラインステージが実行される時点を制御しさえすればよい。
【００１６】
一実施例では、リクエストに対する暗号化及びＥＣＣへの符号化は、１つのステージとして連続的に実行され、他のリクエストに対するプログラミングを伴うステージによりパイプライン処理される。この場合、何れか１つが１つのリクエストに対する暗号化及び符号化を実行するのに使用され、他方が他のリクエストについてプログラミングを実行するよう使用されるメモリのペアが設けられ、これらのメモリの役割が交互のリクエストについて交換される。暗号化及び符号化が互いにパイプライン処理されない場合であっても、最大速度が実現されるようなプログラミング速度となることが示された。
【００１７】
一実施例では、キューにおけるフラッシュリードリクエストとフラッシュプログラミングリクエストのパイプライン処理された実行をミックスすることが回避される。１つのタイプのリクエスト（リード又はプログラミング）の第１ステージの実行をスタートする前、異なるタイプ（プログラミング又はリード）の以前のリクエストのステージの実行のすべてのステージがまず終了される。これは、フラッシュメモリアクセスを大きく簡単化する。
【００１８】
上記及び他の課題並びに効果的な特徴が、以下の図面を用いて実施例の説明から明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、フラッシュメモリシステムを示す。
【図２】図２は、インタラプト処理のフローチャートを示す。
【図３】図３は、フラッシュメモリシステムを示す。
【図４】図４は、ＮＡＮＤフラッシュ制御回路を示す。
【発明を実施するための形態】
【００２０】
図１は、命令プロセッサ１０と、メモリ管理インタフェース１２と、ＮＡＮＤフラッシュ制御回路１４と、ＮＡＮＤフラッシュメモリ１４ａと、ローカルメモリ回路１６と、通信インタフェース１８とを有するフラッシュメモリシステムの実施例を示す。命令プロセッサ１０は、メモリ管理インタフェース１２を介しローカルメモリ回路１６と通信インタフェース１８とに接続される。さらに、メモリ管理インタフェース１２は、ＮＡＮＤフラッシュ制御回路１４とフラッシュメモリポート３０１とを介しＮＡＮＤフラッシュメモリ１４ａに接続される。通信インタフェース１８は、情報を送受信するためのターミナル１９と、命令プロセッサ１０のインタラプト入力に接続される出力とを有する。通信インタフェース１８は、例えば、既知のＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）による通信などをターミナル１９を介しサポートするかもしれない。ローカルメモリ回路１６は、ＳＲＡＭやＤＲＡＭなどの揮発性メモリ回路であるかもしれない。システムのコンポーネントは、集積回路に集積されるかもしれない。一実施例では、ＮＡＮＤフラッシュメモリ１４ａを除くコンポーネントは集積回路に集積され、ＮＡＮＤフラッシュメモリ１４ａが１以上の個別の集積回路に集積される。本実施例では、フラッシュメモリポート３０１は、ＮＡＮＤフラッシュメモリ１４ａを除くコンポーネントが集積される集積回路のターミナルを有する。
【００２１】
動作について、命令プロセッサ１０は、ＮＡＮＤフラッシュメモリ１４ａにより提供される命令のプログラムを実行する。命令プロセッサ１０がこのような命令を実行する必要があるとき、それは、メモリ管理インタフェース１２にＮＡＮＤフラッシュメモリ１４ａからの複数の命令を含むプログラム又はプログラムセクションをローカルメモリ回路１６にロードさせる。その後、命令プロセッサ１０が命令のアドレスを発行すると、メモリ管理インタフェース１２はこれらのアドレスをローカルメモリ回路１６にマップし、命令プロセッサ１０による実行のため、ローカルメモリ回路１６からこれらの命令を抽出する。メモリ管理インタフェース１２は、コピーなどを格納するためのワーキングメモリ位置を選択する完全なメモリ管理ユニットであってもよいし、又は命令プロセッサ１０により管理が実行されてもよい。また、メモリ管理インタフェース１２のすべての機能は、命令プロセッサ１０により実現されてもよい（マッピングは、例えば、ベースアドレスポインタを利用することにより実現される）。メモリ管理の実行時、メモリ管理インタフェース１２と命令プロセッサ１０、又は命令プロセッサ自体をここではプロセッサと呼ぶ。
【００２２】
これらの命令は、ＮＡＮＤフラッシュメモリ１４ａとの間でデータを読み書きするための命令を含むかもしれない。ＮＡＮＤフラッシュメモリ１４ａの読み書きは、典型的には、ブロック単位で実行され、各ブロックはページやセクションなどの複数のアドレスのデータを含む。また、ＮＡＮＤフラッシュメモリ１４ａにおける読み書きは、典型的には、命令プロセッサ１０の異なる命令の制御の下で実行される複数の連続するアクションをブロックに適用することを含む。
【００２３】
プログラム実行中、コマンドを実行させる信号が、ターミナル１９に接続されるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの外部装置（図示せず）により生成されてもよい。通信インタフェース１８がこのような信号を検出すると、それは命令プロセッサ１０に通常プログラムの実行を中断させ、インタラプトプログラムの実行をスタートさせるため、命令プロセッサに対するインタラプトを生成する。インタラプトプログラムの命令は、ＮＡＮＤフラッシュメモリ１４ａに格納され、インタラプトプログラムの実行のため、ローカルメモリ回路１６にコピーされる。
【００２４】
図２は、インタラプトの処理中の動作のフローチャートを示す。第１ステップ２１において、処理回路１０はインタラプトを受け付ける。このインタラプトのため、インタラプトプログラムが規定される。一実施例では、複数の異なるタイプのインタラプトが可能であり、それぞれが異なるインタラプトプログラムに関連付けされる（例えば、インタラプトベクトルテーブル又はジャンプテーブルなどにより）。第２ステップ２２において、インタラプトのためのインタラプトプログラムが以前にローカルメモリ回路１６にコピーされたか、そして依然としてローカルメモリ回路１６に格納されているかテストされる。このステップは、命令プロセッサ１０からのインタラプトプログラムのＮＡＮＤフラッシュメモリアドレスに応答して、メモリ管理インタフェースなどにより実行されるかもしれない。インタラプトプログラムのコピーがローカルメモリ回路１６に格納されている場合、第３ステップ２３が実行され、命令プロセッサ１０が、ローカルメモリ回路１６からの命令を用いてインタラプトプログラムを実行する。インタラプトプログラムの完了後、命令プロセッサ１０にインタラプト後に中断された部分から通常プログラムの実行を再開させる。
【００２５】
第２ステップ２２において、コピーが格納されていないと検出された場合、第４ステップ２４が実行され、命令プロセッサ１０がインタラプト時にＮＡＮＤフラッシュアクセス処理を実行していたかテストされる。そうである場合、第５ステップ２５が実行され、中断されたプログラムのＮＡＮＤフラッシュアクセス処理を終了させるための命令が実行される。第５ステップ２５における上記終了は、少なくともＮＡＮＤフラッシュメモリ１４ａのプログラミングユニットのためのプログラミングアクションのデータ要素の連続する書き込みの終了を含む。知られているように、ＮＡＮＤフラッシュのプログラミングは、他のユニットの読み書きの介入なくユニット毎に実行される必要がある。他のユニットがアクセスされると、前のユニットは、全体としてのみプログラム可能である。プログラミングアクションの完了後、インターラプトプログラムのロード後にプログラミングアクションの全体を繰り返すことは不要とされる。第５ステップ２５における上記終了が実行された後、ＮＡＮＤフラッシュメモリ１４ａからのインタラプトプログラムをローカルメモリ回路１６にロードする第６ステップ２６が実行される。その後、第３ステップ２３が実行される。
【００２６】
第４ステップ２４において、命令プロセッサ１０がインタラプト時にＮＡＮＤフラッシュアクセス処理を実行していなかったと検出された場合、第６ステップ２６が、中断されたプログラムからの命令の事前の実行なく第４ステップ２４の直後に実行される。
【００２７】
このように、インタラプトプログラムのコピーがローカルメモリ回路１６において利用可能である場合、インタラプトが即座に処理されるが、インタラプトプログラムがＮＡＮＤフラッシュメモリ１４ａからロードされる必要があるとき、ＮＡＮＤフラッシュアクセス処理は、インタラプトプログラムの実行前に最初に終了されるかもしれない。従って、インタラプトプログラムの格納のため特別な不揮発性メモリは必要でなく、インタラプトプログラムのコピーが格納されるとき、インタラプトに対する高速レスポンスが利用可能である。
【００２８】
典型的には、ローカルメモリ回路１６のアドレススペースのサイズは、ＮＡＮＤフラッシュメモリ１４ａのものよりはるかに小さい。ＮＡＮＤフラッシュメモリ１４ａに格納されているすべてのプログラムのすべての命令が、必ずしもローカルメモリ回路１６に同時に格納可能であるとは限らない。従って、ローカルメモリ回路１６にロードされる命令は、典型的には、他の命令が以前に格納されたメモリ位置に書き込まれ、これにより、これら他の命令は再び必要になるときに再ロードされる必要がある。一実施例では、インタラプトプログラムの一部分のみがロードされてもよい。この場合、中断されたフラッシュメモリアクセス処理は、たとえインタラプトプログラムのスタートがローカルメモリ回路１６に格納されていても、好ましくは、インタラプトプログラムの実行前に終了される。しかしながらあるいは、インタラプトプログラムの格納されている部分は、インタラプトに応答して即座に実行されてもよく、インタラプトプログラムの格納されていない部分が以降においてロードされた場合、その前に中断されたフラッシュメモリアクセス処理が終了される。
【００２９】
第５ステップ２５におけるアクセス命令の終了を確実にするため、各種手段が利用されるかもしれない。一実施例では、命令プロセッサ１０のプログラムは、１以上のフラッシュメモリアクセス処理の進捗と、当該命令に関係するデータの位置とを示す状態情報を格納するよう構成される。本実施例では、インタラプトプログラムがローカルメモリ回路１６にないとき、格納されている状態情報が、終了されるべきタイプのアクセス処理が進捗していることを示すかテストされる。そうである場合、状態情報は、第５ステップ２５においてアクセス処理を終了させるのに利用され、状態情報が更新される。命令プロセッサ１０の各プログラムが、フラッシュメモリアクセスに関する状態情報を含む状態情報セットを規定してもよいことに留意されたい。典型的には、状態情報セットのたのすべての部分が、インタラプト時に保存され、インタラプトの処理後にそれらの保存されている値に復元される。アクセス処理に関する状態情報は、インタラプト後であって中断されたプログラムの再開前に更新されるという点で、例外的なものである。
【００３０】
他の実施例では、第５ステップ２５におけるアクセス命令の終了は、アクセス命令を示す情報を（命令プロセッサ１０又はローカルメモリ回路１６などに）格納するか、又は所定のアドレス範囲内のメモリ位置に当該アクセス命令を格納することによって実行されるかもしれない。この場合、中断時のプログラムカウンタ値は、格納されている情報又は所定のアドレス範囲と比較され、中断時の命令がアクセスに関するものであると検出された場合、アクセス命令の実行が継続される。アクセスに関する命令系列の終了時、第６ステップ２６において実行を開始するため、インタラプト処理が継続中であるか検出するための命令がプログラムに含まれてもよい。
【００３１】
他の実施例では、命令プロセッサ１０のプログラムは、命令プロセッサ１０にＮＡＮＤフラッシュアクセス処理のパイプラインを維持させるよう構成されてもよい。ＮＡＮＤフラッシュアクセス処理は、暗号化及び解読、誤り訂正符号化／復号化、ページアドレッシング、消去、ＮＡＮＤフラッシュ制御回路１４とＮＡＮＤフラッシュメモリ１４ａとの間のデータ転送、プログラミング及び読み込みなど、連続する各ステージに分割されてもよい。パイプラインは、例えば、それぞれが対応するステージが次に適用される必要があるアクセス処理を示し、各ステージのための連続するアクセス処理及びポインタセットのリストを格納することにより実現されてもよい。あるいは、リストの各リクエストが、当該リクエストに適用される必要がある次のステージを示すステージインジケータと組み合わされてもよい。あるいは、各リストが各ステージについて用意され、当該ステージが連続的に適用される必要があるアクセス処理を示す複数のリストが、利用されてもよい。（前のステージが適用されると、アクセス処理が次にステージのためリストに追加される。）
本実施例では、命令プロセッサは、他のプログラムに加えてパイプライン処理プログラムを実行する。その他のプログラムは、パイプラインに挿入されるＮＡＮＤフラッシュアクセスリクエストを発行し、パイプライン処理プログラムが、パイプラインのＮＡＮＤフラッシュアクセスリクエストへのステージの適用を制御する。アクセスリクエストを処理するパイプライン処理プログラムが終了すると、それはこれをその他のプログラムに通知し、これにより、アクセスに依存する実行の一部を継続することが可能とされる。
【００３２】
本実施例では、インタラプトに応答して、インタラプトプログラムがローカルメモリ回路１６にないとき、インタラプトに応答してＮＡＮＤフラッシュメモリ１４ａからインタラプトプログラムをロードするアクセス処理が、前にスタートされたアクセス処理の後にパイプラインに配置される。この場合、命令プロセッサによるパイプライン処理プログラムの命令の実行は、インタラプトプログラムがローカルメモリ回路１６にない場合、インタラプトプログラムの実行のため中断されない。その代わりに、パイプライン処理命令の実行は、インタラプトプログラムがロードされるまで継続され、その後、インタラプトプログラムが実行される。しかしながら、インタラプト後、命令プロセッサ１０は、インタラプトプログラムが実行されるまで、パイプライン処理プログラム以外のプログラムの実行をサスペンドする。
【００３３】
本実施例では、パイプライン処理の各種ステージをパラレルに実行する追加的な回路が設けられてもよい。このため、命令プロセッサ１０は、当該追加的回路によりステージの実行が行われている間、他のプログラムを実行するよう構成されてもよい。あるいは、命令プロセッサ１０は、ステージの実行が当該追加的回路により実行される間、他のステージを実行してもよい。
【００３４】
図３は、処理回路３０とＮＡＮＤフラッシュメモリ回路１４ａとを有するフラッシュメモリシステムの実施例を示す。処理回路３０は、通信ポート３００と、フラッシュメモリポート３０１と、ローカルバス３０２とを有する。ＮＡＮＤフラッシュメモリ回路１４ａは、フラッシュメモリポート３０１に接続される。処理回路３０は、命令プロセッサ１０と、ローカルメモリ回路１６と、通信ポートインタフェース１８と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）回路３４と、ＮＡＮＤフラッシュメモリ制御回路３６とを有し、そのすべてがローカルバス３０２に接続される。命令プロセッサ１０は、メモリ管理インタフェース１２を介しローカルバス３０２に接続される。通信ポートインタフェース１８は、通信ポート３００とローカルバス３０２との間に接続される。ＮＡＮＤフラッシュメモリ制御回路３６は、フラッシュメモリポート３０１とローカルバス３０２との間に接続される。
【００３５】
一実施例では、図３の各種コンポーネントは、通信ポートＮＡＮＤフラッシュインタフェース装置として使用するため、単一の集積回路装置に集積される。
【００３６】
動作について、メモリ管理インタフェース１２は、ローカルバス３０２を介しローカルメモリ回路１６からプログラム命令をロードし、命令プロセッサ１０は、これらの命令を実行する。命令を含むプログラム部分は、この目的のため、ＮＡＮＤフラッシュメモリ１４ａからローカルメモリ回路１６にロードされる。典型的には、命令プロセッサ１０は、プログラム部分に対するリクエストを発行することによって、又は当該プログラム部分の最初の命令をアドレス指定することによって、ロード処理を開始する。メモリ管理インタフェース１２は、これに応答して、ＮＡＮＤフラッシュメモリ制御回路３６及びＤＭＡ回路３４にコマンドを送信する。
【００３７】
これに応答して、ＮＡＮＤフラッシュメモリ制御回路３６は、ＮＡＮＤフラッシュメモリ１４ａからプログラム部分を抽出し、それを復号化する。ＤＭＡ回路３４は、ＮＡＮＤフラッシュメモリ制御回路３６からローカルメモリ回路１６へのプログラム部分の転送を制御する。一実施例では、プロセッサ１０は、メモリ管理インタフェース１２から実行するための信号を受信した後、ＮＡＮＤフラッシュメモリ制御回路３６とＤＭＡ回路３４とを制御する。これは、ＮＡＮＤフラッシュメモリ制御回路３６とＤＭＡ回路３４の制御がソフトウェアにより実現可能であることを意味する。
【００３８】
通信ポートインタフェース１８は、通信ポート３００に接続されるホストプロセッサ（図示せず）からコマンドを受信する。このため、通信ポート３００と通信ポートインタフェース１８とは、例えば、既知のＵＳＢインタフェースなどをサポートするようにしてもよい。あるタイプのコマンドを受信すると、通信ポートインタフェース１８は、インタラプト信号を命令プロセッサ１０に送信する。インタラプト信号に応答して、命令プロセッサ１０は、現在のプログラム部分の実行から、中断を処理するための命令を有するインタラプトプログラムの実行にスイッチする。インタラプトルーティングの命令がローカルメモリ回路１６に格納される場合、命令プロセッサ１０は、それがインタラプトを付与すると、インタラプトルーチンをすぐに実行する。しかしながら、インタラプトルーティングの命令がローカルメモリ回路１６に格納されない場合、命令プロセッサ１０はまず、ＮＡＮＤフラッシュメモリ１４ａからのインタラプトルーチンの命令をローカルメモリ回路１６にロードするリクエストを発行する。当該リクエストはパイプラインに追加され、パイプラインにおけるリクエストの処理が、インタラプトプログラムをロードするリクエストが処理されるまで継続される。このインタラプトプログラムは、ロードされると実行される。
【００３９】
複数のステージにおいて、ＮＡＮＤフラッシュメモリ１４ａにアクセスするリクエストの処理が実行される。一実施例では、読み込みのためのステージは、ＮＡＮＤフラッシュメモリ１４ａからのデータ転送、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）復号化及び解読を含む。他の実施例では、プログラミングのためのステージは、暗号化、ＥＣＣ符号化及びＮＡＮＤフラッシュメモリ１４ａへのデータ転送を含む。
【００４０】
図４は、第１バッファメモリ４０ａと、第２バッファメモリ４０ｂと、バスインタフェース４１と、ＥＣＣ処理回路４２と、解読／暗号化処理回路４４と、ローカルＤＭＡ回路４６と、制御回路４８とを含むＮＡＮＤフラッシュメモリ制御回路３４の実施例を示す。バスインタフェース４１は、図３のＤＭＡ回路３６（図示せず）の制御の下、バッファメモリ４０ａ，４０ｂとの間でデータを転送するよう構成される。ＥＣＣ処理回路４２と解読／暗号化処理回路４４は、他方のバッファメモリ４０ａ，４０ｂへの自由なアクセスを残しながら、バッファメモリ４０ａ，４０ｂの選択可能な１つにおいてデータを処理するよう構成される。ローカルＤＭＡ回路４６は、他方のバッファメモリ４０ａ，４０ｂへの自由なアクセスを残しながら、バッファメモリ４０ａ，４０ｂの選択可能な１つとＮＡＮＤフラッシュメモリ１４ａとの間でデータを転送するよう構成される。
【００４１】
動作について、ＮＡＮＤフラッシュメモリ制御回路３４は、ＮＡＮＤフラッシュメモリ１４ａ、ＥＣＣ復号化及び符号化、並びに解読／暗号化との間のデータ転送を実行する。一実施例では、図４の回路を利用して、パイプラインアクセス処理は、バッファメモリ４０ａ，４０ｂとの間の転送のさらなるステージを含む。
【００４２】
データブロックのプログラミング処理は、（１）バッファメモリ４０ａ，４０ｂの１つへのデータブロックのＤＭＡ転送、（２）暗号化、（３）ＥＣＣ符号化、（４）バッファメモリからのデータを利用したＮＡＮＤフラッシュメモリ１４ａのプログラミングの各ステージに関する。ＮＡＮＤフラッシュメモリ１４ａのプログラミングは、（１）ＮＡＮＤフラッシュメモリ１４ａへの所定のプログラムコマンドバイトと、その後のアドレスの書き込み、（２）ローカルＤＭＡコントローラ４６を介したＮＡＮＤフラッシュメモリ１４ａへのデータの転送、（３）ＮＡＮＤフラッシュメモリ１４ａへのプログラム実行コマンドバイトの書き込み、（４）ＮＡＮＤフラッシュメモリ１４ａがコマンドを終了することを待機、（５）リード状態コマンドバイトのＮＡＮＤフラッシュメモリ１４ａへの書き込み及び当該状態の読み返しの各ステップを含むかもしれない。暗号化及びＥＣＣ符号化は、バッファメモリの１つにおけるデータの置換及び／又は追加により実行される。異なるステージが、バッファメモリ４０ａ，４０ｂの異なるものを利用して、異なるアクセスリクエストについてパラレルに実行可能である。
【００４３】
データブロックのための暗号化及びＥＣＣ符号化が、当該データブロックを格納する同一のバッファメモリ４０ａ，４０ｂに対して実行される。あるいは、暗号化に対してデータが１つのバッファメモリから読み込まれ、結果が他のバッファメモリに書き込まれ、ＥＣＣ符号化に対しても同様に行われるように、いくつかのバッファメモリがステージ間に含まれてもよい。しかしながら、暗号化とＥＣＣ符号化の双方に対して１つのバッファメモリを使用することによって、バッファメモリスペースが節約可能であることが示されている。なぜなら、双方は、ＮＡＮＤフラッシュメモリとの間でデータブロックを転送するのに必要な時間において実行可能であるためである。
【００４４】
データブロックのリード処理は、ＮＡＮＤフラッシュメモリ１４ａにリードページコマンドをと、その後にアドレスバッファを送信し、（２）ＮＡＮＤフラッシュメモリ１４ａがリクエストされた情報を抽出するのを待機し、（３）ＮＡＮＤフラッシュメモリ１４ａからバッファメモリの１つにデータブロックを転送し、（４）ＥＣＣ復号化（すなわち、誤り訂正）、（５）解読、及び（６）バッファメモリ４０ａ，４０ｂからバスへのデータブロックのＤＭＡ転送の各ステージを伴う。解読及びＥＣＣ復号化は、バッファメモリの１つにおけるデータの置換及び／又は追加により実行される。異なるステージが、バッファメモリ４０ａ，４０ｂの異なるものを用いて異なるアクセスリクエストについてパラレルに実行可能である。
【００４５】
一実施例では、パイプライン処理が命令プロセッサ１０により制御される。命令プロセッサ１０は、パイプラインのリクエストの状態を記述した情報を維持する。この情報に基づき、命令プロセッサ１０は、ＤＭＡ回路３６，ＥＣＣ処理回路４２、解読／暗号化処理回路４４及びローカルＤＭＡ回路４６に、あるユニットがフリーになり、パイプラインにおいて当該ユニットの処理対象のリクエストの順番になると、これらのユニットによるデータブロックの処理をトリガーする信号を送信する。命令プロセッサ１０は、データブロックが処理された時点を決定し（例えば、ポーリング又はインタラプトベースにより）、パイプラインにおける各リクエストの状態を記述した情報を更新する。
【００４６】
一実施例では、１つのタイプのリクエストのみが（プログラミング又は読み込み）、一時にパイプライン処理される。第１タイプの１以上のリクエストがパイプライン処理され、第２の異なるタイプのリクエストが受け付けられると、第２タイプのリクエストの処理がスタートする前に、第１タイプの１以上のリクエストを処理するステージがまず終了される。これは、パイプライン処理を簡単化する。
【００４７】
上述した実施例は、本発明を限定するものでなく説明するためのものであり、当業者は添付した請求項の範囲から逸脱することなく他の多数の実施例を設計可能であることに留意すべきである。請求項において、括弧内の参照符号は請求項を限定するものとして解釈されるべきでない。“有する”という用語は、請求項に列記された以外の要素又はステップの存在を排除するものでない。要素に先行する“ある”という用語は、このような要素が複数存在することを排除するものでない。本発明は、複数の異なる要素を有するハードウェアによって、及び／又は適切にプログラムされたプロセッサによって実現可能である。複数の手段を列記した装置の請求項において、これらの手段のいくつかが１つの同一のハードウェアアイテムにより実現されてもよい。ある手段が互いに異なる従属項に記載されているという事実は、これらの手段の組み合わせが効果的に利用可能でないことを示すものでない。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フラッシュメモリ装置にアクセスするためのフラッシュインタフェースポートと、
前記フラッシュインタフェースに接続されるワーキングメモリと、
フラッシュ制御回路と、
前記ワーキングメモリと前記フラッシュ制御回路とに接続される命令プロセッサと、
を有するフラッシュメモリアクセス回路であって、
前記命令プロセッサは、リクエスト処理命令系列を実行することによって前記フラッシュメモリにアクセスするリクエストの処理を実行させるようプログラムされ、
前記命令プロセッサは、インタラプト入力におけるインタラプトの受付に応答して、前記インタラプト前にインタラプトプログラムの命令のコピーが前記ワーキングメモリに格納されたかテストし、前記コピーが格納されていたと判明しなかった場合、前記リクエスト処理命令系列の実行の終了後に前記フラッシュ制御回路に前記ワーキングメモリへの格納のため、前記フラッシュインタフェースを介し前記フラッシュメモリからインタラプトプログラムの命令のコピーをロードさせるロード命令を実行するよう構成され、
前記命令プロセッサは、前記インタラプトが前記リクエスト処理命令系列の実行開始後に行われる場合、前記コピーが以前に格納されていることが判明したか否かに応じて、それぞれ前記リクエスト処理命令系列の実行終了前又は終了後に、前記ワーキングメモリからの前記コピーの命令を実行することによって前記インタラプトを処理するようプログラムされるフラッシュメモリアクセス回路。
【請求項２】
前記フラッシュメモリ装置は、前記フラッシュインタフェースに接続される、請求項１記載のフラッシュメモリアクセス回路。
【請求項３】
前記フラッシュメモリ装置は、ＮＡＮＤフラッシュメモリ装置である、請求項１記載のフラッシュメモリアクセス回路。
【請求項４】
外部通信インタフェースと、
前記外部通信インタフェースと前記ワーキングメモリとの間に接続される通信回路と、
を有し、
前記通信回路は、前記外部通信インタフェースにおけるリクエストの受信に応答して、前記インタラプトを生成するため前記インタラプト入力に接続される、請求項１記載のフラッシュメモリアクセス回路。
【請求項５】
前記命令プロセッサは、前記フラッシュメモリ装置にアクセスするための連続的に受付されるリクエストのキューを表し、前記リクエストが前記キューに追加されたシーケンスにおける前記連続的に受付されるアクセスリクエストの処理を実行させるための複数のリクエスト処理命令系列を実行するようプログラムされ、
前記命令プロセッサは、前記インタラプトに応答して前記コピーが前記ワーキングメモリに検出されない場合、前記インタラプト信号の受付時に前記キューのエンドに前記インタラプトプログラムの命令をロードするリクエストを追加するようプログラムされる、請求項１記載のフラッシュメモリアクセス回路。
【請求項６】
前記命令プロセッサは、前記キューのアクセスリクエストをパイプライン形式に処理させるようプログラムされる、請求項５記載のフラッシュメモリアクセス回路。
【請求項７】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをプログラムするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックの前記フラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの暗号化、及び前記データブロックの誤り訂正符号への符号化の各アクションの少なくとも１つが先行する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストのプログラミングを実行させるようプログラムされる、請求項６記載のフラッシュメモリアクセス回路。
【請求項８】
前記フラッシュ制御回路は、暗号化手段と、誤り訂正符号のためのエンコーダとを有し、
前記命令プロセッサは、前記暗号化手段と前記エンコーダとに、先行するアクセスリクエストのデータブロックのプログラミングと並行してリクエストのデータブロックを処理させるようプログラムされる、請求項６記載のフラッシュメモリアクセス回路。
【請求項９】
前記フラッシュ制御回路は、第１及び第２ローカルメモリを有し、
前記暗号化手段と前記エンコーダの両方が、前記第１及び第２ローカルメモリの１つに接続され、前記フラッシュ制御回路が前記第１及び第２ローカルメモリの他の１つについてデータを前記フラッシュメモリ装置にプログラムする間に、同一のデータブロックを連続的に処理する、請求項８記載のフラッシュメモリアクセス回路。
【請求項１０】
前記アクセスリクエストのそれぞれは、リードリクエストとプログラミングリクエストとを含む複数の異なるタイプのリクエストの１つに属し、
前記命令プロセッサは、追加される各リクエストを前記キューに追加すると、前記追加されたリクエストが前記キューの以前に追加されたリクエストのタイプの１つである第２タイプと異なるタイプの１つである第１タイプであるか検出し、そうである場合、前記追加されたリクエストの処理をスタートさせる前に、前記第２タイプのキューされているすべてのリクエストの処理を終了させるようプログラムされる、請求項５記載のフラッシュメモリアクセス回路。
【請求項１１】
フラッシュメモリ装置にアクセスするためのフラッシュインタフェースポートと、
前記フラッシュインタフェースに接続されるワーキングメモリと、
フラッシュ制御回路と、
前記ワーキングメモリと前記フラッシュ制御回路とに接続される命令プロセッサと、
を有するフラッシュメモリアクセス回路であって、
前記命令プロセッサは、前記フラッシュメモリ装置にアクセスするための連続的に受け付けたリクエストのキューを表し、前記リクエストのそれぞれに応答して、リクエスト処理命令系列を実行するようプログラムされ、
前記リクエスト処理命令は、前記フラッシュ制御回路に前記アクセスリクエストを連続的に処理する各ステージを処理させるためのものであり、
前記命令プロセッサは、前記フラッシュ制御回路が前記リクエストが前記キューに追加されたシーケンスに従ってパイプライン形式により動作させるように、異なるリクエストに対して前記リクエスト処理命令の実行のシーケンスを選択するようプログラムされるフラッシュメモリアクセス回路。
【請求項１２】
前記アクセスリクエストのそれぞれは、リードリクエストとプログラミングリクエストとを含む複数の異なるタイプのリクエストの１つに属し、
前記命令プロセッサは、追加される各リクエストを前記キューに追加すると、前記追加されたリクエストが前記キューの以前に追加されたリクエストのタイプの１つである第２タイプと異なるタイプの１つである第１タイプであるか検出し、そうである場合、前記追加されたリクエストの処理をスタートさせる前に、前記第２タイプのキューされているすべてのリクエストの処理を終了させるようプログラムされる、請求項１１記載のフラッシュメモリアクセス回路。
【請求項１３】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをプログラムするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックのフラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの暗号化、及び前記データブロックの誤り訂正符号への符号化の各アクションの少なくとも１つが先行する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストのプログラミングを実行させるようプログラムされる、請求項１１記載のフラッシュメモリアクセス回路。
【請求項１４】
前記アクセスリクエストが前記フラッシュメモリ装置におけるデータブロックをリードするリクエストであるとき、前記アクセスリクエストの処理は、前記データブロックの前記フラッシュメモリ制御回路へのＤＭＡ転送、前記データブロックの解読、及び前記データブロックの誤り訂正符号に従った復号化の各アクションの少なくとも１つが後続する前記データブロックのプログラミングを有し、
前記命令プロセッサは、前記アクションと、パイプライン形式により実行されるべきデータブロックをプログラムする連続するアクセスリクエストの読み込みを実行させるようプログラムされる、請求項１１記載のフラッシュメモリアクセス回路。
【請求項１５】
命令プロセッサと、フラッシュメモリ装置と、フラッシュ制御回路と、ワーキングメモリとを有するシステムの動作方法であって、
前記フラッシュメモリ装置にインタラプトプログラムの命令を格納させ続けるステップと、
前記命令プロセッサにおいてインタラプト信号を受信するステップと、
を有し、
少なくとも前記インタラプト信号の受信時に前記フラッシュメモリ装置にアクセスするためのリクエストを処理するため、前記命令プロセッサがアクセス命令系列の実行を進捗中であるとき、
当該方法は、
前記インタラプト信号に応答して、前記インタラプトプログラムの命令のコピーが前記ワーキングメモリに格納されているかテストするステップと、
前記コピーが格納されていると判明した場合、前記アクセス命令系列の実行の終了前に、前記コピーからの命令の実行をスタートするステップと、
前記コピーが格納されていると判明しない場合、前記アクセス命令系列の実行を終了し、その後に前記命令プロセッサを利用して、前記フラッシュメモリ装置から前記ワーキングメモリに前記インタラプトプログラムの命令を前記フラッシュ制御回路にロードさせるロード命令を実行し、その後に前記命令プロセッサによる前記ワーキングメモリからの前記インタラプトプログラムのコピーの命令の実行が行われるステップと、
を有する方法。
【請求項１６】
前記フラッシュメモリ装置に対して連続的に受け付けたアクセスリクエストのキューを表すステップと、
前記リクエストが前記キューに追加されたシーケンスにおいて前記アクセスリクエストを処理するステップと、
をさらに有する、請求項１５記載の方法。
【請求項１７】
前記コピーが検出されない場合、前記インタラプト信号の受信時に前記キューのエンドに前記インタラプトプログラムをロードするリクエストを追加するステップをさらに有する、請求項１６記載の方法。
【請求項１８】
前記キューにおいて前記アクセスリクエストをパイプライン形式に処理するステップをさらに有する、請求項１６記載の方法。
【国際調査報告】
2010500682.tif 000007
2010500682.tif 000008
2010500682.tif 000009
2010500682.tif 000010
2010500682.tif 000011