(57)【要約】【課題】  安価なＮＡＮＤ型フラッシュメモリからのブートを可能にし、情報処理装置のコストの低減を図ることである。【解決手段】  データエラーが発生しない信頼性の高い第１の領域とデータエラーが発生する可能性がある信頼性の低い第２の領域とを含む不揮発性メモリと、揮発性メモリと、演算手段とを有する。不揮発性メモリの第２の領域に情報処理装置制御プログラムを格納している。不揮発性メモリの第１の領域に、ハードウェアを初期化するためのハードウェア初期化プログラムと、第２の領域の情報処理装置制御プログラムを揮発性メモリに書き込むためのローダープログラムとを格納している。【選択図】  図２
2005208747.tif 000002
【特許請求の範囲】
【請求項１】
データエラーが発生しない信頼性の高い第１の領域とデータエラーが発生する可能性がある信頼性の低い第２の領域とを含む不揮発性メモリと、
揮発性メモリと、
演算手段とを有し、
前記不揮発性メモリの第２の領域に情報処理装置制御プログラムを格納しており、
前記不揮発性メモリの第１の領域に、ハードウェアを初期化するためのハードウェア初期化プログラムと、前記第２の領域の情報処理装置制御プログラムを前記揮発性メモリに書き込むためのローダープログラムとを格納しており、
前記演算手段は、前記ハードウェア初期化プログラムを実行することによりハードウェアの初期化を行い、前記ローダープログラムを実行することにより前記第２の領域に格納されている情報処理装置制御プログラムを前記揮発性メモリに書き込み、前記揮発性メモリ上に書き込まれた情報処理装置制御プログラムを実行することを特徴とする情報処理装置。
【請求項２】
前記ローダープログラムは、データ読み込み時のデータエラーを検出し、データエラーを訂正するためのエラー訂正プログラムを含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ハードウェア初期化プログラム及び前記ローダープログラムは、分岐命令が少なくなるようにプログラミングされていることを特徴とする請求項１記載の情報処理装置。
【請求項４】
さらに、前記不揮発性メモリに、前記第２の領域の前記情報処理装置制御プログラムを書き換えるための書き換えプログラムを格納しており、
前記演算手段は、前記書き換えプログラムを実行することにより前記第２の領域の情報処理装置制御プログラムのみ書き換え、前記第１の領域は書き換えないことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記演算手段は、前記書き換えプログラムが前記第２の領域内の書き換えプログラム格納領域に格納されていた場合、前記書き換えプログラムを実行することにより、前記書き換えプログラム格納領域は書き換えず、前記情報処理装置制御プログラムが格納されている領域のみ書き換えることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記ローダープログラムは、前記第１の領域から前記揮発性メモリ上に転送され、前記揮発性メモリ上で実行されることを特徴とする請求項１記載の情報処理装置。
【請求項７】
さらに、命令コード格納用の命令バッファと、
前記演算手段から前記不揮発性メモリへのフェッチアクセスの際に、前記命令バッファ内に対象の命令コードが存在する場合は、前記命令バッファから対象の命令コードを読み出して前記演算手段に出力し、前記命令バッファ内に対象の命令コードが存在しない場合は、その命令コードを含む１ページの命令コードを前記不揮発性メモリから前記命令バッファに転送し、前記命令バッファから対象の命令コードを読み出して前記演算手段に出力する不揮発性メモリ制御手段とを有することを特徴とする請求項１記載の情報処理装置。
【請求項８】
さらに、データ格納用のデータバッファと、
前記演算手段に指定された前記不揮発性メモリのデータを前記データバッファに転送する不揮発性メモリ制御手段とを有することを特徴とする請求項１記載の情報処理装置。
【請求項９】
さらに、データ格納用のデータバッファを有し、
前記演算手段が直接アクセスしない前記不揮発性メモリの領域は前記演算手段にマッピングされないことを特徴とする請求項１記載の情報処理装置。
【請求項１０】
さらに、データ及び命令コード格納用のデータ命令兼用バッファと、
データ命令兼用バッファの初期状態は命令バッファとして使用し、前記演算手段から前記不揮発性メモリへのフェッチアクセスの際に、前記データ命令兼用バッファ内に対象の命令コードが存在する場合は、前記データ命令兼用バッファから対象の命令コードを読み出して前記演算手段に出力し、前記データ命令兼用バッファ内に対象の命令コードが存在しない場合は、その命令コードを含む１ページの命令コードを前記不揮発性メモリから前記データ命令兼用バッファに転送し、前記データ命令兼用バッファから対象の命令コードを読み出して前記演算手段に出力し、さらに前記データ命令兼用バッファがデータバッファに切り替えられた際は、前記演算手段に指定された前記不揮発性メモリのデータを前記データバッファに転送する不揮発性メモリ制御手段とを有することを特徴とする請求項１記載の情報処理装置。
【請求項１１】
さらに、データ格納用のデータバッファと、
データ及び命令コード格納用のデータ命令兼用バッファと、
前記不揮発性メモリ上でプログラムが実行されているときは、前記データ命令兼用バッファを命令バッファとして使用し、前記揮発性メモリ上でプログラムが実行されているときは、前記データ命令兼用バッファをデータバッファとして使用する不揮発性メモリ制御手段とを有することを特徴とする請求項１記載の情報処理装置。
【請求項１２】
前記不揮発性メモリは、ＮＡＮＤ型フラッシュメモリ又はＡＮＤ型フラッシュメモリであることを特徴とする請求項１記載の情報処理装置。
【請求項１３】
前記ハードウェア初期化プログラムは、前記揮発性メモリ又は前記演算手段の初期化を行なうためのプログラムであることを特徴とする請求項１記載の情報処理装置。
【請求項１４】
前記揮発性メモリは、ＤＲＡＭであることを特徴とする請求項１記載の情報処理装置。
【請求項１５】
データエラーが発生しない信頼性の高い第１の領域とデータエラーが発生する可能性がある信頼性の低い第２の領域とを含む不揮発性メモリと、揮発性メモリとを有し、前記不揮発性メモリの第２の領域に情報処理装置制御プログラムを格納し、前記不揮発性メモリの第１の領域に、ハードウェアを初期化するためのハードウェア初期化プログラムと、前記第２の領域の情報処理装置制御プログラムを前記揮発性メモリに書き込むためのローダープログラムとを格納する情報処理装置の情報処理方法であって、
前記ハードウェア初期化プログラムを実行することによりハードウェアの初期化を行うステップと、
前記ローダープログラムを実行することにより前記第２の領域に格納されている情報処理装置制御プログラムを前記揮発性メモリに書き込むステップと、
前記揮発性メモリ上に書き込まれた情報処理装置制御プログラムを実行するステップと
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関するものである。
【背景技術】
【０００２】
従来、マイクロプロセッサのプログラムコードを格納可能であり、その格納内容を電気的に書き換えることが可能なメモリとしてＮＯＲ型のフラッシュメモリが使われている（例えば、特許文献１を参照）。
【０００３】
一方、データストレージ用として使用されているＮＡＮＤ型フラッシュメモリは非常に安価である。
【０００４】
【特許文献１】特開平07-093980号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来の技術では、ＮＯＲ型フラッシュメモリが高価であるという課題があった。
【０００６】
またＮＡＮＤ型フラッシュメモリはその構造上の問題から稀にビットエラーが発生するという問題がある。そのため発生したエラーに対してＥＣＣ等のエラー訂正が必要であり、ハードウェアによるエラー訂正は、エラー訂正アルゴリズムが複雑なため大規模な回路を必要とした。また、書き換え回数を制限することによりある領域(ファーストブロック)のみビットエラーが発生しないことが保証されているが、ファーストブロックは８ＫＢ程度と容量が小さくプログラムの格納には不十分な容量であった。さらにＮＡＮＤ型フラッシュメモリはランダムアクセスが非常に遅くプログラムを実行させるとパフォーマンスが低下する等の課題が存在した。
【０００７】
本発明の目的は、安価なＮＡＮＤ型フラッシュメモリからのブートを可能にし、情報処理装置のコストの低減を図ることである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、データエラーが発生しない信頼性の高い第１の領域とデータエラーが発生する可能性がある信頼性の低い第２の領域とを含む不揮発性メモリと、揮発性メモリと、演算手段とを有し、前記不揮発性メモリの第２の領域に情報処理装置制御プログラムを格納しており、前記不揮発性メモリの第１の領域に、ハードウェアを初期化するためのハードウェア初期化プログラムと、前記第２の領域の情報処理装置制御プログラムを前記揮発性メモリに書き込むためのローダープログラムとを格納しており、前記演算手段は、前記ハードウェア初期化プログラムを実行することによりハードウェアの初期化を行い、前記ローダープログラムを実行することにより前記第２の領域に格納されている情報処理装置制御プログラムを前記揮発性メモリに書き込み、前記揮発性メモリ上に書き込まれた情報処理装置制御プログラムを実行することを特徴とする。
本発明の情報処理方法は、データエラーが発生しない信頼性の高い第１の領域とデータエラーが発生する可能性がある信頼性の低い第２の領域とを含む不揮発性メモリと、揮発性メモリとを有し、前記不揮発性メモリの第２の領域に情報処理装置制御プログラムを格納し、前記不揮発性メモリの第１の領域に、ハードウェアを初期化するためのハードウェア初期化プログラムと、前記第２の領域の情報処理装置制御プログラムを前記揮発性メモリに書き込むためのローダープログラムとを格納する情報処理装置の情報処理方法であって、前記ハードウェア初期化プログラムを実行することによりハードウェアの初期化を行うステップと、前記ローダープログラムを実行することにより前記第２の領域に格納されている情報処理装置制御プログラムを前記揮発性メモリに書き込むステップと、前記揮発性メモリ上に書き込まれた情報処理装置制御プログラムを実行するステップとを有することを特徴とする。
【発明の効果】
【０００９】
ハードウェア初期化プログラム及びローダープログラムは、書き換え不可又は書き換え回数が少ないので、不揮発性メモリの信頼性の高い第１の領域に格納する。情報処理装置制御プログラムは、書き換え可能又は書き換え回数が多いので、不揮発性メモリの信頼性の低い第２の領域に格納する。これにより、安価な不揮発性メモリからのブートを可能にし、情報処理装置のコストを下げることができる。
【発明を実施するための最良の形態】
【００１０】
以下添付図面を参照して、本発明に係る好適な実施形態を、印刷装置を例に詳細に説明する。
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態の特徴を最もよく表わす図面であり、同図において、１００は印刷装置（情報処理装置）、２００はホストコンピュータである。ホストコンピュータ２００は、印刷装置１００に接続され、印刷装置１００を制御する。
【００１２】
以下、印刷装置１００の構成を説明する。１０１は印刷装置１００全体の制御を司るＣＰＵ、１０２は電気的消去及び書き込み可能なＮＡＮＤ型フラッシュメモリ（不揮発性メモリ）、１０３はダイナミックランダムアクセスメモリ(ＤＲＡＭ)、１０４はＣＰＵ１０１と各機能ブロックのインターフェースを行なうＣＰＵインターフェース部、１０５はＮＡＮＤ型フラッシュメモリ１０２のアクセス制御を行なうＮＡＮＤフラッシュ制御部、１０６はＤＲＡＭ１０３のアクセス制御を行なうＤＲＡＭ制御部、１０７はホストコンピュータ２００と通信を行なうホストインターフェース部、１０８はビットマップ画像を生成する画像展開部、１０９はＤＲＡＭ１０３上に展開された画像データをシリアルのビデオ信号に変換するビデオインターフェース部、１２０はプリンタエンジンである。
【００１３】
不揮発性メモリ１０２は、例えばＮＡＮＤ型フラッシュメモリ又はＡＮＤ型フラッシュメモリであり、電源を切っても記憶した内容が保存されるメモリである。揮発性メモリ１０３は、例えばＤＲＡＭであり、電源が入っているときだけ記憶した内容が保存されるメモリである。
【００１４】
図２にはＮＡＮＤ型フラッシュメモリ１０２に格納されているプログラムコードを示す。ＮＡＮＤ型フラッシュメモリ１０２は、読み出しデータエラーが発生しない高信頼性の領域１と、読み出しデータエラーが発生する可能性がある低信頼性の領域２と、同じく読み出しデータエラーが発生する可能性がある低信頼性の領域３とに分割し、各々の領域には以下のプログラムコードを格納する。
【００１５】
領域１：
・ＣＰＵ及びＤＲＡＭのハードウェア初期化プログラム
・領域２／領域３に格納されているプログラムコードをＤＲＡＭ上に書き込むためのローダープログラム
・ＥＣＣによるエラー訂正プログラム
【００１６】
領域２：
・領域３（印刷装置制御プログラム）書き換えプログラム
【００１７】
領域３：
・印刷装置制御プログラム
【００１８】
上記ローダープログラムは、領域２及び３に格納されているプログラムコードをＤＲＡＭ１０３上にコピーする。エラー訂正プログラムは、ＥＣＣにより、データ読み込み時のデータエラーを検出し、データエラーを訂正する。上記のローダープログラム及びエラー訂正プログラムは組であり、ローダープログラムは、エラー訂正プログラムを含む。
【００１９】
印刷装置制御プログラム書き換えプログラムは、領域３の印刷装置制御プログラムを書き換えるためのプログラムである。ＣＰＵは、書き換えプログラムを実行することにより、領域１及び領域２は書き換えず、印刷装置制御プログラムが格納されている領域３のみ書き換える。なお、書き換えプログラムは、領域２ではなく、領域１に格納してもよい。
【００２０】
ＮＡＮＤ型フラッシュメモリ１０２において、領域１及び領域２は書き換え不可の領域であり、領域３は書き換え可能な領域である。なお、ＮＡＮＤ型フラッシュメモリ１０２は、メモリセルアレイと５２８バイトのデータレジスタから構成されており、データのリードライトはメモリセルアレイと直接行なうことはなく、必ずデータレジスタを介して行なわれる。例えば０番地のデータをリードする場合、０番地のデータを含む１ページ分(５２８バイト)のデータがデータレジスタに転送された後、読み出される。従って、データレジスタの更新が発生するアクセスはこの転送のための時間が必要でありアクセス時間がかかってしまうという特徴がある。
【００２１】
そこで、領域１のプログラムは分岐命令を少なくする等、できるだけデータレジスタの更新が発生しないようにプログラミングされている。
【００２２】
なお、上記プログラムコードは前もってＲＯＭプログラマー(図示せず)等により格納されるものとする。
【００２３】
また、ＣＰＵインターフェース部１０４は、ＮＡＮＤ型フラッシュメモリ１０２の各領域とＤＲＡＭ１０３の領域を図４に示すようにＣＰＵ１０１にマッピングする。そしてそのデフォルト状態でＣＰＵのブートアドレスを上記領域１に割り当てるように動作する。
【００２４】
そして上記図１の構成におけるＣＰＵ１０１からのアクセス動作を説明する。印刷装置１００の電源が投入され、リセットが解除されたら、ＣＰＵ１０１は最初のプログラムフェッチを行なうためにＣＰＵインターフェース部１０４に対してブートアクセスを発生する。ＣＰＵインターフェース部１０４はアドレスをデコードし、ブートアドレスと判断するとＮＡＮＤフラッシュ制御部１０５に対してリードアクセスを発行する。ＮＡＮＤフラッシュ制御部１０５はこれを受信しＮＡＮＤ型フラッシュメモリ１０２に対してリードアクセスする。そしてリードデータを受信しＣＰＵ１０１にデータを送信する。また、ＣＰＵ１０１がＤＲＡＭ１０３にアクセスする場合はＣＰＵインターフェース部１０４がＤＲＡＭ制御部１０６にアクセスし、ＤＲＡＭ制御部１０６では、ホストインターフェース１０７等のＤＭＡアクセスとの調停を行い、ＤＲＡＭ１０３にアクセスする。
【００２５】
次に上記構成における動作を図３のフローチャートにて説明する。
印刷装置の電源が投入され、リセットが解除されたら、ＣＰＵ１０１はブートアクセスにより、ＮＡＮＤ型フラッシュメモリ１０２上の領域１に格納されているＣＰＵ及びＤＲＡＭの初期化プログラムを実行し、ＣＰＵ及びＤＲＡＭの初期化を行なう（Ｓ３０１）。
【００２６】
次に領域１に格納されているローダープログラムを実行し、ＮＡＮＤ型フラッシュメモリ１０２上の領域２と領域３に格納されているプログラムコードをＤＲＡＭ１０３にコピーする。もし領域２／領域３のコードの読み出し時にデータエラーを検出した場合は、エラー訂正プログラムによりエラー訂正を行なう（Ｓ３０２）。
【００２７】
次にＤＲＡＭ１０３上の「印刷装置制御プログラム」が書き込まれた領域にジャンプし、印刷装置の制御を開始する（Ｓ３０３）。
【００２８】
そして印刷装置の制御中にＮＡＮＤ型フラッシュメモリ１０２の領域３「印刷装置制御プログラム」の書き換え要求があった場合は（Ｓ３０４）、ＤＲＡＭ１０３上の「印刷装置制御プログラム書き換えプログラム」が書き込まれた領域にジャンプし、ＮＡＮＤ型フラッシュメモリ１０２の領域３の書き換えを実行する（Ｓ３０５）。
【００２９】
（第２の実施形態）
ＮＡＮＤ型フラッシュメモリは、内部データレジスタの更新を伴うアクセスが発生した場合に、非常にアクセススピードが遅くなってしまうという特徴があり、上記第１の実施形態では、領域２及び領域３の内容をＤＲＡＭにコピーするローダープログラムはＮＡＮＤ型フラッシュメモリ上で直接実行される。するとＣＰＵのフェッチによるアクセスと領域２及び領域３を読み出すアクセスが交互に発生し、それら各々は別の領域であるため内部データレジスタが頻繁に更新されることでアクセススピードが遅くなり、ローダープログラムの実行が遅くなってしまう。第２の実施形態はこの課題を解決する方法である。
【００３０】
図５に本発明の第２の実施形態における動作を表すフローチャートを示す。第１の実施形態と同じ動作をする箇所は同じ符号で示しており、第１の実施形態（図３）のステップＳ３０２が第２の実施形態ではステップＳ５０１及びＳ５０２に代わる。
【００３１】
ＣＰＵ及びＤＲＡＭの初期化後、ＣＰＵ１０１はＮＡＮＤ型フラッシュメモリ１０２上の「ローダープログラム」をＤＲＡＭ１０３に書き込む（Ｓ５０１）。
【００３２】
「ローダープログラム」が書き込まれたＤＲＡＭ１０３上の領域にジャンプし、ローダープログラムを実行し、領域２と領域３に格納されているプログラムをＤＲＡＭ１０３上に書き込む。なおデータを読み出し時にエラーが発生した場合は、エラー訂正を行なう（Ｓ５０２）。
【００３３】
以降のステップは第１の実施形態と同じである。
【００３４】
このような動作にすると領域２及び領域３の読み出し時においてＣＰＵ１０１がＮＡＮＤ型フラッシュメモリ１０２にフェッチサイクルを発生させないため内部データレジスタの更新が５２８バイトごとにしか発生しないため、ローダープログラムの実行が高速になる。
【００３５】
（第３の実施形態）
図６に、本発明の第３の実施形態のブロック図を示す。
第１の実施形態と同じ機能モジュールは同じ番号で示している。６０１は命令コード格納用の命令バッファであり、ＮＡＮＤ型フラッシュメモリ１０２の１ページ(５１２バイト)分の容量をもつメモリである。６０２は第１の実施形態のＮＡＮＤフラッシュ制御部にこの命令バッファ６０１の制御機能が追加されたものである。
【００３６】
次にＮＡＮＤフラッシュ制御部６０２の動作を図７のフローチャートを用いて説明する。
ＮＡＮＤフラッシュ制御部６０２はＣＰＵ１０１から命令フェッチアクセスを受信する（Ｓ７０１）と要求された命令コードが命令バッファ６０１に存在するかどうかを判別する（Ｓ７０２）。
【００３７】
存在するときは、命令バッファ６０１から要求された命令コードを読み出し、ＣＰＵ１００に対して返信する（Ｓ７０４）。
【００３８】
存在しないときは、ＮＡＮＤ型フラッシュメモリ１０２から当該命令コードを含む１ページ分のデータを読み出し、命令バッファ６０１に格納する（Ｓ７０３）。そして命令バッファ６０１から要求された命令コードを読み出し、ＣＰＵ１０１に対して返信する（Ｓ７０４）。
【００３９】
このように動作することで、ＣＰＵの命令フェッチ動作が高速になる。また、１ページ(２５６バイト)以内であれば、分岐命令を使用しても高速動作が維持できる。
【００４０】
（第４の実施形態）
図８に、本発明の第４の実施形態のブロック図を示す。
【００４１】
第３の実施形態と同じ機能モジュールは同じ番号で示している。８０１はデータ格納用のデータバッファであり、ＮＡＮＤ型フラッシュメモリ１０２の１ページ(５２８バイト)分の容量をもつメモリである。８０２は第３の実施形態のＮＡＮＤフラッシュ制御部６０２にＮＡＮＤ型フラッシュメモリ１０２から１ページ(５２８バイト)分のデータをＤＭＡでデータバッファ８０１に転送する制御機能が追加されたものである。
【００４２】
ＮＡＮＤ型フラッシュメモリ１０２のデータ格納領域(領域２及び領域３)はデータであるためＣＰＵ１０１に直接マッピングする必要はない。また直接マッピングするとＮＡＮＤ型フラッシュメモリ１０２の容量がＣＰＵ１０１のアドレス空間に限定されてしまう。
【００４３】
そこでＣＰＵ１０１にマッピングするのはデータバッファ８０１の容量分とし、ＮＡＮＤ型フラッシュメモリ１０２へのデータアクセスは必ずデータバッファ８０１を介して行なうことで間接的にマッピングする。ＣＰＵ１０１が直接アクセスしないＮＡＮＤ型フラッシュメモリ１０２の領域はＣＰＵにマッピングされない。
【００４４】
次に本実施形態の動作を図９のフローチャートを用いて説明する。
ＣＰＵ１０１はＮＡＮＤフラッシュ制御部８０２内のアドレスカウントレジスタ(図示せず)に開始アドレスを設定する（Ｓ９０１，Ｓ９０２）。
【００４５】
ＣＰＵ１０１はＮＡＮＤフラッシュ制御部８０２に対してＤＭＡページリードを起動する（Ｓ９０３，Ｓ９０４）。
【００４６】
ＮＡＮＤフラッシュ制御部８０２はＮＡＮＤ型フラッシュメモリ１０２より５２８バイトリードし、データバッファ８０１に格納（転送）する（Ｓ９０５）。
【００４７】
また、その間、ＣＰＵ１０１はＤＭＡページリードの終了を待つ（Ｓ９０６）。
【００４８】
ＮＡＮＤフラッシュ制御部８０２はＤＭＡページリードが終了したら転送終了フラグをセットしＣＰＵ１０１に終了を知らせる（Ｓ９０７）。
【００４９】
ＣＰＵ１０１はＤＭＡページリードの終了したら、リードしたデータにデータエラーがないかをチェックし（Ｓ９０８）、データエラーがあった場合はデータバッファ８０１内でエラーを訂正する（Ｓ９０９）。
【００５０】
ＣＰＵ１０１はデータバッファ８０１内のデータ本体５１２バイトを順次読み出しＤＲＡＭ１０３に転送する（Ｓ９１０）。
【００５１】
このように動作することで、マッピングの問題が解決できるばかりでなく、データバッファ８０１からの読み出しになり、データアクセス動作の高速化が可能となる。
【００５２】
（第５の実施形態）
図１０に、本発明の第５の実施形態のブロック図を示す。
【００５３】
第４の実施形態と同じ機能モジュールは同じ番号で示している。１００１はデータ及び命令コード格納用のデータ命令兼用バッファであり、第３の実施形態における命令バッファ６０１と第４の実施形態におけるデータバッファ８０１の機能を切り替え可能にしたバッファである。
【００５４】
データ命令兼用バッファ１００１の初期状態は命令バッファとして使用し、データ命令兼用バッファ１００１がデータバッファに切り替えられた際は、データバッファとして使用する。
【００５５】
プログラムをＤＲＡＭ１０３にコピーし、そこにジャンプしてＤＲＡＭ１０３上のプログラムを実行中は、命令用のバッファは必要なくなる。そこで命令バッファをデータバッファに切り替えて使用することでコストの上昇を抑えることが可能となる。
【００５６】
（第６の実施形態）
図１１に、本発明の第６の実施形態のブロック図を示す。
【００５７】
第４及び第５の実施形態と同じ機能モジュールは同じ番号で示している。本実施形態はデータ命令兼用バッファ１００１とデータバッファ８０１を持つ。ＮＡＮＤ型フラッシュメモリ１０２上でプログラムを実行しているときはデータ命令兼用バッファ１００１を命令バッファとして使用し、ＤＲＡＭ１０３上でプログラムを実行しているときはデータ命令兼用バッファ１００１をデータバッファとして使用する。要するにＤＲＡＭ１０３上でプログラムを実行しているときはデータバッファを２個使用することとなる。ＮＡＮＤ型フラッシュメモリ１０２は内部データレジスタの更新を伴うアクセスが発生した場合に非常にアクセススピードが遅くなってしまうという特徴があるため、ＮＡＮＤ型フラッシュメモリ１０２からデータ転送を待っている間に別のバッファからＤＲＡＭ１０３へのデータ転送が可能となる。
【００５８】
図１２のフローチャートに示すように、ＮＡＮＤフラッシュ制御部８０２がＤＭＡページリードによってＮＡＮＤ型フラッシュメモリ１０２からデータ命令兼用バッファ１００１にデータ転送しているとき（Ｓ１２１１）はＣＰＵ１０１がデータバッファ８０１からＤＲＡＭ１０３へのデータ転送を行い（Ｓ１２０１）、ＮＡＮＤフラッシュ制御部８０２がＤＭＡページリードによってＮＡＮＤ型フラッシュメモリ１０２からデータバッファ８０１にデータ転送しているとき（Ｓ１２１２）はＣＰＵ１０１がデータ命令兼用バッファ１００１からＤＲＡＭ１０３へのデータ転送を行う（Ｓ１２０２）という動作をする。
【００５９】
このように動作することでコスト上昇を抑えた高速データ転送が可能となる。
【００６０】
以上のように、第１〜第６の実施形態において、ＮＡＮＤ型フラッシュメモリは、書き換え回数を制限することにより領域１(ファーストブロック)のみデータエラーが発生しないことが保証されている。
【００６１】
ハードウェア初期化プログラム及びローダープログラムは、書き換え不可又は書き換え回数が少ないので、ＮＡＮＤ型フラッシュメモリ１０２の信頼性の高い領域１に格納する。印刷装置制御プログラムは、書き換え可能又は書き換え回数が多いので、ＮＡＮＤ型フラッシュメモリ１０２の信頼性の低い領域３に格納する。これにより、ＮＯＲ型フラッシュメモリに比べ、安価なＮＡＮＤ型フラッシュメモリ１０２からのブートを可能にし、印刷装置のコストを下げることができる。
【００６２】
マイクロプロセッサ（ＣＰＵ）のプログラムコードをＮＡＮＤ型フラッシュメモリに格納し、格納されたコードを直接フェッチすることが可能となり、印刷装置のコストを下げることができる。
【００６３】
本実施形態は、印刷装置１００等のコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００６４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明の第１の実施形態を表わすブロック図である。
【図２】本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリの格納内容を示す図である。
【図３】本発明の第１の実施形態の動作を示すフローチャートである。
【図４】本発明の第１の実施形態のＣＰＵのマッピング内容を示す図である。
【図５】本発明の第２の実施形態の動作を示すフローチャートである。
【図６】本発明の第３の実施形態を表わすブロック図である。
【図７】本発明の第３の実施形態の動作を示すフローチャートである。
【図８】本発明の第４の実施形態を表わすブロック図である。
【図９】本発明の第４の実施形態の動作を示すフローチャートである。
【図１０】本発明の第５の実施形態を表わすブロック図である。
【図１１】本発明の第６の実施形態を表わすブロック図である。
【図１２】本発明の第６の実施形態の動作を示すフローチャートである。
【符号の説明】
【００６６】
１０１  ＣＰＵ
１０２  ＮＡＮＤ型フラッシュメモリ
１０３  ＤＲＡＭ
１０４  ＣＰＵインターフェース部
１０５，６０２，８０２  ＮＡＮＤフラッシュ制御部
１０６  ＤＲＡＭ制御部
６０１  命令バッファ
８０１  データバッファ
１００１  データ命令兼用バッファ
【図１】
2005208747.tif 000003
【図２】
2005208747.tif 000004
【図３】
2005208747.tif 000005
【図４】
2005208747.tif 000006
【図５】
2005208747.tif 000007
【図６】
2005208747.tif 000008
【図７】
2005208747.tif 000009
【図８】
2005208747.tif 000010
【図９】
2005208747.tif 000011
【図１０】
2005208747.tif 000012
【図１１】
2005208747.tif 000013
【図１２】
2005208747.tif 000014