(57)【要約】【課題】従来のタイマ装置であると、所定時間内にタイムアウトしたタイマ情報を一時的に記憶するバッファに空きがない場合、タイムアウトしたタイマ情報を消失させてしまう可能性がある。【解決手段】  所定の周期で記憶装置からタイマ値を読み出してデクリメント処理を行った後に該記憶装置に書き戻す処理を行い、該記憶装置から読み出したタイマ値が所定の値となった場合に、対応するタイマがタイムアウトしたと判断する。タイムアウトしたタイマの識別番号を一時的にバッファに蓄積する。タイマがタイムアウトしたと判断した際に、バッファにこれ以上、識別番号を蓄積できないことを示す通知を、該バッファから受信した場合、そのタイマに対応する記憶装置から読み出したタイマ値に対するデクリメント処理を行うことなく、読み出したタイマ値を該記憶装置に書き戻す。【選択図】  図６
2014149248.tif 000002
【特許請求の範囲】
【請求項１】
複数のタイマ毎に割り当てた識別番号をアドレス情報とし、前記アドレス情報に従って、前記タイマのタイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置であって、
所定の周期で前記記憶装置から前記タイマ値を読み出してデクリメント処理を行った後に該記憶装置に書き戻す処理を行い、該記憶装置から読み出したタイマ値が所定の値となった場合に、対応するタイマがタイムアウトしたと判断するカウント手段と、
前記タイムアウトしたタイマの前記識別番号を一時的に蓄積するバッファ手段とを備え、
前記カウント手段で前記タイマがタイムアウトしたと判断した際に、前記バッファ手段にこれ以上、前記識別番号を蓄積できないことを示す通知を、該バッファ手段から受信した場合、前記カウント手段は、前記タイマに対応する前記記憶装置から読み出したタイマ値に対する前記デクリメント処理を行うことなく、前記読み出したタイマ値を該記憶装置に書き戻す
ことを特徴とするタイマ装置。
【請求項２】
前記記憶装置に対して、タイマを設定するために前記タイマ値をデータとして書き込むタイマ設定動作と、タイマのカウントのために読み出したタイマ値をデータとして書き込むタイマカウント動作が競合する場合は、前記タイマ設定動作を優先する
ことを特徴とする請求項１に記載のタイマ装置。
【請求項３】
前記記憶装置は、複数の読み書き可能なメモリブロックで構成され、
前記バッファ手段は、前記記憶装置の前記メモリブロックにそれぞれ対応するバッファブロックで構成され、
タイムアウトが発生した場合にタイムアウトとなったタイマ値が記憶されていたメモリブロックに対応するバッファブロックに該識別番号を蓄積する
ことを特徴とする請求項１に記載のタイマ装置。
【請求項４】
前記記憶装置に蓄積できる前記タイマ値の総数は、前記バッファ手段に蓄積できる前記識別番号の総数よりも大きい
ことを特徴とする請求項１に記載のタイマ装置。
【請求項５】
複数のタイマ毎に割り当てた識別番号をアドレス情報とし、前記アドレス情報に従って、前記タイマのタイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置の制御方法であって、
所定の周期で前記記憶装置から前記タイマ値を読み出してデクリメント処理を行った後に該記憶装置に書き戻す処理を行い、該記憶装置から読み出したタイマ値が所定の値となった場合に、対応するタイマがタイムアウトしたと判断するカウント工程と、
前記タイムアウトしたタイマの前記識別番号を一時的にバッファに蓄積するバッファ工程とを備え、
前記カウント工程で前記タイマがタイムアウトしたと判断した際に、前記バッファにこれ以上、前記識別番号を蓄積できないことを示す通知を、該バッファから受信した場合、前記カウント工程は、前記タイマに対応する前記記憶装置から読み出したタイマ値に対する前記デクリメント処理を行うことなく、前記読み出したタイマ値を該記憶装置に書き戻す
ことを特徴とするタイマ装置の制御方法。
【請求項６】
複数のタイマ毎に割り当てた識別番号をアドレス情報とし、前記アドレス情報に従って、前記タイマのタイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置の制御をコンピュータに機能させるためのプログラムであって、
前記コンピュータを、
所定の周期で前記記憶装置から前記タイマ値を読み出してデクリメント処理を行った後に該記憶装置に書き戻す処理を行い、該記憶装置から読み出したタイマ値が所定の値となった場合に、対応するタイマがタイムアウトしたと判断するカウント手段と、
前記タイムアウトしたタイマの前記識別番号を一時的に蓄積するバッファ手段として機能させ、
前記カウント手段で前記タイマがタイムアウトしたと判断した際に、前記バッファ手段にこれ以上、前記識別番号を蓄積できないことを示す通知を、該バッファ手段から受信した場合、前記カウント手段は、前記タイマに対応する前記記憶装置から読み出したタイマ値に対する前記デクリメント処理を行うことなく、前記読み出したタイマ値を該記憶装置に書き戻す
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタイマ毎に割り当てた識別番号をアドレス情報とし、前記アドレス情報に従って、前記タイマのタイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置及びその制御方法、プログラムに関するものである。
【背景技術】
【０００２】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）の通信プロトコルを使用してネットワークに接続し、通信相手とデータ転送を行う通信機器がある。近年、このような通信機器間で高解像度、高精細の映像データを転送するような利用形態が増えてきている。そして、広帯域なデータ転送を可能とするためには、通信機器における通信プロトコル処理の高速化が不可欠となってくる。
【０００３】
そこで、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といった通信プロトコル処理に特化した補助的デバイスを通信機器の内部に装備し、広帯域なデータ転送を実現することが一般化している。ＴＯＥは、通信プロトコル処理を専用のソフトウェア／ハードウェアで実行して通信機器のＣＰＵ負荷を軽減するものである。そして、ネットワークと通信機器の間で高速なデータ転送を実行するために複数の時間計測を同時に実行できるタイマ装置を内部に装備して通信プロトコル処理の高速化に利用している。
【０００４】
そして、ＴＣＰ／ＩＰの通信プロトコル処理の高速化に使用されるタイマ装置について様々な制御方法がこれまで提案されており、その中に、特許文献１に記載されているタイムアウト優先処理タイマ回路がある。
【０００５】
このタイムアウト優先処理タイマ回路は、タイムアウトしたタイマのタイマアドレスを記憶するタイムアウトバッファメモリと、タイマの更新周期毎にタイムアウトバッファメモリにアクセスして各タイマのタイマ値の更新を行う更新部を備えている。さらに、タイマのタイムアウトを検出する検出部と、タイムアウトしたタイマが検出された時に当該タイマのタイマアドレスをタイムアウトバッファメモリに順次記憶する記憶部も備えている。さらに、タイムアウトしたタイマが検出されたことを外部に通知する通知部も備えている。さらに、タイムアウトしたタイマが存在する場合に外部からの指示に応じて当該タイマのタイマアドレスをタイムアウトバッファメモリから読み出して外部に出力する出力部も備えている。
【０００６】
そして、タイムアウト優先処理タイマ回路は、タイムアウトしたタイマアドレスを順次タイムアウトバッファメモリに格納する制御と、タイムアウトバッファメモリから格納した順に読み出す制御を行う。このタイムアウトバッファメモリは、ＦＩＦＯ（ファーストイン・ファーストアウト）バッファを使用している。このため、タイムカウントを行うデクリメント周期中に、複数のタイマがタイムアウトしてきた場合でも順次格納が可能となっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２１４２７４公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載のタイムアウト優先処理タイマ回路内のタイムアウトバッファメモリのサイズは、デクリメント周期中にタイムアウトしたタイマのタイマアドレスを格納できるタイマアドレス値の最大値で規定される。あるいは、タイムアウトバッファメモリに蓄積されているタイムアウトしたタイマのタイマアドレスをデクリメント周期中に外部から取り出せるタイマアドレス値の最大値で規定される。このように規定したサイズの何れか小さい方がタイムアウトバッファメモリの最大サイズとなる。そして、この条件を満足するサイズでタイムアウトバッファメモリを構成することで、時間計測の誤差を最小とし、タイムアウトの取りこぼしも発生しない仕組みになっている。
【０００９】
しかしながら、タイマ装置に対する要求精度に対して、デクリメント周期中にタイムアウトしたタイマアドレスを大量に記憶する要求がある場合には、従来の方法では、タイムアウトを取りこぼす可能性が生じる。
【００１０】
タイマ装置の要求精度を高くすることは、すなわち、デクリメント周期を短くすることである。この場合、時間計測の単位時間間隔を短く設定できるので、タイマ装置の精度を向上させることができる。一方、デクリメント周期が短くなるとタイムアウトしたタイマアドレスを格納する処理時間が短くなり、デクリメント周期中に格納できるタイマアドレスの総数は少なくなる。
【００１１】
そして、デクリメント周期に対してタイムアウトするタイマの総数が多くなる場合は、タイムアウトバッファメモリに格納できないタイムアウトしたタイマのタイマアドレスが発生する。そのため、結果的に、タイムアウトしたタイマのタイマアドレスを取りこぼししてしまう問題が発生する。
【００１２】
一方、デクリメント周期中に所望のタイムアウトしたタイマのタイマアドレスを大量にタイムアウトバッファメモリに蓄積することができても、デクリメント周期中にすべてのタイマアドレスを外部に取り出せない場合もある。この場合にも、従来の方法では、タイムアウトを取りこぼす可能性が生じる。
【００１３】
デクリメント周期中にタイムアウトバッファメモリに格納されているタイマアドレスを全て取り出せない場合は、当然、タイムアウトバッファメモリ内にタイマアドレスが蓄積されたままとなる。タイムアウトバッファメモリにタイマアドレスが残っている場合は、次のデクリメント周期中に格納できるタイマアドレスの総数は少なくなる。
【００１４】
そして、タイムアウトバッファメモリの空き領域に対して、デクリメント周期中にタイムアウトするタイマの総数が多くなった場合は、タイムアウトバッファメモリに格納できないタイムアウトしたタイマのタイマアドレスが発生する。そのため、結果的にタイムアウトしたタイマを取りこぼししてしまう問題が発生する。
【００１５】
このように、従来のタイマ装置では、所定時間内に、タイマアドレスをタイムアウトバッファメモリに格納できない場合にタイムアウトを取りこぼしてしまう。
【００１６】
本発明は上記の課題を解決するために、回路規模を増加させることなくタイムアウトを取りこぼすことが無いタイムアウト制御を実現するタイマ装置及びその制御方法、プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１７】
上記の目的を達成するための本発明によるタイマ装置は以下の構成を備える。即ち、
複数のタイマ毎に割り当てた識別番号をアドレス情報とし、前記アドレス情報に従って、前記タイマのタイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置であって、
所定の周期で前記記憶装置から前記タイマ値を読み出してデクリメント処理を行った後に該記憶装置に書き戻す処理を行い、該記憶装置から読み出したタイマ値が所定の値となった場合に、対応するタイマがタイムアウトしたと判断するカウント手段と、
前記タイムアウトしたタイマの前記識別番号を一時的に蓄積するバッファ手段とを備え、
前記カウント手段で前記タイマがタイムアウトしたと判断した際に、前記バッファ手段にこれ以上、前記識別番号を蓄積できないことを示す通知を、該バッファ手段から受信した場合、前記カウント手段は、前記タイマに対応する前記記憶装置から読み出したタイマ値に対する前記デクリメント処理を行うことなく、前記読み出したタイマ値を該記憶装置に書き戻す。
【発明の効果】
【００１８】
本発明によれば、回路規模を増加させることなくタイムアウトを取りこぼすことが無いタイムアウト制御を実現するタイマ装置及びその制御方法、プログラムを提供できる。
【図面の簡単な説明】
【００１９】
【図１】タイマ装置の内部ブロック図である。
【図２】タイマ装置のレジスタ構成図である。
【図３】タイマ装置のタイマメモリ内のタイマ管理図である。
【図４】タイマ装置におけるタイマ設定処理フローチャートである。
【図５】タイマ装置のタイムアウトバッファの構成図である。
【図６】タイマ装置におけるタイマカウント処理フローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００２１】
図１はタイマ装置１０の内部ブロックを示す図である。
【００２２】
タイマ装置１０は、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）の制御を行うＣＰＵ１１とバスを介して接続されている。タイマ装置１０として時間計測を行うために必要となるタイマカウント周期は、外部のカウント周期信号発生部１２から供給される。このタイマ装置１０は、例えば、通信機器等の情報処理装置に搭載される。
【００２３】
１０１は、タイマ装置１０の記憶装置として機能するレジスタである。レジスタ１０１は、タイマの設定と起動を行うために必要な情報（タイマ番号、タイマ値）を書き込むレジスタと、タイムアウトしたタイマを識別するタイマ番号を表示するステータスレジスタで構成されている。ＣＰＵ１１によってタイマの設定や起動する制御が行われると、レジスタ１０１の経路１０８を使用してタイマ設定部１０２に必要な情報（タイマ番号、タイマ値）が通知される。また、タイムアウトバッファ１０７から経路１１９を使用してタイムアウトしたタイマのタイマ番号が通知されると、所定のステータスレジスタにタイムアウトしたタイマのタイマ番号を表示する。
【００２４】
１０２は、タイマ装置１０においてタイマ設定を行うタイマ設定部であり、複数のタイマを識別するタイマ番号と、タイマの計測期間を示すタイマ値を使用してタイマの設定処理を実行する。タイマ番号とタイマ値は、レジスタ１０１から経路１０８を使用してタイマ設定部１０２に通知される。また、タイマメモリ１０３から読み出したリードデータはリードセレクタ１０４を介して経路１１０によってタイマ設定部１０２に送信される。更に、タイマ設定部１０２からタイマメモリ１０３にデータを書き込むライトデータはライトセレクタ１０５に送信される。
【００２５】
また、タイマ設定部１０２は、タイマ設定を実施する前にタイムカウント部１０６に対して経路１１５を使用して事前通知を行う。この事前通知は、タイマ設定部１０２がこれからタイマメモリ１０３に対してアクセスを行うことをタイムカウント部１０６に事前に通知するものである。これにより、タイマ設定部１０２とタイムカウント部１０６が同一のアドレスでタイマメモリ１０３に対するアクセス競合の発生を防止できるようになる。そのため、この事前通知には、これからタイマ設定を行うタイマのタイマ番号も情報として含まれる。その後、タイムカウント部１０６からの応答信号は経路１１６を使用してタイマ設定部１０２に通知される。
【００２６】
１０３は、タイマ装置１０において複数のタイマ値を記憶するタイマメモリであり、タイマ番号をアドレスとし、タイマ値をデータとして管理する。また、経路１０９を使用してタイマメモリ１０３から読み出したリードデータが送信される。更に、経路１１２を使用してタイマメモリ１０３にデータを書き込むときにライトデータが送信される。
【００２７】
１０４は、タイマメモリ１０３から読み出したリードデータの振り分けを行うリードセレクタであり、読出要求側にリードデータの振り分けを行う。タイマ設定部１０２より読出要求があれば、タイマメモリ１０３から読み出したリードデータを経路１１０へ伝送するように経路を選択する。また、タイムカウント部１０６より読出要求があれば、タイマメモリ１０３から読み出したリードデータを経路１１３へ伝送するように経路を選択する。
【００２８】
１０５は、タイマメモリ１０３に書き込むライトデータの順番制御を行うライトセレクタであり、書込処理が実行中の場合は、その書込処理が終了するまで、後に発行された書込要求を待たせる処理を行う。つまり、タイマ設定部１０２がタイマ設定のためにタイマ値の書込を行っている場合には、タイムカウント部１０６からデクリメントを行ったタイマ値の書き戻し要求が発行される。これは、タイマ設定部１０２の書込処理が終了するまでタイムカウント部１０６の書き戻し要求を受け付けない制御となる。
【００２９】
１０６は、タイマ装置１０において複数のタイマ値に対してそれぞれデクリメント処理を行うタイムカウント部であり、設定されたタイマ番号に対応するタイマ値をタイマメモリ１０３から読み出した後、デクリメントを行って書き戻す処理を行う。また、タイムカウント部１０６は、タイマメモリ１０３から読み出したタイマ値を経路１１３より内部に取り込む。そして、タイムカウント部１０６は、取り込んだタイマ値に対してデクリメント処理を実行した後、タイマ値を経路１１４からタイマメモリ１０３に書き戻す。
【００３０】
また、タイムカウント部１０６は、タイマ設定部１０２より経路１１５によって、タイマ設定を行う事前通知を検知した時が、デクリメント処理中であった場合は、タイマメモリ１０３に対する一部のアクセス動作を一定期間停止する。その後、タイムカウント部１０６は、経路１１６を使用して応答通知をタイマ設定部１０２へ送信する。デクリメント処理を実行するタイミングは、経路１２０より通知されるタイミング信号に同期して実行される。
【００３１】
さらに、タイマメモリ１０３から読み出したタイマ値の何れかにおいてタイマ値が‘１’であった場合は、タイムカウント部１０６は、それに対応するタイマ番号のタイマがタイムアウトしたと判断する。そして、タイムカウント部１０６は、タイムアウトバッファ１０７に経路１１８を使用して、そのタイムアウトしたタイマのタイマ番号を通知する。同時に、タイムカウント部１０６は、そのタイマ番号に対応するタイマ値をデクリメントしてタイマメモリ１０３へ書き戻す。
【００３２】
但し、読み出したタイマ値が‘１’であっても、タイムアウトバッファ１０７からバッファがＦｕｌｌである通知が経路１１７より入力されている場合は、タイムカウント部１０６は、タイムアウトとは判断しない。この場合、タイムカウント部１０６は、そのまま、そのタイマ値をタイマメモリ１０３に書き戻す処理を行う。
【００３３】
１０７は、タイマ装置１０において複数のタイマの中でタイムアウトしたタイマのタイマ番号を一時的にバッファするタイムアウトバッファであり、タイムカウント部１０６によってタイムアウトと判断されたタイマのタイマ番号を内部に蓄積する。タイムアウトと判断されたタイマのタイマ番号は、経路１１８を使用してタイムカウント部１０６からタイムアウトバッファ１０７へ通知され、随時内部にタイマ番号を蓄積する。タイムアウトバッファ１０７は、内部に蓄積されたタイマ番号の中で一番古いタイマ番号をレジスタ１０１に経路１１９を使用して通知する。そして、タイムアウトバッファ１０７は、内部に蓄積できるタイマ番号がＦｕｌｌになると、経路１１７を使用してタイムカウント部１０６にその旨の通知を行う。
【００３４】
図２はレジスタ１０１の内部構成を示す図である。
【００３５】
ＴＯＥで実行する通信プロトコル処理は、通信コネクションの総数として５１２個、そして、１つの通信コネクション当たり８種類のタイマを実装したタイマ装置１０を使用する。この場合、タイマ装置１０は、通信コネクション総数５１２×種類数８＝４０９６個のタイマを装備している。
【００３６】
レジスタ２０１は、タイマ設定を行う際にタイマ番号を入力するレジスタであり、通信コネクションに対応するタイマ番号を入力する。ここでは、通信コネクションの総数が５１２個であるので、レジスタ２０１には、１〜５１２の何れかをタイマ番号として入力することになる。
【００３７】
レジスタ２１１〜２１４は、タイマ設定を行う際にそれぞれタイマ値を入力するレジスタであり、１つのタイマ番号に対して合計８つのタイマ値をセットすることが可能となっている。レジスタ２１１〜２１４は同一構造であり、図では、一部を省略して記載しているが、実際には８つの同一構造のレジスタが存在する。
【００３８】
タイマ設定は、レジスタ２０１にタイマ番号を入力して、その後、レジスタ２１１〜２１４の何れかにタイマ値を入力すればよい。そして、連続してタイマ設定を行う場合は、再度、レジスタ２０１にタイマ番号を入力して、その後、レジスタ２１１〜２１４の何れかにタイマ値を入力する作業を繰り返せばよい。
【００３９】
レジスタ２２１〜２２４は、設定したタイマの中でタイムアウトしたタイマがあれば‘０’から‘１’に状態が変化するステータス値を管理するステータスレジスタである。ここでは、レジスタ２２１〜２２４は、それぞれレジスタ２１１〜２１４に対応し、それぞれのタイムアウトの有無が分かるようになっている。例えば、レジスタ２１３にタイマ値をセットした場合、そのタイマ値がタイムアウトした場合は、レジスタ２２３の表示が‘０’から‘１’に変化するようになっている。但し、レジスタ２２１〜２２４には、タイマ番号の情報が含まれていない。また、図では、レジスタ２２１〜２２４は同一構造であり、一部を省略して記載しているが、実際には８つの同一構造のステータスレジスタが存在する。
【００４０】
レジスタ２３１〜２３４は、設定したタイマの内、ステータスレジスタ２２１〜２２４でタイムアウトを通知したタイマのタイマ番号を表示するステータスレジスタである。ここでは、タイムアウト通知がどのタイマ番号のタイマであるかを、レジスタ２２１〜２２４に対応するレジスタ２３１〜２３４に表示される。例えば、レジスタ２２２の表示がタイムアウトを示す‘０’から‘１’に状態が変化した場合、それに対応するタイマ番号はレジスタ２３２に表示されるようになっている。また、図では、レジスタ２３１〜２３４は同一構造であり、一部を省略して記載しているが、実際には８つの同一構造のステータスレジスタが存在する。
【００４１】
図３はタイマメモリ１０３の内部にタイマ値がどのように記憶されるかを示す図である。
【００４２】
上述のように、ＴＯＥで実行する通信プロトコル処理は、通信コネクションの総数として５１２個、そして、１つの通信コネクション当たり８種類のタイマを実装したタイマ装置１０を使用する。そのため、タイマメモリ１０３は、５１２個のアドレス空間を１つの単位とする８つのメモリを並列に実装した構成となっている。
【００４３】
３０１〜３０４は、タイマメモリ１０３を８つのメモリに分割して並列に実装した場合のそれぞれのメモリブロックを示している。各メモリブロック３０１〜３０４は同一構造であり、図では、一部を省略して記載しているが、実際には８つの同一構造のメモリブロックが存在する。
【００４４】
各メモリブロック３０１〜３０４のアドレスは、ＴＯＥで取り扱う通信コネクションの総数と一致しており、タイマ番号とアドレスが対応するようになっている。そして、各アドレス（タイマ番号）に対するデータはタイマ値であり、１つのメモリブロックに付き５１２個のタイマ値が設定できる構造となっている。更に、各メモリブロック３０１〜３０４は、全メモリブロックの同一アドレス（タイマ番号）で同時に読出と書込を行うことも可能であり、個別にメモリブロック毎に読出と書込を行うこともできるようになっている。
【００４５】
例えば、１つのアドレス（タイマ番号２）の読出を行うと、全メモリブロック３０１〜３０４のそれぞれに対応するタイマ値２が同時に８つ分読み出され経路１０９に出力することも可能である。このように、８つのメモリブロック３０１〜３０４を同時に読出と書込を実施する場合は、主にタイムカウントを実行する場合の動作となる。
【００４６】
あるいは、例えば、１つのアドレス（タイマ番号５１１）で１つのメモリブロック３０１にだけタイマ値５１１の書込動作を行うことも可能となっている。このように、メモリブロック毎に読出と書込を実施する場合は、主に新しくタイマ設定を実行する場合の動作となる。
【００４７】
タイマ１のメモリブロック３０１は、図２に示すレジスタ２１１に書き込まれたタイマ値を記憶するメモリブロックであり、タイマ番号１からタイマ番号５１２までそれぞれ対応するタイマ値をデータとして記憶するようになっている。同様に、タイマ２のメモリブロック３０２はレジスタ２１２、タイマ３のメモリブロック３０３はレジスタ２１３、順に、タイマ８のメモリブロック３０４はレジスタ２１４それぞれに書き込まれたタイマ値を記憶するメモリブロックである。
【００４８】
図４はタイマ装置１０におけるタイマ設定処理を示すフローチャートである。
【００４９】
このフローチャートは、ＴＯＥが動作状態であり、内部に実装しているタイマ装置１０に対してＣＰＵ１１からタイマ設定を行う場合に、主に、タイマ設定部１０２の動作を示している。尚、カウント周期信号発生部１２からは、カウント周期信号が出力されている状態である。
【００５０】
４０１（端子記号）
この端子記号４０１は、このフローチャートのスタートを示している。ＴＯＥが動作状態であり、いつでもタイマ装置１０に対してタイマ設定を実行できる状態を示している。
【００５１】
４０２（条件判断記号）
この条件判断記号４０２は、レジスタ１０１のレジスタ２０１にタイマ番号が書き込まれたかどうかを条件として経路選択を行うことを示している。ＣＰＵ１１によってレジスタ２０１にタイマ番号が書き込まれた場合は、条件判断記号４０３へ移行し、そうでない場合は、現在の状態を維持する。
【００５２】
また、ここでは、書き込まれたタイマ番号が有効な値であるかどうかの判断も行う。タイマ番号としては、１〜５１２までの値が有効な値となるが、１〜５１２以外の値が入力された場合は、無効と判断して現在の状態を維持する。
【００５３】
ここでは、タイマ設定動作の説明を分かりやすくするために、レジスタ２０１にはタイマ番号“５１１”が入力された場合として以下の説明を行う。
【００５４】
４０３（条件判断記号）
この条件判断記号４１３は、条件判断記号４０２を経て、入力されたタイマ番号に対するタイマ値が入力されたかどうかを条件として経路選択を行うことを示している。入力されたタイマ番号に対するタイマ値がレジスタ２１１〜２１４の何れかのレジスタに入力される場合は、処理記号４０４へ移行し、そうでない場合は、現在の状態を維持する。
【００５５】
ここでは、タイマ設定動作の説明を分かりやすくするために、レジスタ２１１にタイマ値“１００ｍｓ”が入力された場合として以下の説明を行う。
【００５６】
４０４（処理記号）
この処理記号４０４は、条件判断記号４０３を経て、タイマ設定の入力を検知したレジスタ１０１がタイマ設定部１０２に対して、その旨の通知を行う処理を示している。詳細には、レジスタ１０１から経路１０８を使用してタイマ設定部１０２に、レジスタ２０１に入力されたタイマ番号と、レジスタ２１１〜２１４の何れかのレジスタに入力されたタイマ値が通知される。この時、タイマ値と一緒にレジスタ２１１〜２１４のどのレジスタにタイマ値が入力されたのかを示す情報も合わせて通知される。
【００５７】
ここでは、レジスタ２１１にタイマ値“１００ｍｓ”が入力されたという情報も合わせて通知されることになる。
【００５８】
４０５（処理記号）
この処理記号４０５は、タイマ設定部１０２が、処理記号４０４を経て、通知された情報より所定のタイマ値を読み込む処理を示す。
【００５９】
まず、最初に、タイムカウント部１０６に対してタイマ設定の事前通知を経路１１５にて発行する。この通知は、これからタイマメモリ１０３に対するアクセスを実行することによるアクセス競合を防止するための通知である。この時、タイマ番号“５１１”とメモリブロック３０１に対するアクセスであることも通知する情報も含まれている。
【００６０】
次に、タイマメモリ１０３に対して所定のタイマ値の読出要求を行う。この時、すでに経路１０８によって、タイマ番号“５１１”、タイマ値“１００ｍｓ”、そして、メモリブロック３０１であることを示す通知がなされているので、その通知内容に従う読出要求を行うことになる。
【００６１】
読出要求は、経路１１０→リードセレクタ１０４→経路１０９の順にタイマメモリ１０３に送信される。そして、読出要求を検出したタイマメモリ１０３は、メモリブロック３０１のタイマ番号“５１１”に記憶されているタイマ値を経路１０９→リードセレクタ１０４→経路１１０の順にタイマ設定部１０２に送信する。
【００６２】
４０６（条件判断記号）
この条件判断記号４０６は、処理記号４０５を経て、タイマ設定部１０２が読み込んだタイマ値が‘０’であるかどうかを条件として経路選択を行うことを示している。処理記号４０５を経て読み込んだタイマ値が‘０’でない場合は、条件判断記号４０２に移行し、そうでない場合は、処理記号４０７に移行する。
【００６３】
処理記号４０５を経て読み込んだタイマ値が‘０’以外である場合は、タイムアウトしていないタイマ値であると判断できる。そのため、このタイマ値が記憶されているタイマ番号とメモリブロックは現在使用中であると判断できる。従って、レジスタ１０１には間違ったタイマ設定が行われたとして、条件判断記号４０２に移行する。
【００６４】
一方、処理記号４０５で読み込んだタイマ値が‘０’である場合は、タイムアウトしているタイマ値、あるいは使われていないタイマ値であると判断できる。そのため、次の処理となる処理記号４０７へ移行する。
【００６５】
４０７（処理記号）
この処理記号４０７は、タイマ設定部１０２が、処理記号４０４を経て発行された通知内容に従って、タイマメモリ１０３の所定の位置にタイマ値を書き込む処理を示している。
【００６６】
ここでは、すでに経路１０８によって、タイマ番号“５１１”、タイマ値“１００ｍｓ”、そして、メモリブロック３０１であることを示す通知がなされているので、その通知内容に従う書込処理となる。つまり、メモリブロック３０１のタイマ番号“５１１”に対応するアドレスに、タイマ値“１００ｍｓ”を書き込む。この時、タイマ値“１００ｍｓ”は、経路１１１→ライトセレクタ１０５→経路１１２の順にタイマメモリ１０３に送信される。また、タイマ値“１００ｍｓ”は、カウント周期信号発生部１２からのカウント周期が１００μｓであるとすれば、１６進表示で“３Ｅ８”となる。
【００６７】
４０８（端子記号）
この端子記号４０８は、このフローチャートの終了を示している。一連のタイマ設定処理が終了したことを意味する。
【００６８】
図５はタイマ装置１０のタイムアウトバッファ１０７の内部構成を示す図である。
【００６９】
図３に示したように、タイマメモリ１０３は、５１２個のアドレス空間を１つの単位とする８つのメモリブロック３０１〜３０４を並列に実装した構成となっている。そのため、タイムアウトバッファ１０７の内部も８つのメモリブロック３０１〜３０４に対応して８つのＦＩＦＯブロック５０１〜５０４で構成している。
【００７０】
５０１〜５０４は、タイムアウトバッファ１０７を８つのＦＩＦＯブロック（バッファブロック）に分割して実装した場合のそれぞれのＦＩＦＯブロックを示している。各ＦＩＦＯブロック５０１〜５０４は同一構造であり、図では、一部を省略して記載しているが、実際には８つの同一構図御のＦＩＦＯブロックが存在する。
【００７１】
タイムアウトがあったタイマのタイマ番号のバッファリング先は、タイムアウトしたタイマのタイマ値が入力されていたメモリブロック３０１〜３０４に対応しているＦＩＦＯブロック５０１〜５０４にバッファリングされる。詳細には、例えば、タイマメモリ１０３のメモリブロック３０１に設定されているタイマがタイムアウトした場合は、ＦＩＦＯブロック５０１にそのタイマのタイマ番号をバッファリングするようになっている。つまり、バッファリングされる情報はタイムアウトしたタイマのタイマ番号となる。同様に、メモリブロック３０２はＦＩＦＯブロック５０２に対応しており、順に８つのメモリブロックのそれぞれがＦＩＦＯブロックのそれぞれに対応している。
【００７２】
各ＦＩＦＯブロック５０１〜５０４はそれぞれ独立してＦｕｌｌかどうか判定できる機能も装備しており、各ＦＩＦＯブロック単位で経路１１７を使用してＦｕｌｌか否かについてタイムカウント部１０６に随時通知するようになっている。ここで、Ｆｕｌｌとは、各ＦＩＦＯブロック５０１〜５０４のそれぞれにおいて、タイムアウトしたタイマのタイマ番号をこれ以上、バッファリングできない状態である。つまり、内部にバッファリングされている一番古いタイマ番号から順に読みとられなければ、これ以上バッファリングできない状態であるとも言える。
【００７３】
各ＦＩＦＯブロック５０１〜５０４にバッファリングされるタイマ番号の総数は、最大値としてはメモリブロック３０１〜３０４のアドレス空間と同数（５１２個）となるが、必ずしも同じ数量用意する必要はない。
【００７４】
各ＦＩＦＯブロック５０１〜５０４にタイムアウトしたタイマのタイマ番号がバッファリングされている場合は、その内の一番古いタイマ番号をレジスタ２３１〜２３４に経路１１９を使用して送信される。この時、各ＦＩＦＯブロック５０１〜５０４とレジスタ２３１〜２３４は対応しており、ＦＩＦＯブロック５０１にバッファリングされた一番古いタイマ番号は、レジスタ２３１に表示されるようになっている。同様に、８つのＦＩＦＯブロック５０２〜５０４は、順にレジスタ２３２〜２３４に対応している。
【００７５】
そして、各ＦＩＦＯブロック５０１〜５０４に、複数のタイムアウトしたタイマのタイマ番号がバッファリングされている場合は、ＣＰＵ１１がレジスタ２３１〜２３４の各レジスタからタイマ番号を読み取ったタイミングで次のタイマ番号が送信される。
【００７６】
図６は、タイマ装置１０におけるタイマカウント処理を示すフローチャートである。
【００７７】
このフローチャートは、タイムカウント部１０６の動作を示し、外部から供給されるタイマのカウント周期信号によってタイマカウント処理がどのように行われるかを示すフローチャートである。尚、カウント周期信号発生部１２からは、カウント周期信号が出力されている状態である。
【００７８】
６０１（端子記号）
この端子記号６０１は、このフローチャートのスタートを示している。タイマ装置１０が動作状態であり、タイマのカウント周期信号に同期したタイマカウント処理を行っている状態を示している。
【００７９】
６０２（条件判断記号）
この条件判断記号６０２は、カウント周期信号がイネーブルになったかどうかを条件として経路選択を行うことを示している。カウント周期信号発生部１２から経路１２０によって通知されるカウント周期信号がイネーブル状態と検出した場合は、処理記号６０３へ移行し、そうでない場合は、現在の状態を維持する。
【００８０】
ここで、カウント周期信号がイネーブル状態とは、カウント周期信号が‘Ｌ’の状態から‘Ｈ’の状態に変化することであり、‘Ｈ’となっている期間はカウント周期信号が示すカウント周期よりも短い時間となっている。
【００８１】
６０３（処理記号）
この処理記号６０３は、条件判断記号６０２においてカウント周期を検出したことにより、タイマメモリ１０３から読み出す読出対象のタイマ値のアドレスを準備する処理を示している。
【００８２】
ここで、図３に示したように、アドレスとはタイマ番号であり、タイマ番号１からタイマ番号５１２まで巡回しながら準備を行う。この処理記号６０３にて、前回準備したタイマ番号に対して１つインクリメントしたタイマ番号を準備する。そして、全てタイマ番号５１２まで進むと、その次はタイマ番号１をアドレス情報として準備する処理となる。
【００８３】
また、準備するタイマ番号は、８つのメモリブロック３０１〜３０４に対してそれぞれ準備する仕組みとなっている。これは、特定のメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）にアクセス競合のための待ち時間が発生しても残りのメモリブロックに対する待ち時間を発生させないようにするためである。
【００８４】
６０４（条件判断記号）
この条件判断記号６０４は、経路１１５を経て、事前に通知がイネーブル状態を示しているかどうかを条件として経路選択を行うことを示している。経路１１５からの通知がイネーブル状態を示している場合は、処理記号６０５へ移行し、そうでない場合は、処理記号６０６へ移行する。
【００８５】
ここでは、タイマメモリ１０３のメモリブロック３０１〜３０４の何れかのメモリブロックに対して、タイマ設定のためのアクセスとタイムカウント処理のためのアクセスの競合を防止するための選択を行っている。
【００８６】
ここで、経路１１５からの通知がイネーブル状態を示していることは、経路１１５の信号において‘Ｌ’の状態から‘Ｈ’の状態に変化していることである。そして、‘Ｈ’となっている期間は、タイマ設定のためのタイマメモリ１０３に対するアクセスが終了するまでの時間となっている。
【００８７】
タイマ設定を行う場合も、図４に示したようにタイマメモリ１０３に対して読み出しと書き戻しを行い、同様に、タイマのカウント動作においても、同様に読み出しと書き戻しを行う。そのため、特定のメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）に対するアクセスが競合した場合に、間違ったタイマ値を読み込んだり書き戻したりすることを防ぐため排他制御を行う選択となる。
【００８８】
６０５（処理記号）
この処理記号６０５は、条件判断記号６０４を経て、タイマメモリ１０３の特定のメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）に対するアクセス競合の可能性を検知したことで、タイマカウント処理を一時的に停止する処理（一定期間停止）を示している。
【００８９】
ここでは、アクセス競合を防止するためにタイマ設定動作を優先させてタイマカウント処理（タイマカウント動作）をタイマ設定動作が完了するまで待機する処理となる。タイマカウント処理を待機させるのは、アクセス競合の可能性を検知した特定のメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）に対するアクセスに限られる。このように、図４に示したタイマ設定処理にかかる期間、タイマカウント処理を停止させることでアクセス競合を防止する。
【００９０】
６０６（処理記号）
この処理記号６０６は、条件判断記号６０４を経て、アクセス競合の可能性は無いと判断したので、処理記号６０３で準備したタイマ番号のタイマ値をタイマメモリ１０３から読み出す処理を示している。
【００９１】
ここでは、最初にタイマメモリ１０３に対して所定のタイマ値の読出要求を行う。この読出要求は、すでに処理記号６０３によって準備したタイマ番号と、このタイマ番号をアドレスとする各メモリブロック３０１〜３０４からタイマ値を読み出す要求となる。
【００９２】
読出要求は、経路１１３→リードセレクタ１０４→経路１０９の順にタイマメモリ１０３に送信される。そして、読出要求を検出したタイマメモリ１０３は、各メモリブロック３０１〜３０４に対する指定されたタイマ番号のタイマ値を経路１０９→リードセレクタ１０４→経路１１３の順にタイムカウント部１０６に送信する。
【００９３】
６０７（条件判断記号）
この条件判断記号６０７は、処理記号６０６を経て、読み込んだタイマ値が‘１’であるかどうかを条件として経路選択を行うことを示している。タイマ値が‘１’である場合は、条件判断記号６０８へ移行し、そうでない場合は、条件判断記号６１０へ移行する。
【００９４】
タイマ設定時に、タイマメモリ１０３には、時間計測を行う期間をタイマ値として設定する。そして、タイマのカウント周期（所定の周期）毎にこのタイマ値をデクリメントし、タイマ値が‘０’（所定の値）となる場合、所定時間の計測が完了したことになる。尚、この所定の値は、通常は、「０」がタイムアウトしたと判断するが、処理時間等の確保のために、タイマアウトする前の所定の時間範囲（例えば、タイムアウトする直前とする時間範囲）内までを、タイムアウトとしたと判断するようにしても良い。この場合、所定の値は、「０」以外のその時間範囲の開始時を示す値が設定されることになる。
【００９５】
このようなタイマ装置１０において、処理記号６０６で読み込んだタイマ値が‘１’であることは、処理記号６１１にてデクリメントした場合に‘０’となるので、タイムアウトすると判断することができる。
【００９６】
一方、処理記号６０６で読み込んだタイマ値が‘２’以上である場合は、処理記号６１１にてデクリメントしても‘０’とはならないので、タイムアウトしないタイマであると判断することができる。
【００９７】
６０８（条件判断記号）
この条件判断記号６０８は、条件判断記号６０７でタイムアウトを検出したタイマのタイマ番号をタイムアウトバッファ１０７に書き込めるかどうかを条件として経路選択を行うことを示している。タイムアウトバッファ１０７がＦｕｌｌの状態である場合は、処理記号６１２へ移行し、そうでない場合は、処理記号６０９へ移行する。
【００９８】
条件判断記号６０７でタイムアウトを検出してもタイムアウトバッファ１０７がＦｕｌｌの状態、つまり、空きが無い状態であると、タイムアウトバッファ１０７にタイマ番号を蓄積することができない。そのため、タイムアウトしたタイマ番号が消失してしまうことを防ぐため、タイムアウトバッファ１０７がＦｕｌｌかどうかを判断する。
【００９９】
実際には、タイムアウトバッファ１０７のＦＩＦＯブロック５０１〜５０４毎にＦｕｌｌであるか否かを示す通知を経路１１７にてタイムカウント部１０６は受信している。そして、条件判断記号６０７でタイマ値が‘１’であったタイマ値が格納されていたメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）に対応するＦＩＦＯブロック（ＦＩＦＯブロック５０１〜５０４の何れかのＦＩＦＯブロック）がＦｕｌｌであるか否かについて判断される。
【０１００】
６０９（処理記号）
この処理記号６０９は、条件判断記号６０８でタイムアウトバッファ１０７がＦｕｌｌではないので、タイムアウトしたタイマのタイマ番号を所定のＦＩＦＯブロックに蓄積する処理を示している。
【０１０１】
ここでは、条件判断記号６０７でタイマ値が‘１’であったタイマ値が格納されていたメモリブロック（メモリブロック３０１〜３０４の何れかのメモリブロック）に対応するＦＩＦＯブロック（ＦＩＦＯブロック５０１〜５０４の何れかのＦＩＦＯブロック）に経路１１８を使用してタイマ番号が書き込まれる。
【０１０２】
６１０（条件判断記号）
この条件判断記号６１０は、処理記号６０６で読み込んだタイマ値が‘０’であるかどうかを条件として経路選択を行うことを示している。タイマ値が‘０’である場合は、処理記号６１２へ移行し、そうでない場合は、処理記号６１１へ移行する。
【０１０３】
タイマ設定時に、タイマメモリ１０３には、時間計測を行う期間をタイマ値として設定する。そして、タイマのカウント周期毎にこのタイマ値をデクリメントし、タイマ値が‘０’となれば所定時間の計測が完了したことになる。
【０１０４】
このようなタイマ装置１０において、処理記号６０６で読み込んだタイマ値が‘０’であることは、まだタイマ設定されていないタイマか、すでにタイムアウトとして処理が完了しているタイマであると判断することができる。
【０１０５】
一方、処理記号６０６で読み込んだタイマ値が‘０’以外でかつ‘２’以上のである場合は、このカウント周期でデクリメントしても‘０’とはならないので、タイムアウトしないタイマであると判断することができる。
【０１０６】
６１１（処理記号）
この処理記号６１１は、処理記号６０６で読み込んだタイマ値に対してデクリメントする処理を示している。処理記号６０６で読み込まれるタイマ値は、すでに処理記号６０３によって準備したタイマ番号とこのタイマ番号をアドレスとする各メモリブロック３０１〜３０４から読み出したタイマ値となっている。そのため、デクリメント処理は、最大で各メモリブロック３０１〜３０４から読み出された８つのタイマ値に対してデクリメント処理を行う。
【０１０７】
６１２（処理記号）
この処理記号６１２は、処理記号６０６で読み込んだタイマ値を全てタイマメモリ１０３に書き戻す処理を示している。
【０１０８】
ここでは、処理記号６０３によって準備したタイマ番号をアドレスとする各メモリブロック３０１〜３０４にそれぞれタイマ値を書き戻す処理となる。この時、書込は、経路１１４→ライトセレクタ１０５→経路１１２の順にタイマメモリ１０３に送信される。
【０１０９】
６１３（条件判断記号）
この条件判断記号６１３は、タイマメモリ１０３に配置されるタイマ値の全てについてタイマカウント処理が実行されたかどうかを条件として経路選択を行うことを示している。全てのタイマカウント処理が完了している場合は、端子記号６１４へ移行し、そうでない場合は、処理記号６０３に移行する。
【０１１０】
ここで、タイマカウント処理の完了は、タイマメモリ１０３に対して読み出しと書き戻しを行うアドレス情報が全てタイマ番号５１２になっているかどうかで判断される。何れかのアドレス情報がタイマ番号５１２以外である場合は、タイマカウント処理は未完了であると判断し、一方、全てタイマ番号５１２である場合は、タイマカウント処理は完了したと判断する。
【０１１１】
６１４（端子記号）
この端子記号６１４は、このフローチャートの終了を示している。一回のカウント周期における一連のタイマカウント処理が終了したことを意味する。
【０１１２】
以上説明したように、本実施形態によれば、多くのタイマを使用するようなＴＯＥの通信プロトコル処理において、回路規模を大きくしなくても、タイムアウトしたタイマが集中した場合でもタイムアウトしたタイマ情報が消失することがなくなる。
【０１１３】
これにより、回路規模を小さくでき、かつタイムアウトしたタイマ情報を消失させない効果がある。
【０１１４】
また、複数のタイマ毎の識別番号（タイマ番号）をアドレス情報とし、タイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置の場合、タイマ設定とタイマのカウント処理は記憶装置に対してアクセスが競合する場合がある。このような場合でも、本実施形態では、タイマ設定を優先することが可能となるので、タイマ精度の低下を防ぐ効果がある。
【０１１５】
また、複数のタイマ毎の識別番号をアドレス情報とし、タイマ値をデータとして読み書き可能な記憶装置を使用するタイマ装置の場合、タイマの種別によってタイムアウトの発生頻度にばらつきが発生する場合がある。このような場合でも、本実施形態では、タイマの種別に対応したタイムアウトしたタイマに関するタイマ情報（タイマ番号、タイマ値等）を蓄積できるので、発生頻度に応じて複数のタイマ装置を装備する必要がないという効果がある。
【０１１６】
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014149248.tif 000003
【図２】
2014149248.tif 000004
【図３】
2014149248.tif 000005
【図４】
2014149248.tif 000006
【図５】
2014149248.tif 000007
【図６】
2014149248.tif 000008