(57)【要約】【課題】  タイマ処理を行う際に必要となる高速アクセス可能なメモリの必要量が増えてしまうと、製品コストが増加するという課題があった。【解決手段】  タイマに用いられるカウントの上位ビットを記憶する第１のメモリと、前記カウント値の下位ビットを記憶し、前記第１のメモリによりも高速にアクセス可能な第２のメモリと、前記第２のメモリに記憶された前記下位ビットに対し、所定の周期で第１の所定の演算を行う第１の演算手段と、前記第２のメモリに記憶された前記下位ビットが所定の値になったことに応じて前記第１のメモリに記憶された前記上位ビットに対して第２の所定の演算を行う第２の演算手段と、を有する。【選択図】  図３
2016081239.tif 000002
【特許請求の範囲】
【請求項１】
所定の時間を計測するために用いられるカウント値の上位ビットを記憶する第１のメモリと、
前記カウント値の下位ビットを記憶し、前記第１のメモリよりも高速にアクセス可能な第２のメモリと、
前記第２のメモリに記憶された前記下位ビットに対し、所定の周期で第１の所定の演算を行う第１の演算手段と、
前記第２のメモリに記憶された前記下位ビットが所定の値になったことに応じて前記第１のメモリに記憶された前記上位ビットに対して第２の所定の演算を行う第２の演算手段と、
前記第１のメモリに記憶された前記上位ビットの値と、前記第２のメモリに記憶された前記下位ビットの値と、に基づいて所定の時間が経過したことを判定する判定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第１の所定の演算は、前記下位ビットに対するデクリメントであり、
前記第２の所定の演算は、前記上位ビットに対するデクリメントであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の所定の演算は、前記下位ビットに対するインクリメントであり、
前記第２の所定の演算は、前記下位ビットに対するインクリメントであることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記下位ビットが０になったことに応じて、前記第２の演算手段は、前記上位ビットに対して前記第２の所定の演算を行うことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記判定手段は、前記上位ビットおよび前記下位ビットの値が０になった場合にタイムアウトを判定することを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第２のメモリは、前記上位ビットの状態を示すフラグを記憶することを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記フラグは、前記上位ビットの値が０であるか否かを示すフラグであることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記判定手段は、前記下位ビットの値と前記フラグとに基づいて前記所定の時間が経過したことを判定することを特徴とする請求項６または７に記載の情報処理装置。
【請求項９】
前記所定の時間を計測するために用いられるカウントを前記上位ビットと前記下位ビットに分割する分割手段を更に有することを特徴とする請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記分割手段は、前記所定の周期の長さに基づいて、前記所定の時間を計測するために用いられるカウントを前記上位ビットと前記下位ビットに分割することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
所定の時間を計測するために用いられるカウント値の上位ビットを記憶する第１のメモリと、
前記カウント値の下位ビットを記憶し、前記第１のメモリよりも高速にアクセス可能な第２のメモリと、
前記第２のメモリに記憶された前記下位ビットに対し、所定の周期で第１の所定の演算を行う第１の演算手段と、
前記第２のメモリに記憶された前記下位ビットが所定の値になったことに応じて前記第１のメモリに記憶された前記上位ビットに対して第２の所定の演算を行う第２の演算手段と、
前記第１のメモリに記憶された前記上位ビットの値と、前記第２のメモリに記憶された前記下位ビットの値と、に基づいて所定の時間が経過したことを判定する判定手段と、
を有することを特徴とするタイマ。
【請求項１２】
第１のメモリと前記第１のメモリよりも高速にアクセス可能な第２のメモリとを有する情報処理装置を制御する制御方法であって、
所定の時間を計測するために用いられるカウントの上位ビットを前記第１のメモリに記憶させる第１の記憶工程と、
前記カウントの下位ビットを前記第２のメモリに記憶させる第２の記憶工程と、
前記第２のメモリに記憶された前記下位ビットに対し、所定の周期で第１の所定の演算を行う第１の演算工程と、
前記第２のメモリに記憶された前記下位ビットが所定の値になったことに応じて前記第１のメモリに記憶された前記上位ビットに対して第２の所定の演算を行う第２の演算工程と、
前記第１のメモリに記憶された前記上位ビットの値と、前記第２のメモリに記憶された前記下位ビットの値と、に基づいて所定の時間が経過したことを判定する判定工程と、
を有することを特徴とする制御方法。
【請求項１３】
コンピュータに請求項１２に記載の制御方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリを使用したタイマ回路、およびその制御方法に関する。
【背景技術】
【０００２】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコル処理では、多くのタイマが利用されている。
【０００３】
複数のタイマを管理するために、複数のタイマの各々のカウント値をメモリに格納し、メモリに格納されたカウント値を所定時間毎に加算もしくは減算することで、タイマ機能を達成する技術がある（特許文献１）。
【０００４】
ＴＣＰ／ＩＰで用いられるタイマでは、例えば、１０μｓ（マイクロ秒）毎にカウント値を加算もしくは減算している。このような短周期でカウント値を加算もしくは減算できるようにするために、カウント値を格納するメモリは高速にアクセス可能なメモリ（高速メモリ）が用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平２−２１９１１８
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、タイマの数が増加した場合、タイマに用いられるカウンタのビット数が多くなってしまう。また、タイマに要求される時間レンジが長くなった場合も、タイマに用いられるカウンタのビット数が多くなってしまう。また、タイマに要求される精度が更に高くなった場合にも、タイマに用いられるカウンタのビット数が多くなってしまう。
【０００７】
このように、タイマ処理を行う際に必要となる高速アクセス可能なメモリの必要量が増えてしまうと、製品コストが増加するという課題があった。
【０００８】
上記課題を鑑み、本発明は、複数のメモリを用いてタイマを構成する際に、高速にアクセス可能なメモリの容量を削減することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を鑑み、本発明の情報処理装置は、所定の時間を計測するために用いられるカウント値の上位ビットを記憶する第１のメモリと、前記カウント値の下位ビットを記憶し、前記第１のメモリよりも高速にアクセス可能な第２のメモリと、前記第２のメモリに記憶された前記下位ビットに対し、所定の周期で第１の所定の演算を行う第１の演算手段と、前記第２のメモリに記憶された前記下位ビットが所定の値になったことに応じて前記第１のメモリに記憶された前記上位ビットに対して第２の所定の演算を行う第２の演算手段と、記第１のメモリに記憶された前記上位ビットの値と、前記第２のメモリに記憶された前記下位ビットの値と、に基づいて所定の時間が経過したことを判定する判定手段と、を有する。
【発明の効果】
【００１０】
本発明によれば、複数のメモリを用いてタイマを構成する際に、高速にアクセス可能なメモリの容量を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置１０１のブロック構成図
【図２】タイマ装置１３９のレジスタ構成図
【図３】タイマモジュール１４３が実現するフローチャート
【図４】タイマ装置１３９の動作を示すシーケンスチャート
【発明を実施するための形態】
【００１２】
図１に本実施形態の情報処理装置１０１のハードウェア構成を示す。情報処理装置１０１は、主処理部（メインシステム）１１１と通信処理部（サブシステム）１１２とを有する。
【００１３】
主処理部１１１は、情報処理装置１０１に特有の機能を制御する。情報処理装置１０１に特有の機能とは、例えば、情報処理装置１０１がプリンタであれば印刷機能、情報処理装置１０１がカメラであれば撮像機能である。
【００１４】
主処理部１１１には、メインメモリ１２１、および、メインＣＰＵ１２２が含まる。メインメモリ１２１、および、メインＣＰＵ１２２は、メインバス１２３を介して接続されている。主処理部１１１に、更に不図示の機能部が含まれるようにしてもよい。機能部とは、例えば、情報処理装置１０１がプリンタであれば印刷部、情報処理装置１０１がカメラであれば撮像部である。
【００１５】
メインメモリ１２１には、メインＣＰＵ１２２および後述するサブＣＰＵ１３１〜１３５、タイマモジュール１４３が実行するプログラム等が格納されている。また、メインメモリ１２１は各種プログラム実行時のバッファメモリとしても利用される。更に、メインメモリ１２１はタイマカウント値の格納場所としても利用される。
【００１６】
通信処理部１１２は、ＴＣＰ／ＩＰ処理を実行するＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）として機能する。通信処理部１１２には、サブＣＰＵ１３１〜１３５、データ転送部１３６、通信インターフェイス（以下、通信ＩＦ）１３７、タイマ装置１３９、および、周期生成部１３８が含まれる。更に、通信処理部１１２には、サブＣＰＵ１３１〜１３５、データ転送部１３６、および、タイマ装置１３９を接続するローカルバス１４０が含まれる。
【００１７】
サブＣＰＵ１３１は、サブＣＰＵ１３２〜１３５を制御する。サブＣＰＵ１３１はＴＣＰにおける送信処理を行う。具体的には、サブＣＰＵ１３１はＴＣＰに準拠したヘッダを生成し、ＴＣＰパケットを生成する。サブＣＰＵ１３２はＩＰにおける送信処理を行う。具体的には、サブＣＰＵ１３２はＩＰに準拠したヘッダを生成し、ＩＰパケットを生成する。サブＣＰＵ１３３はＩＰにおける受信処理を行う。また、サブＣＰＵ１３４はＴＣＰにおける受信処理を行う。これらのサブＣＰＵは、メインメモリ１２１に記憶されたプログラムを読み出して実行することで上述の処理を実現する。
【００１８】
データ転送部１３６は、通信ＩＦ１３７と主処理部１１１との間、および、通信ＩＦ１３７とサブＣＰＵ１３１〜１３５との間でデータを転送する。通信ＩＦ１３７は、不図示の外部装置と有線通信や無線通信を行う。有線通信としてはＩＥＥＥ８０２．３に準拠した通信を行うことが可能である。また、無線通信としてはＩＥＥＥ８０２．１１シリーズに準拠した通信を行うことが可能である。
【００１９】
周期生成部１３８は、所定の周期でパルス信号（周期信号）を生成する。ここでは、周期生成部１３８は１０μｓ（マイクロ秒）毎にパルス信号を生成する。このパルス信号の生成周期によって、タイマの精度が決定される。生成されたパルス信号は、後述するタイマ装置１３９に入力される。なお、パルス信号の生成周期を変更することも可能である。例えば、求められるタイマ精度が高い場合には、パルス信号の生成周期を短くし、タイマ精度が低い場合にはパルス信号の生成周期を長くする。
【００２０】
タイマ装置１３９は、サブＣＰＵ１３１〜１３５から発行されるリクエスト（要求）に従って、指定された時間を計測する。更に、タイマ装置１３９は、指定された所定の時間が経過すると（タイムアウトすると）、その旨をリクエスト発行元などのサブＣＰＵに通知する。
【００２１】
タイマ装置１３９には、レジスタ部１４１、タイマ制御部１４２、タイマモジュール１４３、および、内部メモリ１４４が含まれる。タイマモジュール１４３には、更に、外部メモリアクセス部１５１、上位フラグ１５２、および、内部メモリアクセス部１５３が含まれる。
【００２２】
図２に、レジスタ部１４１の内部構成を示す。レジスタ部１４１には、タイマリクエストレジスタ２０１とタイムアウトレジスタ２０２とが含まれる。各サブＣＰＵは、タイマリクエストレジスタ２０１のいずれかの領域にタイマリクエストを書き込むことで、タイマを起動させることができる。タイマリクエストの書き込みにより、各タイマユニット内で指定されたタイマＩＤ（後述）を持つタイマにカウント値がセットされタイマがスタートする。
【００２３】
タイマリクエストレジスタ２０１の各々は、タイマＩＤ（識別子）２１１とカウント値２１２とから構成される。タイマＩＤ２１１は、タイマを識別するための識別番号である。カウント値２１２は、タイマがタイムアウトするまでの時間を示す値である。
【００２４】
タイムアウトレジスタ２０２の各々には、タイムアウトしたタイマのタイマＩＤが書き込まれる。各サブＣＰＵは、タイムアウトレジスタ２０２を読み出すことにより、自身がセットしたタイマがタイムアウトしたことを確認することができる。
【００２５】
なお、これに代えて、タイマ装置１３９が各サブＣＰＵにタイムアウトしたことをプッシュ通知するように構成してもよい。このようにしても、各サブＣＰＵは自身がセットしたタイマがタイムアウトしたことを確認することができる。
【００２６】
タイマ制御部１４２は、サブＣＰＵによりタイマリクエストレジスタ２０１へタイマリクエストが書き込みされたことに応じて、タイマモジュール１４３へ、タイマの起動通知を行う。ここで、起動通知にはタイマＩＤとカウント値の情報が含まれる。
【００２７】
また、タイマ制御部１４２は、タイマモジュール１４３からタイムアウト通知（タイマがタイムアウトしたことを示す通知）を受信した場合、タイムアウトレジスタ２０２にタイムアウトしたタイマＩＤの書き込みを行う。
【００２８】
タイマモジュール１４３は、タイマ制御部１４２からタイマの起動通知を受信すると、該起動通知に従ってタイマＩＤに対応するメモリ領域にカウント値をセットし、タイマ処理を開始する。
【００２９】
本実施形態では、カウント値は２４ビット（ｂｉｔ）で構成されるものとし、カウント値の上位１６ビットはメインメモリ１２１に格納され、下位８ビットについては内部メモリ１４４に格納される。また、各々のメモリにおける格納場所（メモリ領域）は、タイマＩＤ毎に予め定められているものとする。
【００３０】
しかし、これに限らず、各々のメモリにおける格納場所（メモリ領域）を動的に確保し、タイマＩＤと共にカウント値を格納するようにしてもよい。この場合、タイマがタイムアウトしたことに応じて確保した格納場所（メモリ領域）を解放する。これにより、起動しているタイマの数に応じた格納場所（メモリ領域）だけが確保されるので、メモリの利用効率を上げることができる。
【００３１】
タイマモジュール１４３には、メインメモリ１２１にアクセスするための外部メモリアクセス部１５１と、内部メモリ１４４にアクセスするための内部メモリアクセス部１５３を含む。なお、内部メモリアクセス部１５３による内部メモリ１４４へのアクセス速度よりも、外部メモリアクセス部１５１によるメインメモリ１２１へのアクセス速度の方が遅い。即ち、内部メモリ１４４へのアクセス速度の方が、メインメモリ１２１へのアクセス速よりも早い。
【００３２】
更に、タイマモジュール１４３にはタイマＩＤ毎にカウント値の上位１６ビット（メインメモリ１２１に格納されるビット）の値が０（全てのビットが０）である否かを示す上位フラグ１５２が含まれる。ここでは、上位１６ビットの値が０である場合には上位フラグを０とし、上位１６ビットの値が０でない場合には上位フラグを１とする。
【００３３】
タイマモジュール１４３は、周期生成部１３８からパルス信号が入力される度に、所定の演算を行う。ここでは、タイマモジュール１４３は、周期生成部１３８からパルス信号が入力される度にメモリ領域からカウント値を読み出し、読み出した値をデクリメントして書き戻す。デクリメントした結果、カウント値が０になった場合、タイマモジュール１４３は、０になったカウント値に対応するタイマＩＤのタイマがタイムアウトしたと判定する。タイマモジュール１４３の動作について、図３を用いて詳細に説明する。
【００３４】
図３に、タイマ処理が開始される際に、タイマモジュール１４３がメインメモリ１２１からプログラムを読み出して実行することにより実現されるフローチャートを示す。
【００３５】
タイマモジュール１４３は、タイマ制御部１４２からタイマの起動通知を受信すると、タイマ処理を開始する（Ｓ３００）。ここではカウント値は２４ビットで指定されるものとし、以後、上位１６ビットを上位ビット、下位８ビットを下位ビットと称する。
【００３６】
タイマ処理が開始されると、タイマモジュール１４３は起動通知に含まれるカウント値の上位ビットが０であるか否かを判定する（Ｓ３０１）。ここで、上位ビットが０であるとは、カウント値の上位１６ビットが全て０である場合である。
【００３７】
上位ビットが０である場合（Ｓ３０１のＹｅｓ）、タイマモジュール１４３は当該タイマＩＤに対応する上位フラグ１５２に、上位ビットの値が０であることを示す０を格納する（Ｓ３０２）。
【００３８】
一方、上位ビットが０でない場合（Ｓ３０１のＮｏ）、外部メモリアクセス部１５１は上位ビットの値をメインメモリ１２１に格納する（Ｓ３０３）。この際、外部メモリアクセス部１５１は、メインメモリ１２１において、起動通知に含まれるタイマＩＤに対応するメモリ領域に、上位ビットの値を格納する。そして、タイマモジュール１４３は当該タイマＩＤに対応する上位フラグ１５２に、上位ビットの値が０でないことを示す１を格納する（Ｓ３０４）。
【００３９】
上述のようにして上位フラグ１５２への値の格納が完了すると、内部メモリアクセス部１５３は下位ビットの値を内部メモリ１４４に格納する（Ｓ３０５）。この際、内部メモリアクセス部１５３は、内部メモリ１４４において、起動通知に含まれるタイマＩＤに対応するメモリ領域に、下位ビットの値を格納する。
【００４０】
その後、タイマモジュール１４３は周期生成部１３８からのパルス信号が入力を待ち受ける（Ｓ３０６）。なお、当該待ち受けに並行して、タイマモジュール１４３は他のタイマの起動通知の待ち受けも行う。これにより、複数のタイマを並行して起動させることができる。また、当該待ち受けに並行して、タイマモジュール１４３は既に起動されているタイマＩＤを指定してリセットを要求するリセット要求の待ち受けも行う。リセット要求を受信すると、タイマモジュール１４３は、リセット要求により指定されたタイマＩＤに対応するタイマ処理を停止する。これにより、不要なタイマ処理を削減することができる。
【００４１】
Ｓ３０６において、周期生成部１３８からパルス信号を受信すると（Ｓ３０６のＹｅｓ）、内部メモリアクセス部１５３は、起動中のタイマＩＤに対応するメモリ領域に格納された下位ビットの値をデクリメントする（Ｓ３０７）。ここで、下位ビットの値が０（全てのビットで０）であった場合には、デクリメントの結果、下位ビットにおける全てのビットは１となるものとする。例えば、下位ビットが３ビットであり、デクリメント前の下位ビットの値が「０００」であった場合、Ｓ３０７におけるデクリメントの結果、下位ビットの値は「１１１」となる。
【００４２】
デクリメント処理が完了すると、タイマモジュール１４３は、デクリメント処理後の下位ビットの値が０（全てのビットで０）であるか否かを判定する（Ｓ３０８）。デクリメント処理後の下位ビットの値が０でない場合（Ｓ３０８のＮｏ）、ステップＳ３０６に戻り、タイマ処理を継続する。
【００４３】
一方、デクリメント処理後の下位ビットの値が０である場合（Ｓ３０８のＹｅｓ）、タイマモジュール１４３は、タイマＩＤに対応する上位フラグ１５２の値が１であるか否かを判定する（Ｓ３０９）。即ち、上位ビットの値が０であるか否かを判定する。
【００４４】
上位フラグの値が１でない（即ち、０である）場合（Ｓ３０９のＮｏ）、タイマモジュール１４３は、カウント値が０となったタイマＩＤについて、タイマ制御部１４２に対してタイムアウトを通知する（Ｓ３１０）。なお、カウント値が０となったタイマＩＤとは、下位ビットも上位ビットも０となったタイマＩＤである。その後、図３に示す処理を完了する。
【００４５】
一方、上位フラグの値が１である場合（Ｓ３０９のＹｅｓ）、外部メモリアクセス部１５１はタイマＩＤに対応する上位ビットの値をデクリメントする（Ｓ３１１）。そして、上位ビットへのデクリメントの結果、上位ビットの値が０であるか否かをタイマモジュール１４３が判定する（Ｓ３１２）。
【００４６】
上位ビットの値が０でない場合（Ｓ３１２のＮｏ）、ステップＳ３０６に戻り、タイマ処理を継続する。一方、上位ビットの値が０となった場合（Ｓ３１２のＹｅｓ）、タイマモジュール１４３は当該タイマＩＤに対応する上位フラグ１５２に、上位ビットの値が０であることを示す０を格納する（Ｓ３１３）。その後、ステップＳ３０６に戻り、タイマ処理を継続する。
【００４７】
図３のフローの結果、タイマ値がどのように変化するかを簡単に述べる。ここでは、下位ビットは３ビットであるものとする。例としてタイマ値が２進数で「１００１」である状態から開始する。この時、上位フラグは「１」である。ここで、パルス信号を受信すると（Ｓ３０６）、タイマ値はデクリメントされ「１０００」となる（Ｓ３０７）。その結果、下位ビットの値は「０００」となり、Ｓ３０７から、Ｓ３０８、Ｓ３０９、Ｓ３１１と順に進む。Ｓ３１１の結果、上位ビットがデクリメントされるので、タイマ値は「００００」となって、Ｓ３０６に戻る。この時、上位ビットは「０」となる（Ｓ３１２）。その後、パルス信号を受信すると（Ｓ３０６）、タイマ値はデクリメントされ「０１１１」となる（Ｓ３０７）。その後は、パルス信号を受信する度にＳ３０７において下位ビットがデクリメントされ、デクリメントの結果、タイマ値が「００００」となると、タイムアウト通知が行われる（Ｓ３１０）。
【００４８】
このように、タイマ処理で用いられるカウント値を上位ビットと下位ビットとに分割し、上位ビットの値をメインメモリ１２１に格納し、下位ビットの値を内部メモリ１４４に格納する。これにより、高速にアクセス可能な内部メモリにおいてタイマ処理のために用いられるメモリ領域を削減させることができる。
【００４９】
また、パルス信号を受信する度にＳ３０７において下位ビットがデクリメントされる際には、高速にアクセス可能な内部メモリのみが操作され、メインメモリ１２１は操作されないので処理を高速に行うことができる。
【００５０】
次に、図４を用いて、サブＣＰＵ１３１とサブＣＰＵ１３４とがタイマ装置１３９を利用してタイマ処理を実行させる場合について説明する。この時、タイマ装置１３９のタイマモジュール１４３は、図３に示すフローチャートに示す処理を実行する。
【００５１】
サブＣＰＵ１３１はＴＣＰに関する送信処理を実行し、サブＣＰＵ１３４はＴＣＰに関する受信処理を実行する。ＴＣＰ通信では、受信側が受信したパケットに対するＡｃｋ（確認応答）を送信側へ送信しなければならない。この時、パケットを受信する度にＡｃｋを送信するのではなく、複数のパケット受信に対し１つのＡｃｋを送信する遅延Ａｃｋが知られている。遅延Ａｃｋ処理では、所定数のパケットを受信する前に所定時間が経過すると、その時点でＡｃｋを送信する必要がある。ここでは、遅延Ａｃｋ処理を行う際に必要となるタイマ処理を例に説明する。
【００５２】
通信ＩＦ１３７を介してＴＣＰ／ＩＰパケットを受信すると、データ転送部１３６はサブＣＰＵ１３４に対して受信通知を行う（Ｆ４０１）。サブＣＰＵ１３４は、受信通知を受けると、遅延Ａｃｋ処理に必要な所定時間を計測するために、タイマリクエストレジスタ２０１に該所定時間に対応するカウント値を書き込む（Ｆ４０２）。タイマ装置１３９は、タイマリクエストレジスタ２０１にカウント値が書き込まれたことに応じて、タイマ処理を開始する（Ｆ４０３）。
【００５３】
サブＣＰＵ１３４は、更に、カウント値を書き込んだタイマＩＤをサブＣＰＵ１３１に通知する（Ｆ４０４）。サブＣＰＵ１３１は、当該通知を受けて、タイムアウトレジスタ２０２を定期的に確認するポーリング処理を開始する（Ｆ４０５）。その後、次のＴＣＰ／ＩＰパケットを受信することなく遅延Ａｃｋ処理に必要な所定時間が経過すると、タイムアウトが発生する（Ｆ４０６）。タイムアウトが発生すると、サブＣＰＵ１３１はこれを検出し（Ｆ４０７）、遅延Ａｃｋの送信処理を行う（Ｆ４０８）。なお、遅延Ａｃｋの送信処理に必要な情報は別途、サブＣＰＵ１３４からサブＣＰＵ１３１に通知されているものとする。
【００５４】
次に、連続してＴＣＰ／ＩＰパケットを受信する場合について説明する。なお、ここでは、２つのＴＣＰ／ＩＰパケットを受信すると１つのＡｃｋを送信するものとして説明する。また、Ｆ４０９〜４１３は各々、Ｆ４０１〜４０５と同様なので、ここでは説明を省略する。
【００５５】
Ｆ４１３の後、遅延Ａｃｋ処理に必要な所定時間が経過するより前に、通信ＩＦ１３７は次のＴＣＰ／ＩＰパケットを受信する。すると、データ転送部１３６はサブＣＰＵ１３４に対して受信通知を行う（Ｆ４１４）。
【００５６】
この場合、２つ目のＴＣＰ／ＩＰパケットを受信したことにより、すぐにＡｃｋを送信する状態となったため、遅延Ａｃｋ処理に必要な所定時間を計測する必要が無くなる。従って、サブＣＰＵ１３４は、タイマ装置１３９に対してリセット要求を送信する（Ｆ４１５）。これにより、タイマ装置１３９による無駄なタイマ処理を少なくすることができる。
【００５７】
その後、サブＣＰＵ１３４はサブＣＰＵ１３１に対してＡｃｋの送信を要求する（Ｆ４１６）。サブＣＰＵ１３１はＡｃｋ送信の要求を受けると、Ｆ４１３により開始したポーリング処理を停止し（Ｆ４１７）、遅延Ａｃｋの送信処理を行う（Ｆ４１８）。
【００５８】
このようにタイマＩＤをサブＣＰＵ間で通知することで、タイマのセットを実行するマスタとタイマのタイムアウトを確認するＣＰＵが異なる場合でも、本タイマ装置は適用可能である。
【００５９】
なお、図４の説明において、タイマＩＤに代えて、受信したＴＣＰ／ＩＰパケットのコネクション情報を示す番号であるソケットＩＤを利用するようにしてもよい。この場合、タイマＩＤに代えてソケットＩＤが通知されるため、ＣＰＵ１３１は、いずれのコネクションについて遅延Ａｃｋの送信を行うべきかを即座に判断することができる。
【００６０】
また、本実施形態において、２４ビット長のカウント値に対し、下位８ビットを内部メモリ１４４に、上位１６ビットをメインメモリ１２１にそれぞれ格納しているが、ビット長の分割を動的に変更しても良い。
【００６１】
ただし、上位ビットへのアクセス周期が、メインメモリ１２１へのアクセスレイテンシよりも短くなると、カウント値のデクリメントが遅れるためタイマの誤差が発生してしまう。そこで、メインメモリ１２１へのアクセスレイテンシを考慮して、ビット長の分割を動的に変更することが望ましい。
【００６２】
また、メインバス１２３やローカルバス１４０のバスクロックが動的に変化するシステムであった場合、バスクロックに基づいて、下位ビット数を必要最小限のビット数に変更するようにしてもよい。
【００６３】
また、上述の実施形態では、カウント値をデクリメントした。しかしこれに限らず、カウント値をインクリメントしていき、カウント値が所定の値と等しくなったことをもってタイムアウトしたと判定するようにしてもよい。この場合、上位フラグは、カウント値の上位ビットと所定の値の上位ビットが等しくなった時に、１にセットするようにする。このような構成によっても、同様の効果を得ることができる。
【００６４】
また、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６５】
また、図３のフローチャートに示す処理をタイマ制御部１４２がハードウェアとして実行するようにしてもよい。この際、ハードウェア回路としては図３のフローチャートに示す処理を実行するＡＳＩＣを利用すればよい。
【００６６】
このように、タイマ処理で用いられるカウント値を上位ビットと下位ビットとに分割し、上位ビットの値をメインメモリ１２１に格納し、下位ビットの値を内部メモリ１４４に格納する。これにより、高速にアクセス可能な内部メモリにおいてタイマ処理のために用いられるメモリ領域を削減させることができる。
【００６７】
本実施形態は、上述した１つ乃至複数のうちのいくつかの効果を有する。
【符号の説明】
【００６８】
１０１  情報処理装置
１１１  主処理部
１１２  通信処理部
１２１  メインメモリ
１３８  周期生成部
１３９  タイマ装置
１４４  内部メモリ
【図１】
2016081239.tif 000003
【図２】
2016081239.tif 000004
【図３】
2016081239.tif 000005
【図４】
2016081239.tif 000006