(57)【要約】【課題】    データ書込み転送におけるバス利用効率を維持しつつ、データ転送先の領域のデータへの書込み完了を保証可能とする。【解決手段】    転送制御部２８５は転送データを前記バッファから転送先のアドレスに係るデバイスへ転送する際に、所定の転送単位にデータを分割して転送データの転送を行い、分割された転送データであって、最終転送に係るデータの場合には、データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で最終転送に係る転送データを転送し、また、分割された転送データであって、最終転送に係る転送データではない場合には、データ転送先のアドレスに係るデバイスからレスポンスを必要としない転送方式で転送する命令を送信する。【選択図】            図３
2006293927.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクトメモリアクセス制御装置において、
データ転送に係るデータ転送元のアドレス、データ転送先のアドレス、及び、データ転送に係るデータのサイズに関する情報を含む転送情報を受け取り、前記転送情報を記憶する内部レジスタと、
前記内部レジスタに記憶された前記データ転送元のアドレス及びデータ転送に係るデータのサイズに基づいて、前記データ転送元のアドレスに係るデバイスから転送データを取得し、前記データ転送に係るデータ転送先のアドレスに基づいて、前記データ転送先のアドレスに係るデバイスへ転送データを送信する命令である転送命令を送信する転送制御部と、
前記転送制御部が取得した転送データを記憶するバッファと、
前記転送制御部が送信した転送命令を受信し、受信した転送命令に基づいて前記データ転送元アドレスに係るデバイスから転送データを受信し、前記バッファに記憶された転送データを前記バッファに送信し、前記受信した転送データを前記転送先のアドレスに係るデバイスに送信するインターフェースと、を有し、
前記転送制御部は、前記転送データを前記バッファから前記転送先のアドレスに係るデバイスへ転送する際に、所定の転送単位にデータを分割して転送データの転送を行い、前記分割された転送データであって、最終転送に係るデータの場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で前記最終転送に係る転送データを転送し、また、分割された転送データであって、最終転送に係る転送データではない場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要としない転送方式で転送する命令を送信することを特徴とするダイレクトメモリアクセス装置。
【請求項２】
前記内部レジスタは、
データ転送元のアドレスを記憶するデータ転送元アドレス記憶部と、
データ転送先のアドレスを記憶するデータ転送先アドレス記憶部と、
データ転送に係るデータのサイズを記憶する転送数記憶部と、
を有することを特徴とする請求項１記載のダイレクトメモリアクセス装置。  
【請求項３】
前記転送制御部は、分割された転送データを転送する度に、データ転送元アドレス記憶部に記憶されたアドレスと前記転送単位とを加算し、データ転送先アドレス記憶部に記憶されたアドレスと前記転送単位とを加算し、転送数記憶部に記憶されたデータのサイズから前記転送単位を減算し、前記転送数記憶部に記憶されたデータサイズが前記転送単位以下になった場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で前記最終の転送データを転送する命令を送信することを特徴とする請求項２記載のダイレクトメモリアクセス装置。
【請求項４】
前記転送制御部は、
データ転送元アドレス記憶部に記憶されたアドレスに係るデバイスから前記転送単位の転送データを前記バッファに転送し、
前記転送された前記転送単位の転送データを前記データ転送先アドレス記憶部に記憶されたアドレスに係るデバイスに、前記データ転送先のアドレスに係るデバイスからレスポンスを必要としない転送方式で転送し、
前記データ転送元アドレス記憶部に記憶されたアドレスと前記転送単位とを加算してその結果を前記データ転送元アドレス記憶部に記憶し、データ転送先アドレス記憶部に記憶されたアドレスと前記転送単位とを加算してその結果を前記データ転送先アドレス記憶部に記憶し、転送数記憶部に記憶されたデータのサイズから前記転送単位を減算してその結果を前記転送数記憶部に記憶し、
前記転送数記憶部に記憶された内容が前記転送単位以下か否かを判定し、前記転送単位以下と判定された場合には、前記データ転送元アドレスに記憶されたアドレスに係るデバイスから前記転送数記憶部に記憶されたデータサイズの転送データを前記バッファに転送し、
前記転送された前記転送数記憶部に記憶されたデータサイズの転送データを前記データ転送先アドレス記憶部に記憶されたアドレスに係るデバイスに、前記データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で転送する命令を送信することを特徴とする請求項２記載のダイレクトメモリアクセス装置。
【請求項５】
ダイレクトメモリアクセス制御装置を含むシステムＬＳＩにおいて、
データ転送の際にデータ転送の制御を行うダイレクトメモリアクセス装置と、
各種命令を実行し、前記ダイレクトメモリアクセス装置にデータ転送の指示を行うＣＰＵと、
各種データを記憶する複数のデバイスと、
接続されたデバイスとのデータの転送を行うバスと、を有し、
前記ダイレクトメモリアクセス制御装置は、データ転送に係るデータ転送元のアドレス、データ転送先のアドレス、及び、データ転送に係るデータのサイズに関する情報を含む転送情報を受け取り、前記転送情報を記憶する内部レジスタと、
前記内部レジスタに記憶された前記データ転送元のアドレス及びデータ転送に係るデータのサイズに基づいて、前記データ転送元のアドレスに係るデバイスから転送データを前記バスを経由して取得し、前記データ転送に係るデータ転送先のアドレスに基づいて、前記データ転送先のアドレスに係るデバイスへ転送データを前記バスを経由して送信する命令である転送命令を送信する転送制御部と、
前記転送制御部が取得した転送データを記憶するバッファと、
前記転送制御部が送信した転送命令を受信し、受信した転送命令に基づいて前記データ転送元アドレスに係るデバイスから転送データを受信し、前記バッファに記憶された転送データを前記バッファに送信し、前記受信した転送データを前記転送先のアドレスに係るデバイスに送信するインターフェースと、を有し、
前記転送制御部は、前記転送データを前記バッファから前記転送先のアドレスに係るデバイスへ転送する際に、所定の転送単位にデータを分割して転送データの転送を行い、前記分割された転送データであって、最終転送に係るデータの場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で前記最終転送に係る転送データを転送し、前記レスポンスを受信した際には前記ＣＰＵへ転送の完了を通知し、また、分割された転送データであって、最終転送に係る転送データではない場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要としない転送方式で転送する命令を送信することを特徴とするダイレクトメモリアクセス制御装置を含むシステムＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムＬＳＩに関し、特に、データ書込み転送におけるバス利用効率を維持しつつ、データ転送先の領域のデータへの書込み完了を保証可能な技術に関する。
【背景技術】
【０００２】
近年のシステムＬＳＩ開発では、階層設計とすることで平行開発やブロックの再利用を促進して開発期間の短縮が図られている。階層設計とした時、複数の機能ブロック（デバイス）をバス結合したシステム構成となることが多い。
【０００３】
しかしながら、半導体の微細化の進展によって信号伝達の遅延時間全体の中で配線遅延が支配的となり、配線長が大きいバスを介したデータ転送を、従来の要求と応答が同期する方式で行うと、バス上の信号伝達に時間がかかるためバスを占有する時間が長くなり、バスの利用効率が低下して、システム全体の性能が低下する問題があった。
【０００４】
このため、バス上のデータ転送の要求と応答が非同期のスプリット・トランザクション方式などのバスインターフェースを用いて、バスの利用効率を向上させシステム性能を高める方法が知られている（例えば、非特許文献１参照。）。
【０００５】
また、ＤＭＡＣ装置を用いてＣＰＵを介さずデータ転送することで、デバイス間のデータ転送の転送効率を高めることが行なわれている。更にＤＭＡＣ装置に内蔵したＦＩＦＯ方式で動作するデータバッファの使用量によって読出し制御と書込み制御を行ってデータ転送の転送効率を向上させる技術が開示されている（例えば、特許文献１参照。）。
【特許文献１】特開２００１−１４２８１号公報（第２図）
【非特許文献１】「デザイン  ウェーブ  マガジン  ２００３年１２月号」  ＣＱ出版株式会社、第３９−５７頁
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前者のバスインターフェースを用いたデータ書込み転送で、バスインターフェースから先に存在するデータバッファへの書込みとそのハンドシェーク応答で転送を終了するポステッドライト（Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）方式を用いると、転送元デバイスはバスからの応答で転送を終了できるのでバスの利用効率やデータ転送効率は向上するが、転送先のデバイスでの実際のデータ書込み完了タイミングを知ることができない。
【０００７】
このため、転送元デバイスが転送終了時に転送先デバイスのデータの正当性を保証しなければならない時は、例えば転送先デバイスからの書込み完了信号を受信してからデータ転送を終了する非ポステッドライト（Ｎｏｎ  Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）方式を用いてデータ書込み転送が行われる。この方式は、データ転送元のデバイスが転送先のデバイスからの書込み終了応答が得られるまで次の転送を開始できないため、データ転送効率が低下する問題がある。
【０００８】
後者のＤＭＡＣ装置は、ＦＩＦＯ方式で動作するデータバッファに蓄えられたデータ量から、バスを介したデータ転送をシングル転送やバースト転送として読込み制御および書込み制御してデータ転送効率を向上させているが、データバッファがバス上に存在するような最近のシステムバスを介したデータ転送における、転送効率向上と書込み終了時のデータの書込み完了を保証することを同時に実現することに対応できない。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、データ書込み転送におけるバス利用効率を維持しつつ、データ転送先の領域のデータへの書込み完了を保証可能なダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムＬＳＩを提供することにある。
【課題を解決するための手段】
【００１０】
本願発明の一態様によれば、データ転送に係るデータ転送元のアドレス、データ転送先のアドレス、及び、データ転送に係るデータのサイズに関する情報を含む転送情報を受け取り、前記転送情報を記憶する内部レジスタと、前記内部レジスタに記憶された前記データ転送元のアドレス及びデータ転送に係るデータのサイズに基づいて、前記データ転送元のアドレスに係るデバイスから転送データを取得し、前記データ転送に係るデータ転送先のアドレスに基づいて、前記データ転送先のアドレスに係るデバイスへ転送データを送信する命令である転送命令を送信する転送制御部と、前記転送制御部が取得した転送データを記憶するバッファと、前記転送制御部が送信した転送命令を受信し、受信した転送命令に基づいて前記データ転送元アドレスに係るデバイスから転送データを受信し、前記バッファに記憶された転送データを前記バッファに送信し、前記受信した転送データを前記転送先のアドレスに係るデバイスに送信するインターフェースと、を有し、
前記転送制御部は、前記転送データを前記バッファから前記転送先のアドレスに係るデバイスへ転送する際に、所定の転送単位にデータを分割して転送データの転送を行い、前記分割された転送データであって、最終転送に係るデータの場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要とする転送方式で前記最終転送に係る転送データを転送し、また、分割された転送データであって、最終転送に係る転送データではない場合には、前記データ転送先のアドレスに係るデバイスからレスポンスを必要としない転送方式で転送する命令を送信することを特徴とするダイレクトメモリアクセス制御装置が提供される。
【発明の効果】
【００１１】
本発明に係るダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムＬＳＩによれば、データ書込み転送におけるバス利用効率を維持しつつ、データ転送先の領域のデータへの書込み完了を保証可能とすることができる。
【発明を実施するための最良の形態】
【００１２】
本発明に係るダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムＬＳＩの実施形態について、図面を参照しながら詳細に説明する。
【００１３】
（ダイレクトメモリアクセス制御装置を含むシステムＬＳＩ）
図１は、本実施形態のダイレクトメモリアクセス制御装置を含むシステムＬＳＩの概略構成図である。このシステムＬＳＩ１は、データ転送の際にデータ転送の制御を行うダイレクトメモリアクセス制御（ＤＭＡＣ）装置２００と、各種命令を実行し、ＤＭＡＣ装置２００にデータ転送の指示を行うＣＰＵ１００と、接続されたデバイスとのデータの転送を行うバス３００と、各種データを記憶するデバイス４００とデバイス５００とを有する。
【００１４】
ここで、ＣＰＵ１００がＤＭＡＣ装置２００に対して、ＤＭＡ要求を行った場合について説明する。本実施形態においては、ＣＰＵ１００がＤＭＡＣ装置２００にＤＭＡ要求を行う際には、ＤＭＡ転送開始命令、転送をすべき転送元のアドレス、転送先のアドレス、及び転送すべきデータのサイズ等の転送情報を出力する。この転送情報の出力は、バス３００を経由して出力しても良いし、ＣＰＵ１００とＤＭＡＣ装置２００とを直接接続する制御線を準備して、直接出力するようにしてもよい。
【００１５】
次に、転送情報を受け取ったＤＭＡＣ装置２００はＤＭＡ転送開始命令によって、ＤＭＡ転送のプロセスを開始する。まず、転送をすべき転送元のアドレスに基づいて、転送元のアドレスに係るデバイスを認定する。また、ＤＭＡＣ装置２００は、転送先のアドレスに基づいて、転送先のアドレスに係るデバイスを認定する。本実施形態においては、転送元のアドレスに係るデバイスとしてデバイスＡ（４００）が認定され、また、転送先のアドレスに係るデバイスとしてデバイスＢ（５００）が認定されたものとする。ＤＭＡＣ装置２００は、デバイスＡの所定のアドレス（アドレスＡとする）から始まるデータであって、転送すべきデータのサイズに係る大きさのデータをバス３００を経由して取得し（矢印２０）、デバイスＢの所定のアドレス（アドレスＢとする）から始まる記憶領域に対し、バス３００を経由して当該データを書き込む。書き込みが終了した際には、ＤＭＡＣ装置２００はデータ転送完了信号をＣＰＵ１００に送る。データ転送完了信号の送信に関しても、バス３００を経由して出力しても良いし、ＣＰＵ１００とＤＭＡＣ装置２００とを直接接続する制御線１０を準備して、直接出力するようにしてもよい。
【００１６】
ここで、デバイスＡ及びＢはデータを記憶する記憶装置であり、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ  （Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含むメモリ装置、ハードディスク装置を含み、また、バス３００が例えばブリッジ等に接続され、ブリッジ越しに記憶装置にアクセスする場合には当該ブリッジも含まれ得る。
【００１７】
バス３００は、このバス３００に接続されたＣＰＵ１００、ＤＭＡＣ装置２００、若しくはデバイスＡ、Ｂとのインターフェースを行うバスインターフェース４１，４２，４３，及び４４を有する。本実施形態におけるバス３００はパイプライン構造を有しており、バス３００内には、パイプラインレジスタ５１，５２，５３，及び５４を有している。これらパイプラインレジスタは、例えばフリップフロップを用いることが出来る。前述の通り、バス３００は、パイプライン構造を有し、バス３００に接続された各種のデバイスはパイプラインレジスタを経由して接続される。データ転送時には、単位時間（クロック）毎にパイプラインレジスタに記憶されたデータが次のパイプラインレジスタに転送され、最終的には目的のデバイスに到達する。すなわち、バス３００を経由する場合には、データは目的のデバイスに転送されるまでに通常数サイクル掛かる。
【００１８】
例えばＤＭＡＣ装置２００がデバイスＡからデータの読み込みを行う際には、バスインターフェース４２はＤＭＡＣ装置２００から読み込みの命令を受け取り、バスインターフェース４３に通信を行う。この通信の際には、パイプラインレジスタ５２、５３を経由する。バスインターフェース４３は、デバイスＡから所定のデータを受け取り、バス３００内のパイプラインレジスタ５２，５３を経由してバスインターフェース４２にデータを送信する。そして、バスインターフェース４２はＤＭＡＣ装置２００に所定のデータを送信する。
【００１９】
図２は、本実施形態のバス３００を説明するための図面である。上述の通り、本実施形態のバス３００はパイプライン構造を有しており、バスインターフェース４５，４６，４７，４８は、パイプラインレジスタ５５，５６，５７，５８，５９，６０，６１，６２，６３，及び６４を経由して、データの転送を行う事が出来る。例えば、バスインターフェース４５とバスインターフェース４８とがでデータ転送を行う場合には、パイプラインレジスタ５５，５６，５７，６０，６３，及び６４を経由する。
【００２０】
ここで、ＤＭＡＣ装置２００に内蔵できるデータバッファのサイズの制限や、ＤＭＡのデータ転送で用いられる転送効率の高いバーストモード転送がシステムバスを一つのデバイスからのアクセスで連続占有することになり他のデバイスからのシステムバスへのアクセスが一定期間行えないという事態が想定される。このような事態を回避するため、バーストモード転送の連続転送数に上限を設けて運用されることなどからデータ転送の転送単位の最大値が存在するようにしてもよい。
【００２１】
その場合には、転送されるデータを分割して転送する。分割してデータを転送するので、まず、分割されたデータであって、最初のデータがバスインターフェース４５から送信された場合には、その間に存在するパイプラインレジスタの個数のクロック数後にバスインターフェース４８に到達し、その後分割された個数だけデータが連なって送信されるようにしてもよい。
【００２２】
（ダイレクトメモリアクセス制御装置）
図３は、本発明に係るダイレクトメモリアクセス制御装置２００の構成を示すブロック図である。このダイレクトメモリアクセス制御装置２００は、ＣＰＵ１００から送信された転送情報及び開始信号を受信し、これら転送情報及び開始フラグを記憶するレジスタ２８０と、レジスタ２８０に記憶された開始フラグに基づいてデータ転送処理を開始し、レジスタ２８０に記憶された転送情報に基づいてデータ転送処理を行い、データ転送処理が完了した際には、ＣＰＵ１００に完了信号を送信する転送制御部２８５と、転送制御部２８５のデータ転送処理に係るデータを一時的に記憶するバッファ２９０と、バッファ２９０及びバス３００のバスインターフェースに電気的接続され、転送制御部２８５の転送命令に基づいて所定のデバイスからデータを受信し、受信したデータをバッファ２９０に送信し、前記受信したデータを所定のデバイスに送信するＤＭＡＣインターフェース２９５と、を有する。ここで、レジスタ２８０は、転送情報に含まれる転送元アドレスを記憶する転送元アドレス記憶部２８１と、転送先のアドレスを記憶する転送先アドレス記憶部２８２と、データ転送を行う際の転送数を記憶する転送数アドレス記憶部２８３と開始信号を受け取ったか否かの情報を記憶する開始フラグ記憶部２８４と、を有する。
【００２３】
次に、本実施形態のＤＭＡＣ装置２００の動作について説明する。まず、ＣＰＵ１００から開始信号及び書き込み信号を受信する。これら信号は続けて送信されるようにしても良いし、まず、書き込み信号を受信し、その後に開始信号を受信するようにしてもよい。ここで、この書き込み信号は転送情報を含む。転送情報とは、転送を行うべきデータの転送元のアドレス、転送を行うべきデータの転送先のアドレス、及び、転送を行うべきデータのサイズである。転送元アドレスは転送元アドレス２８１に記憶され、転送先アドレスはアドレス記憶部２８２に記憶される。また、転送を行うべきデータのサイズは転送数記憶部２８３に記憶される。
【００２４】
転送制御部２８５は、開始信号を検知した際には、データ転送処理を開始する。この検知方法は、開始フラグ記憶部２８４を周期的または常時監視して検知するようにしても良いし、ＣＰＵ１００からの信号を直接入力するようにしてもよい。後者の場合には開始フラグ記憶部２８４を備えなくても実施する事が出来る。開始信号を検知した転送制御部２８５は、次に、転送元アドレス記憶部２８１に記憶された転送元アドレス、転送先アドレス記憶部２８２に記憶された転送先アドレス、及び転送数記憶部２８３に記憶された転送数を読み込む。転送制御部２８５は、転送元アドレスに基づいて、転送すべきデータが記憶されたデバイス（図示せず）を特定し、ＤＭＡＣインターフェース２９５に転送すべきデータを読み込むように命令する。命令を受けたＤＭＡＣインターフェース２９５は、バス３００のバスインターフェース４９に対して、データ転送要求を行う。バスインターフェース４９はバス３００内のパイプラインレジスタ（図示せず）を経由して所定のデバイス（図示せず）から所定のデータを準備し、ＤＭＡＣインターフェース２９５に送信する。ＤＭＡＣインターフェース２９５は受信したデータをバッファ２９０に送信し、バッファ２９０は一時的にデータを記憶する。ここまでの処理を読み込み転送処理（リード転送処理）という。
【００２５】
次に、転送制御部２８５は、転送先アドレス記憶部２８２に記憶された転送先アドレスに基づいて、転送すべきデータが記憶されたデバイスを特定し、ＤＭＡＣインターフェース２９５に転送すべきデータを読み込むように命令する。命令を受けたＤＭＡＣインターフェース２９５は、バス３００のバスインターフェース４９に対して、データ転送要求を行う。バスインターフェース４９はバス３００内のパイプラインレジスタ（図示せず）を経由して、バッファ２９０に記憶されたデータを特定されたデバイス（図示せず）に転送する。
【００２６】
データを分割して転送を行う場合には、転送すべきデータが記憶されたデバイスからデータを読み込み、転送先のデバイスにデータを書き込む処理を所定の回数繰り返すことで、転送すべきデータの総てについて読み込み処理及び書き込み処理を行う。
【００２７】
転送が終了した際には、転送制御部２８５は転送先のデバイスから完了信号をＤＭＡＣインターフェース２９５を経由して受信する。転送制御部２８５は完了信号を受信した際には、ＣＰＵ１００に対して、データの転送が完了した旨を通知するために、完了信号を送信し、転送処理を終了する。この転送先デバイスにデータを転送する処理を書き込み転送処理（ライト転送処理）という。
【００２８】
図４は、本実施形態のダイレクトメモリアクセス制御装置２００を説明するための概略回路構成図である。ＤＭＡＣ装置２００は、ＣＰＵ１００よりＣＰＵ１００からのレジスタ選択および書込み信号２０１とＣＰＵ１００からの設定のための専用バス２０２を経由して転送元アドレスレジスタ２１０、転送先アドレスレジスタ２２０、転送数レジスタ２３０に、それぞれ転送先アドレス（アドレスＡ）、転送元アドレス（アドレスＢ）、転送数（１Ｋ）が入力設定され、ＣＰＵからのデータ転送開始信号２０３によってデータ読出し転送とデータ書込み転送とが一組で実現するデータ転送が開始される。
【００２９】
次に、転送数レジスタ２３０の値と転送単位の値とを比較回路２３２で比較し、転送単位と等しいかまたは小さいかを判断する。ここで、本実施形態においては、転送単位を１６ワードとする。しかしながら、本発明に係るダイレクトメモリアクセス制御装置においては、これに限られず実施することが可能である。この判断で、転送数レジスタ２３０に記憶された値が転送単位の値よりも大きい場合には、リード転送制御部２４０は、転送元アドレスレジスタ２１０の出力値アドレスＡとバス動作要求としてリードコマンドをＤＭＡＣインターフェース２７０に出力する。ＤＭＡＣインターフェース２７０はバス３００のインターフェース規約に従ったタイミング（図示しない）と制御を行ってデバイスＡのアドレスＡから始まる転送単位の１６ワードのデータを読み出してバス３００のＲデータを通じて、転送用バッファおよび制御部２６０内のＦＩＦＯ方式で動作するデータバッファに読出しデータを書き込む。
【００３０】
データ読出し転送が終了すると、リード転送制御部２４０は、加算回路２１１を用いて転送元レジスタ２１０の内容に転送用バッファおよび制御ブロック２６０から出力される転送単位の値を加算する。ライト転送制御部２５０は、転送先アドレスレジスタ２２０の出力値アドレスＢとともに、今回のデータ書込み転送が最終転送単位の転送でないため、バス動作要求として、書き込み先のデバイスからレスポンスを要求しないデータ転送方式のコマンドをＤＭＡＣインターフェース２７０に出力する。ここで、本実施形態においては、ポステッドライト（Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）コマンドを出力する。同時に転送用バッファおよび制御部２６０のデータバッファから読出したデータをＤＭＡＣインターフェース２７０に出力する。一方、データの書き込み転送が最終転送単位の転送の場合には、バス動作要求として、書き込み先のデバイスからレスポンスを要求するデータ転送方式のコマンドをＤＭＡＣインターフェース２７０に出力する。ここで、本実施形態においては、非ポステッドライト（Ｎｏｎ  Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）コマンドをＤＭＡＣインターフェース２７０に出力する。
【００３１】
ここで、このポステッドライト（Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）方式のデータ転送及び非ポステッドライト（Ｎｏｎ−Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）方式のデータ転送について説明する。まずポステッドライト方式による転送とは、書き込み先のデバイスからレスポンスを必要としない転送方式をいい、ＯＣＰ−ＩＰ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐａｒｔｎｅｒｓｈｉｐ）が規格の標準化を推進しているＯＣＰ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ）１．０に規定されるものである。また、非ポステッドライト（Ｎｏｎ−Ｐｏｓｔｅｄ  Ｗｒｉｔｅ）方式のデータ転送とは、書き込み先のデバイスからレスポンスを必要とする転送方式をいい、ＯＣＰ２．０なって規定されるようになったものである。
【００３２】
図７は、ポステッドライト方式でのライト転送処理のタイミングチャートを示す図である。ＤＭＡＣインターフェース２７０は、Ｔ１のサイクルに、Ｐｏｓｔｅｄ  Ｗｒｉｔｅコマンドをマスタバス要求（ＭＲｅｑ）に出力し、バス３００からのハンドシェーク信号（ＭＲｅｑＡｃｋ）の応答を得て、アドレスＢとデータバッファから読出したデータを、それぞれマスタアドレス（ＭＡＤＲ）とマスタ書込みデータ（ＭＷＤａｔａ）に出力（Ａ１、Ｄ１と図示）する。書込みデータのハンドシェーク信号（ＭＷＤａｔａＡｃｋ）の応答を得て、続くＴ２、Ｔ３、Ｔ４のサイクルにデータバッファから読出したデータを書込みデータとして連続出力してバースト転送する。
【００３３】
Ｐｏｓｔｅｄ  Ｗｒｉｔｅ方式の書込みでは、書込み先のバッファ（本実施形態では、バス３００上にも存在する）にデータを書込んでハンドシェーク信号が得られた時点で処理が終了するため、スレーブデバイス側のバスインターフェースでの動作の説明は省略する。また、ＤＭＡＣ装置は、Ｔ５サイクルから新たなバス動作要求を開始できる。
【００３４】
図８は、非ポステッドライト方式でのライト転送処理のタイミングチャートを示す図である。ＤＭＡＣインターフェース２７０は、Ｔ１のサイクルに、Ｎｏｎ  Ｐｏｓｔｅｄ  Ｗｒｉｔｅコマンドをマスタバス要求（ＭＲｅｑ）に出力し、バス３００からのハンドシェーク信号（ＭＲｅｑＡｃｋ）の応答を得て、アドレスＢとバッファ２６０から読出したデータを、それぞれマスタアドレス（ＭＡＤＲ）とマスタ書込みデータ（ＭＷＤａｔａ）に出力（Ａ１、Ｄ１と図示）する。書込みデータのハンドシェーク信号（ＭＷＤａｔａＡｃｋ）の応答を得て、続くＴ２、Ｔ３、Ｔ４のサイクルにデータバッファから読出したデータを書込みデータとして連続出力してバースト転送する。
【００３５】
ここで、図７および図８タイミング図は、表記の都合上４サイクルでデータ転送を終了しているが、転送単位が１６の場合は、１６サイクル連続してデータがバス３００のＷデータを通じて出力される。
【００３６】
Ｎｏｎ  Ｐｏｓｔｅｄ  Ｗｒｉｔｅ方式での書込みでは、バスインターフェースはスレーブデバイスからの書込み終了確認応答を得るまでデータ書込み転送は終了しない。以下スレーブデバイス側の動作を説明する。
【００３７】
Ｔｎサイクル（バス３００上のＤＭＡＣ装置からデバイスＢまでの信号伝達の遅延時間はＮ−１サイクルとする）にスレーブデバイス（デバイスＢ）側のバスインターフェースは、バス３００からＮｏｎ  Ｐｏｓｔｅｄ  ＷｒｉｔｅコマンドとアドレスＡ１をそれぞれスレーブバス要求（ＳＲｅｑ）、スレーブアドレス（ＳＡＤＲ）を通じて入力し、要求応答信号（ＳＲｅｑＡｃｋ）を出力する。要求応答信号を得てスレーブ書込みデータ（ＳＷＤａｔａ）がバス３００から出力され、デバイスＢのデータ受信が可能な期間バスインターフェースからの書込みデータのハンドシェーク信号（ＳＷＤａｔａＡｃｋ）の応答を出力し、この実施形態では連続したＴｎ＋１、Ｔｎ＋２、ＴＮ＋３のサイクルに書込みデータがデバイスＢのバスインターフェースに入力される。
【００３８】
また、本実施形態のデバイスＢのバスインターフェースからデバイスＢの該当するアドレスに実際にデータが書込みが２サイクル後に終了するので、デバイスＢのバスインターフェースはＴｎ＋５サイクルに書込み終了を示すスレーブ応答信号（ＳＲｅｓｐ）をバス３００に出力する。
【００３９】
デバイスＢからＤＭＡＣまでのバス３００上の信号伝達の遅延時間（３サイクル）後のＴｍサイクルに、ＤＭＡＣのＤＭＡＣインターフェース２７０は、デバイスＢでの書込み終了を示すマスタ応答信号（ＭＲｅｓｐ）を入力後、ライト転送制御部２５０にデータ書込み転送が終了したことを通知する。
【００４０】
ＤＭＡＣ装置の転送単位のデータ書込み転送が終了すると、ライト転送制御部２５０は、加算回路２２１を用いて転送先アドレスレジスタ２２０の内容に転送単位の値を加算するとともに、減算回路２３１を用いて転送数レジスタ２３０の内容から転送単位の値を減算する。次に、転送数レジスタ２３０の値と転送単位の値を比較回路２３２で比較し、転送単位と等しいかまたは小さい時は、最終転送単位の処理を行う。以下、この時の転送数レジスタ２３０の値を最終転送での転送数と表記する。
【００４１】
続いて、リード転送制御部２４０は、転送元アドレスレジスタ２１０の値とバス動作要求としてリードコマンドをＤＭＡＣインターフェース２７０に出力するとともに転送用バッファおよび制御部２６０に転送数レジスタ２３０の値を出力する。ＤＭＡＣインターフェース２７０は転送用バッファおよび制御部２６０と連携してバス３００のインターフェース規約に従ったタイミング（図示しない）と制御を行ってデバイスＡの転送元アドレスから始まる転送数レジスタ２３０の値の数（最終転送での転送数）のデータを読み出してバス３００のＲデータを通じて、転送用のバッファおよび制御部２６０内のデータバッファに読出しデータを書き込む。データ読出し転送が終了すると、リード転送制御部２４０は、加算回路２１１を用いて転送元レジスタ２１０の内容に転送用バッファおよび制御ブロック２６０から出力される実転送数の値を加算する。
【００４２】
次に、ライト転送制御部２５０は、転送先アドレスレジスタ２２０の値とともに、今回のデータ書込み転送が最終ブロックの転送となるため、バス動作要求としてＮｏｎ  Ｐｏｓｔｅｄ  ＷｒｉｔｅコマンドをＤＭＡＣインターフェース２７０に出力する。同時に転送用のバッファおよび制御部２６０のバッファから読出したデータをＤＭＡＣインターフェース２７０に出力する。
【００４３】
ライト転送制御部２５０は、加算回路２２１を用いて転送先アドレスレジスタ２２０の値に実転送数を加算するとともに、減算回路２３１を用いて転送数レジスタ２３０の値から実転送数を減算するとともに、ＣＰＵ１００へのデータ転送完了信号２０４を通じて、ＣＰＵ１００にデータ転送が完了したことを通知する。
【００４４】
以上のように、本実施形態のダイレクトメモリアクセス制御装置を用いれば、最終転送ブロック以外は、デバイスからの書き込み完了信号（レスポンス）を要求しないＰｏｓｔｅｄ  Ｗｒｉｔｅ方式でデータ書込み転送を行い、最終転送ブロックのみをデバイスからの書き込み完了信号（レスポンス）を要求するＮｏｎ  Ｐｏｓｔｅｄ  Ｗｒｉｔｅ方式のデータ書込み転送するようにする。これにより、Ｐｏｓｔｅｄ  Ｗｒｉｔｅ方式による転送効率とほぼ同様の効率を維持しながら、ＣＰＵへのＤＭＡ要求完了通知が行われた時に、データ転送先の領域の全てのデータ書込み完了が保証できるシステムを提供できる。
【００４５】
なお、上述のデータバッファは、ＦＩＦＯ方式で動作するものに限定される訳ではなく、任意の箇所から任意の順序で書込み読出しが制御できる構造のデータバッファであってもよい。この場合は、例えば、ＤＭＡＣ装置がデータ転送時にデータ配列の入れ替えを行いながら転送することが可能となる。
【００４６】
（ダイレクトメモリアクセス制御装置を用いたデータ転送方法）
図５は、ダイレクトメモリアクセス制御装置を用いたデータ転送方法を示すフローチャートであり、ＤＭＡＣ装置２００がデバイスＡからデバイスＢへのデータ転送を行う時の処理手順を示すフローチャートである。まず、ＣＰＵ１００はＤＭＡＣ装置２００に対して、デバイスＡのアドレスＡから１Ｋワード分のデータをデバイスＢのアドレスＢから始まる領域に転送させるための転送情報をレジスタに設定し、転送処理動作を起動する（ステップＳ１００）。次に、デバイスＡのアドレスＡから１Ｋワード分のデータをデバイスＢのアドレスＢから始まる領域に転送する処理を行う（ステップＳ２００）。この処理は基本的には、デバイスＡのアドレスＡから始まるデータを読み込み、デバイスＢのアドレスＢから始まる領域に書き込みを行う。データ転送が完了した際には、ＤＭＡＣ装置２００はＣＰＵ１００に対してデータ転送の終了を通知する（ステップＳ１３０）。
【００４７】
図６は、図５のステップＳ２００の詳細の処理を説明するフローチャートである。通常、ＣＰＵからのＤＭＡ要求の転送数は、転送単位の転送数より大きいので、ＣＰＵからのＤＭＡ要求によるデータ転送の処理は、複数に分割して転送が行われる。
【００４８】
ここで、図６に示したフローチャートにおいては、データ転送の単位を１６とする。まず、転送すべきデータの転送数の残りが所定以下か否かを判定する（ステップＳ２１０）。本実施形態においては、データの転送単位を１６ワードとしたので、１６と等しいか、若しくは小さいかを判定する。すなわち、この判定において、転送すべきデータの最後のデータか否かを判定するようにしてある。この判定にて、最後のデータではないと判定された場合には、デバイスＡのアドレスから１６ワードのデータをＤＭＡＣ装置のバッファ２９０に読み込む（ステップＳ２２０）。次に、ＤＭＡＣ装置のバッファ２９０内の１６ワードのデータをデバイスＢのアドレスＢから始まる領域に第１の方式で書き込む（ステップＳ２３０）。本実施形態においては、この第１の方式として、書き込み先のデバイスからのレスポンスを必要としないポステッドライト方式を採用するようにしてもよい。次に、転送元アドレスが格納される転送元アドレスレジスタ２１０の値に、加算回路２１１を用いて転送単位の値を加算して、加算結果を転送元アドレスレジスタ２１０に格納する。また、転送先アドレスが格納される転送先アドレスレジスタ２２０の値に、加算回路２２１を用いて転送単位の値を加算して、加算結果を転送先アドレスレジスタ２２０に格納する。さらに、転送数が格納される転送数レジスタ２３０の値に、減算回路２３１を用いて転送単位の値を減算して、減算結果を転送数レジスタ２３０に格納する。これらの処理が終わったらステップＳ２１０の判断を行う。
【００４９】
このようにして、ステップＳ２１０からステップＳ２４０の処理を行い、デバイスＡのデータを転送単位ずつ読み込み、読み込んだ転送単位のデータをデバイスＢに書き込み、これらを複数回行う。残り転送数が転送単位以下になった場合には、次に、デバイスＡのアドレスＡから残りの転送数ワードのデータをＤＭＡＣ装置のバッファ２９０に読み込み（ステップＳ２５０）このバッファ２９０内の残り転送数ワードのデータをデバイスＢのアドレスＢから始まる領域に第２の方式で書き込む（ステップＳ２６０）。本実施形態においては、この第２の方式として、書き込み先のデバイスからのレスポンスを必要とする非ポステッドライト方式を採用するようにしてもよい。
【００５０】
以上のように、最終転送ブロック以外は、書き込み転送においてレスポンスを必要としない転送方式でデータ転送を行い、最終転送ブロックのみを書き込み転送においてレスポンスを要求する転送方式でデータ転送を行うようにする。これにより、レスポンスいを必要としない転送方式の転送効率とほぼ同様の効率を維持しながら、ＣＰＵへのＤＭＡ要求完了通知が行われた時に、データ転送先の領域の全てのデータ書込み完了が保証できるのである。
【図面の簡単な説明】
【００５１】
【図１】本実施形態のダイレクトメモリアクセス制御装置を含んだシステムＬＳＩの概略構成図である。
【図２】本実施形態のバス３００を説明するための図面である。
【図３】本発明に係るダイレクトメモリアクセス制御装置２００の構成を示すブロック図である。
【図４】本実施形態のダイレクトメモリアクセス制御装置２００を説明するための概略回路構成図である。
【図５】ダイレクトメモリアクセス制御装置を用いたデータ転送方法を示すフローチャートである。
【図６】図５のステップＳ２００の詳細の処理を説明するフローチャートである。
【図７】ポステッドライト方式でのライト転送処理のタイミングチャートを示す図である。
【図８】非ポステッドライト方式でのライト転送処理のタイミングチャートを示す図である。
【符号の説明】
【００５２】
４１，４２，４３，４４，４５，４６，４７，４８  バスインターフェース
５１，５２，５３，５４，５５，５６，５７，５８，５９，６０，６１，６２，６３，６４  パイプラインレジスタ
１００  ＣＰＵ
２００  ダイレクトメモリアクセス制御（ＤＭＡＣ）装置
２０１  ＣＰＵからの書き込み信号バス
２０２  ＣＰＵからの設定のためのバス
２０３  ＣＰＵからのデータ転送開始信線
２０４  ＣＰＵからのデータ転送完了信号線
２１０  転送元アドレスレジスタ
２１１，２２１  加算回路
２２０  転送先アドレスレジスタ
２３０  転送数レジスタ
２３１  減算回路
２４０  リード転送制御部
２５０  ライト転送制御部
２６０  転送用バッファ及び制御部
２７０，２９５  ＤＭＡＣインターフェース
２８０  レジスタ
２８１  転送元アドレス記憶部
２８２  転送先アドレス記憶部
２８３  転送数記憶部
２８４  開始フラグ
２８５  転送制御部
２９０  バッファ
３００  バス
４００  デバイスＡ
５００  デバイスＢ
【図１】
2006293927.tif 000003
【図２】
2006293927.tif 000004
【図３】
2006293927.tif 000005
【図４】
2006293927.tif 000006
【図５】
2006293927.tif 000007
【図６】
2006293927.tif 000008
【図７】
2006293927.tif 000009
【図８】
2006293927.tif 000010