(57)【要約】【課題】タイマメモリへのアクセスが、ＣＰＵとタイマにより時分割で行われる場合おいて、ＣＰＵによるタイマメモリの使用時間を増やすことができるハードウェアタイマ、制御方法及びプログラム提供する。【解決手段】ハードウェアタイマは、中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによるタイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択部と、中央演算処理装置がタイマメモリにアクセス可能な時間として割り当てられた第１の時間と、タイマがタイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、第２の時間内であっても、タイマがオフである場合には、選択部に、第１の状態を選択させる制御部と、を備える。【選択図】図１
2020166355.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択部と、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択部に、前記第１の状態を選択させる制御部と、
を備えるハードウェアタイマ。
【請求項２】
前記制御部は、前記タイマが、オンである場合であって、前記選択部が、前記第２の状態を選択している場合には、前記タイマによる前記タイマメモリへのアクセスを許可し、前記中央演算処理装置による前記タイマメモリへのアクセスを許可しない
請求項１に記載のハードウェアタイマ。
【請求項３】
前記制御部は、前記タイマが、タイムアウトしているか否か、及び、前記タイマが、未使用であるか否かについて判定し、前記タイマが、タイムアウトしている場合、又は、前記タイマが、未使用である場合に、前記タイマが、オフであると判定する
請求項１又は２に記載のハードウェアタイマ。
【請求項４】
前記制御部は、前記タイマが、タイムアウトしているか否か、及び、前記タイマが、未使用であるか否かについて判定し、前記タイマが、タイムアウトしていない場合、又は、前記タイマが、未使用ではない場合に、前記タイマが、オンであると判定する
請求項１又は２に記載のハードウェアタイマ。
【請求項５】
前記選択部は、前記第１の状態と、前記第２の状態とを、時分割で、交互に選択する
請求項１から４のいずれかに記載のハードウェアタイマ。
【請求項６】
前記タイマが、オフである場合であって、前記選択部が、前記第２の状態を選択している場合に、前記タイマのリード処理が発生した場合には、前記選択部は、前記タイマが、未使用であることを示す信号を、前記中央演算処理装置に出力する
請求項１から５のいずれかに記載のハードウェアタイマ。
【請求項７】
前記タイマメモリに記憶される複数のタイマ番号のうち、タイムアウトとなったタイマ番号を記憶するタイムアウトバッファを更に備え、
前記制御部は、前記タイムアウトとなったタイマ番号に割り当てられている時間については、前記選択部に、前記第１の状態を選択させる
請求項１から６のいずれかに記載のハードウェアタイマ。
【請求項８】
複数のタイマ番号と、オン又はオフのいずれの状態であるかを、対応付けて記憶するレジスタであって、前記複数のタイマ番号の数以下のレジスタを更に備える
請求項１から７のいずれかに記載のハードウェアタイマ。
【請求項９】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択し、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記第１の状態を選択する
ハードウェアタイマの制御方法。
【請求項１０】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択手段、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択手段に、前記第１の状態を選択させる制御手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアタイマ、制御方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、タイムアウトバッファがフル状態の場合に、タイムアウトしたタイマの通知漏れを防ぐとともに、そのタイマについて本来のタイムアウトになるべき時間の情報を取得する技術について開示している。
また、特許文献２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からメモリへのアクセス要求が発生した場合に、ＣＰＵからメモリへのアクセスが許可され、ＣＰＵがメモリに対して、タイマ値のリード（Ｒｅａｄ）やライト（Ｗｒｉｔｅ）の処理を行う技術について開示している。
【０００３】
また、特許文献３は、タイマバッファに記憶されているタイマ値が、タイムアウトとなった場合に、そのタイマバッファの情報を、所定のテーブルから削除して、タイマバッファを解放する技術について開示している。
また、特許文献４は、タイマメモリに記憶されている複数のタイマ値のカウント処理が、時分割で行われることについて開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２２９６７１号公報
【特許文献２】特開２００１−２７３０４９号公報
【特許文献３】特開平１１−１４３７２３号公報
【特許文献４】特開平０８−１９０５１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１〜４では、ＣＰＵがタイマメモリにアクセス可能な第１の時間と、タイマがタイマメモリにアクセス可能な第２の時間とが、割り当てられている場合において、第２の時間中は、タイマがオフの場合であっても、第２の時間が経過した後でなければ、ＣＰＵは、タイマメモリにアクセスすることができなかった。
そのため、タイマメモリへのアクセスが、ＣＰＵとタイマにより時分割で行われる場合おいて、タイマメモリへのアクセスが、タイマに割り当てられている時間には、タイマメモリがオフの状態であっても、ＣＰＵによるタイマメモリのアクセスを行うことができず、ＣＰＵのタイマメモリの使用時間を増やすことはできなかった。
【０００６】
そこで、この発明は、上述の課題を解決するハードウェアタイマ、制御方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明のいくつかの態様は、上述の課題を解決すべくなされたもので、本発明の第１の態様によるハードウェアタイマは、
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択部と、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択部に、前記第１の状態を選択させる制御部と、
を備える。
【０００８】
また、本発明の第２の態様によるハードウェアタイマの制御方法は、
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択し、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記第１の状態を選択する。
【０００９】
また、本発明の第３の態様によるプログラムは、中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択手段、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択手段に、前記第１の状態を選択させる制御手段、
として機能させる。
【発明の効果】
【００１０】
本発明によれば、タイマメモリへのアクセスが、ＣＰＵとタイマにより時分割で行われる場合おいて、ＣＰＵによるタイマメモリの使用時間を増やすことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態によるＣＰＵ、及び、ハードウェアタイマの構成を示すブロック図である。
【図２】本発明の第１の実施形態によるバス選択部の構成を示すブロック図である。
【図３】本発明の第１の実施形態によるタイマオン制御部の構成を示すブロック図である。
【図４】本発明の第１の実施形態によるハードウェアタイマの動作を示すタイミングチャートである。
【図５】本発明の第１の実施形態によるタイマの動作を示すフローチャートである。
【図６】本発明の第１の実施形態によるタイマオン制御部のレジスタ部の動作を示すフローチャートである。
【図７】本発明の第１の実施形態によるタイマオン制御部の信号選択部の動作を示すフローチャートである。
【図８】本発明の第２の実施形態によるタイマオン制御部の構成を示すブロック図である。
【図９】本発明の第３の実施形態によるタイマオン制御部の構成を示すブロック図である。
【図１０】本発明の第４の実施形態によるタイマオン制御部の構成を示すブロック図である。
【図１１】最小構成を有するハードウェアタイマの構成を示すブロック図である。
【図１２】最小構成を有するハードウェアタイマの処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
［第１の実施形態］
始めに、本発明の第１の実施形態について説明する。
図１は、本発明の第１の実施形態によるＣＰＵ１０、及び、ハードウェアタイマ２０の構成を示すブロック図である。
例えば、ハードウェアタイマ２０は、携帯電話の基地局装置であって、複数のユーザ（子機）との通信制御を行う上でユーザ毎に時間を管理する基地局装置が備えるタイマとして用いられる。
ハードウェアタイマ２０は、タイマ２１、タイムアウトバッファ２２、バス選択部２３（選択部とも称する）、タイマメモリ２４、タイマオン制御部２５ａ（制御部とも称する）、バス２６を備える。
【００１３】
ＣＰＵ１０は、バス２６を介して、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であるタイマメモリ２４の記憶領域に、タイマ初期値をライト（Ｗｒｉｔｅ）する。
ＣＰＵ１０は、タイマ２１によってデクリメント（Ｄｅｃｒｅｍｅｎｔ）されたタイマ値を、バス２６を介して、タイマメモリ２４からリード（Ｒｅａｄ）する。ＣＰＵ１０は、アドレスｘ(ｘ＝０〜ｎの整数)にライトしたタイマ値と、アドレスｘからリードしたタイマ値との差分から、時間経過を求める。
【００１４】
ＣＰＵ１０は、タイムアウトバッファ２２からの割り込み信号がアクティブ（Ａｃｔｉｖｅ）になると、タイムアウトバッファ２２をリードして、タイムアウトしたタイマ番号を取得する。
なお、１個のタイマがデクリメントする周期は、（クロック周期）×（タイマ数）×（タイマサイクル数）の値以上とするため、（クロック周期）×（ｎ＋１）×（ｒ＋１）の値以上となる。例えば、クロック周期が１０ｎｓ（ナノ秒）、タイマ数が、４０９６（ｎ＝４０９５）、タイマサイクル数が１０（ｒ＝９）の場合には、１個のタイマがデクリメントする周期は、１０ｎｓ×４０９６×１０＝０．４０９６ｍｓ以上となる。
【００１５】
タイマ２１は、タイマメモリ２４から、タイマ値をリードし、リードしたタイマ値に基づき、タイムアウト、タイマ未使用、デクリメントのいずれの状態にあるかについて判定する。具体的には、タイマ２１は、タイマメモリ２４からリードしたタイマ値が‘０’の場合は、タイマ未使用と判定し、タイマ値が‘１’である場合には、タイムアウトと判定し、タイマ値が、‘０’又は‘１’以外の値である場合には、デクリメントと判定する。
タイマ２１は、タイマ未使用と判定した場合は、何も処理を行わない。
【００１６】
タイマ２１は、タイムアウトと判定し、かつ、タイムアウトバッファ２２の記憶領域に空きがある場合は、タイムアウトしたタイマ番号を、タイムアウト番号として、タイムアウトバッファライト信号をアクティブにして、タイムアウトバッファ２２に出力する。それとともに、タイマ２１は、ライトデータを‘０’にして、タイムアウトバッファ２２にライトする。
タイマ２１は、タイムアウトと判定した場合であって、タイムアウトバッファ２２の記憶領域に空きがない場合は、何も処理を行わない。
タイマ２１は、デクリメントと判定した場合には、リードしたタイマ値と同じアドレスに、デクリメントした値をライトする。
【００１７】
タイムアウトバッファ２２は、一般的に用いられるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）である。タイマ２１から出力されるライト信号がアクティブになった場合には、タイムアウトバッファ２２は、タイムアウトしたタイマ番号を記憶し、エンプティ（Ｅｍｐｔｙ）信号をネゲート（Ｎｅｇａｔｅ）して、ＣＰＵ１０に対して割り込み信号を出力する。
タイムアウトバッファ２２は、タイムアウトしたタイマ番号を、ｍ（ｍは、正の整数）個記憶でき、タイムアウトバッファ２２の記憶領域に空きがない場合には、フル信号をアクティブにすることにより、タイマ２１が、タイムアウトバッファ２２にライトしないようにする。
【００１８】
タイムアウトバッファ２２は、ＣＰＵ１０のみから、リードアクセスを受けることが可能である。タイムアウトバッファ２２がＣＰＵ１０からリードされると、タイムアウトバッファ２２は、タイマ２１からライトされた順番に、タイマ番号を、ＣＰＵ１０に出力する。
タイムアウトバッファ２２は、ＣＰＵ１０からリードされて、タイムアウトバッファ２２の記憶領域が空になった場合には、エンプティ信号をアクティブにして、ＣＰＵ１０に対する割り込みを停止する。
【００１９】
バス選択部２３は、ＣＰＵ１０からのタイマメモリ２４へのアクセス信号と、タイマ２１からのタイマメモリ２４へのアクセス信号を、タイマ２１からのサイクルカウント信号と、タイマオン制御部２５ａからの選択タイマオン信号に基づいて選択して、タイマメモリ２４に出力する。
バス選択部２３は、選択タイマオン信号がアクティブの場合には、タイマ２１からのサイクルカウント信号の値で、ＣＰＵ１０とタイマ２１の使用割合を時分割して固定的に決定する。バス選択部２３は、時分割された時間に基づいて、ＣＰＵ１０の出力信号と、タイマ２１の出力信号を交互に選択して、タイマメモリ２４に出力する。
【００２０】
バス選択部２３は、選択タイマオン信号がノンアクティブ（Ｎｏｎ−Ａｃｔｉｖｅ）の場合には、時分割された時間に関係なく、ＣＰＵ１０からのアクセス信号を、タイマメモリ２４に出力するとともに、タイマメモリ２４に対するリードデータを、タイマ未使用を表す‘０’でマスクして出力する。
バス選択部２３は、ＣＰＵ１０に割り当てられた時間に、ＣＰＵ１０からのアクセスがあった場合は、ＣＰＵアック（Ａｃｋ）信号を、すぐにＣＰＵ１０に返信する。一方、バス選択部２３は、ＣＰＵ１０に割り当てられた時間外に、ＣＰＵ１０からのアクセスがあった場合は、ＣＰＵアック信号をすぐには返信せずに、ＣＰＵ１０を待機させ、ＣＰＵ１０に割り当てられた時間になった場合に、ＣＰＵアック信号をＣＰＵ１０に返信する。
【００２１】
タイマメモリ２４は、タイマ値を記憶する。タイマメモリ２４は、バス選択部２３を介して、ＣＰＵ１０とタイマ２１により、ライトとリードの処理が行われる。
タイマメモリ２４のアドレス‘０’番地は、タイマ番号‘０’と１対１で対応付けられており、タイマメモリ２４のアドレスｎが、タイマ番号ｎとなる。
【００２２】
タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４にアクセスする信号と、タイムアウトバッファ２２へのタイムアウト番号と、タイムアウトバッファライト信号とを、スヌープ（Ｓｎｏｏｐ）して、タイマ値のデクリメント動作が行われているか否かを判定する。なお、タイマ値のデクリメント動作が行われている場合を、タイマオンと定義する。
タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４のタイマ番号ｘ(ｘ＝０〜ｎの整数)に対してライトする際に、ライトデータ値が‘０’の場合は、タイマ番号ｘはタイマオフであると判定する。
【００２３】
また、タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４のタイマ番号ｘに対してライトする場合に、ライトデータ値が‘０’以外の場合は、タイマ番号ｘはタイマオンであると判定する。
また、タイマオン制御部２５ａは、タイマ２１がタイムアウトバッファ２２にタイマ番号ｘをライトする場合に、タイマ番号ｘはタイマオフであると判定する。
また、タイマオン制御部２５ａは、タイマ個数分のタイマオン／オフ情報を保持する１ビットのレジスタを備えており、タイマオン／オフ判定結果を、各タイマ番号に割り当てられたレジスタに保持する。
また、タイマオン制御部２５ａは、タイマ２１から出力されるタイマ番号よって、対応するタイマ番号のレジスタを選択して、選択されたレジスタの値を選択タイマオン信号として、バス選択部２３に出力する。
【００２４】
バス２６は、ＣＰＵ１０、タイマ２１、タイムアウトバッファ２２、バス選択部２３、タイマオン制御部２５ａに接続され、それらの間でデータのやり取りをするための信号線である。
【００２５】
図２は、本発明の第１の実施形態によるバス選択部２３の構成を示すブロック図である。バス選択部２３は、タイマ選択信号生成部２３１、ＣＰＵ制御部２３２、セレクタ２３３、マスク制御部２３４を備える。
【００２６】
タイマ選択信号生成部２３１は、タイマ２１からのタイマサイクルカウント信号に基づいて、ＣＰＵ１０とタイマ２１によるタイマメモリ２４の使用割合を時分割して固定的に決定したタイマ選択信号を生成し、マスク制御部２３４に出力する。
【００２７】
ＣＰＵ制御部２３２は、ＣＰＵ１０からのタイマメモリ２３４へのアクセスを検出し、マスクタイマ選択信号が‘０’の場合は、すぐにＣＰＵ１０に、ＣＰＵアック信号を出力する。一方、マスクタイマ選択信号が‘１’の場合は、ＣＰＵ制御部２３２は、マスクタイマ選択信号が‘０’になるまで待機してから、ＣＰＵ１０にＣＰＵアック信号を出力する。
ＣＰＵ制御部２３２は、ＣＰＵ１０からのタイマメモリ２３４へのライトアクセスを検出して、ＣＰＵアック信号にタイミングを合わせたＣＰＵリタイミングライト（Ｒｅｔｉｍｉｎｇ  Ｗｒｉｔｅ）信号をセレクタ２３３に出力する。
ＣＰＵ制御部２３２は、ＣＰＵ１０からタイマメモリ２４へのリードアクセスを検出して、入力されたＲＡＭリードデータを、ＣＰＵアック信号にタイミングを合わせたＣＰＵリードデータとして出力する。
【００２８】
セレクタ２３３は、マスクタイマ選択信号の値が‘０’の場合は、ＣＰＵ１０のアドレス、データとＣＰＵリタイミングライト信号を、タイマメモリ２４に出力する。
また、セレクタ２３３は、マスクタイマ選択信号の値が‘１’の場合は、タイマ２１のタイマ番号、タイマライトデータ、タイマライト信号を、タイマメモリ２４に出力する。
【００２９】
マスク制御部２３４は、タイマ選択信号と、タイマオン制御部２５ａからの選択タイマオン信号に基づいて、タイマ２１に出力するタイマリードデータの‘０’マスク制御や、マスクタイマ選択信号のマスク制御を行い、その制御結果を、ＣＰＵ制御部２３２とセレクタ２３３に出力する。
マスク制御部２３４は、選択タイマオン信号が‘０’の場合は、タイマリードデータを‘０’にする。また、マスク制御部２３４は、マスクタイマ選択信号を‘０’にする。
マスク制御部２３４は、選択タイマオン信号が‘１’の場合は、タイマリードデータとして、ＲＡＭリードデータを出力する。また、マスク制御部２３４は、マスクタイマ選択信号として、タイマ選択信号を出力する。
【００３０】
図３は、本発明の第１の実施形態によるタイマオン制御部２５ａの構成を示すブロック図である。タイマオン制御部２５ａは、ＣＰＵセットパルス生成部２５１、ＣＰＵクリアパルス生成部２５２、レジスタ部２５３ａ、信号選択部２５４、タイムアウトクリアパルス生成部２５５、クリアパルス合成部２５６を備える。
【００３１】
ＣＰＵセットアップパルス生成部２５１は、ＣＰＵ１０からのＣＰＵアドレス、ＣＰＵデータと、バス選択部２３からのＣＰＵリタイミングライト信号に基づき、タイマメモリ２４のタイマ番号ｘ(ｘ＝０〜ｎの整数)に対してライトデータが‘０’以外のライトを行った場合に、セットパルスｘをアクティブにする。
【００３２】
ＣＰＵクリアパルス生成部２５２は、ＣＰＵ１０からのＣＰＵアドレス、ＣＰＵデータと、バス選択部２３からのＣＰＵリタイミングライト信号に基づき、タイマメモリ２４のタイマ番号ｘ(ｘ＝０〜ｎの整数)に対してライトデータが‘０’のライトを行った場合に、クリアパルスｘをアクティブにする。
【００３３】
レジスタ部２５３ａは、タイマ個数分のレジスタ２５３ａ−０、・・・、２５３ａ−ｎで構成され、対応するクリアパルスがアクティブの場合は、レジスタ値を‘０’とする。一方、レジスタ部２５３ａは、対応するセットパルスがアクティブの場合は、レジスタ値を‘１’にセットする。レジスタ部２５３ａは、レジスタ値を、タイマオン信号として、信号選択部２５４に出力する。
【００３４】
信号選択部２５４は、タイマ２１からのタイマ番号に基づき、レジスタ部２５３ａからのタイマオン信号を選択して、選択タイマオン信号として、バス選択部２３に出力する。
【００３５】
タイムアウトクリアパルス生成部２５５は、タイマ２１からのタイムアウト番号と、タイムアウトバッファライト信号に基づき、タイマメモリ２４のタイマ番号ｘ(ｘ＝０〜ｎの整数)に対してライトを行った場合に、クリアパルスｘをアクティブにする。
【００３６】
クリアパルス合成部２５６は、ＣＰＵクリアパルス生成部２５２のクリアパルスｘと、タイムアウトクリアパルス生成部２５５からのクリアパルスｘとの論理和をとって、レジスタ部２５３ａに出力する。
【００３７】
図４は、本発明の第１の実施形態によるハードウェアタイマ２０の動作を示すタイミングチャートである。
図４の符号（ａ）の信号は、クロック信号を示している。ここでは、クロック周期は、１０ｎｓ（ナノ秒）である。
図４の符号（ｂ）の信号は、ＲＡＭアドレス（タイマ番号）を示している。ここでは、０〜ｎの合計ｎ＋１個のタイマ番号からなる。各タイマ番号には、１クロックが割り当てられ、タイマ番号が、ｎまで進むと、タイマ番号が、０に戻る。
図４の符号（ｃ）の信号は、タイマ選択信号を示している。タイマ選択信号は、ＲＡＭアドレス（タイマ番号）に対応するタイマが、オン（ＯＮ）であるか、オフ（ＯＦＦ）であるかを示す。ここでは、タイマ番号０のタイマが、オンとなり、タイマ番号１のタイマが、オフとなり、タイマ番号２〜ｎのタイマが、オンとなる場合を示している。
【００３８】
図４の符号（ｄ）の信号は、ＲＡＭアドレス（タイマ番号）を示している。
図４の符号（ｅ）の信号は、タイマ選択信号を示している。
図４の符号（ｆ）の信号は、タイマサイクルカウント信号を示している。タイマサイクルカウント信号は、０からｒまで増加した後、０からｒまでカウントする処理を繰り返す。
図４の符号（ｇ）の信号は、バス選択動作信号を示している。バス選択動作信号は、ＣＰＵ１０とタイマ（ＴＩＭＥＲ）２１のいずれかを選択するための信号である。ここでは、ＲＡＭアドレス（タイマ番号）が、１の場合であって、タイマサイクルカウントが、１から４の間は、タイマ２１が選択され、タイマサイクルカウントが、５からｒの間は、ＣＰＵ１０が選択される場合について示している。
なお、図４の符号（ｄ）〜（ｇ）の信号は、主に、符号（ｂ）の信号のＲＡＭアドレス（タイマ番号）が、１の部分を、拡大して示している。
【００３９】
図４の符号（ｈ）の信号は、符号（ｄ）のＲＡＭアドレス（タイマ番号）が、１の場合であって、タイマサイクルカウントが、１から４の場合を示しており、タイマ２１で行われる処理を示している。ここでは、ＲＡＭアドレス（タイマ番号）が、１の場合であって、タイマサイクルカウントが、１から４の場合に、タイマ２１が、タイマ値リード、タイマ値判定、タイマ値デクリメント、デクリメント値ライト（タイムアウトバッファライト）の処理を行う。
【００４０】
図５は、本発明の第１の実施形態によるタイマ２１の動作を示すフローチャートである。タイマ２１は、ＣＰＵ１０から、タイマ動作のオン設定の指示を受けているか否かについて判定する（ステップＳ１０１）。タイマ２１が、ＣＰＵ１０から、タイマ動作のオン設定の指示を受けていない場合には（ステップＳ１０１でＮｏ）、タイマ２１は、再度、ステップＳ１０１の処理を行う。
タイマ２１が、ＣＰＵ１０から、タイマ動作のオン設定の指示を受けている場合には（ステップＳ１０１でＹｅｓ）、タイマ２１は、ステップＳ１０２の処理を行う。
つまり、タイマ２１は、タイマ番号０から、タイマアクセスを開始する（ステップＳ１０２）。そして、タイマ２１は、タイマ値を、タイマメモリ２４からリードする（ステップＳ１０３）。なお、タイマ２１は、タイマ番号に対応するタイマ動作を停止している場合には、タイマサイクルカウント信号として‘０’を出力して、タイマ２１からタイマメモリ２４へのアクセスを禁止する。
【００４１】
次に、タイマ２１は、タイマ値が、０であるか否かについて判定する（ステップＳ１０４）。つまり、タイマ２１は、タイマ値が、未使用の状態であるか否かについて判定する。タイマ２１が、タイマ値が、０であると判定した場合には（ステップＳ１０４でＹｅｓ）、タイマ２１は、ステップＳ１０５の処理を行う。
つまり、タイマ２１は、タイマ番号に、１を加算（インクリメント）する（ステップＳ１０５）。
【００４２】
そして、タイマ２１は、タイマ番号が、最大の番号であるｎであるか否かについて判定する（ステップＳ１０６）。タイマ２１が、タイマ番号が、ｎではないと判定した場合には（ステップＳ１０６でＮｏ）、タイマ２１は、上述したステップＳ１０３の処理を行う。一方、タイマ２１が、タイマ番号が、ｎであると判定した場合には（ステップＳ１０６でＹｅｓ）、タイマ２１は、ステップＳ１０７の処理を行う。
つまり、タイマ２１は、ＣＰＵ１０から、タイマ動作のオフ設定の指示を受けているか否かについて判定する（ステップＳ１０７）。タイマ２１が、ＣＰＵ１０から、タイマ動作のオフ設定の指示を受けている場合には（ステップＳ１０７でＹｅｓ）、タイマ２１は、図５に示すフローチャートの処理を終了し、動作を停止する。この場合、タイマ２１は、タイマサイクルカウント信号を、‘０’にする。
【００４３】
一方、タイマ２１が、ＣＰＵ１０から、タイマ動作のオフ設定の指示を受けていない場合には（ステップＳ１０７でＮｏ）、タイマ２１は、ステップＳ１０８の処理を行う。
つまり、タイマ２１は、タイマ更新周期になったか否かについて判定する（ステップＳ１０８）。タイマ２１が、タイマ更新周期になっていないと判定した場合には（ステップＳ１０８でＮｏ）、タイマ２１は、再度、ステップＳ１０８の処理を行う。
一方、タイマ２１が、タイマ更新周期となったと判定した場合には（ステップＳ１０８でＹｅｓ）、タイマ２１は、タイマ番号を‘０’にして、上述したステップＳ１０２の処理を行う。
【００４４】
一方、タイマ２１が、タイマ値が、０ではないと判定した場合には（ステップＳ１０４でＮｏ）、タイマ２１は、ステップＳ１０９の処理を行う。
つまり、タイマ２１は、タイマ値が、１であるか否かについて判定する（ステップＳ１０９）。タイマ２１が、タイマ値が、１であると判定した場合には（ステップＳ１０９でＹｅｓ）、タイマ２１は、ステップＳ１１０の処理を行う。
つまり、タイマ２１は、タイムアウトバッファ２２がフルであるか否かについて判定する（ステップＳ１１０）。タイマ２１が、タイムアウトバッファ２２がフルであると判定した場合には（ステップＳ１１０でＹｅｓ）、タイマ２１は、上述したステップＳ１０５の処理を行う。
【００４５】
一方、タイマ２１が、タイムアウトバッファ２２がフルではないと判定した場合には（ステップＳ１１０でＮｏ）、タイマ２１は、ステップＳ１１１の処理を行う。
つまり、タイマ２１は、タイマ値から１を減算（デクリメント）する（ステップＳ１１１）。
そして、タイマ２１は、タイマ値を、タイマメモリ２４にライトするとともに、タイムアウトバッファ２２に、タイマ番号をライトし（ステップＳ１１２）、上述したステップＳ１０５の処理を行う。
【００４６】
一方、タイマ２１が、タイマ値が、１ではないと判定した場合には（ステップＳ１０９でＮｏ）、タイマ２１は、ステップＳ１１３の処理を行う。
つまり、タイマ２１は、タイマ値から１を減算する（ステップＳ１１３）。
そして、タイマ２１は、タイマ値を、タイマメモリ２４にライトし（ステップＳ１１４）、上述したステップＳ１０５の処理を行う。
【００４７】
図６は、本発明の第１の実施形態によるタイマオン制御部２５ａのレジスタ部２５３ａの動作を示すフローチャートである。
始めに、レジスタ部２５３ａは、タイマ番号が更新されたか否かについて判定する（ステップＳ２０１）。レジスタ部２５３ａが、タイマ番号が更新されていないと判定した場合には（ステップＳ２０１でＮｏ）、レジスタ部２５３ａは、再度、ステップＳ２０１の処理を行う。
一方、レジスタ部２５３ａが、タイマ番号が更新されたと判定した場合には（ステップＳ２０１でＹｅｓ）、レジスタ部２５３ａは、ステップＳ２０２の処理を行う。
【００４８】
つまり、レジスタ部２５３ａは、ＣＰＵ１０から、タイマメモリ２４への更新があったか否かについて判定する（ステップＳ２０２）。
レジスタ部２５３ａが、ＣＰＵ１０から、タイマメモリ２４への更新があったと判定した場合には（ステップＳ２０２でＹｅｓ）、レジスタ部２５３ａは、ステップＳ２０３の処理を行う。
【００４９】
つまり、レジスタ部２５３ａは、ＣＰＵ１０から、ライトデータ値‘０’以外のライトがあったか否かについて判定する（ステップＳ２０３）。
レジスタ部２５３ａが、ＣＰＵ１０から、ライトデータ値‘０’以外のライトがあったと判定した場合には（ステップＳ２０３でＹｅｓ）、レジスタ部２５３ａは、タイマ番号ｘのレジスタを、タイマオンに設定する（ステップＳ２０４）。
一方、レジスタ部２５３ａが、ＣＰＵ１０から、ライトデータ値‘０’以外のライトがないと判定した場合には（ステップＳ２０３でＮｏ）、レジスタ部２５３ａは、タイマ番号ｘのレジスタを、タイマオフに設定する（ステップＳ２０６）。
【００５０】
なお、レジスタ部２５３ａが、ＣＰＵ１０から、タイマメモリ２４への更新がないと判定した場合には（ステップＳ２０２でＮｏ）、レジスタ部２５３ａは、ステップＳ２０５の処理を行う。
つまり、レジスタ部２５３ａは、タイマ２１から、タイムアウトバッファ２２への更新があったか否かについて判定する（ステップＳ２０５）。
レジスタ部２５３ａが、タイマ２１から、タイムアウトバッファ２２への更新があったと判定した場合には（ステップＳ２０５でＹｅｓ）、レジスタ部２５３ａは、上述したステップＳ２０６の処理を行う。
一方、レジスタ部２５３ａが、タイマ２１から、タイムアウトバッファ２２への更新がなかったと判定した場合には（ステップＳ２０５でＮｏ）、レジスタ部２５３ａは、上述したステップＳ２０１の処理を行う。
【００５１】
図７は、本発明の第１の実施形態によるタイマオン制御部２５ａの信号選択部２５４の動作を示すフローチャートである。
始めに、信号選択部２５４は、タイマ番号ｘが更新されたか否かについて判定する（ステップＳ３０１）。信号選択部２５４が、タイマ番号ｘが更新されていないと判定した場合には（ステップＳ３０１でＮｏ）、信号選択部２５４は、再度、ステップＳ３０１の処理を行う。
一方、信号選択部２５４が、タイマ番号ｘが更新されたと判定した場合には（ステップＳ３０１でＹｅｓ）、信号選択部２５４は、ステップＳ３０２の処理を行う。
【００５２】
つまり、信号選択部２５４は、タイマ番号ｘが示すレジスタ値が、オンとオフのいずれの状態であるかについて判定する（ステップＳ３０２）。
信号選択部２５４が、タイマ番号ｘが示すレジスタ値が、オンであると判定した場合には（ステップＳ３０２でオン）、信号選択部２５４は、タイマ２１が、タイマメモリ２４にアクセスできるように、バス選択部２３を切り替え（ステップＳ３０３）、上述したステップＳ３０１の処理を行う。
一方、信号選択部２５４が、タイマ番号ｘが示すレジスタ値が、オフであると判定した場合には（ステップＳ３０２でオフ）、信号選択部２５４は、ＣＰＵ１０が、タイマメモリ２４にアクセスできるように、バス選択部２３を切り替え（ステップＳ３０４）、上述したステップＳ３０１の処理を行う。
【００５３】
なお、本実施形態によるハードウェアタイマ２０の動作について、以下に説明する。
最初に、ＣＰＵ１０は、タイマ数分のアドレスエリアを持つタイマメモリ２４のタイマ番号ｘに、タイマ初期値を設定する。
タイマ値の最大値は、タイマメモリ２４のデータ幅で決定される。例えば、タイマメモリ２４のデータ幅が、１６ビットの場合には、タイマ値の最大値は、６５５３５なので、ハードウェアタイマ２０は、（タイマ更新周期）×（６５５３５）の値まで計数可能となる。
【００５４】
バス選択部２３は、ＣＰＵ１０からタイマメモリ２４へのライトアクセスを検出して、ＣＰＵ１０がタイマメモリ２４にアクセス可能な時間のみ、ＣＰＵアック信号を生成し、タイマメモリ２４にＣＰＵアドレスと、ＣＰＵデータと、リタイミングしたライト信号とを出力する。バス選択部２３から出力されるアドレス及びデータや、タイマ初期値は、タイマメモリ２４にライトされる。
タイマ初期値のライトが終了した後、ＣＰＵ１０は、タイマ動作のオンを設定する（図５ステップＳ１０１でＹｅｓ）。タイマ２１は、ＣＰＵ１０からのタイマ動作オン設定を検出して、タイマサイクルカウントのインクリメントを開始する。タイマサイクルカウントでは、０〜ｒの値が繰り返される。
【００５５】
タイマサイクルカウントが０に戻るたびに、タイマ番号(ＲＡＭアドレス)はインクリメントされる。
タイマ更新周期毎に、タイマ０からタイマｎまでのタイマ番号が出力される（図５のステップＳ１０３〜Ｓ１０６）。タイマ２１は、図４の符号（ｆ）及び（ｈ）で示すように、タイマサイクルカウントの１〜４の４クロックの間に、タイマ値リード、タイマ値判定、タイマ値デクリメント、デクリメント値ライト（タイムアウトバッファライト）の処理を行う。
タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４にアクセスする信号と、タイムアウトバッファ２２へのタイムアウト番号と、タイムアウトバッファライト信号とを、スヌープして、タイマ値のデクリメント動作が行われているか否かを判定する。ここでは、タイマ値のデクリメント動作が行われている場合を、タイマオンと定義する。また、タイマオン以外の場合を、タイマオフと定義する。
【００５６】
タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４のタイマ番号ｘ(ｘ＝０〜ｎ)に対してライトする場合に、ライトデータ値が‘０’の場合は、タイマ番号ｘはタイマオフの状態にあると判定する。
タイマオン制御部２５ａは、ＣＰＵ１０がタイマメモリ２４のタイマ番号ｘに対してライトする場合、ライトデータ値が‘０’以外の場合には、タイマ番号ｘはタイマオンの状態にあると判定する。
タイマオン制御部２５ａは、タイマ２１がタイムアウトバッファ２２にタイマ番号ｘをライトする場合に、タイマ番号ｘはタイマオフの状態にあると判定する。
タイマオン制御部２５ａは、タイマ個数分のタイマオン／オフ情報を保持する１ビットのレジスタを備えており、タイマオン／オフ判定結果を、対応するタイマ番号のレジスタに記録する。
【００５７】
タイマオン制御部２５ａは、タイマ２１からのタイマ番号に基づき、対応するタイマ番号のレジスタを選択して、選択されたレジスタの値を選択タイマオン信号としてバス選択部２３に出力する。
バス選択部２３は、選択タイマオン信号が‘１’の場合は、タイマ２１がオンの状態にあると判定し、タイマサイクルカウントの１〜４の時間で、タイマ２１にタイマメモリ２４へのアクセスを許可する。一方、バス選択部２３は、選択タイマオン信号が‘０’の場合は、タイマ２１がオフの状態にあると判定し、タイマサイクルカウントの１〜４の時間であっても、ＣＰＵ１０にタイマメモリ２４へのアクセスを許可する(図４の符号（ｂ）及び（ｄ）のタイマ番号１の区間)。
この場合、ＣＰＵ１０にタイマメモリ２４へのアクセスを許可している時間は、タイマ２１には、タイマメモリ２４をリードしているように見せるために、タイマメモリ２４のリードデータを‘０’にマスクする。
【００５８】
タイマ２１は、タイマ値をリードした後に、タイマ値が‘１’かつタイムアウトバッファ２２がフルでない場合は、タイムアウトと判定して、タイマ値をデクリメントして、デクリメントしたタイマ値をタイマメモリ２４にライトするとともに、タイムアウトバッファ２２にタイマ番号をライトする。
タイマ２１は、タイマ値をリードした後に、タイマ値が‘１’かつタイムアウトバッファ２２がフルの場合は、何も処理を行わずに、次の同じタイマ番号のタイマ値をリードした場合に、タイムアウトバッファ２２がフルの状態であるか否かを確認する。
【００５９】
タイムアウトバッファ２２は、タイマ番号がライトされた場合に、ＣＰＵ１０に対して割り込みをアクティブにする。
ＣＰＵ１０は、タイムアウトの割り込みがアクティブになると、タイムアウトバッファ２２をリードすることで、タイマ番号を取得することができる。
なお、ここでは、タイマ初期値を、タイマメモリ２４にライトしてから、タイマ２１に対してタイマ動作のオン設定を行う場合について説明したが、タイマ動作のオン設定を先に行って、タイマ動作が始まってから、タイマ初期値をライトするようにしても良い。
【００６０】
タイマ２１の他の使用方法として、タイムアウトさせることなく、時間経過を観測する方法について説明する。ここでは、ＣＰＵ１０が、時間計測する処理を処理ｙとする。
ＣＰＵ１０は、タイマ動作中に、タイマメモリ２４のアドレスｘ(タイマ番号ｘ)に初期値をライトして、処理ｙを行った後、タイマメモリ２４のアドレスｘをリードして、初期値と、リードしたタイマ値との差分をとることで、処理ｙの時間を、タイマ更新周期単位で計測することができる。
【００６１】
本発明の第１の実施形態によれば、タイマメモリ２４へのアクセスが、ＣＰＵ１０とタイマ２１により時分割で行われる場合であって、タイマメモリ２４がオフの状態である場合に、ＣＰＵ１０は、タイマメモリ２４に割り当てられた時間が経過するのを待つことなく、タイマメモリ２４にアクセスすることができる。そのため、ＣＰＵ１０によるタイマメモリ２４の使用時間を増やすことができる。
【００６２】
また、タイマオン制御部２５ａとバス選択部２３によりマスク制御を行うことで、タイマ値をライトしていないアドレスは、タイマ２１からは‘０’がリードされるため、タイマメモリ２４の初期化を不要とすることができる。
また、タイマ数が多い大規模なハードウェアタイマ２０を用いる場合であって、ＣＰＵ１０が、タイマメモリ２４からタイマ値をライトしたりリードしたりして、タイマ値のライトアクセスやリードアクセスに時間かかる場合であっても、ＣＰＵ１０によるタイマメモリ２４の使用時間を増やすことができるため、バス２６の性能低下を避けることができる。
【００６３】
次に、本発明の第２の実施形態について説明する。なお、第２の実施形態が、第１の実施形態と同様である部分については、それらの処理を説明する。
第１の実施形態では、ハードウェアタイマ２０は、タイマオン制御部２５ａを備えていたが、第２の実施形態によるハードウェアタイマ２０は、タイマオン制御部２５ｂを備える点で異なっている。
【００６４】
図８は、本発明の第２の実施形態によるタイマオン制御部２５ｂの構成を示すブロック図である。タイマオン制御部２５ｂは、ＣＰＵセットパルス生成部２５１、ＣＰＵクリアパルス生成部２５２、レジスタ部２５３ａ、信号選択部２５４を備えている。
タイマオン制御部２５ｂ（図８）では、第１の実施形態によるタイマオン制御部２５ａ（図３）において、タイムアウトクリアパルス生成部２５５、クリアパルス合成部２５６が省略されている。第２の実施形態では、タイムアウトバッファ２２からのタイムアウト番号と、タイムアウトバッファライト信号を使用しないようになっている。
【００６５】
第２の実施形態によるハードウェアタイマ２０では、ＣＰＵ１０がタイマメモリ２４にアクセスできる時間は減るものの、タイムアウトしたタイマ番号のタイマオフを判定する構成を設ける必要が無いので、第１の実施形態と比較して、選択タイマオン信号のアクティブ区間が多くなる。そのため、第２の実施形態によるハードウェアタイマ２０は、タイムアウトバッファ２２を有さない回路にも適用することができる。
【００６６】
次に、本発明の第３の実施形態について説明する。なお、第３の実施形態が、第１の実施形態と同様である部分については、それらの処理を説明する。
第１の実施形態では、ハードウェアタイマ２０は、タイマオン制御部２５ａを備えていたが、第３の実施形態によるハードウェアタイマ２０は、タイマオン制御部２５ｃを備える点で異なっている。
【００６７】
図９は、本発明の第３の実施形態によるタイマオン制御部２５ｃの構成を示すブロック図である。タイマオン制御部２５ｃは、ＣＰＵセットパルス生成部２５１、レジスタ部２５３ｃ、信号選択部２５４を備えている。
タイマオン制御部２５ｃ（図９）では、第２の実施形態によるタイマオン制御部２５ｂ（図８）において、ＣＰＵクリアパルス生成部２５２が省略されている。また、タイマオン制御部２５ｃ（図９）は、第２の実施形態によるレジスタ部２５３ａ（図８）の代わりに、レジスタ部２５３ｃを備えている。
【００６８】
第３の実施形態によるタイマオン制御部２５ｃ（図９）は、ＣＰＵ１０からのライトアクセスによりタイマオン／オフ設定が可能な、タイマ個数分のレジスタ部２５３ｃを備える。レジスタ部２５３ｃは、タイマメモリ２４以外のアドレスエリアに設けられ、ＣＰＵデータレジスタ設定が‘１’の場合は、タイマオンとされ、レジスタ設定が‘０’の場合は、タイマオフとされる。
【００６９】
第３の実施形態によるハードウェアタイマ２０では、タイマ２１とは別に、タイマ２１と同じアドレス領域を設ける必要があるものの、タイマオフと設定したタイマ番号(アドレス)を、データスタック用に使用することができる。
【００７０】
第３の実施形態において、ＣＰＵセットパルスは、タイマメモリ２４以外のアドレスエリアにマップされたタイマ個数分のレジスタ部２５３ｃのセットパルスを生成する。ＣＰＵライトが‘１’の場合であって、ＣＰＵアドレスが任意のアドレスｘ(ｘ＝０〜ｎの整数)の場合に、セットパルスｘをアクティブにする。
レジスタ部２５３ｃを構成するレジスタ２５３ｃ−０〜２５３ｃ−ｎは、セットパルスｘがアクティブの場合に、ＣＰＵデータの１ビットをレジスタ２５３ｃ−ｘに記録する。レジスタ２５３ｃ−ｘの設定値は、タイマオン信号として信号選択部２５４に出力される。
信号選択部２５４は、タイマ２１からのタイマ番号ｘの値に対応するタイマオン信号を選択して、選択タイマオン信号として、バス選択部２３に出力する。
【００７１】
次に、本発明の第４の実施形態について説明する。なお、第４の実施形態が、第１の実施形態と同様である部分については、それらの処理を説明する。
第１の実施形態では、ハードウェアタイマ２０は、タイマオン制御部２５ａを備えていたが、第４の実施形態によるハードウェアタイマ２０は、タイマオン制御部２５ｄを備える点で異なっている。
【００７２】
図１０は、本発明の第４の実施形態によるタイマオン制御部２５ｄの構成を示すブロック図である。タイマオン制御部２５ｄは、ＣＰＵセットパルス生成部２５１、上限レジスタ３０１、下限レジスタ３０２、比較器３０３を備える。
なお、上限レジスタ３０１は、タイマ番号の上限値を記憶する。また、下限レジスタ３０２は、タイマ番号の下限値を記憶する。
【００７３】
第１〜第３の実施形態では、タイマ個数分のレジスタが設けられていたが、第４の実施形態によるタイマオン制御部２５ｄは、各タイマのオン／オフを保持するのではなく、タイマ番号の上限と下限を設定できる上限レジスタ３０１及び下限レジスタ３０２を、タイマメモリ２４以外のアドレスエリアに設ける。そして、タイマオン制御部２５ｄは、タイマ２１からのタイマ番号が、下限から上限の範囲内にある場合は、選択タイマオン信号をアクティブにする。
第４の実施形態によれば、第１〜第３の実施形態と比較して、タイマ数分のレジスタを設ける必要がないので、ハードウェアタイマ２０の回路規模を小さくすることができるとともに、タイマオフのエリアをデータスタック用に使用することができる。
なお、第４の実施形態では、タイマオンの領域は、初期化が必要になるが、タイマ２１の動作中のＣＰＵ１０からタイマメモリ２４へのアクセスの効率を改善することができる。
【００７４】
なお、図１０において、ＣＰＵセットパルス生成部２５１は、ＣＰＵ１０からのＣＰＵアドレスとＣＰＵライト信号に基づき、下限セットパルスのアドレスである場合に、下限セットパルスをアクティブにする。
ＣＰＵセットパルス生成部２５１は、ＣＰＵ１０からのＣＰＵアドレスとＣＰＵライト信号に基づき、上限セットパルスのアドレスである場合に、上限セットパルスをアクティブにする。
【００７５】
上限レジスタ３０１は、上限セットパルスがアクティブの場合に、ＣＰＵ１０からのＣＰＵデータを取り込み保持する。
下限レジスタ３０２は、下限セットパルスがアクティブの場合に、ＣＰＵ１０からのＣＰＵデータを取り込み保持する。
比較器３０３は、下限レジスタ３０２が保持する値を下限値とし、上限レジスタ３０１が保持する値を上限値とする。比較器３０３は、タイマ２１からのタイマ番号が、下限値から上限値の範囲内にある場合は、選択タイマオン信号をアクティブにする。タイマ２１からのタイマ番号が、下限値から上限値の範囲外の場合は、選択タイマオン信号をノンアクティブにする。
なお、第１の実施形態と、第４の実施形態とを組み合わせることで、タイマオンの領域の初期化が不要となり、タイマオンの領域の１つ１つのタイマの状態もスヌープすることで、ＣＰＵ１０からタイマメモリ２４へのアクセスの効率を最大にすることができる。
【００７６】
図１１は、最小構成を有するハードウェアタイマ４００の構成を示すブロック図である。ハードウェアタイマ４００は、選択部４０１、制御部４０２を備える。
【００７７】
図１２は、ハードウェアタイマ４００の処理を示すフローチャートである。
始めに、選択部４０１は、ＣＰＵ（中央演算処理装置）１０によるタイマメモリ２４へのアクセスが可能な第１の状態と、タイマ２１によるタイマメモリ２４へのアクセスが可能な第２の状態のいずれかを選択する（ステップＳ４０１）。
そして、制御部４０２は、ＣＰＵ１０がタイマメモリ２４にアクセス可能な時間として割り当てられた第１の時間と、タイマ２１がタイマメモリ２４にアクセス可能な時間として割り当てられた第２の時間のうち、第２の時間内であっても、タイマ２１がオフである場合には、選択部４０１に、第１の状態を選択させる（ステップＳ４０２）。
【００７８】
なお、図１における各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【産業上の利用可能性】
【００７９】
本発明のいくつかの態様は、タイマメモリへのアクセスが、ＣＰＵとタイマにより時分割で行われる場合おいて、ＣＰＵによるタイマメモリの使用時間を増やすことが必要なハードウェアタイマ、制御方法及びプログラムなどに適用することができる。
【符号の説明】
【００８０】
１０・・・ＣＰＵ
２０・・・ハードウェアタイマ
２１・・・タイマ
２２・・・タイムアウトバッファ
２３・・・バス選択部
２４・・・タイマメモリ
２５ａ、２５ｂ、２５ｃ、２５ｄ・・・タイマオン制御部
２６・・・バス
２３１・・・タイマ選択信号生成部
２３２・・・ＣＰＵ制御部
２３３・・・セレクタ
２３４・・・マスク制御部
２５１・・・ＣＰＵセットパルス生成部
２５２・・・ＣＰＵクリアパルス生成部
２５３ａ・・・レジスタ部
２５３ｃ・・・レジスタ部
２５３ａ−０〜２５３ａ−ｎ・・・レジスタ
２５３ｃ−０〜２５３ｃ−ｎ・・・レジスタ
２５４・・・信号選択部
２５５・・・タイムアウトクリアパルス生成部
２５６・・・クリアパルス合成部
３０１・・・上限レジスタ
３０２・・・下限レジスタ
３０３・・・比較器
４００・・・ハードウェアタイマ
４０１・・・選択部
４０２・・・制御部
【図１】
2020166355.tif 000003
【図２】
2020166355.tif 000004
【図３】
2020166355.tif 000005
【図４】
2020166355.tif 000006
【図５】
2020166355.tif 000007
【図６】
2020166355.tif 000008
【図７】
2020166355.tif 000009
【図８】
2020166355.tif 000010
【図９】
2020166355.tif 000011
【図１０】
2020166355.tif 000012
【図１１】
2020166355.tif 000013
【図１２】
2020166355.tif 000014
【手続補正書】
【提出日】令和2年4月30日(2020.4.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択部と、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択部に、前記第１の状態を選択させる制御部と、
を備えるハードウェアタイマ。
【請求項２】
前記制御部は、前記タイマが、オンである場合であって、前記選択部が、前記第２の状態を選択している場合には、前記タイマによる前記タイマメモリへのアクセスを許可し、前記中央演算処理装置による前記タイマメモリへのアクセスを許可しない
請求項１に記載のハードウェアタイマ。
【請求項３】
前記制御部は、前記タイマが、タイムアウトしているか否か、及び、前記タイマが、未使用であるか否かについて判定し、前記タイマが、タイムアウトしている場合、又は、前記タイマが、未使用である場合に、前記タイマが、オフであると判定する
請求項１又は２に記載のハードウェアタイマ。
【請求項４】
前記制御部は、前記タイマが、タイムアウトしているか否か、及び、前記タイマが、未使用であるか否かについて判定し、前記タイマが、タイムアウトしていない場合、又は、前記タイマが、未使用ではない場合に、前記タイマが、オンであると判定する
請求項１又は２に記載のハードウェアタイマ。
【請求項５】
前記選択部は、前記第１の状態と、前記第２の状態とを、時分割で、交互に選択する
請求項１から４のいずれかに記載のハードウェアタイマ。
【請求項６】
前記タイマが、オフである場合であって、前記選択部が、前記第１の状態を選択している場合に、前記タイマのリード処理が発生した場合には、前記選択部は、前記タイマが、未使用であることを示す信号を、前記タイマに出力する
請求項１から５のいずれかに記載のハードウェアタイマ。
【請求項７】
前記タイマメモリに記憶される複数のタイマ番号のうち、タイムアウトとなったタイマ番号を記憶するタイムアウトバッファを更に備え、
前記制御部は、前記タイムアウトとなったタイマ番号に割り当てられている時間については、前記選択部に、前記第１の状態を選択させる
請求項１から６のいずれかに記載のハードウェアタイマ。
【請求項８】
複数のタイマ番号と、オン又はオフのいずれの状態であるかを、対応付けて記憶するレジスタであって、前記複数のタイマ番号の数以下のレジスタを更に備える
請求項１から７のいずれかに記載のハードウェアタイマ。
【請求項９】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択し、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記第１の状態を選択する
ハードウェアタイマの制御方法。
【請求項１０】
中央演算処理装置によるタイマメモリへのアクセスが可能な第１の状態と、タイマによる前記タイマメモリへのアクセスが可能な第２の状態のいずれかを選択する選択手段、
前記中央演算処理装置が前記タイマメモリにアクセス可能な時間として割り当てられた第１の時間と、前記タイマが前記タイマメモリにアクセス可能な時間として割り当てられた第２の時間のうち、前記第２の時間内であっても、前記タイマがオフである場合には、前記選択手段に、前記第１の状態を選択させる制御手段、
として機能させるプログラム。