JP2016143402A - タイマ制御装置、無線通信装置及びタイマ制御方法 - Google Patents

タイマ制御装置、無線通信装置及びタイマ制御方法 Download PDF

Info

Publication number
JP2016143402A
JP2016143402A JP2015021530A JP2015021530A JP2016143402A JP 2016143402 A JP2016143402 A JP 2016143402A JP 2015021530 A JP2015021530 A JP 2015021530A JP 2015021530 A JP2015021530 A JP 2015021530A JP 2016143402 A JP2016143402 A JP 2016143402A
Authority
JP
Japan
Prior art keywords
thread
unit
time
loop processing
notification
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
JP2015021530A
Other languages
English (en)
Other versions
JP6409600B2 (ja
Inventor
木村 啓
Hiroshi Kimura
啓 木村
亨 国原
Toru Kunihara
亨 国原
武史 松岡
Takeshi Matsuoka
武史 松岡
僚介 久保田
Ryosuke Kubota
僚介 久保田
禎一 岡本
Teiichi Okamoto
禎一 岡本
匠 笹谷
Takumi Sasatani
匠 笹谷
学 岩崎
Manabu Iwasaki
学 岩崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015021530A priority Critical patent/JP6409600B2/ja
Publication of JP2016143402A publication Critical patent/JP2016143402A/ja
Application granted granted Critical
Publication of JP6409600B2 publication Critical patent/JP6409600B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

【課題】汎用OSを用いる場合でも高精度に処理時間を制御すること。
【解決手段】タイマ制御装置は、所定のループ処理を繰り返すループ処理部と、プロセッサのクロックに対応するカウンタのカウンタ値を取得する取得部と、前記取得部によって取得されるカウンタ値に基づいて、所定の単位時間に前記ループ処理部によって繰り返されるループ処理の回数を算出する算出部と、前記ループ処理部によるループ処理の回数を計数し、計数された回数と前記算出部によって算出された回数とに基づくタイムアウト通知を出力する通知部と、前記通知部から出力されるタイムアウト通知に同期して、アプリケーションのスレッドを制御する制御部とを有する。
【選択図】図2

Description

本発明は、タイマ制御装置、無線通信装置及びタイマ制御方法に関する。
従来、モバイルネットワークに配置される基地局装置などのベースバンド機能部については、3GPP(3rd Generation Partnership Project)勧告によって厳密なフレームタイミングが規定されている。すなわち、例えば4ms(ミリ秒)以内に1フレームの処理を完了させることなどが定められている。このため、通常は、例えばDSP(Digital Signal Processor)などの専用プロセッサにリアルタイムOS(Operating System)を導入することでベースバンド機能部が構成される。
リアルタイムOSは、設定された時間通りに処理を実行するリアルタイム処理のためのOSであり、各種のソフトウェアによる処理時間を厳密に制御することができる。具体的には、専用プロセッサにリアルタイムOSを導入することにより、1μs(マイクロ秒)オーダーの精度で処理時間を制御することが可能となる。
特開平4−163634号公報 特開平7−6043号公報 特開2006−215943号公報
一般に、専用プロセッサは高価であるため、専用プロセッサを用いて例えば基地局装置のベースバンド機能部を構成する場合には、基地局装置の製造コストが増大する。また、リアルタイムOSを導入する場合には、ベースバンド機能部による処理が固定的となり、多様化するサービスに柔軟に対応することが困難である。そこで、汎用プロセッサに非リアルアイムOS(以下「汎用OS」という)を導入してベースバンド機能部を構成することが望まれている。
しかしながら、汎用OSは、処理時間を厳密に制御することに特化したOSではないため、要求される精度を満たすことが困難であるという問題がある。具体的には、汎用OSを用いる場合のタイマ処理は、例えばCPU(Central Processing Unit)のローカルタイマを用いたタイマ割り込みによって実装されるため、最高でも1msオーダーの精度となる。このため、汎用OSを導入して基地局装置のベースバンド機能部を構成する場合には、3GPP勧告による時間に関する規定を遵守することが困難である。
開示の技術は、かかる点に鑑みてなされたものであって、汎用OSを用いる場合でも高精度に処理時間を制御することができるタイマ制御装置、無線通信装置及びタイマ制御方法を提供することを目的とする。
本願が開示するタイマ制御装置は、1つの態様において、所定のループ処理を繰り返すループ処理部と、プロセッサのクロックに対応するカウンタのカウンタ値を取得する取得部と、前記取得部によって取得されるカウンタ値に基づいて、所定の単位時間に前記ループ処理部によって繰り返されるループ処理の回数を算出する算出部と、前記ループ処理部によるループ処理の回数を計数し、計数された回数と前記算出部によって算出された回数とに基づくタイムアウト通知を出力する通知部と、前記通知部から出力されるタイムアウト通知に同期して、アプリケーションのスレッドを制御する制御部とを有する。
本願が開示するタイマ制御装置、無線通信装置及びタイマ制御方法の1つの態様によれば、汎用OSを用いる場合でも高精度に処理時間を制御することができるという効果を奏する。
図1は、一実施の形態に係る基地局装置の構成を示すブロック図である。 図2は、一実施の形態に係るベースバンドプロセッサの機能を示すブロック図である。 図3は、一実施の形態に係るループ回数算出処理を示すフロー図である。 図4は、一実施の形態に係るスレッド開始処理を示すフロー図である。 図5は、スレッド管理データの構成を示す図である。 図6は、一実施の形態に係るスレッド制御処理を示すフロー図である。 図7は、スレッド制御の具体例を説明する図である。 図8は、スレッド管理データの具体例を示す図である。 図9は、スレッド制御の他の具体例を説明する図である。 図10は、スレッド管理データの他の具体例を示す図である。
以下、本願が開示するタイマ制御装置、無線通信装置及びタイマ制御方法の一実施の形態について、図面を参照して詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。以下の一実施の形態おいては、タイマ制御装置を備えた無線通信装置として、基地局装置を例に挙げて説明する。
図1は、一実施の形態に係る基地局装置100の構成を示すブロック図である。図1に示す基地局装置100は、有線インタフェース(以下「有線I/F」と略記する)110、ベースバンドプロセッサ120、無線プロセッサ130、無線インタフェース(以下「無線I/F」と略記する)140及びメモリ150を有する。
有線I/F110は、例えばコアネットワークに有線接続され、コアネットワークとの間で信号を送受信する。
ベースバンドプロセッサ120は、例えばCPUなどの汎用プロセッサを用いて構成され、基地局装置100によって送受信される信号に対する種々のベースバンド処理を実行する。具体的には、ベースバンドプロセッサ120は、汎用OSを用いて例えば所定の無線通信サービスを提供するためのアプリケーションを実行し、アプリケーションに応じたデータの符号化や変調などを実行する。このとき、ベースバンドプロセッサ120は、例えば3GPP勧告に従った高い時間精度でアプリケーションの処理を制御する。すなわち、ベースバンドプロセッサ120は、例えば1μsオーダーの精度で処理時間を制御する。ベースバンドプロセッサ120の構成及び機能については、後に詳述する。
無線プロセッサ130は、基地局装置100によって送受信される信号に対する種々の無線処理を実行する。具体的には、無線プロセッサ130は、例えばベースバンドプロセッサ120によって符号化及び変調された信号のアップコンバートや増幅などを実行する。
無線I/F140は、例えば携帯端末装置との間で、アンテナを介して信号を無線送受信する。すなわち、無線I/F140は、例えば無線プロセッサ130によって増幅された信号をアンテナを介して無線送信する。
メモリ150は、ベースバンドプロセッサ120及び無線プロセッサ130に接続され、これらのプロセッサが実行する処理に用いられる情報を記憶する。具体的には、メモリ150は、例えばベースバンドプロセッサ120が実行するアプリケーションの処理に用いられる情報を記憶する。
図2は、一実施の形態に係るベースバンドプロセッサ120の機能を示すブロック図である。図2に示すように、ベースバンドプロセッサ120は、マルチコアプロセッサであり、コア#1〜#3を有する。
コア#1は、基地局装置100におけるベースバンド処理を司るアプリケーションを実行する。具体的には、コア#1は、アプリケーションの個々の処理に対応するスレッドを実行する。このとき、コア#1は、コア#3によるタイマ制御及びスケジューリングに従って高い時間精度で各スレッドを実行する。
コア#2は、基地局装置100の基本的な処理を司る汎用OSを実行する。したがって、コア#2は、例えばコア#1によって実行されるアプリケーションに対してカーネルを提供する。
コア#3は、例えば1μsオーダーの高い時間精度でタイマ制御を実行し、コア#1におけるスレッドのスケジューリングを行う。具体的には、コア#3は、タイムスタンプ取得部121、ループ回数算出部122、ループ処理部123、タイムアウト通知部124、動作時間判定部125、経過時間更新部126、スレッド制御部127及びスレッド状態登録部128を有する。
タイムスタンプ取得部121は、ループ回数算出部122及びループ処理部123から指示されたタイミングで、例えばTSC(Time Stamp Counter)などのクロックソースの値を読み出す。TSCは、コア#3に供給されるクロック数をカウントする内部カウンタであり、例えば400MHz(メガヘルツ)のクロックがコア#3へ供給される場合には、2.5ns(ナノ秒)に1インクリメントされる。
ループ回数算出部122は、1μsの単位時間の間にループ処理部123が実行するループ処理の回数を算出する。具体的には、ループ回数算出部122は、例えばタイマ割り込みによって1msのスリープ処理を実行し、このスリープ処理の開始タイミング及び終了タイミングにおけるTSCの値をタイムスタンプ取得部121に取得させる。これにより、ループ回数算出部122は、1msに相当するTSCの値の増分をタイムスタンプ取得部121から取得する。
また、ループ回数算出部122は、ループ処理部123に対して、1回のループ処理の開始タイミング及び終了タイミングをタイムスタンプ取得部121へ通知するように指示する。これにより、ループ回数算出部122は、ループ処理部123がループ処理を1回実行する間のTSCの値の増分をタイムスタンプ取得部121から取得する。そして、ループ回数算出部122は、1msに相当するTSCの値の増分と1回のループ処理時間に相当するTSCの値の増分とから、1μsの間に実行されるループ処理の回数を算出する。
具体的には、例えば1ms(=1000μs)に相当するTSCの増分が490000であり、1回のループ処理時間に相当するTSCの値の増分が7である場合、ループ回数算出部122は、以下の式(1)から1μs当たりのループ回数Nを求める。
1(回):7(tsc)=N(回):(490000/1000)(tsc) ・・・(1)
ここでは、式(1)からN=70と求まるため、ループ回数算出部122は、1μsの間にループ処理部123が実行するループ回数を70と算出したことになる。
ループ回数算出部122は、算出した1μs当たりのループ回数をタイムアウト通知部124へ通知する。なお、ループ回数算出部122によるループ回数の算出は、基地局装置100の起動時に少なくとも1回実行される。その後は、比較的長い周期ごとに、1μs当たりのループ回数が算出されるようにしても良い。このように、1μs当たりのループ回数が算出される頻度が低いため、タイムスタンプ取得部121がTSCの値を取得する頻度が低く、コア#3の負荷増大を抑制することができる。
ループ処理部123は、所定のループ処理を継続して実行する。すなわち、ループ処理部123は、例えばメモリ150に対する4バイトのメモリアクセスなどの所定の処理をループして無限に繰り返す。また、ループ処理部123は、ループ回数算出部122からの指示に従って、1回のループ処理の開始タイミング及び終了タイミングをタイムスタンプ取得部121へ通知し、この開始タイミング及び終了タイミングにおけるTSCの値を取得させる。上述したように、ループ処理部123が1回のループ処理の開始タイミング及び終了タイミングにおけるTSCの値をタイムスタンプ取得部121に取得させることにより、ループ回数算出部122が1回のループ処理時間に相当するTSCの値の増分を取得することができる。
タイムアウト通知部124は、1μs当たりのループ回数がループ回数算出部122から通知されると、ループ処理部123によって実行されるループ処理の回数をカウントする。そして、タイムアウト通知部124は、ループ処理の実行回数が1μs当たりのループ回数に到達する度に、所望の時間が経過したことを示すタイムアウト通知を動作時間判定部125へ出力する。
動作時間判定部125は、タイムアウト通知部124からタイムアウト通知が出力される度に、実行中のスレッドが開始してからの経過時間が所定の動作時間に達したか否かを判定する。すなわち、動作時間判定部125は、メモリ150に格納されたスレッド管理データを参照し、実行中のスレッドが開始してからの経過時間を取得するとともに、このスレッドについてあらかじめ定められた所定の動作時間を取得し、経過時間が所定の動作時間に等しいか否かを判定する。
そして、動作時間判定部125は、経過時間が所定の動作時間未満である場合は、経過時間更新部126に対して、スレッド管理データにおける経過時間を更新するように指示する。また、動作時間判定部125は、経過時間が所定の動作時間に達している場合は、スレッド制御部127に対して、実行中のスレッドを停止して次のスレッドを開始するように指示する。なお、動作時間判定部125は、タイムアウト通知部124からタイムアウト通知が出力された際に実行中のスレッドが存在しない場合も、スレッド制御部127に対して、スレッドを開始するように指示する。
経過時間更新部126は、動作時間判定部125から経過時間の更新が指示されると、メモリ150に格納されたスレッド管理データにおいて、実行中のスレッドの経過時間に1μs加算して更新する。
スレッド制御部127は、動作時間判定部125から次スレッドの開始が指示されると、メモリ150に格納されたスレッド管理データを参照し、待機中のスレッドの優先度に応じて次スレッドを決定する。そして、スレッド制御部127は、実行中のスレッドの停止と決定した次スレッドの開始とをコア#2のOSを介してコア#1のアプリケーションへ指示する。また、スレッド制御部127は、実行中のスレッドが存在せずスレッドの開始が指示された場合も、各スレッドの優先度に応じて開始するスレッドを決定し、スレッドの開始をアプリケーションへ指示する。
スレッド状態登録部128は、コア#1においてアプリケーションが実行されると、このアプリケーションのスレッドに関する情報を含むスレッド管理データをメモリ150に格納する。また、スレッド状態登録部128は、スレッド制御部127によってスレッドの停止及び開始がアプリケーションへ指示されると、スレッド管理データにおいてスレッドの状態を更新する。具体的には、スレッド状態登録部128は、停止したスレッドについて待機状態又は休止状態と登録するとともに経過時間を0にクリアし、開始したスレッドについて実行状態と登録する。
なお、スレッドの状態には、例えば実行状態、待機状態及び休止状態の3つの状態がある。実行状態は、スレッドが実行中であることを示す。待機状態は、スレッドが実行されるのを待機中であることを示す。休止状態は、スレッドがまだ実行対象となっていないか、スレッドが完了したことを示す。
次いで、上記のように構成されたベースバンドプロセッサ120におけるループ回数算出処理について、図3に示すフロー図を参照しながら説明する。以下のループ回数算出処理は、例えば基地局装置100の起動時などに、ベースバンドプロセッサ120のコア#3によって実行される。
まず、ループ回数算出部122によって、例えばタイマ割り込みを用いた1msのスリープ処理が実行される。このスリープ処理の開始時と終了時には、タイムスタンプ取得部121によって、TSCの値が取得される。そして、ループ回数算出部122によって、スリープ処理の開始時及び終了時のTSCの値の差分が算出されることにより、1ms当たりのTSCの増分が取得される(ステップS101)。
1ms当たりのTSCの増分が取得されると、ループ回数算出部122によって、取得された増分が1000で除されることにより、1μs当たりのTSCの増分が算出される(ステップS102)。なお、ここでは1msに相当するTSCの増分が取得されているため1000で除するものとしたが、より長い処理に相当するTSCの増分を取得する場合には、処理時間に応じた値でTSCの増分を除すれば良い。また、1msに相当するTSCの増分を取得するために実行する処理は、スリープ処理に限定されない。
一方、ループ回数算出部122からの指示に従って、ループ処理部123による1回のループ処理の開始タイミング及び終了タイミングがタイムスタンプ取得部121へ通知される。この通知を受け、タイムスタンプ取得部121によって、1回のループ処理の開始時及び終了時のTSCの値が取得される。そして、ループ回数算出部122によって、1回のループ処理の開始時及び終了時のTSCの値の差分が算出されることにより、1回のループ処理時間に相当するTSCの増分が取得される(ステップS103)。
そして、ループ回数算出部122によって、1μs当たりのTSCの増分と1ループ処理当たりのTSCの増分とから、1μs当たりのループ回数が算出される(ステップS104)。具体的には、1μs当たりのTSCの増分をTSC_1とし、1ループ処理当たりのTSCの増分をTSC_Lとし、1μs当たりのループ回数をNとすると、以下の式(2)からNが算出される。
1:TSC_L=N:TSC_1 ・・・(2)
算出された1μs当たりのループ回数は、ループ回数算出部122からタイムアウト通知部124へ通知される。なお、ループ回数算出処理は、基地局装置100の起動時に少なくとも1回実行され、その後は、比較的長い周期ごとに実行されても良い。このループ回数算出処理が実行されることにより、ループ処理部123におけるループ処理の回数をカウントすることによって、1μsオーダーのタイマ制御をすることが可能となる。すなわち、1μsオーダーの時間精度でアプリケーションのスレッドを開始及び停止することができる。
そこで、次に、アプリケーションのスレッドを開始する際の処理について、図4に示すフロー図を参照しながら説明する。以下のスレッド開始処理は、コア#1がアプリケーションの実行を開始する際に、ベースバンドプロセッサ120のコア#3によって実行される。
コア#1においてアプリケーションの実行が開始される際には、コア#1からコア#3のスレッド状態登録部128に対して、アプリケーションの処理が開始される旨が通知される(ステップS201)。このとき、スレッド状態登録部128には、アプリケーションのすべてのスレッドに関する情報が通知される。この情報には、スレッドを識別するスレッドID、スレッドの優先度、一連の処理が完了するまでにスレッドが動作する時間を示す動作時間などが含まれる。これらの情報が用いられることにより、スレッド状態登録部128によって、各スレッドを管理するためのスレッド管理データが生成され、メモリ150に格納される。
図5は、メモリ150に格納されるスレッド管理データの構成を示す図である。図5に示すように、スレッド管理データには、プロセス内で実行されるスレッドに関する情報が記憶されている。具体的には、アプリケーションから通知されたスレッドID、優先度及び動作時間に加えて、スレッドが実際に開始されてからの経過時間と、スレッドの状態とが記憶される。
図5に示す例では、プロセスXにはスレッドA及びスレッドBが含まれ、これらのスレッドの動作時間はいずれも5μsである。すなわち、スレッドA、Bは、5μs動作することにより一連の処理を完結させる。また、スレッドA、Bの優先度はそれぞれ24、9であり、スレッドBよりもスレッドAの方が優先的に実行される。さらに、図5に示す例では、スレッドBが実行中であり、開始されてから3μsが経過している一方、スレッドAが待機中であることがわかる。
このような構成のスレッド管理データは、アプリケーション開始時にスレッド状態登録部128によってメモリ150に格納され、実行対象となるスレッドの状態が待機状態に登録される(ステップS202)。また、すべてのスレッドの経過時間も0にクリアされる。このとき、まだ実行対象となっていないスレッドの状態は、休止状態となっている。
そして、スレッド制御部127によって、コア#2のOSを介してコア#1のアプリケーションに対する指示が出され、実行対象のスレッドが待機状態に制御される(ステップS203)。したがって、この時点では、すべてのスレッドが待機状態又は休止状態であり、停止している。
以上のようなスレッド管理データの格納などが実行される間も、ループ処理部123によってループ処理が繰り返し実行されている。そして、タイムアウト通知部124によって、ループ処理部123によるループ処理の実行回数が1μs当たりのループ回数に到達したことが検出されると、動作時間判定部125に対してタイムアウト通知が出力される(ステップS204)。
タイムアウト通知の出力を受け、動作時間判定部125によってスレッド管理データが参照され、実行中のスレッドの経過時間が動作時間に達したか否かが判定されるが、ここではすべてのスレッドが停止している。このため、動作時間判定部125からスレッド制御部127に対して、スレッドを開始するように指示される。そして、スレッド制御部127によってスレッド管理データが参照され、各スレッドの優先度が比較されて最初に開始するスレッドが決定される(ステップS205)。
具体的には、例えば、スレッド管理データにおいて待機状態と登録されたスレッドの優先度が比較され、最大の優先度を有するスレッドが最初に開始されるスレッドと決定される。そして、スレッド制御部127によって、決定されたスレッドを開始するようにコア#1のアプリケーションへ指示が出され、スレッドが開始される(ステップS206)。同時に、スレッド状態登録部128がメモリ150に格納されたスレッド管理データにアクセスし、開始したスレッドの状態を実行状態に更新する。
これにより、タイムアウト通知部124から通知される1μs周期のタイムアウト通知に同期して、優先度が最も高いスレッドが開始され、スレッド管理データにおいては開始したスレッドが実行中であることが登録される。
次に、スレッド開始後のスレッド制御処理について、図6に示すフロー図を参照しながら説明する。以下のスレッド制御処理は、コア#1がアプリケーションを実行中に、ベースバンドプロセッサ120のコア#3によって実行される。
ループ処理部123では、常時ループ処理が実行されている。そして、タイムアウト通知部124によって、ループ処理部123によるループ処理の実行回数が1μs当たりのループ回数に到達したことが検出される度に、動作時間判定部125に対してタイムアウト通知が出力される(ステップS301)。
タイムアウト通知の出力を受け、動作時間判定部125によってスレッド管理データが参照され、実行中のスレッドの動作時間が満了したか否かが判定される(ステップS302)。すなわち、実行中のスレッドの経過時間と動作時間がスレッド管理データから読み出され、経過時間が動作時間に達したか否かが判定される。
この判定の結果、経過時間が動作時間未満であり動作時間が満了していない場合は(ステップS302No)、経過時間更新部126によって、スレッド管理データにおける経過時間の更新が実行される(ステップS306)。具体的には、経過時間更新部126によって、スレッド管理データに記憶された実行中のスレッドの経過時間に1μsが加算される。そして、実行中のスレッドの動作時間が満了するまで、タイムアウト通知部124から動作時間判定部125に対してタイムアウト通知が出力される度に、実行中のスレッドの経過時間が1μsずつ増加する。
一方、ステップS302の判定の結果、経過時間が動作時間に等しく動作時間が満了した場合は(ステップS302Yes)、スレッド制御部127によって、次に実行するスレッドが各スレッドの優先度に基づいて決定される(ステップS303)。具体的には、スレッド管理データの各スレッドの優先度と状態が参照され、待機状態のスレッドのうち優先度が最も高いスレッドが次のスレッドと決定される。
次スレッドが決定されると、スレッド制御部127によって、スレッドの切り替えが実行される(ステップS304)。具体的には、スレッド制御部127からコア#1のアプリケーションに対して、実行中のスレッドを停止するとともに決定された次スレッドを開始するように指示される。
そして、コア#1において次スレッドが開始されると、スレッド状態登録部128によって、スレッド管理データにおける各スレッドの状態が更新される(ステップS305)。すなわち、停止したスレッドの状態が待機状態に更新されるとともに、開始された次スレッドの状態が実行状態に更新される。また、停止したスレッドの経過時間が0にクリアされる。なお、停止したスレッドが完全に終了し、再度実行されることがない場合には、スレッド管理データにおいて該当スレッドの状態が休止状態に更新される。
このように、タイムアウト通知部124から通知される1μs周期のタイムアウト通知に同期して、スレッドごとの動作時間の満了が判定されてスレッドが切り替えられるため、1μsオーダーの時間精度で処理を実行することができる。
次に、上記のスレッド制御処理の具体例を2つ挙げておく。1つ目の具体例では、2つのスレッドが交互に実行され、2つ目の具体例では、実行中のスレッドよりも優先度が高いスレッドが新たに実行対象となると即座にスレッドが切り替えられる。
図7は、スレッド制御の1つ目の具体例を説明する図である。図7に示す例では、スレッドA、Bがコア#1によって実行される。スレッドAはスレッドBよりも優先度が高く、スレッドA、Bの動作時間はいずれも5μsであるものとする。図7においては、横軸がμs単位の時間、縦軸が優先度を示しており、図中ハッチングで示された部分は、該当するスレッドが実行中であることを示す。また、コア#2は汎用OSを実行し、コア#3は上述した1μsオーダーでのスレッド制御処理を実行する。
処理開始時には、コア#1からスレッドA、Bの情報がスレッド状態登録部128へ通知され、スレッド状態登録部128によってスレッド管理データがメモリ150へ格納される。そして、スレッド管理データにおいて、実行対象となっているスレッドA、Bの状態が待機状態と登録される。このときのスレッド管理データを図8(a)に示す。
図8(a)に示すように、スレッドA、Bの状態はいずれも待機状態であり、経過時間が0μsとなっている。このスレッド管理データがスレッド制御部127によって参照されることにより、待機状態のスレッドA、Bの優先度が比較され、優先度が高いスレッドAが開始される。これに伴って、スレッド状態登録部128によって、スレッドAの状態が実行状態に更新される。
そして、タイムアウト通知部124からの1μs周期のタイムアウト通知によって、スレッドAの経過時間が1μsずつ増加し、経過時間が動作時間に等しい5μsになるとスレッドの切り替えが実行される。このときのスレッド管理データを図8(b)に示す。
図8(b)に示すように、スレッドAの状態は実行状態となっており、経過時間が動作時間に等しい5μsとなっている。このスレッド管理データが動作時間判定部125によって参照されることにより、スレッド制御部127に対して、スレッドを切り替える旨の指示が出される。
スレッドの切り替えは、スレッド制御部127によってスレッド管理データが参照され、待機状態のスレッドのうち最も優先度が高いスレッドが次スレッドに決定されることによって実行される。ここでは、スレッドBが次スレッドと決定されるため、スレッド制御部127からコア#1に対して、スレッドAを停止してスレッドBを開始するように指示される。これに伴って、スレッド状態登録部128によって、スレッドAの状態が待機状態に更新され、スレッドBの状態が実行状態に更新される。また、スレッドAの経過時間が0にクリアされる。
以下、このようにスレッドの切り替えが5μsごとに繰り返され、コア#1は、1μsオーダーの時間精度でアプリケーションの処理を実行することができる。なお、このように2つのスレッドA、Bが繰り返して実行される処理の例としては、モータの電流フィードバックループなどが挙げられる。
図9は、スレッド制御の2つ目の具体例を説明する図である。図9に示す例では、スレッドA〜Eがコア#1によって実行される。スレッドA〜Eは、この順で優先度が高く、スレッドA、Bの動作時間は6μs、スレッドCの動作時間は7μs、スレッドDの動作時間は4μs、スレッドEの動作時間は5μsであるものとする。図9においても、図7と同様に、横軸がμs単位の時間、縦軸が優先度を示しており、図中ハッチングで示された部分は、該当するスレッドが実行中であることを示す。また、コア#2は汎用OSを実行し、コア#3は上述した1μsオーダーでのスレッド制御処理を実行する。
処理開始時には、コア#1からスレッドA〜Eの情報がスレッド状態登録部128へ通知され、スレッド状態登録部128によってスレッド管理データがメモリ150へ格納される。そして、スレッド管理データにおいて、実行対象となっているスレッドEの状態が待機状態と登録される。すなわち、この例では、アプリケーション開始時に実行対象となっているスレッドはスレッドEのみであり、スレッドA〜Dは休止状態となっている。
そして、タイムアウト通知部124からの1μs周期のタイムアウト通知によって、スレッドEの経過時間が1μsずつ増加するが、経過時間が2μsとなった時点でスレッドDが実行対象となったものとする。この場合、スレッドDが実行対象となったことがコア#1からスレッド状態登録部128へ通知され、スレッド管理データにおいてスレッドDの状態が待機状態に更新される。また、実行中のスレッドEの経過時間は動作時間の5μsに達していないが、新たにスレッドDが実行対象となったため、スレッド制御部127によって、実行状態のスレッドEの優先度と待機状態のスレッドDの優先度とが比較される。この結果、スレッドDの優先度の方が高いため、スレッド制御部127からコア#1に対して、スレッドEを停止してスレッドDを開始するように指示される。これに伴って、スレッド状態登録部128によって、スレッドEの状態が待機状態に更新され、スレッドDの状態が実行状態に更新される。このとき、スレッドEの経過時間は、2μsのままである。
その後、スレッドDの経過時間が2μsとなった時点でスレッドBが実行対象となったものとする。この場合、上記と同様に、スレッドBが実行対象となったことがコア#1からスレッド状態登録部128へ通知され、スレッド管理データにおいてスレッドBの状態が待機状態に更新される。また、実行中のスレッドDの経過時間は動作時間の4μsに達していないが、新たにスレッドBが実行対象となったため、スレッド制御部127によって、実行状態のスレッドDの優先度と待機状態のスレッドBの優先度とが比較される。この結果、スレッドBの優先度の方が高いため、スレッド制御部127からコア#1に対して、スレッドDを停止してスレッドBを開始するように指示される。これに伴って、スレッド状態登録部128によって、スレッドDの状態が待機状態に更新され、スレッドBの状態が実行状態に更新される。このとき、スレッドD、Eの経過時間は、いずれも2μsのままである。このときのスレッド管理データを図10に示す。
図10に示すように、スレッドBの状態が実行状態となっており、スレッドD、Eの状態が待機状態となっている。また、スレッドA、Cは、まだ実行対象となっていないため、スレッドA、Cの状態が休止状態となっている。そして、スレッドD、Eは、実行開始から2μs経過した時点で中断されているため、スレッドD、Eの経過時間は2μsとなっている。
以後、新たなスレッドが実行対象となると、このスレッドの優先度と実行中のスレッドの優先度とが比較され、新たに実行対象となったスレッドの優先度が高ければ、即座にスレッドが切り替えられる。したがって、図9に示すように、スレッドBの経過時間が4μsとなった時点でスレッドBよりも優先度が高いスレッドAが開始される。一方、スレッドAの経過時間が2μsとなった時点でスレッドCが新たに実行対象となるが、スレッドCの優先度はスレッドAの優先度よりも低いため、スレッドの切り替えは発生しない。
また、各スレッドの経過時間が動作時間に達すると、上述した1つ目の例と同様に、待機状態のスレッドのうち優先度が最も高いスレッドが次スレッドとなる。このとき、次スレッドが中断されたスレッドである場合は、中断された時点での経過時間がスレッド管理データに記憶されているため、スレッドの再開後、中断前の経過時間を引き継ぐことができる。
このように、2つ目のスレッド制御処理の例では、優先度が高いスレッドが常に優先して実行されるため、1μsオーダーの時間精度でスレッドの優先度を厳密に遵守するアプリケーションの処理を実行することができる。
以上のように、本実施の形態によれば、1つのコアがループ処理を繰り返し、TSCの値とループ処理に要する時間との関係から、1μs当たりのループ処理の回数を算出する。そして、ループ処理の回数が1μs当たりのループ処理の回数となる度にタイムアウト通知が出力されるようにし、このタイムアウト通知に同期して、アプリケーションの各スレッドを開始したり停止したりする。このため、タイマ割り込みに依存せずに、1μsオーダーの時間精度で処理を実行することができ、汎用OSを用いる場合でも高精度に処理時間を制御することができる。
なお、上記一実施の形態においては、タイムアウト通知部124によって、1μs周期でタイムアウト通知が出力されるものとした。しかし、タイムアウト通知は、必ずしも1μs周期でなくても良い。すなわち、例えばすべてのスレッドの動作時間が5μsである場合には、5μs周期でタイムアウト通知が出力されるようにしても良い。この場合には、タイムアウト通知部124は、ループ処理の回数がループ回数算出部122から通知された回数の5倍に到達する度にタイムアウト通知を出力する。こうすることにより、スレッド制御部127は、タイムアウト通知の度にスレッドを切り替えれば良く、経過時間が動作時間に達したか否かの判定を省略することができる。
また、各スレッドの動作時間が異なる場合でも、スレッドの開始時にこのスレッドの動作時間をタイムアウト通知部124に設定し、タイムアウト通知部124は、設定された動作時間が経過した際にタイムアウト通知を出力するようにしても良い。この場合には、タイムアウト通知部124は、ループ処理の回数が実行中のスレッドの動作時間に対応する回数に到達する度にタイムアウト通知を出力する。さらに、ループ回数算出部122が1μs当たりのループ処理の回数ではなく、1μsよりも短い時間当たりのループ回数を算出することにより、さらに高い時間精度でスレッドを切り替えることも可能である。
なお、上記一実施の形態においては、基地局装置100におけるスレッド制御について説明したが、本発明は基地局装置以外の様々な装置に適用することが可能である。すなわち、汎用OSによって動作し種々のアプリケーションを実行する装置に上記のタイマ制御方法を導入することにより、リアルタイムOS及び専用プロセッサを用いることなく高精度に処理時間を制御することができる。具体的には、例えばパーソナルコンピュータの仮想化環境において複数の汎用OSを稼働させて上記のタイマ制御方法を適用することにより、リアルタイムOS用のアプリケーションを実行するシステム試験などを安価かつ容易に実現することができる。
また、上記一実施の形態においては、コア#1がアプリケーションを実行するものとしたが、複数のコアが同時にアプリケーションを実行しても良い。ただし、この場合でも、1つのコア(コア#3)は、上述したスレッド制御処理を含むタイマ制御方法を実施する専用のコアとする。また、スレッド制御部127が優先度に応じて各コアにおけるスレッドの停止及び開始を制御することにより、コア数以上のスレッドが同時に実行されることはない。
さらに、上記一実施の形態において説明したタイマ制御方法をコンピュータが実行可能なプログラムとして記述することも可能である。この場合、このプログラムをコンピュータが読み取り可能な記録媒体に格納し、コンピュータに導入することも可能である。コンピュータが読み取り可能な記録媒体としては、例えばCD−ROM、DVDディスク、USBメモリなどの可搬型記録媒体や、例えばフラッシュメモリなどの半導体メモリが挙げられる。
110 有線I/F
120 ベースバンドプロセッサ
121 タイムスタンプ取得部
122 ループ回数算出部
123 ループ処理部
124 タイムアウト通知部
125 動作時間判定部
126 経過時間更新部
127 スレッド制御部
128 スレッド状態登録部
130 無線プロセッサ
140 無線I/F
150 メモリ

Claims (8)

  1. 所定のループ処理を繰り返すループ処理部と、
    プロセッサのクロックに対応するカウンタのカウンタ値を取得する取得部と、
    前記取得部によって取得されるカウンタ値に基づいて、所定の単位時間に前記ループ処理部によって繰り返されるループ処理の回数を算出する算出部と、
    前記ループ処理部によるループ処理の回数を計数し、計数された回数と前記算出部によって算出された回数とに基づくタイムアウト通知を出力する通知部と、
    前記通知部から出力されるタイムアウト通知に同期して、アプリケーションのスレッドを制御する制御部と
    を有することを特徴とするタイマ制御装置。
  2. 前記算出部は、
    前記所定の単位時間よりも長い時間に相当する前記カウンタ値の増分と、前記ループ処理部によってループ処理が1回実行される時間に相当する前記カウンタ値の増分とに基づいて、前記所定の単位時間に繰り返されるループ処理の回数を算出することを特徴とする請求項1記載のタイマ制御装置。
  3. 前記通知部は、
    計数されたループ処理の回数が前記算出部によって算出されたループ処理の回数に到達する度に、タイムアウト通知を出力することを特徴とする請求項1記載のタイマ制御装置。
  4. 前記通知部は、
    計数されたループ処理の回数が前記制御部によって制御されるスレッドの動作時間に対応する回数に到達する度に、タイムアウト通知を出力することを特徴とする請求項1記載のタイマ制御装置。
  5. 前記制御部は、
    前記通知部から出力されるタイムアウト通知に同期して、複数のスレッドの優先度に応じたスレッドの切り替えをアプリケーションに指示することを特徴とする請求項1記載のタイマ制御装置。
  6. 前記制御部は、
    1つのスレッドが実行中に当該1つのスレッドよりも優先度が高い他のスレッドが実行対象となった場合、前記通知部から出力されるタイムアウト通知に同期して、前記1つのスレッドを停止させるとともに、前記他のスレッドを開始させることを特徴とする請求項1記載のタイマ制御装置。
  7. 無線通信アプリケーションを実行する無線通信装置であって、
    所定のループ処理を繰り返すループ処理部と、
    プロセッサのクロックに対応するカウンタのカウンタ値を取得する取得部と、
    前記取得部によって取得されるカウンタ値に基づいて、所定の単位時間に前記ループ処理部によって繰り返されるループ処理の回数を算出する算出部と、
    前記ループ処理部によるループ処理の回数を計数し、計数された回数と前記算出部によって算出された回数とに基づくタイムアウト通知を出力する通知部と、
    前記通知部から出力されるタイムアウト通知に同期して、前記無線通信アプリケーションのスレッドを制御する制御部と
    を有することを特徴とする無線通信装置。
  8. 所定のループ処理を繰り返し、
    プロセッサのクロックに対応するカウンタのカウンタ値を取得し、
    取得されるカウンタ値に基づいて、所定の単位時間に繰り返されるループ処理の回数を算出し、
    前記ループ処理の回数を計数し、計数された回数と算出された前記所定の単位時間当たりの回数とに基づくタイムアウト通知を出力し、
    出力されるタイムアウト通知に同期して、アプリケーションのスレッドを制御する
    処理を有することを特徴とするタイマ制御方法。
JP2015021530A 2015-02-05 2015-02-05 タイマ制御装置、無線通信装置及びタイマ制御方法 Expired - Fee Related JP6409600B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015021530A JP6409600B2 (ja) 2015-02-05 2015-02-05 タイマ制御装置、無線通信装置及びタイマ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015021530A JP6409600B2 (ja) 2015-02-05 2015-02-05 タイマ制御装置、無線通信装置及びタイマ制御方法

Publications (2)

Publication Number Publication Date
JP2016143402A true JP2016143402A (ja) 2016-08-08
JP6409600B2 JP6409600B2 (ja) 2018-10-24

Family

ID=56570635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015021530A Expired - Fee Related JP6409600B2 (ja) 2015-02-05 2015-02-05 タイマ制御装置、無線通信装置及びタイマ制御方法

Country Status (1)

Country Link
JP (1) JP6409600B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6275822A (ja) * 1985-09-30 1987-04-07 Toshiba Corp コンピユ−タシステム
JPS63217425A (ja) * 1987-03-06 1988-09-09 Alps Electric Co Ltd ル−プの自動調整方式
JPH02220132A (ja) * 1989-02-22 1990-09-03 Pfu Ltd Cpuタイプ判別装置
JPH05134868A (ja) * 1991-11-14 1993-06-01 Nagano Oki Denki Kk ソフトタイマ制御方法
JPH0876878A (ja) * 1994-08-31 1996-03-22 Tokyo Gas Co Ltd タイマ処理方法
JPH11327920A (ja) * 1998-05-12 1999-11-30 Oki Electric Ind Co Ltd ソフトタイマ処理方法及び装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6275822A (ja) * 1985-09-30 1987-04-07 Toshiba Corp コンピユ−タシステム
JPS63217425A (ja) * 1987-03-06 1988-09-09 Alps Electric Co Ltd ル−プの自動調整方式
JPH02220132A (ja) * 1989-02-22 1990-09-03 Pfu Ltd Cpuタイプ判別装置
JPH05134868A (ja) * 1991-11-14 1993-06-01 Nagano Oki Denki Kk ソフトタイマ制御方法
JPH0876878A (ja) * 1994-08-31 1996-03-22 Tokyo Gas Co Ltd タイマ処理方法
JPH11327920A (ja) * 1998-05-12 1999-11-30 Oki Electric Ind Co Ltd ソフトタイマ処理方法及び装置

Also Published As

Publication number Publication date
JP6409600B2 (ja) 2018-10-24

Similar Documents

Publication Publication Date Title
JP7383033B2 (ja) 省電力信号パターンの使用方法、装置及び端末
CN109644355B (zh) 一种测量方法、终端设备、网络设备及计算机存储介质
KR20200132846A (ko) 비활성 상태로부터의 rrc 재개를 위한 보안 핸들링
US9451544B2 (en) Base station, radio terminal and radio communication system
JP2013143575A (ja) 無線通信端末装置及び無線通信端末装置制御方法
KR102280465B1 (ko) 단말 및 그 단말에서 애플리케이션 동기화 방법
CN107113891A (zh) 网络控制的且基于部署的增加的主小区测量
EP3001725B1 (en) Secondary cell state activation and deactivation of gaps
CN103941871A (zh) 控制智能终端的硬件运行状态的方法和设备
TWI743399B (zh) 一種進行調度請求的方法和設備
US20160224053A1 (en) Timer-based processing unit operational scaling employing timer resetting on idle process scheduling
JP5798340B2 (ja) 基地局、及びその制御方法
JP6409600B2 (ja) タイマ制御装置、無線通信装置及びタイマ制御方法
CN116033476B (zh) 定位参考信号的测量报告发送或接收方法和设备
JP6394452B2 (ja) 無線通信装置、無線通信方法、及びプログラム
CN113347668A (zh) 一种负载均衡方法、装置、电子设备及存储介质
CN114760679B (zh) 非连续接收drx配置切换的方法、装置及终端
US10901491B2 (en) Sleep management method and device, and computer storage medium
US20140237150A1 (en) Electronic computer and interrupt control method
CN116939674A (zh) 测量处理方法、装置、终端及网络侧设备
JP6226458B2 (ja) プログラムおよび基地局装置
JPWO2013046506A1 (ja) 処理装置、通信システム、通信端末、端末装置制御方法、及びプログラム
JP2015507886A (ja) 中断セル回復の検出方法及び装置
JP5662909B2 (ja) ユーザ端末、及び通信方法
JP5998295B2 (ja) ユーザ機器の適応遷移

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180718

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: 20180828

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180910

R150 Certificate of patent or registration of utility model

Ref document number: 6409600

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees