(57)【要約】【課題】プロセッサを介さずに複数のバスを介してメモリへデータ転送が行われる場合に、プロセッサがメモリから読み込むデータの、メモリへのデータ転送が終了していることを保証するデータ転送装置を提供する。【解決手段】データ転送装置１は、プロセッサ１１と、主メモリ１３と、主メモリ１３と複数のバスを介して接続されたDMAC２２とを含む。DMAC２２は、主メモリ１３へ、プロセッサ１１を介さずにデータ転送を行い、主メモリ１３の終了ステータス記憶領域１３ｂにデータ転送処理の終了を示すフラグデータ１を書き込み、最後にプロセッサ１１に割り込み信号を出力する。割り込みハンドラ１１ａは、その割り込み信号に応じて、終了ステータス記憶領域１３ｂの参照を行って、フラグデータが書き込まれている場合は、主メモリ１３のデータを読み出し、かつ終了ステータス記憶領域１３ｂのフラグデータを消去する。【選択図】図２
2008299425.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
該プロセッサと接続されたメモリと、
転送すべきデータを有するデバイスから前記メモリの第１の記憶領域へのデータ転送処理を、前記プロセッサを介さずに行い、該データ転送処理が終了すると、前記メモリの第２の記憶領域に前記データ転送処理の終了を示すステータスデータを書き込み、かつ該ステータスデータの書き込み後に前記プロセッサに所定の割り込み信号を出力する、前記メモリと複数のバスを介して接続されたデータ転送部と、
前記プロセッサへの所定の割り込み信号に応じて、前記第２の記憶領域の参照を行って、前記ステータスデータが書き込まれているか否かの判定処理を行い、該判定処理の結果、前記ステータスデータが書き込まれていない場合は、前記参照を繰り返し、前記ステータスデータが書き込まれている場合は、前記第１の記録領域の前記転送すべきデータを読み出し、かつ前記第２の記憶領域の前記ステータスデータを消去する転送データ読出処理部と、
を有することを特徴とするデータ転送装置。
【請求項２】
前記データ転送部は、ダイレクトメモリアクセスコントローラであることを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記転送データ読出処理部は、前記参照を、前記第２の記憶領域へのポーリングにより行うことを特徴とする請求項１又は２に記載のデータ転送装置。
【請求項４】
前記メモリは、前記プロセッサのシステムメモリであることを特徴とする請求項１から３のいずれか１つに記載のデータ転送装置。
【請求項５】
プロセッサと接続されたメモリへ、該メモリと複数のバスを介して接続されたデータ転送部から、データを転送するデータ転送方法であって、
前記データ転送部は、転送すべきデータを有するデバイスから前記メモリの第１の記憶領域へのデータ転送処理を、前記プロセッサを介さずに行い、
前記データ転送部は、前記データ転送処理が終了すると、前記メモリの第２の記憶領域に前記データ転送処理の終了を示すステータスデータを書き込み、
前記データ転送部は、前記ステータスデータの書き込み後に前記プロセッサに所定の割り込み信号を出力し、
前記プロセッサへの前記所定の割り込み信号に応じて、前記第２の記憶領域を参照して、前記ステータスデータが書き込まれているか否かの判定処理を行い、該判定処理の結果、前記ステータスデータが書き込まれていない場合は、前記第２の記憶領域を参照することを繰り返し、前記ステータスデータが書き込まれている場合は、前記第１の記録領域の前記転送すべきデータを読み出し、かつ前記第２の記憶領域の前記ステータスデータを消去する、
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置及びデータ転送方法に関し、特に、転送されたデータのメモリへの書き込み終了を保証するデータ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
従来より、ダイレクトメモリアクセス（以下、DMAという）等のデータ転送方法を利用して、メモリと各種デバイス間で直接データ転送する技術が、パーソナルコンピュータ等の各種電子機器において、広く利用されている。DMA等のデータ転送方法は、中央処理装置（以下、CPUという）等のプロセッサを介さずにデータの転送を行う方法である。  
例えば、DMA転送の処理では、CPUを介さずにデータの転送を行うが、CPUは、DMAコントローラ（以下、DMACという）への設定処理等の負荷が増大するという問題がある。そこで、そのような問題を解決するために、CPUがデータ転送処理をDMACに指示をすると、DMACがデータ転送を行い、データ転送を終了すると、DMACがデータ転送の終了を示す終了ステータスをステータスレジスタに設定する技術が開示されている（例えば、特許文献１参照）。
【０００３】
その技術によれば、CPUは、データ転送処理の指示をDMACに行った後は、終了ステータスが書き込まれたか否かを監視することによって、データ転送処理の終了を認識し、その終了に応じた処理を実行することができる。
【０００４】
しかし、その開示に係る技術では、CPUは、データ転送の指示をDMACに行った後は、終了ステータスが書き込まれたか否かを常に監視しなければならないため、その監視のためのオーバヘッドが大きいという問題がある。
【０００５】
さらにまた、近年は、いわゆるノースブリッジ、サウスブリッジ等を有するPCアーキテクチャのように、複数のバスを有するコンピュータアーキテクチャも実用化されてきている。  
例えば、プロセッサ、コンパニオンチップ及びシステムメモリを有するシステムでは、お互いのアクセスは、複数のバスに跨って行われる場合がある。そのため、例えば、コンパニオンチップ内部のDMAコントローラからシステムメモリへのアクセス、コンパニオンチップ内部のDMAコントローラからプロセッサへの割り込み通知、及びプロセッサからシステムメモリへのアクセスの３つの処理が、この順に開始されても、３者間における実際のアクセス処理の順番は保証されない場合がある。
【０００６】
従って、通常、コンパニオンチップ内部のDMAコントローラは、システムメモリへのデータ転送動作を行った後、プロセッサに割り込みをかけて、データ転送が完了したことを通知する。その後プロセッサはその割り込みを検出し、システムメモリにアクセスして転送データを読みに行くが、このようなシステムでは各アクセスが複数のバスを跨るため、DMAコントローラのシステムメモリへのデータ転送動作と、実際にシステムメモリにデータが転送完了される間にタイムラグが発生し、実際にシステムメモリに転送される前にプロセッサがデータを読みに行ってしまう可能性がある。  
このようなシステムに、上述した開示に係る技術を適用しても、同様の問題が生じ得る。
【特許文献１】特開2005-78596号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、以上の問題に鑑みてなされたものであり、プロセッサを介さずに複数のバスを介してメモリへデータ転送が行われる場合に、プロセッサがメモリから読み込むデータの、メモリへのデータ転送が終了していることを保証するデータ転送装置及びデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、プロセッサと、該プロセッサと接続されたメモリと、転送すべきデータを有するデバイスから前記メモリの第１の記憶領域へのデータ転送処理を、前記プロセッサを介さずに行い、該データ転送処理が終了すると、前記メモリの第２の記憶領域に前記データ転送処理の終了を示すステータスデータを書き込み、かつ該ステータスデータの書き込み後に前記プロセッサに所定の割り込み信号を出力する、前記メモリと複数のバスを介して接続されたデータ転送部と、前記プロセッサへの所定の割り込み信号に応じて、前記第２の記憶領域の参照を行って、前記ステータスデータが書き込まれているか否かの判定処理を行い、該判定処理の結果、前記ステータスデータが書き込まれていない場合は、前記参照を繰り返し、前記ステータスデータが書き込まれている場合は、前記第１の記録領域の前記転送すべきデータを読み出し、かつ前記第２の記憶領域の前記ステータスデータを消去する転送データ読出処理部と、を有するデータ転送装置を提供することができる。
【発明の効果】
【０００９】
本発明によれば、プロセッサを介さずに複数のバスを介してメモリへデータ転送が行われる場合に、プロセッサがメモリから読み込むデータの、メモリへのデータ転送が終了していることを保証するデータ転送装置及びデータ転送方法を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
まず図１に基づき、本実施の形態に係わるシステムの構成を説明する。図１は、本実施の形態に係わるデータ転送装置の構成を示すブロック図である。  
図１に示すように、データ転送装置１は、CPU等のプロセッサ１１と、コンパニオンチップ１２と、システムメモリ、すなわち主メモリ１３を含んで構成されている。プロセッサ１１とコンパニオンチップ１２は、バス１４を介して接続され、プロセッサ１１と主メモリ１３は、バス１５を介して接続されている。
【００１１】
コンパニオンチップ１２は、内部に１以上のDMACを有し、さらに複数のバス２１（ここでは基幹バス）を介して、プロセッサ１１と接続されている。  
コンパニオンチップ１２は、ハードディスク装置等の各種デバイスとの接続のための複数のインターフェース（図示せず）を有しており、その複数のインターフェースは、複数の基幹バス２１を介してプロセッサ１１と接続されている。  
データ転送装置１は、DMACによって、プロセッサ１１を介さずに、すなわち、プロセッサ１１による転送制御によらずに、主メモリ１３と各種デバイスとの間でDMAによるデータ転送を実行できるように構成されている。図１では、複数のDMACの一つのDMAC２２が、外部のデバイス１６にアクセス可能に接続されている。そのDMAC２２は、点線で示すように、デバイス１６が有する転送すべきデータを、DMAにより読み出して主メモリ１３の所定の記録領域に転送する転送処理を実行する。
【００１２】
なお、データ転送装置１は、例えば、PCアーキテクチャを有するパーソナルコンピュータ（PC）でもよく、その場合、プロセッサ１１は、ノースブリッジのチップ（図示せず）を介して主メモリ１３に接続され、コンパニオンチップ１２は、サウスブリッジのチップである。
【００１３】
次に、DMAによるデータ転送処理について、図２と図３を用いて説明する。図２は、プロセッサ１１と主メモリ１３とDMAC２２の間でもデータの流れを説明するための図である。図３は、プロセッサ１１と主メモリ１３とDMAC２２の間におけるデータの送受信の流れの例を時間経過と共に説明するためのシーケンス図である。ここでは、DMAC２２が、DMAにより、外部のデバイス１６から転送すべきデータを読み出して、主メモリ１３の所定に記憶領域１３ａに転送する場合について説明する。
【００１４】
図２に示すように、コンパニオンチップ１２のDMAC２２は、デバイス１６から転送データを読み込み、読み込んだ転送データを、主メモリ１３にDMAにより転送する（図３のP1）。デバイス１６から読み出された転送データは、主メモリ１３に転送されるが、転送データは、DMAC２２によって、プロセッサ１１による転送制御によらずに、コンパニオンチップ１２内の複数の基幹バス２１とプロセッサ１１内の内部バスを経由して主メモリ１３の所定の転送データ記憶領域１３ａに転送される。
【００１５】
DMAC２２は、転送データの転送処理が終了すると、主メモリ１３内の、転送データ記憶領域１３ａとは別の所定の記憶領域（以下、終了ステータス記憶領域１３ｂという）に、データ転送の終了を示すステータスデータ（以下、終了ステータスデータという）として、フラグデータを書き込む（図３のP2）。すなわち、ここでは、１のフラグデータが終了ステータス記憶領域１３ｂに書き込まれる。１のフラグデータは、コンパニオンチップ１２内の複数の基幹バス２１を経由して、DMAC２２から主メモリ１３へ送信されて、終了ステータス記憶領域１３ｂに書き込まれる、データ転送処理の終了を示すステータスデータである。
【００１６】
DMAC２２は、フラグデータを終了ステータス記憶領域１３ｂに書き込むと、次に、プロセッサ１１に対して所定の割り込み信号を出力する（図３のP3）。
【００１７】
プロセッサ１１は、その割り込み信号を受信すると、その割り込み信号に対応する割り込み処理プログラムである割り込みハンドラ１１ａが、主メモリ１３の終了ステータス記憶領域１３ｂに記憶されているデータを参照する（図３のP4）。この参照は、例えば、終了ステータス記憶領域１３ｂへのポーリングにより行う。割り込みハンドラ１１ａは、終了ステータス記憶領域１３ｂに記憶されているフラグデータが１であるか否かを参照して判定する。割り込みハンドラ１１ａは、転送データ読出処理部を構成する。
【００１８】
プロセッサ１１の割り込みハンドラ１１ａは、終了ステータス記憶領域１３ｂに記憶されているフラグデータが１になるまで、終了ステータス記憶領域１３ｂを参照、すなわちモニタする。これは、フラグデータは、転送データと同様に、複数の基幹バス２１を含む経路を辿って書かれているので、フラグデータが１になっているということは、転送データの転送は終了していると推定できるからである。
【００１９】
プロセッサ１１は、フラグデータが１であるときは、主メモリ１３の転送データ記憶領域１３ａから転送データを読み込む（図３のP5）。
【００２０】
図４は、DMACの転送処理の流れの例を示すフローチャートである。  
図４に示すように、DMA転送の実行が指示されると、まず、DMAC２２は、デバイス１６の指定されたアドレスから主メモリ１３の転送データ記憶領域１３ａの指定されたアドレスに、転送すべきデータをDMA転送するDMA転送処理を実行する（ステップS1）。
【００２１】
DMAC２２は、DMAC２４を制御転送処理が終了すると、終了ステータスデータとしてのフラグデータを１にする終了ステータスデータ書き込み処理を実行する（ステップS2）。１のフラグデータは、上述したように主メモリ１３の終了ステータス記憶領域１３ｂに書き込まれる。
【００２２】
そして、フラグデータの書き込みが終了すると、データ転送処理が終了したことを通知するための所定の割り込み信号を、プロセッサ１１に出力する（ステップS3）。
【００２３】
図５は、割り込みハンドラ１１ａの転送データの読込処理の流れの例を示すフローチャートである。  
転送データ読出処理部である割り込みハンドラ１１ａは、DMAC２２からデータ転送処理が終了したことの通知である割り込み信号を受信すると、まず、フラグデータを参照する（ステップS11）。参照して読み出されたフラグデータが１であるかを、割り込みハンドラ１１ａは判定する（ステップS12）。  
参照したフラグデータが１でない場合は、ステップS12でNOとなり、ステップS11の処理を繰り返す。参照したフラグデータが１の場合は、ステップS12でYESとなり、転送データを、主メモリ１３の転送データ記憶領域１３ａから読み込む（ステップS13）。参照したフラグデータが１でない場合は、主メモリ１３の転送データ記憶領域１３ａから転送データは読み込まれない。
【００２４】
そして、最後に、割り込みハンドラ１１ａは、終了ステータス記憶領域１３ｂのフラグデータを０に書き換える、すなわちフラグデータを消去する、処理を実行する（ステップS14）。
【００２５】
以上のように、本実施の形態によれば、まず、コンパニオンチップ１２内部のDMAC２２は、DMAにより転送データを主メモリ１３に非同期に転送する。転送終了後、DMAC２２は、主メモリ１３の別の記憶領域のアドレスに、予め定義してある終了ステータスデータを更新する。終了ステータス更新後、DMAC２２は、プロセッサ１１に対して割り込みをかけ、割り込み信号を検出したプロセッサ１１の転送データ読出処理部である割り込みハンドラ１１ａは、主メモリ１３の終了ステータスデータを参照する。割り込みハンドラ１１ａは、終了ステータスデータが更新されるのを待った後に、転送データを主メモリ１３から読み込む。
【００２６】
その結果、DMAC２２から主メモリ１３への転送データの書き込み処理において、転送データの書き込み処理と、終了ステータスデータの書き込み処理の順番を保証して実行することにより、プロセッサ１１は、DMAによって転送された転送データについての、主メモリ１３からの確実な読み出し処理が保証される。
【００２７】
従って、プロセッサ１１は、終了ステータスを常に参照する必要なく、割り込み信号を受信してから、終了ステータスを参照するので、プロセッサ１１の負荷を減少させて、DMAC２２が主メモリ１３に転送データの書き込みを完了する前に、プロセッサ１１が転送データを読み込むことを防ぐことができる。
【００２８】
以上のように、本実施の形態に係るデータ転送装置によれば、プロセッサを介さずに、すなわち、プロセッサ１１による転送制御によらずに、複数のバスを介してメモリへデータ転送が行われる場合に、プロセッサがメモリから読み込むデータの、メモリへのデータ転送が終了していることを保証することができる。
【００２９】
なお、以上説明した動作を実行するプログラムは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されているプログラム製品として実現可能である。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデータ転送方法を実現することができる。  
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係わるデータ転送装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係わる、プロセッサと主メモリとDMACの間でもデータの流れを説明するための図である。
【図３】本発明の実施の形態に係わる、プロセッサと主メモリとDMACの間におけるデータの送受信の流れの例を時間経過と共に説明するためのシーケンス図である。
【図４】本発明の実施の形態に係わる、DMACの転送処理の流れの例を示すフローチャートである。
【図５】本発明の実施の形態に係わる、割り込みハンドラの転送データの読込処理の流れの例を示すフローチャートである。
【符号の説明】
【００３１】
１  データ転送装置、１２  コンパニオンチップ、１４，１５  バス
【図１】
2008299425.tif 000003
【図２】
2008299425.tif 000004
【図３】
2008299425.tif 000005
【図４】
2008299425.tif 000006
【図５】
2008299425.tif 000007