JP2007041805A - Program generation device, program generation method and compiler - Google Patents
Program generation device, program generation method and compiler Download PDFInfo
- Publication number
- JP2007041805A JP2007041805A JP2005224605A JP2005224605A JP2007041805A JP 2007041805 A JP2007041805 A JP 2007041805A JP 2005224605 A JP2005224605 A JP 2005224605A JP 2005224605 A JP2005224605 A JP 2005224605A JP 2007041805 A JP2007041805 A JP 2007041805A
- Authority
- JP
- Japan
- Prior art keywords
- data
- program
- state
- processing
- code
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
本発明は、小型のネットワーク装置に搭載されるいわゆるプロトコルスタックのソフトウエアをより小型かつより容易に実装するための技術に関する。 The present invention relates to a technique for more compactly and easily mounting software of a so-called protocol stack mounted on a small network device.
Internet Protocol(IP)等の、電子機器間を有線および無線で接続する方式の規格に準拠したネットワーク装置には、パケットデータを処理するためのソフトウエア群、いわゆるプロトコルスタックが搭載されている。このようなネットワーク装置を、大型計算機及びパーソナルコンピュータだけでなく、AV(Audio Visual)家電機器、白物家電機器、設備機器、センサ、携帯型情報機器、携帯電話等の電子機器にも搭載することが検討されている。 2. Description of the Related Art A network device compliant with a standard for a method of connecting electronic devices by wire and wireless, such as Internet Protocol (IP), includes a software group for processing packet data, a so-called protocol stack. Install such network devices not only in large computers and personal computers, but also in electronic devices such as AV (Audio Visual) home appliances, white goods home appliances, equipment, sensors, portable information devices, and mobile phones. Is being considered.
これらの電子機器のうち、小型の電子機器(携帯型情報機器、携帯電話、AV家電機器、センサ等)に搭載されるネットワーク装置には、小型かつ低消費電力であること、白物家電機器、設備機器に搭載されるネットワーク装置には、安価であることが要求される。 Among these electronic devices, network devices mounted on small electronic devices (portable information devices, mobile phones, AV home appliances, sensors, etc.) are small and have low power consumption, white home appliances, Network devices mounted on equipment are required to be inexpensive.
ところで、例えば特許文献1には、オブジェクト指向言語処理システムにおいて、生成されるオブジェクトコードのサイズを最小化する技術が記載されている。この技術によれば、クラス宣言の意味解析処理時に、メソッドの所属するクラス名と入力ファイル名との比較が行われ、その結果、両者が一致していればメソッドアドレス格納テーブルの実体および宣言が、両者が一致していなければメソッドアドレス格納テーブルの宣言のみが出力オブジェクトコード内に生成される。これにより、目的のオブジェクトコード内にメソッドアドレス格納テーブルの実体が1つだけ生成されるため、そのサイズを削減することができる。
By the way, for example,
上述の要求に対応するため、上述のような電子機器への搭載が検討されるネットワーク装置には、ネットワーク装置のメモリサイズ及びプロセッサ性能等の制約が課せられる。このような制約が課されるなかで、ネットワーク機器に十分な機能を発揮させるには、それに組み込まれるソフトウエアが、より小さなサイズのメモリ上でより高速に動作可能であることが求められる。 In order to respond to the above-described requirements, restrictions on the memory size and processor performance of the network device are imposed on the network device to be mounted on the electronic device as described above. Under such restrictions, in order for a network device to exhibit a sufficient function, software incorporated therein is required to be able to operate at higher speed on a smaller size memory.
しかし、そのようなソフトウエアを汎用プログラミング言語(例えばC言語)で記述することは困難である。例えば、上記メソッドアドレス格納テーブルの使用により実現される実行時決定機能を利用すると、実行コードを搭載するときにメソッドアドレス格納テーブル及び不要なインスタンスが生成される。このため、実行コードのサイズが大きくなり、上述のような制約のある小型のネットワーク装置では実行が困難である。また、動的に構文解析を行う機構も実行コードを大きくさせる。 However, it is difficult to describe such software in a general-purpose programming language (for example, C language). For example, when a runtime determination function realized by using the method address storage table is used, a method address storage table and unnecessary instances are generated when an execution code is installed. For this reason, the size of the execution code becomes large, and it is difficult to execute it with a small network device having the above-described restrictions. Dynamic parsing mechanisms also increase executable code.
そこで、本発明は、よりコンパクトかつより高速に実行可能な、プロトコルスタックのソフトウエアを、より簡単に実装することを目的とする。 Therefore, an object of the present invention is to more easily implement protocol stack software that can be executed more compactly and at higher speed.
本発明は、
複数のデータ要素を含む一連のデータ列をネットワークを介して受け付けるネットワーク装置に前記データ列を処理させるためのプログラムを、記憶手段及び演算手段を有する情報処理装置に生成させるプログラム生成方法であって、
前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
当該プログラム生成方法は、
前記演算手段が、前記定義ファイルを参照する処理と、
前記演算手段が、前記プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する処理と、
を含むことを特徴とするプログラム生成方法を提供する。
The present invention
A program generation method for causing an information processing apparatus having a storage unit and a calculation unit to generate a program for causing a network device that accepts a series of data columns including a plurality of data elements to process the data sequence via a network,
The storage means stores a definition file in which item information including size information of each data element in the data string received by the network device is described according to the order of the data elements in the data string,
The program generation method is as follows:
A process in which the computing means refers to the definition file;
The arithmetic means, as the program, a program for processing each data element in the data string in a predetermined size according to the order from the top of the data string, in the definition file Processing based on the description order of the item information of each data element and the size information of each data element;
The program generation method characterized by including this is provided.
本発明によれば、よりコンパクトかつより高速に実行可能な、プロトコルスタックのソフトウエアを、より簡単に生成することができる。 According to the present invention, software of a protocol stack that can be executed more compactly and faster can be generated more easily.
以下、添付の図面を参照しながら、本発明に係る実施の形態について説明する。 Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.
まず、図1及び図2により、本実施形態に係るプロトコルスタックを生成する情報処理システムの構成について説明する。 First, the configuration of an information processing system that generates a protocol stack according to the present embodiment will be described with reference to FIGS. 1 and 2.
本実施の形態に係る情報処理システムは、ユーザからの指示に応じて所定のプログラムを実行可能なハードウエア構成を有している。例えば、図2に示すように、後述のプロトコルスタックコード生成処理を実行するプログラム(プロトコルスタックコンパイラ、汎用コンパイラ、OS等)及びデータ(プロトコルスタックの処理対象となるネットワークメッセージの形式及び構造が所定のフォーマットで記述された、ASCII(American Standard Code for Information Interchang)コード等の符号方法によるテキスト形式の電子化ファイル:以下、プロトコルスタック定義ファイルと呼ぶ)等が格納されるハードディスク等の外部記憶装置201、主記憶装置203、外部記憶装置201等から主記憶装置203上にロードされたプログラムを実行するプロセッサ202、可搬型記憶媒体のデータ読み書きを実行するドライブ204、ユーザからのデータ入力を受け付ける入力装置(キーボード、マウス等)205、ユーザへの提示情報(例えばプログラムの実行状態等)を出力するディスプレイ等の出力装置206、等を有している。
The information processing system according to the present embodiment has a hardware configuration that can execute a predetermined program in accordance with an instruction from a user. For example, as shown in FIG. 2, a program (protocol stack compiler, general-purpose compiler, OS, etc.) for executing a protocol stack code generation process, which will be described later, and data (network message format and structure to be processed by the protocol stack are predetermined). An external storage device 201 such as a hard disk in which a text-format computerized file such as ASCII (American Standard Code for Information Interchang) code described in a format is stored; A
なお、プロトコルスタックコンパイラ及び汎用コンパイラは、ドライブ204を介して可搬型記憶媒体から外部記憶装置201にインストールされたものであってもよいし、情報処理システムがネットワーク接続可能な環境であれば、ネットワークを介して外部記憶装置201にインストールされたものであってもよい。また、プロトコルスタック定義ファイルは、ドライブ204を介して可搬型記憶媒体から外部記憶装置201にコピーされたものであってもよいし、ユーザが、入力装置205を用いて作成し、外部記憶装置201に保存したものであってもよい。
Note that the protocol stack compiler and the general-purpose compiler may be installed from the portable storage medium to the external storage device 201 via the
このようなハードウエア構成上における上述のプログラムの実行により、この情報処理システムは、プロトコルスタック定義ファイルからプロトコルスタックを自動生成するための機能構成を実現する。すなわち、図1に示すように、プロトコルスタック定義ファイル101が格納されたデータ記憶部100、プロトコルスタック定義ファイル101に記述されたメッセージデータの形式の解析結果に基づきプロトコルスタックの処理コード(オートマトン及びこれを実行するオートマトン実行プログラム:以下、プロトコルスタックコード)103を生成するプロトコルスタックコンパイラ部102、ネットワーク装置116のプロセッサ115が実行可能な実行コード105をプロトコルスタックコード103から生成する汎用コンパイラ部104が実現される。
By executing the above-described program on such a hardware configuration, the information processing system realizes a functional configuration for automatically generating a protocol stack from a protocol stack definition file. That is, as shown in FIG. 1, the
このような機能構成により、ネットワーク112上の他の装置(例えばコントロール装置111)との間の送受信メッセージに関する処理をネットワーク装置116に実行させる実行コード105、すなわち、プロトコルスタックのソフトウエアが自動的に生成される。なお、生成された実行コード105は、ネットワーク装置116のプロセッサ115による実行のため、適当な媒体を介してネットワーク装置116上のメモリ114に転送される。
With such a functional configuration, the
つぎに、図3及び図4により、本情報処理システムにより生成されるプロトコルスタックのソフトウエアにより処理されるメッセージデータ(以下、処理対象メッセージデータ)のデータ構造と、プロトコルスタック定義ファイル101内の記述とについて説明する。ここでは、処理対象メッセージデータの具体例として、ネットワーク装置間でやり取りされるパケット、特に、照明器具を制御及び監視するための3種類のパケット(照明器具を点灯させるためのパケット、照明器具を消灯させるためのパケット、照明機器であるか否かを問合せるためのパケット)を挙げる。 Next, referring to FIG. 3 and FIG. 4, the data structure of message data (hereinafter, processing target message data) processed by the protocol stack software generated by the information processing system and the description in the protocol stack definition file 101 And will be described. Here, as a specific example of processing target message data, packets exchanged between network devices, in particular, three types of packets for controlling and monitoring lighting fixtures (packets for turning on lighting fixtures, lighting fixtures turned off) And a packet for inquiring whether the device is a lighting device).
図3に示すように、照明器具を点灯させるためのパケット(点灯指示パケット)301、照明器具を消灯させるためのパケット(消灯指示パケット)302、及び、照明器具であるか否かを問い合わせるためのパケット(問合せパケット)303には、送信元機器のネットワークアドレス(送信元アドレス)が格納される送信元アドレス格納フィールド310、送信先機器のネットワークアドレス(送信先アドレス)が格納される送信先アドレス格納フィールド311、照明機器に与えるためのコマンドが格納されるコマンド格納フィールド312、予約フィールド313、が設けられている。
As shown in FIG. 3, a packet (lighting instruction packet) 301 for turning on the lighting fixture, a packet (lighting off instruction packet) 302 for turning off the lighting fixture, and an inquiry as to whether or not the lighting fixture is used. The packet (inquiry packet) 303 includes a transmission source
ここで、送信元アドレス格納フィールド310には、照明機器用のコントロール機器111のネットワークアドレスの一例として「0001」、送信先アドレス格納フィールド311には、照明機器内のネットワーク装置116のネットワークアドレスの一例として「0002」が格納されている。また、コマンド格納フィールド312には、パケットの種類に応じて、照明点灯コマンド「01」、消灯コマンド「02」、及び、問合せコマンド「03」のうちのいずれかのコマンドが格納されている。
Here, “0001” is an example of the network address of the
さらに、点灯指示パケット301及び消灯指示パケット302には、送信先機器の機器コードが格納される機器コード格納フィールド314が設けられている。ここでは、照明機器に割り当てられた識別子の一例として「0001」が機器コード格納フィールド314に格納されている。
Further, the turn-on
これら3種類のパケット301〜303のデータ形式及びデータ構造を表す記述、すなわちプロトコルスタック定義ファイル101に所定のフォーマットにしたがって記述されたテキストデータを図4に示す。
FIG. 4 shows descriptions representing the data formats and data structures of these three types of
プロトコルスタック定義ファイル101内の記述データは、処理対象パケットの種類と同数の要素(ここでは3つの要素420,421,422)から構成される。各要素420,421,422には、コメント記号(//)付きメモ書きであるコメント405と、対応メッセージであるパケットの形式的な定義を表すメッセージ定義402と、が含まれている。ここでは、各要素にコメント405が含まれているが、各要素には必ずしもコメント405が含まれている必要はない。なお、以下においては、説明の便宜上、照明点灯パケット301に対応するメッセージ定義を第1メッセージ定義、照明消灯パケット302に対応するメッセージ定義を第2メッセージ定義、問合せパケット303に対応するメッセージ定義を第3メッセージ定義と呼ぶこととする。
各メッセージ定義402には、メッセージクラス名406、対応パケット内の各フィールドに対応するアイテムのリスト404、対応パケットの識別子(メッセージ識別子)407が含まれる。なお、リスト404には対応パケット内の各フィールドに対応するアイテムが、対応パケット内におけるフィールドの順番にしたがって並べられている。
The description data in the protocol stack definition file 101 is composed of the same number of elements (here, three
Each
各アイテムには、対応フィールドのデータ格納形式を示す修飾子408、アイテム名409、対応フィールドの占有サイズ410、対応フィールドのデータに対する制約条件411が含まれている。
Each item includes a
ここで、修飾子408の具体例としては、フィールドの内容がビッグエンディアン形式で格納されることを示す「bigendian」、フィールドの内容がリトルエンディアン形式で格納されることを示す「littleendian」、フィールドの内容が任意形式で格納されることを示す「any」等が挙げられる。なお、各アイテムにそれぞれ修飾子408を含ませる代わりに、すべてのアイテムの対応フィールドのデータ格納形式を示す修飾子412をメッセージクラス名406の前にしてもよい。
Here, as specific examples of the
占有サイズ410は、例えば、10進数表記(「2」「100」等)の数値データであってもよいし、16基数指示による16進数表記(「0x」等)の数値データ、メッセージ定義内で用いられている他のアイテム名を用いた指定、及び、これらの組み合わせによって構成される数式であってもよい。 The occupied size 410 may be, for example, numeric data in decimal notation (“2”, “100”, etc.), numeric data in hexadecimal notation (“0x”, etc.) in accordance with a 16 base instruction, It may be a mathematical expression constituted by designation using other item names being used and combinations thereof.
制約条件411の具体例としては、対応フィールド内のデータの値を特定値に制限する条件「=特定の値」、不等号を用いた条件指定、ビットフィールドの制約、これらの要素を組み合わせた数式で表される条件が挙げられる。
Specific examples of the
なお、プロトコルスタックは、通常、複数のレイヤーから構成されるため、処理対象となるパケットは、複数の入れ子となった要素から構成される。このようなパケットに関するメッセージ定義には、下位レイヤーのパケットのペイロード部分に上位レイヤーのパケットの一部または全部が格納されたことを示すアイテム型を用いてもよい。上位レイヤーのパケットデータの一部または全部を格納するフィールドを指定するため、このようなメッセージ定義には、例えば、上位レイヤーのパケットのデータ形式があるメッセージクラスで記述され、さらに、このメッセージクラス名を伴うアイテムが記述される。 Note that, since a protocol stack is usually composed of a plurality of layers, a packet to be processed is composed of a plurality of nested elements. In the message definition regarding such a packet, an item type indicating that a part or all of the upper layer packet is stored in the payload portion of the lower layer packet may be used. In order to specify a field for storing part or all of the upper layer packet data, such a message definition is described in a message class having a data format of the upper layer packet, for example, and this message class name. An item with is described.
また、ここでは、プロトコルスタックの処理対象メッセージの具体例として、照明機器宛のパケットを挙げたが、プロトコルスタックの処理対象メッセージは、これに限られない。例えば、ホームネットワーク装置(白物家電、AV家電機器等)、ネットワーク装置(パーソナルコンピュータ、携帯電話、ネットワーク制御装置等)、設備系ネットワーク装置(設備機器、監視装置等)等が送受信するパケットも、プロトコルスタックの処理対象メッセージとなり得る。これらのパケットを処理対象メッセージとする場合には、その形式及び構造が、照明機器宛のパケットと同様、所定のフォーマットでプロトコルスタック定義ファイルに記述される。 In addition, here, a packet addressed to the lighting device is given as a specific example of the processing target message of the protocol stack, but the processing target message of the protocol stack is not limited to this. For example, home network devices (white goods, AV home appliances, etc.), network devices (personal computers, mobile phones, network control devices, etc.), equipment network devices (equipment equipment, monitoring devices, etc.), etc. It can be a message to be processed by the protocol stack. When these packets are set as messages to be processed, the format and structure thereof are described in the protocol stack definition file in a predetermined format, similar to the packets addressed to the lighting device.
つぎに、図5により、このようなプロトコルスタック定義ファイル101の記述内容に基づきプロトコルスタックコンパイラ部102が実行するプロトコルスタックコード生成処理について説明する。ここでは、説明の便宜上、プロトコルスタックコード生成処理の流れの概略を説明してから、一部の処理(コード変換処理S603)の詳細について説明することとする。
Next, a protocol stack code generation process executed by the protocol
プロトコルスタックコンパイラ部102は、プロトコルスタック定義ファイル101から各メッセージ定義402を読み込んでメモリ上に配置し(S601)、各メッセージ定義402の構文エラーをチェックする(S602)。
The protocol
その結果、いずれかのメッセージ定義402に構文エラーが存在していれば、プロトコルスタックコンパイラ部102は、構文エラーの詳細内容を含むエラーメッセージを出力装置206に表示させ(S605)、処理を終了させる。
As a result, if there is a syntax error in any of the
一方、いずれのメッセージ定義402にも構文エラーが存在していなければ、プロトコルスタックコンパイラ部102は、後述のコード変換処理によって、各メッセージ定義402を汎用言語コードへ変換し(S603)、その変換結果を、プロトコルスタックコード103として電子ファイルに出力する(S604)。これによりプロトコルスタックコードが生成される。
On the other hand, if there is no syntax error in any of the
ここで、上述した通り、コード変換処理S603の詳細について説明する。 Here, as described above, details of the code conversion processing S603 will be described.
プロトコルスタックコンパイラ部102は、各メッセージ定義402の記述に基づいて構造木を作成する(S606)。このとき生成される構造木は、メッセージクラス名をルート、各アイテムをノード、メッセージ識別子407をリーフ(終端ノード)とするツリー構造を有する。
The protocol
例えば、第1メッセージ定義402から生成される構造木は、図6に示すように、メッセージクラス名「LightControlMsg」406から生成されたルート要素701、5つのアイテム「bigendian sourceAddress [2]」「bigendian destAddress [2] =MYSELF」「command [1] =0x01」「any reserved [1]」「bigendian objectCode [2] =0x0a」から生成されたノード702〜706と、属性「関数」の設定値としてメッセージ識別子「lightTurenOn」407を含むリーフ707と、を有している。
For example, the structure tree generated from the
各ノード702〜706のtypeは、対応アイテムの修飾子408及び制約条件411の少なくとも一方に基づき定まる。例えば、修飾子「any」を含むアイテムに対応するノードのtypeは「任意要素」となり、制約条件411を含むアイテムに対応するノードのtypeは「制約」となり、制約条件411を含まず、かつ、修飾子「any」も含まないアイテムに対応するノードのtypeは「記録」となる。
The type of each
ここで、互いに同じメッセージクラス名406を含む複数のメッセージ定義からは、部分木を有する構造木が生成される。例えば、共通のメッセージクラス名406を含む第1〜第3メッセージ定義402(図4参照)からは、図7に示すような構造木が生成される。第1〜第3メッセージ定義402は、共通のメッセージクラス名、共通の制約条件を含む1〜2番目のアイテムを有している。これらのメッセージ定義402から生成される構造木は、図7に示すようにノード803から分岐する。すなわち、第1メッセージ定義402に基づき、図6と同様な構造木(ルート要素801、ノード802〜806及びリーフ807)が生成され、第2及び第3メッセージ定義402の3番目以降のアイテム及びメッセージ識別子に基づき、その構造木のノード803を起点とする2つの部分木(すなわち、第2メッセージ定義402に対応するノード808〜810及びリーフ811、第3メッセージ定義402に対応するノード812〜813及びリール814)が追加される。
Here, a structure tree having a partial tree is generated from a plurality of message definitions including the same
このようにして、プロトコルスタック定義ファイル101の記述内容に基づきメッセージクラスごとの構造木を生成すると、プロトコルスタックコンパイラ部102は、プロトコルスタックコンパイラ部102は、後述の最適化サブルーチン(ツリー統合サブルーチン)を呼び出すことによって、この構造木に含まれる共通の部分木を統合する(S607)。なお、この最適化サブルーチンは、オプションにより呼び出しを指定された場合にだけ呼び出されるようにしてもよい。
When the structure tree for each message class is generated based on the description contents of the protocol stack definition file 101 in this way, the protocol
その後、構造木をステートマシン、各ノードをステート、及び、各リーフを外部関数読み出し処理に変換することによってオートマトンを生成する。図7の構造木から生成されるオートマトンを図8に示す。 Then, an automaton is generated by converting the structure tree into a state machine, each node into a state, and each leaf into an external function read process. An automaton generated from the structural tree of FIG. 7 is shown in FIG.
図8のオートマトンは、図7の構造木をステートマシン、各ノード801〜806,808〜810,812,813をステート1001〜1015、各リーフ807,812,814の属性「関数」の値で特徴付けられる外部関数の読み出し処理1009,1013,1015に変換することによって生成される。ここで、ノードからステートへの変換は、例えば、以下のルール(1)〜(3)にしたがって行われる。
The automaton in FIG. 8 is characterized by the state tree in the structural tree in FIG. 7, the
(1)Type=記録のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「C」に変換される。例えば、長さ属性値「2」のノード802は、連続する2つのステート「C」1001,1002に変換される。これらのステート「C」においては、上位レイヤーから受け取った1文字のコードが、RAM上の2バイト分の特定エリアに保存され、さらに次のステートに状態が進められる。ここで、文字コードの保存エリアは、変換元ノードの属性「名称」の値によって特徴付けられ、その保持方法は、変換元ノードの属性「型」の値に応じて定まる。
(1) Type = recording node This node is converted into a state “C” that is repeated by the number corresponding to the value of the attribute “length”. For example, a
例えば、処理対象系がbigendianである場合、ノード802から生成された2つのステート「C」1001,1002のうち、1番目のステート1001には、変換元ノード802の名称属性値「sourceAddress」によって特徴付けられるRAMエリア内の上位に、上位エリアからの文字コードを保持させるためのコードが記述され、2番目のステート1002には、同RAMエリア内の下位に上位エリアからの文字コードを保持させるためのコードが記述される。ここでは、変換元ノード802の型属性値が「bigendian」であるため、このような順番でコードが生成されているが、変換元ノード802の型属性値が「littleendian」であれば、これとは逆の順番でコードが生成される。
For example, when the processing target system is bigendian, the
なお、ここでは、対象処理系がbigendianである場合を例に挙げたが、対象処理系がlittleendianであれば、対象処理系がbigendianである場合とは逆の順番でコードが生成される。bigendian及びlittleendanのいずれの対象処理系にも対応できるように、対象処理系がbigendian及びlittleendanのうちのいずれであるかの指定をオプションで受け付けるようにしてもよい。この場合には、オプション指定の内容に応じた分岐処理が実行されるようにすればよい。 Here, the case where the target processing system is bigendian is taken as an example, but if the target processing system is littleendian, the code is generated in the reverse order to the case where the target processing system is bigendian. In order to be able to deal with either bigendian or littleendan target processing systems, it may be optionally accepted that the target processing system is either bigendian or littleendan. In this case, a branch process corresponding to the contents of option designation may be executed.
(2)Type=制約のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「B」に変換される。例えば、長さ属性値「1」の各ノード804,808,812は、ステート「B」1005に変換される。
(2) Type = restricted node This node is converted into a state “B” that is repeated by the number corresponding to the value of the attribute “length”. For example, each
これらのステート「B」においては、上位レイヤーから受け取った1文字のコードに応じて次のステートが決定される。例えば、現在の実行ステートがステート1005である場合、上位レイヤーからの文字コードが「01」であればステート1006、上位レイヤーからの文字コードが「02」であればステート1010、上位レイヤーからの文字コードが「03」であればステート1014、それぞれ状態を遷移させる。
In these states “B”, the next state is determined according to the one-character code received from the upper layer. For example, if the current execution state is
また、Type=制約のノードに対応するステート「B」においては、上位レイヤーからの文字コードが、対応ノードの制約条件を満たさなければ(すなわち、対応ノードの属性「値」の値のいずれかにも一致しなければ)、受け取ったパケット全体を不正として処理する必要がある。このため、Type=制約のノードに対応するステート「B」に関しては、上位レイヤーからの文字コードが対応ノードの制約条件を満たさないときに遷移すべき特別なステート「D」1016が用意されている。例えば、Type=制約のノード805,809,813に対応するステート「B」1005には、上位レイヤーからの文字コードが各対応ノード805,809,813の値属性値「01」「02」「03」のいずれにも該当しないときに、なにも処理が行われないステート「D」1016に遷移するようなコードが記述される。
In the state “B” corresponding to the node of Type = constraint, if the character code from the upper layer does not satisfy the constraint condition of the corresponding node (that is, the value of the attribute “value” of the corresponding node) If they do not match, the entire received packet must be treated as illegal. For this reason, for the state “B” corresponding to the node of Type = constraint, a special state “D” 1016 to be transitioned when the character code from the upper layer does not satisfy the constraint condition of the corresponding node is prepared. . For example, in the state “B” 1005 corresponding to Type = constrained
なお、このようなステート「D」は、すべてのメッセージクラスにおいて生成される。 Such a state “D” is generated in all message classes.
(3)Type=任意要素のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「A」に変換される。例えば、長さ属性値「1」のノード805,809,813は、それぞれ、1つのステート「A」1001,1010,1014に変換される。これらのステート「A」では、たんに、次ステートに状態を移す処理が行われる。例えば、現在の実行ステートがステート1001である場合には、次ステート1002に状態が遷移するだけである。
(3) Type = node of arbitrary element This node is converted into a state “A” that is repeated by the number corresponding to the value of the attribute “length”. For example, the
さらに、プロトコルスタックコンパイラ部102は、このようにして生成したオートマトンを実行する汎用記述言語形式のプログラム(オートマトン実行プログラム)を生成する(S608)。これによりメッセージクラスごとに共通に生成されるオートマトン実行プログラムのフローチャートを図9に示す。
Further, the protocol
そして、最終的に、プロトコルスタックコンパイラ部102は、後述の最適化サブルーチン(コード統合サブルーチン、RANエリア最適化サブルーチン)を呼び出すことによって、生成したプロトコルスタックコードを最適化する(S609)。なお、最適化サブルーチンは、オプションにより呼び出しを指定された場合にだけ呼び出されるようにしてもよい。
Finally, the protocol
さて、以上の処理によって生成されるオートマトン実行プログラムによって、オートマトンは、以下のように実行される(図9参照)。 The automaton is executed as follows by the automaton execution program generated by the above processing (see FIG. 9).
まず、RAM上の1バイト分の所定領域(実行ステート位置情報格納エリア)に、オートマトンの現在の実行ステートを表す実行ステート位置情報として、オートマトンの最初のステート1001の位置情報が設定され(S901)、その後、パケット内の一定サイズのデータが上位レイヤーから取得される(S902)。なお、上位ステートから取得されるデータのサイズは任意であるが、ここでは、1文字のコード(すなわち2バイトのデータ)が取得されることとする。
First, position information of the
その後、取得したデータに基づき、実行ステート位置情報が示す位置のステートのコードが実行される。 Thereafter, based on the acquired data, the code of the state at the position indicated by the execution state position information is executed.
例えば、このとき実行ステート位置情報がステート「B」の位置を示していれば、上位レイヤーから取得した文字コードに応じて定まるステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート「B」1003である場合、文字コードが「00」であれば、次ステート「B」1004の位置情報で実行ステート位置情報が更新され、文字コードがその他の値であれば、ステート「D」1016の位置情報で実行ステート位置情報が更新される。また、現在の実行ステートがステート「B」1005である場合、文字コードが「01」であれば次ステート「A」1006の位置情報で、文字コードが「02」であれば次ステート「A」1010の位置情報で、文字コードが「03」であれば次ステート「A」1014の位置情報で、文字コードがそれら以外の値であれば、ステート「D」1016の位置情報で実行ステート位置情報が更新される。 For example, if the execution state position information indicates the position of the state “B” at this time, the execution state position information is updated with the position information of the state determined according to the character code acquired from the upper layer. For example, if the current execution state is state “B” 1003 and the character code is “00”, the execution state position information is updated with the position information of the next state “B” 1004, and the character code is another value. If so, the execution state position information is updated with the position information of the state “D” 1016. Also, when the current execution state is state “B” 1005, if the character code is “01”, it is position information of the next state “A” 1006, and if the character code is “02”, the next state “A”. If the position information of 1010 is the character code “03”, the position information of the next state “A” 1014, and if the character code is any other value, the execution state position information is the position information of the state “D” 1016. Is updated.
また、実行ステート位置情報がステート「A」の位置を示していれば、現在の実行ステートの次ステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート「A」1006である場合、次ステート1007の位置情報で実行ステート位置情報が更新される。 If the execution state position information indicates the position of the state “A”, the execution state position information is updated with the position information of the next state of the current execution state. For example, when the current execution state is state “A” 1006, the execution state position information is updated with the position information of the next state 1007.
また、実行ステート位置情報がステート「C」の位置を示していれば、RAM上の特定エリアに文字コードが保存され、さらに、現在の実行ステートの次ステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート1001である場合には、「sourceAddress」で特徴付けられるRAMエリアの1バイト目に文字コードが保存され、次ステート1002の位置情報で実行ステート位置情報が変更される。また、現在の実行ステートがステート1002である場合には、「sourceAddress」で特徴付けられるRAMエリアの2バイト目に文字コードが保存され、次ステート1003の位置情報で実行ステート位置情報が変更される。
If the execution state position information indicates the position of the state “C”, the character code is stored in a specific area on the RAM, and the execution state position information is updated with the position information of the next state of the current execution state. Is done. For example, when the current execution state is the
また、実行ステート位置情報が外部関数の呼び出し処理の位置を示していれば、その外部関数が呼び出される。例えば、現在の実行ステートが処理1009,1013,1015のいずれかを示している場合には、対応アイテムの属性「関数」の値に対応する名称の外部関数(lightTurnOn, lightTurnOff, lightModeRequest)が呼び出される。
If the execution state position information indicates the position of the external function call processing, the external function is called. For example, when the current execution state indicates one of the
このようにしてステートのコードが実行されると、更新後の実行ステート位置情報が示す位置のステートに状態が遷移し(S903)、S902で取得したデータがパケット内の最後の文字のコードであるか否かがチェックされる(S904)。その結果、最後の文字のコードでなければ、S902以降の処理が繰り返し実行され、最後の文字のコードであれば、処理が終了する。 When the state code is executed in this manner, the state transitions to the state at the position indicated by the updated execution state position information (S903), and the data acquired in S902 is the code of the last character in the packet. Is checked (S904). As a result, if it is not the code of the last character, the processing from S902 is repeatedly executed, and if it is the code of the last character, the processing ends.
なお、その後、このようにして生成されたプロトコルスタックコード103は、汎用コンパイラ部104によって最適化等され、実行コード105へと変換される。
Thereafter, the
このようなオートマトン及びオートマトン実行プログラムによれば、例えば、ネットワーク装置116が消灯指示パケット302を受け付けた場合には、S902〜S904の繰り返し実行によって、ステート1001→ステート1002→ステート1003→ステート1004→ステート1005→ステート1010→ステート1011→ステート1012→処理1013、というように状態が順次遷移する。これにより、最終的に、「lightTurnOn」で特徴付けられる外部関数が呼び出され、その結果、照明機器が点灯する。この関数「lightTurnOn」は、照明消灯パケット302の送信元の確認及び応答を行うために、照明消灯パケット302の送信元アドレス格納フィールドの格納値、すなわちパケット送信元のネットワークアドレスを利用する必要がある。その値は、S902〜S904の繰り返し実行により、sourceAddressで特徴付けられるRAMエリアに書き込まれるため、この関数によって利用可能である。
According to such an automaton and an automaton execution program, for example, when the
また、受信パケットの送信先アドレス格納フィールド311に、ネットワーク装置116のネットワークアドレス「0002」以外のネットワークアドレス「0103」が格納されている場合には、実行ステートが、1001→1002→1003→1016→1016→1016→1016→1016と変化するため、このパケットに応じた処理(照明機器に対する操作処理)は実行されない。
When the network address “0103” other than the network address “0002” of the
このように、本実施の形態に係る情報処理システムが生成するオートマトン及びオートマトン実行プログラムによれば、パケットの格納情報が正しく判断されるため、パケットを処理することができる。 Thus, according to the automaton and the automaton execution program generated by the information processing system according to the present embodiment, the packet storage information is correctly determined, so that the packet can be processed.
通常のネットワーク装置のパケット受信処理においては、受信パケット全体を、RAMにコピーしてから処理するため、例えば、上述の3種類のパケット301〜303の処理には、少なくとも8バイトのメモリ領域を要する。また、受信パケット全体をRAMにコピーしてから処理を開始しているため、その分、処理に時間を要する。
In normal packet reception processing of a network device, the entire received packet is processed after being copied to the RAM. For example, processing of the above three types of
これに対して、本実施の形態に係るプロトコルスタックコード生成処理により自動生成されるオートマトン及びオートマトン実行プログラムによれば、RAM上に3バイト分のエリア(ノードの名称属性値で特徴付けられる2バイト分のRAMエリア、及び、1バイト分の実行ステート位置情報格納エリア)が確保されれば足りる。また、パケットの受信を開始すると、予め定めたサイズのデータを受信するごとに、そのデータを解析するため、受信パケット全体をいったんメモリに格納してから解析を開始する場合と比較して処理を早期に終了させることができる。 On the other hand, according to the automaton and automaton execution program that are automatically generated by the protocol stack code generation processing according to the present embodiment, an area for 3 bytes on the RAM (2 bytes characterized by the name attribute value of the node) It is sufficient if a RAM area for one minute and an execution state position information storage area for one byte are secured. In addition, when the reception of the packet is started, each time data of a predetermined size is received, the data is analyzed. Therefore, the processing is performed in comparison with the case where the analysis is started after the entire received packet is temporarily stored in the memory. It can be terminated early.
このため、RAMエリアを節約し、かつ、プログラムの高速化を図ることができる。すなわち、本実施の形態によれば、より小型のプロトコルスタックのソフトウエア、つまり、ネットワークシステム上の小型ネットワーク装置への搭載に適した、省メモリかつ高速なプロトコルスタックをより容易に実装することをできる。 Therefore, the RAM area can be saved and the program can be speeded up. That is, according to the present embodiment, it is possible to more easily implement software for a smaller protocol stack, that is, a memory-saving and high-speed protocol stack suitable for mounting on a small network device on a network system. it can.
また、プロトコルスタック定義ファイル101には、同一のメッセージクラスに属する複数のメッセージ定義から、適宜、必要なメッセージ定義(ネットワーク装置が処理すべきメッセージに関するメッセージ定義)だけを選択して記述することができるため、ネットワーク装置がサポートすべきパケットだけをサポートする必要最小限のコードを生成することができる。すなわち、ネットワーク装置が処理する必要がないメッセージに関するメッセージ定義を排除することができるため、最終的なコードサイズを縮小させることができる。 In the protocol stack definition file 101, only a necessary message definition (message definition related to a message to be processed by the network device) can be selected and described as appropriate from a plurality of message definitions belonging to the same message class. Therefore, it is possible to generate the minimum necessary code that supports only the packet that the network device should support. That is, since the message definition related to the message that does not need to be processed by the network device can be eliminated, the final code size can be reduced.
例えば、上述の3種類のパケット301〜303のうち、ネットワーク装置の処理対象パケットが2種類のパケット(例えば301,302)だけである場合、プロトコルスタック定義ファイル101には、図4に示した3つの要素420〜422のうち、処理対象パケット301,302に対応する2つの要素420,421だけを記述すれば足りる。その結果、2つの要素420,421に含まれるメッセージ定義のみからプロトコルスタックコード103が生成される。このため、プロトコルスタックコード103のサイズが小さくなり、結果として、このプロトコルスタックコード103から生成される実行コード105のサイズも小さくなる。
For example, among the above-described three types of
なお、プロトコルスタックの処理対象としてパケットを挙げたが、プロセッサで連続的に処理可能な一連のデータ列であれば、パケット以外のデータ(XML形式のテキストデータ等の上位通信データ形式データ、表形式データ等)であってもプロトコルスタックの処理対象となり得る。このような、パケットデータ以外のデータを処理対象とするプログラムも、以上と同様な処理によって自動生成することができる。 Although the packet is cited as the processing target of the protocol stack, if it is a series of data strings that can be processed continuously by the processor, data other than the packet (higher communication data format data such as XML-format text data, table format) Data, etc.) can be processed by the protocol stack. Such a program for processing data other than packet data can also be automatically generated by the same processing as described above.
また、以上においては、プロトコルスタックコンパイラ部102が、汎用コンパイラ部104によって実行コードにコンパイルされるオートマトン及びオートマトン実行プログラムをプロトコルスタック定義ファイル101から生成しているが、プロトコルスタックコンパイラ部102が、特定のネットワーク装置上で動作する機械語形式またはバイナリ形式のコード(すなわち実行コード105)をプロトコルスタック定義ファイル101から直接生成するようにしてもよい。または、ネットワーク装置において逐次的に解釈実行される中間的な実行コードを生成してもよい。
In the above, the protocol
また、以上においては、すべてのパケットに関するメッセージ定義からソースコードを生成しているが、必ずしも、このようにする必要はない。例えば、一部のパケットに関するメッセージ定義から構造木を生成してから、残りのパケットに関するメッセージ定義についても同様の処理を行い、最終的に、内部的に生成された構造木をグラフ結合(マージ)してもよい。なお、生成された部分的な木構造を保存可能な形式で外部記憶メモリに保存しておき、最終的なソースコードの生成時に、それらを外部記憶メモリから呼び出すようにすれば、処理の高速化を図ることができる。 In the above description, the source code is generated from the message definitions for all packets. However, this is not always necessary. For example, after generating a structure tree from the message definitions for some packets, the same processing is performed for the message definitions for the remaining packets, and finally, the internally generated structure trees are merged into a graph. May be. If the generated partial tree structure is saved in an external storage memory in a storable format and is called from the external storage memory when the final source code is generated, the processing speed is increased. Can be achieved.
つぎに、S609において呼び出される最適化サブルーチンについて説明する。なお、各最適化サブルーチンは、前述したように、オプションによってその呼び出しの有無が指定されてもよい。 Next, the optimization subroutine called in S609 will be described. Note that, as described above, whether or not to call each optimization subroutine may be specified by an option.
(1)ツリー統合サブルーチン
S607においてツリー統合サブルーチンが呼び出されると、以下に示すように、図10のツリー統合処理によって、同一の部分木が統合される。
(1) Tree Integration Subroutine When the tree integration subroutine is called in S607, as shown below, the same subtree is integrated by the tree integration processing of FIG.
すべてのツリーの各ノードを順次第1処理対象ノードaとして、以下の処理を繰り返し実行する(S1101)。すなわち、すべてのツリーの各ノードについて、それぞれ、以下の処理を実行する。 The following processing is repeatedly executed by sequentially setting each node of all trees as the first processing target node a (S1101). That is, the following processing is executed for each node of all trees.
すべてのツリーの各ノードを順次第2処理対象ノードbとして、以下の処理を繰り返し実行する(S1102)。すなわち、新たなノードを第1処理対象ノードaとするごとに、それぞれ、すべてのツリーの各ノードをそれぞれ第2処理対象ノードbとして以下の処理を実行する。 The following processing is repeatedly executed by sequentially setting each node of all trees as the second processing target node b (S1102). That is, every time a new node is set as the first processing target node a, the following processing is executed with each node of all the trees as the second processing target node b.
第2処理対象ノードbと第1処理対象ノードの順序を比較する(S1103)。その結果、第1処理対象ノードaの順序が第2処理対象ノードbの順序よりも早くなければ、次ノードを第2処理対象ノードbとしてS1103を実行する。一方、第1処理対象ノードaの順序が第2処理対象ノードbの順序よりも早ければ、第1処理対象ノードaの次ノードを順次第3処理対象ノードanとして、以下の処理を繰り返し実行する(S1104)。すなわち、第1処理対象ノードaのすべての次ノードについて、それぞれ、以下の処理を実行する。 The order of the second processing target node b and the first processing target node is compared (S1103). As a result, if the order of the first processing target node a is not earlier than the order of the second processing target node b, S1103 is executed with the next node as the second processing target node b. On the other hand, if the order of the first process target node a is earlier than the order of the second process target node b, the following process is repeatedly executed by sequentially setting the next node of the first process target node a as the third process target node an. (S1104). That is, the following processing is executed for each of the next nodes of the first processing target node a.
第2処理対象ノードbの次ノードを順次第4処理対象ノードbnとして、以下の処理を繰り返し実行する(S1105)。すなわち、新たなノードが第4処理対象ノードbnとなるごとに、第2処理対象ノードbのすべての次ノードについて、それぞれ、以下の処理を実行する。 The following processing is repeatedly executed by sequentially setting the next node of the second processing target node b as the fourth processing target node bn (S1105). That is, every time a new node becomes the fourth processing target node bn, the following processing is executed for each of the next nodes of the second processing target node b.
第3処理対象ノードanを起点とするサブツリーと第4処理対象ノードbnを起点とするサブツリーを比較する。その結果、両者が一致していれば、第1処理対象ノードaが次ノードanを指す部分を第4処理対象ノードbnに変更し(S1107)、第2処理対象ノードbの次ノードのうちの他のノードを第4処理対象ノードbnとして再度S1106を実行する。一方、両者が一致していなければ、第2処理対象ノードbの次ノードのうちの他のノードを第4処理対象ノードbnとして再度S1106を実行する。 The subtree starting from the third processing target node an is compared with the subtree starting from the fourth processing target node bn. As a result, if the two match, the portion where the first processing target node a points to the next node an is changed to the fourth processing target node bn (S1107), and among the next nodes of the second processing target node b, The other node is set as the fourth processing target node bn, and S1106 is executed again. On the other hand, if the two do not match, S1106 is executed again with the other node among the nodes following the second processing target node b as the fourth processing target node bn.
このような処理によりすべての同一の部分木が同一化されたら、参照されていないノードを廃棄する(S1109)。 When all the same subtrees are identified by such processing, the unreferenced node is discarded (S1109).
このような処理によれば、同一の部分木が統合されるため、ノード数が減少し、その結果、生成されるオートマトンのステート数を減少させることができる。このため、最終的な出力コード量が減少させることができる。 According to such processing, since the same subtree is integrated, the number of nodes is reduced, and as a result, the number of states of the generated automaton can be reduced. For this reason, the final output code amount can be reduced.
(2)コード統合サブルーチン
S609においてコード統合サブルーチンが呼び出されると、以下に示すように、図12のコード統合処理によって、ステート間に存在する、RAMメモリ操作処理を実行させるための同一のコードが統合される。ここでは、図8のオートマトンに基づきコードを生成する場合を例に挙げる。ここでは、説明の便宜上、ステート1001の位置を番号「1」、ステート1002のステート位置を番号「2」、ステート1003の位置を番号「3」、実行ステート位置情報格納エリアの識別子を「state」、上位レイヤーから受け取った一文字の識別子を「c」と表す。
(2) Code Integration Subroutine When the code integration subroutine is called in S609, as shown below, the same code for executing the RAM memory operation processing existing between the states is integrated by the code integration processing of FIG. Is done. Here, a case where a code is generated based on the automaton in FIG. 8 is taken as an example. Here, for convenience of explanation, the position of the
ステート1001において、名称sourceAddressで特徴付けられるRAMエリアの第1バイト目に上位レイヤーからの一文字を格納し、さらに実行ステート位置情報を次ステートの番号「2」に変更するコードは、例えば、図11に示した3種類のコードA「sourceAddress[0]←c」1301,「sourceAddress[state−1]←c」1302,「sourceAddress[1−state]←c」1303のいずれかと、2種類のコードB「state←state+1」1304,「state←2」1305のいずれかと組み合わせから構成される。
In the
また、ステート1002において、名称sourceAddressで特徴付けられるRAMエリアの第2バイト目に上位レイヤーからの一文字を格納し、実行ステート位置情報を次ステートの番号「3」に変更するコードは、例えば、図11に示す3種類のコードA「sourceAddress[1]←c」1311,「sourceAddress[state−1]←c」1312,「sourceAddress[3−state]←c」1313のいずれかと、2種類のコードB「state←state+1」1314,「state←3」1315のいずれかとの組み合わせにより構成される。
In the
そこで、2つのステート1001,1002のコードを、共通の組合せコード「sourceAddress[state−1]←c、state←state+1」(コード1302,1304の組み合わせ、コード1312,1314の組み合わせ)とすれば、2つのステート1001,1002のコードを統合することができるため、コードサイズを減少させることができる。
Therefore, if the codes of the two
このようなコードの統合を図るには、プロトコルスタックコンパイラ部102は、図12に示す以下の処理を実行する。まず、プロトコルスタックコンパイラ部102は、全ツリーのすべてのノードについて、それぞれ、割り当て可能なコード断片をすべて生成する(S1401)。例えば、ステート1001におけるコード断片として、6種類の組合せコード、すなわち、「sourceAddress[0]←c、state←state+1」(コード1301,1304の組合せ)、「sourceAddress[state-1]←c、state←state+1」(コード1302,1304の組合せ)、「sourceAddress[1-state]←c、state←state+1」(コード1303,1304の組合せ)、「sourceAddress[0]←c、state←2」(コード1301,1305の組合せ)、「sourceAddress[state-1]←c、state←2」(コード1302,1305の組合せ)、「sourceAddress[1-state]←c、state←2」(コード1303,1305の組合せ)が生成される。また、ステート1002におけるコード断片として、6種類の組合せコード、すなわち、「sourceAddress[1]←c、state←state+1」(コード1311,1314の組合せ)、「sourceAddress[state-1]←c、state←state+1」(コード1312,1314の組合せ)、「sourceAddress[3-state]←c、state←state+1」(コード1313,1314の組合せ)、「sourceAddress[1]←c、state←3」(コード1311,1315の組合せ)、「sourceAddress[state-1]←c、state←3」(コード1312,1315の組合せ)、「sourceAddress[3-state]←c、state←3」(コード1313,1315の組合せ)が生成される。
In order to integrate such codes, the protocol
プロトコルスタックコンパイラ部102は、このとき生成した各コード断片のコストをそれぞれ算出する(S1402)。ここで算出されるコストは、例えば、生成したコードの文字列の長さ、生成したコードをコンパイルしたときのバイナリのサイズ、生成したコードの演算回数の見積もり量等であってもよい。
The protocol
さらに、プロトコルスタックコンパイラ部102は、生成した全コード断片のうち、重複しているコード断片の数をカウントする(S1403)。例えば、ステート1001について生成されたコード断片「sourceAddress[state-1]←c、state←state+1」は、ステート1002について生成されたコード断片群にも含まれているから、その重複数は2である。そして、プロトコルスタックコンパイラ部102は、すべてのツリーの各ノードについて、それぞれ、生成したコード断片群のなかから、コスト値を重複数で割った値が最小となるコード断片を選択し、このコード断片を、そのノードに割り当てられるコード断片とする(S1404)。
Further, the protocol
このような処理によれば、よりコストの小さいコードを優先的に割り当てられるとともに、重複するコードの統合が図られる。 According to such processing, codes with lower costs can be preferentially assigned and overlapping codes can be integrated.
(3)RAMエリア最適化ルーチン
例えば、ノードAからノードB及びノードCへ分岐するツリーが生成された場合、ノードB及びその子ノードから生成されるコードが利用するRAMエリアDと、ノードC及びその子ノードから生成されるコードが利用するRAMエリアEとが同時に使用されることはない。これらのRAMエリアD,Eを共通化すれば、実行コードのRAMサイズを減少させることができる。このように、いくつかのノードから生成されるコードがRAMエリアを使用する場合には、RAMエリアの最適化により、より高性能で省メモリなプロトコルスタックを生成することができる。以下、この処理について説明する。
(3) RAM area optimization routine For example, when a tree branching from node A to node B and node C is generated, RAM area D used by the code generated from node B and its child nodes, and node C and its children The RAM area E used by the code generated from the node is not used at the same time. If these RAM areas D and E are made common, the RAM size of the execution code can be reduced. In this way, when code generated from several nodes uses a RAM area, a higher-performance and memory-saving protocol stack can be generated by optimizing the RAM area. Hereinafter, this process will be described.
S609においてRAMエリア最適化ルーチンが呼び出されると、図13のRAMエリア共通化処理によって、同時使用されないRAMエリアが統合される。ここでは、以下の定義を用い、対象とするクラスを、Cに対してS←V(C)とする。 When the RAM area optimization routine is called in S609, the RAM areas that are not used at the same time are integrated by the RAM area sharing process of FIG. Here, the following definition is used, and the target class is S ← V (C) for C.
V(C)={v1,v2...}:クラスCで使用されるRAMエリアの識別情報の集合
D(C)={d1,d2,... ,dm}:クラスCのメッセージ定義の集合
M(d)={vi,vj,vk,...}:メッセージ定義dで使用されるRAMエリアの識別情報の集合
V (C) = {v1, v2 ...}: set of identification information of RAM areas used in class C D (C) = {d1, d2, ..., dm}: Class C message definition Set M (d) = {vi, vj, vk, ...}: set of identification information of RAM area used in message definition d
まず、プロトコルスタックコンパイラ部102は、集合Sが空集合φであるかどうかチェックし(S1501)、その結果、空集合φであれば処理を終了させる。一方、空集合φでなければ、以下の数式を満たすメッセージ定義dを探す(S1502)。
First, the protocol
(M(d)∩S)∩(M(d')∩S)=φ, ∀d'≠d かつ
S∩M(d)≠φ かつ
S−M(d)S≠φ
(M (d) ∩S) ∩ (M (d ′) ∩S) = φ, ∀d ′ ≠ d and
S∩M (d) ≠ φ and
S−M (d) S ≠ φ
その結果、該当するメッセージ定義dが存在していれば (S1503)、プロトコルスタックコンパイラ部102は、Sを、S1←S∩M(d)とS2←S−M(d)とに分割し、それらS1及びS2をそれぞれSとみなして、このアルゴリズムを再帰的に呼び出す。この再帰的処理が終了したら、これにより得られたS1及びS2を、RAMエリアを共有する要素として出力する(S1504)。例えば、S1及びS2について、それぞれ、上記条件を満たすメッセージ定義dが存在していれば、S1、S2、S1をSとした再帰的処理により得られるS1及びS2、S2をSとした再帰的処理により得られるS1及びS2の合計4つが、RAMエリアを共有する要素となる。もちろん、RAMエリアを共有する要素ととして最終的に得られる要素は、4つより小さくなることも、4つより大きくなることもある。
As a result, if the corresponding message definition d exists (S1503), the protocol
一方、該当するメッセージ定義dが存在しなければ(S1503)、プロトコルスタックコンパイラ部102は、クラスCで使用される全RAMエリアの識別情報v∈Sに対して、以下の数式を満たすすべてのrの集合I(v)を求める(S1505)。
On the other hand, if the corresponding message definition d does not exist (S1503), the protocol
∀d∈D(C), r∈M(d) xor v∈M(d) ∀d∈D (C), r∈M (d) xor v∈M (d)
その後、プロトコルスタックコンパイラ部102は、集合S1←(vi,vj,...)と集合S2←(I(vi)∩I(vj)∩...)の共有RAMエリアのサイズが最小になるように、S1及びS2に属する要素の組み合わせを選択する。S1、S2、S−S1−S2をそれぞれSとみなして、このアルゴリズムを再帰的に呼び出し、それが終了すると、S1及びS2を、RAMエリアを共有する要素として出力する(S1506)。例えば、S−S1−S2が空集合φとなり、かつ、S1及びS2の同サイズである場合には、S1及びS2の共通化により、必要なRAMエリアのサイズが当初の半分となる。
Thereafter, the protocol
以上説明した最適化サブルーチン(ツリー統合サブルーチン、コード統合サブルーチン、RANエリア最適化サブルーチン)のうち、読み出すべきサブルーチンの組み合わせを変えることによって(例えば、すべてのサブルーチンを呼び出す、1つのサブルーチンだけを呼び出す等)、複数のプロトコルスタックコードを選択候補として得て、それらの選択候補のなかから、目的に適合する選択候補(例えば、処理性能、メモリの使用量等の実行コストが最小のもの)を最終プロトコルスタックコードとして選択するようにしてみよい。これにより、例えば小型のネットワーク装置への搭載に適した、より高性能で、メモリ使用量の小さなプロトコルスタックを生成することができる。 Among the optimization subroutines described above (tree integration subroutine, code integration subroutine, RAN area optimization subroutine), by changing the combination of subroutines to be read (for example, calling only one subroutine, etc.) A plurality of protocol stack codes are obtained as selection candidates, and a selection candidate suitable for the purpose (for example, one having the smallest execution cost such as processing performance and memory usage) is selected from the selection candidates. Try selecting it as a code. This makes it possible to generate a protocol stack with higher performance and smaller memory usage suitable for mounting on a small network device, for example.
なお、以上においては、ネットワーク装置に組み込まれるプロトコルスタックコードを情報処理システム上で生成しているが、必ずしも、このようにする必要はない。例えば、プロトコルスタックコードの自動生成処理の実行機能をネットワーク装置に持たせ、そのネットワーク装置が、自身の処理する各種パケットに関するプロトコルスタック定義ファイルの記述内容からプロトコルスタックコードを生成するようにしてもよい。 In the above description, the protocol stack code to be incorporated into the network device is generated on the information processing system, but it is not always necessary to do so. For example, the network device may have an execution function of the protocol stack code automatic generation processing, and the network device may generate the protocol stack code from the description contents of the protocol stack definition file regarding various packets processed by itself. .
さらに、さまざまな仮想的な生成結果のなかから、実行コスト(処理性能、必要メモリサイズ等)が最小のものを選択し、それを、プロトコルスタックコードとして出力する。その後、汎用コンパイラ部104は、このプロトコルスタックコードから、ネットワーク装置116上で実行可能な実行コード105を生成する。
Furthermore, the one having the smallest execution cost (processing performance, required memory size, etc.) is selected from various virtual generation results, and is output as a protocol stack code. Thereafter, the general-purpose compiler unit 104 generates an
101:プロトコルスタック定義ファイル、102:プロトコルスタックコンパイラ部、103:プロトコルスタックコード、104:汎用コンパイラ部、105:実行コード 101: Protocol stack definition file, 102: Protocol stack compiler section, 103: Protocol stack code, 104: General-purpose compiler section, 105: Execution code
Claims (10)
前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
当該プログラム生成方法は、
前記演算手段が、前記定義ファイルを参照する処理と、
前記演算手段が、前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する処理と、
を含むことを特徴とするプログラム生成方法。 A program generation method for causing an information processing apparatus having a storage unit and an operation unit to generate a data sequence processing program for causing a network device that receives a series of data sequences including a plurality of data elements via a network to process the data sequence. There,
The storage means stores a definition file in which item information including size information of each data element in the data string received by the network device is described according to the order of the data elements in the data string,
The program generation method is as follows:
A process in which the computing means refers to the definition file;
The definition file includes a program for the arithmetic means to process each data element in the data string in a predetermined size according to the order from the top of the data string as the data string processing program. Processing based on the description order of the item information of each data element and the size information of each data element in
A program generation method comprising:
前記演算手段は、
遷移関係が定められた、当該プログラムの状態と、当該各状態における処理コードとが定義されたプログラムであって、前記データ列内の前記サイズのデータを用いて、当該プログラムの現在の状態に応じた処理コードを実行し、前記遷移関係にしたがって、当該プログラムの状態を、前記データ列内における、前記データの次の前記サイズのデータを用いる次の状態に遷移させるプログラムを、前記データ列処理プログラムとして生成することを特徴とするプログラム生成方法。 A program generation method according to claim 1, comprising:
The computing means is
A program in which the transition state is defined and the state of the program and the processing code in each state are defined, and according to the current state of the program using the data of the size in the data string A program for executing the processing code and transitioning the state of the program to the next state using the data of the size next to the data in the data string in accordance with the transition relation. A program generation method characterized by generating as a program.
前記演算手段は、
前記各データ要素に対応付けて、前記プログラムの状態及び前記処理コードを定め、
前記各データ要素に対応する状態のなかに、処理コードが共通する複数の状態が存在する場合には、当該複数の状態として、当該複数の状態のなかのいずれか一の状態が用いられるように、前記遷移関係を定めることを特徴とするプログラム生成方法。 A program generation method according to claim 2, wherein
The computing means is
In association with each data element, the state of the program and the processing code are determined,
When there are a plurality of states having the same processing code among the states corresponding to the respective data elements, any one of the plurality of states is used as the plurality of states. , And determining the transition relation.
前記演算手段は、
前記各状態について複数の処理コード候補を生成し、前記各状態の処理コードとして、当該状態の処理コード候補のなかから、他の状態の処理コード候補と共通の処理コード候補を選択することを特徴とするプログラム生成装置。 A program generation method according to claim 2, wherein
The computing means is
A plurality of processing code candidates are generated for each state, and a processing code candidate common to a processing code candidate of another state is selected from the processing code candidates of the state as the processing code of each state. A program generator.
前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納された記憶手段と、
前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する演算手段と、
を備えることを特徴とするプログラム生成装置。 A program generation device that generates a data sequence processing program for causing a network device that receives a series of data sequences including a plurality of data elements via a network to process the data sequence,
Storage means storing a definition file in which item information including size information of each data element in the data string received by the network device is described according to the order of the data elements in the data string;
As the data string processing program, a program for processing each data element in the data string by data of a predetermined size in the order from the top of the data string, the data in the definition file Calculation means for generating based on the description order of the item information of the elements and the size information of each data element,
A program generation device comprising:
前記演算手段は、
遷移関係が定められた、当該プログラムの状態と、当該各状態における処理コードとが定義されたプログラムであって、前記データ列内の前記サイズのデータを用いて、当該プログラムの現在の状態に応じた処理コードを実行し、前記遷移関係にしたがって、当該プログラムの状態を、前記データ列内における、前記データの次の前記サイズのデータを用いる次の状態に遷移させるプログラムを、前記データ列処理プログラムとして生成することを特徴とするプログラム生成装置。 The program generation device according to claim 5,
The computing means is
A program in which the transition state is defined and the state of the program and the processing code in each state are defined, and according to the current state of the program using the data of the size in the data string A program for executing the processing code and transitioning the state of the program to the next state using the data of the size next to the data in the data string in accordance with the transition relation. A program generation device characterized by generating as a program.
前記演算手段は、
前記各データ要素に対応付けて、前記プログラムの状態及び前記処理コードを定め、
前記各データ要素に対応する状態のなかに、処理コードが共通する複数の状態が存在する場合には、当該複数の状態として、当該複数の状態のなかのいずれか一の状態が用いられるように、前記遷移関係を定めることを特徴とするプログラム生成装置。 The program generation device according to claim 6,
The computing means is
In association with each data element, the state of the program and the processing code are determined,
When there are a plurality of states having the same processing code among the states corresponding to the respective data elements, any one of the plurality of states is used as the plurality of states. A program generating apparatus that defines the transition relationship.
前記演算手段は、
前記各状態について複数の処理コード候補を生成し、前記各状態の処理コードとして、当該状態の処理コード候補のなかから、他の状態の処理コード候補と共通の処理コード候補を選択することを特徴とするプログラム生成装置。 The program generation device according to claim 6,
The computing means is
A plurality of processing code candidates are generated for each state, and a processing code candidate common to a processing code candidate of another state is selected from the processing code candidates of the state as the processing code of each state. A program generator.
前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
当該コンパイラは、
前記演算手段が、前記定義ファイルを参照する処理と、
前記演算手段が、前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する処理と、
を前記情報処理装置に実行させることを特徴とするコンパイラ。 A compiler for causing an information processing apparatus having a storage means and an arithmetic means to execute generation processing of a data string processing program for causing a network apparatus that receives a series of data strings including a plurality of data elements via a network to process the data string Because
The storage means stores a definition file in which item information including size information of each data element in the data string received by the network device is described according to the order of the data elements in the data string,
The compiler
A process in which the computing means refers to the definition file;
The definition file includes a program for the arithmetic means to process each data element in the data string in a predetermined size according to the order from the top of the data string as the data string processing program. Processing based on the description order of the item information of each data element and the size information of each data element in
A compiler that causes the information processing apparatus to execute.
前記演算手段に、
遷移関係が定められた、当該プログラムの状態と、当該各状態における処理コードとが定義されたプログラムであって、前記データ列内の前記サイズのデータを用いて、当該プログラムの現在の状態に応じた処理コードを実行し、前記遷移関係にしたがって、当該プログラムの状態を、前記データ列内における、前記データの次の前記サイズのデータを用いる次の状態に遷移させるプログラムを、前記データ列処理プログラムとして生成させることを特徴とするコンパイラ。 A compiler according to claim 9, wherein
In the calculation means,
A program in which the transition state is defined and the state of the program and the processing code in each state are defined, and according to the current state of the program using the data of the size in the data string A program for executing the processing code and transitioning the state of the program to the next state using the data of the size next to the data in the data string in accordance with the transition relation. A compiler characterized by generating as
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005224605A JP4741313B2 (en) | 2005-08-02 | 2005-08-02 | Program generation apparatus, program generation method, and compiler |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005224605A JP4741313B2 (en) | 2005-08-02 | 2005-08-02 | Program generation apparatus, program generation method, and compiler |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007041805A true JP2007041805A (en) | 2007-02-15 |
JP4741313B2 JP4741313B2 (en) | 2011-08-03 |
Family
ID=37799731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005224605A Expired - Fee Related JP4741313B2 (en) | 2005-08-02 | 2005-08-02 | Program generation apparatus, program generation method, and compiler |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4741313B2 (en) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773044A (en) * | 1993-09-02 | 1995-03-17 | Mitsubishi Electric Corp | Method and device for optimization compilation |
JPH07168772A (en) * | 1993-12-15 | 1995-07-04 | Oki Electric Ind Co Ltd | Encoding/decoding processing method for abstract syntax notation message |
JPH07271568A (en) * | 1994-03-31 | 1995-10-20 | Toshiba Corp | Program generator |
JPH09179729A (en) * | 1995-12-22 | 1997-07-11 | Mitsubishi Electric Corp | Automatic communication program generator, transaction communication equipment and transaction communication method |
JPH10240652A (en) * | 1997-02-26 | 1998-09-11 | Nec Corp | Message decoder and finite state machine generator |
JPH11134180A (en) * | 1997-10-27 | 1999-05-21 | Nec Corp | State transition drawing conversion device |
JP2005128888A (en) * | 2003-10-24 | 2005-05-19 | Hitachi Ltd | Command processor and method for controlling command processor |
-
2005
- 2005-08-02 JP JP2005224605A patent/JP4741313B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773044A (en) * | 1993-09-02 | 1995-03-17 | Mitsubishi Electric Corp | Method and device for optimization compilation |
JPH07168772A (en) * | 1993-12-15 | 1995-07-04 | Oki Electric Ind Co Ltd | Encoding/decoding processing method for abstract syntax notation message |
JPH07271568A (en) * | 1994-03-31 | 1995-10-20 | Toshiba Corp | Program generator |
JPH09179729A (en) * | 1995-12-22 | 1997-07-11 | Mitsubishi Electric Corp | Automatic communication program generator, transaction communication equipment and transaction communication method |
JPH10240652A (en) * | 1997-02-26 | 1998-09-11 | Nec Corp | Message decoder and finite state machine generator |
JPH11134180A (en) * | 1997-10-27 | 1999-05-21 | Nec Corp | State transition drawing conversion device |
JP2005128888A (en) * | 2003-10-24 | 2005-05-19 | Hitachi Ltd | Command processor and method for controlling command processor |
Also Published As
Publication number | Publication date |
---|---|
JP4741313B2 (en) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9298437B2 (en) | Unrolling quantifications to control in-degree and/or out-degree of automaton | |
US9916145B2 (en) | Utilizing special purpose elements to implement a FSM | |
JP4615827B2 (en) | Method for compressing a structured description of a document | |
EP0219993A2 (en) | System for generating software source code components | |
US20070079299A1 (en) | Method, apparatus and program storage device for representing eclipse modeling framework (EMF) ecore models in textual form | |
JP2006252557A (en) | Method and system for managing development object for computer program code | |
JP2006085740A (en) | Application software configuration method | |
JP2005018777A (en) | Common query runtime system and application programming interface | |
JP2004178602A (en) | Method for importing and exporting hierarchized data, and computer-readable medium | |
US20060253430A1 (en) | Method and apparatus for approximate projection of XML documents | |
US20050192929A1 (en) | Generation and conversion of object that provide for efficient object modification | |
KR100500245B1 (en) | Storage Medium Having Object-Oriented Program | |
JP4741313B2 (en) | Program generation apparatus, program generation method, and compiler | |
CN105793842B (en) | Conversion method and device between serialized message | |
CN116028062A (en) | Target code generation method, NPU instruction display method and device | |
US20060253833A1 (en) | System and method for efficient hosting of wireless applications by encoding application component definitions | |
CN101151612A (en) | Method of and system for providing random access to a document | |
Xu et al. | Implementation Method and Code Reuse and Maintenance Mechanism of a RISC-V Lightweight Code Library | |
CN118550519B (en) | Multi-mode network back-end compiling method and system | |
US7941452B2 (en) | Apparatus and method for efficient encoding of application definition using contiguous arrays | |
CN115167860A (en) | Method for converting and optimizing program code between different program languages | |
CA2543881C (en) | Method and system for efficient encoding of application definition using contiguous arrays | |
KR20020032889A (en) | A Method for Analysing a Call-Hierarchy among JAVA Classes | |
CN116149629A (en) | Method and device for editing code | |
JP2004334848A (en) | Method and device for compiling two-level morphology rule |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070808 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100921 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101115 |
|
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: 20110426 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110506 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 4741313 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140513 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |