JP2011191901A - Signal processor and program - Google Patents

Signal processor and program Download PDF

Info

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

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To efficiently process a received signal, in a signal processor. <P>SOLUTION: The signal processor processing a signal received from the outside includes: a means accumulating the received signals; and a means starting a plurality of signal processing threads for processing the accumulated received signals when the number of the accumulated received signals reaches a predetermined number or when a predetermined period lapses, allocating the accumulated received signals to the signal processing threads, and processing subthreads of a part or all processes of subthreads of the processes constituting each signal processing thread, in parallel, by use of a parallel processing processor between the plurality of signal processing threads. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

この発明は、信号処理装置及びプログラムに関し、例えば、SIP(Session Initiation Protocol)信号の処理に適用し得る。   The present invention relates to a signal processing apparatus and a program, and can be applied to, for example, processing of a SIP (Session Initiation Protocol) signal.

従来、SIP信号を処理する信号処理装置(SIPサーバ)としては、特許文献1のSIPサーバがある。   Conventionally, as a signal processing device (SIP server) for processing a SIP signal, there is a SIP server disclosed in Patent Document 1.

特許文献1に記載のSIPサーバ等、従来のSIPサーバでは、一般的に、図5に示すように、同時に複数のSIP端末とSIP信号を送受信する場合と、SIPサーバ間で複数のSIP信号を同時に送受信する場合がある。   In a conventional SIP server such as the SIP server described in Patent Document 1, generally, as shown in FIG. 5, a plurality of SIP signals are transmitted and received between a plurality of SIP terminals at the same time, and a plurality of SIP signals are transmitted between SIP servers. There are cases where data is transmitted and received simultaneously.

このため、従来のSIPサーバのプログラムでは、複数のSIP信号を処理するスレッドを起動して、同時に複数のSIP信号の送受信を処理できる構造になっているのが一般的である。   For this reason, the conventional SIP server program generally has a structure in which a thread for processing a plurality of SIP signals is activated to simultaneously process transmission / reception of a plurality of SIP signals.

従来のSIPサーバのプログラムは、例えば、ひとつの受信スレッドと、複数の実行スレッドで構成され、各スレッドが並列に動作するように構成されている。   A conventional SIP server program includes, for example, one reception thread and a plurality of execution threads, and each thread operates in parallel.

受信スレッドがひとつの信号を受信して実行スレッドを起動するのに要する時間は、ひとつの実行スレッドが動作する時間に比較すると無視できる程度の時間しかかからない。   The time required for the reception thread to receive one signal and activate the execution thread takes only a negligible time compared to the time during which one execution thread operates.

このため、複数の信号を続けて受信すると、複数の実行スレッドが起動された状態となり、起動された複数スレッドが、各受信信号に対する処理を並列に実行していく。   For this reason, when a plurality of signals are continuously received, a plurality of execution threads are activated, and the activated plurality of threads execute processing for each received signal in parallel.

ただし、ひとつのCPUが物理的に並列に実行できるスレッド数は、通常1桁程度の数であり、あまり大きな数ではない。   However, the number of threads that can be physically executed by one CPU in parallel is usually an order of magnitude, not a very large number.

従って、同時起動するスレッド数を増加させていくと、個々のスレッドの処理がどんどん遅くなっていくことになり、一定時間内に処理できる実行スレッド数には上限がある。   Therefore, as the number of threads that are activated simultaneously is increased, the processing of individual threads becomes increasingly slower, and there is an upper limit on the number of execution threads that can be processed within a certain time.

従来、それに対する解決策としては、例えば、SIPサーバ上である数以上の実行スレッドを起動しないように制限する場合もある。   Conventionally, as a solution to this problem, for example, there is a case where the number of execution threads on a SIP server is limited so as not to be activated.

特開2009−124572号公報JP 2009-124572 A

しかしながら、SIPサーバ等の信号処理装置では、サービスを提供する上で本質的な処理である、受信信号に応じた処理を行うサービス処理よりも、受信信号の内容の分析処理(字句解析、構文解析等)や、送信信号の組み立て処理の方の方がより時間を要する場合がある。   However, a signal processing apparatus such as a SIP server is more essential in providing a service than a service process that performs a process corresponding to a received signal, which is an analysis process (lexical analysis, syntax analysis) of the content of the received signal. Etc.) and the assembly process of the transmission signal may take more time.

また、上述の分析処理や組み立て処理は、途中で入出力等のためのブロックが発生せず、CPUを使用し続けるCPUバウンドの処理になっている。それにより、SIPサーバ等の信号処理装置の処理能力は、上述の分析処理や組み立て処理がボトルネックとなり、処理能力向上が難しい構造になっている。   Further, the analysis process and the assembly process described above are CPU bound processes in which a block for input / output or the like does not occur in the middle and the CPU is continuously used. As a result, the processing capability of a signal processing device such as a SIP server has a structure in which it is difficult to improve the processing capability because the analysis processing and assembly processing described above become a bottleneck.

そのため、受信した信号を効率的に処理することができる信号処理装置及びプログラムが望まれている。   Therefore, a signal processing apparatus and program that can efficiently process received signals are desired.

第1の本発明は、外部から受信した受信信号を処理する信号処理装置において、(1)複数データを並列的に処理する並列処理プロセッサと、(2)受信信号を蓄積する蓄積手段と、(3)上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記並列処理プロセッサを用いて並列的に処理させるスレッド制御手段とを有することを特徴とする。   According to a first aspect of the present invention, in a signal processing apparatus for processing a received signal received from the outside, (1) a parallel processing processor for processing a plurality of data in parallel, (2) storage means for storing received signals, 3) When the number of received signals accumulated by the accumulating means reaches a predetermined number, or when a predetermined period has elapsed, a plurality of signal processing threads for processing the received signals accumulated by the accumulating means are activated, The reception signal accumulated by the accumulation means is assigned to each signal processing thread, and a plurality of signal processing threads are provided for some or all of the process sub-threads constituting each signal processing thread. Thread control means for performing parallel processing using the parallel processing processor.

第2の本発明は、信号処理プログラムにおいて、(1)外部から受信した受信信号を処理する信号処理装置に搭載された、複数データを並列的に処理する並列処理プロセッサを備えるコンピュータを、(2)受信信号を蓄積する蓄積手段と、(3)上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記並列処理プロセッサを用いて並列的に処理させるスレッド制御手段として機能させることを特徴とする。   According to a second aspect of the present invention, in the signal processing program, (1) a computer provided with a parallel processing processor for processing a plurality of data in parallel, mounted on a signal processing device for processing a received signal received from outside (2) ) Storage means for storing received signals; and (3) received signals stored by the storage means when the number of received signals stored by the storage means reaches a predetermined number or when a predetermined period has elapsed. A plurality of signal processing threads are started, and the reception signals accumulated by the storage means are allocated to each signal processing thread, and some or all of the sub-threads of each process constituting each signal processing thread Process sub-threads function as thread control means for processing in parallel using a parallel processor among a plurality of signal processing threads. And wherein the door.

本発明によれば、信号処理装置において、受信した信号を効率的に処理することができる。   According to the present invention, a received signal can be efficiently processed in a signal processing device.

実施形態に係るSIPサーバの機能的構成について示したブロック図である。It is the block diagram shown about the functional structure of the SIP server which concerns on embodiment. 実施形態に係るSIPサーバにおける信号受信処理について示したフローチャートである。It is the flowchart shown about the signal reception process in the SIP server which concerns on embodiment. 実施形態に係るSIPサーバにおける実行制御処理について示したフローチャート(1)である。It is the flowchart (1) shown about the execution control process in the SIP server which concerns on embodiment. 実施形態に係るSIPサーバにおける実行制御処理について示したフローチャート(2)である。It is the flowchart (2) shown about the execution control process in the SIP server which concerns on embodiment. 従来のSIPサーバ及びSIP端末間の接続構成について示したブロック図である。It is the block diagram shown about the connection structure between the conventional SIP server and a SIP terminal.

(A)主たる実施形態
以下、本発明による信号処理装置及びプログラムの一実施形態を、図面を参照しながら詳述する。この実施形態では、本発明の信号処理装置をSIPサーバに適用した例について説明している。
(A) Main Embodiment Hereinafter, an embodiment of a signal processing device and a program according to the present invention will be described in detail with reference to the drawings. In this embodiment, an example in which the signal processing apparatus of the present invention is applied to a SIP server is described.

(A−1)実施形態の構成
図1は、この実施形態のSIPサーバ1の機能的構成について示したブロック図である。
(A-1) Configuration of Embodiment FIG. 1 is a block diagram showing a functional configuration of the SIP server 1 of this embodiment.

SIPサーバ1は、送信元(他のSIPサーバやSIP端末等)から受信信号SRを受信し、受信信号SRの内容に基づいて所定の処理を行い、処理に応じた送信信号SSを、その処理に応じた送信先(他のSIPサーバやSIP端末等)へ送信するものである。なお、送信信号SSの送信は、受信信号SRの処理内容から必要に応じて行われるものであり、処理内容によっては送信されない場合がある。SIPサーバ1としては、例えば、SIP端末間の呼制御等のシグナリングを行う装置が挙げられる。   The SIP server 1 receives a reception signal SR from a transmission source (another SIP server, SIP terminal, or the like), performs a predetermined process based on the content of the reception signal SR, and processes the transmission signal SS corresponding to the process. To a transmission destination (another SIP server, SIP terminal, etc.) according to The transmission of the transmission signal SS is performed as necessary from the processing content of the reception signal SR, and may not be transmitted depending on the processing content. Examples of the SIP server 1 include a device that performs signaling such as call control between SIP terminals.

SIPサーバ1は、例えば、GPU(Graphics Processing Unit)のようなSIMD(Single Instruction Multiple Data)型のプロセッサと、通常のCPUとを備える情報処理装置に、実施形態の信号処理プログラムをインストールすることにより構築するようにしてもよく、その場合でも、その機能的構成については、図1のように示すことができる。   The SIP server 1 installs the signal processing program of the embodiment in an information processing apparatus including a SIMD (Single Instruction Multiple Data) processor such as a GPU (Graphics Processing Unit) and a normal CPU, for example. Even in this case, the functional configuration can be shown as shown in FIG.

SIMD型のプロセッサでは、1回の命令に対して同時に複数のデータを処理することで、通常のCPUに比較して、高い演算性能を持つ。SIPサーバ1では、このSIMD型プロセッサを用いることにより、受信したSIP信号の処理(特に、受信信号SRの分析処理や、送信信号SSの組立処理)を効率的に行う構成となっている。   The SIMD type processor has a higher calculation performance than a normal CPU by processing a plurality of data simultaneously for one instruction. The SIP server 1 is configured to efficiently perform processing of the received SIP signal (particularly analysis processing of the received signal SR and assembly processing of the transmission signal SS) by using this SIMD type processor.

SIMD型プロセッサは、もともとは、スーパーコンピュータを実現するために利用されていた手法であるが、最近では、PC等に搭載して、3Dグラフィック表示を行うためのGPUにも応用されている。SIMD型プロセッサが同時に処理できるスレッド数は、CPUより2桁以上も大きな数であるため、SIMD型プロセッサに適用しやすい処理であれば、CPUより格段に高い性能で処理することが可能である。ただし、SIMD型プロセッサを用いて処理能力を向上できるのは、一回の命令で同時に複数のデータを処理できる場合であるため、同一の処理をなるべく同時に実行するようにしなければならない。   The SIMD type processor was originally used to realize a supercomputer, but recently it has been applied to a GPU for 3D graphic display mounted on a PC or the like. Since the number of threads that can be processed simultaneously by the SIMD type processor is two or more digits larger than that of the CPU, any process that can be easily applied to the SIMD type processor can be processed with much higher performance than the CPU. However, since the processing capability can be improved by using the SIMD type processor when a plurality of data can be processed at the same time by one instruction, the same processing should be executed as simultaneously as possible.

図1では、GPUのようなSIMD型のプロセッサを用いてSIPサーバの処理能力を向上させるための、SIPサーバ1における信号処理プログラム(スレッド)の構造が示されている。なお、SIPサーバ1を構成する上述の情報処理装置としては、例えば、既存のGPUを搭載したPCを適用することができる。   FIG. 1 shows the structure of a signal processing program (thread) in the SIP server 1 for improving the processing capability of the SIP server using a SIMD type processor such as a GPU. In addition, as the above-described information processing apparatus constituting the SIP server 1, for example, a PC equipped with an existing GPU can be applied.

図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)を有し、それぞれのスレッドが並列的に動作する。   As shown in FIG. 1, the SIP server 1 includes one receiving thread 10, a plurality of execution threads 20, a plurality of analysis threads 30 (30-1, 30-2), and a plurality of processing threads 40 (40-1, 40). -2), a plurality of assembly threads 50 (50-1, 50-2) and a plurality of transmission threads 60 (60-1, 60-2), each thread operating in parallel.

図1では、実行スレッド20は一つ、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60はそれぞれ2つずつの構成として記載しているが、これらのスレッドを同時に起動する数は限定されないものである。   In FIG. 1, one execution thread 20, one analysis thread 30, processing thread 40, assembly thread 50, and transmission thread 60 are described as two configurations, but the number of these threads activated simultaneously. Is not limited.

これらのスレッドの内、通常のCPUで実行するスレッドは、受信スレッド10、実行スレッド20、処理スレッド40、及び、送信スレッド60であり、SIMD型プロセッサで実行するスレッドは、分析スレッド30と組立スレッド50であるものとする。   Among these threads, threads that are executed by a normal CPU are a reception thread 10, an execution thread 20, a processing thread 40, and a transmission thread 60, and threads that are executed by a SIMD type processor are an analysis thread 30 and an assembly thread. 50.

受信スレッド10は、SIPサーバ1の外部(他のSIPサーバやSIP端末)から受信信号SRを受信するスレッドである。受信スレッド10の中では、信号受信処理11が動作する。   The reception thread 10 is a thread for receiving a reception signal SR from outside the SIP server 1 (another SIP server or SIP terminal). In the reception thread 10, a signal reception process 11 operates.

信号受信処理11は、他のSIP端末やSIPサーバ等から受信信号SRを受信する度に、受信信号SRをテキスト形式に変換した受信信号テキストD1を、対応するメモリ領域(以下、「エリア」という)に出力していき、所定数の受信信号SRを受信したあと、実行スレッド20を起動する。   Each time the signal reception process 11 receives a received signal SR from another SIP terminal, SIP server, or the like, the received signal text D1 obtained by converting the received signal SR into a text format is converted into a corresponding memory area (hereinafter referred to as “area”). ) And after receiving a predetermined number of reception signals SR, the execution thread 20 is activated.

図1では、例として、受信スレッド10が、2つの受信信号SR−1、SR−2を受信し、受信信号SR−1、SR−2をテキスト変換したものを、それぞれ、受信信号テキストD1−1、D1−2として示している。   In FIG. 1, as an example, the reception thread 10 receives two reception signals SR-1 and SR-2, and converts the reception signals SR-1 and SR-2 into texts, respectively. 1 and D1-2.

実行スレッド20は、受信した複数の信号の各々について、一連の処理の実行を制御するスレッドである。実行スレッド20の中では、実行制御処理21が動作する。   The execution thread 20 is a thread that controls execution of a series of processes for each of a plurality of received signals. In the execution thread 20, an execution control process 21 operates.

実行制御処理21は、複数の信号を一括して処理するため、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60を、受信した受信信号SRの個数分だけ起動して割り当てるスレッド制御を行う。   In the execution control process 21, in order to process a plurality of signals at once, the analysis thread 30, the processing thread 40, the assembly thread 50, and the transmission thread 60 are activated and assigned by the number of received reception signals SR. Take control.

このとき、ひとつの受信信号SRに対しては、分析スレッド30、処理スレッド40、組立スレッド50、及び、送信スレッド60が、ひとつずつ順番に起動されるものとする。   At this time, it is assumed that the analysis thread 30, the processing thread 40, the assembly thread 50, and the transmission thread 60 are activated one by one for one received signal SR.

分析スレッド30−1、30−2では、それぞれ、字句解析処理31−1、31−2と、構文解析処理32−1、32−2とが順番に実行される。   In the analysis threads 30-1 and 30-2, the lexical analysis processes 31-1 and 31-2 and the syntax analysis processes 32-1 and 32-2 are sequentially executed.

字句解析処理31−1、31−2では、それぞれ受信信号テキストD1−1、D1−2のエリアから、テキスト形式の受信信号を入力し、それを文字列、数値、IPアドレス、FQDN等の字句の並びに変換し、その結果を、字句解析結果D2−1、D2−2のエリアに出力する。   In the lexical analysis processes 31-1 and 31-2, text-format received signals are input from the areas of the received signal text D1-1 and D1-2, respectively, and they are converted into lexical characters such as character strings, numerical values, IP addresses, and FQDNs. The result of the conversion is output to the areas of the lexical analysis results D2-1 and D2-2.

構文解析処理32−1、32−2は、字句解析結果D2−1、D2−2のエリアから受信信号に対する字句の並びを入力し、メソッドやパラメータ等の受信信号の情報を取り出し、内部形式の受信信号として、受信信号データD3−1、D3−2のエリアに出力する。   The parsing processes 32-1 and 32-2 input lexical sequences for received signals from the areas of the lexical analysis results D2-1 and D2-2, extract received signal information such as methods and parameters, and the internal format The received signal is output to the areas of received signal data D3-1 and D3-2.

処理スレッド40−1、40−2では、それぞれサービス処理41−1、41−2が実行される。   In the processing threads 40-1 and 40-2, service processes 41-1 and 41-2 are executed, respectively.

サービス処理41−1、41−2は、受信信号データD3−1、D3−2のエリアから内部形式の受信信号を入力して、その信号に応じた処理を実行する。サービス処理41−1、41−2は、この処理を実行中に信号を送信する場合には、内部形式の送信信号の情報を、送信信号データD4−1、D4−2のエリアに出力する。   The service processes 41-1 and 41-2 receive the received signal in the internal format from the areas of the received signal data D 3-1 and D 3-2 and execute processes corresponding to the signals. When the service processing 41-1 and 41-2 transmit a signal during the execution of the processing, the information of the transmission signal in the internal format is output to the areas of the transmission signal data D4-1 and D4-2.

組立スレッド50−1、50−2では、それぞれ、信号組立処理51−1、51−2が実行される。   In the assembly threads 50-1 and 50-2, signal assembly processes 51-1 and 51-2 are executed, respectively.

信号組立処理51−1、51−2は、送信信号データD4−1、D4−2のエリアから内部形式の送信信号の情報を入力して、それをテキスト形式に変換し、テキスト形式の送信信号を、送信信号テキストD5−1、D5−2のエリアに出力する。   The signal assembling processes 51-1 and 51-2 receive the transmission signal information in the internal format from the areas of the transmission signal data D 4-1 and D 4-2, convert it into the text format, and transmit the text format transmission signal. Are output to the areas of the transmission signal texts D5-1 and D5-2.

送信スレッド60−1、60−2では、それぞれ、信号送信処理61−1、61−2が実行される。   In the transmission threads 60-1 and 60-2, signal transmission processing 61-1 and 61-2 are executed, respectively.

信号送信処理61−1、61−2は、送信信号テキストD5−1、D5−2のエリアからテキスト形式の送信信号を入力し、SIPサーバの外部(他のSIPサーバやSIP端末等)へ送信信号SS−1、SS−2を送信する。   In the signal transmission processing 61-1 and 61-2, a transmission signal in text format is input from the areas of the transmission signal texts D5-1 and D5-2, and transmitted to the outside of the SIP server (such as another SIP server or SIP terminal). Signals SS-1 and SS-2 are transmitted.

なお、分析スレッド30、処理スレッド40、組立スレッド50、送信スレッド60のそれぞれのスレッド内の処理内容については、既存のSIPサーバと同様の処理内容を適用することができるため、詳しい説明は省略する。   The processing contents in each of the analysis thread 30, the processing thread 40, the assembly thread 50, and the transmission thread 60 can be applied to the processing contents similar to those of the existing SIP server. .

また、SIPサーバ1において、同時に実行されるスレッド数の上限は、上限値Nであるものとする。Nは任意の数であり、例えば、SIPサーバ1に搭載されるプロセッサ(通常のCPU及びMIMD型プロセッサ)の規模に応じて定めるようにしても良い。   In the SIP server 1, the upper limit of the number of threads executed simultaneously is the upper limit value N. N is an arbitrary number, and may be determined according to the scale of processors (ordinary CPU and MIMD type processor) mounted on the SIP server 1, for example.

(A−2)実施形態の動作
次に、以上のような構成を有する、この実施形態のSIPサーバ1の動作を説明する。
(A-2) Operation | movement of embodiment Next, operation | movement of the SIP server 1 of this embodiment which has the above structures is demonstrated.

まず、受信スレッド10(信号受信処理11)の動作について説明する。   First, the operation of the reception thread 10 (signal reception processing 11) will be described.

図2は、受信スレッド10(信号受信処理11)の動作について示したフローチャートである。   FIG. 2 is a flowchart showing the operation of the reception thread 10 (signal reception processing 11).

信号受信処理11は、最初に、起動中の実行スレッドの数を収集し(S101)、実行スレッド数が上限値N以上か否かを判定する(S102)。   The signal reception process 11 first collects the number of running execution threads (S101), and determines whether the number of execution threads is equal to or greater than the upper limit value N (S102).

そして、信号受信処理11は、上述のステップS102の判定において実行スレッド数が上限値N以上の場合、実行スレッドの終了を待つために、少し時間をおいて(所定の時間待機)から(S103)、上述のステップS101の処理に戻る。   When the number of execution threads is equal to or greater than the upper limit value N in the determination in step S102 described above, the signal reception process 11 waits for a while (waiting for a predetermined time) to wait for the end of the execution thread (S103). The process returns to step S101 described above.

一方、上述のステップS102の判定において、実行スレッド数が上限値N未満の場合、信号受信処理11は、受信信号テキストD1のエリアをM個確保し(S104)、受信信号SRを受信する(S105)。なお、Mは任意の数であり、例えば、SIPサーバ1に搭載されるプロセッサ(通常のCPU及びMIMD型プロセッサ)の規模や、受信信号SRが到来するタイミングの分布状況に応じて定めるようにしても良い。   On the other hand, if the number of execution threads is less than the upper limit value N in the determination in step S102 described above, the signal reception process 11 secures M areas of the reception signal text D1 (S104) and receives the reception signal SR (S105). ). Note that M is an arbitrary number. For example, M is determined according to the scale of processors (ordinary CPU and MIMD type processor) installed in the SIP server 1 and the distribution situation of the timing at which the received signal SR arrives. Also good.

このとき、上述のステップS105では、最初の受信信号SRが受信されるまで処理をブロック(待機)し、最初の受信信号SRを受信すると、M個の受信信号テキストD1のエリアの1番目に、最初に受信した受信信号SRを出力し(S106)、開始時刻TSに現在の時間を設定する(S107)。   At this time, in the above-described step S105, the process is blocked (waiting) until the first reception signal SR is received. When the first reception signal SR is received, the first of the areas of the M reception signal texts D1, The reception signal SR received first is output (S106), and the current time is set as the start time TS (S107).

次に、受信信号テキストD1のエリアへの受信信号SRの出力数がM未満、かつ、現在の時刻と開始時間TSの差が上限値TM(任意の時間)未満か否かを判定する(S108)。   Next, it is determined whether the number of outputs of the received signal SR to the area of the received signal text D1 is less than M and the difference between the current time and the start time TS is less than the upper limit value TM (arbitrary time) (S108). ).

そして、上述のステップS108の判定において、受信信号テキストD1のエリアへの受信信号SRの出力数がM未満、かつ、現在の時刻と開始時刻TSの差が上限値TM未満の場合、信号受信処理11は、次の受信信号SRを受信するまで待機する(S109)。   If the number of outputs of the reception signal SR to the area of the reception signal text D1 is less than M and the difference between the current time and the start time TS is less than the upper limit value TM in the determination in step S108, signal reception processing is performed. 11 waits until the next reception signal SR is received (S109).

上述のステップS109では、一定時間経過しても、次の受信信号SRが到来しなかった場合にタイムアウトする設定とし、上述のステップS109の後で、タイムアウトか、信号受信かを判定する(S110)。   In step S109 described above, a setting is made to time out if the next reception signal SR does not arrive even after a predetermined time has elapsed, and after step S109 described above, it is determined whether timeout or signal reception has occurred (S110). .

上述のステップS110の判定において、タイムアウトとなった場合は、上述のステップS108に戻る。   If it is determined in step S110 that a timeout has occurred, the process returns to step S108.

上述のステップS110の判定において、新たに受信信号SRを受信した場合は、M個の受信信号テキストD1のエリアのうち、2番目以降に受信信号SRを順番に出力し(S111)、上述のステップS108に戻る。   When the reception signal SR is newly received in the determination in step S110 described above, the reception signal SR is output in order in the second and subsequent areas out of the M reception signal text D1 areas (S111). Return to S108.

一方、上述のステップS108の判定において、受信信号テキストD1のエリアへの受信信号SRの出力数がM以上、または、現在の時刻と開始時刻TSの差が上限値TM以上の場合、実行スレッドを起動し(S112)、ステップS101に戻る。   On the other hand, if the number of outputs of the received signal SR to the area of the received signal text D1 is M or more or the difference between the current time and the start time TS is greater than or equal to the upper limit value TM in the determination in step S108 described above, It starts (S112) and returns to step S101.

このように、図2の処理では、信号受信処理11は、信号をM個受信するか、最初の信号受信から時間TMだけ経過すると、実行スレッドを起動し、かつ、SIPサーバ1上の実行スレッドを最大N個までしか起動しないように制限している。   As described above, in the process of FIG. 2, the signal reception process 11 activates an execution thread and receives an execution thread on the SIP server 1 when M signals are received or when the time TM has elapsed since the first signal reception. Is limited to start up to a maximum of N.

次に、実行スレッド20(実行制御処理21)の処理について説明する。   Next, the process of the execution thread 20 (execution control process 21) will be described.

図3、図4は、実行スレッド20(実行制御処理21)の処理について示したフローチャートである。   3 and 4 are flowcharts showing the process of the execution thread 20 (execution control process 21).

なお、図3、図4の処理では、変数として、後述する「処理スレッド起動数s1」及び「送信スレッド起動数s2」を用いるものとする。   3 and 4, “processing thread activation number s1” and “transmission thread activation number s2” to be described later are used as variables.

実行制御処理21は、最初に、処理スレッド起動数s1に0を設定し(S201)、M個分の分析スレッド30を起動する(S202)。   In the execution control process 21, first, the processing thread activation number s1 is set to 0 (S201), and the M analysis threads 30 are activated (S202).

この結果、1〜Mの中のi番目の分析スレッド30は、それぞれ、i番目の受信信号テキストD1のエリアからデータ入力し、結果をi番目の受信信号データD3のエリアに出力する。   As a result, the i-th analysis thread 30 among 1 to M inputs data from the area of the i-th received signal text D1, and outputs the result to the area of the i-th received signal data D3.

実行制御処理21は、上述のステップS202の処理後、起動中の分析スレッド30の数を収集し(S203)、起動中の分析スレッド30の数が0より大きいか、0かを判定する(S204)。   The execution control process 21 collects the number of activated analysis threads 30 after the process of step S202 described above (S203), and determines whether the number of activated analysis threads 30 is greater than 0 or 0 (S204). ).

上述のステップS204の判定で、起動中の分析スレッド30の数が0より大きい場合、(M−分析スレッド30の数−処理スレッド起動数s1)の値を求め、その個数分の処理スレッド40を起動する(S205)。   If the number of activated analysis threads 30 is greater than 0 in the determination in step S204 described above, the value of (M-number of analysis threads 30-number of processing thread activations s1) is obtained, and the number of processing threads 40 corresponding to that number is obtained. Start up (S205).

その後、処理スレッド起動数s1に(M−分析スレッド30の数)の値を設定し(S206)、実行中の分析スレッド30の終了を待つために、少し時間をおいて(所定の時間待機)から(S207)、上述のステップS203の処理に戻る。   Thereafter, a value of (the number of M-analysis threads 30) is set as the processing thread activation number s1 (S206), and in order to wait for the end of the analysis thread 30 being executed, a little time is allowed (waiting for a predetermined time). From (S207), the process returns to the above-described step S203.

上述のステップS204で、起動中の分析スレッド30の数が0の場合、(M−処理スレッド起動数s1)の値を求め、その個数分の処理スレッド40を起動する(S208)。   If the number of activated analysis threads 30 is 0 in step S204 described above, the value of (M-processing thread activation number s1) is obtained, and the corresponding number of processing threads 40 are activated (S208).

上述のステップS205、または、上述のステップS208では、1〜Mの中のi番目の分析スレッド30が終了し、かつ、i番目の処理スレッド40が起動されていない場合に、i番目の処理スレッド40を起動するようにする。この結果、1〜Mの中のi番目の処理スレッド40は、それぞれ、i番目の受信信号データD3のエリアからデータ入力し、結果をi番目の送信信号データD4のエリアに出力することになる。   In the above-described step S205 or the above-described step S208, when the i-th analysis thread 30 in 1 to M is terminated and the i-th processing thread 40 is not activated, the i-th processing thread. 40 is activated. As a result, the i-th processing thread 40 in 1 to M inputs data from the i-th received signal data D3 area, and outputs the result to the i-th transmission signal data D4 area. .

実行制御処理21は、上述のステップS208の処理後、起動中の処理スレッド40の数を収集し(S209)、起動中の処理スレッド40の数が0より大きいか、0かを判定する(S210)。   The execution control process 21 collects the number of active process threads 40 after the process of step S208 described above (S209), and determines whether the number of active process threads 40 is greater than 0 or 0 (S210). ).

そして、上述のステップS210の判定で、起動中の処理スレッドの数が0より大きい場合、処理スレッドの終了を待つために、少し時間をおいて(所定の時間待機)から(S211)、上述のステップS209の処理に戻る。   If the number of active processing threads is greater than 0 in the determination in step S210 described above, after waiting for a predetermined time (waiting for a predetermined time) to wait for the end of the processing threads (S211), The process returns to step S209.

上述のステップS210の判定で、起動中の処理スレッドの数が0の場合、送信スレッド起動数s2に0を設定し(S212)、M個分の組立スレッド50を起動する(S213)。   If the number of active processing threads is 0 in the determination in step S210 described above, 0 is set as the transmission thread activation number s2 (S212), and M assembly threads 50 are activated (S213).

この結果、1〜Mの中のi番目の組立スレッドは、それぞれ、i番目の送信信号データD4のエリアから入力し、結果をi番目の送信信号テキストD5のエリアに出力する。   As a result, the i-th assembly thread among 1 to M inputs from the area of the i-th transmission signal data D4, and outputs the result to the area of the i-th transmission signal text D5.

実行制御処理21は、上述のステップS213の処理後、起動中の組立スレッドの数を収集し(S214)、起動中の組立スレッドの数が0より大きいか、0かを判定する(S215)。   The execution control process 21 collects the number of activated assembly threads after the process of step S213 described above (S214), and determines whether the number of activated assembly threads is greater than 0 or 0 (S215).

上述のステップS215の判定で、起動中の組立スレッドの数が0より大きい場合、(M−組立スレッド50の数−送信スレッド起動数s2)の値を求め、その個数分の送信スレッド60を起動する(S216)。   If it is determined in step S215 above that the number of active assembly threads is greater than 0, a value of (M-number of assembly threads 50-transmission thread activation number s2) is obtained, and the transmission threads 60 corresponding to that number are activated. (S216).

その後、送信スレッド起動数s2に(M−組立スレッド50の数)の値を設定し(S217)、組立スレッド50の終了を待つために、少し時間をおいて(所定の時間待機)から(S218)、上述のステップS214の処理に戻る。   Thereafter, a value of (M-number of assembly threads 50) is set as the number of activations of the transmission thread s2 (S217), and after a while (waiting for a predetermined time) to wait for the end of the assembly thread 50 (S218). ), The process returns to step S214.

一方、上述のステップSS215の判定で、起動中の組立スレッド50の数が0の場合、(M−送信スレッド起動数s2)の値を求め、その個数分の送信スレッド60を起動する(S219)。   On the other hand, when the number of active assembly threads 50 is 0 in the determination in step SS215, the value of (M-transmission thread activation number s2) is obtained, and the transmission threads 60 corresponding to that number are activated (S219). .

上述のステップSS216、または、上述のステップS219の処理では、1〜Mの中のi番目の組立スレッド50が終了し、かつ、i番目の送信スレッド60が起動されていない場合に、i番目の送信スレッド60を起動するようにする。この結果、1〜Mの中のi番目の送信スレッドは、それぞれ、i番目の送信信号テキストD5のエリアからデータ入力し、対応する送信信号SSを生成して送信する。   In the process of step SS216 or step S219 described above, when the i-th assembly thread 50 in 1 to M ends and the i-th transmission thread 60 is not activated, the i-th assembly thread 50 is not activated. The transmission thread 60 is activated. As a result, the i-th transmission thread among 1 to M inputs data from the area of the i-th transmission signal text D5, and generates and transmits a corresponding transmission signal SS.

実行制御処理21は、上述のステップS219の処理の後、起動中の送信スレッド60の数を収集し(S220)、起動中の送信スレッド60の数が0より大きいか、0かを判定する(S221)。   The execution control process 21 collects the number of active transmission threads 60 after the process of step S219 described above (S220), and determines whether the number of active transmission threads 60 is greater than 0 or 0 (S220). S221).

上述のステップS221の判定で、起動中の送信スレッドの数が0より大きい場合、送信スレッド60の終了を待つために、少し時間をおいて(所定の時間待機)から(S222)、上述のステップS220の処理に戻る。   If it is determined in step S221 that the number of active transmission threads is greater than 0, after waiting for a predetermined time (waiting for a predetermined time) to wait for the end of the transmission thread 60 (S222), the above-described steps The process returns to S220.

一方、上述のステップS221の判定で、起動中の送信スレッドの数が0の場合、実行制御処理21は終了となる。   On the other hand, if the number of active transmission threads is 0 in the determination in step S221 described above, the execution control process 21 ends.

実行制御処理21は、上述の図3、図4に示すように、最初にM個の分析スレッド30を起動し、いずれかの、分析スレッド30の終了を待つ。そして、いずれかの分析スレッド30が終了すると、それに対応する処理スレッド40を順に起動していき、M個まで処理スレッド40を起動した後は、すべての処理スレッド40の終了を待つ。さらに、M個の処理スレッド40が全て終了すると、M個の組立スレッド50を起動し、いずれかの組立スレッド50の終了を待つ。そして、いずれかの組立スレッド50が終了すると、それに対応する送信スレッド60を順に起動していき、M個まで送信スレッド60を起動した後は、すべての送信スレッド60の終了を待つ。そして、M個の送信スレッド60が、全て終了すると、実行制御処理21も終了となる。   As shown in FIG. 3 and FIG. 4 described above, the execution control process 21 first activates the M analysis threads 30 and waits for one of the analysis threads 30 to end. When one of the analysis threads 30 is terminated, the corresponding processing threads 40 are sequentially activated. After the activation of up to M processing threads 40, the end of all the processing threads 40 is awaited. Further, when all the M processing threads 40 are finished, the M assembly threads 50 are activated, and the end of any one of the assembly threads 50 is awaited. When any one of the assembly threads 50 is terminated, the corresponding transmission threads 60 are sequentially activated. After the activation of up to M transmission threads 60, the completion of all the transmission threads 60 is awaited. When all the M transmission threads 60 are finished, the execution control process 21 is also finished.

(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
(A-3) Effects of Embodiment According to this embodiment, the following effects can be achieved.

実行制御処理21は、上述の図3、図4に示すように、SIMD型プロセッサに対して、実行する分析スレッド30と組立スレッド50を、M個同時に起動している。これにより、SIMD型プロセッサで、複数の信号に対する同一の字句解析処理31、同一の構文解析処理32、同一の信号組立処理51が並列に実施される。SIMD型プロセッサでは、CPUより並列に実行できるスレッド数が格段に多いため、M個の信号分の処理をCPUより短時間で処理できる。   As shown in FIGS. 3 and 4 described above, the execution control process 21 simultaneously activates M analysis threads 30 and assembly threads 50 to be executed for the SIMD type processor. Thereby, the same lexical analysis process 31, the same syntax analysis process 32, and the same signal assembly process 51 for a plurality of signals are performed in parallel by the SIMD type processor. In the SIMD type processor, since the number of threads that can be executed in parallel with the CPU is much larger, the processing for M signals can be performed in a shorter time than the CPU.

また、CPUバウンドである字句解析処理31、構文解析処理32、信号組立処理51を、SIMD型プロセッサで実行することで、CPU自体の負荷も軽減される。これにより、CPU側で実行される、実行スレッド20、処理スレッド40、及び、送信スレッド60も、同時に実行できる数を増加できる。その結果、受信した信号に対する処理をより短時間でより並列に実行できるようになるため、SIPサーバ1の処理能力を向上することができる。   Further, by executing the CPU bound lexical analysis processing 31, the syntax analysis processing 32, and the signal assembly processing 51 by the SIMD type processor, the load on the CPU itself is reduced. As a result, the number of execution threads 20, processing threads 40, and transmission threads 60 executed on the CPU side can be increased simultaneously. As a result, the processing on the received signal can be executed in parallel in a shorter time, so that the processing capacity of the SIP server 1 can be improved.

さらに、SIPサーバ1に搭載するSIMD型プロセッサとしては、既存のPCにおけるGPUを用いることができるので、安価に構築することができる。   Furthermore, since the GPU in the existing PC can be used as the SIMD type processor mounted on the SIP server 1, it can be constructed at low cost.

(A−4)実施形態の変形例
SIMD型プロセッサでは、1回の命令で複数のデータを並列的に処理するが、通常、同じ命令を同時に実行するスレッド数が決められている。
(A-4) Modification of Embodiment In the SIMD type processor, a plurality of data is processed in parallel with one instruction, but usually the number of threads for executing the same instruction at the same time is determined.

同時に実行されるスレッドは、処理の中の同じ命令を順に実行していくことが基本である。   Basically, threads executed simultaneously execute the same instructions in the process in order.

ただし、処理の中に分岐があり、かつ、同時に実行されるスレッドの中に、異なる方向に分岐するスレッドが混在した場合、分岐の両方分を実行するだけの実行時間がかかる。   However, if there is a branch in the process and threads that are executed at the same time include threads that branch in different directions, it takes an execution time to execute both branches.

このように、同時に実行されるスレッド内で分岐の混在が発生すると、1スレッドの処理時間が長くなるため、同時に実行されるスレッド内で分岐が混在しにくくすることが、SIMD型プロセッサの処理能力を引き出すポイントとなる。   In this way, if a branch is mixed in a thread that is executed at the same time, the processing time of one thread becomes longer. Therefore, it is difficult to mix branches in a thread that is executed at the same time. It becomes a point to draw out.

そのため、上記の実施形態のSIPサーバ1において、SIMD型プロセッサで実行する字句解析処理31、構文解析処理32、及び、信号組立処理51について、同時に実行されるスレッド内での分岐を減らす変形実施例について、以下に述べる。   Therefore, in the SIP server 1 of the above-described embodiment, a modified embodiment that reduces branching in threads that are simultaneously executed for the lexical analysis processing 31, the syntax analysis processing 32, and the signal assembly processing 51 executed by the SIMD type processor. Is described below.

(A−4−1)字句解析処理に関する変形実施例
SIP信号の字句解析を効率良く実行するために、解析対象の文字を入力とする有限オートマトンとして処理を実現する手法がよく使われる。
(A-4-1) Modified Example Regarding Lexical Analysis Processing In order to efficiently execute the lexical analysis of the SIP signal, a method of realizing the processing as a finite automaton that receives the character to be analyzed is often used.

この手法を用いる場合、字句解析処理31の処理は、受信信号テキストD1の先頭から1文字ずつ入力し、1文字毎に次の状態と字句解析結果D2を出力する有限オートマトンとして実現される。   When this method is used, the processing of the lexical analysis processing 31 is realized as a finite automaton that inputs characters one by one from the beginning of the received signal text D1 and outputs the next state and the lexical analysis result D2 for each character.

字句解析処理において、入力された1文字に対して、次の状態と出力を決める処理を条件分岐でプログラムしてしまうと、SIMD型プロセッサで実行する場合に、処理時間が長くなってしまう場合がある。   In the lexical analysis processing, if the processing for determining the next state and output is programmed with conditional branching for one input character, the processing time may become long when executed by a SIMD processor. is there.

このため、分析スレッド30(字句解析処理31)では、入力された1文字をインデックスとしてテーブルを引き、次の状態と出力をテーブルの値から決めるような処理にする(以下、「方法1A」という)と、処理中に分岐を減らすことができ、SIMD型プロセッサで効率良く実行できる。   For this reason, the analysis thread 30 (lexical analysis processing 31) draws a table using the inputted one character as an index, and sets the next state and output from the values of the table (hereinafter referred to as “method 1A”). ) And branching can be reduced during processing, and can be efficiently executed by a SIMD type processor.

また、字句解析のために有限オートマトンの状態遷移を繰り返す回数は、入力となる受信信号のサイズに依存する。同時に実行されるスレッドの中に、受信信号のサイズが異なるものが混在した場合、その中でサイズが最も長い受信信号を処理するだけの時間を要する。そこで、分析スレッド30(字句解析処理31)について、受信信号のサイズ順にスレッドを割り当てる(以下、「方法1B」という)ことで、同時に実行されるスレッド内での受信信号サイズのばらつきを減らし、スレッド全体での処理時間を短縮できる。すなわち、分析スレッド30(字句解析処理31)について、受信信号のサイズに応じて、同時にSIMD型プロセッサを用いて処理するスレッドのグループを割り当てることにより、同時に実行されるスレッド内で、分岐の混在する可能性を減らすことができる。   Further, the number of times the state transition of the finite automaton is repeated for lexical analysis depends on the size of the input received signal. When threads having different received signal sizes are mixed among threads executed simultaneously, it takes time to process a received signal having the longest size among them. Therefore, by assigning threads to the analysis thread 30 (lexical analysis process 31) in the order of the size of the received signal (hereinafter referred to as “method 1B”), the variation in the received signal size within the simultaneously executed threads is reduced, and the thread Overall processing time can be reduced. That is, with respect to the analysis thread 30 (lexical analysis process 31), by assigning a group of threads to be processed simultaneously using a SIMD type processor according to the size of the received signal, a branch is mixed in the threads executed simultaneously. The possibility can be reduced.

(A−4−2)構文解析処理に関する変形実施例
SIP信号の構文解析では、構文解析を効率良く実行するために、解析対象の字句を入力とするシフト還元構文解析というアルゴリズムがよく使われる。
(A-4-2) Modified Example Regarding Parsing Process In the parsing of the SIP signal, an algorithm called shift reduction parsing that uses the lexical to be analyzed as an input is often used in order to efficiently execute the parsing.

この手法を用いる場合、構文解析処理32の処理は、字句解析結果D2の先頭から字句を1つずつ入力し、1つの字句毎にスタックに入れるシフト処理、または、スタックから取り出す還元処理を実行するようにしても良い。そして、還元処理を実行した時に、字句に対する構文上の扱いが決まり、受信信号データD3を出力する。   When this method is used, the parsing process 32 executes a shift process for inputting a lexical phrase one by one from the beginning of the lexical analysis result D2 and putting it in the stack for each lexical phrase, or a reduction process for extracting from the stack. You may do it. When the reduction process is executed, the syntactical handling of the lexical phrase is determined, and the reception signal data D3 is output.

分析スレッド30(構文解析処理32)において、入力された1つの字句に対するシフト処理または還元処理の際にスタックに入出力する値を決定する処理を条件分岐でプログラムしてしまうと、SIMD型プロセッサで実行する場合に、処理時間が長くなってしまう。このため、分析スレッド30(構文解析処理32)では、入力された1つの字句をインデックスとしてテーブルを引き、スタックに入出力する値をテーブルの値から決めるような処理にする(以下、「方法2A」という)と、処理中に分岐を減らすことができ、SIMD型プロセッサで効率良く実行できる。   In the analysis thread 30 (syntax analysis process 32), if a process for determining a value to be input / output to / from the stack at the time of a shift process or a reduction process for one input lexical word is programmed as a conditional branch, the SIMD processor When it is executed, the processing time becomes long. For this reason, the analysis thread 30 (syntax analysis process 32) draws a table using one input lexical character as an index, and determines a value to be input / output to / from the stack based on the value of the table (hereinafter, “method 2A”). ")", Branching can be reduced during processing, and efficient execution can be performed by a SIMD type processor.

しかし、分析スレッド30(構文解析処理32)で、シフト処理を行うか還元処理を行うかを判定して処理を分岐する動作は避けられないため、まったく分岐をなくすことはできない。ただし、還元処理に比べて、シフトの処理は単純であり、処理時間の大部分は還元処理に要するので、シフト処理と還元処理の分岐が発生しても、SIMD型プロセッサで実行する場合でも、大きな処理効率の低下にはならない。   However, since it is unavoidable that the analysis thread 30 (syntax analysis process 32) determines whether to perform shift processing or reduction processing and branches the processing, branching cannot be eliminated at all. However, compared with the reduction process, the shift process is simple and most of the processing time is required for the reduction process. Therefore, even when the shift process and the reduction process branch, There is no significant reduction in processing efficiency.

分析スレッド30(構文解析処理32)の処理の中に分岐が存在しても、同時に実行するスレッドの中で分岐が混在しなければ、処理の低下は発生しないため、分岐の混在の可能性を減らす方法として、以下に述べる方法がある。   Even if there is a branch in the processing of the analysis thread 30 (syntactic analysis process 32), if there is no branch in the threads that are executed at the same time, the processing does not deteriorate. As a method of reducing, there are methods described below.

SIP信号の場合、受信した信号の先頭の字句によって、信号の種別が決まるが、同一種別の信号同士であれば、異なる種別の信号より、構文のばらつきが少ないことが期待できる。そこで、分析スレッド30(構文解析処理32)について、同時に実行されるスレッドには、同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2B」という)ようにしても良い。   In the case of a SIP signal, the type of signal is determined by the first word of the received signal. However, if the signals are of the same type, it can be expected that there is less variation in syntax than signals of different types. Therefore, with respect to the analysis thread 30 (syntactic analysis process 32), target data and threads are assigned to threads that are executed simultaneously so that only the same type of signal is targeted (hereinafter referred to as “method 2B”). You may do it.

また、同一の送信元(SIPサーバやSIP端末)から受信した、同一種別の信号については、構文のばらつきが少ないことが期待できる。そこで、分析スレッド30(字句解析処理31)について、同時に実行されるスレッドには、同一のSIPサーバから受信した同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2C」という)ようにしてもよい。また、同様に、同時に実行されるスレッドには、SIP端末群から受信した同一種別の信号のみを対象とするように、対象となるデータとスレッドを割り当てる(以下、「方法2D」という)ようにしてもよい。   In addition, it is expected that there is little variation in syntax for signals of the same type received from the same transmission source (SIP server or SIP terminal). Therefore, with respect to the analysis thread 30 (lexical analysis process 31), the target data and the thread are allocated to the threads that are executed at the same time so that only the same type of signal received from the same SIP server is targeted (hereinafter referred to as the target thread). , “Method 2C”). Similarly, the target data and thread are assigned to the simultaneously executed threads so as to target only signals of the same type received from the SIP terminal group (hereinafter referred to as “method 2D”). May be.

(A−4−3)信号組立処理に関する変形実施例
信号組立処理51は、送信信号データD4に設定されている信号種別やパラメータの個数に応じて、信号の組み立て方に対応する構文を変える必要があり、本質的に分岐を減らすことは困難である。
(A-4-3) Modified Example Regarding Signal Assembly Processing The signal assembly processing 51 needs to change the syntax corresponding to the signal assembly method according to the signal type and the number of parameters set in the transmission signal data D4. And it is inherently difficult to reduce branching.

ただし、分岐の混在の可能性を減らす方法としては、以下に述べる方法がある。   However, there is a method described below as a method for reducing the possibility of mixing branches.

同一種別の信号同士であれば、異なる種別の信号より、構文のばらつきが少ないことが期待できる。そこで、組立スレッド50(信号組立処理51)について、同時に実行されるスレッドには、同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3A」という)ようにしても良い。   If signals of the same type are used, it can be expected that there is less variation in syntax than signals of different types. Therefore, with respect to the assembly thread 50 (signal assembly processing 51), assignment of target data and threads is determined so that only threads of the same type are targeted for simultaneously executed threads (hereinafter referred to as “method 3A”). You may do it.

また、同一の送信先(SIPサーバや、SIP端末)へ送信する同一種別の信号については、構文のばらつきが少ないことが期待できる。そこで、同時に実行されるスレッドには、同一サーバに送信する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3B」という)ようにしても良い。また、同様に、同時に実行されるスレッドには、SIP端末群へ送信する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3C」という)ようにしても良い。   Further, it can be expected that the same type of signal transmitted to the same destination (SIP server or SIP terminal) has little syntax variation. Therefore, it is also possible to determine the allocation of target data and threads so that only threads of the same type transmitted to the same server are targeted for threads executed simultaneously (hereinafter referred to as “method 3B”). good. Similarly, for the simultaneously executed threads, allocation of target data and threads is determined so that only signals of the same type transmitted to the SIP terminal group are targeted (hereinafter referred to as “method 3C”). You may do it.

さらに、サービス処理41において、同一のサービスで出力する同一種別の信号同士であれば、異なるサービスで出力する信号より、構文のばらつきが少ないことが期待できる。そこで、同時に実行されるスレッドには、同一のサービスで出力する同一種別の信号のみを対象とするように、対象となるデータとスレッドの割り当てを決める(以下、「方法3D」という)ようにしても良い。   Furthermore, in the service processing 41, if the signals are of the same type output by the same service, it can be expected that there is less variation in syntax than signals output by different services. Therefore, the allocation of the target data and the thread is determined so that only the same type of signal output from the same service is targeted for the threads executed simultaneously (hereinafter referred to as “method 3D”). Also good.

(A−4−4)字句解析処理31では、上述の方法1Aによって処理から分岐そのものを減らすことができ、さらに、上述の方法1Bによって、分岐の混在する可能性を減らすことができる。 (A-4-4) In the lexical analysis process 31, the branch itself can be reduced from the process by the above-described method 1A, and further, the possibility of a mixture of branches can be reduced by the above-described method 1B.

構文解析処理32では、上述の方法2Aによって処理から分岐そのものを減らすことができ、さらに、上述の方法2B、方法2C、方法2Dによって、分岐の混在する可能性を減らすことができる。   In the parsing process 32, the branch itself can be reduced from the process by the above-described method 2A, and further, the possibility of a mixture of branches can be reduced by the above-described method 2B, method 2C, and method 2D.

また、信号組立処理51では、上述の方法3A、方法3B、方法3C、方法3Dによって、分岐の混在する可能性を減らすことができる。   Further, in the signal assembling process 51, the possibility of mixing branches can be reduced by the above-described methods 3A, 3B, 3C, and 3D.

これらの方法により、SIPサーバ1では、同時に実行されるスレッド内で分岐の混在の発生を減らし、SIMD型プロセッサでの処理効率を向上することができる。   With these methods, the SIP server 1 can reduce the occurrence of a mixture of branches in threads that are executed simultaneously, and can improve the processing efficiency of the SIMD type processor.

ただし、上述の方法1A、方法2Aについては、SIMD型プロセッサでの処理性能改善目的ではないが、プログラムの単純化目的として用いている。   However, the above-described method 1A and method 2A are not used for improving the processing performance of the SIMD type processor, but are used for the purpose of simplifying the program.

また、上述の方法1A、1B、2A〜2D、3A〜3Dは、全部SIPサーバ1に適用するようにしても良いし、一部だけを適用するようにしても良い。   Further, the above-described methods 1A, 1B, 2A to 2D, 3A to 3D may be applied to the SIP server 1 or only a part thereof.

(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(B) Other Embodiments The present invention is not limited to the above-described embodiments, and may include modified embodiments as exemplified below.

(B−1)上記の実施形態では、字句解析処理31、構文解析処理32、および、信号組立処理51をSIMD型プロセッサで処理する場合を例として説明したが、サービス処理41の処理内容が単純で済む場合等には、サービス処理41もSIMD型プロセッサで処理するようにしても良い。 (B-1) In the above embodiment, the case where the lexical analysis processing 31, the syntax analysis processing 32, and the signal assembly processing 51 are processed by the SIMD type processor has been described as an example. However, the processing content of the service processing 41 is simple. For example, the service processing 41 may be processed by the SIMD type processor.

また、上記の実施形態では、字句解析処理31、構文解析処理32、信号組立処理51について、SIMD型プロセッサで処理する例について説明したが、一部の処理をCPU側で行うようにしても良い。   In the above embodiment, the lexical analysis process 31, the syntax analysis process 32, and the signal assembly process 51 have been described as being processed by the SIMD type processor. However, some processes may be performed on the CPU side. .

(B−2)上記の実施形態では、本発明の信号処理装置を、SIPサーバに適用した例について説明したが、その他のプロトコルの信号を処理する装置について適用するようにしても良い。例えば、H.248等SIP以外を用いた通信システムにおいて、信号処理(例えば、呼制御信号処理)を行う装置に適用するようにしても良い。また、その他にも信号の内容がテキストベースとなっているプロトコルの処理を行う信号処理装置に適用するようにしても良い。その場合、上述の図1に示す各スレッドにおいて行われる処理のそれぞれについて、当該信号処理装置における処理内容に置き換えられることになる。 (B-2) In the above embodiment, the example in which the signal processing apparatus of the present invention is applied to the SIP server has been described. However, the signal processing apparatus may be applied to an apparatus that processes signals of other protocols. For example, H.M. In a communication system using other than SIP such as H.248, it may be applied to an apparatus that performs signal processing (for example, call control signal processing). In addition, the present invention may be applied to a signal processing apparatus that performs a protocol process in which the signal content is text-based. In that case, each processing performed in each thread shown in FIG. 1 described above is replaced with processing contents in the signal processing apparatus.

(B−3)信号を処理する以外にも、同時に多数のテキストを字句解析、または、構文解析する必要がある処理スレッド(例えば、プログラム言語のコンパイルや自然言語の翻訳等を行うスレッド)を実行する装置について、上述のSIPサーバ1における分析スレッド30、処理スレッド40、組立スレッド50と同様に、SIMD型プロセッサに割り当てるようにしても良い。 (B-3) In addition to processing a signal, a processing thread (for example, a thread that compiles a program language or translates a natural language) that requires lexical analysis or syntax analysis of a large number of texts at the same time is executed. The device to be used may be assigned to the SIMD type processor in the same manner as the analysis thread 30, the processing thread 40, and the assembly thread 50 in the SIP server 1 described above.

(B−4)上記の実施形態では、SIPサーバ1において、並列的にデータ処理を行うプロセッサとしてSIMD型のプロセッサを適用する例について説明したが、MIMD(Multiple Instruction stream,Multiple Data stream)型プロセッサ等、その他の並列処理を行うプロセッサを適用するようにしても良い。 (B-4) In the above embodiment, an example in which a SIMD type processor is applied as a processor that performs data processing in parallel in the SIP server 1 has been described. However, a MIMD (Multiple Instruction stream, Multiple Data stream) type processor is used. For example, a processor that performs other parallel processing may be applied.

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…送信信号。   DESCRIPTION OF SYMBOLS 1 ... SIP server, SR, SR-1, SR-2 ... Reception signal, 10 ... Reception thread, 11 ... Signal reception process, 20 ... Execution thread, 21 ... Execution control process, D1, D1-1, D1-2 ... Received signal text, 30, 30-1, 30-2 ... analysis thread, 31, 31-1, 31-2 ... lexical analysis processing, D2, D2-1, D2-2 ... lexical analysis result, 32, 32-1 , 32-2 ... parsing process, D3, D3-1, D3-2 ... received signal data, 40, 40-1, 40-2 ... processing thread, 41, 41-1 and 41-2 ... service process, D4 , D4-1, D4-2 ... transmission signal data, 50, 50-1, 50-2 ... assembly thread, 51, 51-1, 51-2 ... signal assembly processing, D4, D4-1, D4-2 ... Send signal text, 60, 60-1, 60-2 ... send thread, 1,61-1,61-2 ... signal transmission processing, SS, SS-1, SS-2 ... transmission signal.

Claims (8)

外部から受信した受信信号を処理する信号処理装置において、
複数データを並列的に処理する並列処理プロセッサと、
受信信号を蓄積する蓄積手段と、
上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記並列処理プロセッサを用いて並列的に処理させるスレッド制御手段と
を有することを特徴とする信号処理装置。
In a signal processing device for processing a received signal received from the outside,
A parallel processor that processes multiple data in parallel;
Storage means for storing received signals;
When the number of received signals accumulated by the accumulating means reaches a predetermined number or when a predetermined period has elapsed, a plurality of signal processing threads for processing the received signals accumulated by the accumulating means are activated, The reception signal accumulated by the accumulation means is allocated to the signal processing thread, and among the sub-threads of each process constituting each signal processing thread, a part or all of the process sub-threads are between the plurality of signal processing threads. And a thread control unit configured to perform parallel processing using the parallel processing processor.
上記スレッド制御手段は、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、少なくとも、受信信号の分析処理工程のサブスレッドについて、上記並列処理プロセッサを用いて処理させることを特徴とする請求項1に記載の信号処理装置。   The thread control means causes the parallel processing processor to process at least a sub thread of a received signal analysis processing step among sub threads of each step constituting each signal processing thread. Item 2. The signal processing device according to Item 1. 上記スレッド制御手段は、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、少なくとも、受信信号に基づく処理内容に応じて送信先へ送信する送信信号の組立処理工程のサブスレッドについて、上記並列処理プロセッサを用いて処理させることを特徴とする請求項1又は2に記載の信号処理装置。   The thread control means includes at least a sub thread of an assembly processing step of a transmission signal to be transmitted to a transmission destination according to a processing content based on a reception signal among sub threads of each step constituting each signal processing thread. The signal processing apparatus according to claim 1, wherein the signal processing apparatus performs processing using a parallel processor. 分析処理工程のサブスレッドには、少なくとも、受信信号の字句解析処理、及び、字句解析処理の処理結果に対する構文解析処理が含まれていることを特徴とする請求項2又は3に記載の信号処理装置。   4. The signal processing according to claim 2, wherein the sub-thread of the analysis processing step includes at least lexical analysis processing of the received signal and syntax analysis processing for the processing result of the lexical analysis processing. apparatus. 上記スレッド制御手段は、それぞれの信号処理スレッドを構成する分析処理工程のサブスレッドが行う字句解析処理で、処理対象となる受信信号のサイズに応じて、同時に上記並列処理プロセッサを用いて処理する信号処理スレッドのグループを割り当てることを特徴とする請求項4に記載の信号処理装置。   The thread control means is a lexical analysis process performed by a sub-thread of an analysis processing step that constitutes each signal processing thread, and a signal that is simultaneously processed using the parallel processing processor according to the size of a reception signal to be processed. The signal processing apparatus according to claim 4, wherein a group of processing threads is assigned. 上記スレッド制御手段は、それぞれの信号処理スレッドを構成する分析処理工程のサブスレッドが行う構文解析処理で、処理対象となるデータに係る受信信号の種別又は送信元に応じて、同時に上記並列処理プロセッサを用いて処理する信号処理スレッドのグループを割り当てることを特徴とする請求項4に記載の信号処理装置。   The thread control means is a syntactic analysis process performed by a sub-thread of an analysis processing step that constitutes each signal processing thread, and simultaneously performs the parallel processing processor according to the type or transmission source of the received signal related to the data to be processed. The signal processing device according to claim 4, wherein a group of signal processing threads to be processed is assigned. 上記スレッド制御手段は、それぞれの信号処理スレッドを構成する組立処理工程のサブスレッドで、処理対象となる送信信号に係る種別、送信先、又はサービス内容に応じて、同時に上記並列処理プロセッサを用いて処理する信号処理スレッドのグループを割り当てることを特徴とする請求項3に記載の信号処理装置。   The thread control means is a sub thread of the assembly processing step that constitutes each signal processing thread, and simultaneously uses the parallel processing processor according to the type, transmission destination, or service content related to the transmission signal to be processed. 4. The signal processing apparatus according to claim 3, wherein a group of signal processing threads to be processed is assigned. 外部から受信した受信信号を処理する信号処理装置に搭載された、複数データを並列的に処理する並列処理プロセッサを備えるコンピュータを、
受信信号を蓄積する蓄積手段と、
上記蓄積手段が蓄積した受信信号の数が所定数に達した場合、又は、所定の期間が経過した場合に、上記蓄積手段が蓄積した受信信号を処理する信号処理スレッドを複数起動し、それぞれの信号処理スレッドに、上記蓄積手段が蓄積した受信信号を割り当て、それぞれの信号処理スレッドを構成する各工程のサブスレッドのうち、一部又は全部の工程のサブスレッドについて、複数の信号処理スレッド間で上記並列処理プロセッサを用いて並列的に処理させるスレッド制御手段と
して機能させることを特徴とする信号処理プログラム。
A computer equipped with a parallel processing processor for processing a plurality of data in parallel, mounted on a signal processing device for processing a received signal received from the outside,
Storage means for storing received signals;
When the number of received signals accumulated by the accumulating means reaches a predetermined number or when a predetermined period has elapsed, a plurality of signal processing threads for processing the received signals accumulated by the accumulating means are activated, The reception signal accumulated by the accumulation means is allocated to the signal processing thread, and among the sub-threads of each process constituting each signal processing thread, a part or all of the process sub-threads are between the plurality of signal processing threads. A signal processing program that functions as thread control means for performing parallel processing using the parallel processor.
JP2010056146A 2010-03-12 2010-03-12 Signal processing apparatus and program Active JP5477810B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010056146A JP5477810B2 (en) 2010-03-12 2010-03-12 Signal processing apparatus and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010056146A JP5477810B2 (en) 2010-03-12 2010-03-12 Signal processing apparatus and program

Publications (2)

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

Family

ID=44796771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010056146A Active JP5477810B2 (en) 2010-03-12 2010-03-12 Signal processing apparatus and program

Country Status (1)

Country Link
JP (1) JP5477810B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016515266A (en) * 2013-03-15 2016-05-26 マイクロン テクノロジー, インク. Method and apparatus for providing data received by a state machine engine

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09224103A (en) * 1996-02-19 1997-08-26 Fujitsu Ltd Credit call service system
JP2007096511A (en) * 2005-09-27 2007-04-12 Oki Electric Ind Co Ltd State management system, ip phone exchange, and state management method
JP2007096564A (en) * 2005-09-28 2007-04-12 Fujitsu Ltd Communication server device and program
JP2007329617A (en) * 2006-06-07 2007-12-20 Nippon Telegr & Teleph Corp <Ntt> Communication control process executing method and system, and program therefor
JP2008148169A (en) * 2006-12-13 2008-06-26 Nec Corp Communication apparatus, communication system, communication method used therefor, and program thereof
JP2009230756A (en) * 2008-03-24 2009-10-08 Nvidia Corp Indirect function call instruction in synchronous parallel thread processor

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09224103A (en) * 1996-02-19 1997-08-26 Fujitsu Ltd Credit call service system
JP2007096511A (en) * 2005-09-27 2007-04-12 Oki Electric Ind Co Ltd State management system, ip phone exchange, and state management method
JP2007096564A (en) * 2005-09-28 2007-04-12 Fujitsu Ltd Communication server device and program
JP2007329617A (en) * 2006-06-07 2007-12-20 Nippon Telegr & Teleph Corp <Ntt> Communication control process executing method and system, and program therefor
JP2008148169A (en) * 2006-12-13 2008-06-26 Nec Corp Communication apparatus, communication system, communication method used therefor, and program thereof
JP2009230756A (en) * 2008-03-24 2009-10-08 Nvidia Corp Indirect function call instruction in synchronous parallel thread processor

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016515266A (en) * 2013-03-15 2016-05-26 マイクロン テクノロジー, インク. Method and apparatus for providing data received by a state machine engine
US9747242B2 (en) 2013-03-15 2017-08-29 Micron Technology, Inc. Methods and apparatuses for providing data received by a plurality of state machine engines
US10067901B2 (en) 2013-03-15 2018-09-04 Micron Technology, Inc. Methods and apparatuses for providing data received by a state machine engine
US10372653B2 (en) 2013-03-15 2019-08-06 Micron Technology, Inc. Apparatuses for providing data received by a state machine engine

Also Published As

Publication number Publication date
JP5477810B2 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
TWI502511B (en) Resource management in a multicore architecture
KR100871956B1 (en) Method and apparatus for identifying splittable packets in a multithreaded vliw processor
WO2021088419A1 (en) Method for invoking fpga device by using multiple service request processes and related apparatus
US20170185452A1 (en) Apparatus and method for data processing
US9400685B1 (en) Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
CN105635740B (en) The method and device that image is decoded
CN103765415A (en) Parallel generation of topics from documents
US20070101316A1 (en) Software Architecture and Program for the Concurrent Execution of Finite State Machine-Encoded Processes, on Single or Multiple-Processor-Based Embedded Systems
CN105204917B (en) The method and device of loading configuration file in application program launching
KR20010095073A (en) Method and apparatus for splitting packets in a multithreaded vliw processor
CN111737022A (en) Interface calling method, system, equipment and medium based on micro-service
WO2015032311A1 (en) Code generation method, compiler, scheduling method, apparatus and scheduling system
CN109445954A (en) A kind of execution method, terminal device and the storage medium of timed task
CN115794262A (en) Task processing method, device, equipment, storage medium and program product
CN109918054B (en) Service bus microkernel framework design method based on formalization specification
Själander et al. A look-ahead task management unit for embedded multi-core architectures
JP5477810B2 (en) Signal processing apparatus and program
JP2022550059A (en) Processor and its internal interrupt controller
CN113535419A (en) Service arranging method and device
KR20230124598A (en) Compressed Command Packets for High Throughput and Low Overhead Kernel Initiation
CN115373815A (en) Task scheduling method and device, electronic equipment and storage medium
JP5382624B2 (en) Multiprocessor control device, method and program thereof
US9201688B2 (en) Configuration of asynchronous message processing in dataflow networks
CN114327643B (en) Machine instruction preprocessing method, electronic device and computer-readable storage medium
US7039772B1 (en) System, method, and computer program product for processing reflective state machines

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