令和6年秋期試験午後問題 問7

問7 組込みシステム開発

⇱問題PDF
スマートイヤホンに関する次の記述を読んで,設問に答えよ。
 G社は,専用のアプリケーションプログラム(以下,アプリという)をインストールしたスマートフォン(以下,スマホという)とBluetoothで接続して,音楽などの音源再生機能,電話の通話機能,ノイズキャンセル機能,音声アシスト機能をもつスマートイヤホン(以下,Sイヤホンという)を開発している。
 利用者はアプリを用いて,Sイヤホンの音源再生機能と通話機能の開始/停止の指示,及びノイズキャンセル機能と音声アシスト機能のオン/オフの設定を行うことができる。Sイヤホンを用いて通話するときには,音源再生機能及び音声アシスト機能は使用できない。
 Sイヤホンは左右が独立しており,左耳に装着するイヤホン(以下,左イヤホンという)はスマホとペアリングする。右耳に装着するイヤホン(以下,右イヤホンという)とスマホとの通信は,左イヤホンが中継する。
 Sイヤホンは専用のケースに入れると電源がオフとなり充電が行われ,専用のケースから取り出すと電源がオンになる。
 スマホ及びSイヤホンの概要を図1に,Sイヤホンの機能を表1に示す。
pm07_1.png
pm07_2.png
〔Sイヤホンのハードウェア構成〕
 Sイヤホンは,左イヤホンと右イヤホンのそれぞれが,マイク及びスピーカーを接続した音声制御部,クロック部,通信部,それらを制御する制御部,及び電力部から成る。左イヤホンと右イヤホンとでハードウェア構成に違いはない。
 左イヤホンのハードウェア構成を図2に,Sイヤホンの構成要素の機能概要を表2に示す。
pm07_3.png
pm07_4.png
〔クロック部の動作〕
 制御部の実行時間はクロックの周波数に反比例する。一方,消費電力はクロックの周波数が高いほど大きくなる。Sイヤホンは電池駆動であるので,できる限り消費電力は小さくしたい。そこで,表3で示すように,機能の使用状況に応じてクロックの周波数を制御部の指示で適切に割り当てることとした。
pm07_5.png
〔制御部のタスク〕
 制御部はリアルタイムOSを使用している。電源オン時にメインタスクが生成される。左イヤホンと右イヤホンとで機能が異なるので,メインタスクはそのイヤホンで必要となるタスクだけを生成する。メインタスクを含め,それぞれのタスクは重複しない固有の優先度が割り当てられる。リアルタイムOSのタスクの状態は,実行状態,実行可能状態,又は待ち状態のいずれかである。
 制御部のタスク一覧を表4に示す。クロックの周波数が基準周波数に等しいとき,タスクの実行に要する時間は表4に示す実行時間となる。スピーカータスク,マイクタスク及び特定語検出タスクは起動周期内に処理が完了しなければならない。起動周期内に処理が完了しない場合,音飛びやノイズなどの不具合が発生する。
pm07_6.png
 タスクの優先度は,通信タスクが最も高く,以下,メインタスク,fタスク,gタスク,hタスク,アイドルタスクの順である。
 アイドルタスクは最も優先度が低いので,アイドルタスクが実行状態のとき,ほかのタスクの状態はiである。

設問1

Sイヤホンの機能について答えよ。
  • 表1中のabに入れる適切な機能名を表1中の機能名で答えよ。
  • 表2中の下線①の特定のイベントとして適切なものを解答群の中から選び,記号で答えよ。
解答群
  • 一定時間経過
  • スマホからのデータを受信
  • 制御部からの指示を受信
  • 電力部が電力を供給
  • マイクから入力された音声データから特定のキーワードを検出

解答例・解答の要点

  • a:音源再生機能 ※順不同
    b:音声アシスト機能 ※順不同

解説

  • abについて〕
    2つの空欄には、表1中に記載の4つの機能名のうち、通話機能の使用時に停止する機能が入ります。
    通話の開始と着信に関連する記述を探すと、本文冒頭部に「Sイヤホンを用いて通話するときには,音源再生機能及び音声アシスト機能は使用できない」という説明があります。したがって、通話機能の使用時に停止するのは「音源再生機能」「音声アシスト機能」の2つとわかります。

    ab=音源再生機能、音声アシスト機能

  • 特定のイベントによって再開されるのは、表2の通信部の記述より、停止したクロックの供給を再開することであるとわかります。次に図2のデータの流れを見ると、クロック部へのデータ送信は、制御部および通信部のみが行うことが確認できます。このため、クロック部にイベントを通知するのは、この2つの構成要素のいずれかと判断できます。

    制御部については、表2に「クロックの供給が停止されると,その時点の状態を保持したまま停止する」と記載されており、クロックが停止している状態では、制御部からクロック部に通知することはできないと考えられます。このため、制御部によるクロック供給の再開は期待できません。

    通信部については以下の2つの記述があります。
    • 内部にクロックをもち、電源オン後は常に動作する
    • スマホからのデータを受信すると,それを制御部に送信し,データを受信したことをクロック部に送信する
    この説明のとおり、クロック供給が停止しても通信部は動作しており、スマホからのデータを受信を契機として、クロック部を再開させる機能を備えています。したがって、クロックの供給が再開する特別なイベントとは「スマホからのデータ受信」です。

    なお、スマホから受信するデータとは、具体的にはアプリ操作による「Sイヤホンの音源再生機能と通話機能の開始/停止の指示,及びノイズキャンセル機能と音声アシスト機能のオン/オフの設定」であると考えられます。

    ∴イ:スマホからのデータ受信

設問2

表3中のceに入れる適切な数値の組合せを解答群の中から選び,記号で答えよ。ただし,メインタスクと通信タスクの実行時間,OSによるタスクの切替え時間は無視できるものとし,実行時間は供給されるクロックの周波数に反比例するものとする。
解答群
pm07_7.png

解答例・解答の要点


解説

表2の制御部の説明によると、クロック部への指示は0, 0.5, 1, 1.5, 2のいずれかであり、これに基準周波数を掛けたクロックが供給されます。どの周波数を選ぶべきかを判断するために、周波数が高低によってシステムへ与える影響を整理します。

〔クロック部の動作〕には、周波数の高低によって変化する要素として、次の2点が記述されています。
  • 制御部の実行時間は、クロックの周波数に反比例する(周波数を2倍にすると実行時間は1/2になる)
  • 消費電力は、クロックの周波数が高いほど大きくなる
消費電力については「イヤホンは電池駆動であるので,できる限り消費電力は小さくしたい」との記述があるため、可能な限り低い周波数が望ましいです。また〔制御部のタスク〕には「スピーカータスク,マイクタスク及び特定語検出タスクは起動周期内に処理が完了しなければならない」との記述があるため、一定時間内に完了するようにしなければなりません。すなわち、実行時間が基準内に収まる中で最も低い周波数を決めることになります。

なお、本設問では「メインタスクと通信タスクの実行時間,OSによるタスクの切替え時間は無視できる」との記述があるため、以降はスピーカータスク・マイクタスク・特定語検出タスクの実行時間のみを考慮します。

cについて〕
音源再生1の状況は、音源再生と音声アシストの機能がオンになっています。表1と表4を照らし合わせて各機能が使用するタスクを確認すると、機能とタスクは次のように対応しています。
  • 音源再生機能 … スピーカータスク(音源再生時)
  • 音声アシスト機能 … マイクタスク、特定語検出タスク
つまり、音源再生1ではスピーカー(音源再生時)、マイク、特定語検出の3つのタスクが動作します。

それぞれ起動周期が違うため、各タスクの実行時間を算出する際、各起動周期の最小公倍数である40ミリ秒間を1単位とします。40ミリ秒以内に行うべき処理が全てが完了するかどうかを見ていきます。
  • スピーカー(音源再生時) 
    起動周期は5秒なので、起動回数は 40÷5=8回
    実行時間は 3.4×8=27.2ミリ秒
  • マイク
    起動周期は2秒なので、起動回数は 40÷2=20回
    実行時間は 1.0×20=20ミリ秒
  • 特定語検出
    起動周期は40秒なので、起動回数は 40÷40=1回
    実行時間は 20×1=20ミリ秒
  • 合計 27.2+20+20=67.2ミリ秒
合計が40ミリ秒を超えているため実行時間の制約を満たしません。1の次に大きい1.5をクロック周波数の指示とすると、実行時間はこれを1.5で割った値、つまり「67.2÷1.5=44.8ミリ秒」となります。これでも時間内に終わらないので、1.5より大きい2にすると、実行時間は「67.2÷2=33.6ミリ秒」となり時間内に収まります。したがって、音源再生1に割り当てる適切な指示値は2です。よって、空欄cには「2」が当てはまります。

dについて〕
音源再生2の状況は、音源再生とノイズキャンセリングの機能がオンになっています。表1と表4を照らし合わせると、機能とタスクは次のように対応しています。
  • 音源再生機能 … スピーカータスク(音源再生時)
  • ノイズキャンセリング機能 … マイクタスク
つまり、音源再生2ではスピーカー、マイクの2つのタスクが動作します。前述の計算結果を利用して計算すると、実行時間は「27.2+20=47.2ミリ秒」となります。指示値が1では実行時間が超過しますが、次に大きい1.5を指定すれば「47.2÷1.5=31.46…ミリ秒」となり時間内に収まります。したがって、音源再生2に割り当てる適切な指示値は1.5です。よって、空欄dには「1.5」が当てはまります。

eについて〕
最後に、通話時の状況について確認します。ノイズキャンセリングは機能のオン・オフが切り替え可能となっていますが、周波数の指示をオン・オフによって切り替えるような記述はないので、実行時間がより長くなるオンの状況下で見積もります。表1と表4を照らし合わせると、機能とタスクは次のように対応します。
  • 通話機能 … スピーカータスク(通話時)
  • ノイズキャンセリング機能 … マイクタスク
つまり、通話ではスピーカー(通話時)、マイクの2つのタスクが動作します。これまでと同様に40ミリ秒を一単位として実行時間を計算すると、
  • マイクタスク
    前述のとおり、20ミリ秒
  • スピーカータスク(通話時)
    起動周期は5秒なので、起動回数は 40÷5=8回
    実行時間は 0.5×8=4ミリ秒
  • 合計 20+4=24ミリ秒
合計40ミリ秒以内なので実行時間は問題ありません。そこで、消費電力の低減を考慮して指示値を0.5に下げてみると「24÷0.5=48ミリ秒」となり、40ミリ秒を超えてしまいます。したがって、通話時に割り当てる適切な指示値は1です。よって、空欄eには「1」が当てはまります。

pm07_8.png

設問3

制御部のタスクについて答えよ。
  • 本文中のfhに入れるタスク名を,表4中のタスク名で答えよ。
  • 右イヤホンのメインタスクでは生成せず,左イヤホンのメインタスクだけが生成するタスクを,表4中のタスク名で答えよ。

解答例・解答の要点

  • f:マイク
    g:スピーカー
    h:特定語検出
  • 特定語検出

解説

  • fghについて〕
    空欄f~hに入るのは表4のタスク名であり、本文中にはメインタスクおよびアイドルタスクが記載済みなので、当てはまるのはスピーカー、マイク、特定語検出のいずれかです。3つのタスクはどれも周期的に実行しなければならないため、実行が妨げられないように優先度を設定する必要があります。

    まず、特定語検出の優先度を最も高くした場合を考えると、実行中の20ミリ秒間は他2つのタスクが実行されなくなります。スピーカーとマイクの起動周期はそれぞれ5ミリ秒および2ミリ秒ですから、起動周期を守ることができません。したがって、特定語検出の優先度は、他2つのタスクよりも低くする必要があります。

    次に、スピーカーの優先度がマイクよりも高い場合を考えると、音源再生時の実行時間が3.4秒とマイクの起動周期2秒より長いため、やはりマイクの起動周期を守ることができません。したがって、スピーカーの優先度はマイクよりも低くする必要があります。

    以上より、優先度が高い順に、空欄fが「マイク」、空欄gが「スピーカー」、空欄hが「特定語検出」が適切となります。

    f=マイク
     g=スピーカー
     h=特定語検出

  • 表2の制御部の説明には、「左イヤホンの場合は,マイクから入力された音声データを解析して,特定のキーワードを検出する」と記載されています。左イヤホンだけで行われ、右イヤホンでは行われないのはこの処理を指しています。「音声データを解析して,特定のキーワードを検出する」機能は、表4より特定語検出タスクが提供するものとわかります。したがって、右イヤホンのメインタスクで生成されないタスクとは「特定語検出」タスクです。

    ∴特定語検出

設問4

アイドルタスクについて答えよ。
  • 本文中のiに入れるリアルタイムOSのタスクの状態を答えよ。
  • クロックの供給を停止できるのは,表3における使用状況が待機時のときだけである。待機時以外でクロックの供給を停止できない理由を,タスクの起動周期の観点で40字以内で答えよ。

解答例・解答の要点

  • i:待ち状態
  • クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから (31文字)

解説

  • iについて〕
    リアルタイムOSのタスクの状態は、本文にもあるように実行状態、実行可能状態、待ち状態のいずれかです。それぞれ次の状態を表します。
    実行状態(Run)
    タスクがCPUを使用して実際に処理を実行している状態
    実行可能状態(Ready)
    すぐに実行できるが、CPUが他のタスクを処理しているためCPUの割当てを待っている状態
    待ち状態(Wait)
    入出力(I/O)待ちや他のタスクの完了待ちなど、何らかの条件が満たされるまで実行できない状態
    pm07_9.png
    まず、実行状態のタスクが同時に複数存在することはありません。したがって、アイドルタスクが実行状態の場合、他のタスクは実行状態ではありません。

    次に、実行可能状態について考えます。現在、実行状態にあるアイドルタスクは、優先度が最も低いタスクです。もし優先度が高い他のタスクが実行可能状態であれば、CPUはその優先度の高いタスクを処理するため、アイドルタスクが実行状態になることはありません。したがって、他のタスクは実行可能状態ではありません。

    よって、残る「待ち状態」が答えになります。

    i=待ち状態

  • 表2中のクロック部の説明には「(クロック再開の)イベントを受けてから5ミリ秒後に,停止する直前の周波数でクロックの供給を再開する」とあります。待機時以外でクロックの供給を停止した場合、再開するまでの5ミリ秒の空白により、スピーカータスクとマイクタスクの起動周期を守ることができません。仮に停止と供給が繰り返された場合、タスクの遅れにより音飛びやノイズが発生することになり、システムの要求性能を満たせません。リアルタイムOSではタスクの起動周期の厳守が求められるため、クロックの供給を停止することはできません。

    タスクの起動周期から答えるとあるので、答えは「クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから」となります。

    ∴クロックの再開に掛かる5ミリ秒以下の周期で動くタスクがあるから
模範解答

Pagetop