(57)【要約】従来データ転送処理において（１）割り込みレジスタや割り込みマスクレジスタを用いて、共用バスを介して行われていた割り込み状態の確認処理、（２）処理中に新たなフレーム転送が行われた場合の確認処理、をする際に共用バスを介して行われる処理を、共用バスを介さずに行うことができる。こうして、データ転送処理において共用バスを介したアクセスを減らすことにより、ある周辺機器が同じ共用バスに接続された他の周辺機器に対する共用バスの使用率を低下させることがない。そして、その結果情報処理端末全体の性能を低下させることもない。また、現状共用バスに接続された周辺機器が１つしかないとしても、将来周辺機器を増設した際に情報処理端末の性能の低下を招くことがない。
2005013137.tif 000002
【特許請求の範囲】
【請求項１】
互いに共用バスを介して接続されたメモリと周辺機器と、
前記メモリと前記周辺機器間の前記共用バスを介したデータ転送を制御するＣＰＵを有し、
前記ＣＰＵは前記共用バスを介さずに前記メモリにアクセス可能な情報処理端末における、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送の方法であって、
前記周辺機器から前記メモリへのデータ転送が完了する度にデータ転送の回数が前記メモリに更新記憶されるステップと、
前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前記回数が所定の回数以上である場合、前記メモリに転送されたデータに対する処理が前記ＣＰＵにより実行されるステップと、
所定のタイミングで、前記転送されたデータのうち該タイミングまでに処理されたデータの個数を前記回数から減少させ前記メモリに更新記憶させるステップとを有することを特徴とするデータ転送方法。
【請求項２】
請求の範囲第１項において、更に、
前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前回読み出された回数と今回読み出された回数を比較し、前記今回読み出された回数が前記前回読み出された回数を上回る場合、前記メモリに転送されたデータに対する処理が続行され、それ以外の場合、前記メモリに転送されたデータに対する処理が終了されるステップを有することを特徴とするデータ転送方法。
【請求項３】
互いに共用バスを介して接続されたメモリと周辺機器と、
前記メモリと前記周辺機器間の前記共用バスを介したデータ転送を制御するＣＰＵを有し、
前記ＣＰＵは前記共用バスを介さずに前記メモリにアクセス可能な情報処理端末における、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送の方法であって、
前記メモリから前記周辺機器へ転送されたデータに対する処理が該周辺機器にて完了する度に、前記処理の回数が前記メモリに更新記憶されるステップと、
前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が前記ＣＰＵにより読み出され、前記回数が所定の回数以上である場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が実行されるステップと、
所定のタイミングで、該タイミングまでに前記解放処理が完了したデータの個数を前記回数から減少させ前記メモリに更新記憶させるステップとを有することを特徴とするデータ転送方法。
【請求項４】
請求の範囲第３項において、更に、
前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前回読み出された回数と今回読み出された回数を比較し、前記今回読み出された回数が前記前回読み出された回数を上回る場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が続行され、それ以外の場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が終了されるステップを有することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】  本発明は、互いに情報処理端末に備えられたメモリと周辺機器との間のデータ転送処理方法に関する。
【背景技術】  パーソナルコンピュータ等の情報処理端末においては、情報処理端末における処理を制御するＣＰＵと、そのＣＰＵを制御するためのプログラムや制御に関するさまざまなデータが格納されるメモリと、ネットワークインタフェースカード（ＮＩＣ）等の周辺機器とが信号線（バス）を介して接続されている。ＣＰＵが、周辺機器に格納されたデータをメモリに格納し、メモリに格納されたデータにアクセスし、それを処理した結果を周辺機器に応答することにより、周辺機器とメモリ間でデータ転送が行われる。
図１は、従来のデータ転送を説明するための情報処理端末の構成ブロック図である。図１において、情報処理端末１における処理を制御するＣＰＵ３とそのＣＰＵを制御するためのプログラムや制御に関するさまざまなデータが格納されるメモリ４は、共用バス７より高速なシステムバス６により接続される。チップセット５は、共用バス７とシステムバス６とのデータ転送を仲介し、バスの速度差を調整する役割を果たす。本明細書においては、システムバス６で接続されたＣＰＵ３、メモリ４、チップセット５を合わせてホスト２と呼ぶことにする。
周辺機器（ＮＩＣ）９は、共用バス７を介してホスト２に接続される周辺機器の一例で、情報処理端末１をネットワーク１０に接続する。共用バス７には、他の周辺機器８として例えば、グラフィックスカード、ハードディスクドライブ、そしてフロッピーディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  ｄｉｓｋ）等の交換可能なメディアを使用する各種ドライブ等も接続が可能である。
図１の構成において、ＮＩＣ９がネットワーク１０からデータを受信した場合、ＮＩＣ９はホスト２のメモリ４にデータ転送を行い、ＮＩＣ９に備えられた図示しないメモリに、受信データが格納された（ホストメモリ４の）位置（格納先アドレス）を記憶する。そして、データ転送が完了すると割り込み要求を発行し、ＣＰＵ３に対して割り込みをかける。ＮＩＣ９がネットワーク１０から受信したデータをホストメモリ４に転送完了して実行されるこの割り込み処理を外部受信割り込みと呼ぶことにする。
ＣＰＵ３は割り込み要求を受け、通常の処理を中断し外部受信割り込み処理を行う。そこで、（１）ＣＰＵ３は、ＮＩＣ９に受信データの格納先アドレスを確認し、その格納先アドレスにアクセスして受信データの処理を行う。そして、（２）受信データの処理を完了後、ＣＰＵ３は、（１）の処理の間にＮＩＣ９が更にネットワークから受信したデータをホストメモリ４に転送していないかをＮＩＣ９に確認する。
もし、更なるデータ転送が確認されれば、ＣＰＵ３は（１）、（２）の処理を繰り返すことになる。このように、従来は、ネットワーク１０から受信したデータをホストメモリ４にデータ転送する処理における外部受信割り込み処理中にＮＩＣ９がネットワーク１０から新たなデータを受信する場合、ＣＰＵ３がＮＩＣ９に対する確認処理を行うために共用バス７が複数回使用される。そのため共用バス７に接続された他の周辺機器８がデータ転送に利用できる共用バス７の使用率が低下し、情報処理端末１の性能が低下する課題を有していた。
また、ネットワーク１０へ送信するデータをホストメモリ４から周辺機器（ＮＩＣ）９へデータ転送する場合も同様の課題を有していた。ＮＩＣ９がネットワーク１０に対して複数のデータを送信した場合、ＮＩＣ９はＮＩＣ９に備えられた図示しないメモリに、送信データが格納されていた元の（ホストのメモリ４の）格納先アドレスを記憶する。そして、ＮＩＣ９はネットワーク１０に対する最初のデータ送信が完了すると割り込み要求を発行し、ＣＰＵ３に対して割り込みをかける。ＮＩＣ９がネットワーク１０に対してデータ送信を完了して実行されるこの割り込み処理を外部送信割り込みと呼ぶことにする。
ＣＰＵ３は割り込み要求を受け、通常の処理を中断し外部送信割り込み処理を行う。そこで、（３）ＣＰＵ３はＮＩＣ９に送信データの格納先アドレスを確認し、必要な処理を行う。必要な処理とは例えば、格納先アドレスで指定されるメモリ４の解放処理等である。そして、（４）必要な処理の完了後、ＣＰＵ３は、（３）の処理の間にＮＩＣ９が更にネットワーク１０に対して他のデータの送信が完了していないかをＮＩＣ９に確認する。
もし、更なるデータ送信の完了が確認されれば、ＣＰＵ３は（３）、（４）の処理を繰り返すことになる。従って、従来のデータ転送処理では、ネットワーク１０からデータを受信する場合同様ネットワーク１０へデータを送信する場合であっても、共用バス７に接続された他の周辺機器８がデータ転送に利用できる共用バス７の使用率が低下し、情報処理端末１の性能が低下する課題を有していた。
データ転送時の割り込み処理に関する先行技術としては、通信インタフェース部に設けられたＤＭＡ部がホスト装置のＣＰＵを介さずにネットワークから受信したパケットを記憶領域へ書き込む方法が開示されている（特許文献１参照）。しかし、特許文献１には、記憶領域への書き込み完了後の割り込み処理において、ＣＰＵが共用バスを介して通信インタフェース部に複数回アクセスすることで生じる性能低下を改善することについての言及はない。
また、予め送信パケット数を設定することにより、設定されたパケット数が送信されるまで割り込みの発生が抑制される赤外線データ送信方法が開示される（特許文献２参照）。しかし、特許文献２には、メモリへの転送終了後の割り込み処理において、ＣＰＵが共用バスを介して周辺機器に複数回アクセスすることで生じる性能低下を改善することについての言及はない。
【特許文献１】特開２００３−８７２５５号公報
【特許文献２】特開平１１−１０３３３０号公報
【発明の開示】
そこで本発明の目的は、互いに情報処理端末に備えられ、共用バスを介して接続されたメモリと周辺機器とのデータ転送処理において、情報処理端末に備えられたＣＰＵが共用バスを介して周辺機器に複数回アクセスすることで生じる情報処理端末の性能低下を改善することを目的とする。
上記目的は、互いに共用バスを介して接続されたメモリと周辺機器と、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送を制御するＣＰＵを有し、前記ＣＰＵは前記共用バスを介さずに前記メモリにアクセス可能な情報処理端末における、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送の方法であって、前記周辺機器から前記メモリへのデータ転送が完了する度にデータ転送の回数が前記メモリに更新記憶されるステップと、前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前記回数が所定の回数以上である場合、前記メモリに転送されたデータに対する処理が前記ＣＰＵにより実行されるステップと、所定のタイミングで、前記転送されたデータのうち該タイミングまでに処理されたデータの個数を前記回数から減少させ前記メモリに更新記憶させるステップとを有することを特徴とする請求の範囲第１項に記載のデータ転送方法を提供することにより達成される。
また、上記目的は、請求の範囲第１項において、更に、前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前回読み出された回数と今回読み出された回数を比較し、前記今回読み出された回数が前記前回読み出された回数を上回る場合、前記メモリに転送されたデータに対する処理が続行され、それ以外の場合、前記メモリに転送されたデータに対する処理が終了されるステップを有することを特徴とするデータ転送方法を提供することにより達成される。
また、上記目的は、互いに共用バスを介して接続されたメモリと周辺機器と、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送を制御するＣＰＵを有し、前記ＣＰＵは前記共用バスを介さずに前記メモリにアクセス可能な情報処理端末における、前記メモリと前記周辺機器間の前記共用バスを介したデータ転送の方法であって、前記メモリから前記周辺機器へ転送されたデータに対する処理が該周辺機器にて完了する度に、前記処理の回数が前記メモリに更新記憶されるステップと、前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が前記ＣＰＵにより読み出され、前記回数が所定の回数以上である場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が実行されるステップと、所定のタイミングで、該タイミングまでに前記解放処理が完了したデータの個数を前記回数から減少させ前記メモリに更新記憶させるステップとを有することを特徴とする請求の範囲第３項に記載のデータ転送方法を提供することにより達成される。
また上記目的は、請求の範囲第３項において、更に、前記ＣＰＵにより前記共用バスを介さずに定期的に前記メモリに記憶された前記回数が読み出され、前回読み出された回数と今回読み出された回数を比較し、前記今回読み出された回数が前記前回読み出された回数を上回る場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が続行され、それ以外の場合、前記メモリにて前記周辺機器に転送されたデータが格納された領域の解放処理が終了されるステップを有することを特徴とするデータ転送方法を提供することにより達成される。
【図面の簡単な説明】  図１は、従来例における情報処理端末の構成ブロック図である。
図２は、従来例における情報処理端末の構成ブロックの詳細図である。
図３は、従来例において割り込み要求が送信される様子を説明する図である。
図４は、従来のネットワークから受信したデータをホストメモリにデータ転送する際の処理を示すフローチャートである。
図５は、本発明のデータ転送処理方法が適用される情報処理端末の構成ブロック図である。
図６は、本発明のデータ転送処理方法の概要を説明する図である。
図７は、本発明のデータ転送処理方法の概要を説明する別の図である。
図８は、本発明の第一の実施形態を説明するフローチャートである。
図９は、本発明の第二の実施形態を説明するフローチャートである。
図１０は、本発明の第三の実施形態を説明するフローチャートである。
【発明を実施するための最良の形態】  以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲はかかる実施の形態に限定されるものではない。
本発明の実施形態を説明する前に、比較のため従来例をより詳細に説明する。本発明のデータ転送処理方法の適用は、周辺機器がＮＩＣであることを限定するものではないが、ここでは一例としてＮＩＣとメモリ間のデータ転送について説明する。
図２は、図１の情報処理端末をより詳述する図である。このため、図１と同じ箇所には同じ番号を振り説明を省略する。図２では、ホストメモリ４とＮＩＣ９について説明を追加している。
図２ではホストメモリ４は、ネットワーク１０を介して送受信されるデータが格納される送受信フレーム格納場所４１を含む。ネットワークを介して送受信されるデータとしては、フレームがあり、例えば、１４バイトのＥｔｈｅｒｎｅｔヘッダ、２０バイトのＩＰヘッダ、２０バイトのＴＣＰヘッダ、アプリケーションデータ、４バイトのＥｔｈｅｒｎｅｔトレイラから構成されるＥｔｈｅｒｎｅｔフレーム等がある。
ＮＩＣで受信したフレームはホストメモリにおいて、位置を示す番地（アドレス）と対応付けられて格納される。従って、受信フレームをホストメモリに格納する（書き込む）場合も、格納されたフレームを読み出す場合もアドレスが指定される。また、送受信フレーム格納場所４１は、あるアドレスからから別のアドレスまでの特定の番地範囲で確保されるメモリ領域である。
ＮＩＣ９は、ＮＩＣ全体を制御する制御部９１を有し、その制御部９１は、割り込みレジスタ９４と割り込みマスクレジスタ９５を含む。割り込みレジスタ９４の特定のビットに１が格納されると、そのビットに対応する割り込み要求がＣＰＵ３に送信される。割り込み要因には、例えば、ネットワーク１０から受信したデータをホストメモリ４へ転送完了した場合（外部受信割り込み）や、ネットワーク１０へ送信要求のあったデータを送信完了した場合（外部送信割り込み）等がある。
また、ＮＩＣ９は送受信フレームの（ホストメモリでの）格納先アドレスを格納するメモリ９２とネットワーク１０へ接続するためのインタフェースとなるポート９３を有する。ＮＩＣのメモリ９２は、ネットワーク１０から受信したデータを一時的に格納するバッファとしても使用される。次に図３において、割り込み要求が送信される場合の割り込みレジスタと割り込みマスクレジスタの様子を説明する。
図３は、ＮＩＣから割り込み要求が送信される様子を説明する図である。図３では、２ビットのレジスタが外部送信割り込み、外部受信割り込みの２つの割り込み要因に対応し、他の割り込み要因に対応させるビットについては図示省略している。割り込みレジスタと割り込みマスクレジスタは同じビット位置同士が同じ割り込み要因に対応するものとする。図３Ａのように、割り込みレジスタ９４が１で対応する割り込みマスクレジスタ９５が０の場合、ＣＰＵ３に外部受信割り込み要求が送信されるが、図３Ｂのように対応する割り込みマスクレジスタ９５が１の場合、割り込み要求はブロックされＣＰＵ３に外部受信割り込み要求は送信されない。
例えば外部受信割り込みだと、従来は、ＣＰＵ３が外部受信割り込み処理に入る時点で、外部受信割り込みに対応する割り込みマスクレジスタに１が格納されその後の割り込み要求がブロックされるので、ＣＰＵ３が外部受信割り込み処理を実行中に、更にネットワーク１０から受信したデータ（フレーム）をホストメモリ４へ転送完了しても、ＣＰＵ３に割り込み要求が送信されない。従って、ＣＰＵ３が（割り込み処理に入る原因となった）最初のフレームを処理した後に、新たなフレームがホストメモリ４に転送されていないかを共用バスを介してＮＩＣに確認していた。
図４は、従来のネットワークから受信したデータをホストメモリにデータ転送する際の処理を示すフローチャートである。初期状態では、外部受信割り込みに対応するビットは、割り込みレジスタ、割り込みマスクレジスタにて共に０であるとする。まず、周辺機器（ＮＩＣ）９は、ネットワーク１０から１フレーム分のデータを受信する（Ｓ１）。制御部９１は、必要に応じて受信データをメモリ９２にバッファリングする。
そして、制御部９１はデータ転送を行い、ホストメモリ４にフレームを書き込む（Ｓ２）と共に、受信フレームの格納場所を特定するホストメモリのアドレスを受信フレーム格納先アドレス９７に記憶し（Ｓ３）、割り込みレジスタ９４の外部受信割り込みに対応するビットを１にする（Ｓ４）。ステップＳ４により、制御部９１はホスト２のＣＰＵ３に外部受信割り込みに対する割り込み要求を送信する（Ｓ５）。
ＣＰＵ３は、ＮＩＣ９から外部受信割り込みに対する割り込み要求を受信し、外部受信割り込み処理を開始し、まずＮＩＣ９に対しマスク要求を行う（Ｓ６）。またこの時、後に行う新たなフレームの受信を確認する処理の回数（反腹回数）が初期値に設定される。反腹回数は、ホストメモリ４に変数として格納される。
ＮＩＣの制御部９１はマスク要求を受け、割り込みマスクレジスタ９５の外部受信割り込みに対応するビットを１にする（Ｓ７）。ステップＳ７により、マスク解除があるまで、外部受信割り込みがブロックされることになる。
次に、ＣＰＵ３はＮＩＣ９に対し割り込み解除要求を行う（Ｓ８）。これは、ＣＰＵ３がステップＳ５の割り込み要求に対し割り込み処理に入ったことを示すものである。ＮＩＣ制御部９１は、割り込み解除要求を受け、割り込みレジスタ９４の外部受信割り込みに対応するビットを０に戻す（Ｓ９）。
ステップＳ８の後ＣＰＵ３は、ステップＳ２でホストメモリ４に書き込まれたフレームの格納先を確認する（Ｓ１０）。ＣＰＵ３はステップＳ１０で確認されたアドレスにアクセスし、フレームの処理を行う（Ｓ１１）。ステップＳ１１の処理は、ホストで稼動するアプリケーション毎に異なる処理である。例えば、アプリケーションとしてウェブブラウザが使用される場合、リモートホストのページデータを取得した結果として受信フレームのアプリケーションデータに含まれるデータが、情報処理端末に接続された図示しないディスプレイに整形され表示される。
ＣＰＵ３がステップＳ６からステップＳ１１までの処理を行っている間に、ＮＩＣ９ではネットワーク１０から新たなフレームを受信することがある。ＮＩＣ９では新たなフレームを受信する毎にステップＳ２からステップＳ４までの処理を繰り返し行う（図４における処理Ｒ１）。つまり、新たなフレームを受信するごとにホストメモリ４に受信したフレームを書き込むと共に、受信フレームが格納されたアドレスをＮＩＣ９のメモリ９２に受信フレーム格納先アドレスとして記憶する。そして、割り込みレジスタ９４の外部受信割り込みに対応するビットを１に保つ。
ＣＰＵ３は、ステップＳ１１の処理を完了したら、ＮＩＣ９が更にネットワーク１０から受信したデータをホストメモリ４に転送していないかをＮＩＣ９に確認するため確認要求を送信する（Ｓ１２）。ＮＩＣ９はステップＳ１２の確認要求を受け、割り込みレジスタ９４の値を応答する（Ｓ１３）。そして、ＣＰＵ３は割り込みレジスタ９４の値により新たなフレームの受信があったかを判定する（Ｓ１４）。
もし、ステップＳ９で割り込みレジスタが０に戻された後、新たなフレームを受信していれば、処理Ｒ１において実行されるステップＳ４の処理により、割り込みレジスタ９４の外部受信割り込みに対応するビットが再度１になっている。新たなフレームを受信していなければ、割り込みレジスタは０のままである。
従ってステップＳ１４では、割り込みレジスタの値で新たなフレーム受信の有無を判定できる。ステップＳ１４で新たなフレームを受信していれば、ステップＳ８に戻り、受信フレーム格納先アドレス９７に対応するデータ（フレーム）が処理される。
新たなフレームの確認処理は複数回行われるのが普通である。本実施形態では、確認処理を行う回数がステップＳ６にて反復回数として設定されている。そこで、ステップＳ１４で新たなフレームを受信していない場合、ＣＰＵ３は反復回数が０かを確認する（Ｓ１５）。反復回数が０である場合、所定回数新たなフレームの受信確認を行ったことになるので、ＣＰＵ３は反復回数を初期値に戻し（Ｓ１６）、マスク解除要求を行う（Ｓ１７）。これにより、割り込み処理は終了する。ＮＩＣ制御部９１はマスク解除要求を受け、割り込みマスクレジスタ９５の外部受信割り込みに対応するビットを０に戻し（Ｓ１８）、新たなフレーム受信に備える。ステップＳ１５で反復回数が０で無い場合は、反復回数を１減らし（Ｓ１９）、ステップＳ１２に戻り、新たなフレームの受信確認を行う。
このように、従来においては、ＣＰＵに対する外部受信割り込み要求の送信後、ＣＰＵとＮＩＣ間のデータ通信に共用バスが複数回使用され（ステップＳ５からＳ１１までとＳ１２、Ｓ１３）、またあるフレームを処理中に新たなフレームを受信すると（処理Ｒ１）その確認処理（ステップＳ１２、Ｓ１３）が更に複数回使用されるため、共用バスに接続された他の周辺機器の共用バスの使用率を低下させ情報処理装置の性能が低下する原因となっていた。
ネットワーク１０へ送信要求のあったフレームを送信完了した場合（外部送信割り込み）のフローチャートは図示省略するが同様に、ＣＰＵに対する外部送信割り込み要求の送信後、ＣＰＵとＮＩＣ間のデータ通信に共用バスが複数回使用され、あるフレームを処理中に新たなフレームの送信が完了するとその確認処理が更に複数回使用されるため、共用バスに接続された他の周辺機器の共用バスの使用率を低下させ、情報処理端末全体の性能を低下させていた。
そこで、本発明のデータ転送処理方法は、ＣＰＵに対する割り込み要求の送信後、ＣＰＵと周辺機器間のデータ通信に共用バスが使用される回数を減らすための方法を提供する。そのために、ＮＩＣがネットワークからフレームを受信したら値を受信したフレーム数分増加させ、ＣＰＵが処理したフレーム数分減少させて管理する受信カウンタと、ＮＩＣがネットワークへフレームを送信したら値を送信したフレーム数分増加させ、ＣＰＵが処理したフレーム数分減少させて管理する送信カウンタを有する情報処理端末において、送信カウンタあるいは受信カウンタの値を参照して、未処理フレームの有無を判定し、未処理フレームがあれば割り込み処理を行うことを特徴とする。
図５は、本発明のデータ転送処理方法が適用される情報処理端末１の構成ブロック図である。図５は、図２の構成図と共通する箇所には同じ番号を振り、説明を省略する。図２と異なる箇所について説明する。
ホストのメモリ４には、ネットワーク１０に対して送信したフレーム数を格納する送信カウンタ４２、ネットワーク１０から受信したフレーム数を格納する受信カウンタ４３、送信フレームの格納先のアドレスが格納される送信フレーム格納先アドレス４４を複数格納するためのメモリ領域４６、受信フレームの格納先のアドレスが格納される受信フレーム格納先アドレス４５を複数格納するためのメモリ領域４７、そして送信フレーム、受信フレームが格納される送受信フレーム格納場所４１が含まれる。
ＮＩＣの制御部９１は、レジスタ群を含み、そのレジスタ群に送信カウンタ１０２、ホストメモリの送信カウンタ４２のアドレスが格納される送信カウンタアドレス１００、受信カウンタ１０３、ホストメモリの受信カウンタ４３のアドレスが格納される受信カウンタアドレス１０１、メモリ領域４６の開始アドレスを表す送信フレーム格納先開始アドレス９８、メモリ領域４７の開始アドレスを表す受信フレーム格納先開始アドレス９９が格納される。
図６および図７は、本発明のデータ転送処理方法の概要を説明する図である。図６にあるように、初期設定として、送信カウンタ４２のアドレス（ＯｘＡＡＡＡ）、受信カウンタ４３のアドレス（ＯｘＢＢＢＢ）、送信フレーム格納先アドレス４４が複数格納されるメモリ領域４６の先頭アドレス（ＯｘＣＣＣＣ）、受信フレーム格納先アドレス４５が複数格納されるメモリ領域４７の先頭アドレス（ＯｘＤＤＤＤ）がそれぞれ送信カウンタアドレスレジスタ１００、受信カウンタアドレスレジスタ１０１、送信フレーム格納先開始アドレスレジスタ９８、受信フレーム格納先開始アドレスレジスタ９９に格納される。
周辺機器（ＮＩＣ）において、ネットワーク１０からデータ（フレーム）を受信する度に受信カウンタ１０３の数値を１増やし、ホスト側にその値を通知する。通知された値は、受信カウンタアドレスレジスタ１０１に格納されたホストメモリ４のアドレスに格納される。同様にネットワーク１０へデータを送信する度に送信カウンタ１０２の数値を１増やし、ホスト側にその値を通知する。通知された値は、送信カウンタアドレスレジスタ１０１に格納されたホストメモリ４のアドレスに格納される。
そして、図７にあるように、ホスト側でフレームに対する処理が完了すると、処理したフレーム数が周辺機器（ＮＩＣ）に通知され、対応する送受信カウンタ（１０２、１０３）から処理したフレーム数分減らされると同時にホストメモリ４上の送受信カウンタから処理したフレーム数分減らされる。カウンタの確認処理は、ホスト２のシステムバス６を使用して行われるため共用バスは使用されず、共用バスを介して送信されるカウンタのデータは従来確認処理に伴い送信されるデータに比べればサイズも小さく、頻度も少ないので従来のように共用バスに接続された他の周辺機器の共用バス使用率を低下させることがない。
図８は、本発明のデータ転送処理方法の第一の実施形態を説明するフローチャートで、ネットワークから受信したデータをホストメモリにデータ転送する際の処理である。第一の実施形態においては、ホストメモリ４に確保されたメモリ領域４７の開始アドレス（図５ではＯｘＤＤＤＤ）、受信カウンタ４３のアドレス（図５ではＯｘＢＢＢＢ）が予め周辺機器（ＮＩＣ）に通知され、それぞれ受信フレーム格納先開始アドレス９９、受信カウンタアドレス１０１に格納されるものとする。ＮＩＣ９の受信カウンタ１０３は０に初期化されている。
まず、周辺機器（ＮＩＣ）９は、ネットワーク１０から１フレーム分のデータを受信する（Ｓ２１）。制御部９１はデータ転送を行い、ホストメモリ４にフレームを書き込む（Ｓ２２）と共に、受信カウンタ１０３を加算する（Ｓ２３）。ステップＳ２２により、フレームが送受信フレーム格納場所４１に格納される。ステップＳ２３では１フレーム受信毎に受信カウンタ１０３が１増え、ここでは１フレーム受信したので受信カウンタ１０３が１になる。
そして、制御部９１は受信カウンタ１０３の値をホストメモリに転送し、受信フレームが格納された送受信フレーム格納場所を特定するアドレスをホストメモリの受信フレーム格納先アドレス４５に格納する（Ｓ２４）。ＮＩＣ制御部９１は、受信カウンタアドレス１０１を参照し、受信カウンタ１０３の値をホストメモリ４の受信カウンタ４３に書き込む。また、ＮＩＣ制御部９１は受信フレーム格納先開始アドレス９９（図５ではＯｘＤＤＤＤが格納される）から順に受信フレームが格納された送受信フレーム格納場所４１のアドレスを書き込む。こうしてネットワーク１０から受信したフレームがホストメモリ４に転送されると、受信したフレーム数がホスト側に通知され受信カウンタ４３に格納される。
ＣＰＵ３は定期的に受信カウンタの値を読み出して確認し、割り込み状態にあるかを判定する（Ｓ２５）。第一の実施形態においては、受信カウンタが０であれば割り込み状態になく、受信カウンタが０でなければ割り込み状態にあるように受信カウンタが管理され、従来の割り込みレジスタの機能を果たしている。従来例では、共用バスを介す確認処理含む複数の処理を行う必要があったが（図４ステップＳ５からＳ９）その必要はない。
そして、ステップＳ２５で割り込み状態にないと判定される場合（即ち、受信カウンタの値が０である場合）は、割り込み処理は行われない。ステップＳ２５で割り込み状態にあると判定される場合は、割り込み処理が開始され、ステップＳ２５で読み出された受信カウンタ４３の値を記憶する（Ｓ２６）。
ステップＳ２６を行う理由は、後に再度受信カウンタ４３を読み出した時の値と比較することで新たなフレームがホストメモリに転送されたかどうか判定するためである。ステップＳ２６での受信カウンタの記憶先はホストメモリ４であっても、ＣＰＵ３に備えられた図示しないレジスタでも他の記憶手段でも構わない。
次にＣＰＵ３は受信フレームの格納先アドレスを取得する（Ｓ２７）。ステップＳ２７では、ホストメモリ４のメモリ領域４７の開始アドレス（ＯｘＤＤＤＤ）からステップＳ２６で記憶された受信カウンタ数個のアドレスを読み出せばよい。
そして、ＣＰＵ３は得られたアドレスにアクセスし、受信フレームの処理を行う（Ｓ２８）。ここでの処理は従来例における図４のステップＳ１１で説明したようにアプリケーション毎に異なる処理である。
ステップＳ２８が済むとＣＰＵ３はステップＳ２５で読み出された受信カウンタ数分のフレーム処理が完了したのかを判定する（Ｓ２９）。ステップＳ２９で、ステップＳ２５で読み出された受信カウンタ数分の処理がまだ完了していない場合は、ステップＳ２７に戻り処理が続行され、受信カウンタ数分の処理が完了した場合は、次に受信カウンタ４３を再度読み出す（Ｓ３０）。
ＣＰＵ３がステップＳ２６からステップＳ２８までの処理を行っている間に、ＮＩＣ９でネットワーク１０から新たなフレームを受信することがある。ＮＩＣ９では新たなフレームを受信する毎にステップＳ２２からステップＳ２４までの処理を繰り返し行う（図８における処理Ｒ２）。つまり、新たなフレームを受信する毎にホストメモリ４にそのフレームと、書き込み先のアドレスと受信カウンタが記憶される。
従って、ステップＳ３０で再度受信カウンタ４３を読み出すまでの間に新たなフレームを受信していれば、ステップＳ３０で読み出される受信カウンタ４３の値は、ステップＳ２６で記憶された値より大きい。このことを利用して、新たなフレームを受信したかを判定する（Ｓ３１）。従来例では、新たなフレームの受信を確認するために共用バスを介した処理が必要であったが（図４ステップＳ１２、Ｓ１３）その必要はない。
ステップＳ３１で、新たなフレームの受信があったと判定された場合は、ステップＳ２６に戻り、フレームの処理を続行する。ステップＳ３１で新たなフレームの受信が無かったと判定された場合は、それまでに処理したフレーム数をＮＩＣ９に通知する（Ｓ３２）。これは、ステップＳ３０で読み出された受信カウンタの値をＮＩＣ９に通知すればよい。
ＮＩＣ制御部９１はステップＳ３２で通知された受信カウンタ数分、受信カウンタ１０３の値を減算し（Ｓ３３）、新たなフレーム受信に備える。一方、ＣＰＵ３もステップＳ３２の後、受信カウンタ４３の値を処理したフレーム数分減らし、割り込み処理を終了し（Ｓ３４）、新たな割り込み処理に備える。
上記実施形態によれば、従来割り込みレジスタや割り込みマスクレジスタを用いて、共用バス７を介して行われていた割り込み状態の確認処理（従来のステップＳ５からＳ９までの処理）が、（共用バス７を介さない）システムバス６を介したホストメモリ４への受信カウンタ４３の確認処理（ステップＳ２５）で行われることになり、共用バス７が使用される頻度を低くすることができる。さらに、従来では処理中に新たなフレーム転送が行われた場合の確認処理（従来のステップＳ１２、Ｓ１３）に共用バスが使用されていたが、受信カウンタ４３がホストメモリ４へのフレーム転送完了により更新されることから、この値をシステムバス６を介してホストメモリ４に確認するだけで済むことになり（ステップＳ３１）、共用バスの使用頻度を低くすることができる。また、本実施形態で共用バスを介してやり取りされる受信フレーム以外のデータは、受信カウンタ値と処理したフレーム数値であり、そのデータサイズは小さいので、このデータのやり取りによって他の周辺機器による共用バスの使用を妨げる要因とはならない。
図９は、本発明のデータ転送処理方法の第二の実施形態を説明するフローチャートで、ネットワークへ送信するデータをホストメモリからＮＩＣにデータ転送する際の処理である。第二の実施形態においては、ホストメモリ４に確保されたメモリ領域４６の開始アドレス（図５ではＯｘＣＣＣＣ）、送信カウンタ４２のアドレス（図５ではＯｘＡＡＡＡ）が予め周辺機器（ＮＩＣ）９に通知され、それぞれ送信フレーム格納先開始アドレス９８、送信カウンタアドレス１００に格納されるものとする。送信カウンタは０に初期化されている。
まず、ＣＰＵ３は送信フレームを作成し（Ｓ４１）、制御部９１にネットワークへの送信を命令する。作成される送信フレームはアプリケーションにより異なり、例えば、ウェブブラウザ等によりＨＴＴＰデータを含むＴＣＰ／ＩＰパケットが作成される。ＮＩＣ制御部９１はステップＳ４１で作成された送信フレームをネットワークへ１フレーム送信する（Ｓ４２）と共に、送信カウンタ１０２を加算する（Ｓ４３）。ステップＳ４３では、ネットワークに１フレーム送信される度に送信カウンタの値が１増やされる。
制御部９１は送信カウンタ１０２の値を転送し、送信フレームが格納されていた送受信フレーム格納場所のアドレスを送信フレーム格納先アドレス４５に書き込む（Ｓ４４）。ＮＩＣ制御部９１は、送信カウンタアドレス１００を参照し、送信カウンタ１０２の値をホストメモリ４の受信カウンタ４２に書き込む。
また、ＮＩＣ制御部９１は、ＣＰＵ３によりネットワークへの送信が命令される際に指定される、送信フレームが格納されていた送受信フレーム格納場所４１を特定するアドレスを、送信フレーム格納先開始アドレス９８（図５ではＯｘＣＣＣＣが格納される）から順に書き込む。こうしてネットワークへフレームの送信が完了すると、送信したフレーム数がホスト側に通知され送信カウンタに格納される。
ステップＳ４５以降の処理は、基本的には図８の処理のステップＳ２５以降において「受信」を「送信」と読み替えることで成立する。ＣＰＵ３は定期的に送信カウンタの値を読み出して確認し、割り込み状態にあるかを判定する（Ｓ４５）。ステップＳ４５で割り込み状態にないと判定される場合（即ち、送信カウンタの値が０である場合）は、割り込み処理は行われない。ステップＳ４５で割り込み状態にあると判定される場合は、割り込み処理が開始され、ステップＳ４５で読み出された送信カウンタ４２の値を記憶する（Ｓ４６）。
次にＣＰＵ３は送信フレームの格納先アドレスを取得する（Ｓ４７）。そして、ホストは得られたアドレスにアクセスし、受信フレームの処理を行う（Ｓ４８）。ステップＳ４８での処理により例えば、送信フレーム格納先アドレス４４により指定されるアドレスが解放される。
ステップＳ４８が済むとＣＰＵ３はステップＳ４５で読み出された送信カウンタ数分のフレーム処理が完了したのかを判定する（Ｓ４９）。ステップＳ４９でステップＳ４５で読み出された送信カウンタ数分の処理がまだ完了していない場合は、ステップＳ４７に戻り処理が続行され、送信カウンタ数分の処理が完了した場合は、次に送信カウンタ４２を再度読み出す（Ｓ５０）。
ＣＰＵ３がステップＳ４６からＳ４８までの処理を行っている間に、ＮＩＣ９でネットワーク１０へ新たなフレームを送信することがある。ＮＩＣ９では新たなフレームを送信する毎にステップＳ４２からステップＳ４４までの処理を繰り返し行う（図７における処理Ｒ３）。つまり、新たなフレームを送信する毎にホストメモリに、送信フレームが格納されていた格納場所を特定するアドレスと送信カウンタが記憶される。
従って、ステップＳ５０で再度送信カウンタ４２を読み出すまでの間に新たなフレームを送信していれば、ステップＳ５０で読み出される送信カウンタ４２の値は、ステップＳ４６で記憶された値より大きい。このことを利用して、新たなフレームを送信したかを判定する（Ｓ５１）。ステップＳ５１で、新たなフレームの送信があったと判定された場合は、ステップＳ４６に戻り、フレームの処理を続行する。
ステップＳ５１で新たなフレームの送信が無かったと判定された場合は、それまでに処理したフレーム数をＮＩＣ９に通知する（Ｓ５２）。これは、ステップＳ５０で読み出された送信カウンタの値をＮＩＣ９に通知すればよい。ＮＩＣ制御部９１はステップＳ５２で通知された送信カウンタ数分、送信カウンタ１０２の値を減算し（Ｓ５３）、新たなフレーム送信に備える。一方、ＣＰＵ３もステップＳ５２の後、送信カウンタ４２の値を処理したフレーム数分減らし、割り込み処理を終了し（Ｓ５４）、新たな割り込み処理に備える。
上記第二の実施形態においても、第一の実施形態と同様の効果が得られる。つまり、従来割り込みレジスタや割り込みマスクレジスタを用いて、共用バス７を介して行われていた割り込み状態の確認処理が、（共用バス７を介さない）システムバス６を介したホストメモリ４への送信カウンタ４２の確認処理（ステップＳ４５）で行われることになり、共用バス７が使用される頻度を低くすることができる。さらに、従来では処理中に新たなフレーム転送が行われた場合の確認処理に共用バスが使用されていたが、送信カウンタ４２がネットワークへのフレーム送信完了により更新されることから、この値をシステムバス６を介してホストメモリ４に確認するだけで済むことになり（ステップＳ５１）、共用バスの使用頻度を低くすることができる。また、本実施形態で共用バスを介してやり取りされる送信フレーム以外のデータは、送信カウンタ値と処理したフレーム数値であり、そのデータサイズは小さいので、このデータのやり取りによって他の周辺機器による共用バスの使用を妨げる要因とはならない。
なお、上記第一および第二の実施形態においては、ホストメモリに通知された送受信カウンタ（４２、４３）をＣＰＵが判定することにより割り込み状態にあるかを判定したが、周辺機器（ＮＩＣ）の送受信カウンタ（１０２、１０３）がゼロでなくなったらＣＰＵに割り込み要求を送信し、送受信カウンタがゼロになったとき割り込み解除要求を送信する手段を用いることにより、ＣＰＵが割り込み要求を受信後、割り込み解除要求を受信するまでを割り込み状態として割り込み処理を行うこともできる。この場合、ホストメモリに送信カウンタ４２、受信カウンタ４３を記憶する必要もなくなる。以下に第三の実施形態としてネットワークから受信したデータをホストメモリにデータ転送する際の処理について説明する。
図１０は、本発明の第三の実施形態を説明するフローチャートである。第三の実施形態においても、第一および第二の実施形態と同様に管理されるため、受信カウンタの値が未処理フレームの個数を示す。第三の実施形態は、第一の実施形態（図８）と類似しており、同じステップには同じステップ番号が振られ、説明は略している。まず、周辺機器（ＮＩＣ）９は、ネットワーク１０から１フレーム分のデータを受信する（Ｓ２１）。制御部９１はデータ転送を行い、ホストメモリ４にフレームを書き込む（Ｓ２２）と共に、受信カウンタ１０３を加算する（Ｓ２３）。これは図６の処理と同じである。
次に、制御部９１は割り込み状態に突入するかを判定する（Ｓ１０１）。ステップＳ１０１では、もともと割り込み状態にあったのか、割り込み状態に初めて突入したのかを判定する。受信カウンタ加算後の判定なので、この時点で受信カウンタが１であれば割り込み状態に初めて突入したことがわかる。従って、受信カウンタが１であれば、ＮＯの処理に進み、割り込み要求をする（Ｓ１０２）が、受信カウンタが１以外であればステップＳ１０２は省略され、特に何もしない。
ステップＳ１０２の後、ＮＩＣ９でネットワーク１０から新たなフレームを受信することがある。ＮＩＣ９では新たなフレームを受信する毎にステップＳ２２、Ｓ２３、Ｓ１０１の処理を繰り返し行う（図１０における処理Ｒ４）。つまり、新たなフレームを受信する毎にホストメモリにそのフレームと、書き込み先のアドレスが記憶され、割り込み状態の判定が行われる。
次にＣＰＵ３は受信フレームの格納先アドレスを取得し（Ｓ２７）、ホストは得られたアドレスにアクセスし、受信フレームの処理を行う（Ｓ２８）。ステップＳ２７、Ｓ２８の処理をメモリ領域４７に格納されたアドレス数分繰り返す。そして、処理したフレーム数をＮＩＣ９に通知する（Ｓ３２）。
ＮＩＣ制御部９１はステップＳ３２で通知された受信カウンタ数分、受信カウンタ１０３の値を減算し（Ｓ３３）、再度割り込み状態にあるか判定する（Ｓ１０３）。ここでは、割り込み状態から脱却するかを判定する。減算後のカウンタがゼロで無ければ、処理すべきフレームが残っていないことになる。従って、減算後のカウンタがゼロであれば、ステップＳ１０３ではＮＯに進み、割り込み解除をし（Ｓ１０４）、カウンタがゼロでなければ新たなフレーム受信に備える。ＣＰＵ３は、割り込み解除を検出して割り込み処理を終了し、中断していた通常処理を再開する。
こうして、受信カウンタ１０３の値がゼロで無い間割り込み状態を保ち、ゼロになったら割り込み状態を解除する手段として周辺機器の制御部９１を用いることで、第一、第二の実施形態同様、共用バスを介した処理を従来より抑え、他の周辺機器の共用バス使用率を妨げることのないデータ転送方法を提供することができる。
第三の実施形態においては、従来受信フレームの格納先を確認するために共用バス９を介してＮＩＣに確認する処理が、ホストメモリ４を参照するだけで済む。また受信カウンタを用いて割り込み状態が判定され、やはり共用バスを介したアクセスを減らすことができる。第三の実施形態は、ネットワークからデータを受信する際の処理であるが、ネットワークへデータを送信する際も第三の実施形態と同様に本発明を適用可能である。
以上のように、本発明では、従来データ転送処理において（１）割り込みレジスタや割り込みマスクレジスタを用いて、共用バス７を介して行われていた割り込み状態の確認処理、（２）処理中に新たなフレーム転送が行われた場合の確認処理、をする際に共用バスを介して行われる処理を、共用バスを介さずに行うことができる。こうして、データ転送処理において共用バスを介したアクセスを減らすことにより、ある周辺機器が同じ共用バスに接続された他の周辺機器に対する共用バスの使用率を低下させることがない。そして、その結果情報処理端末全体の性能を低下させることもない。また、現状共用バスに接続された周辺機器が１つしかないとしても、将来周辺機器を増設した際に情報処理端末の性能の低下を招くことがない。
なお、本実施形態においては、周辺機器のうち特にＮＩＣについて本発明を適用したが、周辺機器からホストメモリへのデータ転送完了若しくはホストメモリから周辺機器に転送されたデータについての処理完了につき、ＣＰＵに割り込み要求され、ＣＰＵが、割り込み処理の実行中に新たなデータがホストメモリに転送されたか若しくはホストメモリから転送されたかを、周辺機器に確認する場合であれば、本発明の適用が可能である。
【産業上の利用の可能性】
本発明のデータ転送処理方法は、共用バスを介してメモリと周辺機器がデータ転送を行い、メモリへのデータ転送完了後あるいはメモリから転送されたデータの処理完了後にＣＰＵへの割り込み要求が発生する情報処理端末に適用することで、データ転送処理に伴う情報処理性能の低下を防ぐことができる。また、現状共用バスに接続された周辺機器が１つとしても、将来周辺機器を増設した際に情報処理端末の性能の低下を招くことがない。
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図１】
2005013137.tif 000003
【図２】
2005013137.tif 000004
【図３】
2005013137.tif 000005
【図４】
2005013137.tif 000006
【図５】
2005013137.tif 000007
【図６】
2005013137.tif 000008
【図７】
2005013137.tif 000009
【図８】
2005013137.tif 000010
【図９】
2005013137.tif 000011
【図１０】
2005013137.tif 000012
【国際調査報告】
2005013137.tif 000013
2005013137.tif 000014