(57)【要約】【課題】  キャストアウトが発生する、しないに関わらず、ＤＭＡ処理時間を短かくしてシステム性能の向上を図ること。【解決手段】  遅延キャッシュメモリ１０を有するＣＰＵ１と、メインメモリ３と、ＤＭＡ（Direct Memory Access）手段５とを含むデータ転送制御装置において、スヌープ制御部７は、上記ＣＰＵ１から上記ＤＭＡ手段５へデータの直接転送するためにＣＰＵデータバッファ８と、メモリデータバッファ９と、読み込みデータ転送手段１１とを備える。【選択図】        図１
2005149195.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有するＣＰＵと、メインメモリと、入出力装置と、ＤＭＡ（Direct Memory Access）手段とを含むデータ転送制御装置であって、
前記データ転送制御装置は、前記キャッシュメモリに格納される内容を検出するスヌープ手段を備えることを特徴とするデータ転送制御装置。
【請求項２】
請求項１に記載のデータ転送制御装置において、
前記スヌープ制御部は、
前記ＤＭＡ手段から所定のアドレスのデータ読み込み要求があり、前記キャッシュメモリ内に所望のデータを検出できたとき、該データを読み込んで一時格納するＣＰＵデータバッファと、
前記ＤＭＡ手段から所定のアドレスのデータ読み込み要求があったときに、前記メインメモリ内に所望のデータを検出し、該データを読み込んで一時格納するメモリデータバッファと、
前記ＣＰＵデータバッファ及び前記メモリデータバッファのいずれか一方から前記読み込んだデータを前記ＤＭＡ手段へ転送する読み込みデータ転送手段とを備えることを特徴とするデータ転送制御装置。
【請求項３】
請求項２に記載のデータ転送制御装置において、
前記スヌープ制御部は、
前記ＤＭＡ手段から所定のアドレスのデータ読み込み要求があったときに、前記所定のアドレスの直後に続くアドレスを一時格納するネックストアドレスバッファと、
前記ＤＭＡ手段から前記直後に続くアドレスからのデータ読み込み要求を受ける前に、前記ネックストアドレスバッファから前記直後に続くアドレスを読み込んで、該アドレスのデータ読み込みを開始するデータ先行読み込み手段とを更に備えることを特徴とするデータ転送制御装置。
【請求項４】
請求項３に記載のデータ転送制御装置において、
ネックストアドレスバッファは、
前回の要求アドレスと今回の要求アドレスとの差分を格納する差分バッファと、
該差分を今回の要求アドレスに加算した結果を格納するアドレスバッファとを含むことを特徴とするデータ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを備えるバスシステムにおけるデータ転送制御装置に関する。
【背景技術】
【０００２】
ＣＰＵが、キャッシュメモリをライトバックで使用する場合において、メインメモリから所定のデータをキャッシュメモリに取り込んで演算し、そのデータを変更した後、その結果をＤＭＡ手段が読み込みたい場合も発生する。しかし、従来の技術では、ＤＭＡ手段が、キャッシュメモリから直接データ読み込むことができない。従って、上記変更後のデータを読み込むためには、以下の手順を経ることが必要とされていた。ここでＤＭＡ手段とは、ＣＰＵを介さずに、直接メインメモリと周辺装置との間でデータ転送が実行される手段である。
手順１
ＤＭＡ手段の読み込み要求は、スヌープとしてＣＰＵへ送られる。ここでスヌープとは、所定のアドレスにおいてキャッシュメモリの内容とメインメモリの内容とを一致させる旨知らせる通知である。
手順２
ＣＰＵは、キャッシュメモリ内を走査して該当するアドレスに所望のデータを検出できた場合にはキャストアウトを実行する。ここでキャストアウトとは、キャッシュメモリのデータ内容をメインメモリへ書き戻す操作を言う。
手順３
キャストアウトされたデータはメインメモリに格納される。
手順４
ＤＭＡ手段がスタートして、格納されているデータをメインメモリから読み出す。
手順５
ＤＭＡ手段は、全てのデータを転送元であるメインメモリから読み出して転送先へ転送し、処理を終了する。
【０００３】
従来の技術では、ＤＭＡ手段が読み込み要求（以後リードＤＭＡと記す）する度に上記１〜５の手順を実行することになりリードＤＭＡのデータ転送時間を遅延させる要因となっていた。
このような不都合を解決すべく、下記特許文献１では、キャッシュメモリ内で、該当するアドレスに所望のデータが検出された場合には、このデータをメインメモリへ書き戻し、それと並行して上記データを直接ＤＭＡ手段へ転送する技術を開示している。しかし、ここでも尚、キャッシュメモリ内で、該当するアドレスに所望のデータが検出されない場合には上記１〜５の手順を実行する必要があり、不都合を完全に回避することはできなかった。本発明の目的はキャッシュメモリ内で、該当するアドレスに所望のデータが検出される、されないに係わらず、上記不都合を回避してリードＤＭＡにおけるデータ転送時間を短縮することにある。
【特許文献１】特開２００１−５６７８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
解決しようとする問題点は、ＤＭＡ手段が読み込み要求する度に上記１〜５の手順を実行することになりリードＤＭＡのデータ転送時間を遅延させることになる点である。
【課題を解決するための手段】
【０００５】
ＣＰＵデータバッファと、メモリデータバッファと、読み込みデータ転送手段とを有し、ＣＰＵからＤＭＡ手段へのデータの直接転送を可能とするスヌープ制御部を備えることを最も主要な特徴とする。
【発明の効果】
【０００６】
ＣＰＵデータバッファと、メモリデータバッファと、読み込みデータ転送手段とを有するスヌープ制御部を備えることによって、キャストアウトが発生した場合でも、キャストアウトが発生しない場合でもＤＭＡに対してバッファからデータを供給できるのでＤＭＡ処理時間が短くなりシステム性能の向上を図ることができる。
【発明を実施するための最良の形態】
【０００７】
スヌープ制御部内に、予想する次のアドレスを格納するネックストアドレスバッファを更に備えることによってＤＭＡ要求が発生する前に先行してスヌープ要求とメモリリード要求とを実行することによってＤＭＡ処理時間をより一層短縮することが出来た。
【実施例１】
【０００８】
以下、本発明の実施の形態を実施例を用いて説明する。
実施例１の構成について説明する。
ＤＭＡ手段からデータ読み込み要求があったときにキャッシュメモリ内を走査して所望のデータを検出できたときに、このデータを一時格納しておくＣＰＵデータバッファと、ＤＭＡ手段からデータ読み込み要求があったときにメインメモリを走査してメインメモリから所望のデータを検出して一時格納しておくメモリデータバッファとを備え、上記バッファ内に一時格納されている何れか一方のデータを選択してＤＭＡ手段へ転送することによってＤＭＡ処理時間を短縮する。係る目的を達成するために実施例１は以下のように構成される。
【０００９】
図１は、実施例１の構成のブロック図である。
図１より、実施例１のデータ転送制御装置は、ＣＰＵ１と、ＣＰＵ制御部２と、メインメモリ３と、メモリ制御部４と、ＤＭＡ手段５と、ＤＭＡ制御部６と、スヌープ制御部７とを備える。
【００１０】
ＣＰＵ１は、システム全体を制御するマイクロプロセッサであり、その内部にはキャッシュメモリ１０を有している。このデータ転送制御装置専用に備えても良いが、通常はデータ転送制御装置を含むシステム全体を制御するマイクロプロセッサを併用する。
【００１１】
ＣＰＵ制御部２は、ＣＰＵ１と後記スヌープ制御部７との間に配置されるインタフェース部分である。このＣＰＵ制御部２は、ＣＰＵ１とスヌープ制御部７との間で以下の信号のインタフェース機能を実行する。
【００１２】
ＳＰＲＥＱ信号；スヌープ制御部７が出力する信号で、ＤＭＡ手段が発生しスヌープアドレスの転送を要求する信号である。
ＳＰＡＣＫ信号；ＣＰＵ制御部２が出力し、スヌープアドレスの転送要求を受信したことを示す信号である。
ＳＮＰＡＤＲ信号；スヌープ制御部７が出力し、スヌープアドレスを送信するバスである。
ＳＮＰＲＤ信号；スヌープ制御部７が出力し、発生したスヌープがメモリに対してリードであるかライトであるかを示す信号である。
【００１３】
ＣＯＵＴ信号；ＣＰＵ制御部２が出力し、スヌープアドレスに対して、キャストアウトが発生したことを示す信号である。
ＣＰＵＡＤＲ信号；ＣＰＵ制御部２が出力し、メインメモリ３に対してアクセスするアドレスを送信するバスである。
ＣＰＵＲＥＱ信号；ＣＰＵ制御部２が出力し、メインメモリ３へのアクセス要求が発生し、アドレスの転送を要求する信号である。      
【００１４】
ＣＰＵＡＣＫ信号；スヌープ制御部７が出力し、メモリアクセス要求を受信したことを示す信号である。
ＣＰＵＷＤＢ信号；ＣＰＵ制御部２が出力し、メインメモリ３へのライトアクセスデータを送信するためのバスである。
ＣＰＵＷＲＶ信号；ＣＰＵ制御部２が出力し、ＣＰＵＷＤＢ信号上に全てのデータが搭載されたことを示す信号である。
【００１５】
メインメモリ３は、システムを制御するために必要な各種データを格納するリード・ライト可能なメモリアレイである。
メモリ制御部４は、メインメモリ３と後記スヌープ制御部７との間に配置されるインタフェース部分である。このメモリ制御部４は、スヌープ制御部７との間で以下の信号のインタフェース機能を実行する。
【００１６】
ＭＥＭＲＤＢ信号；メモリ制御部４が出力し、メモリからリードしたデータを出力するバスである。
ＭＥＭＲＤＶ信号；メモリ制御部４が出力し、ＭＥＭＲＤＢ信号上に全てのデータが搭載されたことを示す信号である。
ＭＥＭＷＤＢ信号；スヌープ制御部７が出力し、メインメモリ３へライトするデータを出力するバスである。
ＭＥＭＷＲＶ信号；スヌープ制御部７が出力し、ＭＥＭＷＤＢ信号上に全てのデータが搭載されたことを示す信号である。
ＭＥＭＷＲＤＹ信号；メモリ制御部４が出力し、ライトデータの受け入れ準備が完了したことを示す信号である。
【００１７】
ＭＥＭＡＣＫ信号；メモリ制御部４が出力し、メモリアクセス要求を受信したことを示す信号である。
ＭＥＭＲＥＱ信号；スヌープ制御部７が出力し、メモリアクセス要求が発生し、メモリへのアクセスアドレスの転送を要求する信号である。
ＭＥＭＲＤ信号；スヌープ制御部７が出力し、メモリアクセス要求がメモリに対してリードであるかライトであるかを示す信号である。
ＭＥＭＡＤＲ信号；スヌープ制御部７が出力し、メモリアクセスアドレスを送信するバスである。
【００１８】
ＤＭＡ手段５は、ＣＰＵ１を介さずに直接メインメモリ３と周辺装置（例えばフロッピーディスク等）との間でデータ転送を実行する手段である。
ＤＭＡ制御部６は、ＤＭＡ手段５と後記スヌープ制御部７との間に配置されるインタフェース部分である。このＤＭＡ制御部６は、スヌープ制御部７との間で以下の信号のインタフェース機能を実行する。
【００１９】
ＤＭＡＲＥＱ信号；ＤＭＡ制御部６が出力し、ＤＭＡ要求が発生し、メインメモリ３へのアクセスアドレスの転送を要求する信号である。
ＤＭＡＡＣＫ信号；スヌープ制御部７が出力し、ＤＭＡアクセスアドレスの転送要求を受信したことを示す信号である。
ＤＭＡＡＤＲ信号；ＤＭＡ制御部６が出力し、ＤＭＡアクセスアドレスを送信するバスである。
ＤＭＡＲＤ信号；ＤＭＡ制御部６が出力し、ＤＭＡアクセスがメモリに対してリードであるかライトであるかを示す信号である。
【００２０】
ＤＭＡＲＤＢ信号；スヌープ制御部７が出力し、メインメモリ３からリードしたデータを出力するバスである。
ＤＭＡＲＤＶ信号；スヌープ制御部７が出力し、ＤＭＡＲＤＢ信号上に全てのデータが搭載されたことを示す信号である。
【００２１】
スヌープ制御部７は、ＣＰＵ１がメインメモリ３へアクセスする際に、ＤＭＡ手段５のアクセスと、重複するのを回避する部分である。ＣＰＵ制御部２を介して上記ＣＰＵ１と接続し、メモリ制御部４を介して上記メインメモリ３と接続し、ＤＭＡ制御部６を介して上記ＤＭＡ手段５と接続し、上記キャッシュメモリから上記ＤＭＡ手段５へのデータの直接転送を可能とする部分である。
【００２２】
このスヌープ制御部７は、上記ＤＭＡ手段５からデータ読み込み要求があった場合に、上記キャッシュメモリ１０内に所望のデータが検出されたときは、該データを読み込んで一時格納しておくＣＰＵデータバッファ８と、上記ＤＭＡ手段５からデータ読み込み要求があったときに上記メインメモリ３から所望のデータを検出し、該データを読み込んで一時格納するメモリデータバッファ９と、上記ＣＰＵデータバッファ８及び上記メモリデータバッファ９のいずれか一方から上記読み込んだデータを上記ＤＭＡ手段５へ転送する読み込みデータ転送手段１１とを備える。
【００２３】
実施例１の動作について説明する。
図２は、実施例１のフローチャート（その１）である。
図２のステップＳ１〜ステップＳ１３に従って実施例１の動作を説明する。
ステップＳ１
スヌープ制御部７（図１）は、ＤＭＡ制御部６（図１）ＤＭＡＲＥＱ信号を受け入れてスヌープ処理をスタートさせる。
【００２４】
ステップＳ２
スヌープ制御部７（図１）は発生したＤＭＡがリードＤＭＡであるかライトＤＭＡであるかを判断する。リードＤＭＡであるときは次へ進み、ライトＤＭＡのときはステップＳ４へ分岐する。但し、ステップＳ４は、本発明とは直接関係しない部分なので説明を割愛する。
【００２５】
ステップＳ３
スヌープ制御部７（図１）は、ＣＰＵ制御部２（図１）に対してＳＰＲＥＱ信号をＯＮ（＝１）にし、アドレスをアドレスバスＳＮＰＡＤＲに出力してスヌープを要求する。同時にメモリ制御部４（図１）に対してＭＥＭＲＤ信号をＯＮ（＝１）にし、アドレスをアドレスバスＭＥＭＡＤＲに出力してデータリードを要求する。更に、キャストアウト処理を起動する。
尚、このデータリードとキャストアウト処理については後に他のフローチャートを用いて再度詳細に説明する。
【００２６】
ステップＳ５  スヌープ制御部７（図１）は、ＣＰＵ制御部２（図１）からＳＰＡＣＫがＯＮするまで待って、ＣＰＵ制御部２（図１）がＳＰＲＥＱ信号を受け入れたことを確認して次へ進む。
【００２７】
ステップＳ６
スヌープ制御部７（図１）は、ＣＰＵ制御部２（図１）からＣＯＵＴ信号を受け入れたとき（＝１）ＣＰＵがキャッシュメモリ中の所定のアドレスに所望のデータを検出できたものと判断してステップＳ７へ進む。スヌープ制御部７（図１）が、ＣＰＵ制御部２（図１）からＣＯＵＴ信号を受け入れなかったとき（＝０）は、所望のデータを検出できなかったものと判断してステップＳ１０へ進む。
【００２８】
ステップＳ７
スヌープ制御部７（図１）は、ＣＰＵ制御部２（図１）を介してキャッシュメモリから所望のデータの全てを受け入れるのを待って（ＣＢＵＦ・Ｖが１になる）受け入れ完了後ステップＳ８へ進む。ここで所望のデータがＣＰＵデータバッファ８に一時格納される。
尚、データ転送は、ＣＰＵのキャッシュライン単位（３２バイト）で実行される。この３２バイトは、４個連続のバーストデータとして転送される。
【００２９】
ステップＳ８
スヌープ制御部７（図１）は、ＣＰＵデータバッファ８に一時格納されている４個のデータをデータバスＤＭＡＲＤＶを介してＤＭＡへ転送する。
ステップＳ９
スヌープ制御部７（図１）は、ＣＰＵデータバッファ８に一時格納されている４個のデータをデータバスＭＥＭＷＤＢを介してメインメモリ３（図１）に書き込みを開始し、書き込みが全て終了するまで継続する。このステップによってメインメモリ３（図１）のキャストアウトが実行される。
【００３０】
ステップＳ１０
スヌープ制御部７（図１）は、メインメモリ３（図１）から所望のデータを読み込んでメモリデータバッファ９（図１）へ書き込む。全ての所望データの書き込みが終了した後（ＭＢＵＦ・Ｖ＝１）次へ進む。
ステップＳ１１
メモリデータバッファ９に一時格納されている４個のデータをデータバスＤＭＡＲＤＢを介してＤＭＡ制御部６へ転送する。
【００３１】
ステップＳ１２
スヌープ制御部７（図１）は、ＭＢＵＦ・Ｖ＝０、ＣＢＵＦ・Ｖ＝０を出力してステップＳ１３でフローを終了する。
以上の説明で、ステップＳ６〜ステップＳ１１までが読み込みデータ転送手段に該当する。かかる読み込みデータ転送手段によって、キャッシュメモリ１０内で該当するアドレスに所望のデータが検出される、されないに関わらず、リードＤＭＡにおけるデータ転送時間を短縮化できることになる。
【００３２】
次に、上記スヌープ処理のステップＳ３に記載のデータリードとキャストアウト処理の内容について他のフローチャートを用いて再度詳細に説明する。
図３は、実施例１のフローチャート（その２）である。
図３のステップＳ２０〜ステップＳ２７に従って、メモリリード処理について説明する。
ステップＳ２０
スヌープ制御部７（図１）は、メモリリード処理を開始する。
【００３３】
ステップＳ２１
スヌープ制御部７（図１）は、ＭＥＭＲＤＶ＝１になるまで待ってＭＥＭＲＤＶ＝１になった後次へ進む。即ち所望のデータの全てがデータバスＭＥＭＲＤＢ上に搭載されたことを確認した後次へ進む。
・留意事項
上記のように、所望のデータは、キャッシュライン単位で転送されるためにデータＭＢＵＦ０、データＭＢＵＦ１、データＭＢＵＦ３、に分けて出力される。従って、このステップでは、データＭＢＵＦ０、データＭＢＵＦ１、データＭＢＵＦ３、の全てがデータバスＭＥＭＲＤＢ上に搭載されたことを確認した後へ進むことになる。
【００３４】
ステップＳ２２
スヌープ制御部７（図１）は、データバスＭＥＭＲＤＢ上の所望のデータＭＢＵＦ０をメモリデータバッファ９に一時格納する。
ステップＳ２３
スヌープ制御部７（図１）は、データバスＭＥＭＲＤＢ上の所望のデータＭＢＵＦ１をメモリデータバッファ９に一時格納する。
ステップＳ２４
スヌープ制御部７（図１）は、データバスＭＥＭＲＤＢ上の所望のデータＭＢＵＦ２をメモリデータバッファ９に一時格納する。
【００３５】
ステップＳ２５
スヌープ制御部７（図１）は、データバスＭＥＭＲＤＢ上の所望のデータＭＢＵＦ３をメモリデータバッファ９に一時格納する。
ステップＳ２６
スヌープ制御部７（図１）は、ＭＢＵＦ・Ｖ＝１を出力してフローを終了（ステップＳ２７）する。
【００３６】
・留意事項
以上説明したメモリリード処理は、図２でステップＳ３→ステップＳ５→ステップＳ６→ステップＳ１０と進む間に並行して進行している。従って、図２のフローがステップＳ１１へ進んでもそのときにはメモリデータバッファ９にはメインメモリ３（図１）から読み込まれた所望のデータが既に格納されていることになる。
【００３７】
上記図３と同様にスヌープ処理のステップＳ３に記載のキャストアウトデータ処理の内容について他のフローチャートを用いて再度詳細に説明する。  図４は、実施例１のフローチャート（その３）である。
図４のステップＳ３０〜ステップＳ３９に従って、キャストアウトデータ処理について説明する。
【００３８】
ステップＳ３０
キャストアウトデータ処理がスタートする。
ステップＳ３１
スヌープ制御部７（図１）は、ＣＰＵＷＲＶ＝１になるまで待ってＣＰＵＷＲＶ＝１になった後次へ進む。即ち所望のデータの全てがデータバスＣＰＵＷＤＢ上に搭載されたことを確認した後次へ進む。
・留意事項
所望のデータは、データＣＢＵＦ０、データＣＢＵＦ１、データＣＢＵＦ３、に分けて出力される。従って、このステップでは、データＣＢＵＦ０、データＣＢＵＦ１、データＣＢＵＦ３、の全てがデータバスＣＰＵＷＤＢ上に搭載されたことを確認した後へ進むことになる。
【００３９】
ステップＳ３２
スヌープ制御部７（図１）は、ＣＰＵＷＤＢのデータをＣＢＵＦ０に格納する。
ステップＳ３３
スヌープ制御部７（図１）は、ＣＰＵＷＤＢのデータをＣＢＵＦ１に格納する。
【００４０】
ステップＳ３４  スヌープ制御部７（図１）は、ＣＰＵＷＤＢのデータをＣＢＵＦ２に格納する。
ステップＳ３５
スヌープ制御部７（図１）は、ＣＰＵＷＤＢのデータをＣＢＵＦ３に格納する。
ステップＳ３６
スヌープ制御部７（図１）は、ＣＢＵＦＶ＝１を出力する。
【００４１】
ステップＳ３７
スヌープ制御部７（図１）は、メモリ制御部４（図１）からライトデータ受け入れ準備完了信号（ＭＥＭＷＲＤＹ＝１）を受け入れた後、次へ進む。
ステップＳ３８
スヌープ制御部７（図１）は、ＭＥＭＷＲＶ＝１を出力してＣＢＵＦ０〜ＣＢＵＦ３の内容をデータバスＭＥＭＷＤＢへ搭載してキャストアウトデータ処理のフローを終了する。
【００４２】
・留意事項
以上説明したキャストアウトデータ処理は、図２でステップＳ３→ステップＳ５→ステップＳ６→ステップＳ７と進む間に並行して進行している。従って、図２のフローがステップＳ８へ進んでもそのときにはＣＰＵデータバッファ８にはキャッシュメモリ１０から読み込まれた所望のデータが既に格納されていることになる。
【００４３】
次に上記フローチャートを用いて説明した実施例１の動作の内容をタイムチャートを用いて補足説明する。
最初に上記ステップＳ６でキャストアウトが発生した場合、即ち、ステップＳ７へ進んだ場合について説明する。
図５は、実施例１のタイムチャート（その１）である。
図６は、実施例１のタイムチャート（その２）である。
図７は、実施例１のタイムチャート（その３）である。
【００４４】
図５は、ＤＭＡ制御部６とスヌープ制御部７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部７との間の各種信号のタイムチャートである。
縦軸上上から順にＣＬＫ（クロック）、ＤＭＡＲＥＱ、ＤＭＡＡＤＲ、ＤＭＡＲＤ、ＤＭＡＡＣＫ、ＤＭＡＲＤＢ、ＤＭＡＲＤＶ、ＳＰＲＥＱ、ＳＮＰＡＤＲ、ＳＮＰＲＤ、ＳＰＡＣＫ、ＣＰＵＲＥＱ、ＣＰＵＡＤＲ、ＣＰＵＡＣＫ、ＣＯＵＴ、ＣＰＵＷＤＢ、ＣＰＵＷＲＶ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００４５】
図６は、メモリ制御部４とスヌープ制御部７との間の各種信号のタイムチャートである。
縦軸上上から順にＭＥＭＲＥＱ、ＭＥＭＡＤＲ、ＭＥＭＲＤ、ＭＥＭＡＣＫ、ＭＥＭＷＤＢ、ＭＥＭＷＲＶ、ＭＥＭＷＲＤＹ、ＭＥＭＲＤＢ、ＭＥＭＲＤＶ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００４６】
図７は、ＣＰＵデータバッファ８及びメモリデータバッファ９のタイムチャートである。
縦軸上上からＣＢＵＦ０、ＣＢＵＦ１、ＣＢＵＦ２、ＣＢＵＦ３、ＣＢＵＦＶ、ＭＢＵＦ０、ＭＢＵＦ１、ＭＢＵＦ２、ＭＢＵＦ３、ＭＢＵＦＶ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００４７】
クロック時刻１でアドレスＤＭＡＡＤＲ０を指定してアドレスリード要求（信号群（１））（図５）がＤＭＡ制御部６からスヌープ制御部７出力される。この信号群（１）（図５）によってスヌープ処理フロー（図２）が開始される（ステップＳ１）。
【００４８】
信号群（１）（図５）はリード要求（ＭＥＭＲＤ＝１）なのでステップＳ３へ進む。
信号群（１）（図５）に基づいて、スヌープ制御部７は、１クロック周期遅れてＣＰＵ制御部２へスヌープ要求を送出してＳＰＡＣＫ信号をＣＰＵ制御部２から受け入れる（信号群（２））（図５）。
信号群（２）（図５）と同時に、スヌープ制御部７は、メモリ制御部４へデータリード要求を送出してＭＥＭＡＣＫ信号をメモリ制御部４から受け入れる（信号群（３））（図６）。
ここでは、上記ステップＳ３で説明したように、スヌープ制御部７がＣＰＵ制御部２に対してスヌープ要求すると同時にメインメモリ３に対してデータリードを要求していることがタイムチャート（図５及び図６）中に示されている。
【００４９】
ＣＰＵ制御部２は、６クロック周期で、キャッシュメモリ１０の中に所定のアドレスに所望のデータを検出してＣＯＵＴ信号を出力する（図５の信号（４））（ステップＳ６）。
ＣＰＵ制御部２は、６クロック周期でキャストアウトを開始するために、スヌープ制御部７へデータバスＣＰＵＡＤＲにスヌープアドレスを出力し、スヌープ制御部７からＣＰＵＡＣＫを受け入れる（信号群（５））（図６）。ここからキャストアウトデータ処理（図４）が開始される。
【００５０】
スヌープ制御部７は、１０クロック周期でＣＰＵ制御部２からデータの受け入れを開始して（信号群６（図５））１５クロック周期で受け入れを完了する（ステップＳ７）。このデータはＣＰＵデータバッファ８へ一時格納される（信号群（７））（図７）。
スヌープ制御部７は、１５クロック周期からＣＰＵデータバッファ８に格納されているデータをＤＭＡ手段５へ転送する（信号群（８））（図５）（ステップＳ８）。
【００５１】
スヌープ制御部７は、上記キャストアウトデータ処理と並行して１０クロック周期でメモリリード処理（図３）をスタートさせる。
スヌープ制御部７は、メモリ制御部４へ信号群（９）（図６）を送ってスヌープアドレスのデータ読み出しを要求する。この要求に対してメモリ制御部４はメインメモリ３からスヌープアドレスのデータを読み出して１１クロック周期から転送を開始し１６クロック周期で完了する（信号群（１０））（図６）。このデータはメモリデータバッファ９に一時格納される（データ群（１１））（図７）。
【００５２】
スヌープ制御部７は、１７クロック周期でメモリ制御部４がデータ受け入れ準備が完了したことを認識する。続いて、ＣＰＵデータバッファ８に一時格納されているデータをメモリ制御部４に送出（信号群（１２））してキャストアウトデータ処理を完了する。
以上説明したように、スヌープ制御部７は、ＣＰＵデータバッファ８とメモリデータバッファ９を有効に用いることによってメモリリード処理とキャストアウトデータ処理とを並行して進めることが可能になる。
【００５３】
次に上記ステップＳ６でキャストアウトが発生しなかった場合、即ち、ステップＳ１０へ進んだ場合について説明する。
図８は、実施例１のタイムチャート（その４）である。
図９は、実施例１のタイムチャート（その５）である。
図１０は、実施例１のタイムチャート（その６）である。
【００５４】
図８は、ＤＭＡ制御部６とスヌープ制御部７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部７との間の各種信号のタイムチャートである。
縦軸上上から順にＣＬＫ（クロック）、ＤＭＡＲＥＱ、ＤＭＡＡＤＲ、ＤＭＡＲＤ、ＤＭＡＡＣＫ、ＤＭＡＲＤＢ、ＳＰＲＥＱ、ＳＮＰＡＤＲ、ＳＮＰＲＤ、ＳＰＡＣＫ、ＣＰＵＲＥＱ、ＣＰＵＡＤＲ、ＣＰＵＡＣＫ、ＣＯＵＴ、ＣＰＵＷＤＢ、ＣＰＵＷＲＶ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００５５】
図９は、メモリ制御部４とスヌープ制御部７との間の各種信号のタイムチャートである。
縦軸上上から順にＭＥＭＲＥＱ、ＭＥＭＡＣＫ、ＭＥＭＡＤＲ、ＭＥＭＲＤ、ＭＥＭＷＤＢ、ＭＥＭＷＲＶ、ＭＥＭＷＲＤＹ、ＭＥＭＲＤＢ、ＭＥＭＲＤＶ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００５６】
図１０は、ＣＰＵデータバッファ８及びメモリデータバッファ９のタイムチャートである。
縦軸上上からＣＢＵＦ０、ＣＢＵＦ１、ＣＢＵＦ２、ＣＢＵＦ３、ＣＢＵＦＶ、ＭＢＵＦ０、ＭＢＵＦ１、ＭＢＵＦ２、ＭＢＵＦ３、ＭＢＵＦ、の各信号を表している。横軸は、各時刻をクロック信号の数で表している。
【００５７】
以下にステップＳ６でキャストアウトが発生した場合との差異点を主にして説明する。
１クロック周期でＤＭＡからアドレスＤＭＡＡＤＲ０を指定してアドレスリード要求（信号群（１））がＤＭＡ制御部６からスヌープ制御部７へ出力される。この信号群（１）（図８）によってスヌープ処理フロー（図２）が開始される（ステップＳ１）。
【００５８】
信号群（１）（図８）はリード要求（ＭＥＭＲＤ＝１）なのでステップＳ３へ進む。
信号群（１）に基づいて、スヌープ制御部７は、１クロック周期遅れてＣＰＵ制御部２へスヌープ要求を送出して、ＳＰＡＣＫ信号をＣＰＵ制御部２から受け入れる（信号群（２））（図８）。
信号群（２）（図８）と同時に、スヌープ制御部７は、メモリ制御部４へデータリード要求を送出してＭＥＭＡＣＫ信号をメモリ制御部４から受け入れる（信号群（１３））（図９）。
ここでは、上記ステップＳ３で説明したように、スヌープ制御部７がＣＰＵ制御部２に対してスヌープ要求すると同時にメインメモリ３に対してデータリードを要求していることがタイムチャート（図８及び図９）中に示されている。      
【００５９】
上記図５ではＣＰＵ制御部２は、６クロック周期で、キャッシュメモリ１０の中に所定のアドレスに所望のデータを検出してＣＯＵＴ信号を出力したがここでは信号（４）の発生はない（ステップＳ６）。
【００６０】
スヌープ制御部７は、１１クロック周期でメモリ制御部４からデータの受け入れを開始して（信号群１６（図９））１６クロック周期で受け入れを完了する（ステップＳ１０）。このデータはメモリデータバッファ９へ一時格納される（信号群（２１））（図１０）。
スヌープ制御部７は、１６クロック周期からメモリデータバッファ９に格納されているデータをＤＭＡ制御部６へ転送する（信号群（１８））（図８）（ステップＳ１１）。
【００６１】
以上説明したように、スヌープ制御部７は、メモリデータバッファ９を有効に用いることによってキャストアウトが発生しなかった場合でも従来技術で説明した手順１〜手順５を経ることなくリードＤＭＡを実行することが可能になっている。
【００６２】
以上説明したように、本実施例によれば、ＣＰＵデータバッファと、メモリデータバッファと、読み込みデータ転送手段とを有するスヌープ制御部を備えることによって、キャストアウトが発生した場合でも、キャストアウトが発生しない場合でもＤＭＡに対してバッファからデータを供給できるのでＤＭＡ処理時間が短くなりシステム性能の向上を図ることができるという効果を得る。
【実施例２】
【００６３】
実施例２の構成について説明する。
上記実施例１では、ＣＰＵデータバッファとメモリデータバッファと読み込みデータ転送手段とを有するスヌープ制御部を備えることによって、スヌープ要求とメモリリード要求とを同時に発行し、ＤＭＡ処理時間を短縮した。実施例２では、更にスヌープ制御部内に、予想する次のアドレスを格納するネックストアドレスバッファを更に備え、ＤＭＡ要求が発生する前に先行してスヌープ要求とメモリリード要求とを実行することによってＤＭＡ処理時間をより一層短縮する。かかる目的を達成するために実施例２は以下のように構成される。
【００６４】
図１１は、実施例２の構成のブロック図である。
図１１より、実施例２のデータ転送制御装置は、ＣＰＵ１と、ＣＰＵ制御部２と、メインメモリ３と、メモリ制御部４と、ＤＭＡ手段５と、ＤＭＡ制御部６と、スヌープ制御部２７とを備える。以下に実施例１との差異のみについて説明する。
【００６５】
スヌープ制御部２７は、実施例１における役割に加えて、一度ＤＭＡが発生すると、その処理が終了した時点で次のＤＭＡ要求が無くても、連続した次のアドレス（以後先行アドレスと記す）について先行処理をする部分である。
このスヌープ制御部２７は、上記ＤＭＡ制御部６から所定のアドレスのデータ読み込み要求があって、上記キャッシュメモリ１０内に所望のデータが検出されたときに該データを読み込んで一時格納するＣＰＵデータバッファ８と、上記ＤＭＡ手段５から所定のアドレスのデータ読み込み要求があったときに上記メインメモリ内から所望のデータを検出し、該データを読み込んで一時格納するメモリデータバッファ９と、上記ＣＰＵデータバッファ８及び上記メモリデータバッファ９のいずれか一方から上記読み込んだデータを上記ＤＭＡ制御部６へ転送する読み込みデータ転送手段１１と、上記ＤＭＡ制御部６から所定のアドレスのデータ読み込み要求があったときに該所定のアドレスの直後に続く先行アドレスを一時格納するネックストアドレスバッファ２０とを備える。
他の構成部分及び各構成部分間で送受信する信号は全て実施例１と同様なので説明を割愛する。
【００６６】
実施例２の動作について説明する。
図１２は、実施例２のフローチャート（その１）である。
図１２のステップＳ４０〜ステップＳ５６に従って実施例２の基本動作について説明する。
【００６７】
ステップＳ４０
スヌープ制御部２７（図１１）がＤＭＡ制御部６（図１１から）ＤＭＡＲＥＱ信号を受け入れてスヌープ処理がスタートする。
ステップＳ４１
スヌープ制御部２７（図１１）は発生したＤＭＡがリードＤＭＡであるかライトＤＭＡであるかを判断する。リードＤＭＡであるときは次へ進み、ライトＤＭＡのときはステップＳ４３へ分岐する。但し、ステップＳ４３は、本発明とは直接関係しない部分なので説明を割愛する。
【００６８】
ステップＳ４２
スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に先行アドレスが一時格納されているかどうか判断する。ここでＡＢＵＦ・Ｖ＝１のときスヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に先行アドレスが一時格納されていると判断してステップＳ４４へ進む。ＡＢＵＦ・Ｖ＝０のときは、スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に先行アドレスが一時格納されていないと判断してステップＳ５０へ進む。
【００６９】
ステップＳ４４
スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に格納されている先行アドレスとＤＭＡ制御部６の要求しているアドレスが等しいか否かを判断する。この判断は、アドレスの下位５ビットを無視して上位のビットのみによって行われる。両アドレスが等しいと判断したときはステップＳ４５へ進み、等しくないと判断したときはステップＳ４９へ進む。
【００７０】
ステップＳ４５
スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に格納されている先行アドレスのスヌープ先行処理が完了した後ステップＳ５７へ進む。
【００７１】
ステップＳ５７
スヌープ制御部２７（図１１）は、ＤＭＡから要求されたアドレスに３２ビット加算（先行アドレスになる）してネックストアドレスバッファ２０に格納する。
【００７２】
ステップＳ４６
スヌープ制御部２７（図１１）は、キャストアウトが発生しているか否かを判断する。この判断は、メモリデータバッファ９に所望のデータが格納されているか否かで判断する。メモリデータバッファ９に所望のデータが格納されている場合には、ステップＳ４７へ進み、メモリデータバッファ９に所望のデータが格納されていない場合には、ステップＳ５２へ進む。
【００７３】
ステップＳ４７
スヌープ制御部２７（図１１）は、ＣＰＵデータバッファ８に格納されているデータをＤＭＡ制御部６へ転送する。
ステップＳ４８
スヌープ制御部２７（図１１）は、ＣＰＵデータバッファ８から全てのデータがメインメモリ３へ書き込まれた後ステップＳ５４へ進む。
【００７４】
ステップＳ４９
スヌープ制御部２７（図１１）は、自己が有するバッファに既に一時格納されているデータを廃棄する。
ステップＳ５０
スヌープ制御部２７（図１１）は、ＤＭＡ制御部６から要求されたアドレスに３２ビット加算（先行アドレスになる）してネックストアドレスバッファ２０に格納する。
ステップＳ５１
後に説明する通常ルーチンへ進む。
【００７５】
ここで通常ルーチンについて説明する。
図１３は、実施例２のフローチャート（その２）である。
図１３は、上記実施例１のフローチャート（その１）のステップ１２とステップＳ１３の間にステップＳ１００を追加したのみであってステップＳ１００（スヌープ先行処理）以外の動作は、実施例１のフローチャート（その１）（図２）と全く同様なので説明を割愛する。尚、ステップＳ１００（スヌープ先行処理）については後に他の図を用いて詳細に説明する。
再度図１１へ戻って実施例２の動作についての説明を続ける。
【００７６】
ステップＳ５２
スヌープ制御部２７（図１１）は、メモリデータバッファ９へ全てのデータ（ＭＢＵＦ０〜ＭＢＵＦ３）が一時格納された後ステップＳ５３へ進む。
ステップＳ５３
スヌープ制御部２７（図１１）は、メモリデータバッファ９に格納されているデータをＤＭＡへ転送する。
【００７７】
ステップＳ５４
スヌープ制御部２７（図１１）は、ＭＢＵＦ・Ｖ＝０、ＣＢＵＦ・Ｖ＝０、ＮＳＰＥＮＤ・Ｖ＝０にクリアする。
ステップＳ５５
スヌープ制御部２７（図１１）は、スヌープ先行処理を起動してフローを終了する（ステップＳ５６）
【００７８】
次に、スヌープ先行処理について説明する。
図１４は、実施例２のフローチャート（その３）である。
図１４は、スヌープ先行処理のフローチャートである。図中のステップＳ６０〜ステップＳ７０に従ってスヌープ先行処理について説明する。
【００７９】
ステップＳ６０
スヌープ先行処理が開始される。
ステップＳ６１
スヌープ制御部２７（図１１）は、ＣＰＵデータバッファ８とメモリデータバッファ９にデータが格納されているか否かを判断する。データが格納されているときはステップＳ７０へ進んで処理を終了する。格納されていない場合には、ステップＳ６２へ進む。
【００８０】
ステップＳ６２
スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に先行アドレスが格納されているか否かを判断する。先行アドレスが格納されている場合にはステップＳ７１へ進み、格納されていない場合にはステップＳ７０へ進んで処理を終了する。
【００８１】
ステップＳ７１
スヌープ制御部２７（図１１）は、ネックストアドレスバッファ２０に格納されている先行アドレスがメインメモリ３のメモリ領域を越えた範囲を指定していないかどうかを判断する。越えていると判断した場合には格納されている先行アドレスを廃棄して（ステップＳ７２）ステップＳ７０へ進んで処理を終了する。越えていないと判断した場合にはステップＳ６３へ進む。
【００８２】
ステップＳ６３
スヌープ制御部２７（図１１）は、ＣＰＵ制御部２（図１１）に対してＳＰＲＥＱ信号をＯＮ（＝１）にし、先行アドレスをアドレスバスＳＮＰＡＤＲに出力してスヌープを要求する。同時にメインメモリ３（図１１）に対してＭＥＭＲＤ信号をＯＮ（＝１）にし、アドレスをアドレスバスＭＥＭＡＤＲに出力してデータリードを要求する。更に、キャストアウト処理を起動する。
【００８３】
ステップＳ６４
スヌープ制御部２７（図１１）は、ＣＰＵ制御部２（図１１）からＳＰＡＣＫがＯＮするまで待って、ＣＰＵ制御部２（図１１）がＳＰＲＥＱ信号を受け入れたことを確認して次へ進む。
【００８４】
ステップＳ６５
スヌープ制御部２７（図１１）は、ＣＰＵ制御部２（図１１）からＣＯＵＴ信号を受け入れたとき（＝１）ＣＰＵがキャッシュメモリ中の所定のアドレスに所望のデータを検出できたものと判断してステップＳ６６へ進む。スヌープ制御部２７（図１１）が、ＣＰＵ制御部２（図１１）からＣＯＵＴ信号を受け入れなかったとき（＝０）は、所望のデータを検出できなかったものと判断してステップＳ６８へ進む。
【００８５】
ステップＳ６６
スヌープ制御部２７（図１１）は、ＣＰＵ制御部２（図１１）を介してキャッシュメモリから所望のデータの全てを受け入れるのを待って（ＣＢＵＦ・Ｖ＝１になる）受け入れ完了後ステップＳ６７へ進む。ここで所望のデータがＣＰＵデータバッファ８に一時格納される。
【００８６】
ステップＳ６７
スヌープ制御部２７（図１１）は、先行アドレスのスヌープ処理を終了したので（ＮＳＰＥＮＤ＝１）ステップＳ７０へ進んでフローを終了する。
ステップＳ６８
スヌープ制御部２７（図１１）は、先行アドレスのスヌープ処理を終了したので（ＮＳＰＥＮＤ＝１）ステップＳ６９へ進む。
【００８７】
ステップＳ６９
スヌープ制御部２７（図１１）は、メインメモリ３（図１１）から所望のデータを読み込んでメモリデータバッファ９（図１１）へ書き込む。全ての所望データの書き込みが終了した後（ＭＢＵＦ＝１）ステップＳ７０へ進んでフローを終了する。
【００８８】
次に上記フローチャートを用いて説明した実施例２の動作の内容をタイムチャートを用いて補足説明する。
最初に上記ステップＳ４６でキャストアウトが発生した場合、即ち、ステップＳ４７へ進んだ場合について説明する。
図１５は、実施例２のタイムチャート（その１）である。
図１６は、実施例２のタイムチャート（その２）である。
【００８９】
図１５及び図１６とも、ＤＭＡ制御部６とスヌープ制御部２７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部２７との間の各種信号のタイムチャートである。
図１５及び図１６とも、縦軸上上から順にＣＬＫ（クロック）、ＤＭＡＲＥＱ、ＤＭＡＡＤＲ、ＤＭＡＲＤ、ＤＭＡＡＣＫ、ＤＭＡＲＤＢ、ＳＰＲＥＱ、ＳＮＰＡＤＲ、ＳＮＰＲＤ、ＳＰＡＣＫ、ＣＰＵＲＥＱ、ＣＰＵＡＤＲ、ＣＰＵＡＣＫ、ＣＯＵＴ、ＣＰＵＷＤＢ、ＣＰＵＷＲＶ、ＡＢＵＦ、ＡＢＵＦ・Ｖ、ＮＳＰＥＮＤの各信号を表している。横軸は、各時刻をクロック信号の数で表し、図１５は１クロック周期から２８クロック周期までを表し、図１６は、２９クロック周期以後を表している。
【００９０】
図１５において、信号群（２１）は、ＤＭＡ制御部６とスヌープ制御部２７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部２７との間の各種信号のタイムチャートであり、実施例１のタイムチャート（その１）（図５）と全く同様である。
メモリ制御部４とスヌープ制御部２７との間の各種信号のタイムチャートも実施例１のタイムチャート（その２）（図６）と全く同様なので図示を割愛する。
【００９１】
図１６において、信号群（２２）は、ＤＭＡ制御部６からスヌープ制御部２７が、図１５におけるＤＭＡ・ＡＤＲ０によるスヌープ処理が実行された後、ＤＭＡ・ＡＤＲ１のスヌープ処理を実行する場合を表している。
【００９２】
実施例１であれば、図１５における信号群（２１）と全く同様にＤＭＡ制御部６とスヌープ制御部２７との間で各種信号の送受信が繰り返される。一方実施例２では、図１６に示すように、信号群（２２）の直後に信号群（２４）によってスヌープ制御部２７からＤＭＡ制御部６へ、ＣＰＵデータバッファ８に一時格納されているデータが転送される。この信号群（２２）から信号群（２４）に至るまでの経過時間は、信号群（２１−１）（図１５）から信号群（２１−２）（図１５）に至る経過時間と比較して大幅に短縮されている。ここに実施例２の意義がある。
【００９３】
即ち、実施例２では、ネックストアドレスバッファ２０（図１１）に既に先行アドレスが格納されている（ステップＳ５０）（図１２）。この先行アドレス（ここではＤＭＡ・ＡＤＲ１）に基づいて、実施例２のフローチャート（その３）（図１４）に示すようにスヌープ先行処理が実行される（信号群（２３））。更に、スヌープ制御部２７は、ＤＭＡ制御部６からＤＭＡ・ＡＤＲ１を受け入れて、４４クロック周期でネックストアドレスバッファ２０（図１１）に格納されている先行アドレスと比較する。その結果が一致したときにスヌープ先行処理の結果を利用する事になる（信号群（２４））。
【００９４】
次に、上記ステップＳ４６でキャストアウトが発生しない場合、即ち、ステップＳ５２へ進んだ場合について説明する。
図１７は、実施例２のタイムチャート（その３）である。
図１８は、実施例２のタイムチャート（その４）である。
【００９５】
図１７及び図１８とも、ＤＭＡ制御部６とスヌープ制御部２７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部２７との間の各種信号のタイムチャートである。  図１７及び図１８とも、縦軸上上から順にＣＬＫ（クロック）、ＤＭＡＲＥＱ、ＤＭＡＡＤＲ、ＤＭＡＲＤ、ＤＭＡＡＣＫ、ＤＭＡＲＤＢ、ＤＭＡＲＤＢ、ＳＰＲＥＱ、ＳＮＰＡＤＲ、ＳＮＰＲＤ、ＳＰＡＣＫ、ＣＰＵＲＥＱ、ＣＰＵＡＤＲ、ＣＰＵＡＣＫ、ＣＯＵＴ、ＣＰＵＷＤＢ、ＣＰＵＷＲＶ、ＡＢＵＦ、ＡＢＵＦ・Ｖ、ＮＳＰＥＮＤの各信号を表している。横軸は、各時刻をクロック信号の数で表し、図１７は１クロック周期から２８クロック周期までを表し、図１８は、２９クロック周期以後を表している。
【００９６】
図１７において、信号群（２５）は、ＤＭＡ制御部６とスヌープ制御部２７との間の各種信号、及びＣＰＵ制御部２とスヌープ制御部２７との間の各種信号のタイムチャートであり、実施例１のタイムチャート（その４）（図８）と全く同様である。
メモリ制御部４とスヌープ制御部２７との間の各種信号のタイムチャートも実施例１のタイムチャート（その５）（図９）と全く同様なので図示を割愛する。
【００９７】
図１８において、信号群（２６）は、ＤＭＡ制御部６からスヌープ制御部２７が、図１７におけるＤＭＡ・ＡＤＲ０によるスヌープ処理が実行された後、ＤＭＡ・ＡＤＲ０に続いてＤＭＡ・ＡＤＲ１のスヌープ処理を実行する場合を表している。
【００９８】
実施例１であれば、図１７における信号群（２５）と全く同様にＤＭＡ制御部６とスヌープ制御部２７との間で各種信号の送受信が繰り返される。一方実施例２では、図１８に示すように、信号群（２６）の直後に信号群（２７）によってスヌープ制御部２７からＤＭＡ制御部６へ、メモリデータバッファ９に一時格納されているデータが転送される。この信号群（２６）から信号群（２７）に至るまでの経過時間は、信号群（２５−１）（図１７）から信号群（２５−２）（図１７）に至る経過時間と比較して大幅に短縮されている。上記キャストアウトが発生した場合と同様に、ここに実施例２の意義がある。
【００９９】
即ち、実施例２では、ネックストアドレスバッファ２０（図１１）に既に先行アドレスが格納されている（ステップＳ５０）（図１２）。この先行アドレス（ここではＤＭＡ・ＡＤＲ１）に基づいて、実施例２のフローチャート（その３）（図１４）に示すようにスヌープ先行処理が実行される（信号群（２８））。更に、スヌープ制御部２７は、ＤＭＡ制御部６からＤＭＡ・ＡＤＲ１を受け入れて、４４クロック周期でネックストアドレスバッファ２０（図１１）に格納されている先行アドレスと比較する。その結果が一致したときにスヌープ先行処理の結果を利用する事になる（信号群（２７））。尚、この信号群（２７）は、キャストアウトが発生した場合の信号群（２４）（図１６）と異なり、メモリデータバッファ９に一時格納されているデータであることに留意すべきである。
【０１００】
以上説明したように、実施例２では実施例１のスヌープ制御部に更にネックストアドレスバッファを備える事により実施例１の効果に加えて、ＤＭＡ要求アドレスが連続している場合に、次のＤＭＡ要求が来る前に、先行アドレスについて先行処理することが可能になり、より一層高速処理が可能になりシステムの向上を図ることができるという効果を得る。
【実施例３】
【０１０１】
実施例３の構成について説明する。  実施例２では、先行処理するための先行アドレスは、固定値（２０ｈ、１０進数で３２）を加算して求められた。しかし、プリンタ等の画像生成装置では、裏面印刷を実行するためにアドレスがデクリメントされることもある。実施例３では、このような場合へも対応できるように、前回のアドレスと今回の要求アドレスとの差分をバッファに格納する。この差分を今回のアドレスに加算して先行アドレスを求める。かかる目的を達成するために実施例３は以下のように構成される。
【０１０２】
図１９は、実施例３の構成のブロック図である。  図１９より、実施例３のデータ転送制御装置は、ＣＰＵ１と、ＣＰＵ制御部２と、メインメモリ３と、メモリ制御部４と、ＤＭＡ手段５と、ＤＭＡ制御部６と、スヌープ制御部３７とを備える。以下に実施例２との差異のみについて説明する。
【０１０３】
スヌープ制御部３７は、実施例２のネックストアドレスバッファ２０（図１１）に換えて、ネックストアドレスバッファ３０を備える。このネックストアドレスバッファ３０は、アドレスバッファ（ＡＢＵＦ）３０−１と差分バッファ（ＤＩＦＢＵＦ）３０−２を備え、ＤＭＡ制御部６からアドレス要求があったときに、その要求アドレスに差分バッファ（ＤＩＦＢＵＦ）３０−２の値を加算し、その結果をアドレスバッファ（ＡＢＵＦ）３０−１に格納する部分である。その結果、アドレスがデクリメントされる場合にも対応可能な先行アドレス生成機能を有することになる。
他の構成部分及び各構成部分間で送受信する信号は全て実施例２と同様なので説明を割愛する。
【０１０４】
実施例３の動作について説明する。
図２０は、実施例３のフローチャートである。
図２０は、既に説明した実施例２のフローチャート（その１）（図１２）と大部分が共通する。
【０１０５】
実施例２のフローチャート（その１）（図１２）との差異部分のみについて説明する。
ステップＳ１１０
スヌープ制御部３７は、ＤＭＡ制御部６からの要求アドレスに差分バッファ（ＤＩＦＢＵＦ）３０−２の値を加算してアドレスバッファ（ＡＢＵＦ）３０−１に格納し、ＡＢＵＦ・Ｖ＝１を出力する。
【０１０６】
ステップＳ１１１
アドレス予測ルーチンへ分岐する。後記図２１で説明する。
ステップＳ１１２
スヌープ制御部３７は、差分バッファ（ＤＩＦＢＵＦ）３０−２の初期値として２０ｈ（１０進数で３２）を格納する。
【０１０７】
ステップＳ１１３
スヌープ制御部３７は、ＤＭＡ制御部６からの要求アドレスに差分バッファ（ＤＩＦＢＵＦ）３０−２の値を加算してアドレスバッファ（ＡＢＵＦ）３０−１に格納し、ＡＢＵＦ・Ｖ＝１を出力する。
【０１０８】
図２１は、アドレス予測ルーチンのフローチャートである。
上記ステップＳ１１１からこのアドレス予測ルーチンへ分岐してくる。
ステップＳ１２０
スヌープ制御部３７は、前回の要求アドレスと今回の要求アドレスから、（今回の要求アドレス）−（ＡＢＵＦの内容）＋（ＤＩＦＢＵＦ）として差分を求める。
【０１０９】
ステップＳ１２１
スヌープ制御部３７は、ステップＳ１２０で求めた結果を差分バッファ（ＤＩＦＢＵＦ）３０−２へ格納する。
ステップＳ１２２
スヌープ制御部３７は、差分バッファ（ＤＩＦＢＵＦ）３０−２の内容が２０ｈよりも大きいかどうかを判定する。このステップによって新たなＤＭＡの発生によってアドレスが大きく変化したかどうかを判断する。ここで２０ｈよりも大きい場合にはステップＳ１２４へ分岐し、２０ｈよりも小さい場合には、差分バッファ（ＤＩＦＢＵＦ）３０−２の内容が適正であると判断してステップＳ１２３へ進む。
【０１１０】
ステップＳ１２３
スヌープ制御部３７は、差分バッファ（ＤＩＦＢＵＦ）３０−２の内容が−２０ｈよりも小さいかどうかを判断する。このステップによって新たなＤＭＡの発生によってアドレスが大きく変化したかどうかを判断する。ここで−２０ｈよりも小さい場合にはステップＳ１２５へ分岐し、−２０ｈよりも大きい場合には、差分バッファ（ＤＩＦＢＵＦ）３０−２の内容が適正であると判断して図２０のＢへ戻る。
【０１１１】
ステップＳ１２４
スヌープ制御部３７は、差分バッファ（ＤＩＦＢＵＦ）３０−２に２０ｈを格納する。
ステップＳ１２５
スヌープ制御部３７は、差分バッファ（ＤＩＦＢＵＦ）３０−２に−２０ｈを格納する。
以上で実施例３の動作説明を終了する。
【０１１２】
以上説明したように、本実施例によれば、前回のアドレスと今回の要求アドレスとの差分を差分バッファ（ＤＩＦＢＵＦ）に格納する。この差分を今回のアドレスに加算して先行アドレスを求める。その結果アドレスがデクリメントされる場合にも対応できるようになりＤＭＡの処理時間をより一層短縮することが可能になるという効果を得る。
【産業上の利用可能性】
【０１１３】
以上の説明では、本発明の適用例を特に示してはいないが、本発明は、キャッシュ付きＣＰＵと共に使用する画像形成装置等に有効に適用される。
【図面の簡単な説明】
【０１１４】
【図１】実施例１の構成のブロック図である。
【図２】実施例１のフローチャート（その１）である。
【図３】実施例１のフローチャート（その２）である。
【図４】実施例１のフローチャート（その３）である。
【図５】実施例１のタイムチャート（その１）である。
【図６】実施例１のタイムチャート（その２）である。
【図７】実施例１のタイムチャート（その３）である。
【図８】実施例１のタイムチャート（その４）である。
【図９】実施例１のタイムチャート（その５）である。
【図１０】実施例１のタイムチャート（その６）である。
【図１１】実施例２の構成のブロック図である。
【図１２】実施例２のフローチャート（その１）である。
【図１３】実施例２のフローチャート（その２）である。
【図１４】実施例２のフローチャート（その３）である。
【図１５】実施例２のタイムチャート（その１）である。
【図１６】実施例２のタイムチャート（その２）である。
【図１７】実施例２のタイムチャート（その３）である。
【図１８】実施例２のタイムチャート（その４）である。
【図１９】実施例３の構成のブロック図である。
【図２０】実施例３のフローチャートである。
【図２１】アドレス予測ルーチンのフローチャートである。
【符号の説明】
【０１１５】
１  ＣＰＵ
２  ＣＰＵ制御部
３  メインメモリ
４  メモリ制御部
５  ＤＭＡ手段
６  ＤＭＡ制御部
７  スヌープ制御部
８  ＣＰＵデータバッファ
９  メモリデータバッファ
１０  キャッシュメモリ
１１  読み込みデータ転送手段
【図１】
2005149195.tif 000003
【図２】
2005149195.tif 000004
【図３】
2005149195.tif 000005
【図４】
2005149195.tif 000006
【図５】
2005149195.tif 000007
【図６】
2005149195.tif 000008
【図７】
2005149195.tif 000009
【図８】
2005149195.tif 000010
【図９】
2005149195.tif 000011
【図１０】
2005149195.tif 000012
【図１１】
2005149195.tif 000013
【図１２】
2005149195.tif 000014
【図１３】
2005149195.tif 000015
【図１４】
2005149195.tif 000016
【図１５】
2005149195.tif 000017
【図１６】
2005149195.tif 000018
【図１７】
2005149195.tif 000019
【図１８】
2005149195.tif 000020
【図１９】
2005149195.tif 000021
【図２０】
2005149195.tif 000022
【図２１】
2005149195.tif 000023