JP5477810B2 - 信号処理装置及びプログラム - Google Patents

信号処理装置及びプログラム Download PDF

Info

Publication number
JP5477810B2
JP5477810B2 JP2010056146A JP2010056146A JP5477810B2 JP 5477810 B2 JP5477810 B2 JP 5477810B2 JP 2010056146 A JP2010056146 A JP 2010056146A JP 2010056146 A JP2010056146 A JP 2010056146A JP 5477810 B2 JP5477810 B2 JP 5477810B2
Authority
JP
Japan
Prior art keywords
thread
processing
sub
signal
threads
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.)
Active
Application number
JP2010056146A
Other languages
English (en)
Other versions
JP2011191901A (ja
Inventor
俊介 中島
貴司 水上
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2010056146A priority Critical patent/JP5477810B2/ja
Publication of JP2011191901A publication Critical patent/JP2011191901A/ja
Application granted granted Critical
Publication of JP5477810B2 publication Critical patent/JP5477810B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)

Description

この発明は、信号処理装置及びプログラムに関し、例えば、SIP(Session Initiation Protocol)信号の処理に適用し得る。
従来、SIP信号を処理する信号処理装置(SIPサーバ)としては、特許文献1のSIPサーバがある。
特許文献1に記載のSIPサーバ等、従来のSIPサーバでは、一般的に、図5に示すように、同時に複数のSIP端末とSIP信号を送受信する場合と、SIPサーバ間で複数のSIP信号を同時に送受信する場合がある。
このため、従来のSIPサーバのプログラムでは、複数のSIP信号を処理するスレッドを起動して、同時に複数のSIP信号の送受信を処理できる構造になっているのが一般的である。
従来のSIPサーバのプログラムは、例えば、ひとつの受信スレッドと、複数の実行スレッドで構成され、各スレッドが並列に動作するように構成されている。
受信スレッドがひとつの信号を受信して実行スレッドを起動するのに要する時間は、ひとつの実行スレッドが動作する時間に比較すると無視できる程度の時間しかかからない。
このため、複数の信号を続けて受信すると、複数の実行スレッドが起動された状態となり、起動された複数スレッドが、各受信信号に対する処理を並列に実行していく。
ただし、ひとつのCPUが物理的に並列に実行できるスレッド数は、通常1桁程度の数であり、あまり大きな数ではない。
従って、同時起動するスレッド数を増加させていくと、個々のスレッドの処理がどんどん遅くなっていくことになり、一定時間内に処理できる実行スレッド数には上限がある。
従来、それに対する解決策としては、例えば、SIPサーバ上である数以上の実行スレッドを起動しないように制限する場合もある。
特開2009−124572号公報
しかしながら、SIPサーバ等の信号処理装置では、サービスを提供する上で本質的な処理である、受信信号に応じた処理を行うサービス処理よりも、受信信号の内容の分析処理(字句解析、構文解析等)や、送信信号の組み立て処理の方の方がより時間を要する場合がある。
また、上述の分析処理や組み立て処理は、途中で入出力等のためのブロックが発生せず、CPUを使用し続けるCPUバウンドの処理になっている。それにより、SIPサーバ等の信号処理装置の処理能力は、上述の分析処理や組み立て処理がボトルネックとなり、処理能力向上が難しい構造になっている。
そのため、受信した信号を効率的に処理することができる信号処理装置及びプログラムが望まれている。
第1の本発明は、外部から受信したSIPの受信信号を処理する信号処理装置において、(1)複数データを並列的に処理するSIMD型の第1のプロセッサと、(2)上記第1のプロセッサで実行される処理以外の処理を実行する第2のプロセッサと、(3)受信信号を蓄積する蓄積手段と、(4)上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記第1のプロセッサを用いて並列的に処理させるスレッド制御手段とを有し、(5)上記信号処理スレッドを構成するサブスレッドには、(5−1)受信信号からテキスト形式の受信信号テキストデータを得る受信工程のサブスレッドと、(5−2)受信信号について一連の処理の実行を制御する実行制御工程のサブスレッドと、(5−3)上記受信工程のサブスレッドが得た受信信号テキストデータに対して字句解析処理および構文解析処理を実行した結果を後段のサブスレッドで処理可能な受信信号データとして得る分析工程のサブスレッドと、(5−4)上記分析工程のサブスレッドで得られた受信信号データに応じたSIPのサービス処理を実行して当該サービス処理に伴って送信する送信信号データを得る処理工程のサブスレッドと、(5−5)上記処理工程のサブスレッドで得られた送信信号データをテキスト形式とする信号組立処理を実行して送信信号テキストデータを得る組立工程のサブスレッドと、(5−6)上記組立工程のサブスレッドで得られた送信信号テキストデータを送信処理する送信工程のサブスレッドが含まれており、(6)上記スレッド制御手段は、上記信号処理スレッドを構成するサブスレッドのうち、上記分析工程のサブスレッド、及び上記組立工程のサブスレッドについては上記第1のプロセッサで実行させ、それ以外のサブスレッドについては上記第2のプロセッサで実行させることを特徴とする。
第2の本発明の信号処理プログラムは、(1)外部から受信したSIPの受信信号を処理する信号処理装置に搭載された、複数データを並列的に処理するMIMD型の第1のプロセッサと上記第1のプロセッサで実行される処理以外の処理を実行する第2のプロセッサとを備えるコンピュータを、(2)受信信号を蓄積する蓄積手段と、(3)上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記第1のプロセッサを用いて並列的に処理させるスレッド制御手段として機能させ、(4)上記信号処理スレッドを構成するサブスレッドには、(5−1)受信信号からテキスト形式の受信信号テキストデータを得る受信工程のサブスレッドと、(5−2)受信信号について一連の処理の実行を制御する実行制御工程のサブスレッドと、(5−3)上記受信工程のサブスレッドが得た受信信号テキストデータに対して字句解析処理および構文解析処理を実行した結果を後段のサブスレッドで処理可能な受信信号データとして得る分析工程のサブスレッドと、(5−4)上記分析工程のサブスレッドで得られた受信信号データに応じたSIPのサービス処理を実行して当該サービス処理に伴って送信する送信信号データを得る処理工程のサブスレッドと、(5−5)上記処理工程のサブスレッドで得られた送信信号データをテキスト形式とする信号組立処理を実行して送信信号テキストデータを得る組立工程のサブスレッドと、(5−6)上記組立工程のサブスレッドで得られた送信信号テキストデータを送信処理する送信工程のサブスレッドが含まれており、(6)上記スレッド制御手段は、上記信号処理スレッドを構成するサブスレッドのうち、上記分析工程のサブスレッド、及び組立工程のサブスレッドについては上記第1のプロセッサで実行させ、それ以外のサブスレッドについては上記第2のプロセッサで実行させることを特徴とする。

本発明によれば、信号処理装置において、受信した信号を効率的に処理することができる。
実施形態に係るSIPサーバの機能的構成について示したブロック図である。 実施形態に係るSIPサーバにおける信号受信処理について示したフローチャートである。 実施形態に係るSIPサーバにおける実行制御処理について示したフローチャート(1)である。 実施形態に係るSIPサーバにおける実行制御処理について示したフローチャート(2)である。 従来のSIPサーバ及びSIP端末間の接続構成について示したブロック図である。
(A)主たる実施形態
以下、本発明による信号処理装置及びプログラムの一実施形態を、図面を参照しながら詳述する。この実施形態では、本発明の信号処理装置をSIPサーバに適用した例について説明している。
(A−1)実施形態の構成
図1は、この実施形態のSIPサーバ1の機能的構成について示したブロック図である。
SIPサーバ1は、送信元(他のSIPサーバやSIP端末等)から受信信号SRを受信し、受信信号SRの内容に基づいて所定の処理を行い、処理に応じた送信信号SSを、その処理に応じた送信先(他のSIPサーバやSIP端末等)へ送信するものである。なお、送信信号SSの送信は、受信信号SRの処理内容から必要に応じて行われるものであり、処理内容によっては送信されない場合がある。SIPサーバ1としては、例えば、SIP端末間の呼制御等のシグナリングを行う装置が挙げられる。
SIPサーバ1は、例えば、GPU(Graphics Processing Unit)のようなSIMD(Single Instruction Multiple Data)型のプロセッサと、通常のCPUとを備える情報処理装置に、実施形態の信号処理プログラムをインストールすることにより構築するようにしてもよく、その場合でも、その機能的構成については、図1のように示すことができる。
SIMD型のプロセッサでは、1回の命令に対して同時に複数のデータを処理することで、通常のCPUに比較して、高い演算性能を持つ。SIPサーバ1では、このSIMD型プロセッサを用いることにより、受信したSIP信号の処理(特に、受信信号SRの分析処理や、送信信号SSの組立処理)を効率的に行う構成となっている。
SIMD型プロセッサは、もともとは、スーパーコンピュータを実現するために利用されていた手法であるが、最近では、PC等に搭載して、3Dグラフィック表示を行うためのGPUにも応用されている。SIMD型プロセッサが同時に処理できるスレッド数は、CPUより2桁以上も大きな数であるため、SIMD型プロセッサに適用しやすい処理であれば、CPUより格段に高い性能で処理することが可能である。ただし、SIMD型プロセッサを用いて処理能力を向上できるのは、一回の命令で同時に複数のデータを処理できる場合であるため、同一の処理をなるべく同時に実行するようにしなければならない。
図1では、GPUのようなSIMD型のプロセッサを用いてSIPサーバの処理能力を向上させるための、SIPサーバ1における信号処理プログラム(スレッド)の構造が示されている。なお、SIPサーバ1を構成する上述の情報処理装置としては、例えば、既存のGPUを搭載したPCを適用することができる。
図1に示すように、SIPサーバ1は、ひとつの受信スレッド10、複数の実行スレッド20、複数の分析スレッド30(30−1、30−2)、複数の処理スレッド40(40−1、40−2)、複数の組立スレッド50(50−1、50−2)、及び、複数の送信スレッド60(60−1、60−2)を有し、それぞれのスレッドが並列的に動作する。
図1では、実行スレッド20は一つ、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60はそれぞれ2つずつの構成として記載しているが、これらのスレッドを同時に起動する数は限定されないものである。
これらのスレッドの内、通常のCPUで実行するスレッドは、受信スレッド10、実行スレッド20、処理スレッド40、及び、送信スレッド60であり、SIMD型プロセッサで実行するスレッドは、分析スレッド30と組立スレッド50であるものとする。
受信スレッド10は、SIPサーバ1の外部(他のSIPサーバやSIP端末)から受信信号SRを受信するスレッドである。受信スレッド10の中では、信号受信処理11が動作する。
信号受信処理11は、他のSIP端末やSIPサーバ等から受信信号SRを受信する度に、受信信号SRをテキスト形式に変換した受信信号テキストD1を、対応するメモリ領域(以下、「エリア」という)に出力していき、所定数の受信信号SRを受信したあと、実行スレッド20を起動する。
図1では、例として、受信スレッド10が、2つの受信信号SR−1、SR−2を受信し、受信信号SR−1、SR−2をテキスト変換したものを、それぞれ、受信信号テキストD1−1、D1−2として示している。
実行スレッド20は、受信した複数の信号の各々について、一連の処理の実行を制御するスレッドである。実行スレッド20の中では、実行制御処理21が動作する。
実行制御処理21は、複数の信号を一括して処理するため、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60を、受信した受信信号SRの個数分だけ起動して割り当てるスレッド制御を行う。
このとき、ひとつの受信信号SRに対しては、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60が、ひとつずつ順番に起動されるものとする。
分析スレッド30−1、30−2では、それぞれ、字句解析処理31−1、31−2と、構文解析処理32−1、32−2とが順番に実行される。
字句解析処理31−1、31−2では、それぞれ受信信号テキストD1−1、D1−2のエリアから、テキスト形式の受信信号を入力し、それを文字列、数値、IPアドレス、FQDN等の字句の並びに変換し、その結果を、字句解析結果D2−1、D2−2のエリアに出力する。
構文解析処理32−1、32−2は、字句解析結果D2−1、D2−2のエリアから受信信号に対する字句の並びを入力し、メソッドやパラメータ等の受信信号の情報を取り出し、内部形式の受信信号として、受信信号データD3−1、D3−2のエリアに出力する。
処理スレッド40−1、40−2では、それぞれサービス処理41−1、41−2が実行される。
サービス処理41−1、41−2は、受信信号データD3−1、D3−2のエリアから内部形式の受信信号を入力して、その信号に応じた処理を実行する。サービス処理41−1、41−2は、この処理を実行中に信号を送信する場合には、内部形式の送信信号の情報を、送信信号データD4−1、D4−2のエリアに出力する。
組立スレッド50−1、50−2では、それぞれ、信号組立処理51−1、51−2が実行される。
信号組立処理51−1、51−2は、送信信号データD4−1、D4−2のエリアから内部形式の送信信号の情報を入力して、それをテキスト形式に変換し、テキスト形式の送信信号を、送信信号テキストD5−1、D5−2のエリアに出力する。
送信スレッド60−1、60−2では、それぞれ、信号送信処理61−1、61−2が実行される。
信号送信処理61−1、61−2は、送信信号テキストD5−1、D5−2のエリアからテキスト形式の送信信号を入力し、SIPサーバの外部(他のSIPサーバやSIP端末等)へ送信信号SS−1、SS−2を送信する。
なお、分析スレッド30、処理スレッド40、組立スレッド50、送信スレッド60のそれぞれのスレッド内の処理内容については、既存のSIPサーバと同様の処理内容を適用することができるため、詳しい説明は省略する。
また、SIPサーバ1において、同時に実行されるスレッド数の上限は、上限値Nであるものとする。Nは任意の数であり、例えば、SIPサーバ1に搭載されるプロセッサ(通常のCPU及びMIMD型プロセッサ)の規模に応じて定めるようにしても良い。
(A−2)実施形態の動作
次に、以上のような構成を有する、この実施形態のSIPサーバ1の動作を説明する。
まず、受信スレッド10(信号受信処理11)の動作について説明する。
図2は、受信スレッド10(信号受信処理11)の動作について示したフローチャートである。
信号受信処理11は、最初に、起動中の実行スレッドの数を収集し(S101)、実行スレッド数が上限値N以上か否かを判定する(S102)。
そして、信号受信処理11は、上述のステップS102の判定において実行スレッド数が上限値N以上の場合、実行スレッドの終了を待つために、少し時間をおいて(所定の時間待機)から(S103)、上述のステップS101の処理に戻る。
一方、上述のステップS102の判定において、実行スレッド数が上限値N未満の場合、信号受信処理11は、受信信号テキストD1のエリアをM個確保し(S104)、受信信号SRを受信する(S105)。なお、Mは任意の数であり、例えば、SIPサーバ1に搭載されるプロセッサ(通常のCPU及びMIMD型プロセッサ)の規模や、受信信号SRが到来するタイミングの分布状況に応じて定めるようにしても良い。
このとき、上述のステップS105では、最初の受信信号SRが受信されるまで処理をブロック(待機)し、最初の受信信号SRを受信すると、M個の受信信号テキストD1のエリアの1番目に、最初に受信した受信信号SRを出力し(S106)、開始時刻TSに現在の時間を設定する(S107)。
次に、受信信号テキストD1のエリアへの受信信号SRの出力数がM未満、かつ、現在の時刻と開始時間TSの差が上限値TM(任意の時間)未満か否かを判定する(S108)。
そして、上述のステップS108の判定において、受信信号テキストD1のエリアへの受信信号SRの出力数がM未満、かつ、現在の時刻と開始時刻TSの差が上限値TM未満の場合、信号受信処理11は、次の受信信号SRを受信するまで待機する(S109)。
上述のステップS109では、一定時間経過しても、次の受信信号SRが到来しなかった場合にタイムアウトする設定とし、上述のステップS109の後で、タイムアウトか、信号受信かを判定する(S110)。
上述のステップS110の判定において、タイムアウトとなった場合は、上述のステップS108に戻る。
上述のステップS110の判定において、新たに受信信号SRを受信した場合は、M個の受信信号テキストD1のエリアのうち、2番目以降に受信信号SRを順番に出力し(S111)、上述のステップS108に戻る。
一方、上述のステップS108の判定において、受信信号テキストD1のエリアへの受信信号SRの出力数がM以上、または、現在の時刻と開始時刻TSの差が上限値TM以上の場合、実行スレッドを起動し(S112)、ステップS101に戻る。
このように、図2の処理では、信号受信処理11は、信号をM個受信するか、最初の信号受信から時間TMだけ経過すると、実行スレッドを起動し、かつ、SIPサーバ1上の実行スレッドを最大N個までしか起動しないように制限している。
次に、実行スレッド20(実行制御処理21)の処理について説明する。
図3、図4は、実行スレッド20(実行制御処理21)の処理について示したフローチャートである。
なお、図3、図4の処理では、変数として、後述する「処理スレッド起動数s1」及び「送信スレッド起動数s2」を用いるものとする。
実行制御処理21は、最初に、処理スレッド起動数s1に0を設定し(S201)、M個分の分析スレッド30を起動する(S202)。
この結果、1〜Mの中のi番目の分析スレッド30は、それぞれ、i番目の受信信号テキストD1のエリアからデータ入力し、結果をi番目の受信信号データD3のエリアに出力する。
実行制御処理21は、上述のステップS202の処理後、起動中の分析スレッド30の数を収集し(S203)、起動中の分析スレッド30の数が0より大きいか、0かを判定する(S204)。
上述のステップS204の判定で、起動中の分析スレッド30の数が0より大きい場合、(M−分析スレッド30の数−処理スレッド起動数s1)の値を求め、その個数分の処理スレッド40を起動する(S205)。
その後、処理スレッド起動数s1に(M−分析スレッド30の数)の値を設定し(S206)、実行中の分析スレッド30の終了を待つために、少し時間をおいて(所定の時間待機)から(S207)、上述のステップS203の処理に戻る。
上述のステップS204で、起動中の分析スレッド30の数が0の場合、(M−処理スレッド起動数s1)の値を求め、その個数分の処理スレッド40を起動する(S208)。
上述のステップS205、または、上述のステップS208では、1〜Mの中のi番目の分析スレッド30が終了し、かつ、i番目の処理スレッド40が起動されていない場合に、i番目の処理スレッド40を起動するようにする。この結果、1〜Mの中のi番目の処理スレッド40は、それぞれ、i番目の受信信号データD3のエリアからデータ入力し、結果をi番目の送信信号データD4のエリアに出力することになる。
実行制御処理21は、上述のステップS208の処理後、起動中の処理スレッド40の数を収集し(S209)、起動中の処理スレッド40の数が0より大きいか、0かを判定する(S210)。
そして、上述のステップS210の判定で、起動中の処理スレッドの数が0より大きい場合、処理スレッドの終了を待つために、少し時間をおいて(所定の時間待機)から(S211)、上述のステップS209の処理に戻る。
上述のステップS210の判定で、起動中の処理スレッドの数が0の場合、送信スレッド起動数s2に0を設定し(S212)、M個分の組立スレッド50を起動する(S213)。
この結果、1〜Mの中のi番目の組立スレッドは、それぞれ、i番目の送信信号データD4のエリアから入力し、結果をi番目の送信信号テキストD5のエリアに出力する。
実行制御処理21は、上述のステップS213の処理後、起動中の組立スレッドの数を収集し(S214)、起動中の組立スレッドの数が0より大きいか、0かを判定する(S215)。
上述のステップS215の判定で、起動中の組立スレッドの数が0より大きい場合、(M−組立スレッド50の数−送信スレッド起動数s2)の値を求め、その個数分の送信スレッド60を起動する(S216)。
その後、送信スレッド起動数s2に(M−組立スレッド50の数)の値を設定し(S217)、組立スレッド50の終了を待つために、少し時間をおいて(所定の時間待機)から(S218)、上述のステップS214の処理に戻る。
一方、上述のステップSS215の判定で、起動中の組立スレッド50の数が0の場合、(M−送信スレッド起動数s2)の値を求め、その個数分の送信スレッド60を起動する(S219)。
上述のステップSS216、または、上述のステップS219の処理では、1〜Mの中のi番目の組立スレッド50が終了し、かつ、i番目の送信スレッド60が起動されていない場合に、i番目の送信スレッド60を起動するようにする。この結果、1〜Mの中のi番目の送信スレッドは、それぞれ、i番目の送信信号テキストD5のエリアからデータ入力し、対応する送信信号SSを生成して送信する。
実行制御処理21は、上述のステップS219の処理の後、起動中の送信スレッド60の数を収集し(S220)、起動中の送信スレッド60の数が0より大きいか、0かを判定する(S221)。
上述のステップS221の判定で、起動中の送信スレッドの数が0より大きい場合、送信スレッド60の終了を待つために、少し時間をおいて(所定の時間待機)から(S222)、上述のステップS220の処理に戻る。
一方、上述のステップS221の判定で、起動中の送信スレッドの数が0の場合、実行制御処理21は終了となる。
実行制御処理21は、上述の図3、図4に示すように、最初にM個の分析スレッド30を起動し、いずれかの、分析スレッド30の終了を待つ。そして、いずれかの分析スレッド30が終了すると、それに対応する処理スレッド40を順に起動していき、M個まで処理スレッド40を起動した後は、すべての処理スレッド40の終了を待つ。さらに、M個の処理スレッド40が全て終了すると、M個の組立スレッド50を起動し、いずれかの組立スレッド50の終了を待つ。そして、いずれかの組立スレッド50が終了すると、それに対応する送信スレッド60を順に起動していき、M個まで送信スレッド60を起動した後は、すべての送信スレッド60の終了を待つ。そして、M個の送信スレッド60が、全て終了すると、実行制御処理21も終了となる。
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
実行制御処理21は、上述の図3、図4に示すように、SIMD型プロセッサに対して、実行する分析スレッド30と組立スレッド50を、M個同時に起動している。これにより、SIMD型プロセッサで、複数の信号に対する同一の字句解析処理31、同一の構文解析処理32、同一の信号組立処理51が並列に実施される。SIMD型プロセッサでは、CPUより並列に実行できるスレッド数が格段に多いため、M個の信号分の処理をCPUより短時間で処理できる。
また、CPUバウンドである字句解析処理31、構文解析処理32、信号組立処理51を、SIMD型プロセッサで実行することで、CPU自体の負荷も軽減される。これにより、CPU側で実行される、実行スレッド20、処理スレッド40、及び、送信スレッド60も、同時に実行できる数を増加できる。その結果、受信した信号に対する処理をより短時間でより並列に実行できるようになるため、SIPサーバ1の処理能力を向上することができる。
さらに、SIPサーバ1に搭載するSIMD型プロセッサとしては、既存のPCにおけるGPUを用いることができるので、安価に構築することができる。
(A−4)実施形態の変形例
SIMD型プロセッサでは、1回の命令で複数のデータを並列的に処理するが、通常、同じ命令を同時に実行するスレッド数が決められている。
同時に実行されるスレッドは、処理の中の同じ命令を順に実行していくことが基本である。
ただし、処理の中に分岐があり、かつ、同時に実行されるスレッドの中に、異なる方向に分岐するスレッドが混在した場合、分岐の両方分を実行するだけの実行時間がかかる。
このように、同時に実行されるスレッド内で分岐の混在が発生すると、1スレッドの処理時間が長くなるため、同時に実行されるスレッド内で分岐が混在しにくくすることが、SIMD型プロセッサの処理能力を引き出すポイントとなる。
そのため、上記の実施形態のSIPサーバ1において、SIMD型プロセッサで実行する字句解析処理31、構文解析処理32、及び、信号組立処理51について、同時に実行されるスレッド内での分岐を減らす変形実施例について、以下に述べる。
(A−4−1)字句解析処理に関する変形実施例
SIP信号の字句解析を効率良く実行するために、解析対象の文字を入力とする有限オートマトンとして処理を実現する手法がよく使われる。
この手法を用いる場合、字句解析処理31の処理は、受信信号テキストD1の先頭から1文字ずつ入力し、1文字毎に次の状態と字句解析結果D2を出力する有限オートマトンとして実現される。
字句解析処理において、入力された1文字に対して、次の状態と出力を決める処理を条件分岐でプログラムしてしまうと、SIMD型プロセッサで実行する場合に、処理時間が長くなってしまう場合がある。
このため、分析スレッド30(字句解析処理31)では、入力された1文字をインデックスとしてテーブルを引き、次の状態と出力をテーブルの値から決めるような処理にする(以下、「方法1A」という)と、処理中に分岐を減らすことができ、SIMD型プロセッサで効率良く実行できる。
また、字句解析のために有限オートマトンの状態遷移を繰り返す回数は、入力となる受信信号のサイズに依存する。同時に実行されるスレッドの中に、受信信号のサイズが異なるものが混在した場合、その中でサイズが最も長い受信信号を処理するだけの時間を要する。そこで、分析スレッド30(字句解析処理31)について、受信信号のサイズ順にスレッドを割り当てる(以下、「方法1B」という)ことで、同時に実行されるスレッド内での受信信号サイズのばらつきを減らし、スレッド全体での処理時間を短縮できる。すなわち、分析スレッド30(字句解析処理31)について、受信信号のサイズに応じて、同時にSIMD型プロセッサを用いて処理するスレッドのグループを割り当てることにより、同時に実行されるスレッド内で、分岐の混在する可能性を減らすことができる。
(A−4−2)構文解析処理に関する変形実施例
SIP信号の構文解析では、構文解析を効率良く実行するために、解析対象の字句を入力とするシフト還元構文解析というアルゴリズムがよく使われる。
この手法を用いる場合、構文解析処理32の処理は、字句解析結果D2の先頭から字句を1つずつ入力し、1つの字句毎にスタックに入れるシフト処理、または、スタックから取り出す還元処理を実行するようにしても良い。そして、還元処理を実行した時に、字句に対する構文上の扱いが決まり、受信信号データD3を出力する。
分析スレッド30(構文解析処理32)において、入力された1つの字句に対するシフト処理または還元処理の際にスタックに入出力する値を決定する処理を条件分岐でプログラムしてしまうと、SIMD型プロセッサで実行する場合に、処理時間が長くなってしまう。このため、分析スレッド30(構文解析処理32)では、入力された1つの字句をインデックスとしてテーブルを引き、スタックに入出力する値をテーブルの値から決めるような処理にする(以下、「方法2A」という)と、処理中に分岐を減らすことができ、SIMD型プロセッサで効率良く実行できる。
しかし、分析スレッド30(構文解析処理32)で、シフト処理を行うか還元処理を行うかを判定して処理を分岐する動作は避けられないため、まったく分岐をなくすことはできない。ただし、還元処理に比べて、シフトの処理は単純であり、処理時間の大部分は還元処理に要するので、シフト処理と還元処理の分岐が発生しても、SIMD型プロセッサで実行する場合でも、大きな処理効率の低下にはならない。
分析スレッド30(構文解析処理32)の処理の中に分岐が存在しても、同時に実行するスレッドの中で分岐が混在しなければ、処理の低下は発生しないため、分岐の混在の可能性を減らす方法として、以下に述べる方法がある。
SIP信号の場合、受信した信号の先頭の字句によって、信号の種別が決まるが、同一種別の信号同士であれば、異なる種別の信号より、構文のばらつきが少ないことが期待できる。そこで、分析スレッド30(構文解析処理32)について、同時に実行されるスレッドには、同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2B」という)ようにしても良い。
また、同一の送信元(SIPサーバやSIP端末)から受信した、同一種別の信号については、構文のばらつきが少ないことが期待できる。そこで、分析スレッド30(字句解析処理31)について、同時に実行されるスレッドには、同一のSIPサーバから受信した同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2C」という)ようにしてもよい。また、同様に、同時に実行されるスレッドには、SIP端末群から受信した同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2D」という)ようにしてもよい。
(A−4−3)信号組立処理に関する変形実施例
信号組立処理51は、送信信号データD4に設定されている信号種別やパラメータの個数に応じて、信号の組み立て方に対応する構文を変える必要があり、本質的に分岐を減らすことは困難である。
ただし、分岐の混在の可能性を減らす方法としては、以下に述べる方法がある。
同一種別の信号同士であれば、異なる種別の信号より、構文のばらつきが少ないことが期待できる。そこで、組立スレッド50(信号組立処理51)について、同時に実行されるスレッドには、同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3A」という)ようにしても良い。
また、同一の送信先(SIPサーバや、SIP端末)へ送信する同一種別の信号については、構文のばらつきが少ないことが期待できる。そこで、同時に実行されるスレッドには、同一サーバに送信する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3B」という)ようにしても良い。また、同様に、同時に実行されるスレッドには、SIP端末群へ送信する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3C」という)ようにしても良い。
さらに、サービス処理41において、同一のサービスで出力する同一種別の信号同士であれば、異なるサービスで出力する信号より、構文のばらつきが少ないことが期待できる。そこで、同時に実行されるスレッドには、同一のサービスで出力する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3D」という)ようにしても良い。
(A−4−4)字句解析処理31では、上述の方法1Aによって処理から分岐そのものを減らすことができ、さらに、上述の方法1Bによって、分岐の混在する可能性を減らすことができる。
構文解析処理32では、上述の方法2Aによって処理から分岐そのものを減らすことができ、さらに、上述の方法2B、方法2C、方法2Dによって、分岐の混在する可能性を減らすことができる。
また、信号組立処理51では、上述の方法3A、方法3B、方法3C、方法3Dによって、分岐の混在する可能性を減らすことができる。
これらの方法により、SIPサーバ1では、同時に実行されるスレッド内で分岐の混在の発生を減らし、SIMD型プロセッサでの処理効率を向上することができる。
ただし、上述の方法1A、方法2Aについては、SIMD型プロセッサでの処理性能改善目的ではないが、プログラムの単純化目的として用いている。
また、上述の方法1A、1B、2A〜2D、3A〜3Dは、全部SIPサーバ1に適用するようにしても良いし、一部だけを適用するようにしても良い。
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(B−1)上記の実施形態では、字句解析処理31、構文解析処理32、および、信号組立処理51をSIMD型プロセッサで処理する場合を例として説明したが、サービス処理41の処理内容が単純で済む場合等には、サービス処理41もSIMD型プロセッサで処理するようにしても良い。
また、上記の実施形態では、字句解析処理31、構文解析処理32、信号組立処理51について、SIMD型プロセッサで処理する例について説明したが、一部の処理をCPU側で行うようにしても良い。
(B−2)上記の実施形態では、本発明の信号処理装置を、SIPサーバに適用した例について説明したが、その他のプロトコルの信号を処理する装置について適用するようにしても良い。例えば、H.248等SIP以外を用いた通信システムにおいて、信号処理(例えば、呼制御信号処理)を行う装置に適用するようにしても良い。また、その他にも信号の内容がテキストベースとなっているプロトコルの処理を行う信号処理装置に適用するようにしても良い。その場合、上述の図1に示す各スレッドにおいて行われる処理のそれぞれについて、当該信号処理装置における処理内容に置き換えられることになる。
(B−3)信号を処理する以外にも、同時に多数のテキストを字句解析、または、構文解析する必要がある処理スレッド(例えば、プログラム言語のコンパイルや自然言語の翻訳等を行うスレッド)を実行する装置について、上述のSIPサーバ1における分析スレッド30、処理スレッド40、組立スレッド50と同様に、SIMD型プロセッサに割り当てるようにしても良い。
(B−4)上記の実施形態では、SIPサーバ1において、並列的にデータ処理を行うプロセッサとしてSIMD型のプロセッサを適用する例について説明したが、MIMD(Multiple Instruction stream,Multiple Data stream)型プロセッサ等、その他の並列処理を行うプロセッサを適用するようにしても良い。
1…SIPサーバ、SR、SR−1、SR−2…受信信号、10…受信スレッド、11…信号受信処理、20…実行スレッド、21…実行制御処理、D1、D1−1、D1−2…受信信号テキスト、30、30−1、30−2…分析スレッド、31、31−1、31−2…字句解析処理、D2、D2−1、D2−2…字句解析結果、32、32−1、32−2…構文解析処理、D3、D3−1、D3−2…受信信号データ、40、40−1、40−2…処理スレッド、41、41−1、41−2…サービス処理、D4、D4−1、D4−2…送信信号データ、50、50−1、50−2…組立スレッド、51、51−1、51−2…信号組立処理、D4、D4−1、D4−2…送信信号テキスト、60、60−1、60−2…送信スレッド、61、61−1、61−2…信号送信処理、SS、SS−1、SS−2…送信信号。

Claims (8)

  1. 外部から受信したSIPの受信信号を処理する信号処理装置において、
    複数データを並列的に処理するSIMD型の第1のプロセッサと、
    上記第1のプロセッサで実行される処理以外の処理を実行する第2のプロセッサと、
    受信信号を蓄積する蓄積手段と、
    上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記第1のプロセッサを用いて並列的に処理させるスレッド制御手段とを有し、
    上記信号処理スレッドを構成するサブスレッドには、
    受信信号からテキスト形式の受信信号テキストデータを得る受信工程のサブスレッドと、
    受信信号について一連の処理の実行を制御する実行制御工程のサブスレッドと、
    上記受信工程のサブスレッドが得た受信信号テキストデータに対して字句解析処理および構文解析処理を実行した結果を後段のサブスレッドで処理可能な受信信号データとして得る分析工程のサブスレッドと、
    上記分析工程のサブスレッドで得られた受信信号データに応じたSIPのサービス処理を実行して当該サービス処理に伴って送信する送信信号データを得る処理工程のサブスレッドと、
    上記処理工程のサブスレッドで得られた送信信号データをテキスト形式とする信号組立処理を実行して送信信号テキストデータを得る組立工程のサブスレッドと、
    上記組立工程のサブスレッドで得られた送信信号テキストデータを送信処理する送信工程のサブスレッドが含まれており、
    上記スレッド制御手段は、上記信号処理スレッドを構成するサブスレッドのうち、上記分析工程のサブスレッド、及び上記組立工程のサブスレッドについては上記第1のプロセッサで実行させ、それ以外のサブスレッドについては上記第2のプロセッサで実行させること
    を特徴とする信号処理装置。
  2. 上記スレッド制御手段は、上記第1のプロセッサを用いて実行する分析工程のサブスレッド及び組立工程のサブスレッドについては複数一斉に起動し、上記第2のプロセッサを用いて実行するサブスレッドについては当該サブスレッドの前段のサブスレッドの処理が終了次第起動することを特徴とする請求項1に記載の信号処理装置。
  3. 上記分析工程のサブスレッドにより行われる字句解析処理では、受信信号テキストデータの先頭から1文字ずつ入力し、1文字毎に入力された1文字をインデックスとして次の状態と出力内容を決定可能な字句解析処理テーブルを用いて、次の状態と出力を決定することを特徴とする請求項1又は2に記載の信号処理装置。
  4. 上記スレッド制御手段は、処理対象の受信信号テキストデータのサイズに応じた順序で上記分析工程のサブスレッドを割当てることを特徴とする請求項3に記載の信号処理装置。
  5. 上記分析工程のサブスレッドにより行われる構文解析処理では、字句解析処理結果の先頭から字句を1つずつ入力し、入力される1つの字句をインデックスとしてスタックに入力又は出力する値を決定可能な構文解析処理テーブルを用いて、スタックに入力又は出力する値を決定することを特徴とする請求項1〜4のいずれかに記載の信号処理装置。
  6. 上記スレッド制御手段は、同一種別の受信信号に係る受信信号テキストデータを処理する上記分析工程のサブスレッドを複数同時に起動する起動処理、同一のSIPサーバから受信した受信信号に係る受信信号テキストデータを処理する上記分析工程のサブスレッドを複数同時に起動する起動処理、又は、SIP端末群から受信した同一種別の受信信号に係る受信信号テキストデータを処理する上記分析工程のサブスレッドを複数同時に起動する起動処理のいずれかの起動処理を行うことを特徴とする請求項1〜5のいずれかに記載の信号処理装置。
  7. 上記スレッド制御手段は、同一種別の信号に係る送信信号データを処理する上記組立工程のサブスレッドを複数同時に起動する起動処理、同一のSIPサーバに送信する同一種別の信号に係る送信信号データを処理する上記組立工程のサブスレッドを複数同時に起動する起動処理、SIP端末群へ送信する同一種別の信号に係る送信信号データを処理する上記組立工程のサブスレッドを複数同時に起動する起動処理、又は、同一のサービス処理に係る送信信号データを処理する上記組立工程のサブスレッドを複数同時に起動する起動処理のいずれかの起動処理を行うことを特徴とする請求項1〜6のいずれかに記載の信号処理装置。
  8. 外部から受信したSIPの受信信号を処理する信号処理装置に搭載された、複数データを並列的に処理するMIMD型の第1のプロセッサと上記第1のプロセッサで実行される処理以外の処理を実行する第2のプロセッサとを備えるコンピュータを、
    受信信号を蓄積する蓄積手段と、
    上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記第1のプロセッサを用いて並列的に処理させるスレッド制御手段として機能させ、
    上記信号処理スレッドを構成するサブスレッドには、
    受信信号からテキスト形式の受信信号テキストデータを得る受信工程のサブスレッドと、
    受信信号について一連の処理の実行を制御する実行制御工程のサブスレッドと、
    上記受信工程のサブスレッドが得た受信信号テキストデータに対して字句解析処理および構文解析処理を実行した結果を後段のサブスレッドで処理可能な受信信号データとして得る分析工程のサブスレッドと、
    上記分析工程のサブスレッドで得られた受信信号データに応じたSIPのサービス処理を実行して当該サービス処理に伴って送信する送信信号データを得る処理工程のサブスレッドと、
    上記処理工程のサブスレッドで得られた送信信号データをテキスト形式とする信号組立処理を実行して送信信号テキストデータを得る組立工程のサブスレッドと、
    上記組立工程のサブスレッドで得られた送信信号テキストデータを送信処理する送信工程のサブスレッドが含まれており、
    上記スレッド制御手段は、上記信号処理スレッドを構成するサブスレッドのうち、上記分析工程のサブスレッド、及び組立工程のサブスレッドについては上記第1のプロセッサで実行させ、それ以外のサブスレッドについては上記第2のプロセッサで実行させること
    を特徴とする信号処理プログラム。
JP2010056146A 2010-03-12 2010-03-12 信号処理装置及びプログラム Active JP5477810B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010056146A JP5477810B2 (ja) 2010-03-12 2010-03-12 信号処理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010056146A JP5477810B2 (ja) 2010-03-12 2010-03-12 信号処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2011191901A JP2011191901A (ja) 2011-09-29
JP5477810B2 true JP5477810B2 (ja) 2014-04-23

Family

ID=44796771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010056146A Active JP5477810B2 (ja) 2010-03-12 2010-03-12 信号処理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5477810B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3741765B2 (ja) * 1996-02-19 2006-02-01 富士通株式会社 クレジット呼サービスシステム
JP2007096511A (ja) * 2005-09-27 2007-04-12 Oki Electric Ind Co Ltd 状態管理システム、ip電話交換機及び状態管理方法
JP2007096564A (ja) * 2005-09-28 2007-04-12 Fujitsu Ltd 通信サーバ装置、及びプログラム
JP2007329617A (ja) * 2006-06-07 2007-12-20 Nippon Telegr & Teleph Corp <Ntt> 通信制御処理実行方法およびシステム、ならびにそのプログラム
JP5011997B2 (ja) * 2006-12-13 2012-08-29 日本電気株式会社 通信装置、通信システム及びそれらに用いる通信方法並びにそのプログラム
US8312254B2 (en) * 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor

Also Published As

Publication number Publication date
JP2011191901A (ja) 2011-09-29

Similar Documents

Publication Publication Date Title
US11188380B2 (en) Method and apparatus for processing task in smart device
TWI407373B (zh) 用於管理多核心架構之資源的方法和設備
US20170185452A1 (en) Apparatus and method for data processing
US20030023830A1 (en) Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
KR20010095074A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품, 및 명령어 컴파일링 제품 및 컴파일러
CN106681820B (zh) 基于消息组合的可扩展大数据计算方法
CN108762905B (zh) 一种多任务事件的处理方法和装置
CN105204917B (zh) 在应用程序启动时加载配置文件的方法及装置
CN105635740B (zh) 对图像进行解码的方法及装置
KR20010095073A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
Själander et al. A look-ahead task management unit for embedded multi-core architectures
CN109445954A (zh) 一种定时任务的执行方法、终端设备及存储介质
CN115794262A (zh) 任务处理方法、装置、设备、存储介质以及程序产品
CN109918054B (zh) 一种基于形式化规范的服务总线微内核框架设计方法
JP5477810B2 (ja) 信号処理装置及びプログラム
CN113535419A (zh) 一种服务编排方法和装置
CN113051173B (zh) 测试流程的编排执行方法、装置、计算机设备和存储介质
CN101794215B (zh) 一种汇编执行复杂任务的方法和装置
JP5382624B2 (ja) マルチプロセッサ制御装置、その方法及びそのプログラム
CN111431892B (zh) 一种加速器管理架构、方法及加速器接口控制器
US20070022275A1 (en) Processor cluster implementing conditional instruction skip
CN111596923A (zh) Haxe静态链接库构建方法、装置和电子设备
CN114327643B (zh) 机器指令预处理方法、电子设备及计算机可读存储介质
US20120158651A1 (en) Configuration of asynchronous message processing in dataflow networks
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20120813

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131220

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

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R150 Certificate of patent or registration of utility model

Ref document number: 5477810

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150