(57)【要約】【課題】入出力デバイスとメモリとの間のデータ転送時におけるデータの一貫性を確実に保証できるようにする。【解決手段】入出力コントローラ１４は、入出力デバイス１３から送られてくるデータを、ＣＰＵ１２を介さずに主記憶１１上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に主記憶１１上の所定の領域に対するデータの読み出しを行い、応答を確認することによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する。割込コントローラ１５は、入出力コントローラ１４から発生される割り込みを受けて、当該割り込みをＣＰＵ１２に伝える。【選択図】      図１
2006215873.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリへのアクセスが可能なプロセッサと、
入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記メモリ上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行い、応答を確認することによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する入出力コントローラと、
前記入出力コントローラから発生される割り込みを受けて、当該割り込みを前記プロセッサに伝える割込コントローラと
を具備することを特徴とする制御装置。
【請求項２】
前記入出力コントローラは、最後の書き込み転送後に前記メモリ上の所定の領域からデータを読み出すためのリードコマンドを発行する回路を備えていることを特徴とする請求項１記載の制御装置。
【請求項３】
前記入出力コントローラは、発行したリードコマンドに対する応答を確認することによって、転送が完了したことを認識することを特徴する請求項１記載の制御装置。
【請求項４】
前記転送は、ＤＭＡ（Direct Memory Access）方式の転送であることを特徴とする請求項１記載の制御装置。
【請求項５】
前記入出力デバイスは、ＨＤＤ（Hard Disk Drive）であることを特徴とする請求項１記載の制御装置。
【請求項６】
メモリと、
前記メモリへのアクセスが可能なプロセッサと、
前記プロセッサを介さずにデータを前記メモリへ転送する処理を行う転送処理ユニットと、
入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記転送処理ユニットを通じて前記メモリ上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行うことによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する入出力コントローラと、
前記入出力コントローラから発生される割り込みを受けて、当該割り込みを前記プロセッサに伝える割込コントローラと
を具備することを特徴とする情報処理装置。
【請求項７】
メモリとこのメモリへのアクセスが可能なプロセッサとを備えた装置に適用される転送処理方法であって、
入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記メモリ上の所定の領域へ書き込むための転送を開始し、
最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行うことによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを前記プロセッサに伝えることを特徴とする転送処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力デバイスからメモリへのデータ転送を制御する制御装置、情報処理装置、及び転送処理方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータなどの情報処理装置においては、ＨＤＤなどの入出力デバイスと主記憶との間のデータ転送に、ダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access）と呼ばれる転送方式が採用されるのが一般的である。このような方式のデータ転送においては、ＣＰＵを経由せずに、入出力デバイスメモリ間でデータのやりとりを行えるため、システム全体の高速化を図ることができる。但し、データ転送を実行する際には、ＣＰＵにその旨を伝える必要がある。例えば、入出力デバイスからの要求に応じて主記憶へのデータ書き込みを行った場合、入出力デバイスを制御する入出力コントローラが、ＣＰＵに対して割り込みを発行する。これにより、割り込みを受けたＣＰＵは、主記憶に書き込まれたデータを読み出して必要な処理を進めることができる。
【０００３】
ところで、入出力コントローラは、主記憶へのライトアクセスを行った後、適切なタイミングでＣＰＵへの割り込みを発行しなければならない。例えば、ＣＰＵに対して割り込みを発行するタイミングが早すぎた場合、全てのデータの書き込みが完了する前に、ＣＰＵが主記憶に対してデータ読み出しを実行してしまうこととなり、データの一貫性を保証できなくなってしまう。このような事態を回避するためには、例えば特許文献１に開示された技術を用いることが考えられる。
【０００４】
この特許文献１によれば、ローカルバスに接続される入出力制御装置からシステムバスに接続される主記憶にバッファを介してＤＭＡ転送を行う場合に、システムバスの信号状態を検出するか、もしくはタイマで一定時間を計ることによって、データ転送の終了の有無を判断し、データ転送が終了したと判断したときにＣＰＵへの割り込みを行うことが記載されている。
【特許文献１】特開平７−２１０５００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記文献の技術は、主記憶へのデータ書き込みが実際に完了したことを確認するものではなく、バスの信号状態などから間接的に主記憶上のデータの書き込み完了を予測しているに過ぎない。このため、主記憶へのデータ書き込みが実際に完了する直前にＣＰＵへ割り込みを発行してしまう可能性が依然として残っており、データの一貫性を確実に保証する構成であるとは言い難い。
【０００６】
本発明は上記実情に鑑みてなされたものであり、入出力デバイスとメモリとの間のデータ転送時におけるデータの一貫性を確実に保証する制御装置、情報処理装置、及びデータ転送制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る制御装置は、メモリと、前記メモリへのアクセスが可能なプロセッサと、入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記メモリ上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行い、応答を確認することによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する入出力コントローラと、前記入出力コントローラから発生される割り込みを受けて、当該割り込みを前記プロセッサに伝える割込コントローラとを具備することを特徴とする。
【０００８】
また、本発明に係る情報処理装置は、メモリと、前記メモリへのアクセスが可能なプロセッサと、前記プロセッサを介さずにデータを前記メモリへ転送する処理を行う転送処理ユニットと、入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記転送処理ユニットを通じて前記メモリ上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行うことによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する入出力コントローラと、前記入出力コントローラから発生される割り込みを受けて、当該割り込みを前記プロセッサに伝える割込コントローラとを具備することを特徴とする。
【０００９】
また、本発明に係る転送処理方法は、メモリとこのメモリへのアクセスが可能なプロセッサとを備えた装置に適用される転送処理方法であって、入出力デバイスから送られてくるデータを、前記プロセッサを介さずに前記メモリ上の所定の領域へ書き込むための転送を開始し、最後の書き込み転送後に前記メモリ上の所定の領域に対するデータの読み出しを行うことによって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを前記プロセッサに伝えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、入出力デバイスとメモリとの間のデータ転送時におけるデータの一貫性を確実に保証することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、本発明の一実施形態について説明する。  
図１は、本発明の一実施形態に係る情報処理装置を構成する主な構成要素を示すブロック図である。  
図１に示される情報処理装置１は、例えばパーソナルコンピュータであり、主記憶（メモリ）１１、ＣＰＵ（Central Processing Unit）１２、入出力デバイス１３、入出力コントローラ１４、割込コントローラ１５、第１のシステムバス１６、第２のシステムバス１７、第１のブリッジ装置１８、第２のブリッジ装置１９などを備えている。
【００１２】
主記憶１１は、ＲＡＭ（Random Access Memory）などの揮発性メモリで構成され、各種のプログラムやデータを記憶するために使用される。この主記憶１１には、入出力デバイス１３からＤＡＭ転送されてくるデータなどが書き込まれる場合がある。
【００１３】
ＣＰＵ１２は、情報処理装置１全体の動作を司るものであり、主記憶１１などにアクセスすることができる。このＣＰＵ１２は、割込コントローラ１５から所定の割り込みを受けたときには、主記憶１１へのＤＭＡ転送が行われたことを認識する。この場合、ＣＰＵ１２は、必要に応じて主記憶１１上の転送済みのデータの読み出しなどを行う。
【００１４】
入出力デバイス１３は、ＨＤＤ（Hard Disk Drive）などの機器に相当するものであり、データを主記憶１１側へ転送するような場合には入出力コントローラ１４に対して転送終了時に割り込みを発生する。
【００１５】
入出力コントローラ１４は、入出力デバイス１３に対するデータの入出力を制御するものである。この入出力コントローラ１４は、入出力デバイス１３から送られてくるデータを、ＣＰＵ１２を介さずに主記憶１１上の所定の領域へ書き込むための転送を行い、入出力デバイス１３から送られてくる最後のデータを受け取った後に入出力デバイス１３から割り込みの発生を検知する。入出力コントローラ１４が割り込みを検知した直後には、割り込みコントローラ１５への割り込み出力を発生しないで、前記メモリ上の所定の領域に対するデータの読み出しを行い、応答を確認することよって当該転送に係る全てのデータが前記メモリ上に書き込まれていることを確認した上で、転送が完了したことを示す割り込みを発生する。
【００１６】
割込コントローラ１５は、本情報処理装置１内部で発生される各種の割り込みを受け付け、それらをＣＰＵ１２へ伝えるものである。この割込コントローラ１５は、例えば、第２のブリッジ装置１９などに内蔵されていてもよい。
【００１７】
第１のシステムバス１６は、例えばＰＣＩ（Peripheral Component Interconnect）バスに相当するものであり、第１のブリッジ装置１８と第２のブリッジ装置１９との間のデータ転送などに供する。
【００１８】
第２のシステムバス１７は、例えばＬＰＣ（Low Pin Count）バスに相当するものであり、第２のブリッジ装置１９と入出力コントローラ１４との間のデータ転送などに供する。
【００１９】
第１のブリッジ装置１８は、主記憶１１、ＣＰＵ１２、及び割込コントローラ１５と第１の第１のシステムバス１６との間のブリッジ処理などを行うものであり、データ転送の際に使用するバッファを備え、双方向にデータを転送することができる。この第１のブリッジ装置１８は、第２のブリッジ装置１９と協働してＤＭＡ転送を行う機能を備えている。また、第１のブリッジ装置１８は、ＤＭＡ転送を行うに際し、入出力コントローラ１４から主記憶１１に対するライトコマンドやリードコマンドを受け付け、これらの応答を入出力コントローラ１４側へ返信する機能も備えている。
【００２０】
第２のブリッジ装置１９は、第１のシステムバス１６と第２のシステムバス１７との間のブリッジ処理などを行うものであり、データ転送の際に使用するバッファを備え、双方向にデータを転送することができる。この第２のブリッジ装置１９は、第１のブリッジ装置１８と協働してＤＭＡ転送を行う機能を備えている。
【００２１】
上述した各種の要素のうち、少なくとも主記憶１１、ＣＰＵ１２、入出力コントローラ１４、及び割込コントローラ１５は、本実施形態に係わる転送処理制御のための制御装置を構成する。
【００２２】
なお、上記入出力デバイス１３のほかに、例えば、外部ネットワークを通じて他の機器と通信するための通信装置を設けてもよい。その場合、当該通信装置とのデータの入出力を制御するための入出力コントローラが別途設けられる。
【００２３】
図２は、図１中に示される入出力コントローラ１４の内部構成を示すブロック図である。  
入出力コントローラ１４は、図２に示されるように、ＤＭＡコントローラ２１、入出力デバイスインタフェース部２２、ダミーリード発生回路２３、及びシステムバスインタフェース部２４を備えている。
【００２４】
ＤＭＡコントローラ２１は、入出力コントローラ１４全体の動作を司るものである。このＤＭＡコントローラ２１は、システムバスインタフェース部２４を通じて、入出力デバイス１３から送られてくるデータを主記憶１１上の所定の領域に書き込むためのライトコマンドを発行して、ＤＭＡ転送を開始する。
【００２５】
また、ＤＭＡコントローラ２１は、ＤＭＡ転送の最後に入出力デバイス１３から発行される割り込みを受け取るが、すぐに割り込みコントローラ１５には発行しない。入出力デバイス１３からの割り込みの発生直後に、主記憶１１上の所定の領域にあるデータを読み出すリードコマンドを発行することをダミーリード発生回路２３に指示するようになっている。また、ＤＭＡコントローラ２１は、ダミーリード発生回路２３がシステムバスインタフェース部２４を通じて第２のシステムバス１７上へリードコマンドを発行した後に、その応答を、システムバスインタフェース部２４を通じて受け取ったことで、主記憶１１上の所定の領域に対するデータ書き込みが完了したことを確認したことになり、ＤＭＡ転送が完了したことを示す割り込みを割込コントローラ１５（図１）に対して発行するようになっている。
【００２６】
入出力デバイスインタフェース部２２は、ＤＭＡコントローラ２１と入出力デバイス１３（図１）との間のインタフェース処理を行うものである。この入出力デバイスインタフェース部２２は、例えば入出力デバイス１３から割り込みを受けた場合には、その旨をＤＭＡコントローラ２１に伝えるとともに、入出力デバイス１３から送られてくるデータをＤＭＡコントローラ２１へ送り出す。
【００２７】
ダミーリード発生回路２３は、ＤＭＡコントローラ２１からの指示に応じ、主記憶１１上の所定の領域にあるデータを読み出すためのリードコマンドを、システムバスインタフェース部２４を通じて第２のシステムバス１７上へ発行するものである。
【００２８】
システムバスインタフェース部２４は、ＤＭＡコントローラ２１と第２のシステムバス１７との間のインタフェース処理を行うものである。このシステムバスインタフェース部２４は、例えば、ＤＭＡコントローラ２１から発行されたライトコマンドをシステムバス１７上へ送り出したり、ダミーリード発生回路２３から発行されたリードコマンドをシステムバス１７上へ送り出したり、これらのコマンドの応答を第２のシステムバス１７から受けてＤＭＡコントローラ２１へ伝えたりする。
【００２９】
図３は、本情報処理装置１に備えられる転送処理ユニット３１の構成を示す図である。  
転送処理ユニット３１は、転送処理用のバッファ３２を備え、主記憶１１と入出力コントローラ１４との間の転送処理を実現するものである。また、転送処理ユニット３１は、前述のＤＭＡ転送を行う機能を備えている。この転送処理ユニット３１は、例えば前述した第１のブリッジ装置１８や第２のブリッジ装置１９に内蔵される。
【００３０】
図４は、本情報処理装置１をサーバ装置として実現させる場合のシステム構成例を示す図である。
【００３１】
情報処理装置１は、サーバとして動作する場合、ネットワークを通じて他の情報処理装置や周辺機器（クライアント）からの各種要求を受け付け、データ転送を行う。その際に、情報処理装置１の内部では、前述の図１〜図３に示した構成に基づき、主記憶１１へのＤＭＡ転送を行うことができるものとなっている。
【００３２】
なお、サーバとして動作する情報処理装置１は、パーソナルコンピュータに限定されるものではなく、例えばプリンタであってもよい。その場合、情報処理装置１においては、入出力デバイス１３のほかに、例えば、外部ネットワークを通じて他の機器と通信するための通信装置が設けられ、更に、当該通信装置とのデータの入出力を制御するための入出力コントローラが別途設けられる。そして、他の情報処理装置からネットワークを通じて情報処理装置１へデータ（印刷する文書のデータなど）が送られてきた場合には、上述の通信装置及び対応する入出力コントローラ（図３の入出力コントローラ１４と同様な構成を有するもの）を通じて、主記憶１１へのＤＭＡ転送が行われる。
【００３３】
次に、図５のフローチャートを参照して、本実施形態におけるＤＭＡ転送を行う前の起動処理の動作について説明する。  
情報処理装置１において、システムが起動されると（ステップＡ１）、主記憶１１上でＤＭＡディスクリプタ（開始アドレスや転送数などの情報を含む）が設定され、入出力デバイスからのアクセスのための領域が確保される（ステップＡ２）。
【００３４】
次いで、入出力コントローラ１４に対応するドライバなどが起動されると（ステップＡ３）、当該ドライバによって入出力コントローラ１４が起動される（ステップＡ４）。
【００３５】
次に、図６のフローチャートを参照して、本実施形態におけるＤＭＡ転送の動作について説明する。  
起動した入出力コントローラ１４は、主記憶１１からＤＭＡディスクリプタを読み出し、これを保持する。（ステップＢ１）
入出力コントローラ１４は、保持したＤＭＡディスクリプタ（開始アドレスや転送数などの情報を含む）に基づき、入出力デバイス１３からのデータを主記憶１１に書き込むためのライトコマンドを第２のシステムバス１７上に発行し、ＤＭＡ転送を開始する（ステップＢ２）。これにより、ライトコマンドは第２のシステムバス１７を通じて第２のブリッジ装置１９に伝えられ、さらに、第１のシステムバス１６を通じて第１のブリッジ装置１８へ伝えられ、これらのブリッジ装置に備えられるＤＭＡ転送機能により、主記憶１１へのデータ転送が行われる。
【００３６】
入出力デバイス１３から読み出した最後のデータを入出力コントローラ１４が受け取った後、入出力デバイス１３から割り込みが発行される（ステップＢ３）。入出力コントローラ１４は、この割り込みをすぐに割り込みコントローラ１５に伝えるのではなく、ＤＭＡ転送による主記憶１１への書き込みが完了するまで待ってから伝える。
【００３７】
主記憶１１の書き込みが完了したことを確認するために、入出力コントローラ１４は、入出力デバイス１３からの割り込み発生直後に、所定の領域にあるデータを読み出すためのリードコマンドを発行する（ステップＢ４）。これにより、リードコマンドは第２のシステムバス１７を通じて第２のブリッジ装置１９に伝えられ、さらに、第１のシステムバス１６を通じて第１のブリッジ装置１８へ伝えられ、第１のブリッジ装置１８によって主記憶１１上の該当するデータの読み出しが行われ、読み出した結果がリードコマンドに対する応答として入出力コントローラ１４へ返される。
【００３８】
入出力コントローラ１４は、返されてきた応答を受け、主記憶１１での必要なデータ書き込みが完了したことを確認すると（ステップＢ５）、ＤＭＡ転送が完了したことを示す割り込みを発生する（ステップＢ６）。この割り込みは、割込コントローラ１５を通じて、ＣＰＵ１２へ伝えられる。
【００３９】
上記割り込みを受けたＣＰＵ１２は、ＤＭＡ転送が完了したことを認識する（ステップＢ７）。これにより、ＣＰＵ１２は、必要に応じて主記憶１１上の転送済みのデータの読み出しなどを行う。
【００４０】
このように本実施形態によれば、入出力デバイス１３から主記憶１１へのＤＭＡ転送を行う際に、主記憶１１上に全てのデータが書き込まれる前に、ＣＰＵ１２が主記憶１１に対するリード処理などを行うことがないため、データの一貫性を確実に保証することができる。
【００４１】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態に係る情報処理装置を構成する主な構成要素を示すブロック図。
【図２】図１中に示される入出力コントローラの内部構成を示すブロック図。
【図３】図１の情報処理装置に備えられる転送処理ユニットの構成を示す図。
【図４】図１の情報処理装置をサーバ装置として実現させる場合のシステム構成例を示す図。
【図５】ＤＭＡ転送を行う前の起動処理の動作を示すフローチャート。
【図６】ＤＭＡ転送処理の動作を示すフローチャート。
【符号の説明】
【００４３】
１…情報処理装置、１１…主記憶、１２…ＣＰＵ、１３…入出力デバイス、１４…入出力コントローラ、１５…割込コントローラ、１６…第１のシステムバス、１７…第２のシステムバス、１８…第１のブリッジ装置、１９…第２のブリッジ装置、２１…ＤＭＡコントローラ、２２…入出力デバイスインタフェース部、２３…ダミーリード発生回路、２４…システムバスインタフェース部、３１…転送処理ユニット、３２…バッファ。
【図１】
2006215873.tif 000003
【図２】
2006215873.tif 000004
【図３】
2006215873.tif 000005
【図４】
2006215873.tif 000006
【図５】
2006215873.tif 000007
【図６】
2006215873.tif 000008