(57)【要約】【課題】キャッシュメモリと実メモリのデータ一貫性を保つとともに、ＣＰＵの処理の負荷を減らすことができるようにする。【解決手段】キャッシュ機能を備えたマイクロプロセッサシステムにおけるデータ転送を制御するＤＭＡ（Direct Memory Access）コントローラであって、キャッシュラインサイズのアラインメント情報に基づく転送制御を行う転送制御手段を有するようにして、ＤＭＡ転送時、キャッシュメモリとメモリ装置との一貫性を保つために、一貫性棄権領域をＣＰＵによる計算処理によって算出する負荷を無くすことができるようにする。【選択図】図１
2011034414.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ機能を備えたマイクロプロセッサシステムにおけるデータの転送を制御するＤＭＡ（Direct Memory Access）コントローラであって、
キャッシュラインサイズのアラインメント情報に基づく転送制御を行う転送制御手段を有することを特徴とするＤＭＡコントローラ。
【請求項２】
転送先領域で前記キャッシュラインサイズとのアラインメントがとれたアドレスと、最後に前記キャッシュラインサイズとのアラインメントがとれたアドレスとを判定する判定手段をさらに有することを特徴とする請求項１記載のＤＭＡコントローラ。
【請求項３】
転送先領域で前記キャッシュラインサイズとのアラインメントがとれたアドレスと、最後に前記キャッシュラインサイズとのアラインメントがとれたアドレスとを保持する保持手段をさらに有することを特徴とする請求項１記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＤＭＡコントローラに関し、特に、メモリ装置や周辺装置間でデータ転送を行うために用いて好適な技術に関する。
【背景技術】
【０００２】
近年、組み込み機器においても様々なインターフェイス（Ｉ／Ｆ）が必要となってきており、さらに、これらのＩ／Ｆ上で動作するプロトコル処理を高速化することも求められるようになってきた。そのため、これらのＩ／Ｆとメモリ装置との間やメモリ装置内のデータ転送などにＤＭＡ転送を利用して、処理の高速化を図ることが多くなった。また、同様に処理の高速化を図るために、システムにキャッシュメモリを搭載することも通常行われるようになってきている。キャッシュが有効なメモリ装置の領域に対して転送を行う際には、実メモリ上にＤＭＡ転送されたデータとキャッシュメモリとの一貫性を保つためにバススヌープ機能をもったシステムにするのが望ましい。
【０００３】
しかしながら、バススヌープ機能を搭載したシステムはコストが多くかかってしまう。そのため、組み込み機器などのシステムではバススヌープ機能は用意しないのが一般的である。そこで、ＤＭＡ転送を行う際にはキャッシュの一貫性を考慮して、ＤＭＡ転送先領域のキャッシュを実メモリ上に書き戻し、キャッシュを無効化するなどのキャッシュ操作をＣＰＵから行うという方法をとることが多い。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６３６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＤＭＡ転送中は、ＣＰＵから転送先メモリ装置へアクセスを禁止するという方法が考えられる。しかし、ＤＭＡ転送期間の全ての時間、ＣＰＵからメモリ装置へアクセスを禁止してしまうと、システムのパフォーマンスやリアルタイム性等に影響を与えてしまい、問題となることが多い。そこで、ＤＭＡ転送する前に、キャッシュラインのアラインメントからずれた部分（一貫性危険領域）を予め計算して特定する。そして、その部分のみＣＰＵによるデータコピーを用い、アラインメントの取れた部分をＤＭＡ転送するという方法がとられる。しかし、この方法ではＤＭＡ転送が必要になる度に一貫性危険領域の計算処理をＣＰＵによって行わなくてはならず、ＤＭＡ転送による処理の高速化を阻害する要因となっている。
【０００６】
本発明は前述の問題点に鑑み、キャッシュメモリと実メモリのデータ一貫性を保つとともに、ＣＰＵの処理の負荷を減らすことができるようにすることを目的としている。
【課題を解決するための手段】
【０００７】
本発明のＤＭＡコントローラは、キャッシュ機能を備えたマイクロプロセッサシステムにおけるデータの転送を制御するＤＭＡ（Direct Memory Access）コントローラであって、キャッシュラインサイズのアラインメント情報に基づく転送制御を行う転送制御手段を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、キャッシュメモリと実メモリのデータ一貫性を保ちつつ、ＣＰＵの処理の負荷を減らすことができる。
【図面の簡単な説明】
【０００９】
【図１】ＤＭＡコントローラ及びその周辺機器の構成例を示すブロック図である。
【図２】ＤＭＡコントローラ及びその周辺機器の構成例を示すブロック図である。
【図３】ＤＭＡコントローラが行う処理手順の一例を示すフローチャートである。
【図４】ＤＭＡコントローラが行う処理手順の一例を示すフローチャートである。
【図５】ＤＭＡコントローラが行う処理手順の一例を示すフローチャートである。
【図６】ＤＭＡコントローラが行う処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
本発明の第１の実施形態について、図１及び図３を参照しながら説明する。
図１は、本実施形態におけるマイクロプロセッサシステムのキャッシュ機能を備えたＤＭＡ（Direct Memory Access）コントローラ１０１の構成、及びＤＭＡコントローラ１０１を含むシステムの構成例を示すブロック図である。
本実施形態のＤＭＡコントローラ１０１は、アラインメント情報に基づく転送制御部１０６、コントロールレジスタ１０７、ソースアドレスレジスタ１０８、及びディスティネーションアドレスレジスタ１０９を有する。また、トランスレーションカウントレジスタ１１０を持ち、さらに、アラインメント判定部１１２、第１のアラインドアドレスレジスタ１１３及び第２のアラインドアドレスレジスタ１１４を有する。さらに、ＣＰＵ１０３、メモリ装置１０４、Ｉ／Ｏデバイス１０５、ＤＭＡコントローラ１０１が、バス１０２を介して接続されている。
【００１１】
以下、本実施形態におけるＤＭＡ転送の際の動作シーケンスを説明する。
まず、ＣＰＵ１０３で動作するＤＭＡ制御プログラムが、転送元領域および転送先領域に対してキャッシュメモリ１１１からメモリ装置１０４への書き戻し処理を行う。次に転送先領域に対してキャッシュメモリ１１１の無効化処理を行う。
【００１２】
次に、ＤＭＡ制御プログラムはＤＭＡコントローラ１０１に対してＤＭＡ転送に関する初期設定およびＤＭＡ転送開始指示を行う。まず、ソースアドレスレジスタ１０８に転送元領域の先頭アドレスを設定し、ディスティネーションアドレスレジスタ１０９に転送先領域の先頭アドレスを設定しトランスレーションカウントレジスタ１１０に転送サイズを設定する。そして、コントロールレジスタ１０７を介してＤＭＡ転送の開始を指示する。この際、ディスティネーションアドレスのキャッシュラインサイズのアラインメントからのずれに関わらず、要求のあったアドレスをそのまま設定する。
【００１３】
図３は、本実施形態におけるＤＭＡ転送開始の指示を受けたＤＭＡコントローラ１０１が行う処理手順の一例を示すフローチャートである。
まず、ステップＳ１において、アラインメント判定部１１２は、トランスレーションカウントレジスタ１１０の値ＴＣＲが０より大きいかを検査する。０以下の場合はＤＭＡ転送終了となり、コントロールレジスタ１０７に転送終了のステータスを表示する。一方、ＴＣＲが０より大きい場合はステップＳ２に進む。
【００１４】
次に、ステップＳ２において、アラインメント判定部１１２は、ディスティネーションアドレスレジスタ１０９の値ＤＡＲを検査する。そして、転送処理中、最初にキャッシュラインサイズのアラインメントがとれたアドレスを第１のアラインドアドレスレジスタ１１３に設定する。また、転送中、最後にキャッシュラインサイズのアラインメントがとれるアドレスを第２のアラインドアドレスレジスタ１１４に設定する。ここで、転送中の最後かどうかの判定にはトランスレーションカウントレジスタ１１０の値ＴＣＲがキャッシュラインのサイズよりも小さいかどうかで判断できる。またこのとき、システムのキャッシュラインサイズの情報はあらかじめアラインメント判定部１１２が保持しているものとする。
【００１５】
次に、ステップＳ３において、アラインメント判定部１１２は、ＤＭＡ転送範囲内かどうかを判定する。ここで、ＤＭＡ転送範囲とは、転送要求のあった転送先領域のなかで最初にキャッシュラインサイズのアラインメントがとれたアドレスから最後にキャッシュラインサイズとのアラインメントがとれたアドレスまでの範囲である。この判定の結果、範囲外である場合はステップＳ５に進む。
【００１６】
一方、ステップＳ３の判定の結果、範囲内である場合は、ステップＳ４において、転送制御部１０６が一転送単位の転送を行う。具体的には、ソースアドレスレジスタ１０８の値ＳＡＲのアドレスから転送する一転送単位分のデータを読みだし、ディスティネーションアドレスレジスタ１０９の値ＤＡＲのアドレスに対して一転送単位分のデータを書き込むという動作である。もちろん、データの読み出し、書き込み時にはバスのアービトレーション等の処理も転送制御部１０６が行うが、詳細な説明は省略する。
【００１７】
次に、ステップＳ５において、アラインメント判定部１１２は、レジスタの値の更新を行う。ソースアドレスレジスタ１０８の値ＳＡＲとディスティネーションアドレスレジスタ１０９の値ＤＡＲは一転送単位分インクリメントし、トランスレーションカウントレジスタ１１０の値ＴＣＲは一転送単位分デクリメントする。その後、ステップＳ１の処理に戻る。
【００１８】
この処理ループを繰り返すことにより、キャッシュラインサイズのアラインメントがとれた領域（一貫性危険領域以外）のみがＤＭＡ転送される。その結果、その領域の先頭アドレスが第１のアラインドアドレスレジスタ１１３に入り、末尾アドレスが第２のアラインドアドレスレジスタ１１４に入ることになる。ＤＭＡ制御プログラムは、第１のアラインドアドレスレジスタ１１３、及び第２のアラインドアドレスレジスタ１１４の値から、転送要求を出した領域と実際にＤＭＡ転送された領域との差異を確認する。ＤＭＡ転送されなかった領域（一貫性危険領域）に対してＣＰＵ１０３によるデータコピー処理を行う。
【００１９】
以上のように実装することにより、ＤＭＡ転送時、キャッシュメモリ１１１とメモリ装置１０４との一貫性を保つために、一貫性棄権領域をＣＰＵ１０３による計算処理によって算出する負荷を無くすことができる。
【００２０】
（第２の実施形態）
以下、本発明の第２の実施形態について図１及び図４を参照しながら説明する。本実施形態のＤＭＡコントローラの構成および該ＤＭＡコントローラを含むシステムも図１と同様の構成であるため、説明は省略する。以下、本実施形態におけるＤＭＡ転送の際の動作シーケンスを説明する。なお、キャッシュメモリ１１１から実メモリへの書き戻し処理からＤＭＡ転送の開始の指示までは第１の実施形態と同様である。
【００２１】
図４は、本実施形態におけるＤＭＡ転送開始の指示を受けたＤＭＡコントローラ１０１が行う処理手順の一例を示すフローチャートである。
まず、ステップＳ６において、転送制御部１０６は、転送先となっているメモリ装置１０４へのＣＰＵ１０３からアクセスを禁止する。アクセス禁止の方法はシステム構成に依存するが、バス１０２のロックやＣＰＵ１０３への外部割込み禁止などの手段で実現可能である。次に、ステップＳ１において、アラインメント判定部１１２は、トランスレーションカウントレジスタ１１０の値ＴＣＲが０より大きいか否かを検査する。０以下の場合はステップＳ１１に進み、転送制御部１０６は、転送先のメモリ装置１０４へのＣＰＵ１０３からのアクセスの禁止を解除してから、処理を終了する。一方、ＴＣＲが０より大きい場合はステップＳ７に進む。
【００２２】
次に、ステップＳ７において、アラインメント判定部１１２は、ディスティネーションアドレスレジスタ１０９の値ＤＡＲを検査する。転送処理中、最初にキャッシュラインサイズのアラインメントがとれたアドレスになったら、ステップＳ８に進み、転送制御部１０６は、転送先のメモリ装置１０４へのＣＰＵ１０３からのアクセスの禁止を解除してからステップＳ９に進む。そうでなければ、そのままステップＳ９に進む。
【００２３】
次に、ステップＳ９において、アラインメント判定部１１２は、ディスティネーションアドレスレジスタ１０９の値ＤＡＲを検査する。転送中、最後にキャッシュラインサイズのアラインメントがとれるアドレスになったなら、ステップＳ１０に進み、転送制御部１０６は、転送先のメモリ装置１０４へのＣＰＵ１０３からのアクセスを禁止してからステップＳ４に進む。そうでなければ、そのままステップＳ４に進む。なお、ステップＳ４及びＳ５での処理は第１の実施形態と同様であり、その後、ステップＳ１に進むループを形成する。
【００２４】
以上のように実装することにより、ＤＭＡ転送実行中の全ての期間をＣＰＵ１０３からメモリ装置１０４へのアクセスを禁止することなく、転送要求された全ての領域をＤＭＡ転送によって転送することができるようになる。
【００２５】
（第３の実施形態）
本発明の第３の実施形態について図２、図５を参照しながら説明する。第１の実施形態では、一貫性危険領域の転送は常にＣＰＵ１０３によるデータコピーとなり、第２の実施形態では、一貫性危険領域の転送中は常にＣＰＵ１０３から転送先のメモリ装置１０４へのアクセスが禁止されることになる。しかしながら、ＤＭＡ制御プログラムにおいて、転送先のメモリ領域の周辺にＤＭＡ転送中にＣＰＵ１０３からのアクセスが起こりえないことが明らかな場合も存在する。そこで本実施形態では、上記のような処理をわざわざ行わず、転送パフォーマンスなどをさらに向上させるようにする。
【００２６】
図２は、本実施形態におけるＤＭＡコントローラ２０１の構成、及びＤＭＡコントローラ２０１を含むシステムの構成例を示すブロック図である。本実施形態では、ＤＭＡコントローラ２０１の構成を、図２に示すように第１及び第２の実施形態で説明したＤＭＡコントローラ１０１の構成にセーフエリアアドレスレジスタ１１５およびセーフエリアサイズレジスタ１１６を追加している。なお、その他の構成については第１の実施形態で説明した図１と同様であるため、それらの構成の説明は省略する。
【００２７】
セーフエリアアドレスレジスタ１１５は、ＤＭＡ制御プログラムが転送処理終了までＣＰＵ１０３からのアクセスの可能性がない領域の先頭アドレスを設定するレジスタである。セーフエリアサイズレジスタ１１６は、該領域のサイズを設定するレジスタである。ＤＭＡ転送時の動作シーケンスは、第１の実施形態１のものを基本的に踏襲する。但し、ＤＭＡ制御プログラムは、セーフエリアアドレスレジスタ１１５及びセーフエリアサイズレジスタ１１６を用いてその領域をＤＭＡコントローラ１０１に指示する。
【００２８】
図５は、本実施形態におけるＤＭＡコントローラ２０１が行う処理手順の一例を示すフローチャートである。なお、ステップＳ１２以外は、第１の実施形態と同様であるため、ステップＳ１２の説明のみを行う。
ステップＳ１でトランスレーションカウントレジスタ１１０の値ＴＣＲが０より大きい場合は、ステップＳ１２において、転送先アドレスがセーフエリアアドレスレジスタ１１５及びセーフエリアサイズレジスタ１１６で指示された領域内かどうかを検査する。そして、領域内である場合は、ステップＳ４に進み、一貫性危険領域に関する各種判定を行わずに一単位の転送動作に移るようにする。また、領域外である場合は、ステップＳ２に進む。
【００２９】
また、本実施形態では、エリアの先頭アドレスとサイズとを指示するレジスタ構成を説明したが、エリアの先頭及び末尾のアドレスを指示するレジスタ構成などをとってもよいことは言うまでもない。以上のように実装することにより、無駄なＣＰＵ１０３によるデータコピーの発生を減少させることができる。
【００３０】
（第４の実施形態）
以下、本発明の第４の実施形態について図２及び図６を参照しながら説明する。本実施形態のＤＭＡコントローラの構成および該ＤＭＡコントローラを含むシステムも図２と同様の構成であるため、説明は省略する。
【００３１】
図５は、本実施形態におけるＤＭＡコントローラ２０１が行う処理手順の一例を示すフローチャートである。なお、ステップＳ１２及びＳ１３以外は、第２の実施形態と同様であるため、ステップＳ１２及びＳ１３の説明のみを行う。
ステップＳ１でトランスレーションカウントレジスタ１１０の値ＴＣＲが０より大きい場合は、ステップＳ１２において、転送先アドレスがセーフエリアアドレスレジスタ１１５及びセーフエリアサイズレジスタ１１６で指示された領域内かどうかを検査する。そして、領域内である場合は、ステップＳ１３において、転送制御部１０６は、転送先のメモリ装置１０４へのＣＰＵ１０３からのアクセスの禁止を解除して、一単位の転送動作に移るようにする。また、領域外である場合は、ステップＳ７に進む。
【００３２】
また、本実施形態では、エリアの先頭アドレスとサイズとを指示するレジスタ構成を説明したが、エリアの先頭及び末尾のアドレスを指示するレジスタ構成などをとってもよいことは言うまでもない。以上のように実装することにより、無駄なＣＰＵ１０３からメモリ装置１０４へのアクセス禁止時間を減少させることができる。
【００３３】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３４】
１０１  ＤＭＡコントローラ、１０６  転送制御部、１１２  アラインメント判定部
【図１】
2011034414.tif 000003
【図２】
2011034414.tif 000004
【図３】
2011034414.tif 000005
【図４】
2011034414.tif 000006
【図５】
2011034414.tif 000007
【図６】
2011034414.tif 000008