(57)【要約】【課題】ＲＯＭに格納されたデータの修正を効率的に行う。【解決手段】メモリシステムは、第１のデータを格納するＲＯＭ２７と、第１のデータを読み出すためのリードアドレスを生成する主制御部２４と、第１のデータを修正するための第２のデータを格納するＲＡＭ２８と、ＲＯＭ２７及びＲＡＭ２８にアクセスし、かつリードアドレスに基づいて、第１のデータの一部を第２のデータに置き換えたリードデータを主制御部２４に送る比較部２６とを含む。【選択図】      図２
2008009945.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータを格納するＲＯＭ（Read Only Memory）と、
前記第１のデータを読み出すためのリードアドレスを生成する主制御部と、
前記第１のデータを修正するための第２のデータを格納するＲＡＭ（Random Access Memory）と、
前記ＲＯＭ及び前記ＲＡＭにアクセスし、かつ前記リードアドレスに基づいて、前記第１のデータの一部を前記第２のデータに置き換えたリードデータを前記主制御部に送る比較部と
を具備することを特徴とするメモリシステム。
【請求項２】
複数のフラッシュメモリセルを有し、かつ前記第２のデータを格納する記憶領域を含むフラッシュメモリと、
起動時に、前記フラッシュメモリに格納された第２のデータを前記ＲＡＭに送るメモリ制御部をさらに具備することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記フラッシュメモリは、前記第２のデータに対応する比較用アドレスを格納する記憶領域を含み、
前記メモリ制御部は、起動時に、前記フラッシュメモリに格納された比較用アドレスを前記比較部に送り、
前記比較部は、前記リードアドレスを格納する第１のレジスタと、前記比較用アドレスを格納する第２のレジスタと、前記リードアドレスと前記比較用アドレスとを比較する比較回路とを含み、かつこの比較結果に基づいて前記比較用アドレスに対応する第１のデータの一部を前記第２のデータに置き換えることを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記第２のレジスタは、前記第１のデータを修正するための第３のデータを格納し、
前記比較部は、前記第１のデータの一部を前記第２のデータ及び前記第３のデータに置き換えることを特徴とする請求項３に記載のメモリシステム。
【請求項５】
複数の第１のデータを格納するＲＯＭと、
前記複数の第１のデータを読み出すための複数のリードアドレスを生成する主制御部と、
前記複数の第１のデータを修正するための複数の第２のデータを格納するＲＡＭと、
前記複数のリードアドレスを格納する第１のレジスタと、前記複数の第１のデータの一部を前記複数の第２のデータに置き換えるための複数の比較用アドレスと、前記複数の比較用アドレスに対応しかつ一度に置き換えられる第２のデータのサイズを示す複数の第３のデータとをそれぞれが格納する第２のレジスタ群と、前記複数のリードアドレスと前記複数の比較用アドレスとを比較する比較回路とを含み、かつ前記ＲＯＭ及び前記ＲＡＭにアクセスし、かつ前記比較回路による比較結果に基づいて前記複数の第１のデータの一部を前記サイズ分のデータ単位で前記複数の第２のデータに置き換えたリードデータを前記主制御部に送る比較部と
を具備することを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに係り、特にフラッシュメモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
例えばデジタルカメラや携帯電話などに用いられるデータ記憶媒体として、小型のメモリカードが開発されている。このメモリカードは、デジタルカメラや携帯電話などのホスト機器に装着された状態において、ホスト機器との間でデータの送受信を行うことが可能である。
【０００３】
近年の高性能化の要求に伴って、メモリカードに搭載される半導体メモリとして、例えば、電気的に一括消去、書き換えが可能であり、大容量のデータを記憶することができるフラッシュメモリなどの不揮発性半導体メモリが用いられている。
【０００４】
種々あるメモリカードの中には、ＮＡＮＤ型不揮発性半導体メモリとコントローラとを備えたものがある。コントローラは、メモリカード全体の動作を統括的に制御するＣＰＵ（Central Processing Unit）と、ＣＰＵが使用するファームウェアを格納したＲＯＭとを含んで構成される。
【０００５】
例えば、開発していたファームウェアが完成し、出荷に向けてある程度工程が進んだ段階で、不具合解消や改善などのために修正（機能の変更、追加など）を施す必要が生じる場合がある。そのような場合には、コントローラ内のＲＯＭを取り換えなければならないような事態が生じ、メモリカードをリファインするのに膨大な費用や時間がかかってしまう。
【０００６】
この種の関連技術として、ＲＯＭに格納されたファームウェアを修正することができるメモリカードが開示されている（特許文献１参照）。
【特許文献１】特開２００６−１２００８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ＲＯＭに格納されたデータの修正を効率的に行うことが可能なメモリシステムを提供する。
【課題を解決するための手段】
【０００８】
本発明の第１の視点に係るメモリシステムは、第１のデータを格納するＲＯＭ（Read Only Memory）と、前記第１のデータを読み出すためのリードアドレスを生成する主制御部と、前記第１のデータを修正するための第２のデータを格納するＲＡＭ（Random Access Memory）と、前記ＲＯＭ及び前記ＲＡＭにアクセスし、かつ前記リードアドレスに基づいて、前記第１のデータの一部を前記第２のデータに置き換えたリードデータを前記主制御部に送る比較部とを具備する。
【０００９】
本発明の第２の視点に係るメモリシステムは、複数の第１のデータを格納するＲＯＭと、前記複数の第１のデータを読み出すための複数のリードアドレスを生成する主制御部と、前記複数の第１のデータを修正するための複数の第２のデータを格納するＲＡＭと、前記複数のリードアドレスを格納する第１のレジスタと、前記複数の第１のデータの一部を前記複数の第２のデータに置き換えるための複数の比較用アドレスと、前記複数の比較用アドレスに対応しかつ一度に置き換えられる第２のデータのサイズを示す複数の第３のデータとをそれぞれが格納する第２のレジスタ群と、前記複数のリードアドレスと前記複数の比較用アドレスとを比較する比較回路とを含み、かつ前記ＲＯＭ及び前記ＲＡＭにアクセスし、かつ前記比較回路による比較結果に基づいて前記複数の第１のデータの一部を前記サイズ分のデータ単位で前記複数の第２のデータに置き換えたリードデータを前記主制御部に送る比較部とを具備する。
【発明の効果】
【００１０】
本発明によれば、ＲＯＭに格納されたデータの修正を効率的に行うことが可能なメモリシステムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１２】
本実施形態では、メモリシステムの一例として、メモリカードを例に挙げて説明する。図１は、本発明の一実施形態に係るメモリカード２０を説明するブロック図である。このメモリカード２０は、通常、ホスト機器１０に装着されて使用され、ホスト機器１０に対して一種の外部記憶媒体として用いられる。ホスト機器１０としては、画像データ、音楽データ或いはＩＤデータなどの各種データを処理するパーソナルコンピュータ、デジタルカメラ、或いは携帯電話等を含む情報処理装置が挙げられる。
【００１３】
メモリカード２０は、データの書き込み及び消去を電気的に行う、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）の一種であるＮＡＮＤ型フラッシュメモリ２２を備えている。図１では、ＮＡＮＤ型フラッシュメモリ２２が１個よりなる構成としたが、１つ以上のＮＡＮＤ型フラッシュメモリ２２が配置されていてもよい。
【００１４】
ＮＡＮＤ型フラッシュメモリ２２を構成する各フラッシュメモリセル（メモリセルトランジスタ）は、半導体基板上にトンネル絶縁膜を介して電荷蓄積を目的とする浮遊ゲート電極、ゲート間絶縁膜、制御ゲート電極が積層形成されたスタックゲート構造を有している。そして、複数個のメモリセルトランジスタを、隣接するもの同士でソース領域若しくはドレイン領域を共有するような形で列方向に直列接続させ、その両端に選択ゲートトランジスタを配置して、ＮＡＮＤセルユニットが構成される。
【００１５】
このユニットが行方向（ワード線ＷＬの延在方向）に複数個配列されてブロックが構成される。このブロックがデータ消去単位となる。１個のブロックのうち同じワード線ＷＬに接続された複数のメモリセルは１ページとして取り扱われ、このページごとにデータ書き込み及びデータ読み出しが行われる。
【００１６】
メモリカード２０は、ホスト機器１０とＮＡＮＤ型フラッシュメモリ２２との間に設けられ、ホスト機器１０の指示に基づいてＮＡＮＤ型フラッシュメモリ２２を制御するコントローラ２１を備えている。コントローラ２１は、ホストインターフェース部２３、バスマスタ２４、フラッシュメモリ制御部２５、アドレス比較部２６、ＲＯＭ（Read Only Memory）２７、ＲＡＭ（Random Access Memory）２８、及びバス２９を備えている。
【００１７】
ホストインターフェース部２３は、コネクタ（図示せず）を介してホスト機器１０と接続されており、バスマスタ２４の制御のもと、所定のプロトコルに従ってコマンド或いは各種データ等の送受信をホスト機器１０との間で行う機能ブロックである。
【００１８】
バスマスタ（主制御部）２４は、ＣＰＵ（Central Processing Unit）やＤＭＡ（Direct Memory Access）コントローラ等から構成される。バスマスタ２４は、バス２９を介してメモリカード２０全体の動作を統括的に制御するものである。また、バスマスタ２４は、例えばメモリカード２０が電源供給を受けたときに、ＲＯＭ２７等に格納されたファームウェアに基づいてメモリカード２０の基本的な制御を実行する。さらに、バスマスタ２４は、ホスト機器１０からライトコマンド、リードコマンド、或いは消去コマンド等を受け取り、ＮＡＮＤ型フラッシュメモリ２２に対してデータ転送処理を実行する。
【００１９】
フラッシュメモリ制御部２５は、バスを介してＮＡＮＤ型フラッシュメモリ２２に接続されており、ＮＡＮＤ型フラッシュメモリ２２のアクセス制御に必要な一連のメモリアクセス制御を実行する。具体的には、フラッシュメモリ制御部２５は、ＮＡＮＤ型フラッシュメモリ２２に対する、書き込み動作、読み出し動作、或いは消去動作を制御する。
【００２０】
ＲＯＭ２７は、読み出し専用の記憶回路であり、不揮発性メモリである。ＲＯＭ２７には、ファームウェア（制御プログラム）が格納されている。このファームウェアは、メモリカード２０の基本的な制御を行うためのプログラムである。
【００２１】
ＲＡＭ２８は、一時的に情報を格納する揮発性の記憶回路であり、情報の書き換えが自由である。ＲＡＭ２８は、ＮＡＮＤ型フラッシュメモリ２２から読み出されたブート情報の一部を格納する。
【００２２】
次に、アドレス比較部２６の構成について説明する。アドレス比較部２６は、ＲＯＭ２７及びＲＡＭ２８にアクセスし、ＲＯＭ２７及びＲＡＭ２８等に格納されたデータをバスマスタ２４に送る。図２は、アドレス比較部２６の構成を中心に示したブロック図である。アドレス比較部２６は、レジスタ３０、レジスタ群３１、比較回路３２、アドレス変換回路３３、第１のセレクタ３４、及び第２のセレクタ３５を備えている。
【００２３】
レジスタ３０は、バスマスタ２４から送られるリードアドレスを一時的に格納する。また、レジスタ３０は、バスマスタ２４から送られるリードアドレスが更新されると、この更新されたリードアドレスを一時的に格納する。
【００２４】
レジスタ群３１は、複数のレジスタから構成される。レジスタ群３１の各レジスタは、ＮＡＮＤ型フラッシュメモリ２２から送られるブート情報の一部を一時的に格納する。ここで、図２に示すように、ＮＡＮＤ型フラッシュメモリ２２は、メモリカード２０の起動時に必要なブート情報を格納するための記憶領域２２Ａを備えている。
【００２５】
ブート情報には、比較用アドレスと、起動時（電源投入時）にＲＯＭ２７に格納されたデータ（ファームウェア）の一部と置き換えられる修正用データ（例えば修正用のファームウェア）と、各種フラグとが含まれる。このブート情報は、ホスト機器１０がコントローラ２１を介して自由に書き換えることができる。
【００２６】
比較回路３２は、レジスタ３０に格納されたリードアドレスと、レジスタ群３１に格納された比較用アドレスとを比較する。そして、比較回路３２は、リードアドレスと比較用アドレスとが同じであるか否かを示す制御信号をセレクタ３５に送る。
【００２７】
アドレス変換回路３３は、ＲＯＭ２７を基準にして設定されたアドレスを、ＲＡＭ２８を基準にしたアドレスに変換する。すなわち、レジスタ群３１から送られる比較用アドレスは、ＲＯＭ２７のアドレスを基準に設定されている。よって、アドレス変換回路３３は、ＲＯＭ２７のアドレスに対応した修正用データをＲＡＭ２８から読み出すために、アドレス変換動作を実行する。
【００２８】
第１のセレクタ３４の２つの入力端子にはそれぞれ、レジスタ群３１に格納された修正用データと、ＲＡＭ２８に格納された修正用データとが入力される。また、第１のセレクタ３４の制御端子には、制御信号（後述するデータフラグ（ＤＢＩＴ））が入力される。第１のセレクタ３４は、この制御信号に基づいて、入力された２つのデータの一方を選択して出力する。
【００２９】
第２のセレクタ３５の２つの入力端子にはそれぞれ、第１のセレクタ３４から送られた修正用データと、ＲＯＭ２７から送られたデータとが入力される。また、第２のセレクタ３５の制御端子には、比較回路３２から送られる制御信号が入力される。第２のセレクタ３５は、この制御信号に基づいて、入力された２つのデータの一方を選択して出力する。
【００３０】
このように構成されたメモリカード２０の動作について説明する。メモリカード２０が起動される（例えば、ホスト機器１０によりメモリカード２０に電源が投入される）と、バスマスタ２４は、ＲＯＭ２７からリードデータ（具体的には、ファームウェア）を読み出すために、このリードデータに対応するリードアドレスを生成する。このリードアドレスは、アドレス比較部２６に送られる。
【００３１】
また、メモリカード２０が起動されると、フラッシュメモリ制御部２５は、ＮＡＮＤ型フラッシュメモリ２２からブート情報を読み出す。このブート情報は、アドレス比較部２６及びＲＡＭ２８に送られる。
【００３２】
図３は、レジスタ群３１に含まれる各レジスタに格納されるデータの構成を説明する図である。各レジスタに格納されるデータは、アドレスフラグ（ＡＢＩＴ）、データフラグ（ＤＢＩＴ）、比較用アドレス（ＡＤＤＲ）、及びサイズ／データ（ＳＩＺＥ／ＤＡＴＡ）から構成される。すなわち、ブート情報には、比較用アドレス及び修正用データ以外にも、アドレスフラグ（ＡＢＩＴ）、データフラグ（ＤＢＩＴ）、及びサイズ／データ（ＳＩＺＥ／ＤＡＴＡ）が含まれる。
【００３３】
図４は、レジスタ群３１に格納されるデータの内容を説明する図である。ＡＢＩＴは、レジスタ３０に格納されたリードアドレスとレジスタ群３１に格納されたＡＤＤＲとの比較を行うか否かを識別するために用いられる。ＡＢＩＴ＝０のときは、アドレス比較部２６（具体的には、比較回路３２）は、アドレス比較を行わない。この場合、アドレス比較部２６は、リードアドレスに対応したＲＯＭ２７に格納されたデータをリードデータとして使用する。一方、ＡＢＩＴ＝１のときは、アドレス比較部２６は、アドレス比較を行う。この場合、アドレス比較部２６は、修正用データをリードデータとして使用する。
【００３４】
ＤＢＩＴは、ＲＡＭ２８に格納された修正用データとＳＩＺＥ／ＤＡＴＡ部に格納された修正用データとのどちらを使用するかを識別するために用いられる。ＤＢＩＴ＝０のときは、アドレス比較部２６は、ＲＡＭ２８に格納された修正用データをリードデータとして使用する。ＤＢＩＴ＝１のときは、アドレス比較部２６は、ＳＩＺＥ／ＤＡＴＡ部に格納された修正用データをリードデータとして使用する。
【００３５】
ＡＤＤＲは、ＡＢＩＴ＝１のときに、バスマスタ２４から送られるリードアドレスとの比較に使用される比較用アドレスである。
【００３６】
ＳＩＺＥ／ＤＡＴＡは、データのサイズを示す情報、或いは修正用データとして使用される。すなわち、ＤＢＩＴ＝０のときは、ＳＩＺＥ／ＤＡＴＡは、ＲＡＭ２８に格納された修正用データのうち読み出されるデータサイズを示す。一方、ＤＢＩＴ＝１のときは、ＳＩＺＥ／ＤＡＴＡは、修正用データとして使用される。なお、レジスタ群３１に含まれる各レジスタの初期値は、「ＡＢＩＴ＝０、ＤＢＩＴ＝０、ＡＤＤＲ＝Don’t care、ＳＩＺＥ／ＤＡＴＡ＝Don’t care」である。
【００３７】
ここで、ＮＡＮＤ型フラッシュメモリ２２から読み出されたブート情報に含まれる修正用データは、ＲＡＭ２８にも格納される。本実施形態では、ＮＡＮＤ型フラッシュメモリ２２に格納された修正用データのうちデータサイズの大きい修正用データは、ＲＡＭ２８に格納される。一方、データサイズの小さい修正用データは、レジスタ群３１に格納される。データサイズの大きい修正用データと小さい修正用データとの境界は、レジスタ群３１に含まれる各レジスタの記憶容量に基づいて設定される。
【００３８】
なお、修正用データを全てＲＡＭ２８に格納するようにしてもよい。この場合、レジスタ群３１のＳＩＺＥ／ＤＡＴＡには、ＲＡＭ２８に格納された修正用データのうち読み出されるデータサイズを示す情報のみが格納される。
【００３９】
本実施形態では、バスマスタ２４から送られたリードアドレスに対応するリードデータは、ＲＯＭ２７、ＲＡＭ２８、或いはレジスタ群３１から出力される。すなわち、リードデータは、３パターンのデータパスを用いてアドレス比較部２６からバスマスタ２４に送られる。図５は、リードデータのデータパスを説明する図である。第１乃至３のデータパスは、レジスタ群３１に含まれる任意のレジスタ３１−ｎに格納されたＡＢＩＴとＤＢＩＴとの組み合わせにより決定される。
【００４０】
[第１のデータパス]
「ＡＢＩＴ＝０、ＤＢＩＴ＝Ｘ（Don’t care）」のときには、第１のデータパスが選択される。この場合、比較回路３２によりアドレス比較が行われず、ＡＤＤＲ及びＳＩＺＥ／ＤＡＴＡのデータも使用されない。セレクタ３５は、ＲＯＭ２７から読み出されたリードデータを選択する。この結果、アドレス比較部２６は、ＲＯＭ２７に格納されたデータのうちリードアドレスに対応するデータをリードデータとしてバスマスタ２４に送る。
【００４１】
[第２のデータパス]
「ＡＢＩＴ＝１、ＤＢＩＴ＝０」のときには、第２のデータパスが選択される。この場合、レジスタ３１−ｎは、このレジスタ３１−ｎに格納されたアドレスＡＤＤＲと、ＳＩＺＥ／ＤＡＴＡ部に格納されたデータサイズを表す情報とをアドレス変換回路３３に送る。
【００４２】
アドレス変換回路３３は、ＲＯＭ２７を基準にして設定されたアドレスＡＤＤＲを、ＲＡＭ２８を基準にしたアドレスに変換する。すなわち、ＲＯＭ２７を基準にして設定されたアドレスＡＤＤＲは、不連続な場合が多い。したがって、ＲＡＭ２８は、格納する修正用データを独自の連続したアドレスに対応付けて格納している。このため、アドレス変換回路３３は、アドレスＡＤＤＲに対応する修正用データをＲＡＭ２８から読み出すために、アドレスの変換を行っている。
【００４３】
アドレス変換回路３３は、この変換されたアドレスとデータサイズを表す情報とをＲＡＭ２８に送る。これにより、アドレスＡＤＤＲを先頭アドレスとしてＳＩＺＥ／ＤＡＴＡ部のサイズ分の修正用データが、ＲＡＭ２８から読み出される。ＲＡＭ２８から読み出された修正用データは、セレクタ３４に送られる。セレクタ３４は、「ＤＢＩＴ＝０」の場合、ＲＡＭ２８から送られた修正用データを選択して出力する。
【００４４】
また、比較回路３２は、レジスタ３０に格納されたリードアドレスと、レジスタ３１−ｎに格納された比較用アドレスとを比較する。そして、比較回路３２は、リードアドレスと比較用アドレスとが同じである場合、セレクタ３４から送られたデータを選択するための制御信号をセレクタ３５に送る。この結果、アドレス比較部２６は、ＲＡＭ２８に格納され、かつ、ＡＤＤＲを先頭アドレスとしてＳＩＺＥ／ＤＡＴＡ部のサイズ分の修正用データをリードデータとしてバスマスタ２４に送る。
【００４５】
[第３のデータパス]
「ＡＢＩＴ＝１、ＤＢＩＴ＝１」のときには、第３のデータパスが選択される。この場合、レジスタ３１−ｎは、このレジスタ３１−ｎのＳＩＺＥ／ＤＡＴＡ部に格納された修正用データをセレクタ３４に送る。セレクタ３４は、「ＤＢＩＴ＝１」の場合、レジスタ３１−ｎから送られたデータを選択して出力する。前述したように、第３のデータパスを用いて送られる修正用データとしては、ＲＡＭ２８に格納されたデータよりもデータサイズの小さいデータが使用される。
【００４６】
比較回路３２は、レジスタ３０に格納されたリードアドレスと、レジスタ３１−ｎに格納された比較用アドレスとを比較する。そして、比較回路３２は、リードアドレスと比較用アドレスとが同じである場合、セレクタ３４から送られたデータを選択するための制御信号をセレクタ３５に供給する。この結果、アドレス比較部２６は、レジスタ３１−ｎのＳＩＺＥ／ＤＡＴＡ部に格納された修正用データをリードデータとしてバスマスタ２４に送る。
【００４７】
次に、アドレス比較部２６のより具体的な動作の一例について説明する。図６は、レジスタ群３１に格納されたデータの一例を示す図である。図７は、ＲＯＭ２７に格納されたデータの一例を示す図である。図８は、ＲＡＭ２８に格納された修正用データの一例を示す図である。図９は、アドレス比較部２６から出力されるリードデータの一例を示す図である。ＲＯＭデータ、ＲＡＭデータ、及びリードデータのデータ幅はそれぞれ１６ビット（２バイト）である。
【００４８】
レジスタ群３１は、第１のレジスタ３１−１、第２のレジスタ３１−２、及び第３のレジスタ３１−３を含んでいる。第１のレジスタ３１−１には「ＡＢＩＴ＝１、ＤＢＩＴ＝０」が格納されている。よって、アドレス比較部２６は、ＲＡＭ２８に格納されたデータのうちリードアドレスに対応するデータを出力する。
【００４９】
具体的には、第１のレジスタ３１−１には「ＳＩＺＥ／ＤＡＴＡ＝０ｘ０００４」が格納されている。ここで、「０ｘ０００４」は、データサイズが４バイトであることを示している。したがって、ＲＡＭデータ幅が１６ビットであるので２アドレス分のデータがＲＡＭ２８から読み出される。
【００５０】
また、第１のレジスタ３１−１には「ＡＤＤＲ＝０ｘ０００４」が格納されているので、アドレス「０ｘ０００４」を先頭アドレスとして、アドレス「０ｘ０００４」及び「０ｘ０００６」のＲＯＭデータの換わりにＲＡＭデータがリードデータとしてアドレス比較部２６から出力される。
【００５１】
次に、第２のレジスタ３１−２には「ＡＢＩＴ＝１、ＤＢＩＴ＝１」が格納されている。よって、アドレス比較部２６は、レジスタ３１−２のＳＩＺＥ／ＤＡＴＡ部の修正用データを出力する。本例では、データサイズが２バイト以下の修正用データがレジスタ群３１に格納される。
【００５２】
具体的には、第２のレジスタ３１−２には「ＡＤＤＲ＝０ｘ０００ａ」が格納されている。よって、アドレス「０ｘ０００ａ」のＲＯＭデータの換わりに、第２のレジスタ３１−２のＳＩＺＥ／ＤＡＴＡ部の修正用データ「０ｘａａａａ」がリードデータとしてアドレス比較部２６から出力される。
【００５３】
次に、第３のレジスタ３１−３には「ＡＢＩＴ＝０」が格納されている。よって、ＲＯＭ２７に格納されたデータがそのままアドレス比較部２６から出力される。具体的には、上記アドレス「０ｘ０００４」、「０ｘ０００６」及び「０ｘ０００ａ」以外では、アドレス比較部２６は、ＲＯＭ２７に格納されたデータを出力する。
【００５４】
以上詳述したように本実施形態では、メモリカード２０は、ＲＯＭ２７とＲＡＭ２８とにアクセスできるアドレス比較部２６を備えている。そして、アドレス比較部２６は、ＲＯＭ２７に格納されたデータの一部をＲＡＭ２８に格納された修正用データに置き換えたリ−ドデータをバスマスタ２４に送るようにしている。さらに、アドレス比較部２６は、データサイズの小さい修正用データは、ＲＡＭ２８に格納せずに、レジスタ群３１に格納するようにしている。そして、アドレス比較部２６は、ＲＯＭ２７に格納されたデータの一部をレジスタ群３１に格納された修正用データに置き換えたリ−ドデータをバスマスタ２４に送るようにしている。
【００５５】
したがって本実施形態によれば、製品の出荷前や出荷後においてファームウェアの機能修正を施す必要が生じても、コントローラ２１内のＲＯＭ２７を取り換えたりする必要がなく、効率的に所望の機能修正を実現することができる。これにより、メモリカード２０をリファインするのに必要な費用や時間を大幅に削減することができる。
【００５６】
また、ＣＰＵ等から構成されるバスマスタ２４から見れば、ＲＯＭ２７からリードデータを読み出したのと同等になる。これにより、バスマスタ２４の負荷を低減することができる。
【００５７】
また、ブート情報をＮＡＮＤ型フラッシュメモリ２２の記憶領域２２Ａに格納している。このため、ブート情報を自由に書き換えることができる。これにより、費用や時間をかけずに、ファームウェアの機能修正を何度でも行うことが可能となる。
【００５８】
なお、上記実施形態の説明では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例に挙げて説明したが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限られず、他の種類のメモリを適用してもよい。
【００５９】
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態に係るメモリカード２０を説明するブロック図。
【図２】図１に示したアドレス比較部２６の構成を中心に示したブロック図。
【図３】レジスタ群３１に含まれる各レジスタに格納されるデータの構成を説明する図。
【図４】レジスタ群３１に格納されるデータの内容を説明する図。
【図５】バスマスタ２４に送られるリードデータのデータパスを説明する図。
【図６】レジスタ群３１に格納されたデータの一例を示す図。
【図７】ＲＯＭ２７に格納されたデータの一例を示す図。
【図８】ＲＡＭ２８に格納された修正用データの一例を示す図。
【図９】アドレス比較部２６から出力されるリードデータの一例を示す図。
【符号の説明】
【００６１】
１０…ホスト機器、２０…メモリカード、２１…コントローラ、２２…ＮＡＮＤ型フラッシュメモリ、２２Ａ…記憶領域、２３…ホストインターフェース部、２４…バスマスタ、２５…フラッシュメモリ制御部、２６…アドレス比較部、２７…ＲＯＭ、２８…ＲＡＭ、２９…バス、３０…レジスタ、３１…レジスタ群、３２…比較回路、３３…アドレス変換回路、３４…第１のセレクタ、３５…第２のセレクタ。
【図１】
2008009945.tif 000003
【図２】
2008009945.tif 000004
【図３】
2008009945.tif 000005
【図４】
2008009945.tif 000006
【図５】
2008009945.tif 000007
【図６】
2008009945.tif 000008
【図７】
2008009945.tif 000009
【図８】
2008009945.tif 000010
【図９】
2008009945.tif 000011