JP2006178822A - マイクロコンピュータおよび時間計測方法 - Google Patents

マイクロコンピュータおよび時間計測方法 Download PDF

Info

Publication number
JP2006178822A
JP2006178822A JP2004372849A JP2004372849A JP2006178822A JP 2006178822 A JP2006178822 A JP 2006178822A JP 2004372849 A JP2004372849 A JP 2004372849A JP 2004372849 A JP2004372849 A JP 2004372849A JP 2006178822 A JP2006178822 A JP 2006178822A
Authority
JP
Japan
Prior art keywords
timer
ticker
time
target
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004372849A
Other languages
English (en)
Other versions
JP4380530B2 (ja
Inventor
Shigeo Kato
滋郎 加藤
Hiroyuki Kishi
弘行 岸
Kentaro Asai
健太郎 浅井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2004372849A priority Critical patent/JP4380530B2/ja
Publication of JP2006178822A publication Critical patent/JP2006178822A/ja
Application granted granted Critical
Publication of JP4380530B2 publication Critical patent/JP4380530B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】タイマとチッカとを分離し、タイマをチッカに動的に登録することで、必要最小限のタイマだけを扱うことを可能にし、CPUのメモリ使用量を大きく低減する。
【解決手段】アプリケーションApplicationは、タイマTimerに対して目標時間を指定して時間計測の開始を指令する。タイマTimerは、目標カウント値を設定して自身をチッカTickerに登録する。チッカTickerは、タイマTimerを自身に登録する。タイマフレームワークTimerFrameworkは、チッカTickerに対してタイマTimerを進める指令を実行する。チッカTickerは、自チッカTickerに登録されているタイマTimerを進める。タイマTimerが、チッカTickerからのチック数を演算することにより目標カウント値に達したときに、チッカTickerから自身の登録を抹消して、アプリケーションApplicationに対して目標時間を計測したことを通知する。
【選択図】 図1

Description

本発明はマイクロコンピュータおよび時間計測方法に関し、詳しくは電子制御装置(ECU;Electronic Control Unit)等の組み込みシステムで用いられるマイクロコンピュータおよびその時間計測方法に関する。
従来、車両等のECUで用いられるマイクロコンピュータは、CPU(Central Processing Unit)と、CPUを動作させるためのメインクロックを生成する発振回路と、低周波数のサブクロックを受けてCPUおよび発振回路を間欠的に動作させるための制御を行う間欠動作制御部および発振制御部とを備え、サブクロックを受けて動作して、CPUが停止している実際の間欠時間を自動的に計測するタイマブロックが設けられていた。このようなマイクロコンピュータでは、時間を計測する際に、CPUが、間欠動作するとともに、スリープ状態からウェイクアップする毎に、今回ウェイクアップするまでの間欠時間をタイマブロックから読み取り、また、今回ウェイクアップしてからのCPUの動作時間を自らソフトウェア処理で計測し、さらにそれまでの間欠時間および動作時間の累積加算値を求めるようにして、極長い目標時間でも非常に少ない消費電力で計測可能となるようにしていた(例えば、特許文献1参照)。このように低消費電力で長時間の時間計測を可能にするようにしていたのは、車両等の長期間にわたる不使用でも、バッテリが上がる等の不具合が生じることがないようにするためである。
特開2002−202830号公報
ところで、従来から、車両等のECUで用いられるマイクロコンピュータでは、CPUで動作する制御プログラムにおいて、数十という時間計測処理が必要とされており、このため、各時間計測に使用する変数領域と処理ロジックを確保していて、メモリの使用量が増大するという課題があった。
また、何十というタイマにおいて計測される時間は、その長さがまちまちであり、計測する時間が長くなる程、クロック(単位時間)を数多くカウントしなければならなかったので、時間計測に使用する変数領域のメモリ量が増大するとともに、時間計測を扱う個所が多いためにCPUの処理負荷が大きいという課題があった。
さらに、計測する時間の長さが違うと共通のロジックで時間計測を処理できなかったので、タイマのカウントをそれぞれ別のロジックで実行するためにCPUのメモリ使用量が増大するという課題があった。
さらにまた、各アプリケーションで必要なタイマのカウントおよびチェックを行っており、その時点でカウントを行っていないタイマについてもチェックを行う必要があったので、このためにCPUの処理負荷が増大するという課題があった。
加えて、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいては、時間計測中にCPUをスリープさせないように開発者が注意して設計しなければならない、あるいはスリープ中に時間計測する場合にはスリープによって時間が延びることに注意して設計しなければならなかったので、開発者の負担が大きいという課題があった。
また、CPUが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいては、CPUが頻繁にスリープ/ウェイクアップを繰り返すことによって電力消費が増大するという課題があった。
そこで、本発明の第1の目的は、時間計測ロジック(タイマ:変数領域の管理)と、時間更新ロジック(チッカ)とを分離し、タイマをチッカに動的に登録することにより、必要最小限のタイマだけを扱うことを可能にし、CPUのメモリ使用量を大きく低減できるようにしたマイクロコンピュータを提供することにある。
また、本発明の第2の目的は、タイマが同じサイズの変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるようにしたマイクロコンピュータを提供することにある。
さらに、本発明の第3の目的は、CPUが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいて、低消費電力モードのスリープ状態でのスリープ時間分の遅れの処理を共通化できるようにしたマイクロコンピュータを提供することにある。
さらにまた、本発明の第4の目的は、CPUが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいて、チック間隔が短いチッカに1つでもタイマが登録されているときには、CPUのスリープを禁止することにより、CPUが頻繁にスリープ/ウェイクアップを繰り返すことによる電力消費を抑えるようにしたマイクロコンピュータを提供することにある。
一方、本発明の第5の目的は、時間計測工程(変数領域の管理工程)と、時間更新工程(チック工程)とを分離し、タイマをチッカに動的に登録することにより、必要最小限のタイマだけを扱うことを可能にし、CPUのメモリ使用量を大きく低減できるようにした時間計測方法を提供することにある。
また、本発明の第6の目的は、タイマが同じサイズの変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるようにした時間計測方法を提供することにある。
さらに、本発明の第7の目的は、CPUが通常動作モードと低消費電力モードとをとるマイクロコンピュータの時間計測方法においては、低消費電力モードのスリープ状態でのスリープ時間分の遅れの処理を共通化できるようにした時間計測方法を提供することにある。
さらにまた、本発明の第8の目的は、CPUが通常動作モードと低消費電力モードとをとるマイクロコンピュータの時間計測方法においては、チック間隔が短いチッカに1つでもタイマが登録されているときには、CPUのスリープを禁止することにより、CPUが頻繁にスリープ/ウェイクアップを繰り返すことによる電力消費を抑えるようにした時間計測方法を提供することにある。
課題を解決するための手段および発明の効果
請求項1記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項1記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができる。
請求項2記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項2記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項3記載のマイクロコンピュータは、請求項1または請求項2記載のマイクロコンピュータにおいて、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項3記載のマイクロコンピュータによれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項4記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項4記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項5記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項5記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項6記載のマイクロコンピュータは、請求項4または請求項5記載のマイクロコンピュータにおいて、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項6記載のマイクロコンピュータによれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項7記載のマイクロコンピュータは、CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項7記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項8記載のマイクロコンピュータは、CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項8記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項9記載のマイクロコンピュータは、請求項7または請求項8記載のマイクロコンピュータにおいて、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項9記載のマイクロコンピュータによれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項10記載のマイクロコンピュータは、CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項10記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができる。
請求項11記載のマイクロコンピュータは、CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項11記載のマイクロコンピュータによれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項12記載のマイクロコンピュータは、請求項10または請求項11記載のマイクロコンピュータにおいて、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項12記載のマイクロコンピュータによれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項13記載のマイクロコンピュータは、請求項7ないし請求項12のいずれかに記載のマイクロコンピュータにおいて、前記チッカが、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値までの残りのカウント値を演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする。請求項13記載のマイクロコンピュータによれば、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。さらに、チッカにタイマが登録されていないときには、マイクロコンピュータは、CPUのスリープ状態を続けることが可能になり、省電力化に資することができる。
請求項14記載のマイクロコンピュータは、請求項1ないし請求項13のいずれかに記載のマイクロコンピュータにおいて、前記タイマフレームワークが、チック間隔が短いチッカに関連付けられたタイマのうち1つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、CPUのスリープを禁止することを特徴とする。請求項14記載のマイクロコンピュータによれば、チック間隔が短いチッカでは時間計測中にCPUをスリープさせないようにできる。この結果、CPUが頻繁にスリープ/ウェイクアップを繰り返すことが防止されるので、電力消費を抑えることができる。また、スリープ可否は計測する時間の長さで一意に決まるので、開発者はスリープを注意深く考えて設計していたことから解放されるという効果がある。
請求項15記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項15記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができる。
請求項16記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項16記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項17記載の時間計測方法は、請求項15または請求項16記載の時間計測方法において、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、請求項17記載の時間計測方法によれば、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項18記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項18記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項19記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項19記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項20記載の時間計測方法は、請求項18または請求項19記載の時間計測方法において、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項20記載の時間計測方法によれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項21記載の時間計測方法は、CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項21記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項22記載の時間計測方法は、CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項22記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項23記載の時間計測方法は、請求項21または請求項22記載の時間計測方法において、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項23記載の時間計測方法によれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項24記載の時間計測方法は、CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項24記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができる。
請求項25記載の時間計測方法は、CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項25記載の時間計測方法によれば、時間計測のための共通ロジック(タイマ,チッカおよびタイマフレームワーク)を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減することができるとともに、CPUの処理負荷を低減できる。
請求項26記載の時間計測方法は、請求項24または請求項25記載の時間計測方法において、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項26記載の時間計測方法によれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
請求項27記載の時間計測方法は、請求項21ないし請求項26のいずれかに記載の時間計測方法において、前記チッカがタイマを進める工程においては、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値に対して演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする。請求項27記載の時間計測方法によれば、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。さらに、チッカにタイマが登録されていないときには、マイクロコンピュータは、CPUのスリープ状態を続けることが可能になり、省電力化に資することができる。
請求項28記載の時間計測方法は、請求項15ないし請求項27のいずれかに記載の時間計測方法において、前記タイマフレームワークがチッカに対してタイマを進めることを指令する工程においては、チック間隔が短いチッカに関連付けられたタイマのうち1つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、CPUのスリープを禁止することを特徴とする。請求項28記載の時間計測方法によれば、チック間隔が短いチッカでは時間計測中にCPUをスリープさせないようにできる。この結果、CPUが頻繁にスリープ/ウェイクアップを繰り返すことが防止されるので、電力消費を抑えることができる。また、スリープ可否は計測する時間の長さで一意に決まるので、開発者はスリープを注意深く考えて設計していたことから解放されるという効果がある。
時間計測(変数領域の管理)側のタイマと、時間更新(チック)側のチッカとを分離して、共通ロジックを用いることにより、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、CPUが使用するメモリ容量を低減するとともに、CPUの処理負荷を軽減した。
以下、本発明の実施例について図面を参照しながら詳細に説明する。
図3は、本発明の実施例1に係る時間計測方法が適用されるマイクロコンピュータ1の一例を示す回路ブロック図である。このマイクロコンピュータ1は、制御プログラムに従い動作するCPU3と、制御プログラムや固定データが予め格納されるROM5と、CPU3による演算結果を一時記憶するためのRAM7と、マイクロコンピュータ1の外部に設けられる発振素子8と協働してCPU3の動作クロックであるメインクロック(本実施例1では数MHz〜数十MHz)を生成するメイン発振回路9およびメイン発振回路9を制御する発振制御部11からなるメインクロック発生部13と、発振制御部11と協働してCPU3を間欠的に動作(間欠動作)させるための制御を行う間欠動作制御部15と、CPU3の間欠時間(すなわち、CPU3が間欠動作している際にスリープ状態である期間)を計測するタイマブロック17と、マイクロコンピュータ1の外部に設けられる発振素子18と協働してメインクロックよりも周波数が低いサブクロック(本実施例1では数十KHz)を生成するサブ発振回路19とを備えて構成されている。
本実施例1に係るマイクロコンピュータ1において、発振制御部11と、間欠動作制御部15と、タイマブロック17との各々は、サブ発振回路19で常時生成されるサブクロックを受けて動作する。
CPU3は、特定の動作停止命令を実行することによって自己の動作を停止することができる。そして、CPU3は、自ら動作を停止する時に(つまり、動作停止命令の実行時に)、間欠動作制御部15へ停止指令を出力するようになっている。
一方、間欠動作制御部15は、計測すべき目標時間がCPU3によってセットされる(書き込まれる)レジスタ15aを備えている。そして、間欠動作制御部15は、通常時には、メインクロック発生部13の発振制御部11に動作指令を与えて、発振制御部11にメイン発振回路9を動作させているが、CPU3からの停止指令を受けると(すなわち、CPU3が動作を停止すると)、発振制御部11に停止指令を出力して、発振制御部11にメイン発振回路9の動作を停止させるとともに、レジスタ15aにセットされている目標時間の計測を開始し、その目標時間が経過すると、発振制御部11に再び動作指令を出力して、発振制御部11にメイン発振回路9の動作を再開させる。さらに、間欠動作制御部15は、CPU3から停止指令を受けて、発振制御部11へ停止指令を出力した時に、タイマブロック17へ、CPU3の動作が停止したことを示す停止報知信号を出力する。
なお、目標時間は、サブクロックの数(すなわち、周期数)に基づいて計測される。また、本実施例1において、停止報知信号は、極短いパルス幅のワンショットパルス信号である。さらに、メインクロック発生部13の発振制御部11は、間欠動作制御部15からの動作指令と停止指令とに応じて、メイン発振回路9の動作と非動作とを切り替えるが、特に、間欠動作制御部15からの動作指令を受けてメイン発振回路9の動作を開始させた際には、その時点からメインクロックの周波数が安定すると見なされる所定の発振安定待ち時間が経過した時に、CPU3へ、該CPU3をスリープ状態からウェイクアップ状態へとウェイクアップさせるためのRUN信号を出力する。
また、発振安定待ち時間は、メインクロックの周波数が確実に安定してからCPU3をウェイクアップさせるために設けられており、サブクロックの数に基づいて計測される。そして、発振制御部11は、発振安定待ち時間がCPU3によってセットされる(書き込まれる)レジスタ11aを備えている。また、本実施例1において、発振制御部11は、RUN信号を、間欠動作制御部15から次に停止指令を受けるまで(つまり、メイン発振回路9の動作を次に停止させる時まで)継続して出力するようになっている。そして、そのRUN信号は、タイマブロック17にも供給されるようになっている。
タイマブロック17は、CPU3のスリープ状態/ウェイクアップ状態にかかわらず、間欠動作と連動してCPU3の間欠時間を自動的に計測する基本動作モードとしての第1の動作モードと、タイマブロック17(図3参照)から取得したカウント値である現在時刻を継続して計測するフリーランの第2の動作モードとの、2つの動作モードを有している。そして、タイマブロック17は、CPU3からの動作モード切替指令によって、動作モードが2つの動作モードの内のいずれかに設定されるとともに、時間の計測値がCPU3によって読み取り可能に構成されている。
さらに、タイマブロック17は、動作モードが第1の動作モードに設定されている場合には、間欠動作制御部15からの停止報知信号によって計測値が0にクリアされるとともに、発振制御部11からRUN信号が出力されている間は、計測動作を停止して計測値を保持するように構成されている。
また、タイマブロック17は、CPU3からのクリア指令によって、計測値のクリアが行われるとともに、CPU3からのカウント停止指令によって、計測動作の停止および計測値の保持が行われるように構成されている。具体的に説明すると、図4に示すように、タイマブロック17は、時間を計測する手段として、サブクロックを受けてカウントアップ動作するとともに、そのカウント値(時間の計測値に相当)が、CPU3に読み取られるカウンタ21を備えている。そして、カウンタ21は、リセット端子21aにハイレベルの信号が供給されると、カウント値が0にクリアされ、また、動作停止端子21bにハイレベルの信号が供給されている間、計測動作に相当するカウントアップ動作を停止してカウント値を保持するように構成されている。
さらに、タイマブロック17は、CPU3からの動作モード切替指令に該当する信号(以下、動作モード切替信号という)と間欠動作制御部15からの停止報知信号との論理積信号を出力するアンド回路23と、CPU3からの動作モード切替信号と発振制御部11からのRUN信号との論理積信号を出力するアンド回路25と、アンド回路23の出力とCPU3からのクリア指令に該当する信号(以下、クリア信号という)との論理和信号を、カウンタ21のリセット端子21aに供給するオア回路27と、アンド回路25の出力とCPU3からのカウント停止指令に該当する信号(以下、カウント停止信号という)との論理和信号を、カウンタ21の動作停止端子21bに供給するオア回路29とを備えている。
なお、タイマブロック17に入力される各信号は、ハイレベルがアクティブレベルである。また、CPU3からオア回路27へのクリア信号は、間欠動作制御部15からの停止報知信号と同様に、極短いパルス幅のワンショットパルス信号である。
このようなタイマブロック17では、CPU3からの動作モード切替信号がハイレベル(=論理1)の場合に、間欠動作制御部15からの停止報知信号が、アンド回路23およびオア回路27を介してカウンタ21のリセット端子21aに供給されるとともに、発振制御部11からのRUN信号が、アンド回路25およびオア回路29を介してカウンタ21の動作停止端子21bに供給されるため、タイマブロック17の動作モードが第1の動作モードに設定される。
つまり、この場合には、図5(A)に示すように、CPU3の動作が停止して間欠動作制御部15から停止報知信号が出力されると、カウンタ21のカウント値が0にクリアされてカウンタ21のカウント動作が最初から開始され、その後、発振制御部11からRUN信号が出力されてCPU3が動作を再開すると、再びCPU3の動作が停止して間欠動作制御部15から停止報知信号が出力されるまで、カウンタ21のカウント動作が停止してカウント値が保持される、という動作が繰り返されることとなる。
逆に、CPU3からの動作モード切替信号がローレベル(=論理0)の場合には、間欠動作制御部15からの停止報知信号がカウンタ21のリセット端子21aに供給されることと、発振制御部11からのRUN信号がカウンタ21の動作停止端子21bに供給されることとが、アンド回路23,25によって防止されるため、当該タイマブロック17の動作モードが第2の動作モードに設定される。
この場合には、間欠動作制御部15からの停止報知信号と、発振制御部11からのRUN信号とにかかわらず、カウンタ21は、フリーランの状態でカウントアップ動作を行うからである。さらに、タイマブロック17では、動作モードが上記2つの動作モードのいずれに設定されている場合でも、CPU3からクリア信号が出力されると、カウンタ21のカウント値が0にクリアされ、また、CPU3からカウント停止信号が出力されている間は、カウンタ21のカウント動作が停止してカウンタ21のカウント値が保持される。
以上のようなマイクロコンピュータ1では、CPU3が、間欠動作制御部15のレジスタ15aへ任意の時間をセットするとともに、実行すべき処理がなくて動作を停止してもよいと判断すると、動作停止命令を実行して、自己の動作を停止するとともに間欠動作制御部15へ停止指令を出力する、といった具合に制御プログラムを設定すれば、図5(A),(B)の上段に示すようなCPU3の間欠動作が実現されることとなる。
すなわち、CPU3が、動作を停止してもよいと判断して、自らの動作を停止するとともに間欠動作制御部15へ停止指令を出力すると、間欠動作制御部15が、発振制御部11に停止指令を出力してメイン発振回路9の動作を停止させるとともに、レジスタ15aにセットされている目標時間の計測を開始し、その目標時間が経過すると、発振制御部11に再び動作指令を出力してメイン発振回路9の動作を再開させる。そして、その時点から、発振安定待ち時間が経過すると、発振制御部11からCPU3へRUN信号が出力されて、CPU3がスリープ状態からウェイクアップ状態へとウェイクアップすることとなり、以後は、こうした動作が繰り返されることとにより、CPU3の間欠動作が実施される。
マイクロコンピュータ1では、サブクロックを受けて動作するタイマブロック17が設けられており、タイマブロック17は、動作モードがCPU3によって第1の動作モードに設定されている場合には、図5(A)を用いて説明したように、CPU3の実際の間欠時間(すなわち、CPU3が動作を停止して間欠動作制御部15が停止報知信号を出力した時点から、発振制御部11がCPU3へRUN信号を出力するまでの時間)を自動的に計測する。
よって、マイクロコンピュータ1によれば、CPU3がタイマブロック17の動作モードを第1の動作モードに設定して下記の如く動作するように、制御プログラムを設定すれば、たとえ数十時間や数日間といった非常に長い目標時間でも計測することができるとともに、その時間計測機能(タイマ機能)を、非常に少ない消費電力で実現することができる。
すなわち、図5(A)に示すように、CPU3は、時間を計測する際に、間欠動作するとともに、スリープ状態からウェイクアップして一時動作する毎に、今回ウェイクアップするまでの間欠時間Taに相当するカウント値をタイマブロック17のカウンタ21から読み取って、そのカウント値に基づき今回の実際の間欠時間Taを算出し、また、今回ウェイクアップしてからの動作時間(すなわち、当該CPU3がウェイクアップ状態となっている時間)Tbを自らソフトウェア処理で計測する。
このようなマイクロコンピュータ1によれば、CPU3だけでなくCPU3の動作クロックである高周波数のメインクロックが停止した状態で、時間の計測が遂行されるため、予定の動作を目標時間が経過してから実施する、というタイマ機能を、より少ない消費電力で実現することができ、しかも、計測すべき目標時間が数十時間や数日間といった具合に非常に長くても、確実に対応することができる。
また、マイクロコンピュータ1によれば、経過したことを判断する目標時間をソフトウェアによって自由に設定することができ、汎用性を損なうこともない。さらに、図5(A)に示したように、CPU3を定期的に動作させながら、継続して長い目標時間を計測することができるため、時間の計測中に処理を適宜変更することも可能になる。例えば、目標時間の計測を開始してから状況が変化して、実施予定の動作が不要になった場合には、そのことを検知して他の処理を実行することができ、また、定期的にRAM7内のデータ等をチェックして当該マイクロコンピュータ1の動作の安定性を確認することができ、動作の信頼性を向上させることができる。
図1は、本発明の実施例1に係る時間計測方法を実現するソフトウェア構成を表すUML(Unified Modeling Language)によるクラス図である。このソフトウェア構成は、クラスTimerと、クラスTickerと、クラスTimerFrameworkと、クラスApplicationと、インターフェースAlarmとから、その主要部が構成されている。
クラスTimerは、属性count,およびalarmTimeを持つ。属性countは、後述するカウント値count(図9参照)に相当するものであり、可視性がprivateであり、タイプはU2である。属性alarmTimeは、後述する目標カウント値alarmTime(図9参照)に相当するものであり、可視性がprivateであり、タイプはU2である。
また、クラスTimerは、操作start(),stop(),pause(),resume(),isActive(),およびaddCount()を持つ。各操作start(),stop(),pause(),resume(),isActive(),およびaddCount()の可視性はpublicである。また、登録先のクラスTickerへの関連を持っている。
クラスTickerは、属性lastUpdateTime,tickTime,およびisDosyを持つ。属性lastUpdateTimeは、後述する前回更新時刻lastUpdateTime(図12参照)に相当するものであり、可視性がprivateであり、タイプはU2である。属性tickTimeは、後述するチック間隔tickTime(図9参照)に相当するものであり、可視性がprivateであり、タイプはU2である。属性isDosyは、後述するチック間隔が短いチッカであるかどうか、すなわちスリープが可能なチッカであるかどうかを表すフラグisDozy(図6参照)であり、可視性がprivateであり、タイプは_Boolである。なお、本実施例1では、チッカTickerA,TickerBはチック間隔が短いチッカ、すなわちCPU3のスリープが禁止されたチッカであるものとする(図6参照)。
また、クラスTickerは、操作addTimer(),removeTimer(),hasTimer(),goForward(),isAwaken(),およびinitialize()を持つ。操作addTimer()は、可視性がpublicであり、タイプTimerのパラメータtimerがある。操作removeTimer()は、可視性がpublicであり、タイプTimerのパラメータtimerがある。操作hasTimer()は、可視性がpublicであり、タイプは_Boolである。操作goForward()は、可視性がpublic、タイプがVDであり、タイプU2のパラメータforwardTimeがある。操作isAwaken()は、可視性がpublicであり、タイプは_Boolである。操作initialize()は、可視性がpublic、タイプがVDであり、タイプU2のパラメータinitialTimeがある。
クラスTimerFrameworkは、ステレオタイプ<<Singleton>>として定義され、操作main(),initialize(),wakeup(),およびsetSLNG()を持つ。各操作main(),initialize(),wakeup(),およびsetSLNG()は、可視性がpublicである。
また、クラスTimerFrameworkは、チッカの集合tickersを持つ。
クラスApplicationは、1つのクラスTimerを持ち、インターフェースAlarmを実現する。クラスApplicationが保有するクラスTimerがそのインターフェースに対して時間経過を通知する。
インターフェースAlarmは、操作alarm()およびticked()を持つ。各操作alarm()およびticked()の可視性は、publicである。
図2は、図1に示したクラスのインスタンスと操作との関係を具体的に示す図である。クラスApplicationのインスタンスとして、アプリケーションApplicationA1,ApplicationA2,およびApplicationDが生成されている。クラスTimerのインスタンスとして、タイマApplicationA1Timer,ApplicationA2Timer,およびApplicationDTimerが生成されている。クラスTickerのインスタンスとして、4つのチッカTickerA,TickerB,TickerC,およびTickerDが生成されている.
図6は、クラスTickerのチッカTickerA,TickerB,TickerC,およびTickerDのチック間隔tickTime,最大計測時間およびスリープ可否isDosyを示す表である。チッカTickerAのチック間隔tickTime(下付のAは、チッカTickerAのチック間隔であることを示す)は5msであり、所定サイズ2バイトの変数領域で最大5分27秒を計測することができる。チッカTickerBのチック間隔tickTime(下付のBは、チッカTickerBのチック間隔であることを示す)は20msであり、所定サイズ2バイトの変数領域で最大21分50秒を計測することができる。チッカTickerCのチック間隔tickTime(下付のCは、チッカTickerCのチック間隔であることを示す)は100msであり、所定サイズ2バイトの変数領域で最大1時間49分を計測することができる。チッカTickerDのチック間隔tickTime(下付のDは、チッカTickerDのチック間隔であることを示す)は1分であり、所定サイズ2バイトの変数領域で最大45日12時間を計測することができる。
図7(A)は、スリープすることを考慮せずに設計した場合に時間の進みが実時間に対して遅れてしまうことを説明するタイミングチャート、図7(B)は、本実施例1に係る時間計測方法によりチッカTickerA,TickerB,TickerC,およびTickerDがカウントするタイミングを制御して時間の進みを実時間と同等とすることを説明するタイミングチャートである。図7(A)に示すように、スリープすることを考慮せずに設計すると、時間の進みが実時間に対して遅れてしまう。そうならないように、従来は、各アプリケーション開発者がタイマをカウントしていた。しかし、本実施例1の時間計測方法によって、チッカTickerA,TickerB,TickerC,およびTickerDがカウントするタイミングを制御できるので、全てのタイマを図7(B)のように扱うことができる。
図8は、タイマApplicationA1Timer,ApplicationA2Timer,ApplicationA3Timer,ApplicationA4Timerが登録されるチェッカTickerAのスタックの遷移を例示する図である。タイマApplicationA1Timer,ApplicationA2Timer,ApplicationA3Timernがすでに登録されているスタックにタイマApplicationA4Timerを追加する場合には、タイマApplicationA1Timer,ApplicationA2Timer,ApplicationA3Timernのポインタ&A1Timer,&A2Timer,&A3Timerが積まれているスタックの次のスタック位置に該タイマApplicationA4Timerのポインタ&A4Timerを積む。次に、スタックからタイマApplicationA2Timerが抹消される場合には、タイマApplicationA2Timerのポインタ&A2Timerが積まれていたスタック位置にダミーのポインタが一旦格納された後に、ダミーのポインタが除去されて、タイマApplicationA3Timer,ApplicationA4Timerが順次詰められる。なお、空いたスタック位置には、NULLポインタが格納される。
図9は、タイマApplicationA1Timer,ApplicationA2Timer,ApplicationDTimerが目標時間tの計測を開始する処理を示すフローチャートである。
図10は、図9中の操作addTimer()のより詳細な処理を示すフローチャートである。
図11は、タイマフレームワークTimerFrameworkの処理を示すフローチャートである。
図12は、図11中の操作goForward()のより詳細な処理を示すフローチャートである。
図13は、図12中の操作addCount()のより詳細な処理を示すフローチャートである。
図14は、図13中の操作removeTimer()のより詳細な処理を示すフローチャートである。
次に、このように構成された実施例1に係るマイクロコンピュータ1の動作について、図2に示す一例に基づいて説明する。
例えば、クラスTickerのインスタンスとして、4つのチッカTickerA,TickerB,TickerC,TickerDを生成したとする(図6参照)。チッカTickerAは、5msのチック間隔tickTimeを持つチッカである。チッカTickerBは、20msのチック間隔tickTimeを持つチッカである。チッカTickerCは、100msのチック間隔tickTimeを持つチッカである。チッカTickerDは、1minのチック間隔tickTimeを持つチッカである。
(1) アプリケーションApplicationA1によるタイマApplicationA1Timerに対する操作start(100ms)の実行
いま、クラスApplicationのインスタンスであるアプリケーションApplicationA1が100msの目標時間tA1(下付のA1は、アプリケーションApplicationA1の目標時間であることを示す)を計測するアプリケーションである場合、アプリケーションApplicationA1は、クラスTimerのインスタンスであるタイマApplicationA1Timerを保有する。タイマApplicationA1Timerは、所定サイズ2バイトの変数領域を有し、5msのチック間隔tickTimeを持つチッカTickerAに関連付けられる。
アプリケーションApplicationA1は、目標時間tA1(=100ms)を計測するタイミングになると、自身が保有するタイマApplicationA1Timerに対して操作start(100ms)を実行する。
(2) タイマApplicationA1TimerによるチッカTickerAに対する操作addTimer()の実行
アプリケーションApplicationA1から操作start(100ms)の実行を受けると、タイマApplicationA1Timerは、目標時間tA1(=100ms)の計測を開始するために、カウント値countA1を0に初期化するとともに、目標時間tA1(=100ms)をチック間隔tickTime(=5ms)で割った値20を目標カウント値alarmTimeA1(下付のA1は、アプリケーションApplicationA1の目標カウント値であることを示す)に設定する(図9のステップS101)。次に、タイマApplicationA1Timerは、タイマApplicationA1Timer自身をチッカTickerAに登録するために操作addTimer()をチッカTickerAに対して実行する(図9のステップS102)。
タイマApplicationA1Timerから操作addTimer()の実行を受けると、チッカTickerAは、チッカTickerAのスタック(図8参照)にタイマApplicationA1Timerがすでに登録済みかどうかを判定し(図10のステップS201)、すでに登録済みでなければ、スタックが一杯かどうかを判定する(図10のステップS202)。スタックが一杯でなければ、チッカTickerAは、スタックの末尾にタイマApplicationA1Timerへのポインタを格納し(図10のステップS203)、末尾を1つ進め(図10のステップS204)、末尾にNULLポインタを格納する(図10のステップS205)。
(3) アプリケーションApplicationA2によるタイマApplicationA2Timerに対する操作start(200ms)の実行
クラスApplicationのインスタンスであるアプリケーションApplicationA2が200msの目標時間tA2(下付のA2は、アプリケーションApplicationA2の目標時間であることを示す)を計測するアプリケーションである場合、アプリケーションApplicationA2は、クラスTimerのインスタンスであるタイマApplicationA2Timerを保有する。タイマApplicationA2Timerは、所定サイズ2バイトの変数領域を有し、5msのチック間隔tickTimeを持つチッカTickerAに関連付けられる。
アプリケーションApplicationA2は、目標時間tA2(=200ms)を計測するタイミングになると、自身が保有するタイマApplicationA2Timerに対して操作start(200ms)を実行する。
(4) タイマApplicationA2TimerによるチッカTickerAに対する操作addTimer()の実行
アプリケーションApplicationA2から操作start(200ms)の実行を受けると、タイマApplicationA2Timerは、目標時間tA2(=200ms)の計測を開始するために、カウント値countA2を0に初期化するとともに、目標時間tA2(=200ms)をチック間隔tickTime(=5ms)で割った値40を目標カウント値alarmTimeA2(下付のA2は、アプリケーションApplicationA2の目標カウント値であることを示す)に設定する(図9のステップS101)。次に、タイマApplicationA2Timerは、タイマApplicationA2Timer自身をチッカTickerAに登録するために操作addTimer()をチッカTickerAに対して実行する(図9のステップS102)。
タイマApplicationA2Timerから操作addTimer()の実行を受けると、チッカTickerAは、チッカTickerAのスタック(図8参照)にタイマApplicationA2Timerがすでに登録済みかどうかを判定し(図10のステップS201)、すでに登録済みでなければ、スタックが一杯かどうかを判定する(図10のステップS202)。スタックが一杯でなければ、チッカTickerAは、スタックの末尾にタイマApplicationA2Timerへのポインタを格納し(図10のステップS203)、末尾を1つ進め(図10のステップS204)、末尾にNULLポインタを格納する(図10のステップS205)。
このように、1つのチッカTickerAに対して、複数のタイマApplicationA1Timer,ApplicationA2Timerが存在できる。また、複数存在するタイマApplicationA1Timer,ApplicationA2Timerは、同じロジック(クラスTimer)を共有している。
(5) タイマフレームワークTimerFrameworkによる全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goForward()の実行
タイマフレームワークTimerFrameworkは、基準クロック間隔δ(=5ms)で全てのチッカTickerA,TickerB,TickerC,TickerDに対して操作goForward()を実行する(図11のステップS301,S302)。まず、チッカTickerAに対して操作goForward()を実行する。
タイマフレームワークTimerFrameworkから操作goForward()の実行を受けると、チッカTickerAは、チェッカTickerAに登録されているタイマApplicationA1Timer,ApplicationA2Timerをチック間隔tickTime(=5ms)でチックするために、タイマブロック17(図3参照)から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeを引いた値を経過時間etに設定するとともにチック数ftを0クリアし(図12のステップS211)、経過時間etがチック間隔tickTime(=5ms)以上であるかどうかを判定する(図12のステップS212)。経過時間etがチック間隔tickTime(=5ms)以上であれば、チッカTickerAは、経過時間etからチック間隔tickTime(=5ms)を引いた値を経過時間etに設定するとともにチック数ftを1つインクリメントしてから(図12のステップS213)、ステップS212に制御を戻す。経過時間etがチック間隔tickTime(=5ms)未満であれば、チッカTickerAは、チック数ftが0より大きいかどうかを判定し(図12のステップS214)、チック数ftが0以下であればステップS218に制御を移す。チック数ftが0より大きければ、チッカTickerAは、チック数ftだけタイマApplicationA1Timer,ApplicationA2Timerを進めるために操作addCount()を、チッカTickerAに登録されている全てのタイマApplicationA1Timer,ApplicationA2Timerに対して繰り返す(図12のステップS215,S216)。次に、チッカTickerAは、前回更新時刻lastUpdateTimeにチック数ftとチック間隔tickTime(=5ms)との積を加えた値を前回更新時刻lastUpdateTimeに設定する(図12のステップS217)。続いて、チッカTickerAは、登録を抹消されたタイマがあれば、スタックから取り除く(図12のステップS218)。
次に、チッカTickerB,TickerC,TickerDに対しても操作goForward()が実行されるが、この時点でいずれのチッカTickerB,TickerC,TickerDにも登録されているタイマがないので、なにも行われない。
全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goFoward()の実行完了後(図11のステップS301,S302)、タイマフレームワークTimerFrameworkは、チック間隔tickTime(=5ms),tickTime(=20ms)が短いチッカTickerA,TickerBに対してタイマが登録されているかどうかを判定し(図11のステップS303,S304)、チッカTickerAにタイマApplicationA1Timer,ApplicationA2Timerが登録されているので、スリープ禁止フラグをセットする(図11のステップS305)。これにより、以降はCPU3はスリープしない通常動作モードとなる。
(6) チッカTickerAによるタイマApplicationA1Timerに対する操作addCount()の実行
チッカTickerAから操作addCount()の実行を受けると、タイマApplicationA1Timerは、カウント値countA1とチック数ftとの和が目標カウント値alarmTimeA1(=20)以上であるかどうかを判定し(図13のステップS111)、カウント値countA1とチック数ftとの和が目標カウント値alarmTimeA1(=20)未満であれば、カウント値countA1とチック数ftとの和をカウント値countA1に設定する(図13のステップS112)。一方、カウント値countA1とチック数ftとの和が目標カウント値alarmTimeA1(=20)以上であれば、タイマApplicationA1Timerは、操作removeTimer()をチェッカTickerAに対して実行することにより、チッカTickerAからタイマApplicationA1Timerの登録を抹消する(図13のステップS113)。
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationA1Timerは、カウント値countA1を0に初期化するとともに目標カウント値alarmTimeA1(=20)を0に初期化し(図13のステップS114)、目標時間tA1(=100ms)を計測したことをアプリケーションApplicationA1に対して操作alarm()を実行することによりアプリケーションApplicationA1に通知する(図13のステップS115)。
なお、操作addCount()は、チッカTickerAに登録されているタイマApplicationA2Timerに対しても実行されるが、目標カウント値alarmTimeA2が40のタイマApplicationA2Timerでは、カウント値countA2とチック数ftとの和がカウント値countA2に設定されるだけである(図13のステップS112)。
(7) タイマApplicationA1TimerによるチッカTickerAに対する操作removeTimer()の実行
チック間隔tickTime(=5ms)毎のカウント値countA1のカウントアップによりカウント値countA1とチック数ftとの和が目標カウント値alarmTimeA1(=20)以上になると(図13のステップS111)、タイマApplicationA1Timerは、操作removeTimer()をチッカTickerAに対して実行する(図13のステップS113)。
タイマApplicationA1Timerから操作removeTimer()の実行を受けると、チッカTickerAは、タイマApplicationA1Timerがすでに登録済みかどうかを判定し(図14のステップS221)、登録済みであるので、タイマApplicationA1TimerをチッカTickerAから抹消するために、タイマApplicationA1Timerへのポインタをダミーに置き換える(図14のステップS222)。
(8) タイマApplicationA1TimerによるアプリケーションApplicationA1に対する操作alarm()の実行
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationA1Timerは、カウント値countA1を0に初期化するとともに目標カウント値alarmTimeA1(=20)を0に初期化し(図13のステップS114)、目標時間tA1(=100ms)を計測したことをアプリケーションApplicationA1に対して操作alarm()を実行することによりアプリケーションApplicationA1に通知する(図13のステップS115)。
(9) タイマフレームワークTimerFrameworkによる全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goForward()の実行
タイマフレームワークTimerFrameworkは、基準クロック間隔δ(=5ms)で全てのチッカTickerA,TickerB,TickerC,TickerDに対して操作goForward()を実行する(図11のステップS301,S302)。まず、チッカTickerAに対して操作goForward()を実行する。
タイマフレームワークTimerFrameworkから操作goForward()の実行を受けると、チッカTickerAは、チェッカTickerAにこの時点で登録されているタイマApplicationA2Timerをチック間隔tickTime(=5ms)でチックするために、タイマブロック17(図3参照)から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeを引いた値を経過時間etに設定するとともにチック数ftを0クリアし(図12のステップS211)、経過時間etがチック間隔tickTime(=5ms)以上であるかどうかを判定する(図12のステップS212)。経過時間etがチック間隔tickTime(=5ms)以上であれば、チッカTickerAは、経過時間etからチック間隔tickTime(=5ms)を引いた値を経過時間etに設定するとともにチック数ftを1つインクリメントしてから(図12のステップS213)、ステップS212に制御を戻す。経過時間etがチック間隔tickTime(=5ms)未満であれば、チッカTickerAは、チック数ftが0より大きいかどうかを判定し(図12のステップS214)、チック数ftが0以下であればステップS218に制御を移す。チック数ftが0より大きければ、チッカTickerAは、チック数ftだけタイマApplicationA2Timerを進めるために操作addCount()を登録されている全てのタイマApplicationA2Timerに対して繰り返す(図12のステップS215,S216)。次に、チッカTickerAは、前回更新時刻lastUpdateTimeにチック数ftとチック間隔tickTime(=5ms)との積を加えた値を前回更新時刻lastUpdateTimeに設定する(図12のステップS217)。続いて、チッカTickerAは、登録を抹消されたタイマがあれば、スタックから取り除く(図12のステップS218)。
次に、チッカTickerB,TickerC,TickerDに対しても操作goForward()が実行されるが、この時点ではいずれのチッカTickerB,TickerC,TickerDにも登録されているタイマがないので、なにも行われない。
全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goForward()の実行完了後(図11のステップS301,S302)、タイマフレームワークTimerFrameworkは、チック間隔tickTime(=5ms),tickTime(=20ms)が短いチッカTickerA,TickerBに対してタイマが登録されているかどうかを判定し(図11のステップS303,S304)、チッカTickerAにタイマApplicationA2Timerが登録されているので、スリープ禁止フラグをセットする(図11のステップS305)。これにより、以降はCPU3はスリープしない通常動作モードとなる。
(10) チッカTickerAによるタイマApplicationA2Timerに対する操作addCount()の実行
チッカTickerAから操作addCount()の実行を受けると(図12のステップS216)、タイマApplicationA2Timerは、カウント値countA2とチック数ftとの和が目標カウント値alarmTimeA2(=40)以上であるかどうかを判定し(図13のステップS111)、カウント値countA2とチック数ftとの和が目標カウント値alarmTimeA2(=40)未満であれば、カウント値countA2とチック数ftとの和をカウント値countA2に設定する(図13のステップS112)。一方、カウント値countA2とチック数ftとの和が目標カウント値alarmTimeA2(=40)以上であれば、タイマApplicationA2Timerは、操作removeTimer()をチェッカTickerAに対して実行することにより、チッカTickerAからタイマApplicationA2Timerの登録を抹消する(図13のステップS113)。
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationA2Timerは、カウント値countA2を0に初期化するとともに目標カウント値alarmTimeA2(=40)を0に初期化し(図13のステップS114)、目標時間tA2(=200ms)を計測したことをアプリケーションApplicationA2に対して操作alarm()を実行することによりアプリケーションApplicationA2に通知する(図13のステップS115)。
(11) タイマApplicationA2TimerによるチッカTickerAに対する操作removeTimer()の実行
チック間隔tickTime(=5ms)毎のカウント値countA2のカウントアップによりカウント値countA2とチック数ftとの和が目標カウント値alarmTimeA2(=40)以上になると(図13のステップS111)、タイマApplicationA2Timerは、操作removeTimer()をチッカTickerAに対して実行する(図13のステップS113)。
タイマApplicationA2Timerから操作removeTimer()の実行を受けると、チッカTickerAは、タイマApplicationA2Timerがすでに登録済みかどうかを判定し(図14のステップS221)、登録済みであるので、タイマApplicationA2TimerをチッカTickerAから抹消するために、タイマApplicationA2Timerへのポインタをダミーに置き換える(図14のステップS222)。
(12) タイマApplicationA2TimerによるアプリケーションApplicationA2に対する操作alarm()の実行
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationA2Timerは、カウント値countA2を0に初期化するとともに目標カウント値alarmTimeA2(=40)を0に初期化し(図13のステップS114)、目標時間tA2(=200ms)を計測したことをアプリケーションApplicationA2に対して操作alarm()を実行することによりアプリケーションApplicationA2に通知する(図13のステップS115)。
(13) アプリケーションApplicationDによるタイマApplicationDTimerに対する操作start(7days)の実行
クラスApplicationのインスタンスであるアプリケーションApplicationDが7日間の目標時間t(下付のDは、アプリケーションApplicationDの目標時間であることを示す)を計測する場合、アプリケーションApplicationDは、クラスTimerのインスタンスである7日間を計測するタイマApplicationDTimerを保有する。タイマApplicationDTimerは、所定サイズ2バイトの変数領域を有し、1minのチック間隔tickTime(下付のDは、アプリケーションApplicationDのチック間隔であることを示す)を持つチッカTickerDに関連付けられる。
アプリケーションApplicationDは、目標時間t(=7days)を計測するタイミングになると、自身が保有するタイマApplicationDTimerに対して操作start(7days)を実行する。
(14) タイマApplicationDTimerによるチッカTickerDに対する操作addTimer()の実行
アプリケーションApplicationDから操作start(7days)の実行を受けると、タイマApplicationDTimerは、目標時間t(=7days)の計測を開始するために、カウント値countを0に初期化するとともに、目標時間t(=7days)をチック間隔tickTime(=1min)で割った値10080を目標カウント値alarmTime(下付のDは、アプリケーションApplicationDの目標カウント値であることを示す)に設定する(図9のステップS101)。次に、タイマApplicationDTimerは、タイマApplicationDTimer自身をチッカTickerDに登録するために操作addTimer()をチッカTickerDに対して実行する(図9のステップS102)。
タイマApplicationDTimerから操作addTimer()の実行を受けると、チッカTickerDは、チッカTickerDのスタック(図8参照)にタイマApplicationDTimerがすでに登録済みかどうかを判定し(図12のステップS211)、すでに登録済みでなければ、スタックが一杯かどうかを判定する(図12のステップS212)。スタックが一杯でなければ、チッカTickerDは、スタックの末尾にタイマApplicationDTimerへのポインタを格納し(図12のステップS213)、末尾を1つ進め(図12のステップS214)、末尾にNULLポインタを格納する(図12のステップS215)。
タイマApplicationA1Timer,ApplicationA2TimerとタイマApplicationDTimerとではチック間隔tickTime(=5ms)とチック間隔tickTime(=1min)とが違うが、チック間隔tickTime(=5ms)とチック間隔tickTime(=1min)とは関連付けるチッカTickerAとチッカTickerDとを変えるだけでよいので、同じロジック(クラスTimer)を使用することができる。
(15) タイマフレームワークTimerFrameworkによる全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goForward()の実行
タイマフレームワークTimerFrameworkは、基準クロック間隔δ(=5ms)で操作goForward()を全てのチッカTickerA,TickerB,TickerC,TickerDに対して実行する(図11のステップS301,S302)。しかし、チッカTickerA,TickerB,TickerCについては、この時点で登録されているタイマがないので、なにも行われない。
一方、タイマフレームワークTimerFrameworkからチッカTickerDに対して操作goForward()が実行されると、チッカTickerDは、チェッカTickerDに登録されているタイマApplicationDTimerをチック間隔tickTime(=1min)でチックするために、タイマブロック17(図3参照)から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeを引いた値を経過時間etに設定するとともにチック数ftを0クリアし(図12のステップS211)、経過時間etがチック間隔tickTime(=1min)以上であるかどうかを判定する(図12のステップS212)。経過時間etがチック間隔tickTime(=1min)以上であれば、チッカTickerDは、経過時間etからチック間隔tickTime(=1min)を引いた値を経過時間etに設定するとともにチック数ftを1つインクリメントしてから(図12のステップS213)、ステップS212に制御を戻す。経過時間etがチック間隔tickTime(=1min)未満であれば、チッカTickerDは、チック数ftが0より大きいかどうかを判定し(図12のステップS214)、チック数ftが0以下であればステップS218に制御を移す。チック数ftが0より大きければ、チッカTickerDは、チック数ftだけタイマApplicationDTimer
を進めるために操作addCount()をチッカTickerDに登録されている全てのタイマApplicationDTimerに対して繰り返す(図12のステップS215,S216)。次に、チッカTickerDは、前回更新時刻lastUpdateTimeにチック数ftとチック間隔tickTime(=1min)との積を加えた値を前回更新時刻lastUpdateTimeに設定する(図12のステップS217)。続いて、チッカTickerDは、登録を抹消されたタイマがあれば、スタックから取り除く(図12のステップS218)。
全てのチッカTickerA,TickerB,TickerC,TickerDに対する操作goForward()の実行完了後(図11のステップS301,S302)、タイマフレームワークTimerFrameworkは、チック間隔が短いチッカTickerA,TickerBに対してタイマが登録されているかどうかを判定し(図11のステップS304)、この時点でチッカTickerA,TickerBにタイマが登録されていないので、スリープ禁止フラグをクリアする(図11のステップS306)。これにより、以降はCPU3はスリープし得る低消費電力モードになる。
(16) チッカTickerDによるタイマApplicationDTimerに対する操作addCount()の実行
チッカTickerDから操作addCount()の実行を受けると、タイマApplicationDTimerは、カウント値countとチック数ftとの和が目標カウント値alarmTime(=10080)以上であるかどうかを判定し(図13のステップS111)、カウント値countとチック数ftとの和が目標カウント値alarmTime(=10080)未満であれば、カウント値countとチック数ftとの和をカウント値countに設定する(図13のステップS112)。一方、カウント値countとチック数ftとの和が目標カウント値alarmTime(=10080)以上であれば、タイマApplicationDTimerは、操作removeTimer()をチェッカTickerDに対して実行することにより、チッカTickerDからタイマApplicationDTimerの登録を抹消する(図13のステップS113)。
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationDTimerは、カウント値countを0に初期化するとともに目標カウント値alarmTime(=10080)を0に初期化し(図13のステップS114)、目標時間t(=7days)を計測したことをアプリケーションApplicationDに対して操作alarm()を実行することによりアプリケーションApplicationDに通知する(図13のステップS115)。
(17) タイマApplicationDTimerによるチッカTickerDに対する操作removeTimer()の実行
チック間隔tickTime(=1min)毎のカウント値countのカウントアップによりカウント値countとチック数ftとの和が目標カウント値alarmTime(=10080)以上になると(図13のステップS111)、タイマApplicationDTimerは、チッカTickerDから自身の登録を抹消するために、チッカTickerDに対して操作removeTimer()を実行する(図13のステップS113)。
タイマApplicationDTimerから操作removeTimer()の実行を受けると、チッカTickerDは、タイマApplicationDTimerがすでに登録済みかどうかを判定し(図14のステップS221)、登録済みであるので、タイマApplicationA1Timerへのポインタをダミーに置き換えることにより抹消する(図14のステップS222)。
(18) タイマApplicationDTimerによるアプリケーションApplicationDに対する操作alarm()の実行
操作removeTimer()の実行完了後(図13のステップS113)、タイマApplicationDTimerは、カウント値countを0に初期化するとともに目標カウント値alarmTime(=10080)を0に初期化し(図13のステップS114)、目標時間t(=7days)を計測したことをアプリケーションApplicationDに対して操作alarm()を実行することによりアプリケーションApplicationDに通知する(図13のステップS115)。
本実施例1によれば、チッカTickerAにタイマApplicationA1Timer,ApplicationA2Timerが動的に登録され、チッカTickerDにタイマApplicationDTimerが動的に登録されるので、CPU3の処理負荷を低減できる。
詳しくは、あらかじめタイマApplicationA1Timer,ApplicationA2TimerがチッカTickerAに登録され、タイマApplicationDTimerがチッカTickerDに登録されているならば(静的に登録されているならば)、タイマフレームワークTimerFrameworkが時間を進めるようとするたびに、チッカTickerA,TickerDは登録されている全てのタイマに対して、目標時間を計測中であるかどうかをチェックして、タイマをカウントアップしてよいかどうかを判断しなければならない。
これに対して、タイマApplicationA1Timer,ApplicationA2TimerをチッカTickerAに動的に登録し、タイマApplicationDTimerをチッカTickerDに動的に登録する場合は、チッカTickerA,TickerDは、登録されているタイマApplicationA1Timer,ApplicationA2TimerおよびタイマApplicationDTimerを無条件でカウントアップするだけでよい。全てのタイマが同時に動作することはほとんどないので、扱うタイマの数も、非常に少なくなる。もし、いかなるタイマも動作していなければ、チッカには何も登録されていないので、何もしなくてすむ。アプリケーションApplicationA1Timerだけが動作していれば、チッカTickerAは、アプリケーションApplicationA1Timerをカウントアップするだけでよい。
なお、上記実施例1の動作の説明では、図2に示す一例に基づいて説明したが、動作は生成するタイマの数やチッカの数に応じて異なってくる。詳細な説明は省略するが、タイマの数やチッカの数が異なる場合にも、動作が容易に類推可能なことはいうまでもない。
また、タイマをチッカに動的に登録するようにしたが、タイマをチッカにあらかじめ静的に関連付けておき、タイマからの目標カウント値がセットされていなければ、タイマを進めないようにすることにより、同様の時間計測を実現することができる。
さらに、タイマがチッカからのチック数をカウント値に加算し、カウント値が目標カウント値を越えたときにアプリケーションに対して目標時間を計測したことを通知するようにしたが、逆にチッカからのチック数で目標カウント値を減算し、目標カウント値がゼロ以下になったときにアプリケーションに対して目標時間を計測したことを通知するようにしてもよい。つまり、目標時間の計測をどのような演算によって判断するかは適宜選択可能である。
以上、本発明の実施例を説明したが、これはあくまでも例示にすぎず、本発明はこれに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。特に、図3ないし図5を用いて説明したマイクロコンピュータ1は、単なる一例であって、本発明の時間計測方法が適用されるマイクロコンピュータの構成がこれに限られるわけでないことはいうまでもない。
本発明の実施例1に係る時間計測方法を実現するソフトウェア構成を表すUMLによるクラス図。 図1に示したクラスのインスタンスと操作との関係を具体的に示す図。 本実施例1に係る時間計測方法が適用されるマイクロコンピュータの一例を示す回路ブロック図。 図3中のタイマブロックの構成を説明するブロック図。 図3のマイクロコンピュータの使用方法および作用を説明するタイミングチャート。 図2中のチッカのチック間隔,最大計測時間およびスリープ可否を表すテーブル。 (A)は、スリープすることを考慮せずに設計した場合に時間の進みが実時間に対して遅れてしまうことを説明するタイミングチャート、(B)は、本実施例1によりチッカがカウントするタイミングを制御して時間の進みを実時間と同等とすることを説明するタイミングチャート。 図2中のタイマが登録されるチェッカのスタックの遷移を例示する図。 図2中のタイマが目標時間の計測を開始する処理を示すフローチャート。 図9中の操作addTimer()のより詳細な処理を示すフローチャート。 図2中のタイマフレームワークの処理を示すフローチャート。 図11中の操作goForward()のより詳細な処理を示すフローチャート。 図12中の操作addCount()のより詳細な処理を示すフローチャート。 図13中の操作removeTimer()のより詳細な処理を示すフローチャート。
符号の説明
1 マイクロコンピュータ
3 CPU
5 ROM
7 RAM
8,18 発振素子
9 メイン発振回路
11 発振制御部
13 メインクロック発生部
15 間欠動作制御部
11a,15a レジスタ
17 タイマブロック
19 サブ発振回路
21 カウンタ
21a リセット端子
21b 動作停止端子
23,25 アンド回路
27,29 オア回路
Alarm アラームのクラス
Application アプリケーションのクラス
ApplicationA1,ApplicationA2,ApplicationD アプリケーション
ApplicationA1Timer,ApplicationA2Timer,ApplicationDTimer タイマ
Ticker チッカのクラス
TickerA,TickerB,TickerC,TickerD チッカ
Timer タイマのクラス
TimerFramework タイマフレームワークのクラス

Claims (28)

  1. 自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  2. 自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  3. 前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項1または請求項2記載のマイクロコンピュータ。
  4. 自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  5. 自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  6. 前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項4または請求項5記載のマイクロコンピュータ。
  7. CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
    自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  8. CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
    自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  9. 前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項7または請求項8記載のマイクロコンピュータ。
  10. CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
    自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  11. CPU,タイマブロックおよび間欠動作制御部を備え、CPUが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
    自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
    アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
    タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
    基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
    を備えることを特徴とするマイクロコンピュータ。
  12. 前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項10または請求項11記載のマイクロコンピュータ。
  13. 前記チッカが、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値までの残りのカウント値を演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする請求項7ないし請求項12のいずれかに記載のマイクロコンピュータ。
  14. 前記タイマフレームワークが、チック間隔が短いチッカに関連付けられたタイマのうち1つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、CPUのスリープを禁止することを特徴とする請求項1ないし請求項13のいずれかに記載のマイクロコンピュータ。
  15. マイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
    タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
    を含むことを特徴とする時間計測方法。
  16. マイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、
    タイマから登録を指令されたときにチッカがタイマを登録する工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
    タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
    を含むことを特徴とする時間計測方法。
  17. 前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項15または請求項16記載の時間計測方法。
  18. マイクロコンピュータの時間計測方法において、
    アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、
    タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
    タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程と
    を含むことを特徴とする時間計測方法。
  19. マイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、
    タイマから登録を指令されたときにチッカがタイマを登録する工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
    タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程と
    を含むことを特徴とする時間計測方法。
  20. 前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項18または請求項19記載の時間計測方法。
  21. CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
    タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
    を含むことを特徴とする時間計測方法。
  22. CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、
    タイマから登録を指令されたときにチッカがタイマを登録する工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
    タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
    を含むことを特徴とする時間計測方法。
  23. 前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項21または請求項22記載の時間計測方法。
  24. CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
    アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定することを該チッカに指令する工程と、
    タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
    タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程と
    を含むことを特徴とする時間計測方法。
  25. CPU,タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
    アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
    アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、
    タイマから登録を指令されたときにチッカがタイマを登録する工程と、
    タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
    タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
    タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程と
    を含むことを特徴とする時間計測方法。
  26. 前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項24または請求項25記載の時間計測方法。
  27. 前記チッカがタイマを進める工程においては、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値に対して演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする請求項21ないし請求項26のいずれかに記載の時間計測方法。
  28. 前記タイマフレームワークがチッカに対してタイマを進めることを指令する工程においては、チック間隔が短いチッカに関連付けられたタイマのうち1つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、CPUのスリープを禁止することを特徴とする請求項15ないし請求項27のいずれかに記載の時間計測方法。
JP2004372849A 2004-12-24 2004-12-24 マイクロコンピュータおよび時間計測方法 Active JP4380530B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004372849A JP4380530B2 (ja) 2004-12-24 2004-12-24 マイクロコンピュータおよび時間計測方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004372849A JP4380530B2 (ja) 2004-12-24 2004-12-24 マイクロコンピュータおよび時間計測方法

Publications (2)

Publication Number Publication Date
JP2006178822A true JP2006178822A (ja) 2006-07-06
JP4380530B2 JP4380530B2 (ja) 2009-12-09

Family

ID=36732878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004372849A Active JP4380530B2 (ja) 2004-12-24 2004-12-24 マイクロコンピュータおよび時間計測方法

Country Status (1)

Country Link
JP (1) JP4380530B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014526733A (ja) * 2011-09-12 2014-10-06 マイクロソフト コーポレーション サスペンド状態及び実行状態におけるプロセスの管理
US9671816B2 (en) 2011-08-10 2017-06-06 Microsoft Technology Licensing, Llc Suspension and/or throttling of processes for connected standby

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9671816B2 (en) 2011-08-10 2017-06-06 Microsoft Technology Licensing, Llc Suspension and/or throttling of processes for connected standby
JP2014526733A (ja) * 2011-09-12 2014-10-06 マイクロソフト コーポレーション サスペンド状態及び実行状態におけるプロセスの管理
US9588576B2 (en) 2011-09-12 2017-03-07 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states

Also Published As

Publication number Publication date
JP4380530B2 (ja) 2009-12-09

Similar Documents

Publication Publication Date Title
TWI454901B (zh) 微處理器、操作微處理器的方法以及電腦程式產品
KR102164099B1 (ko) 시스템 온 칩, 이의 작동 방법, 및 이를 포함하는 장치
US7120911B1 (en) Processor power-saving control method, storage medium, and processor power-saving control device
JP2007334587A (ja) 異常監視用プログラム、記録媒体及び電子装置
US8700936B2 (en) Modular gating of microprocessor low-power mode
JPH10149226A (ja) マイクロプロセッサを備えた多機能コントローラの電力管理方法および装置
US9423847B2 (en) Method and apparatus for transitioning a system to an active disconnect state
US9494992B2 (en) Multi-core processor system avoiding stopping of cores too close in time
JP2010182101A (ja) フィールド制御システム
JP2003271401A (ja) 負荷監視機能を有するマイクロプロセッサ
US8892923B2 (en) Data processing apparatus and method for maintaining a time count value in normal and power saving modes of operation
JP4380530B2 (ja) マイクロコンピュータおよび時間計測方法
JP2007164421A (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
JP2015069521A (ja) データ処理装置
US10228752B2 (en) Voltage scaling system with sleep mode
JP5324340B2 (ja) マイクロコンピュータ
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
US9354930B2 (en) Scheduling of global voltage/frequency scaling switches among asynchronous dataflow dependent processors
JP2008305238A (ja) 計測装置
US10049060B2 (en) Semiconductor device and control method of the same
JP4798445B2 (ja) 省電力制御方法、画像形成装置およびプログラム
JP5127541B2 (ja) タイマ管理方法、並びにタイマ管理装置
JP2006189996A (ja) 半導体装置
US7152177B2 (en) Microcomputer and computer system
JP2002318713A (ja) Cpu占有時間測定方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090703

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090901

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090914

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4380530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131002

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250