JP3938177B2 - データ処理装置及びデータ処理装置におけるメモリ割り当て方法 - Google Patents

データ処理装置及びデータ処理装置におけるメモリ割り当て方法 Download PDF

Info

Publication number
JP3938177B2
JP3938177B2 JP2004316306A JP2004316306A JP3938177B2 JP 3938177 B2 JP3938177 B2 JP 3938177B2 JP 2004316306 A JP2004316306 A JP 2004316306A JP 2004316306 A JP2004316306 A JP 2004316306A JP 3938177 B2 JP3938177 B2 JP 3938177B2
Authority
JP
Japan
Prior art keywords
area
cache
memory
target area
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004316306A
Other languages
English (en)
Other versions
JP2006127251A5 (ja
JP2006127251A (ja
Inventor
岳生 崎村
武志 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2004316306A priority Critical patent/JP3938177B2/ja
Publication of JP2006127251A publication Critical patent/JP2006127251A/ja
Publication of JP2006127251A5 publication Critical patent/JP2006127251A5/ja
Application granted granted Critical
Publication of JP3938177B2 publication Critical patent/JP3938177B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、キャッシュ機能を備えたデータ処理装置に関し、特にキャッシュ機能の有効/無効の切り替えを簡素化したデータ処理装置に関する。
データ処理では演算領域としてDRAM、SRAM等の揮発性半導体メモリを利用する。一般にDRAMは比較的安価であるが、その反面、読み書きの速度が遅い。一方でSRAMは読み書きの速度は速いが高価であるという特徴を持つ。そこで読み書きのパフォーマンスとコストを両立させるために、一次記憶媒体をDRAMとし、二次記憶媒体をSRAMとしたキャッシュ機能が用いられている(非特許文献1等参照)。
ここでキャッシュ機能による処理方法について簡単に説明する。図4はキャッシュ機能を持つハードウェアの構成図を示す。CPU101はキャッシュコントローラ102と接続しており、さらにキャッシュコントローラ102はDRAM103やSRAM104と接続している。105はCPUバスであり、106はデータバスである。一般的にメモリ領域はDRAM103だけで構成することが可能であるが、メモリアクセスのパフォーマンスを向上させるためにDRAM103よりサイズの小さいSRAM104をキャッシュメモリとして用いる。図4において、CPU101からCPUバス105を通じて一次記憶媒体であるDRAM103に対してデータ処理に関連するインストラクション或いはデータのメモリアクセス要求があると、キャッシュコントローラ102は該当するアドレスのデータがSRAM104上にあるかを判断する。該当するデータがSRAM104にマッピングされている場合はSRAM104にアクセスし、SRAM104にマッピングされていない場合はDRAM103にアクセスするとともに、該当するデータをSRAM104へマッピングする。
ここで、キャッシュは、複数のワード(CPUによるメモリのアクセス単位)を通常は2のべき乗まとめたブロック(ラインとも呼ぶ。)を単位として行われる。DRAM103はブロック毎に区切られてアドレスが付されている。DRAMにおける個々のブロックをブロックフレーム、そのアドレスをブロックフレームアドレスと呼ぶ。SRAM104もブロック毎に区切られてブロックフレームごとにDRAM103の内容を保存するとともに、保存したブロックに対応付けてブロックフレームアドレスを保存する。SRAMにおける個々のブロックをキャッシュブロックまたはキャッシュラインと呼ぶ。こうしてSRAMにマッピングされたデータとDRAM上のデータとの対応付けを行っている。すなわち、SRAM104へのマッピングとは、DRAM103上のデータをSRAM104上へ転送するとともに、キャッシュブロックごとに、その内容であるブロックがDRAMのどのブロックフレームに相当ものかを関連づける関連づけ情報(ブロックフレームアドレス)をキャッシュコントローラ102あるいはSRAM104に記憶しておく動作である。マッピングされてブロックフレームのデータが格納されたキャッシュブロックをキャッシュエントリと呼ぶ。
CPU101からのメモリアクセス要求に対してそのアドレスがSRAM104上にマッピングされているか否かの判定は前記関連づけ情報に基づいてキャッシュコントローラ102で行う。キャッシュ機能は、このようにして一次記憶媒体であるDRAM103のデータを、高速な二次記憶媒体であるSRAM104上に局所的に動的にマッピングすることで、マッピングされたデータへのアクセスを高速化する。
マッピングが行われると、同じメモリ領域のデータがDRAMとSRAMという2つの異なる物理メモリに存在することになる。そこでキャッシュコントローラ102は双方のデータの同一性(コヒーレンシー)を保証しなければならない。すなわち、SRAM104上のキャッシュエントリがそれに対する書き込みアクセスによって変更を受けた場合、そのキャッシュエントリのマッピングが解除された後に再びCPU101からDRAM103へのアクセスが発生するまでに、キャッシュエントリの変更内容をDRAM103に反映させなければならない。この操作がコヒーレンシーの保証を意味する。キャッシュエントリを対応するブロックフレームに書き戻す方式としては、キャッシュへの書き込みが発生したと同時にDRAM103上の対応するブロックフレームへのデータの書き込みを行うライトスルー方式と、キャッシュエントリへのマッピングの解除と同時に、当該キャッシュエントリに対応するDRAM103上のブロックフレームへのデータの書き込みを行うライトバック方式の2種類が存在する。なお、SRAM104上のどのキャッシュエントリに書き戻すか(あるいは無効化するか)についてはキャッシュコントローラ102の仕様に依存し、セットアソシエイティブ方式やフルアソシエイティブ方式では主にLRUアルゴリズムが用いられる。
ライトバック方式では、キャッシュコントローラ102(あるいはSRAM104)に、SRAM104上のマッピングされたそれぞれのキャッシュエントリが変更されたか否かを示すフラグ(これをダーティビットという。)を持っており、このフラグに応じて、キャッシュエントリを反映するためのDRAM103の更新を行う。この更新は、空きキャッシュブロックがない状態でキャッシュミスが生じ、キャッシュエントリの置換が行われる場合と、たとえばCPUにより実行されているプログラム(これをクライアントと呼ぶ。)からの明示的な書き戻し要求によって行われる場合がある。後者の場合、キャッシュエントリを残したままDRAM103へのデータ更新を行う処理(フラッシュ処理という。)と、DRAM103へのデータ更新後にキャッシュエントリを消去する処理 (クリア処理という。)のいずれかを選択することができる。また、ライトバック方式では、一度変更したキャッシュエントリをDRAM103へ書き戻すことなく無効化する機能(この機能を実現する処理を無効化処理という。) を備えたものもある。この機能は、キャッシュブロックに対応してもうけられた無効フラグの値を操作することで実現される。無効化処理は書き戻し動作を伴わないが、便宜的に、書き戻し処理(あるいは書き戻し要求)といった場合には無効化処理も含むものとする。
ライトスルー方式およびライトバック方式のいずれの方式にしても、CPU101からメモリにアクセスする場合は、キャッシュコントローラ102を介するために、SRAM104を経由してDRAM103への読み出し、書き込みを行う。しかしDMA(ダイレクトメモリアクセス)転送機能を備えたデータ処理装置では、DMAブロックが直接DRAM103からのデータの読み出し、書き込みを行う。そのため、DMAではSRAM104へのアクセスが一切発生しない。つまり、SRAM104上にマッピングされたDRAM103のデータ領域すなわちキャッシュエントリに対応するブロックフレームに、DMA転送によってデータが書き込まれる(DMAライト)と、DRAM103のデータとSRAM104とのデータのコヒーレンシーが保証されなくなる。この状態で、キャッシュコントローラ102によりキャッシュエントリのDRAM103への書き戻しが発生すると、書き戻されたブロックフレームによって、DMA転送によりそのブロックフレームに書き込まれていたデータは破壊される。
くわえてライトバック方式では、キャッシュエントリに対応するDRAM103のブロックフレームからDMA転送によってデータが読み出される(DMAリード)と、キャッシュエントリは更新されているにも関わらず、DRAM103上の古いデータが読み出されるという問題がある。なおキャッシュエントリとキャッシュエントリに対応するDRAM103のブロックフレームをまとめてキャッシュデータと呼ぶことにする。
そこで上記問題を解決するために、DMA転送時にはキャッシュのフラッシュ処理、もしくはクリア処理を行ってDRAM103とSRAM104の間のコヒーレンシーを保証することが必要である。
しかしキャッシュのフラッシュ処理やクリア処理は、キャッシュコントローラ102によるダーティビットの走査とダーティビットが存在する場合のキャッシュエントリのDRAM103領域への書き戻し、あるいはその後のキャッシュエントリの消去を含むため、大きなオーバーヘッドとなる。またたとえばマルチタスクオペレーティングシステムで制御されたデータ処理装置のように、DMA転送処理を行うクライアントを含む複数のクライアントからDRAMにアクセス可能な場合には、複数のクライアントによる処理対象となるキャッシュデータのコヒーレンシーを維持しなければいけないという制約がある。
そこで、CPUからのアクセス要求があってもキャッシュコントローラ102がキャッシュを行わない(すなわちSRAM104へのマッピングを行わない)メモリ領域を静的に確保しておき、DMA転送用のメモリ領域はその領域に割り当てることで、コヒーレンシーを維持しつつ、そのための処理オーバーヘッドを回避することができる。なおこのような領域を以降アンキャッシャブル領域(キャッシュ非対象領域)と呼び、キャッシュコントローラ102がCPUからDRAM103へのアクセス要求に応じてSRAM104にマッピングする領域のことをキャッシャブル領域(キャッシュ対象領域)と呼ぶ。このような構成の装置において、DMA転送のターゲット領域をアンキャッシャブル領域に割り当てると、DMAに先立つコヒーレンシー維持処理を行うことなくキャッシュデータのコヒーレンシーを維持可能となる。しかしDMA転送されたデータに対して転送後にデータ演算処理を行う場合には、DMA転送領域についてはキャッシュ機能が働かずに処理時間が非常にかかってしまう。そこでDMA転送完了後に、その領域をアンキャッシャブル領域からキャッシャブル領域へと切り替えれば、その後の処理はキャッシュを用いて高速に行うことができる。その切り替えのための手段として、キャッシュコントローラ102に対してキャッシャブル領域の変更命令を発行することが可能なメモリ管理ユニットを備えたメモリ管理機能が考案されている(特許文献1等参照)。
また、CPUコアもしくはその補助ユニットとして、ハードウェアで直接メモリのプロテクション情報やキャッシュ制御情報(キャッシャブル領域/アンキャッシャブル領域の切り替えを含む。)を管理するためのメモリ管理ユニットもある。またソフトウェアで、プロテクション情報やキャッシュ制御情報を管理するメモリ管理ユニットを実現するシステムも存在する。
ジョンヘネシー、デビッドパターソン著、「コンピュータ・アーキテクチャ」1992年12月25日発行、p408−428 特開平2000−181796号公報
しかし上述したメモリ管理機能を有するメモリ管理ユニットは普及していないし、またそのための専用ハードウエア資源を必要とすることから高価なものとなる。さらに、このようなメモリ管理機能でサポートするキャッシャブル領域とアンキャッシャブル領域の領域情報リソースは限られている。すなわち、データ処理装置のシステム全体で取り扱う任意数のメモリ領域について領域情報を設定することができない。領域情報は、対応する領域がキャッシャブル領域であるか、アンキャッシャブル領域であるかを示す情報である。
またメモリ管理ユニットを備えたCPUも、管理情報の登録、参照及びそれらを管理するための領域を必要としており、また処理が複雑になるという問題点がある。一般的に普及しているとは言えず利用しづらい点や、領域情報リソースが限られている点は上記メモリ管理ユニットと共通する。
また、DMA転送先のDRAM領域がキャッシュ機能が有効の場合にはSRAM(キャッシュメモリ)にDMA転送領域のデータが存在している可能性がある。そのため通常はDMA転送を行う前にキャッシュのクリア処理をしなければならない。しかし局所的なキャッシュのクリア処理を持たず、SRAMの全領域に対して行わねばならないシステムでは、SRAMの全領域の書き戻し処理は処理時間が長く、読み出し時のオーバーヘッドとなる。これはキャッシュ機能が有効の状態でバッファを確保した場合であり、DMA転送時にクリア処理を実行すると、ファイル読み出しが非常に遅くなる。またマルチタスク仕様のシステムにおいてはDMA転送処理以外のタスクが同じメモリ領域をアクセスする可能性があるため、仮にあるタスクでDMA転送前のクリア処理を実行しても、他のタスクによってキャッシュのコヒーレンシーが維持されないという問題もある。
本発明は上記従来例に鑑みてなされたもので、DMA転送処理を含む複数のクライアントからDRAMにアクセス可能である場合に、CPUから当該DRAMにアクセスする際にはキャッシュ機能を用いるか用いないかを、メモリ管理ユニットを用いない簡素な機構で動的に切り替えることが可能であるとともに、キャッシュ機能を用いる場合にはキャッシュコヒーレンシーを確実に維持できるデータ処理装置を提供することを目的とする。
また、キャッシャブル領域とアンキャッシャブル領域を、管理用リソースによる制限を受けることなく、かつ容易に管理できるデータ処理装置を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を備える。
すなわち、キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、CPUから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置であって、
前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して、同一のメモリロケーションを重複して対応付けられたメモリと、
前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更手段とを備える。
あるいは、第1の記憶媒体と第2の記憶媒体を有し、第1の記憶媒体に記憶した少なくとも一つ以上のデータのうち、読み出し或いは書き込み要求のあったアドレスのデータを自動的に第2の記憶媒体に転送してデータ処理のできるデータ処理装置であって、
前記第1の記憶媒体の領域から動的に確保した領域において前記第2の記憶媒体への転送を許可するモードと許可しないモードに動的に切り替える切り替え手段を備えることを特徴とする。
本発明によれば、ひとつのバッファ領域を、DMA転送のためにはアンキャッシャブル領域として設定し、CPUによる処理のためにはそのパフォーマンス向上のためにキャッシャブル領域として設定する領域切り替えを簡素な構成により実現できる。
<<第1の実施形態>>
本実施形態では、書き込み消去可能な不揮発性半導体メモリ、たとえばコンパクトフラッシュ(登録商標、以下CFと略す。)に撮影した画像データを保存するディジタルカメラにおいて、撮影してCFに格納した圧縮画像データを伸張し液晶モニタに再生する際にキャッシュ機能許可モードと不許可モードを切り替える方法について説明する。
本実施形態におけるデジタルカメラのシステム構成を図5に示す。ここで,201はデジタルカメラ全体、202は撮影光学系、203はレンズ、204はCCD、205はCDS/AGC、206はA/Dコンバータ、207は信号処理装置A、208はV−ドライブ、209はタイミングジェネレータ(以下TGと略す)、210は信号処理装置B、211はデータバス、212はCPUバス、213は、デジタルカメラを制御するためのプログラム(図1乃至図3あるいは図9に示す手順を実行するためのプログラムを含む。)を含む、データを書き込んだフラッシュメモリ 、214はCPU、215は画像データの記録を行うCF、216はボタンや十字キー、タッチパネル等の操作部を持つユーザーインターフェース、217はディスプレイコントローラ、218はVRAM、219はプログラムの実行領域に用いるDRAM、220は液晶モニタ、221はキャッシュコントローラ、222はキャッシュに用いるSRAMである。
まず、デジタルカメラ201の撮影表示に関する動作について説明する。以下の制御は全てDRAM219のプログラムメモリ上にCF215或いはフラッシュメモリ213からロードしたソフトウェアをCPU214上で起動することで行う。まず撮影光学系202のレンズ203によってCCD204に結像した画像を、CCD204に電気信号に変換し、その電気信号の振幅やゲインをCDS/AGC205によって調整する。さらにA/Dコンバータ206を用いてアナログ信号からデジタル信号に変換する。このデジタル信号を、信号処理装置A207を用いて、画像の色座標系上の値に変換する。ここで色座標系にはY−C座標系のほか、RGB座標系等、様々な色空間の座標系を取ることができ、本発明中では限定されるものではない。
信号処理装置A207からはCCD204の撮影画素数に応じたデータが画素クロックに同期して出力される。すなわち図5において信号処理装置A207から出力する制御線上の値は画素クロックであり、データ線上の値は実際に撮影光学系202から取得した実画像データとなる。さらに、同様に信号処理装置A207の制御線上には画素クロックと同時にCCD204の撮影エリアのサイズに対応した制御信号(同期信号)を出力する。すなわち撮影エリアの1ラインが始まる度に水平同期信号HDを、撮影エリアの1フィールドおきに垂直同期信号VDを出力する。
このようにして、撮影光学系202によって撮影して色変換した信号を信号処理装置A207の発生する制御信号と同期して出力し、信号処理装置B210に入力する。信号処理装置B210は主にDRAM219とのデータの読み書き、CF215とのデータの読み書き、ディスプレイコントローラ217の駆動、液晶モニタ220画像表示用データのVRAM218への書き込み、CPU214からの信号の変換、撮影光学系への制御信号の送信、デジタルカメラ201外部への画像データの送信を制御する。ユーザーインターフェース216はユーザーからの撮影、再生、モード設定、液晶モニタ220 ON/OFF、CF215カードの着脱を行う。
撮影した静止画画像データをCF215へ記録する際には、まず信号処理装置B210に入力したデータを一旦DRAM219に格納し、ここでソフトウェアプログラムによるJPEG画像フォーマットへの圧縮を行う。圧縮後の画像データは再びDRAM219に格納して、ここからCF215に転送して記録する。またCF215に格納した画像を再生して液晶モニタ220に表示する場合はCF215から一旦DRAM219へ読み出し、ここでソフトウェアプログラムによるJPEG画像フォーマットからの伸張を行う。その後VRAM218に転送しディスプレイコントローラ217を駆動して液晶モニタ220に表示する。
ソフトウェアプログラムによる圧縮画像データの伸張処理および画像データのアクセスは、全てフラッシュメモリ213やDRAM219を対象とする。そのためその処理速度はそれぞれのメモリのアクセス速度に依存する。従ってフラッシュメモリ213やDRAM219に比べてアクセス速度が速いSRAM222を、キャッシュコントローラ221による制御によりキャッシュメモリとして用いることによって処理速度をさらに速くすることができる。ここでDRAM219はCPUのアドレス空間いっぱいに実装されておらず、少なくとも上位(MSB側)1ビットを使用せず下位のビットでアクセス可能な容量に収められている。そして、アドレス信号の上位少なくとも1ビット(これをミラービットと呼ぶことにする。)は、その値にかかわらず実装されたDRAMをイネーブルにするように結線される。このように構成することで、DRAM中のメモリロケーションは、ミラービットのみが異なる複数のアドレス空間に重複して割り当てられることになる。これは図1のステップS3において詳述する。なお、ミラービットは上位ビットとしたがこれは実メモリのアドレス空間を連続して確保するためであり、不連続でもよい場合にはどのビットに割り当てても良い。
ここで図5のシステムにおけるキャッシュの動作は、従来例において説明した通りである。なお本実施形態におけるデジタルカメラに搭載するキャッシュシステムはライトバック方式であり、キャッシュデータの同一性を保持するためのSRAM222からのデータ書き戻しは、キャッシュミスによりキャッシュエントリの入れ替えが行われる場合、或いはプログラムで明示的な書き戻し制御を実行した場合に発生する。ユーザからの明示的な書き戻し制御では、SRAM222にキャッシュエントリを残して書き戻すフラッシュ処理と、キャッシュエントリを消去して書き戻すクリア処理と、書き戻しを行わずにキャッシュエントリを消去するのみの無効化処理のいずれかがユーザの指示に応じて行われる。このキャッシュシステムの動作はキャッシュコントローラ221を駆動している場合であり、ユーザープログラムからキャッシュコントローラ221の駆動のON/OFFの制御をすることによってキャッシュ機能自体を有効にしたり無効にしたりすることができる。またフラッシュメモリ213、DRAM219の領域においてキャッシュ機能が有効な領域(キャッシャブル領域あるいはキャッシュ対象領域)、もしくは無効な領域(アンキャッシャブル領域あるいはキャッシュ非対象領域)の指定を、キャッシュコントローラ221が持つレジスタ等で指定可能である。ただし、本発明においては、このレジスタによる領域の指定は動的に行える必要はない。このレジスタには、たとえばキャッシュ対象/非対象それぞれの領域の先頭及び末尾のアドレスが格納される。キャッシュコントローラ221は、CPUからのメモリアクセス発生時にまずアクセス先のアドレスとレジスタの値とを比較し、そのアドレスがキャッシュ非対象であることを示していればキャッシュ機能を働かせず直接DRAMにアクセスさせる。一方キャッシュ対象であれば通常のキャッシュ機能を働かせて、キャッシュの検索を行ってヒットすれば該当するキャッシュエントリにアクセスし、ミスであれば該当するブロックフレームをキャッシュブロックにマッピングする。その際、ダーティビットの値に応じて消去されるキャッシュエントリの書き戻しが行われる。
なお本実施形態においては、明示的な書き戻し要求では、フラッシュメモリ213、DRAM219上の特定のプログラム領域及びデータ領域のキャッシュエントリのみを対象とした処理はできないものとする。すなわちユーザによる明示的な書き戻し要求はフラッシュメモリ213、DRAM219の全領域を対象に行う。従ってSRAM222の全領域のキャッシュエントリについて処理を行う。ただし本発明はこの例に限定されるものではなく、特定のメモリ領域対象のキャッシュ処理が可能なデータ処理装置についても同様に適用可能である。さらに本実施形態のシステムはMMU(メモリ管理ユニット)を持たないものとする。ただし本発明はこの例に限定されるものではなく、有限の対象領域数を管理するMMUを搭載するデータ処理装置についても適用可能である。
CF215からの圧縮画像データの読み出しには図5に図示しない信号処理装置B210に内蔵するCFコントローラを用いる。このときCFコントローラからDRAM219へのデータ転送をCPU214によるメモリアクセスを行わずに高速に行うために信号処理装置B210内のDMAコントローラ210aを用いて転送する。すなわち、DRAM219はCPUおよびDMAにより多元的にアクセス可能に構成されている。本発明はこのDMAのために割り当てられるDRAM領域(DMAバッファ領域)について、キャッシュ対象領域と非対象領域の切り替えを簡素な機構で実現するものである。
<DMAバッファ領域の割り当て>
図1(A)にサイズXのDMA転送用バッファを静的に確保するまでのフローチャートを示す。このフローチャートは、DMAを行うプログラムがDMAバッファ領域の割り当てをオペレーティングシステム等のシステムプログラムに要求した場合に実行される。DMAバッファ領域が割り当てられれると、そのアドレスを示すポインタがユーザ(要求したプログラム)に渡される。そして、DMAバッファ領域が複数のプロセスにより共有される場合には、当該複数のプロセスは、たとえばそのDMAバッファ領域へのアドレスを示すポインタをグローバル変数として共有することでDMAバッファ領域も共有できる。ここでSRAM222に対してキャッシュコントローラ221がフラッシュやクリアを行う1制御単位のサイズをaとする。この1制御単位は一般的にキャッシュブロックあるいはキャッシュラインと呼ばれるものであり、以降これを1ラインと呼ぶこととする。
まずデータサイズXに1ラインサイズaの2倍のサイズを付加したサイズだけの領域をDRAM19中に定義したシステムのメモリ管理モジュールのヒープ領域から確保し、そのアドレスをポインタpBufに保存する(ステップS1)。あるいは、オペレーティングシステム等から、割り当てられた領域をポインタpBufにより受け取った場合には、それをそのまま用いればよい。確保するメモリサイズは、(X+2a)となる。このときの確保したバッファメモリのアドレスをBufとし、変数Vの内容を[V]と表せば、ステップS1により[pBuf]=Bufとなる。なおメモリの割り当て自体はオペレーティングシステムにより行われてもよい。またサイズ2aを余分に確保する理由は後述する。
次にキャッシュのクリア処理を行う(ステップS2)。この処理によりSRAM222上のいずれのキャッシュブロックにもバッファ領域に対応するデータ(すなわちキャッシュエントリ)は存在せず、全て書き戻された状態になっている。そしてステップS3において、ステップS1で確保したバッファ領域へのポインタpBufの値Bufに対してDRAM219の実アドレス領域に対するミラーアドレス領域へのオフセット値Offsetを加算する。
ここでミラーアドレス領域について図6に説明する。301は32ビットアドレス空間で定義したシステム中でDRAMに対応付けることが可能なアドレス領域(DRAM実装可能領域)である。302はDRAMが実装されたアドレス領域である。この領域を実アドレス領域と名付ける。図6の全メモリ領域は32ビットのアドレスによって指定することができるが、実アドレス領域302は32ビットより少ないビット数で指定することができる。例えば256MBのDRAMを実装していれば実アドレス領域は28ビットで指定することができる。このときCPUとDRAMのアドレスの結線が下位28ビットのみであり(DRAMはアドレス信号が多重化されているのが通常であるし、バンキングされている場合もあるが、論理的にはアドレス信号が結線されていると考えることができる。)、DRAMのコントローラ(図5に図示しない)は上位4ビットを認識することができない。なお、実装された256MBのDRAMのデバイスはDRAM実装可能領域へのアクセスが発生する都度かならずチップセレクトされるものとする。従って下位の28ビットだけをDRAMコントローラは認識するので、上位4ビットがいかなる値であっても下位28ビットが同じ値であれはDRAMの同じ領域へのアクセスが発生する。つまりユーザから見ると、実装されたDRAMの領域302がDRAM領域への対応付けが可能な全領域301において繰り返してアクセスされるようになる。すなわち、領域303や304に対するアクセスは、アドレスは違っていても、領域302に対するアクセスとなる。この実アドレス領域302以外の領域であって、図6に示すようにDRAMに対してアクセスできるアドレス空間のことをミラーアドレス領域と呼ぶ。もちろん、実アドレス領域とミラーアドレス領域とは対等であって、たとえば領域303を実アドレス領域と呼び、領域302をミラーアドレス領域と呼ぶこともできる。しかし本実施形態では、DRAMに繰返し対応付けられたアドレス空間のうち、最も小さなアドレスをもつ領域を実アドレス領域と呼ぶことにする。
ところで、上記に示すようにハードウェアシステムで結線したビット数に応じたサイズの周期でミラーアドレス領域は発生する。これに対して、キャッシュコントローラ221は、キャッシャブル領域およびアンキャッシャブル領域のアドレスを32ビット単位で(すなわちアクセス可能な空間全体から)判定する。従って本実施形態では、DRAMの実アドレス領域302をキャッシャブル領域とするよう領域定義用のレジスタを設定し、DRAM実装可能領域301のその他のミラーアドレス領域をアンキャッシャブル領域とするよう設定しているために、同じDRAMの領域に対して実アドレス領域302からはキャッシャブル領域として、そのミラーアドレス領域からはアンキャッシャブル領域としてアクセスすることができる。つまりステップS1においてはキャッシャブル領域に要求されたデータ領域を確保している。そして、ステップS3において、DRAMの実アドレス領域に対するポインタpBufにミラーアドレス領域へのオフセットを加算するということは、ポインタpBufにより示されるメモリ領域をキャッシャブル領域からアンキャッシャブル領域へと切り替えることを意味する。
ミラーアドレス領域へのオフセットは、ミラーアドレス領域の出現周期(すなわちDRAMの容量)の整数倍に相当する値であり、かつ、DRAM実装可能領域301内に収まる値である。この値をOffsetとすれば、ステップS3においては[pBuf]の値にOffsetを加算し、Buf+OffsetをポインタpBufの新たな値とする。
次にステップS4でサイズX+2a分確保したバッファ領域のうち、バッファの先頭と最後それぞれからキャッシュラインサイズa分だけ除いた内側の領域をクライアントに渡すために、そのバッファポインタの値[pBuf]にラインサイズaを加算する。すなわちBuf+Offset+aをポインタpBufの新たな値とする。これは通常のキャッシュ処理の制御単位がSRAM222の1ラインのサイズに相当するのに対して、本システムでのメモリ管理モジュールにより確保されるメモリが、DRAMのブロックフレームのアライメントに対応しているとは限らないためである。このため、アンキャッシャブル領域とキャッシャブル領域とがひとつのブロックフレーム内に存在する事態が生じ得る。この場合、キャッシャブル領域について、SRAMのキャッシュブロックからDRAMのブロックフレームへの書き戻しが行われると、同じキャッシュブロックに属するアンキャッシャブル領域も書き戻されてしまう。これを防止するためにDMAバッファ領域を確保する際には、DRAMに確保されるDMAバッファ領域が他のプロセス等に割り当てられる領域と同じブロックフレームに属さないよう、DMAバッファ領域の前後にキャッシュラインサイズの余裕(余白領域)をとる。なお、本実施形態ではその余裕として、DMAバッファ領域の前後にそれぞれキャッシュラインサイズを確保しているが、キャッシュラインよりも1ワード分小さな領域(すなわちa−1(ワード))をDMAバッファ領域の前後に確保できれば十分である。
また、本発明によれば、もともとキャッシャブル領域として確保されたDRAMの領域もアンキャッシャブル領域に切り替えることができる。このため、DRAM上へのメモリ領域は、厳密には、ブロックフレームのアラインメントに沿って割り当てておかねば上述した問題は生じ得る。そのためメモリ管理モジュールは、プロセス(クライアント)からDRAM上の領域を要求された場合、ブロックフレームのアラインメントに沿って割り当てるのが望ましい。しかし、CPUからDRAMにアクセスする場合にはキャッシュ機能を使用するのが通常であることから、DMAを用いないプロセスが、キャッシャブル領域として確保したDRAM領域をアンキャッシャブル領域に切り替えることは実際上はないと考えられる。そこで本実施形態では、1キャッシュラインにキャッシャブル領域とアンキャッシャブル領域とが混在するという事態は、実際上は、一方がDMAバッファとして割り当てられた場合に限って生じるものとの前提に立ち、DMAバッファ領域の確保の際のみ、割り当てるDMAバッファ領域の前後にキャッシュラインサイズの余裕を確保している。こうすることで、無駄な領域を割り当てる必要がなくなり、メモリの利用効率を必要以上に低下させることを防止できる。
以上のようにしてCFからデジタルカメラシステムのDRAMのアドレスBuf+Offset+aから始まるサイズXのバッファ領域が確保され、そのアドレスがポインタpBufを介して領域の要求元のクライアントに対して渡される。クライアントプロセスは、ポインタpBufの内容で示されるサイズXの領域を割り当てられたDMAバッファ領域として使用する。すなわち、このクライアントプロセスは、そのように確保されたDMAバッファ領域に、CF215に保存されたJPEG圧縮された画像データを、CPU以外のデバイスをマスタとするDMA転送により書き込むことができる。そしてこのDMAバッファ領域はアンキャッシャブル領域であるために、転送されたデータがキャッシュエントリの書き戻しにより上書きされることはない。
<バッファ領域の切り替え>
次にこのDRAM上のDMAバッファ領域に書き込まれた画像データを伸張処理をするために、ミラーアドレス領域に存在するアンキャッシャブルなバッファ領域をキャッシャブル領域に変換する手順について説明する。図1(B)にそのフローチャートを示す。ステップS5では、DMAバッファ領域、たとえばDMA転送を終了して画像データが書き込まれているDMAバッファ領域のポインタpBufの値から、DRAMの実アドレス領域からミラーアドレス領域へのオフセットOffsetを減じる。すなわちpBufを[pBuf]−Offsetとする。この結果pBufは、(Buf+Offset+a)−Offset=Buf+aとなる。クライアントは、pBufで指し示される領域をDMAバッファ領域としてそれまでどおり使用する。この操作によって今までアンキャッシャブル領域からアクセスしていたバッファ領域をキャッシャブル領域からアクセスすることが可能となる。この場合DRAM上の画像データに対してキャッシュ機能を生かした高速な画像処理(伸張処理)が実現できる。伸張された画像データは、たとえば液晶モニタ218に表示される。ただし、DMA転送に用いると従来の問題が生じ得るので、図1(B)による領域変換を行ったなら、その領域はCPU以外からはアクセスしない。以上のようにしてJPEG画像データの伸張処理を完了した後、CPU214の制御によってDRAM219から画像表示用データのVRAM218への書き込みを行い、ディスプレイコントローラ217によって液晶モニタ220に表示する。
図7に上記処理の模式図を示す。CPUのアドレス空間701はキャッシャブル領域とアンキャッシャブル領域とに区分されている。この区分はキャッシャブル領域が実アドレス領域に、アンキャッシャブル領域がミラーアドレス領域になるように設定されている。ともにサイズはARで同一である。例えば実アドレス領域の先頭が00000000hで、AR=10000hであれば、図7のミラーアドレス領域1の先頭アドレスは00010000h、ミラーアドレス領域2の先頭アドレスは00020000hとなる。そしてミラーアドレス領域2をアンキャッシャブル領域として使用するのであれば、Offsetは2ARである。そして図1(A)の手順により、ポインタ711はポインタ712に変更され、その結果ポインタpBufの示す領域は、実アドレス領域からミラーアドレス領域2に切り替えられる。
こうして、DMA転送中のキャッシュデータのコヒーレンシーとキャッシュ機能による高速データ処理の両立を達成できる。すなわち、本実施形態によれば、割り当てられたDRAM上のメモリ領域の情報(アドレス)をクライアントプロセスに渡すためのポインタに、キャッシャブル領域とアンキャッシャブル領域とを切り替えるためにメモリ構成等によってあらかじめ決められたオフセット値を加算あるいは減算するだけでキャッシャブル領域とアンキャッシャブル領域とを切り替えることができる。このため、キャッシャブル領域とアンキャッシャブル領域とを動的に切り替える仕組みを持たないプロセッサを用いた場合にも、領域切り替えを行うことができる。また、ある領域がクライアントに割り当てられた場合、それがキャッシャブル領域であろうとアンキャッシャブル領域であろうと、物理的には同一のメモリロケーションである。そのため、メモリ管理を行うオペレーティングシステムなどは、領域切り替えが行われても、何ら影響を被らずにメモリの管理を行うことができる。
<変形例>
(1)本実施形態の場合には、DMA転送中にはキャッシャブル領域からのアクセスがないものという前提で図1(B)に示す手順について説明した。しかし、もしDMA転送中にその他のタスクによってミラーアドレス領域からではなく実アドレス領域からのアクセスによってDMA転送後のデータが変更されている可能性があるのであれば、図1(B)のアンキャッシャブル領域からキャッシャブル領域への切り替えは図2(A)のように行われる。図2(A)においては、ステップS15を実行する前に実アドレス領域でのアクセスがあるか否かの判定を行って(ステップS16)、あればキャッシュのクリア処理を行う(ステップS17)。この後初めて領域の切り替えをステップS15で実行する。こうすることで、キャッシュエントリによりDMAバッファ領域が上書きは介されることを防止できる。
(2)本実施形態では、図5に示すキャッシュシステムはライトバック方式であるとした。しかしライトスルー方式である場合には、DRAM上に割り当てられたDMAバッファ領域がDMAの転送元であるか或いは転送先であるかに依存して、DMAバッファ領域の割り当て時の処理手順が変わる。確保しようとするDMAバッファ領域がDMAの転送元である場合には、図2(B)のフローチャートに示す手順となる。まずステップS11で、データサイズXに1ラインサイズaの2倍のサイズを付加したサイズの領域をDRAM中に定義したシステムのメモリ管理モジュールのヒープ領域から確保する。そのアドレスをポインタpBufに保存する(あるいはpBufにより確保された領域のアドレスを受け取る)。そしてステップS13において、確保したバッファ領域のアドレス[pBuf]に対してDRAMの実アドレス領域に対するミラーアドレス領域へのオフセットOffsetを加算し、最後にクライアントに返すポインタをステップS13で算出したポインタにaを加算する(ステップS14)。このように領域の切り替えをステップS13,S14で行う前にクリア処理を行う必要がない。これは、キャッシュエントリのデータは既にDRAM上に書き戻されているため、DMA転送用のバッファ領域取得シーケンスにおいてキャッシュのクリア処理を行う必要がないためである。一方、DMAバッファ領域がDMA転送先になる場合には、コヒーレンシーが保たれないためにライトバック方式同様に図1(A)に示すフローチャートの手順に従う必要がある。
<<第2の実施形態>>
本実施形態のCFスロットとJPEG圧縮/解凍装置を搭載するデジタルカメラにおいては、CFに保存された撮影画像データをJPEG圧縮/解凍装置で解凍し、解凍された画像データを揮発性メモリにDMA転送する。そして、転送先のメモリ上で印刷を目的として色変換処理を行った後、USBケーブルで接続したダイレクトプリンタへ再度DMA転送する。この際にキャッシュ機能許可モードと不許可モードを切り替える方法について説明する。
本実施形態におけるデジタルカメラのシステム構成を図8に示す。図8に示すデジタルカメラのシステム構成は図5とほぼ同じであり、同一部材については同一番号を付与している。図5と異なる点はUSB通信装置401を内蔵し、USBケーブル402を経由してデジタルカメラ外部にダイレクトプリンタ403を接続していることである。また画像データのJPEG圧縮/解凍装置404を備えている。デジタルカメラの撮影、再生動作は第1の実施形態に示す方法と同様であるが、撮影、再生時の画像の圧縮/解凍をソフトウェアではなくJPEG圧縮/解凍装置404で行っている。ここでダイレクトプリントによる再生画像の印刷を行うためのデジタルカメラからの再生、通信動作について説明する。図9にそのフローチャートを示す。
まずユーザーがユーザーインターフェース216によって再生開始を制御すると、図8に図示しないフラッシュメモリ213上に存在する再生プログラムはCF215のディレクトリエントリを取得した後に、そこに格納された画像データ(たとえば最新の画像データ)を選択してCF215から揮発性メモリ(DRAMなど)に読み出す(S501)。このとき画像データはJPEG圧縮したままなのでこれをJPEG圧縮/解凍装置404にデータバス211を通じて送信し、画像データのJPEG解凍を行う(S502)。JPEG圧縮/解凍装置404からの出力はDMA転送するので、CPU214の資源を占有せず、より高速な解凍処理を行うことができる。次にプリンティングに必要な色変換処理を信号処理装置B210により行う。具体的には解凍処理によって得られたY−Cr−Cb空間で定義した各要素のデータを1画素ずつC−M−Y空間で定義する各要素のデータへ変換する色変換処理と(S503)、演算したC−M−Y空間の各要素のデータについてシャープネス処理(S504)を行う。その結果得られる画像データを、再度DMA転送によって今度はUSB通信装置401を経由して接続先のダイレクトプリンタ403に転送する(S505)。そして最後にダイレクトプリンタ403で転送されたデータを印刷して完了する(S506)。
さてここでステップS503,S504の処理では、揮発性メモリに格納された、解凍した画像データを1画素ごとに独立して処理することが可能である。すなわち画像処理前と画像処理後の画像データを格納するための入力バッファと出力バッファとを別々に用意する必要がない。そのため、改めて処理後のバッファ領域を確保する時間を省略することができる。またステップS503,S504の処理は、ソフトウェア処理によるものであるから更なるパフォーマンスの向上のためにその画像データバッファ領域がキャッシャブル領域であることが望ましい。しかし一方で、ステップS502,S505では、パフォーマンス向上のためにDMA転送を行う。従ってその転送バッファは、キャッシュのコヒーレンシーを維持するためにアンキャッシャブル領域に確保される必要がある。
そこでこの場合、ステップS502aでは、DMA転送先となる画像データバッファ領域をアンキャッシャブル領域として要求する。その結果、図1(A)の手順でDMAバッファ領域が割り当てられる。その後ステップS502において、解凍された画像データを割り当てられたDMAバッファ領域へと転送する。そして、ステップS503の処理に先立って、ステップS503aにおいて、DMAバッファ領域について領域切り替えを要求する。すなわち図1(B)の領域切り替え処理を実行する。そして、ステップS503、S504ではキャッシャブル領域としてDMAバッファ領域を用いて画像処理を行うことができる。そしてステップS505に先立ち、ステップS505aでは、DMAバッファ領域を今度はキャッシャブル領域からアンキャッシャブル領域へと切り替える。
図3に、ステップS505aにおいてDMAバッファ領域をキャッシャブルからアンキャッシャブルに変更する手順のフローチャートを示す。いま図9のステップS504におけるシャープネス処理を終了した時点でキャッシャブル領域のバッファがサイズX、ポインタpBufの値はBuf+aであるとする。すなわちDMAバッファとしてはアドレスBuf+aからサイズXが割り当てられている。まずステップS21でサイズX分の画像バッファ領域がキャッシュエントリに残らないようにキャッシュエントリをDRAMに書き戻すためのクリア処理を行う。これはステップS504でキャッシャブルな領域でのシャープネス処理を行った結果、対象領域の更新データがキャッシュエントリに入っている可能性があるからである。次にステップS22で実アドレス領域からミラーアドレス領域へのオフセットOffsetをポインタpBufに加算する。その結果、バッファポインタpBufとして、アンキャッシャブル領域を指し示すBuf+Offset+aを得る。こうしてポインタpBufで与えられるバッファは、キャッシャブル領域からアンキャッシャブル領域へと切り替えられた。この後、ステップS505でDMAバッファ領域を転送元とするDMA転送が実行される。以上のようにしてステップS505のUSB通信装置401によるダイレクトプリンタ403へのDMA転送においてはキャッシュコヒーレンシーが維持される(キャッシュを使用しないのでインコヒーレントとなることがない)。
なお本実施形態では図8に示すキャッシュシステムはライトバック方式であるとしたがこれがライトスルー方式である場合にも同様である。また本発明の具体例として再生画像のダイレクトプリント印刷の手法を挙げたが、DMA転送処理とデータ演算処理を交互に行うようなシーケンスについては全て適用することができる。また本実施形態でデジタルカメラの実施形態を示したが、これに限定されるものでなくDMA転送機能を有するデータ処理装置については全て適用することができる。
以上のようにして、キャッシャブル用域とアンキャッシャブル領域とを双方向的に切り替えることができるため、DMA転送されたデータを対象としてCPUによるデータ処理を行い、データ処理後のデータを再度DMA転送する場合であっても、キャッシュコヒーレンシーの維持とDMA転送の利用とを両立できる。
また第1、第2の実施形態では、CPU以外にDRAMにアクセスするデバイスはDMAマスタであるとしたが、メモリ共有型のマルチプロセッサシステムなどに適用することもできる。ただしこの場合には、キャッシャブル領域とアンキャッシャブル領域との設定が、すべてのプロセッサにおいて共通である必要がある。
(A)DMA転送用バッファ領域の取得方法のフローチャート(ライトバック方式)、(B)アンキャッシャブル領域からキャッシャブル領域への変換方法のフローチャート(キャッシャブル状態での使用がない場合) (A)アンキャッシャブル領域からキャッシャブル領域への変換方法のフローチャート(キャッシャブル状態での使用がある場合)、(B)DMA転送用バッファ領域の取得方法のフローチャート(ライトスルー方式) キャッシャブル領域からアンキャッシャブル領域への変換方法のフローチャート キャッシュシステムの構成図 第1の実施形態におけるデジタルカメラシステムの構成図 実アドレス領域とミラーアドレス領域の概念図 実施形態における領域切り替えの概念図 第2の実施形態におけるデジタルカメラシステムの構成図 第2の実施形態におけるデジタルカメラシステムのダイレクトプリント印刷の説明図
符号の説明
201 デジタルカメラ
202 撮影光学系
203 レンズ
204 CCD
205 CDS/AGC
206 A/Dコンバータ
207 信号処理装置A
208 Vドライブ
209 タイミングジェネレータ
210 信号処理装置B
211 データバス
212 CPUバス
213 フラッシュメモリ
214 CPU
215 CF
216 ユーザーインターフェース
217 ディスプレイコントローラ
218 VRAM
219 DRAM
220 液晶モニタ
221 キャッシュコントローラ
222 SRAM

Claims (11)

  1. キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、CPUから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置であって、
    前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して、同一のメモリロケーションを重複して対応付けられたメモリと、
    前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更手段と
    を備えることを特徴とするデータ処理装置。
  2. 前記キャッシュ非対象領域に対応付けられたメモリ上の領域を、前記キャッシュ対象領域に対応付け直す第2の領域変更手段をさらに備えることを特徴とする請求項1に記載のデータ処理装置。
  3. ダイレクトメモリアクセス機能を用いて前記CPU以外のマスタから前記メモリにアクセスする場合には、前記キャッシュ対象領域に対応付けて割り当てられたメモリの領域について、前記領域変更手段により前記キャッシュ非対象領域に対応付け直すことを特徴とする請求項に記載のデータ処理装置。
  4. 前記CPUから前記メモリにアクセスする場合には、前記キャッシュ非対象領域に対応付けて割り当てられたメモリの領域について、前記第2の領域変更手段により前記キャッシュ対象領域に対応付け直すことを特徴とする請求項2または請求項3に記載のデータ処理装置。
  5. 任意のメモリロケーションに対応付けられた前記キャッシュ対象領域のアドレスと前記キャッシュ非対象領域のアドレスとは、一定のオフセット値で互いにずれており、前記領域変更手段は、前記キャッシュ対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ非対象領域に対応付け直し、前記第2の領域変更手段は、前記キャッシュ非対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ対象領域に対応付け直すことを特徴とする請求項乃至4のいずれか1項に記載のデータ処理装置。
  6. 前記CPUのアドレス信号の上位一定桁はデコードされず、該上位一定桁を除いたアドレス信号の少なくとも一部により前記メモリのアドレスが指定されるよう構成されることで、前記メモリは、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して同一のメモリロケーションを重複して対応付けられていることを特徴とする請求項1乃至請求項5のいずれか1項に記載のデータ処理装置。
  7. 前記領域変更手段により前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を前記キャッシュ非対象領域に対応付け直す前に、キャッシュされたデータのうち少なくとも更新されたものを、対応する前記メモリの領域に書き戻す書き戻し手段をさらに備えることを特徴とする請求項1乃至6のいずれか1項に記載のデータ処理装置。
  8. 画像を撮影し、撮影された画像の画像データを圧縮して不揮発性メモリに保存する撮影手段と、
    請求項3に記載のデータ処理装置とを備え、
    不揮発性メモリの圧縮画像データを、請求項3に記載のデータ処理装置によりダイレクトメモリアクセス機能を用いて前記メモリに書き込み、前記メモリ上でその圧縮画像データを伸張処理することを特徴とするディジタルカメラ装置。
  9. キャッシュ対象領域とキャッシュ非対象領域とに区分したアドレス空間に対して多元的にアクセス可能であり、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対してメモリの同一のメモリロケーションを重複して対応付け、CPUから前記キャッシュ対象領域にアクセスする際にはキャッシュ機能を使用するデータ処理装置において、
    メモリ領域の要求に応じて、前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を割り当てる割り当て工程と、
    前記キャッシュ対象領域に対応付けて割り当てられた前記メモリ上の領域を、前記キャッシュ非対象領域に対応付け直す領域変更工程と
    を備えることを特徴とするメモリ割り当て方法。
  10. 前記キャッシュ非対象領域に対応付けられたメモリ上の領域を、前記キャッシュ対象領域に対応付け直す第2の領域変更工程をさらに備え、
    前記CPUのアドレス信号の上位一定桁はデコードされず、該上位一定桁を除いたアドレス信号の少なくとも一部により前記メモリのアドレスが指定されるよう構成されることで、前記メモリは、前記キャッシュ対象領域のアドレス空間と前記キャッシュ非対象領域のアドレス空間とに対して同一のメモリロケーションを重複して対応付けられており、
    任意のメモリロケーションに対応付けられた前記キャッシュ対象領域のアドレスと前記キャッシュ非対象領域のアドレスとは、前記メモリ容量に相当する一定のオフセット値で互いにずれており、
    前記領域変更工程では、前記キャッシュ対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ非対象領域に対応付け直し、
    前記第2の領域変更工程では、前記キャッシュ非対象領域に割り当てられた領域のアドレスを前記オフセット値分ずらすことで前記キャッシュ対象領域に対応付け直すことを特徴とする請求項9に記載のメモリ割り当て方法。
  11. 請求項9または10に記載のメモリ割り当て方法をCPUにより実行させるためのプログラム。
JP2004316306A 2004-10-29 2004-10-29 データ処理装置及びデータ処理装置におけるメモリ割り当て方法 Expired - Fee Related JP3938177B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004316306A JP3938177B2 (ja) 2004-10-29 2004-10-29 データ処理装置及びデータ処理装置におけるメモリ割り当て方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004316306A JP3938177B2 (ja) 2004-10-29 2004-10-29 データ処理装置及びデータ処理装置におけるメモリ割り当て方法

Publications (3)

Publication Number Publication Date
JP2006127251A JP2006127251A (ja) 2006-05-18
JP2006127251A5 JP2006127251A5 (ja) 2006-12-28
JP3938177B2 true JP3938177B2 (ja) 2007-06-27

Family

ID=36721934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004316306A Expired - Fee Related JP3938177B2 (ja) 2004-10-29 2004-10-29 データ処理装置及びデータ処理装置におけるメモリ割り当て方法

Country Status (1)

Country Link
JP (1) JP3938177B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412884B1 (en) 2011-10-13 2013-04-02 Hitachi, Ltd. Storage system and method of controlling storage system
FR3055715B1 (fr) * 2016-09-08 2018-10-05 Upmem Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue

Also Published As

Publication number Publication date
JP2006127251A (ja) 2006-05-18

Similar Documents

Publication Publication Date Title
US8732409B2 (en) Cache management policy and corresponding device
JP3264319B2 (ja) バスブリッジ
JP5313168B2 (ja) プロセッサにおいてキャッシュポリシーを設定するための方法および装置
US10417140B2 (en) Streaming translation lookaside buffer
KR101414384B1 (ko) 연산 장치, 정보 처리 장치 및 연산 방법
JP2010509688A (ja) 3dグラフィック回路のための画素キャッシュ
JP5583274B2 (ja) コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
JP4753549B2 (ja) キャッシュメモリおよびシステム
US9146879B1 (en) Virtual memory management for real-time embedded devices
US11341042B2 (en) Storage apparatus configured to manage a conversion table according to a request from a host
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
US20090282198A1 (en) Systems and methods for optimizing buffer sharing between cache-incoherent cores
US6587922B2 (en) Multiprocessor system
US11599483B2 (en) Dedicated cache-related block transfer in a memory system
JP5194703B2 (ja) データ処理装置及び共有メモリのアクセス方法
WO2010032433A1 (ja) バッファメモリ装置、メモリシステム及びデータ読出方法
JP5587539B2 (ja) ローカルメモリデータのコヒーレントなキャッシュ処理
JP4982354B2 (ja) 情報処理装置
KR20050007907A (ko) 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법
JP3938177B2 (ja) データ処理装置及びデータ処理装置におけるメモリ割り当て方法
JP2003281079A (ja) ページ・テーブル属性によるバス・インタフェース選択
CN113342278B (zh) 处理器及其保持缓存数据一致性的方法
JPH06243037A (ja) データ先読み装置
JP4164452B2 (ja) 情報処理方法及び装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070319

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110406

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130406

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130406

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140406

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees