(57)【要約】【課題】処理時間がかかる情報転送系の記憶部にアクセスせずにディスクリプタ情報を読み出せるようにすると共に、処理速度を高速化できるようにする。【解決手段】ネットワークカード９のＤＭＡ転送部は、ＲＡＭにアクセスして送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ上の領域へ、ディスクリプタ番号nic_txの内容をコピー（転送）する(815)。送信完了処理スレッドは、割り込み発生部から送信完了割り込みを入力すると、ＲＡＭにコピーされたディスクリプタ番号nic_txに係る送信ディスクリプタnic_descから送信完了ポインタを求める。その後、送信完了処理スレッドは、送信ヘッドポインタから順に送信完了ポインタまで送信完了処理を行う。【選択図】図９
2009048298.tif 000002
【特許請求の範囲】
【請求項１】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をダイレクトメモリアクセス（ＤＭＡ）転送する情報処理装置であって、
前記情報処理系は、
前記情報を保存する第１記憶部と、
当該装置を制御する制御部とを有し、
前記情報転送系は、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を保存する第２記憶部と、
前記第２記憶部に保存されたディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するＤＭＡ転送部とを有し、
前記ＤＭＡ転送部は、
ＤＭＡ転送した前記情報に係る前記ディスクリプタ情報を、当該第２記憶部から前記第１記憶部にＤＭＡ転送し、
前記制御部は、
前記ＤＭＡ転送部によりＤＭＡ転送されたディスクリプタ情報を当該第１記憶部から読み出すことを特徴とする情報処理装置。
【請求項２】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送が完了した場合に、当該情報のＤＭＡ転送完了を示すディスクリプタ情報を前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送し、
前記制御部は、
前記ＤＭＡ転送完了を示すディスクリプタ情報を当該第１記憶部から読み出すことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送回数を計数するカウンタを有し、
前記情報のＤＭＡ転送回数の基準となる回数基準値と、前記カウンタにより計数した計数値とを比較し、
当該比較結果に基づいて、ＤＭＡ転送した情報に係る前記ディスクリプタ情報を、前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送するか否かを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送時間を計測するタイマを有し、
前記情報のＤＭＡ転送時間の基準となる時間基準値と、前記タイマにより計測した計測値とを比較し、
当該比較結果に基づいて、ＤＭＡ転送した情報に係る前記ディスクリプタ情報を、前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送するか否かを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する情報処理方法であって、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、
ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップと
を有することを特徴とする情報処理方法。
【請求項６】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、
ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップと
を有することを特徴とする情報処理方法をコンピュータに実行させるためのプログラム。
【請求項７】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、
ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップと
を有することを特徴とする情報処理方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な媒体。
【請求項８】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するＤＭＡコントローラであって、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を保存する第２記憶部と、
前記第２記憶部に保存されたディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するＤＭＡ転送部とを有し、
前記ＤＭＡ転送部は、
ＤＭＡ転送した前記情報に係る前記ディスクリプタ情報を、当該第２記憶部から前記第１記憶部にＤＭＡ転送することを特徴とするＤＭＡコントローラ。
【請求項９】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送が完了した場合に、当該情報のＤＭＡ転送完了を示すディスクリプタ情報を前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送することを特徴とする請求項８に記載のＤＭＡコントローラ。
【請求項１０】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送回数を計数するカウンタを有し、
前記情報のＤＭＡ転送回数の基準となる回数基準値と、前記カウンタにより計数した計数値とを比較し、
当該比較結果に基づいて、ＤＭＡ転送した情報に係る前記ディスクリプタ情報を、前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送するか否かを判定することを特徴とする請求項８に記載のＤＭＡコントローラ。
【請求項１１】
前記ＤＭＡ転送部は、
前記情報のＤＭＡ転送時間を計測するタイマを有し、
前記情報のＤＭＡ転送時間の基準となる時間基準値と、前記タイマにより計測した計測値とを比較し、
当該比較結果に基づいて、ＤＭＡ転送した情報に係る前記ディスクリプタ情報を、前記情報転送系の第２記憶部から前記情報処理系の第１記憶部にＤＭＡ転送するか否かを判定することを特徴とする請求項８に記載のＤＭＡコントローラ。
【請求項１２】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する方法であって、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと
を有することを特徴とするＤＭＡ転送方法。
【請求項１３】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと
を有することを特徴とするＤＭＡ転送方法をコンピュータに実行させるためのプログラム。
【請求項１４】
情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、
前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、
生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、
前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、
ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと
を有することを特徴とするＤＭＡ転送方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばネットワークカードなどの情報転送系の記憶部と、マイクロプロセッサ（ＣＰＵ）を有した情報処理系の記憶部との間で情報をＤＭＡ転送する情報処理装置、情報処理方法、当該情報処理方法を実行するためのプログラム及び当該プログラムを記録した媒体、並びにＤＭＡコントローラ、ＤＭＡ転送方法、当該ＤＭＡ転送方法を実行するためのプログラム及び当該プログラムを記録した媒体に関する。詳しくは、ＤＭＡ転送した情報に係るディスクリプタ情報を、情報転送系の第２記憶部から情報処理系の第１記憶部にＤＭＡ転送し、ＤＭＡ転送したディスクリプタ情報をこの第１記憶部から読み出すことで、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出せるようにすると共に、当該装置の処理速度を高速化できるようにしたものである。
【背景技術】
【０００２】
近年、情報処理系の記憶部と情報転送系の記憶部との間で情報を高速に転送するためにＤＭＡ転送が広く用いられている。例えば、情報転送系のネットワークカードなどにおけるＤＭＡコントローラのレジストに予めディスクリプタを格納しておき、ＣＰＵが、このＤＭＡコントローラに転送先（又は転送元）のアドレスと転送するデータ量をこのレジスタに書き込む。その後、ＣＰＵが、ＤＭＡコントローラに起動コマンドを発行することでＤＭＡ転送を開始する。書き込まれた転送データ量の転送が終了すると、その転送動作が終了する。従って転送動作毎に転送先アドレス等の動作情報をレジスタに書き込む必要があり、ＣＰＵに負荷がかかる問題があった。
【０００３】
この問題に対処するために、ＣＰＵは転送先アドレス等などを示すディスクリプタ（ＤＭＡ転送情報キュー）をＲＡＭ（Random Access Memory）上に作成し、ＤＭＡ転送の開始をＤＭＡコントローラに指示する。ＤＭＡコントローラは、ＣＰＵによりＤＭＡ転送の開始を指示されると、ＲＡＭ上に作成されたディスクリプタを参照してＤＭＡ転送する。これにより、ＣＰＵはＤＭＡ転送とは非同期にデータ転送の指示ができるため、特に複数のデータのＤＭＡ転送を行う場合に高速な処理が可能となる。
【０００４】
ＤＭＡ転送が終了した場合には、ＤＭＡコントローラからＣＰＵへ割り込みが通知され、ＣＰＵはこの割り込みを起因にＤＭＡコントローラのレジスタからディスクリプタを読み出す。ディスクリプタを読み出した後、ＣＰＵは、終了したＤＭＡ転送が順次送信の場合にはバッファの開放などの処理を実施し、ＤＭＡ転送が受信の場合には受信データの処理を実施する。
【０００５】
このような従来例に関連して特許文献１には、ＤＭＡ転送機能を有した情報処理装置が開示されている。この情報処理装置によれば、ＤＭＡコントローラ４１は、画像メモリ４３に格納されたディスクリプタ情報５３を、当該ＤＭＡコントローラ４１内部に用意されたレジスタにロードする。これにより、ＤＭＡコントローラ４１は、ロードされたディスクリプタ情報５３を参照してＤＭＡ転送処理を実施できるようになる。
【０００６】
【特許文献１】特開２００２−１４０２８６号公報（第６頁、第３図及び第５図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、従来例及び特許文献１に係るＤＭＡコントローラによれば、ＣＰＵは、ＤＭＡ転送が終了時の割り込みを起因に、ＤＭＡコントローラのレジスタを参照してディスクリプタを読み出している。しかしながら、ＣＰＵが、このＤＭＡコントローラのレジスタからディスクリプタを読み出す処理は、例えばＣＰＵがＲＡＭにアクセスする場合と比較して低速である。これは、例えばＤＭＡコントローラのレジスタのメモリ空間が、ＲＡＭのメモリ空間と異なるために、ＣＰＵは、このレジスタにアクセスする場合に特殊な命令を使用するためである。
【０００８】
そこで、本発明はこのような従来例に係る課題を解決したものであって、処理時間がかかる情報転送系の記憶部にアクセスせずにディスクリプタ情報を読み出せるようにすると共に、処理速度を高速化できるようにした情報処理装置、情報処理方法、当該情報処理方法を実行するためのプログラム及び当該プログラムを記録した媒体、並びにＤＭＡコントローラ、ＤＭＡ転送方法、当該ＤＭＡ転送方法を実行するためのプログラム及び当該プログラムを記録した媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決するために、本発明に係る情報処理装置は、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する情報処理装置であって、前記情報処理系は、前記情報を保存する第１記憶部と、当該装置を制御する制御部とを有し、前記情報転送系は、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を保存する第２記憶部と、前記第２記憶部に保存されたディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するＤＭＡ転送部とを有し、前記ＤＭＡ転送部は、ＤＭＡ転送した前記情報に係る前記ディスクリプタ情報を、当該第２記憶部から前記第１記憶部にＤＭＡ転送し、前記制御部は、前記ＤＭＡ転送部によりＤＭＡ転送されたディスクリプタ情報を当該第１記憶部から読み出すことを特徴とするものである。
【００１０】
本発明に係る情報処理装置によれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、第２記憶部には、情報の第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報が保存されている。ＤＭＡ転送部は、この第２記憶部に保存されたディスクリプタ情報に基づいて、第１記憶部と当該第２記憶部との間で情報をＤＭＡ転送する。この場合に、ＤＭＡ転送部は、ＤＭＡ転送した情報に係るディスクリプタ情報を、当該第２記憶部から第１記憶部にＤＭＡ転送する。このとき、制御部は、ＤＭＡ転送部によりＤＭＡ転送されたディスクリプタ情報を当該第１記憶部から読み出す。これにより、制御部は、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【００１１】
上述した課題を解決するために、本発明に係る情報処理方法は、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する情報処理方法であって、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップとを有することを特徴とするものである。
【００１２】
本発明に係る情報処理方法によれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【００１３】
上述した課題を解決するために、本発明に係る情報処理方法をコンピュータに実行させるためのプログラムは、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップとを有することを特徴とするものである。
【００１４】
上述した課題を解決するために、本発明に係る情報処理方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な媒体は、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップと、ＤＭＡ転送したディスクリプタ情報を前記第１記憶部から読み出すステップとを有することを特徴とするものである。
【００１５】
本発明に係る情報処理方法のプログラム及び媒体によれば、当該プログラムをコンピュータに実行させることにより、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【００１６】
上述した課題を解決するために、本発明に係るＤＭＡコントローラは、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するＤＭＡコントローラであって、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を保存する第２記憶部と、前記第２記憶部に保存されたディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するＤＭＡ転送部とを有し、前記ＤＭＡ転送部は、ＤＭＡ転送した前記情報に係る前記ディスクリプタ情報を、当該第２記憶部から前記第１記憶部にＤＭＡ転送することを特徴とするものである。
【００１７】
本発明に係るＤＭＡコントローラによれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、第２記憶部には、情報の第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報が保存されている。ＤＭＡ転送部は、この第２記憶部に保存されたディスクリプタ情報に基づいて、第１記憶部と当該第２記憶部との間で情報をＤＭＡ転送する。この場合に、ＤＭＡ転送部は、ＤＭＡ転送した情報に係るディスクリプタ情報を、当該第２記憶部から第１記憶部にＤＭＡ転送する。このとき、ＤＭＡ転送部によりＤＭＡ転送されたディスクリプタ情報を当該第１記憶部から読み出すことにより、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【００１８】
上述した課題を解決するために、本発明に係るＤＭＡ転送方法は、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する方法であって、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップとを有することを特徴とするものである。
【００１９】
本発明に係るＤＭＡ転送方法によれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【００２０】
上述した課題を解決するために、本発明に係るＤＭＡ転送方法をコンピュータに実行させるためのプログラムは、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップとを有することを特徴とするものである。
【００２１】
上述した課題を解決するために、本発明に係るＤＭＡ転送方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な媒体は、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送するために、前記情報の前記第１記憶部上の格納位置、及び当該情報のサイズを示すディスクリプタ情報を生成するステップと、生成したディスクリプタ情報を前記情報転送系の第２記憶部に保存するステップと、前記第２記憶部に保存したディスクリプタ情報に基づいて、前記第１記憶部と当該第２記憶部との間で前記情報をＤＭＡ転送するステップと、ＤＭＡ転送した情報に係るディスクリプタ情報を、前記第２記憶部から前記第１記憶部にＤＭＡ転送するステップとを有することを特徴とするものである。
【００２２】
本発明に係るＤＭＡ転送方法のプログラム及び媒体によれば、当該プログラムをコンピュータに実行させることにより、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。
【発明の効果】
【００２３】
本発明に係る情報処理装置、情報処理方法、そのプログラム及び媒体によれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、ＤＭＡ転送した情報に係るディスクリプタ情報を、第２記憶部から第１記憶部にＤＭＡ転送し、制御部は、ＤＭＡ転送したディスクリプタ情報をこの第１記憶部から読み出すものである。
【００２４】
この構成によって、制御部は、処理時間がかかる情報転送系の第２記憶部にアクセスせずにディスクリプタ情報を読み出すことができる。これにより、制御部にかかる負荷を低減できるので、当該装置の処理速度を高速化できる。
【００２５】
本発明に係るＤＭＡコントローラ、ＤＭＡ転送方法、そのプログラム及び媒体によれば、情報処理系の第１記憶部と情報転送系の第２記憶部との間で情報をＤＭＡ転送する場合に、ＤＭＡ転送した情報に係るディスクリプタ情報を、第２記憶部から第１記憶部にＤＭＡ転送するものである。
【００２６】
この構成によって、ＤＭＡ転送した情報に係るディスクリプタ情報を、処理時間がかかる情報転送系の第２記憶部にアクセスせずに、情報処理系の第１記憶部から読み出すことができる。これにより、処理速度を高速化できる。
【発明を実施するための最良の形態】
【００２７】
続いて、本発明に係る情報処理装置、情報処理方法、当該情報処理方法を実行するためのプログラム及び当該プログラムを記録した媒体、並びにＤＭＡコントローラ、ＤＭＡ転送方法、当該ＤＭＡ転送方法を実行するためのプログラム及び当該プログラムを記録した媒体の実施の形態について、図面を参照しながら説明をする。
【００２８】
＜実施の形態１＞
図１は、本発明に係る第１の実施の形態としての情報処理装置（以下、Personal Computer;ＰＣという）１００の構成例を示すブロック図である。図１に示すＰＣ１００は、ネットワーク１０に接続され、送信ディスクリプタによるＤＭＡ転送機能を有したネットワークカード９から入出力する情報を処理する。このＰＣ１００は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、バス４、Ｉ／Ｏインタフェース５、入力部６、出力部７、記録部８、ネットワークカード９を備える。
【００２９】
ＲＯＭ（Read Only Memory）２はバス４に接続され、このＲＯＭ２には、プログラム等が保存されている。ＣＰＵ１は制御部の一例として機能し、バス４を介してＲＯＭ２及びＲＡＭ３（第１記憶部の一例）に接続されている。このＣＰＵ１は、ＲＯＭ２に保存されたプログラム等をＲＡＭ３に展開し、当該プログラムにしたがって各種の処理を実施する。
【００３０】
また、ＣＰＵ１は、バス４に接続されたＩ／Ｏ（Input/Output）インタフェース５を介して、キーボード、マウスなどの入力部６、ディスプレイやプリンタなどの出力部７、ハードディスクなどの記録部８及びＤＭＡ転送を行うネットワークカード９が接続されている。
【００３１】
入力部６は、ユーザにより入力された文字情報などをＣＰＵ１に出力する。ＣＰＵ１は、入力部６からの文字情報などを記録部８に記録する。また、この記録部８にはプログラム等が記録されている。出力部７は、ＣＰＵ１から出力された画像情報などを出力する。
【００３２】
ネットワークカード９は、ネットワーク１０に接続されている。このネットワークカード９は、例えばＰＣ１内部のデータをネットワーク１０で送受信できる形式のデータに変換する。
【００３３】
一般的に、ＣＰＵ１がＩ／Ｏインタフェース５を介してネットワークカード９などに対して通信を行う場合の通信速度と、バス４に直接接続されたＲＯＭ２やＲＡＭ３と通信を行う場合の通信速度とを比べると、後者との通信の方が速い。すなわち、ＣＰＵ１がＲＡＭ３へのデータ読み込みの速度は、例えばネットワークカード９のレジスタ９ａ（図２参照）への読み込み速度に比べて非常に速い。これは、ネットワークカード９のレジスタ９ａのメモリ空間がＲＡＭ３のメモリ空間と異なるために、ＣＰＵ１は、このレジスタ９ａにアクセスする場合に、特殊な命令を使用することに起因している。なお、ネットワークカード９は、例えばＬＡＮ（Local Area Network）カード、ネットワークアダプタ、ネットワークインタフェースカード (Network Interface Card；NIC) などとも称される。
【００３４】
図２はネットワークカード９の送信部９ｆの構成例を示すブロック図である。図２に示す送信部９ｆは、レジスタ９ａ、ＤＭＡ転送部９ｂ、一時記憶部９ｃ、パケット通信部９ｄ及び割り込み発生部９ｅを備える。レジスタ９ａは第２記憶部の一例を構成し、Ｉ／Ｏインタフェース５を介してＣＰＵ１に接続されている。このレジスタ９ａは、ＣＰＵ１からネットワークカード９の送信部９ｆに対しての命令が書き込まれたり、この送信部９ｆの状態が保存されている。
【００３５】
ＤＭＡ転送部９ｂは、一時記憶部９ｃ（第２記憶部の一例）、及びＩ／Ｏインタフェース５を介してＲＡＭ３（図１参照）に接続されている。
【００３６】
ＤＭＡ転送部９ｂは、ＣＰＵ１によりＲＡＭ３に生成された送信ディスクリプタ２１（図４参照）を一時記憶部９ｃに転送して保存する。この送信ディスクリプタ２１は、少なくとも、ＤＭＡ転送する送信パケット（情報）のサイズ、及びＲＡＭ３上の格納位置を示すものである。
【００３７】
ＤＭＡ転送部９ｂは、一時記憶部９ｃに保存された送信ディスクリプタ２１に基づいて、ＲＡＭ３と一時記憶部９ｃとの間で送信パケットをＤＭＡ転送する。この例で、ＤＭＡ転送部９ｂは、このＲＡＭ３上の送信パケットをＣＰＵ１を介さないで直接読み込んで一時記憶部９ｃに書き込む。その後、ＤＭＡ転送部９ｂは、ＤＭＡ転送した送信パケットに係る送信ディスクリプタ２１を、一時記憶部９ｃからＲＡＭ３にＤＭＡ転送する。この例で、ＤＭＡ転送部９ｂは、送信パケットのＤＭＡ転送が完了した場合に、当該送信パケットのＤＭＡ転送完了を示す送信ディスクリプタ２１を一時記憶部９ｃからＲＡＭ３にＤＭＡ転送する。このとき、ＣＰＵ１は、ＤＭＡ転送した送信パケットに係る送信ディスクリプタ２１を読み出す場合にＲＡＭ３を参照して、例えばＤＭＡ転送完了を示す送信ディスクリプタ２１を読み出す。
【００３８】
これにより、ＣＰＵ１は、処理時間がかかるレジスタ９ａにアクセスせずに送信完了位置を知ることができる。従って、ＣＰＵ１にかかる負荷を低減できるので、ＰＣ１００の処理速度を高速化できる。
【００３９】
一時記憶部９ｃは、パケット通信部９ｄに接続されている。この一時記憶部９ｃには、送信ディスクリプタ２１が保存されている。また、一時記憶部９ｃには、パケット通信部９ｄによりネットワーク１０に転送する送信パケットや転送した送信パケットが一時的に保存される。パケット通信部９ｄはネットワーク１０に接続され、一時記憶部９ｃに記憶された送信パケットをネットワーク１０に転送する。
【００４０】
割り込み発生部９ｅは、ＤＭＡ転送部９ｂ、及びＩ／Ｏインタフェース５を介してＣＰＵ１に接続されている。この割り込み発生部９ｅは、ＤＭＡ転送部９ｂからＤＭＡ転送完了通知などを受信し、ＤＭＡ転送完了状態をＣＰＵ１へ送信して割り込みを行う。ＣＰＵ１は、割り込み発生部９ｅによりＤＭＡ転送完了状態を受信すると、バッファの解放処理などを実施する。なお、ＤＭＡ転送部９ｂ及び一時記憶部９ｃは、ＤＭＡコントローラ及び情報転送系の一例を構成する。また、ＣＰＵ１及びＲＡＭ３は、情報処理系の一例を構成する。
【００４１】
図３は、レジスタ９ａの構成例を示す説明図である。図３に示すレジスタ９ａには少なくとも、送信リセット用のレジスタTX_RESET、送信ディスクリプタ格納領域先頭アドレス設定用のレジスタTX_DESC_ADR、単位送信ディスクリプタ数設定用のレジスタTX_DESC_NUM、送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADR、送信テイルポインタ設定用のレジスタTX_TAIL、送信完了割り込み設定用のレジスタTX_INTが存在する。
【００４２】
この送信リセット用のレジスタTX_RESETは、送信機能のリセットを実施するためのレジスタである。送信ディスクリプタ格納領域先頭アドレス設定用のレジスタTX_DESC_ADRは、ＣＰＵ１がＲＡＭ３上の送信ディスクリプタの格納位置の先頭アドレスを設定し、ネットワークカード９にその位置を通知するためのレジスタである。
【００４３】
単位送信ディスクリプタ数設定用のレジスタTX_DESC_NUMは、ＣＰＵ１が送信ディスクリプタの要素数を設定し、ネットワークカード９にその数を通知するためのレジスタである。送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRは、ネットワークカード９が送信完了ポインタを書き込むＲＡＭ３上領域の先頭アドレスを示すためのレジスタである。送信テイルポインタ設定用のレジスタTX_TAILは、ＣＰＵ１が送信テイルポインタを設定して、送信動作の開始をネットワークカード９に指示するためのレジスタである。送信完了割り込み設定用のレジスタTX_INTは、ネットワークカード９が送信を終了したことをＣＰＵ１に割り込みで通知するためのレジスタである。このように、レジスタ９ａは構成されている。
【００４４】
図４は、送信ディスクリプタ２１の構成例を示す説明図である。図４に示す送信ディスクリプタ２１は、少なくとも送信パケット先頭アドレス２０ａと送信パケットサイズ２０ｂからなる単位送信ディスクリプタ２０をｎ個（＝要素数ｎ）有して構成されている。この送信ディスクリプタ２１は、ＣＰＵ１によりＲＡＭ３（図１参照）上の連続領域に生成される。なお、この単位送信ディスクリプタ２０の構成は、ネットワークカード９及びＣＰＵ１の双方に対して既知である。
【００４５】
ＣＰＵ１はネットワークカード９のＤＭＡ転送部９ｂに対して、ＲＡＭ３上の送信ディスクリプタ２１の先頭アドレスと先頭からの個数(インデックス)ｎを指定すると、ＤＭＡ転送部９ｂは該当するインデックスの単位送信ディスクリプタ２０の先頭位置を特定できるようになる。これは、上述したようにＤＭＡ転送部９ｂは、単位送信ディスクリプタ２０の構成を知っているからである。なお、以下このインデックスの値をディスクリプタ番号（０〜ｎ）と称する。
【００４６】
続いて、ＲＡＭ３上のメモリ領域の構成を説明する。図５は、ＲＡＭ３上のメモリ領域の構成例を示す説明図である。この例で、図５に示すＲＡＭ３上の送信パケットp_1〜送信パケットp_mを送信パケットp_1から順に図１に示したネットワークカード９を介してネットワーク１０に送信する。
【００４７】
ＲＡＭ３上には、ｎ個の単位送信ディスクリプタ２０（図４参照）を持つ送信ディスクリプタ２１（以下ＲＡＭ３上の送信ディスクリプタ２１を「送信ディスクリプタcpu_desc」又は単に「cpu_desc」という）を保存するための領域が確保されている。また、ＲＡＭ３上には、ＣＰＵ１が次にパケットを送信する場合に使用するディスクリプタ番号を指し示す送信テイルポインタcpu_tx_tailを保存するための領域が確保されている。また、ＲＡＭ３上には、ＣＰＵ１が次のパケット送信完了後に最初に送信完了処理を行うディスクリプタ番号を指し示す送信ヘッドポインタcpu_tx_headを保存するための領域が確保されている。また、ＲＡＭ３上には、ネットワークカード９がまさに現在送信が完了したパケットを送信するために使用したディスクリプタ番号を指し示す送信完了ポインタcpu_tx_doneを保存するための領域が確保されている。このように、ＲＡＭ３上には各メモリ領域が確保されている。
【００４８】
なお、ここで送信完了処理とは例えば、送信に使用したパケットバッファの解放やアプリケーションへの送信完了通知を意味する。また以下、説明の理解を容易にするために、要素数（単位送信ディスクリプタ２０の個数）ｎ≧送信パケット数ｍとする（要素数ｎ＜送信パケット数ｍの場合は、送信パケット数ｍを要素数ｎ以下に分割して行えばよいので割愛する）。また、送信ディスクリプタcpu_desc等のそれぞれの変数の先頭アドレスを「@cpu_desc」というように先頭に「@」マークをつけて表記することにする。
【００４９】
続いて、図２に示したネットワークカード９の一時記憶部９ｃ上のメモリ領域の構成を説明する。図６は、一時記憶部９ｃのメモリ領域の構成例を示す説明図である。図６に示す一時記憶部９ｃには、送信すべき送信ディスクリプタ２１のコピーを格納する送信ディスクリプタnic_desc（以下一時記憶部９ｃ上の送信ディスクリプタ２１を「送信ディスクリプタnic_desc」又は単に「nic_desc」という）の領域が存在する。また、一時記憶部９ｃには、ネットワークカード９が次に送信すべき当該nic_dsec上のディスクリプタ番号を示すディスクリプタ番号nic_txの領域が存在する。また、送信を行う送信パケットを記憶する領域ｐが存在する。このように、一時記憶部９ｃ上のメモリ領域は構成されている。
【００５０】
なお、以下では説明の理解を容易にするため、ＲＡＭ３上の送信ディスクリプタcpu_desc（図５参照）の領域の大きさと同じかそれ以上の領域をnic_descは持ち、cpu_descの各要素のイメージがそのままnic_descの各要素にコピーできるものとする。つまり、cpu_desc全体がそのままnic_desc上にコピーができ、cpu_desc上で使用したディスクリプタ番号がそのままnic_descでも使用できることとする。従って以下、cpu_desc及びnic_descのディスクリプタ番号kの要素をcpu_desc[k]及びnic_desc[k]と表し、cpu_desc[k]をnic_desc上にコピーするといえば、cpu_desc[k]の内容をnic_desc[k]にＤＭＡコピーすることとする。なお、一時記憶部９ｃが送信ディスクリプタ２１のサイズに比して小さい場合には分割して送信ディスクリプタ２１の転送を行えばよいので問題ない。
【００５１】
続いて、送信パケットのＤＭＡ転送例を説明する。。図７は、ネットワークカード９の初期化例を示すシーケンス図である。図７に示すＣＰＵ１は、ネットワークカード９のレジスタ９ａにおける送信リセット用のレジスタTX_RESETを使用して送信処理のリセットを実施する(701)。これに伴い、ネットワークカード９側では一時記憶部９ｃのディスクリプタ番号nic_txを「０」に初期化する(702)。ＣＰＵ１は、図５に示した送信テイルポインタcpu_tx_tail、送信ヘッドポインタcpu_tx_head及び送信完了ポインタcpu_tx_doneに「０」を設定して初期化する(703)。また、ＣＰＵ１は、図３に示したレジスタ９ａにおける送信ディスクリプタ格納領域先頭アドレス設定用のレジスタTX_DESC_ADRに、図５に示したＲＡＭ３の送信ディスクリプタcpu_descの先頭アドレス@cpu_descを設定して初期化する(704)。
【００５２】
また、ＣＰＵ１は、レジスタ９ａにおける単位送信ディスクリプタ数設定用のレジスタTX_DESC_NUMに、ＲＡＭ３の要素数ｎを設定して初期化する(705)。また、ＣＰＵ１は、レジスタ９ａにおける送信ディスクリプタ格納領域先頭アドレス設定用のレジスタTX_DESC_ADRに、ＲＡＭ３の送信完了ポインタcpu_tx_doneの先頭アドレス@cpu_tx_doneを設定して初期化する(706)。
【００５３】
その後、ＣＰＵ１は、レジスタ９ａにおける送信完了割り込み設定用のレジスタTX_INTを使用して送信完了割り込みの許可を行う(707)。このようにして、ネットワークカード９の初期化処理を実施する。
【００５４】
図８及び図９は、送信パケットのＤＭＡ転送例を示すシーケンス図である。紙面の都合上、図８に示すネットワークカード９のＤＭＡ転送処理ブロック５０の処理内容を図９に示している。図８に示すＣＰＵ１側の送信処理開始スレッド１ａは、先ずカウンタ値iに「０」を設定して初期化する(800)。次に、送信処理開始スレッド１ａは、ＲＡＭ３上の送信ディスクリプタcpu_desc（図５参照）に対して、送信パケットp_iのアドレス@p_i及びサイズを設定する（801）。次に、送信処理開始スレッド１ａは、送信テイルポインタcpu_tx_tailを更新する(802)。ここで、このcpu_tx_tailの更新は基本的に１インクリメントするものだが、送信ディスクリプタ２１をリング状に使用するためにディスクリプタ数ｎでモジュロ（modulo）をとる。上述の(801)〜(802)の動作を必要回数（例えば送信パケット数ｍ）繰り返す。最後に、送信処理開始スレッド１ａは、送信テイルポインタ設定用のレジスタTX_TAILに送信テイルポインタcpu_tx_tailの値を書き込み、ネットワークカード９のＤＭＡ転送部９ｂに転送開始を指示する(804)。
【００５５】
図９に示すネットワークカード９側では、レジスタ９ａにおける送信テイルポインタ設定用のレジスタTX_TAILが更新されたのを受けて当該TX_TAILを変数jに退避する(810)。退避後、ネットワークカード９側では、ＤＭＡ転送部９ｂが、一時記憶部９ｃのディスクリプタ番号nic_tx（「０」に初期化済み）から「変数j-1」までの送信ディスクリプタcpu_descを、一時記憶部９ｃに送信ディスクリプタnic_descとしてコピーする(811)。
【００５６】
次に、ＤＭＡ転送部９ｂは、一時記憶部９ｃのディスクリプタ番号nic_txが示す送信ディスクリプタnic_descに関連付けられているＲＡＭ３上の送信パケットを、順番に一時記憶部９ｃの領域ｐにコピーする(812)。次に、パケット通信部９ｄは、図６に示した一時記憶部９ｃの領域ｐにコピーされた送信パケットをネットワーク１０に送信する(813)。
【００５７】
ネットワーク１０に送信パケットを送信後、パケット通信部９ｄは、ディスクリプタ番号nic_txを更新する。例えば、ディスクリプタ番号nic_txに「１」を加算した値をレジスタTX_DESC_NUMに格納された単位送信ディスクリプタ数で割った余り（モジュロ）をディスクリプタ番号nic_txに設定して更新する(814)。その後、ＤＭＡ転送部９ｂは、ＲＡＭ３にアクセスして送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ３上の領域へ、ディスクリプタ番号nic_txの内容をコピー（転送）する(815)。
【００５８】
次に、割り込み発生部９ｅは、送信完了割り込みを発生して、処理ブロック(812)で送信ディスクリプタnic_descのディスクリプタ番号nic_txに関連付けられた送信パケットの送信が完了したことを、ＣＰＵ１側の送信完了処理スレッド１ｂに通知する(816)。このとき、図８に示す送信完了処理スレッド１ｂは、送信完了割り込みの入力を待機している(820)。
【００５９】
送信完了処理スレッド１ｂは、割り込み発生部９ｅから送信完了割り込みを入力すると、ＲＡＭ３にコピーされた一時記憶部９ｃのディスクリプタ番号nic_txから送信パケットの先頭アドレスと送信パケットのサイズを取得して送信完了ポインタcpu_tx_doneを求める。その後、送信完了処理スレッド１ｂは、送信ヘッドポインタcpu_tx_headから順に送信完了ポインタcpu_tx_doneまで送信完了処理を行う(821)。ここで、送信完了ポインタcpu_tx_doneは、上述の（815）の処理で送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示すＲＡＭ３上の領域へコピーされた、ネットワークカード９のパケット通信部９ｄが送信を終了した位置を示している。
【００６０】
これにより、ＣＰＵ１がいちいちレジスタ９ａにアクセスせずに、ＲＡＭ３にアクセスして送信完了位置を知ることができるため処理の高速化につながる。送信完了処理の終了後、ＣＰＵ１は、パケットバッファの解放やアプリケーションへ送信完了などを通知する。
【００６１】
また、この例では送信完了通知を割り込みによりＣＰＵ１へ通知したが、送信完了ポインタcpu_tx_doneの値の変化をＣＰＵ１が観測することで送信完了通知割り込みを発生させずに、送信完了処理ができる。このことは、比較的時間や処理コストがかかる割り込み処理を割愛できるため、処理速度の改善が期待できる。
【００６２】
この例では、ネットワークカード９のパケット送信の例を示したが、パケット受信においても同様に適用でき、またネットワークカード９に限らず、ＤＭＡを有する連続的なデータを送受信する機器に対して有効である。
【００６３】
また、情報処理方法及びＤＭＡ転送方法をコンピュータに実行させるためのプログラムとして、図８及び図９に示したシーケンスを図１に示したＲＯＭ２や記録部８に保存し、このＲＯＭ２などから当該プログラムを起動するか、若しくは当該プログラムを記録したコンピュータ読み取り可能な媒体（例えばＣＤ−ＲＯＭ）を再生して当該プログラムを起動する。
【００６４】
このように、本発明に係る第１の実施形態のＰＣ１００、情報処理方法、そのプログラム及び媒体によれば、一時記憶部９ｃとＲＡＭ３との間で情報をＤＭＡ転送する場合に、ＤＭＡ転送した送信パケットに係る送信ディスクリプタnic_descを一時記憶部９ｃからＲＡＭ３にＤＭＡ転送し、ＣＰＵ１は、このＲＡＭ３から当該送信ディスクリプタnic_descを読み出すものである。
【００６５】
従って、ＣＰＵ１は、処理時間がかかるレジスタ９ａにアクセスせずに送信ディスクリプタnic_descを読み出すことができる。これにより、ＣＰＵ１にかかる負荷を低減できるので、当該ＰＣ１００の処理速度を高速化できる。
【００６６】
また、本発明に係る第１の実施形態のＤＭＡコントローラ、ＤＭＡ転送方法、そのプログラム及び媒体によれば、一時記憶部９ｃとＲＡＭ３との間で送信パケットをＤＭＡ転送する場合に、ＤＭＡ転送した送信パケットに係る送信ディスクリプタnic_descを、一時記憶部９ｃからＲＡＭ３にＤＭＡ転送するものである。
【００６７】
従って、ＤＭＡ転送した送信パケットに係る送信ディスクリプタnic_descを、処理時間がかかるレジスタ９ａにアクセスせずにＲＡＭ３から読み出すことができる。これにより、処理速度を高速化できる。
【００６８】
＜実施の形態２＞
続いて、第２の実施の形態としての送信パケットのＤＭＡ転送例を説明する。この例では、送信パケットの個数で送信完了ポインタ更新を抑制する方法について説明する。図１０及び図１１は、本発明に係る第２の実施の形態としての送信パケットのＤＭＡ転送例を示すシーケンス図である。紙面の都合上、図１０に示すネットワークカード９ＡのＤＭＡ転送処理ブロック５１の処理内容を図１１に示している。
【００６９】
前提条件としてネットワークカード９Ａのレジスタ９ａに、送信パケットのＤＭＡ転送回数の基準となる回数基準値を格納する送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMを新たに用意する。ネットワークカード９Ａの初期化の状態において、ＣＰＵ１は、このレジスタ９ａに対して送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMの値（回数基準値）を所定値に設定する。例えば、このレジスタTX_DONE_NUMの値は、図１に示したＲＯＭ２に予め格納してもよいし、入力部６から入力して記録部８に記録するようにしてもよい。この場合、ＣＰＵ１は、初期化の際にＲＯＭ２又は記録部８から送信完了ポインタ個数抑制の値を読み出して、レジスタTX_DONE_NUMにこの値を設定する。
【００７０】
また、ネットワークカード９ＡのＤＭＡ転送部９ｂはカウンタとしても機能し、送信完了通知カウンタtx_done_cntを用いて、送信パケットのＤＭＡ転送回数を計数する。このＤＭＡ転送部９ｂは、初期化リセットのタイミングで送信完了通知カウンタtx_done_cntに「０」を設定して初期化する。なお、図８及び図９に示したシーケンス図の処理ブロックと同じ処理ブロックには同一符号を付し、その詳細な説明は省略する。また、図１１に示す符号(915)〜(919)に係る処理ブロックが図８及び図９に対して異なる処理である。
【００７１】
これらを前提条件として図１０に示すＣＰＵ１側の送信処理開始スレッド１ａは、図８に示した初期化処理(800)〜(803)を実施し、当該初期化処理の終了後、ネットワークカード９Ａのレジスタ９ａにおける送信テイルポインタ設定用のレジスタTX_TAILに送信テイルポインタcpu_tx_tailの値を書き込む。その後、送信処理開始スレッド１ａは、図１１に示すネットワークカード９ＡのＤＭＡ転送部９ｂに転送開始を指示する(804)。
【００７２】
次に、このＤＭＡ転送部９ｂは、一時記憶部９ｃのディスクリプタ番号nic_txから「変数j-1」までの送信ディスクリプタcpu_descを、一時記憶部９ｃに送信ディスクリプタnic_descとしてコピーする(810、811)。
【００７３】
次に、ＤＭＡ転送部９ｂは、一時記憶部９ｃの送信ディスクリプタnic_descのディスクリプタ番号nic_txが示すＲＡＭ３上の送信パケットを、順番に一時記憶部９ｃの領域ｐにコピーする(812)。パケット通信部９ｄは、一時記憶部９ｃの領域ｐにコピーされた送信パケットをネットワーク１０に送信する(813)。ネットワーク１０に送信パケットを送信後、パケット通信部９ｄは、ディスクリプタ番号nic_txを更新する(814)と共に、送信完了通知カウンタtx_done_cntをインクリメントする(915)。
【００７４】
その後、ＤＭＡ転送部９ｂは、送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMの値と送信完了通知カウンタtx_done_cntの計数値とを比較し、当該比較結果に基づいて、ＤＭＡ転送した送信パケットに係る送信ディスクリプタnic_descを、一時記憶部９ｃからＲＡＭ３にＤＭＡ転送するか否かを判定する。
【００７５】
例えば、ＤＭＡ転送部９ｂは、送信完了通知カウンタtx_done_cntと送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMの値を比較後、当該tx_done_cntが当該TX_DONE_NUMと同じかそれ以上の場合、ＤＭＡ転送部９ｂは、ＲＡＭ３にアクセスして送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ３上の領域へディスクリプタ番号nic_txの内容をコピーする(916)。次に、割り込み発生部９ｅは、送信完了割り込みを発生して、処理ブロック(812)で送信ディスクリプタnic_descのディスクリプタ番号nic_txが示す送信パケットの送信が完了しことを、ＣＰＵ１側の送信完了処理スレッド１ｂに通知する(917)。その後、ＤＭＡ転送部９ｂは、送信完了通知カウンタtx_done_cntに「０」を設定して初期化する。
【００７６】
また、送信完了通知カウンタtx_done_cntをインクリメント後（915）、ＤＭＡ転送部９ｂは、送信完了通知カウンタtx_done_cntと送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMの値を比較して、当該tx_done_cntが当該TX_DONE_NUMより小さい場合、処理ブロック（812）に移行して、次の送信ディスクリプタnic_descのディスクリプタ番号nic_txが示すＲＡＭ３上の送信パケットを順番に一時記憶部９ｃの領域ｐにコピーする。
【００７７】
このように、本発明に係る第２の実施形態のＤＭＡ転送方法によれば、ＤＭＡ転送部９ｂは、送信完了ポインタ個数抑制設定用のレジスタTX_DONE_NUMの値と送信完了通知カウンタtx_done_cntの計数値とを比較して送信ディスクリプタnic_descのＤＭＡ転送を判定するものである。
【００７８】
従って、図９の処理ブロック(815)と比較して、ＤＭＡ転送部９ｂが、送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ３上の領域へディスクリプタ番号nic_txの内容をコピー(916)する更新頻度を送信回数で抑制できるようになる。従って、設定された間隔でＤＭＡが起動されるため、不必要な更新が抑制されて処理の高速化につながる。なお、送信完了割り込み(917)の他に、上位が指示した送信パケットの転送が全て終了したときにも送信完了の通知(919)を行ってもよい。
【００７９】
＜実施の形態３＞
続いて、第３の実施の形態としての送信パケットのＤＭＡ転送例を説明する。この例では、時間で送信完了ポインタ更新を抑制する方法について説明する。図１２及び図１３は、本発明に係る第３の実施の形態としての送信パケットのＤＭＡ転送例を示すシーケンス図である。紙面の都合上、図１２に示すネットワークカード９ＢのＤＭＡ転送処理ブロック５２の処理内容を図１３に示している。
【００８０】
前提条件としてネットワークカード９ＢのＤＭＡ転送部９ｂは、送信パケットのＤＭＡ転送時間を計測するタイマ１１を有する。ネットワークカード９Ｂのレジスタ９ａに、送信パケットのＤＭＡ転送時間の基準となる時間基準値を格納する送信完了ポインタ時間抑制設定用のレジスタTX_DONE_TIMEを新たに用意する。ネットワークカード９Ｂの初期化の状態において、ＣＰＵ１は、ネットワークカード９Ｂのレジスタ９ａに対して送信完了ポインタ時間抑制設定用のレジスタTX_DONE_TIMEの値（時間基準値）を所定値に設定する。例えば、このレジスタTX_DONE_TIMEの値は、図１に示したＲＯＭ２に予め格納してもよいし、入力部６から入力して記録部８に記録するようにしてもよい。この場合、ＣＰＵ１は、初期化の際にＲＯＭ２又は記録部８から送信完了ポインタ時間抑制の値を読み出して、レジスタTX_DONE_TIMEにこの値を設定する。
【００８１】
ネットワークカード９は、初期化リセットのタイミングで送信完了通知フラグtx_done_flgに「０」を設定し、更にタイマセットフラグtx_time_flgに「０」を設定して初期化する。なお、図８及び図９に示したシーケンス図の処理ブロックと同じ処理ブロックには同一符号を付し、その詳細な説明は省略する。また、図１３に示す符号(1015)〜(1023)に係る処理が図８及び図９に対して異なる処理である。
【００８２】
これらを前提条件として図１２に示すＣＰＵ１側の送信処理開始スレッド１ａは、図８に示した初期化処理(800)〜(803)を実施し、当該初期化処理の終了後、ネットワークカード９Ａのレジスタ９ａにおける送信テイルポインタ設定用のレジスタTX_TAILに送信テイルポインタcpu_tx_tailの値を書き込み、図１３に示すネットワークカード９ＢのＤＭＡ転送部９ｂに転送開始を指示する(804)。
【００８３】
その後、ＤＭＡ転送部９ｂは、一時記憶部９ｃのディスクリプタ番号nic_txから「変数j-1」までの送信ディスクリプタcpu_descを、一時記憶部９ｃに送信ディスクリプタnic_descとしてコピーする(810、811)。
【００８４】
次に、ＤＭＡ転送部９ｂは、一時記憶部９ｃの送信ディスクリプタnic_descのディスクリプタ番号nic_txが示すＲＡＭ３上の送信パケットを、順番に一時記憶部９ｃの領域ｐにコピーする(812)。次に、パケット通信部９ｄは、一時記憶部９ｃの領域ｐにコピーされた送信パケットをネットワーク１０に送信する(813)。ネットワーク１０に送信パケットを送信後、パケット通信部９ｄは、ディスクリプタ番号nic_txを更新する(814)。
【００８５】
ディスクリプタ番号nic_txを更新後、ＤＭＡ転送部９ｂは、送信完了ポインタ時間抑制設定用のレジスタTX_DONE_TIMEの値（時間基準値）とタイマ１１により計測した計測値とを比較し、当該比較結果に基づいて、ＤＭＡ転送した送信パケットに係る送信ディスクリプタnic_descを、一時記憶部９ｃからＲＡＭ３にＤＭＡ転送するか否かを判定する。
【００８６】
例えば、ＤＭＡ転送部９ｂは、タイマセットフラグtx_time_flgが「０」ならば（すなわちタイマがスタートされていなければ）、タイマセットフラグtx_time_flgに「１」を設定してタイマ１１をスタートする（1015、1016）。
【００８７】
タイマ１１は、送信完了ポインタ時間抑制設定用のレジスタTX_DONE_TIMEの値が示す時間経過（tick）したら、タイマセットフラグtx_time_flgに「０」を設定すると共に、送信完了通知フラグtx_done_flgに「１」を設定して、当該タイマ１１がtickしたことをネットワークカード９ＢのＤＭＡ転送部９ｂに通知する(1021、1022、1023)。
【００８８】
送信完了通知フラグtx_done_flgが「１」の場合、ＤＭＡ転送部９ｂは、ＲＡＭ３にアクセスして送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ３上の領域へ、ディスクリプタ番号nic_txの内容をコピーする(1017)。
【００８９】
その後、ＤＭＡ転送部９ｂは、送信完了通知フラグtx_done_flgに「０」を設定して初期化する。また、割り込み発生部９ｅは、送信完了割り込みを発生して、上述の処理ブロック(812)でディスクリプタ番号nic_txが示す送信パケットの送信が完了しことを、ＣＰＵ１側の送信完了処理スレッド１ｂに通知する(1019)。
【００９０】
また、送信完了通知フラグtx_done_flgが「１」でない場合、処理ブロック（812）に移行して、次のディスクリプタ番号nic_txが示すＲＡＭ３上の送信パケットを順番に一時記憶部９ｃの領域ｐにコピーする。
【００９１】
このように、本発明に係る第３の実施形態のＤＭＡ転送方法によれば、ＤＭＡ転送部９ｂは、送信完了ポインタ時間抑制設定用のレジスタTX_DONE_TIMEの値（時間基準値）とタイマ１１により計測した計測値とを比較して送信ディスクリプタnic_descのＤＭＡ転送を判定するものである。
【００９２】
従って、図９の処理ブロック(815)と比較して、ＤＭＡ転送部９ｂが、送信完了ポインタ格納領域先頭アドレス設定用のレジスタTX_DONE_ADRが指し示す当該ＲＡＭ３上の領域へ、ディスクリプタ番号nic_txの内容をコピー(1017)する更新頻度を時間で抑制できるようになる。これにより、設定された間隔でＤＭＡが起動されるため、不必要な更新が抑制されて処理の高速化につながる。なお、送信完了割り込み(1019)の他に、上位が指示した送信パケットの転送が全て終了したときにも送信完了の通知(1020)を行ってもよい。
【産業上の利用可能性】
【００９３】
本発明は、例えばネットワークカードなどの情報転送系の記憶部と、ＣＰＵを有した情報処理系の記憶部との間で情報をＤＭＡ転送する情報処理装置に適用して好適である。
【図面の簡単な説明】
【００９４】
【図１】本発明に係る第１の実施の形態としてのＰＣ１００の構成例を示すブロック図である。
【図２】ネットワークカード９の送信部９ｆの構成例を示すブロック図である。
【図３】レジスタ９ａの構成例を示す説明図である。
【図４】送信ディスクリプタ２１の構成例を示す説明図である。
【図５】ＲＡＭ３上のメモリ領域の構成例を示す説明図である。
【図６】一時記憶部９ｃのメモリ領域の構成例を示す説明図である。
【図７】ネットワークカード９の初期化例を示すシーケンス図である。
【図８】送信パケットのＤＭＡ転送例を示すシーケンス図である。
【図９】送信パケットのＤＭＡ転送例を示す一部拡大のシーケンス図である。
【図１０】本発明に係る第２の実施の形態としての送信パケットのＤＭＡ転送例を示すシーケンス図である。
【図１１】本発明に係る第２の実施の形態としての送信パケットのＤＭＡ転送例を示す一部拡大のシーケンス図である。
【図１２】本発明に係る第３の実施の形態としての送信パケットのＤＭＡ転送例を示すシーケンス図である。
【図１３】本発明に係る第３の実施の形態としての送信パケットのＤＭＡ転送例を示す一部拡大のシーケンス図である。
【符号の説明】
【００９５】
１・・・ＣＰＵ（制御部）、２・・・ＲＯＭ、３・・・ＲＡＭ（第１記憶部）、９・・・ネットワークカード、９ａ・・・レジスタ（第２記憶部）、９ｂ・・・ＤＭＡ転送部（カウンタ）、９ｃ・・・一時記憶部（第２記憶部）、９ｄ・・・パケット通信部、９ｅ・・・割り込み発生部、１１・・・タイマ、１００・・・ＰＣ（情報処理装置）
【図１】
2009048298.tif 000003
【図２】
2009048298.tif 000004
【図３】
2009048298.tif 000005
【図４】
2009048298.tif 000006
【図５】
2009048298.tif 000007
【図６】
2009048298.tif 000008
【図７】
2009048298.tif 000009
【図８】
2009048298.tif 000010
【図９】
2009048298.tif 000011
【図１０】
2009048298.tif 000012
【図１１】
2009048298.tif 000013
【図１２】
2009048298.tif 000014
【図１３】
2009048298.tif 000015