応用情報技術者過去問題 平成21年春期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
携帯端末の省電力に関する次の記述を読んで,設問1~3に答えよ。
X社の,電池で駆動する携帯端末(以下,端末という)では,次のように消費電力を少なくする工夫をしている。
〔MPUに対するクロック制御〕
MPUへのクロック供給,タイマ割込み及びクロック発振の停止/再開は専用のクロック制御回路で行う。
この端末は,次のリアルタイムOSを使用している。
〔省電力状態〕
省電力状態は,スタンバイモードとアイドルモードがある。スタンバイモードは,MPUへクロック供給が停止している状態である。アイドルモードは,クロック供給を停止せず割込みを検出するまでMPUの命令の実行を停止している状態である。割込みを検出するとアイドルモードを終了し,命令を実行できる状態となる。
〔タスク〕
クロックを制御するクロック制御タスクは,①クロック発振の停止を指示し,②MPUをアイドルモードにする。このタスクは①と②を繰り返す。
クロック制御タスク以外のすべてのタスクは,メールボックスに受信要求しメールを受信すると,そのメールの内容を解析し,それに応じた処理を行い,再び受信要求する。これらのタスクは,タスク固有のメールボックスを使用している。
〔クロック制御回路〕
クロック制御回路は,クロック制御タスクの①と②の間に割込みがあれば,その割込みを保留し,②の後にその割込みをMPUに通知する。
〔クロック再開時の処理〕
クロックの発振が再開し,MPUにクロックが供給されたとき,最初に実行される処理は,必ずaとなる。それがbであれば遅延なく実行されるが,b以外の場合は,ほかに割込みがなければ,割込み要求発生から,cミリ秒遅延してから実行される。
〔省電力の効果〕
MPUの単位時間当たりの消費電力は,命令を実行している場合 P,アイドルモードの場合 0.5×P,スタンバイモードの場合 0 である。
端末が通信中のとき,クロック供給は停止せず,80%は命令を実行している状態であり,20%はアイドルモードになっている。端末が通信中の単位時間当たりの消費電力は d×P である。
端末が通信を行っていないとき,1秒ごとに10ミリ秒間MPUにクロックが供給され,それ以外の時間はスタンバイモードである。その10ミリ秒のうち90%は命令を実行している状態であり,10%はアイドルモードになっている。端末が通信を行っていないときの単位時間当たりの消費電力は e×P である。
X社の,電池で駆動する携帯端末(以下,端末という)では,次のように消費電力を少なくする工夫をしている。
〔MPUに対するクロック制御〕
MPUへのクロック供給,タイマ割込み及びクロック発振の停止/再開は専用のクロック制御回路で行う。
- MPUへのクロック供給
クロックは,発振直後から発振が十分安定するまでにTミリ秒かかる。MPUへのクロック供給は,クロック発振再開からTミリ秒後となっている。 - タイマ割込み
タイマ割込み時刻は,ソフトウェアで設定する。設定された時刻になると,タイマ割込みが発生する。タイマ割込みを発生させるタイマは,MPUへ供給するクロックとは異なるクロックを使用し,独自に時間を計測している。 - クロック発振の停止/再開
クロック発振の停止/再開のタイミングを図1に示す。
クロック発振の停止は,ソフトウェアで指示する。クロック制御回路は,停止の指示を受け取ると,次のタイマ割込みの時刻までの時間を調べ,この時間がTミリ秒より長い場合,クロック発振を停止し,Tミリ秒以下の場合,停止指示を取り消し,クロック発振を継続する。
クロック制御回路は,クロック発振を停止しているとき,タイマ割込みが発生するTミリ秒前になるかほかの割込みを検出すると,クロック発振を再開する。
この端末は,次のリアルタイムOSを使用している。
- タスクの状態は,実行状態,実行可能状態及び待ち状態がある。タスクの状態遷移を図2に示す。
- タスクには優先度が付与され,あるタスク実行中に,より優先度の高いタスクが起動されると,実行中のタスクは実行可能状態となり,優先度の高いタスクが実行状態になる。
- タスク間通信のためにメールボックスが用意され,タスクはメールをほかのタスクのメールボックスに送ることができ,ほかのタスクからのメールをメールボックスで受信することができる。
- メールボックスの操作には,送信要求と受信要求があり,受信要求したタスクはメールボックスにメールが届くまで待ち状態になる。
〔省電力状態〕
省電力状態は,スタンバイモードとアイドルモードがある。スタンバイモードは,MPUへクロック供給が停止している状態である。アイドルモードは,クロック供給を停止せず割込みを検出するまでMPUの命令の実行を停止している状態である。割込みを検出するとアイドルモードを終了し,命令を実行できる状態となる。
〔タスク〕
クロックを制御するクロック制御タスクは,①クロック発振の停止を指示し,②MPUをアイドルモードにする。このタスクは①と②を繰り返す。
クロック制御タスク以外のすべてのタスクは,メールボックスに受信要求しメールを受信すると,そのメールの内容を解析し,それに応じた処理を行い,再び受信要求する。これらのタスクは,タスク固有のメールボックスを使用している。
〔クロック制御回路〕
クロック制御回路は,クロック制御タスクの①と②の間に割込みがあれば,その割込みを保留し,②の後にその割込みをMPUに通知する。
〔クロック再開時の処理〕
クロックの発振が再開し,MPUにクロックが供給されたとき,最初に実行される処理は,必ずaとなる。それがbであれば遅延なく実行されるが,b以外の場合は,ほかに割込みがなければ,割込み要求発生から,cミリ秒遅延してから実行される。
〔省電力の効果〕
MPUの単位時間当たりの消費電力は,命令を実行している場合 P,アイドルモードの場合 0.5×P,スタンバイモードの場合 0 である。
端末が通信中のとき,クロック供給は停止せず,80%は命令を実行している状態であり,20%はアイドルモードになっている。端末が通信中の単位時間当たりの消費電力は d×P である。
端末が通信を行っていないとき,1秒ごとに10ミリ秒間MPUにクロックが供給され,それ以外の時間はスタンバイモードである。その10ミリ秒のうち90%は命令を実行している状態であり,10%はアイドルモードになっている。端末が通信を行っていないときの単位時間当たりの消費電力は e×P である。
設問1
クロック再開時の処理について,a~cに入れる適切な字句を答えよ。
解答入力欄
- a:
- b:
- c:
解答例・解答の要点
- a:割込み処理
- b:タイマ割込み処理
- c:T
解説
〔aについて〕
MPUがスタンバイモードからアイドルモードに復帰したときの処理を問うています。
本文中に記載されているように「クロック制御回路は,クロック発振を停止しているとき,タイマ割込みが発生するTミリ秒前になるかほかの割込みを検出すると,クロック発振を再開」します。
したがって、MPUへのクロック供給が再開される契機となるのは、
どちらの場合でも、クロックの発振が再開し、MPUにクロックが供給されたとき、最初に実行される処理は「割込み処理」となります。
∴a=割込み処理
〔bについて〕
タイマ割込みの場合には、割込み発生のT秒前にクロック発振が再開し、割込み発生時点でクロック供給されている状態なので、遅延なく処理が実行できます。一方、その他の割込みでは、割込み要求発生時点でクロック発振が再開するので、クロック発振が十分安定するまでの間、MPUへのクロック供給を待つ時間が生じます。このため、割込み要求発生と割込み処理実行の間に遅延が生じることとなります。
よって、遅延なく実行されるのは「タイマ割込み処理」のときです。
∴b=タイマ割込み処理
〔cについて〕
前述のように、タイマ割込み以外の割込みでは、割込み要求発生時にクロック発振が再開することとなるため、クロック発振が十分安定するまでの間、MPUへのクロック供給がされません。このクロック発振の安定に要する時間が、遅延時間となります。本文中には「クロックは,発振直後から発振が十分安定するまでにTミリ秒かかる」と記載されていますので、割込み要求発生と割込み処理実行の遅延時間は「T秒」となります。
∴c=T(秒)
MPUがスタンバイモードからアイドルモードに復帰したときの処理を問うています。
本文中に記載されているように「クロック制御回路は,クロック発振を停止しているとき,タイマ割込みが発生するTミリ秒前になるかほかの割込みを検出すると,クロック発振を再開」します。
したがって、MPUへのクロック供給が再開される契機となるのは、
- タイマ割込みのT秒前になる
- 他の割込みを検出する
どちらの場合でも、クロックの発振が再開し、MPUにクロックが供給されたとき、最初に実行される処理は「割込み処理」となります。
∴a=割込み処理
〔bについて〕
タイマ割込みの場合には、割込み発生のT秒前にクロック発振が再開し、割込み発生時点でクロック供給されている状態なので、遅延なく処理が実行できます。一方、その他の割込みでは、割込み要求発生時点でクロック発振が再開するので、クロック発振が十分安定するまでの間、MPUへのクロック供給を待つ時間が生じます。このため、割込み要求発生と割込み処理実行の間に遅延が生じることとなります。
よって、遅延なく実行されるのは「タイマ割込み処理」のときです。
∴b=タイマ割込み処理
〔cについて〕
前述のように、タイマ割込み以外の割込みでは、割込み要求発生時にクロック発振が再開することとなるため、クロック発振が十分安定するまでの間、MPUへのクロック供給がされません。このクロック発振の安定に要する時間が、遅延時間となります。本文中には「クロックは,発振直後から発振が十分安定するまでにTミリ秒かかる」と記載されていますので、割込み要求発生と割込み処理実行の遅延時間は「T秒」となります。
∴c=T(秒)
設問2
省電カの効果に関する,MPUの消費電力についてd, eに入れる適切な数値を答えよ。
解答入力欄
- d:
- e:
解答例・解答の要点
- d:0.9
- e:0.0095
解説
〔dについて〕
単位時間当たりの消費電力は次の2つの時間の合計です。
∴d=0.9
〔eについて〕
端末が通信を行っていないときクロック供給が行われている時間割合は「10ミリ秒/1秒=1/100」です。そのうち、90%が命令を実行している状態、残りの10%がアイドル状態ですので、各状態の消費電力は以下のように計算できます。
よって、0.009P+0.0005P=0.0095P
∴e=0.0095
単位時間当たりの消費電力は次の2つの時間の合計です。
- 命令を実行している状態
- P×80%=P×0.8=0.8P
- アイドルモード
- 0.5P×20%=0.5P×0.2=0.1P
∴d=0.9
〔eについて〕
端末が通信を行っていないときクロック供給が行われている時間割合は「10ミリ秒/1秒=1/100」です。そのうち、90%が命令を実行している状態、残りの10%がアイドル状態ですので、各状態の消費電力は以下のように計算できます。
- 命令を実行している状態
- P×1/100×90%=P×0.01×0.9=0.009P
- アイドルモード
- 0.5P×1/100×10%=0.5P×0.01×0.1=0.0005P
よって、0.009P+0.0005P=0.0095P
∴e=0.0095
設問3
クロック制御タスクについて,(1),(2)に答えよ。
- クロック制御タスクの優先度はどのように設定すべきか,ほかのタスクの優先度を考慮して,25字以内で答えよ。
- クロック制御タスクが実行状態にあるとき,ほかのタスクが取り得る,タスクの状態をすべて選び,図2の状態で答えよ。
解答入力欄
解答例・解答の要点
- ・他のタスクより低い優先度とする (15文字)
・すべてのタスクの中で最も低い優先度とする (20文字)
- 待ち状態
解説
- 本文中の〔タスク〕には、「クロック制御タスク以外のすべてのタスクは,メールボックスに受信要求しメールを受信すると,そのメールの内容を解析し,それに応じた処理を行い,再び受信要求する」と記載されており、必要に応じて実行されることがわかります。これに対して、クロック制御タスクはクロックの発振指示とMPUをアイドルモードにすることを繰り返しています(常に実行状態にある)。
本OSのタスクスケジューリングは優先度順方式であり、優先度が高いタスクが優先して処理されるので、"クロック制御タスク以外のすべてのタスク"が実行状態となるには、常時実行されているクロック制御タスクよりも高い優先度を与えられていなければなりません。逆を言えば、クロック制御タスクの優先度は他のすべてのタスクよりも低く設定する必要があります。そうでなければ、そのタスクは永遠にクロック制御タスクからCPU使用権を奪うことができず、実行可能状態に留まることになってしまうからです。
∴他のタスクより低い優先度とする
すべてのタスクの中で最も低い優先度とする - クロック制御タスクが実行状態にあるとき、他のタスクが各状態に存在し得るか否かを考えます。
[実行状態]
実行状態には1つのタスクのみが存在します。クロック制御タスクが実行状態にある以上、他のタスクが実行状態に存在することはありません。
[実行可能状態]
(1)の説明通り、他の全てのタスクの優先度はクロック制御タスクよりも高くなっています。このため、他のタスクが待ち状態から実行可能状態に移ると、そのタスクは即座に実行状態に移されます。したがって、クロック制御タスクが実行状態、他のタスクが実行可能状態という関係をとることはありません。
[待ち状態]
他のすべてのタスクが送信要求または受信要求で待ち状態になっているときは、クロック制御タスクが実行状態になります。よって、クロック制御タスクが実行状態、他のタスクが待ち状態という関係にはなり得ます。
∴待ち状態