(57)【要約】【課題】メモリへのアクセスを多元的に行えるシステムにおいて、プロセッサによるデータ処理効率を犠牲にすることなくキャッシュコヒーレンシの乱れを防止する。【解決手段】ＤＲＡＭ２１９は、アドレス空間７０１中において、実アドレス領域とミラーアドレス領域とに重複してアドレス付けされている。そして実アドレス領域はキャッシュ対象領域であり、ミラーアドレス領域はキャッシュ非対象領域と設定されている。ＤＭＡバッファを割り当てる場合には、実アドレス領域に割り当てられた領域を、ミラーアドレス領域へとオフセットすることで、キャッシャブル領域からアンキャッシャブル領域へと切り替えられ、また、逆の切り替えも行うことができる。【選択図】図７
2006127251.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、ＣＰＵから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置であって、
前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して、同一のメモリロケーションを重複して対応付けられたメモリと、
前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記キャッシュ非対象領域に対応付けられたメモリ上の領域を、前記キャッシュ対象領域に対応付け直す第２の領域変更手段をさらに備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
ダイレクトメモリアクセス機能を用いて前記ＣＰＵ以外のマスタから前記メモリにアクセスする場合には、前記キャッシュ対象領域に対応付けて割り当てられたメモリの領域について、前記領域変更手段により前記キャッシュ非対象領域に対応付け直すことを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記ＣＰＵから前記メモリにアクセスする場合には、前記キャッシュ非対象領域に対応付けて割り当てられたメモリの領域について、前記第２の領域変更手段により前記キャッシュ対象領域に対応付け直すことを特徴とする請求項２、または、請求項２を引用する請求項３に記載のデータ処理装置。
【請求項５】
任意のメモリロケーションに対応付けられた前記キャッシュ対象領域のアドレスと前記キャッシュ非対象領域のアドレスとは、一定のオフセット値で互いにずれており、前記領域変更手段は、前記キャッシュ対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ非対象領域に対応付け直し、前記第２の領域変更手段は、前記キャッシュ非対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ対象領域に対応付け直すことを特徴とする請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記ＣＰＵのアドレス信号の上位一定桁はデコードされず、該上位一定桁を除いたアドレス信号の少なくとも一部により前記メモリのアドレスが指定されるよう構成されることで、前記メモリは、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して同一のメモリロケーションを重複して対応付けられていることを特徴とする請求項１乃至請求項５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記領域変更手段により前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を前記キャッシュ非対象領域に対応付け直す前に、キャッシュされたデータのうち少なくとも更新されたものを、対応する前記メモリの領域に書き戻す書き戻し手段をさらに備えることを特徴とする請求項１乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
画像を撮影し、撮影された画像の画像データを圧縮して不揮発性メモリに保存する撮影手段と、
請求項３に記載のデータ処理装置とを備え、
不揮発性メモリの圧縮画像データを、請求項３に記載のデータ処理装置によりダイレクトメモリアクセス機能を用いて前記メモリに書き込み、前記メモリ上でその圧縮画像データを伸張処理することを特徴とするディジタルカメラ装置。
【請求項９】
キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対してメモリの同一のメモリロケーションを重複して対応付け、ＣＰＵから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置において、
メモリ領域の要求に応じて、前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を割り当てる割り当て工程と、
前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更工程と
を備えることを特徴とするメモリ割り当て方法。
【請求項１０】
前記ＣＰＵのアドレス信号の上位一定桁はデコードされず、該上位一定桁を除いたアドレス信号の少なくとも一部により前記メモリのアドレスが指定されるよう構成されることで、前記メモリは、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して同一のメモリロケーションを重複して対応付けられており、
任意のメモリロケーションに対応付けられた前記キャッシュ対象領域のアドレスと前記キャッシュ非対象領域のアドレスとは、前記メモリ容量に相当する一定のオフセット値で互いにずれており、
前記領域変更工程では、前記キャッシュ対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ非対象領域に対応付け直し、
前記第２の領域変更工程では、前記キャッシュ非対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ対象領域に対応付け直すことを特徴とする請求項９に記載のメモリ割り当て方法。
【請求項１１】
請求項９または１０に記載のメモリ割り当て方法をＣＰＵにより実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ機能を備えたデータ処理装置に関し、特にキャッシュ機能の有効／無効の切り替えを簡素化したデータ処理装置に関する。
【背景技術】
【０００２】
データ処理では演算領域としてＤＲＡＭ、ＳＲＡＭ等の揮発性半導体メモリを利用する。一般にＤＲＡＭは比較的安価であるが、その反面、読み書きの速度が遅い。一方でＳＲＡＭは読み書きの速度は速いが高価であるという特徴を持つ。そこで読み書きのパフォーマンスとコストを両立させるために、一次記憶媒体をＤＲＡＭとし、二次記憶媒体をＳＲＡＭとしたキャッシュ機能が用いられている（非特許文献１等参照）。
【０００３】
ここでキャッシュ機能による処理方法について簡単に説明する。図４はキャッシュ機能を持つハードウェアの構成図を示す。ＣＰＵ１０１はキャッシュコントローラ１０２と接続しており、さらにキャッシュコントローラ１０２はＤＲＡＭ１０３やＳＲＡＭ１０４と接続している。１０５はＣＰＵバスであり、１０６はデータバスである。一般的にメモリ領域はＤＲＡＭ１０３だけで構成することが可能であるが、メモリアクセスのパフォーマンスを向上させるためにＤＲＡＭ１０３よりサイズの小さいＳＲＡＭ１０４をキャッシュメモリとして用いる。図４において、ＣＰＵ１０１からＣＰＵバス１０５を通じて一次記憶媒体であるＤＲＡＭ１０３に対してデータ処理に関連するインストラクション或いはデータのメモリアクセス要求があると、キャッシュコントローラ１０２は該当するアドレスのデータがＳＲＡＭ１０４上にあるかを判断する。該当するデータがＳＲＡＭ１０４にマッピングされている場合はＳＲＡＭ１０４にアクセスし、ＳＲＡＭ１０４にマッピングされていない場合はＤＲＡＭ１０３にアクセスするとともに、該当するデータをＳＲＡＭ１０４へマッピングする。
【０００４】
ここで、キャッシュは、複数のワード（ＣＰＵによるメモリのアクセス単位）を通常は２のべき乗まとめたブロック（ラインとも呼ぶ。）を単位として行われる。ＤＲＡＭ１０３はブロック毎に区切られてアドレスが付されている。ＤＲＡＭにおける個々のブロックをブロックフレーム、そのアドレスをブロックフレームアドレスと呼ぶ。ＳＲＡＭ１０４もブロック毎に区切られてブロックフレームごとにＤＲＡＭ１０３の内容を保存するとともに、保存したブロックに対応付けてブロックフレームアドレスを保存する。ＳＲＡＭにおける個々のブロックをキャッシュブロックまたはキャッシュラインと呼ぶ。こうしてＳＲＡＭにマッピングされたデータとＤＲＡＭ上のデータとの対応付けを行っている。すなわち、ＳＲＡＭ１０４へのマッピングとは、ＤＲＡＭ１０３上のデータをＳＲＡＭ１０４上へ転送するとともに、キャッシュブロックごとに、その内容であるブロックがＤＲＡＭのどのブロックフレームに相当ものかを関連づける関連づけ情報（ブロックフレームアドレス）をキャッシュコントローラ１０２あるいはＳＲＡＭ１０４に記憶しておく動作である。マッピングされてブロックフレームのデータが格納されたキャッシュブロックをキャッシュエントリと呼ぶ。
【０００５】
ＣＰＵ１０１からのメモリアクセス要求に対してそのアドレスがＳＲＡＭ１０４上にマッピングされているか否かの判定は前記関連づけ情報に基づいてキャッシュコントローラ１０２で行う。キャッシュ機能は、このようにして一次記憶媒体であるＤＲＡＭ１０３のデータを、高速な二次記憶媒体であるＳＲＡＭ１０４上に局所的に動的にマッピングすることで、マッピングされたデータへのアクセスを高速化する。
【０００６】
マッピングが行われると、同じメモリ領域のデータがＤＲＡＭとＳＲＡＭという２つの異なる物理メモリに存在することになる。そこでキャッシュコントローラ１０２は双方のデータの同一性（コヒーレンシー）を保証しなければならない。すなわち、ＳＲＡＭ１０４上のキャッシュエントリがそれに対する書き込みアクセスによって変更を受けた場合、そのキャッシュエントリのマッピングが解除された後に再びＣＰＵ１０１からＤＲＡＭ１０３へのアクセスが発生するまでに、キャッシュエントリの変更内容をＤＲＡＭ１０３に反映させなければならない。この操作がコヒーレンシーの保証を意味する。キャッシュエントリを対応するブロックフレームに書き戻す方式としては、キャッシュへの書き込みが発生したと同時にＤＲＡＭ１０３上の対応するブロックフレームへのデータの書き込みを行うライトスルー方式と、キャッシュエントリへのマッピングの解除と同時に、当該キャッシュエントリに対応するＤＲＡＭ１０３上のブロックフレームへのデータの書き込みを行うライトバック方式の２種類が存在する。なお、ＳＲＡＭ１０４上のどのキャッシュエントリに書き戻すか（あるいは無効化するか）についてはキャッシュコントローラ１０２の仕様に依存し、セットアソシエイティブ方式やフルアソシエイティブ方式では主にＬＲＵアルゴリズムが用いられる。
【０００７】
ライトバック方式では、キャッシュコントローラ１０２（あるいはＳＲＡＭ１０４）に、ＳＲＡＭ１０４上のマッピングされたそれぞれのキャッシュエントリが変更されたか否かを示すフラグ（これをダーティビットという。）を持っており、このフラグに応じて、キャッシュエントリを反映するためのＤＲＡＭ１０３の更新を行う。この更新は、空きキャッシュブロックがない状態でキャッシュミスが生じ、キャッシュエントリの置換が行われる場合と、たとえばＣＰＵにより実行されているプログラム（これをクライアントと呼ぶ。）からの明示的な書き戻し要求によって行われる場合がある。後者の場合、キャッシュエントリを残したままＤＲＡＭ１０３へのデータ更新を行う処理（フラッシュ処理という。）と、ＤＲＡＭ１０３へのデータ更新後にキャッシュエントリを消去する処理 （クリア処理という。）のいずれかを選択することができる。また、ライトバック方式では、一度変更したキャッシュエントリをＤＲＡＭ１０３へ書き戻すことなく無効化する機能（この機能を実現する処理を無効化処理という。） を備えたものもある。この機能は、キャッシュブロックに対応してもうけられた無効フラグの値を操作することで実現される。無効化処理は書き戻し動作を伴わないが、便宜的に、書き戻し処理（あるいは書き戻し要求）といった場合には無効化処理も含むものとする。
【０００８】
ライトスルー方式およびライトバック方式のいずれの方式にしても、ＣＰＵ１０１からメモリにアクセスする場合は、キャッシュコントローラ１０２を介するために、ＳＲＡＭ１０４を経由してＤＲＡＭ１０３への読み出し、書き込みを行う。しかしＤＭＡ（ダイレクトメモリアクセス）転送機能を備えたデータ処理装置では、ＤＭＡブロックが直接ＤＲＡＭ１０３からのデータの読み出し、書き込みを行う。そのため、ＤＭＡではＳＲＡＭ１０４へのアクセスが一切発生しない。つまり、ＳＲＡＭ１０４上にマッピングされたＤＲＡＭ１０３のデータ領域すなわちキャッシュエントリに対応するブロックフレームに、ＤＭＡ転送によってデータが書き込まれる（ＤＭＡライト）と、ＤＲＡＭ１０３のデータとＳＲＡＭ１０４とのデータのコヒーレンシーが保証されなくなる。この状態で、キャッシュコントローラ１０２によりキャッシュエントリのＤＲＡＭ１０３への書き戻しが発生すると、書き戻されたブロックフレームによって、ＤＭＡ転送によりそのブロックフレームに書き込まれていたデータは破壊される。
【０００９】
くわえてライトバック方式では、キャッシュエントリに対応するＤＲＡＭ１０３のブロックフレームからＤＭＡ転送によってデータが読み出される（ＤＭＡリード）と、キャッシュエントリは更新されているにも関わらず、ＤＲＡＭ１０３上の古いデータが読み出されるという問題がある。なおキャッシュエントリとキャッシュエントリに対応するＤＲＡＭ１０３のブロックフレームをまとめてキャッシュデータと呼ぶことにする。
【００１０】
そこで上記問題を解決するために、ＤＭＡ転送時にはキャッシュのフラッシュ処理、もしくはクリア処理を行ってＤＲＡＭ１０３とＳＲＡＭ１０４の間のコヒーレンシーを保証することが必要である。
【００１１】
しかしキャッシュのフラッシュ処理やクリア処理は、キャッシュコントローラ１０２によるダーティビットの走査とダーティビットが存在する場合のキャッシュエントリのＤＲＡＭ１０３領域への書き戻し、あるいはその後のキャッシュエントリの消去を含むため、大きなオーバーヘッドとなる。またたとえばマルチタスクオペレーティングシステムで制御されたデータ処理装置のように、ＤＭＡ転送処理を行うクライアントを含む複数のクライアントからＤＲＡＭにアクセス可能な場合には、複数のクライアントによる処理対象となるキャッシュデータのコヒーレンシーを維持しなければいけないという制約がある。
【００１２】
そこで、ＣＰＵからのアクセス要求があってもキャッシュコントローラ１０２がキャッシュを行わない（すなわちＳＲＡＭ１０４へのマッピングを行わない）メモリ領域を静的に確保しておき、ＤＭＡ転送用のメモリ領域はその領域に割り当てることで、コヒーレンシーを維持しつつ、そのための処理オーバーヘッドを回避することができる。なおこのような領域を以降アンキャッシャブル領域（キャッシュ非対象領域）と呼び、キャッシュコントローラ１０２がＣＰＵからＤＲＡＭ１０３へのアクセス要求に応じてＳＲＡＭ１０４にマッピングする領域のことをキャッシャブル領域（キャッシュ対象領域）と呼ぶ。このような構成の装置において、ＤＭＡ転送のターゲット領域をアンキャッシャブル領域に割り当てると、ＤＭＡに先立つコヒーレンシー維持処理を行うことなくキャッシュデータのコヒーレンシーを維持可能となる。しかしＤＭＡ転送されたデータに対して転送後にデータ演算処理を行う場合には、ＤＭＡ転送領域についてはキャッシュ機能が働かずに処理時間が非常にかかってしまう。そこでＤＭＡ転送完了後に、その領域をアンキャッシャブル領域からキャッシャブル領域へと切り替えれば、その後の処理はキャッシュを用いて高速に行うことができる。その切り替えのための手段として、キャッシュコントローラ１０２に対してキャッシャブル領域の変更命令を発行することが可能なメモリ管理ユニットを備えたメモリ管理機能が考案されている（特許文献１等参照）。
【００１３】
また、ＣＰＵコアもしくはその補助ユニットとして、ハードウェアで直接メモリのプロテクション情報やキャッシュ制御情報（キャッシャブル領域／アンキャッシャブル領域の切り替えを含む。）を管理するためのメモリ管理ユニットもある。またソフトウェアで、プロテクション情報やキャッシュ制御情報を管理するメモリ管理ユニットを実現するシステムも存在する。
【非特許文献１】ジョンヘネシー、デビッドパターソン著、「コンピュータ・アーキテクチャ」１９９２年１２月２５日発行、ｐ４０８−４２８
【特許文献１】特開平２０００−１８１７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし上述したメモリ管理機能を有するメモリ管理ユニットは普及していないし、またそのための専用ハードウエア資源を必要とすることから高価なものとなる。さらに、このようなメモリ管理機能でサポートするキャッシャブル領域とアンキャッシャブル領域の領域情報リソースは限られている。すなわち、データ処理装置のシステム全体で取り扱う任意数のメモリ領域について領域情報を設定することができない。領域情報は、対応する領域がキャッシャブル領域であるか、アンキャッシャブル領域であるかを示す情報である。
【００１５】
またメモリ管理ユニットを備えたＣＰＵも、管理情報の登録、参照及びそれらを管理するための領域を必要としており、また処理が複雑になるという問題点がある。一般的に普及しているとは言えず利用しづらい点や、領域情報リソースが限られている点は上記メモリ管理ユニットと共通する。
【００１６】
また、ＤＭＡ転送先のＤＲＡＭ領域がキャッシュ機能が有効の場合にはＳＲＡＭ（キャッシュメモリ）にＤＭＡ転送領域のデータが存在している可能性がある。そのため通常はＤＭＡ転送を行う前にキャッシュのクリア処理をしなければならない。しかし局所的なキャッシュのクリア処理を持たず、ＳＲＡＭの全領域に対して行わねばならないシステムでは、ＳＲＡＭの全領域の書き戻し処理は処理時間が長く、読み出し時のオーバーヘッドとなる。これはキャッシュ機能が有効の状態でバッファを確保した場合であり、ＤＭＡ転送時にクリア処理を実行すると、ファイル読み出しが非常に遅くなる。またマルチタスク仕様のシステムにおいてはＤＭＡ転送処理以外のタスクが同じメモリ領域をアクセスする可能性があるため、仮にあるタスクでＤＭＡ転送前のクリア処理を実行しても、他のタスクによってキャッシュのコヒーレンシーが維持されないという問題もある。
【００１７】
本発明は上記従来例に鑑みてなされたもので、ＤＭＡ転送処理を含む複数のクライアントからＤＲＡＭにアクセス可能である場合に、ＣＰＵから当該ＤＲＡＭにアクセスする際にはキャッシュ機能を用いるか用いないかを、メモリ管理ユニットを用いない簡素な機構で動的に切り替えることが可能であるとともに、キャッシュ機能を用いる場合にはキャッシュコヒーレンシーを確実に維持できるデータ処理装置を提供することを目的とする。
【００１８】
また、キャッシャブル領域とアンキャッシャブル領域を、管理用リソースによる制限を受けることなく、かつ容易に管理できるデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために本発明は以下の構成を備える。
【００２０】
すなわち、キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、ＣＰＵから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置であって、
前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して、同一のメモリロケーションを重複して対応付けられたメモリと、
前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更手段とを備える。
【００２１】
あるいは、第１の記憶媒体と第２の記憶媒体を有し、第１の記憶媒体に記憶した少なくとも一つ以上のデータのうち、読み出し或いは書き込み要求のあったアドレスのデータを自動的に第２の記憶媒体に転送してデータ処理のできるデータ処理装置であって、
前記第１の記憶媒体の領域から動的に確保した領域において前記第２の記憶媒体への転送を許可するモードと許可しないモードに動的に切り替える切り替え手段を備えることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、ひとつのバッファ領域を、ＤＭＡ転送のためにはアンキャッシャブル領域として設定し、ＣＰＵによる処理のためにはそのパフォーマンス向上のためにキャッシャブル領域として設定する領域切り替えを簡素な構成により実現できる。
【発明を実施するための最良の形態】
【００２３】
＜＜第１の実施形態＞＞
本実施形態では、書き込み消去可能な不揮発性半導体メモリ、たとえばコンパクトフラッシュ（登録商標、以下ＣＦと略す。）に撮影した画像データを保存するディジタルカメラにおいて、撮影してＣＦに格納した圧縮画像データを伸張し液晶モニタに再生する際にキャッシュ機能許可モードと不許可モードを切り替える方法について説明する。
【００２４】
本実施形態におけるデジタルカメラのシステム構成を図５に示す。ここで，２０１はデジタルカメラ全体、２０２は撮影光学系、２０３はレンズ、２０４はＣＣＤ、２０５はＣＤＳ／ＡＧＣ、２０６はＡ／Ｄコンバータ、２０７は信号処理装置Ａ、２０８はＶ−ドライブ、２０９はタイミングジェネレータ（以下ＴＧと略す）、２１０は信号処理装置Ｂ、２１１はデータバス、２１２はＣＰＵバス、２１３は、デジタルカメラを制御するためのプログラム（図１乃至図３あるいは図９に示す手順を実行するためのプログラムを含む。）を含む、データを書き込んだフラッシュメモリ 、２１４はＣＰＵ、２１５は画像データの記録を行うＣＦ、２１６はボタンや十字キー、タッチパネル等の操作部を持つユーザーインターフェース、２１７はディスプレイコントローラ、２１８はＶＲＡＭ、２１９はプログラムの実行領域に用いるＤＲＡＭ、２２０は液晶モニタ、２２１はキャッシュコントローラ、２２２はキャッシュに用いるＳＲＡＭである。
【００２５】
まず、デジタルカメラ２０１の撮影表示に関する動作について説明する。以下の制御は全てＤＲＡＭ２１９のプログラムメモリ上にＣＦ２１５或いはフラッシュメモリ２１３からロードしたソフトウェアをＣＰＵ２１４上で起動することで行う。まず撮影光学系２０２のレンズ２０３によってＣＣＤ２０４に結像した画像を、ＣＣＤ２０４に電気信号に変換し、その電気信号の振幅やゲインをＣＤＳ／ＡＧＣ２０５によって調整する。さらにＡ／Ｄコンバータ２０６を用いてアナログ信号からデジタル信号に変換する。このデジタル信号を、信号処理装置Ａ２０７を用いて、画像の色座標系上の値に変換する。ここで色座標系にはＹ−Ｃ座標系のほか、ＲＧＢ座標系等、様々な色空間の座標系を取ることができ、本発明中では限定されるものではない。
【００２６】
信号処理装置Ａ２０７からはＣＣＤ２０４の撮影画素数に応じたデータが画素クロックに同期して出力される。すなわち図５において信号処理装置Ａ２０７から出力する制御線上の値は画素クロックであり、データ線上の値は実際に撮影光学系２０２から取得した実画像データとなる。さらに、同様に信号処理装置Ａ２０７の制御線上には画素クロックと同時にＣＣＤ２０４の撮影エリアのサイズに対応した制御信号（同期信号）を出力する。すなわち撮影エリアの１ラインが始まる度に水平同期信号ＨＤを、撮影エリアの１フィールドおきに垂直同期信号ＶＤを出力する。
【００２７】
このようにして、撮影光学系２０２によって撮影して色変換した信号を信号処理装置Ａ２０７の発生する制御信号と同期して出力し、信号処理装置Ｂ２１０に入力する。信号処理装置Ｂ２１０は主にＤＲＡＭ２１９とのデータの読み書き、ＣＦ２１５とのデータの読み書き、ディスプレイコントローラ２１７の駆動、液晶モニタ２２０画像表示用データのＶＲＡＭ２１８への書き込み、ＣＰＵ２１４からの信号の変換、撮影光学系への制御信号の送信、デジタルカメラ２０１外部への画像データの送信を制御する。ユーザーインターフェース２１６はユーザーからの撮影、再生、モード設定、液晶モニタ２２０ ＯＮ／ＯＦＦ、ＣＦ２１５カードの着脱を行う。
【００２８】
撮影した静止画画像データをＣＦ２１５へ記録する際には、まず信号処理装置Ｂ２１０に入力したデータを一旦ＤＲＡＭ２１９に格納し、ここでソフトウェアプログラムによるＪＰＥＧ画像フォーマットへの圧縮を行う。圧縮後の画像データは再びＤＲＡＭ２１９に格納して、ここからＣＦ２１５に転送して記録する。またＣＦ２１５に格納した画像を再生して液晶モニタ２２０に表示する場合はＣＦ２１５から一旦ＤＲＡＭ２１９へ読み出し、ここでソフトウェアプログラムによるＪＰＥＧ画像フォーマットからの伸張を行う。その後ＶＲＡＭ２１８に転送しディスプレイコントローラ２１７を駆動して液晶モニタ２２０に表示する。
【００２９】
ソフトウェアプログラムによる圧縮画像データの伸張処理および画像データのアクセスは、全てフラッシュメモリ２１３やＤＲＡＭ２１９を対象とする。そのためその処理速度はそれぞれのメモリのアクセス速度に依存する。従ってフラッシュメモリ２１３やＤＲＡＭ２１９に比べてアクセス速度が速いＳＲＡＭ２２２を、キャッシュコントローラ２２１による制御によりキャッシュメモリとして用いることによって処理速度をさらに速くすることができる。ここでＤＲＡＭ２１９はＣＰＵのアドレス空間いっぱいに実装されておらず、少なくとも上位（ＭＳＢ側）１ビットを使用せず下位のビットでアクセス可能な容量に収められている。そして、アドレス信号の上位少なくとも１ビット（これをミラービットと呼ぶことにする。）は、その値にかかわらず実装されたＤＲＡＭをイネーブルにするように結線される。このように構成することで、ＤＲＡＭ中のメモリロケーションは、ミラービットのみが異なる複数のアドレス空間に重複して割り当てられることになる。これは図１のステップＳ３において詳述する。なお、ミラービットは上位ビットとしたがこれは実メモリのアドレス空間を連続して確保するためであり、不連続でもよい場合にはどのビットに割り当てても良い。
【００３０】
ここで図５のシステムにおけるキャッシュの動作は、従来例において説明した通りである。なお本実施形態におけるデジタルカメラに搭載するキャッシュシステムはライトバック方式であり、キャッシュデータの同一性を保持するためのＳＲＡＭ２２２からのデータ書き戻しは、キャッシュミスによりキャッシュエントリの入れ替えが行われる場合、或いはプログラムで明示的な書き戻し制御を実行した場合に発生する。ユーザからの明示的な書き戻し制御では、ＳＲＡＭ２２２にキャッシュエントリを残して書き戻すフラッシュ処理と、キャッシュエントリを消去して書き戻すクリア処理と、書き戻しを行わずにキャッシュエントリを消去するのみの無効化処理のいずれかがユーザの指示に応じて行われる。このキャッシュシステムの動作はキャッシュコントローラ２２１を駆動している場合であり、ユーザープログラムからキャッシュコントローラ２２１の駆動のＯＮ／ＯＦＦの制御をすることによってキャッシュ機能自体を有効にしたり無効にしたりすることができる。またフラッシュメモリ２１３、ＤＲＡＭ２１９の領域においてキャッシュ機能が有効な領域（キャッシャブル領域あるいはキャッシュ対象領域）、もしくは無効な領域（アンキャッシャブル領域あるいはキャッシュ非対象領域）の指定を、キャッシュコントローラ２２１が持つレジスタ等で指定可能である。ただし、本発明においては、このレジスタによる領域の指定は動的に行える必要はない。このレジスタには、たとえばキャッシュ対象／非対象それぞれの領域の先頭及び末尾のアドレスが格納される。キャッシュコントローラ２２１は、ＣＰＵからのメモリアクセス発生時にまずアクセス先のアドレスとレジスタの値とを比較し、そのアドレスがキャッシュ非対象であることを示していればキャッシュ機能を働かせず直接ＤＲＡＭにアクセスさせる。一方キャッシュ対象であれば通常のキャッシュ機能を働かせて、キャッシュの検索を行ってヒットすれば該当するキャッシュエントリにアクセスし、ミスであれば該当するブロックフレームをキャッシュブロックにマッピングする。その際、ダーティビットの値に応じて消去されるキャッシュエントリの書き戻しが行われる。
【００３１】
なお本実施形態においては、明示的な書き戻し要求では、フラッシュメモリ２１３、ＤＲＡＭ２１９上の特定のプログラム領域及びデータ領域のキャッシュエントリのみを対象とした処理はできないものとする。すなわちユーザによる明示的な書き戻し要求はフラッシュメモリ２１３、ＤＲＡＭ２１９の全領域を対象に行う。従ってＳＲＡＭ２２２の全領域のキャッシュエントリについて処理を行う。ただし本発明はこの例に限定されるものではなく、特定のメモリ領域対象のキャッシュ処理が可能なデータ処理装置についても同様に適用可能である。さらに本実施形態のシステムはＭＭＵ（メモリ管理ユニット）を持たないものとする。ただし本発明はこの例に限定されるものではなく、有限の対象領域数を管理するＭＭＵを搭載するデータ処理装置についても適用可能である。
【００３２】
ＣＦ２１５からの圧縮画像データの読み出しには図５に図示しない信号処理装置Ｂ２１０に内蔵するＣＦコントローラを用いる。このときＣＦコントローラからＤＲＡＭ２１９へのデータ転送をＣＰＵ２１４によるメモリアクセスを行わずに高速に行うために信号処理装置Ｂ２１０内のＤＭＡコントローラ２１０ａを用いて転送する。すなわち、ＤＲＡＭ２１９はＣＰＵおよびＤＭＡにより多元的にアクセス可能に構成されている。本発明はこのＤＭＡのために割り当てられるＤＲＡＭ領域（ＤＭＡバッファ領域）について、キャッシュ対象領域と非対象領域の切り替えを簡素な機構で実現するものである。
【００３３】
＜ＤＭＡバッファ領域の割り当て＞
図１（Ａ）にサイズＸのＤＭＡ転送用バッファを静的に確保するまでのフローチャートを示す。このフローチャートは、ＤＭＡを行うプログラムがＤＭＡバッファ領域の割り当てをオペレーティングシステム等のシステムプログラムに要求した場合に実行される。ＤＭＡバッファ領域が割り当てられれると、そのアドレスを示すポインタがユーザ（要求したプログラム）に渡される。そして、ＤＭＡバッファ領域が複数のプロセスにより共有される場合には、当該複数のプロセスは、たとえばそのＤＭＡバッファ領域へのアドレスを示すポインタをグローバル変数として共有することでＤＭＡバッファ領域も共有できる。ここでＳＲＡＭ２２２に対してキャッシュコントローラ２２１がフラッシュやクリアを行う１制御単位のサイズをａとする。この１制御単位は一般的にキャッシュブロックあるいはキャッシュラインと呼ばれるものであり、以降これを１ラインと呼ぶこととする。
【００３４】
まずデータサイズＸに１ラインサイズａの２倍のサイズを付加したサイズだけの領域をＤＲＡＭ１９中に定義したシステムのメモリ管理モジュールのヒープ領域から確保し、そのアドレスをポインタｐＢｕｆに保存する（ステップＳ１）。あるいは、オペレーティングシステム等から、割り当てられた領域をポインタｐＢｕｆにより受け取った場合には、それをそのまま用いればよい。確保するメモリサイズは、（Ｘ＋２ａ）となる。このときの確保したバッファメモリのアドレスをＢｕｆとし、変数Ｖの内容を［Ｖ］と表せば、ステップＳ１により［ｐＢｕｆ］＝Ｂｕｆとなる。なおメモリの割り当て自体はオペレーティングシステムにより行われてもよい。またサイズ２ａを余分に確保する理由は後述する。
【００３５】
次にキャッシュのクリア処理を行う（ステップＳ２）。この処理によりＳＲＡＭ２２２上のいずれのキャッシュブロックにもバッファ領域に対応するデータ（すなわちキャッシュエントリ）は存在せず、全て書き戻された状態になっている。そしてステップＳ３において、ステップＳ１で確保したバッファ領域へのポインタｐＢｕｆの値Ｂｕｆに対してＤＲＡＭ２１９の実アドレス領域に対するミラーアドレス領域へのオフセット値Ｏｆｆｓｅｔを加算する。
【００３６】
ここでミラーアドレス領域について図６に説明する。３０１は３２ビットアドレス空間で定義したシステム中でＤＲＡＭに対応付けることが可能なアドレス領域（ＤＲＡＭ実装可能領域）である。３０２はＤＲＡＭが実装されたアドレス領域である。この領域を実アドレス領域と名付ける。図６の全メモリ領域は３２ビットのアドレスによって指定することができるが、実アドレス領域３０２は３２ビットより少ないビット数で指定することができる。例えば２５６ＭＢのＤＲＡＭを実装していれば実アドレス領域は２８ビットで指定することができる。このときＣＰＵとＤＲＡＭのアドレスの結線が下位２８ビットのみであり（ＤＲＡＭはアドレス信号が多重化されているのが通常であるし、バンキングされている場合もあるが、論理的にはアドレス信号が結線されていると考えることができる。）、ＤＲＡＭのコントローラ（図５に図示しない）は上位４ビットを認識することができない。なお、実装された２５６ＭＢのＤＲＡＭのデバイスはＤＲＡＭ実装可能領域へのアクセスが発生する都度かならずチップセレクトされるものとする。従って下位の２８ビットだけをＤＲＡＭコントローラは認識するので、上位４ビットがいかなる値であっても下位２８ビットが同じ値であれはＤＲＡＭの同じ領域へのアクセスが発生する。つまりユーザから見ると、実装されたＤＲＡＭの領域３０２がＤＲＡＭ領域への対応付けが可能な全領域３０１において繰り返してアクセスされるようになる。すなわち、領域３０３や３０４に対するアクセスは、アドレスは違っていても、領域３０２に対するアクセスとなる。この実アドレス領域３０２以外の領域であって、図６に示すようにＤＲＡＭに対してアクセスできるアドレス空間のことをミラーアドレス領域と呼ぶ。もちろん、実アドレス領域とミラーアドレス領域とは対等であって、たとえば領域３０３を実アドレス領域と呼び、領域３０２をミラーアドレス領域と呼ぶこともできる。しかし本実施形態では、ＤＲＡＭに繰返し対応付けられたアドレス空間のうち、最も小さなアドレスをもつ領域を実アドレス領域と呼ぶことにする。
【００３７】
ところで、上記に示すようにハードウェアシステムで結線したビット数に応じたサイズの周期でミラーアドレス領域は発生する。これに対して、キャッシュコントローラ２２１は、キャッシャブル領域およびアンキャッシャブル領域のアドレスを３２ビット単位で（すなわちアクセス可能な空間全体から）判定する。従って本実施形態では、ＤＲＡＭの実アドレス領域３０２をキャッシャブル領域とするよう領域定義用のレジスタを設定し、ＤＲＡＭ実装可能領域３０１のその他のミラーアドレス領域をアンキャッシャブル領域とするよう設定しているために、同じＤＲＡＭの領域に対して実アドレス領域３０２からはキャッシャブル領域として、そのミラーアドレス領域からはアンキャッシャブル領域としてアクセスすることができる。つまりステップＳ１においてはキャッシャブル領域に要求されたデータ領域を確保している。そして、ステップＳ３において、ＤＲＡＭの実アドレス領域に対するポインタｐＢｕｆにミラーアドレス領域へのオフセットを加算するということは、ポインタｐＢｕｆにより示されるメモリ領域をキャッシャブル領域からアンキャッシャブル領域へと切り替えることを意味する。
【００３８】
ミラーアドレス領域へのオフセットは、ミラーアドレス領域の出現周期（すなわちＤＲＡＭの容量）の整数倍に相当する値であり、かつ、ＤＲＡＭ実装可能領域３０１内に収まる値である。この値をＯｆｆｓｅｔとすれば、ステップＳ３においては［ｐＢｕｆ］の値にＯｆｆｓｅｔを加算し、Ｂｕｆ＋ＯｆｆｓｅｔをポインタｐＢｕｆの新たな値とする。
【００３９】
次にステップＳ４でサイズＸ＋２ａ分確保したバッファ領域のうち、バッファの先頭と最後それぞれからキャッシュラインサイズａ分だけ除いた内側の領域をクライアントに渡すために、そのバッファポインタの値［ｐＢｕｆ］にラインサイズａを加算する。すなわちＢｕｆ＋Ｏｆｆｓｅｔ＋ａをポインタｐＢｕｆの新たな値とする。これは通常のキャッシュ処理の制御単位がＳＲＡＭ２２２の１ラインのサイズに相当するのに対して、本システムでのメモリ管理モジュールにより確保されるメモリが、ＤＲＡＭのブロックフレームのアライメントに対応しているとは限らないためである。このため、アンキャッシャブル領域とキャッシャブル領域とがひとつのブロックフレーム内に存在する事態が生じ得る。この場合、キャッシャブル領域について、ＳＲＡＭのキャッシュブロックからＤＲＡＭのブロックフレームへの書き戻しが行われると、同じキャッシュブロックに属するアンキャッシャブル領域も書き戻されてしまう。これを防止するためにＤＭＡバッファ領域を確保する際には、ＤＲＡＭに確保されるＤＭＡバッファ領域が他のプロセス等に割り当てられる領域と同じブロックフレームに属さないよう、ＤＭＡバッファ領域の前後にキャッシュラインサイズの余裕（余白領域）をとる。なお、本実施形態ではその余裕として、ＤＭＡバッファ領域の前後にそれぞれキャッシュラインサイズを確保しているが、キャッシュラインよりも１ワード分小さな領域（すなわちａ−１（ワード））をＤＭＡバッファ領域の前後に確保できれば十分である。
【００４０】
また、本発明によれば、もともとキャッシャブル領域として確保されたＤＲＡＭの領域もアンキャッシャブル領域に切り替えることができる。このため、ＤＲＡＭ上へのメモリ領域は、厳密には、ブロックフレームのアラインメントに沿って割り当てておかねば上述した問題は生じ得る。そのためメモリ管理モジュールは、プロセス（クライアント）からＤＲＡＭ上の領域を要求された場合、ブロックフレームのアラインメントに沿って割り当てるのが望ましい。しかし、ＣＰＵからＤＲＡＭにアクセスする場合にはキャッシュ機能を使用するのが通常であることから、ＤＭＡを用いないプロセスが、キャッシャブル領域として確保したＤＲＡＭ領域をアンキャッシャブル領域に切り替えることは実際上はないと考えられる。そこで本実施形態では、１キャッシュラインにキャッシャブル領域とアンキャッシャブル領域とが混在するという事態は、実際上は、一方がＤＭＡバッファとして割り当てられた場合に限って生じるものとの前提に立ち、ＤＭＡバッファ領域の確保の際のみ、割り当てるＤＭＡバッファ領域の前後にキャッシュラインサイズの余裕を確保している。こうすることで、無駄な領域を割り当てる必要がなくなり、メモリの利用効率を必要以上に低下させることを防止できる。
【００４１】
以上のようにしてＣＦからデジタルカメラシステムのＤＲＡＭのアドレスＢｕｆ＋Ｏｆｆｓｅｔ＋ａから始まるサイズＸのバッファ領域が確保され、そのアドレスがポインタｐＢｕｆを介して領域の要求元のクライアントに対して渡される。クライアントプロセスは、ポインタｐＢｕｆの内容で示されるサイズＸの領域を割り当てられたＤＭＡバッファ領域として使用する。すなわち、このクライアントプロセスは、そのように確保されたＤＭＡバッファ領域に、ＣＦ２１５に保存されたＪＰＥＧ圧縮された画像データを、ＣＰＵ以外のデバイスをマスタとするＤＭＡ転送により書き込むことができる。そしてこのＤＭＡバッファ領域はアンキャッシャブル領域であるために、転送されたデータがキャッシュエントリの書き戻しにより上書きされることはない。
【００４２】
＜バッファ領域の切り替え＞
次にこのＤＲＡＭ上のＤＭＡバッファ領域に書き込まれた画像データを伸張処理をするために、ミラーアドレス領域に存在するアンキャッシャブルなバッファ領域をキャッシャブル領域に変換する手順について説明する。図１（Ｂ）にそのフローチャートを示す。ステップＳ５では、ＤＭＡバッファ領域、たとえばＤＭＡ転送を終了して画像データが書き込まれているＤＭＡバッファ領域のポインタｐＢｕｆの値から、ＤＲＡＭの実アドレス領域からミラーアドレス領域へのオフセットＯｆｆｓｅｔを減じる。すなわちｐＢｕｆを［ｐＢｕｆ］−Ｏｆｆｓｅｔとする。この結果ｐＢｕｆは、（Ｂｕｆ＋Ｏｆｆｓｅｔ＋ａ）−Ｏｆｆｓｅｔ＝Ｂｕｆ＋ａとなる。クライアントは、ｐＢｕｆで指し示される領域をＤＭＡバッファ領域としてそれまでどおり使用する。この操作によって今までアンキャッシャブル領域からアクセスしていたバッファ領域をキャッシャブル領域からアクセスすることが可能となる。この場合ＤＲＡＭ上の画像データに対してキャッシュ機能を生かした高速な画像処理（伸張処理）が実現できる。伸張された画像データは、たとえば液晶モニタ２１８に表示される。ただし、ＤＭＡ転送に用いると従来の問題が生じ得るので、図１（Ｂ）による領域変換を行ったなら、その領域はＣＰＵ以外からはアクセスしない。以上のようにしてＪＰＥＧ画像データの伸張処理を完了した後、ＣＰＵ２１４の制御によってＤＲＡＭ２１９から画像表示用データのＶＲＡＭ２１８への書き込みを行い、ディスプレイコントローラ２１７によって液晶モニタ２２０に表示する。
【００４３】
図７に上記処理の模式図を示す。ＣＰＵのアドレス空間７０１はキャッシャブル領域とアンキャッシャブル領域とに区分されている。この区分はキャッシャブル領域が実アドレス領域に、アンキャッシャブル領域がミラーアドレス領域になるように設定されている。ともにサイズはＡＲで同一である。例えば実アドレス領域の先頭が００００００００ｈで、ＡＲ＝１００００ｈであれば、図７のミラーアドレス領域１の先頭アドレスは０００１００００ｈ、ミラーアドレス領域２の先頭アドレスは０００２００００ｈとなる。そしてミラーアドレス領域２をアンキャッシャブル領域として使用するのであれば、Ｏｆｆｓｅｔは２ＡＲである。そして図１（Ａ）の手順により、ポインタ７１１はポインタ７１２に変更され、その結果ポインタｐＢｕｆの示す領域は、実アドレス領域からミラーアドレス領域２に切り替えられる。
【００４４】
こうして、ＤＭＡ転送中のキャッシュデータのコヒーレンシーとキャッシュ機能による高速データ処理の両立を達成できる。すなわち、本実施形態によれば、割り当てられたＤＲＡＭ上のメモリ領域の情報（アドレス）をクライアントプロセスに渡すためのポインタに、キャッシャブル領域とアンキャッシャブル領域とを切り替えるためにメモリ構成等によってあらかじめ決められたオフセット値を加算あるいは減算するだけでキャッシャブル領域とアンキャッシャブル領域とを切り替えることができる。このため、キャッシャブル領域とアンキャッシャブル領域とを動的に切り替える仕組みを持たないプロセッサを用いた場合にも、領域切り替えを行うことができる。また、ある領域がクライアントに割り当てられた場合、それがキャッシャブル領域であろうとアンキャッシャブル領域であろうと、物理的には同一のメモリロケーションである。そのため、メモリ管理を行うオペレーティングシステムなどは、領域切り替えが行われても、何ら影響を被らずにメモリの管理を行うことができる。
【００４５】
＜変形例＞
（１）本実施形態の場合には、ＤＭＡ転送中にはキャッシャブル領域からのアクセスがないものという前提で図１（Ｂ）に示す手順について説明した。しかし、もしＤＭＡ転送中にその他のタスクによってミラーアドレス領域からではなく実アドレス領域からのアクセスによってＤＭＡ転送後のデータが変更されている可能性があるのであれば、図１（Ｂ）のアンキャッシャブル領域からキャッシャブル領域への切り替えは図２（Ａ）のように行われる。図２（Ａ）においては、ステップＳ１５を実行する前に実アドレス領域でのアクセスがあるか否かの判定を行って（ステップＳ１６）、あればキャッシュのクリア処理を行う（ステップＳ１７）。この後初めて領域の切り替えをステップＳ１５で実行する。こうすることで、キャッシュエントリによりＤＭＡバッファ領域が上書きは介されることを防止できる。
【００４６】
（２）本実施形態では、図５に示すキャッシュシステムはライトバック方式であるとした。しかしライトスルー方式である場合には、ＤＲＡＭ上に割り当てられたＤＭＡバッファ領域がＤＭＡの転送元であるか或いは転送先であるかに依存して、ＤＭＡバッファ領域の割り当て時の処理手順が変わる。確保しようとするＤＭＡバッファ領域がＤＭＡの転送元である場合には、図２（Ｂ）のフローチャートに示す手順となる。まずステップＳ１１で、データサイズＸに１ラインサイズａの２倍のサイズを付加したサイズの領域をＤＲＡＭ中に定義したシステムのメモリ管理モジュールのヒープ領域から確保する。そのアドレスをポインタｐＢｕｆに保存する（あるいはｐＢｕｆにより確保された領域のアドレスを受け取る）。そしてステップＳ１３において、確保したバッファ領域のアドレス［ｐＢｕｆ］に対してＤＲＡＭの実アドレス領域に対するミラーアドレス領域へのオフセットＯｆｆｓｅｔを加算し、最後にクライアントに返すポインタをステップＳ１３で算出したポインタにａを加算する（ステップＳ１４）。このように領域の切り替えをステップＳ１３，Ｓ１４で行う前にクリア処理を行う必要がない。これは、キャッシュエントリのデータは既にＤＲＡＭ上に書き戻されているため、ＤＭＡ転送用のバッファ領域取得シーケンスにおいてキャッシュのクリア処理を行う必要がないためである。一方、ＤＭＡバッファ領域がＤＭＡ転送先になる場合には、コヒーレンシーが保たれないためにライトバック方式同様に図１（Ａ）に示すフローチャートの手順に従う必要がある。
【００４７】
＜＜第２の実施形態＞＞
本実施形態のＣＦスロットとＪＰＥＧ圧縮／解凍装置を搭載するデジタルカメラにおいては、ＣＦに保存された撮影画像データをＪＰＥＧ圧縮／解凍装置で解凍し、解凍された画像データを揮発性メモリにＤＭＡ転送する。そして、転送先のメモリ上で印刷を目的として色変換処理を行った後、ＵＳＢケーブルで接続したダイレクトプリンタへ再度ＤＭＡ転送する。この際にキャッシュ機能許可モードと不許可モードを切り替える方法について説明する。
【００４８】
本実施形態におけるデジタルカメラのシステム構成を図８に示す。図８に示すデジタルカメラのシステム構成は図５とほぼ同じであり、同一部材については同一番号を付与している。図５と異なる点はＵＳＢ通信装置４０１を内蔵し、ＵＳＢケーブル４０２を経由してデジタルカメラ外部にダイレクトプリンタ４０３を接続していることである。また画像データのＪＰＥＧ圧縮／解凍装置４０４を備えている。デジタルカメラの撮影、再生動作は第１の実施形態に示す方法と同様であるが、撮影、再生時の画像の圧縮／解凍をソフトウェアではなくＪＰＥＧ圧縮／解凍装置４０４で行っている。ここでダイレクトプリントによる再生画像の印刷を行うためのデジタルカメラからの再生、通信動作について説明する。図９にそのフローチャートを示す。
【００４９】
まずユーザーがユーザーインターフェース２１６によって再生開始を制御すると、図８に図示しないフラッシュメモリ２１３上に存在する再生プログラムはＣＦ２１５のディレクトリエントリを取得した後に、そこに格納された画像データ（たとえば最新の画像データ）を選択してＣＦ２１５から揮発性メモリ（ＤＲＡＭなど）に読み出す（Ｓ５０１）。このとき画像データはＪＰＥＧ圧縮したままなのでこれをＪＰＥＧ圧縮／解凍装置４０４にデータバス２１１を通じて送信し、画像データのＪＰＥＧ解凍を行う（Ｓ５０２）。ＪＰＥＧ圧縮／解凍装置４０４からの出力はＤＭＡ転送するので、ＣＰＵ２１４の資源を占有せず、より高速な解凍処理を行うことができる。次にプリンティングに必要な色変換処理を信号処理装置Ｂ２１０により行う。具体的には解凍処理によって得られたＹ−Ｃｒ−Ｃｂ空間で定義した各要素のデータを１画素ずつＣ−Ｍ−Ｙ空間で定義する各要素のデータへ変換する色変換処理と（Ｓ５０３）、演算したＣ−Ｍ−Ｙ空間の各要素のデータについてシャープネス処理（Ｓ５０４）を行う。その結果得られる画像データを、再度ＤＭＡ転送によって今度はＵＳＢ通信装置４０１を経由して接続先のダイレクトプリンタ４０３に転送する（Ｓ５０５）。そして最後にダイレクトプリンタ４０３で転送されたデータを印刷して完了する（Ｓ５０６）。
【００５０】
さてここでステップＳ５０３，Ｓ５０４の処理では、揮発性メモリに格納された、解凍した画像データを１画素ごとに独立して処理することが可能である。すなわち画像処理前と画像処理後の画像データを格納するための入力バッファと出力バッファとを別々に用意する必要がない。そのため、改めて処理後のバッファ領域を確保する時間を省略することができる。またステップＳ５０３，Ｓ５０４の処理は、ソフトウェア処理によるものであるから更なるパフォーマンスの向上のためにその画像データバッファ領域がキャッシャブル領域であることが望ましい。しかし一方で、ステップＳ５０２，Ｓ５０５では、パフォーマンス向上のためにＤＭＡ転送を行う。従ってその転送バッファは、キャッシュのコヒーレンシーを維持するためにアンキャッシャブル領域に確保される必要がある。
【００５１】
そこでこの場合、ステップＳ５０２ａでは、ＤＭＡ転送先となる画像データバッファ領域をアンキャッシャブル領域として要求する。その結果、図１（Ａ）の手順でＤＭＡバッファ領域が割り当てられる。その後ステップＳ５０２において、解凍された画像データを割り当てられたＤＭＡバッファ領域へと転送する。そして、ステップＳ５０３の処理に先立って、ステップＳ５０３ａにおいて、ＤＭＡバッファ領域について領域切り替えを要求する。すなわち図１（Ｂ）の領域切り替え処理を実行する。そして、ステップＳ５０３、Ｓ５０４ではキャッシャブル領域としてＤＭＡバッファ領域を用いて画像処理を行うことができる。そしてステップＳ５０５に先立ち、ステップＳ５０５ａでは、ＤＭＡバッファ領域を今度はキャッシャブル領域からアンキャッシャブル領域へと切り替える。
【００５２】
図３に、ステップＳ５０５ａにおいてＤＭＡバッファ領域をキャッシャブルからアンキャッシャブルに変更する手順のフローチャートを示す。いま図９のステップＳ５０４におけるシャープネス処理を終了した時点でキャッシャブル領域のバッファがサイズＸ、ポインタｐＢｕｆの値はＢｕｆ＋ａであるとする。すなわちＤＭＡバッファとしてはアドレスＢｕｆ＋ａからサイズＸが割り当てられている。まずステップＳ２１でサイズＸ分の画像バッファ領域がキャッシュエントリに残らないようにキャッシュエントリをＤＲＡＭに書き戻すためのクリア処理を行う。これはステップＳ５０４でキャッシャブルな領域でのシャープネス処理を行った結果、対象領域の更新データがキャッシュエントリに入っている可能性があるからである。次にステップＳ２２で実アドレス領域からミラーアドレス領域へのオフセットＯｆｆｓｅｔをポインタｐＢｕｆに加算する。その結果、バッファポインタｐＢｕｆとして、アンキャッシャブル領域を指し示すＢｕｆ＋Ｏｆｆｓｅｔ＋ａを得る。こうしてポインタｐＢｕｆで与えられるバッファは、キャッシャブル領域からアンキャッシャブル領域へと切り替えられた。この後、ステップＳ５０５でＤＭＡバッファ領域を転送元とするＤＭＡ転送が実行される。以上のようにしてステップＳ５０５のＵＳＢ通信装置４０１によるダイレクトプリンタ４０３へのＤＭＡ転送においてはキャッシュコヒーレンシーが維持される（キャッシュを使用しないのでインコヒーレントとなることがない）。
【００５３】
なお本実施形態では図８に示すキャッシュシステムはライトバック方式であるとしたがこれがライトスルー方式である場合にも同様である。また本発明の具体例として再生画像のダイレクトプリント印刷の手法を挙げたが、ＤＭＡ転送処理とデータ演算処理を交互に行うようなシーケンスについては全て適用することができる。また本実施形態でデジタルカメラの実施形態を示したが、これに限定されるものでなくＤＭＡ転送機能を有するデータ処理装置については全て適用することができる。
【００５４】
以上のようにして、キャッシャブル用域とアンキャッシャブル領域とを双方向的に切り替えることができるため、ＤＭＡ転送されたデータを対象としてＣＰＵによるデータ処理を行い、データ処理後のデータを再度ＤＭＡ転送する場合であっても、キャッシュコヒーレンシーの維持とＤＭＡ転送の利用とを両立できる。
【００５５】
また第１、第２の実施形態では、ＣＰＵ以外にＤＲＡＭにアクセスするデバイスはＤＭＡマスタであるとしたが、メモリ共有型のマルチプロセッサシステムなどに適用することもできる。ただしこの場合には、キャッシャブル領域とアンキャッシャブル領域との設定が、すべてのプロセッサにおいて共通である必要がある。
【図面の簡単な説明】
【００５６】
【図１】（Ａ）ＤＭＡ転送用バッファ領域の取得方法のフローチャート（ライトバック方式）、（Ｂ）アンキャッシャブル領域からキャッシャブル領域への変換方法のフローチャート（キャッシャブル状態での使用がない場合）
【図２】（Ａ）アンキャッシャブル領域からキャッシャブル領域への変換方法のフローチャート（キャッシャブル状態での使用がある場合）、（Ｂ）ＤＭＡ転送用バッファ領域の取得方法のフローチャート（ライトスルー方式）
【図３】キャッシャブル領域からアンキャッシャブル領域への変換方法のフローチャート
【図４】キャッシュシステムの構成図
【図５】第１の実施形態におけるデジタルカメラシステムの構成図
【図６】実アドレス領域とミラーアドレス領域の概念図
【図７】実施形態における領域切り替えの概念図
【図８】第２の実施形態におけるデジタルカメラシステムの構成図
【図９】第２の実施形態におけるデジタルカメラシステムのダイレクトプリント印刷の説明図
【符号の説明】
【００５７】
２０１  デジタルカメラ
２０２  撮影光学系
２０３  レンズ
２０４  ＣＣＤ
２０５  ＣＤＳ／ＡＧＣ
２０６  Ａ／Ｄコンバータ
２０７  信号処理装置Ａ
２０８  Ｖドライブ
２０９  タイミングジェネレータ
２１０  信号処理装置Ｂ
２１１  データバス
２１２  ＣＰＵバス
２１３  フラッシュメモリ
２１４  ＣＰＵ
２１５  ＣＦ
２１６  ユーザーインターフェース
２１７  ディスプレイコントローラ
２１８  ＶＲＡＭ
２１９  ＤＲＡＭ
２２０  液晶モニタ
２２１  キャッシュコントローラ
２２２  ＳＲＡＭ
【図１】
2006127251.tif 000003
【図２】
2006127251.tif 000004
【図３】
2006127251.tif 000005
【図４】
2006127251.tif 000006
【図５】
2006127251.tif 000007
【図６】
2006127251.tif 000008
【図７】
2006127251.tif 000009
【図８】
2006127251.tif 000010
【図９】
2006127251.tif 000011