(57)【要約】  データ処理のための方法。  本方法は、コンピュータ手段によって実装され、かつ、  -  データ処理の複数のオブジェクト(OBJ)に対して、データ処理における上記オブジェクト(OBJ)の使用を定義するデータ処理のコンピュータコード(COD)の解析を行うステップと、  -  コンピュータコード(COD)の解析に応じて、データ処理の間に、各メモリ領域がスタック方式で動作するように、データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域(ZMi,j)の1つに割り当てるステップとを含む。
2020532812.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を実行するための方法であって、コンピュータ手段によって実装され、かつ、
-  前記データ処理の複数のオブジェクト(OBJ)に対して、前記データ処理における前記オブジェクト(OBJ)の使用を定義する前記データ処理のコンピュータコード(COD)の解析を行うステップと、
-  前記コンピュータコード(COD)の前記解析に基づいて、前記データ処理の間に、各メモリ領域(ZMi,j)がスタック動作を呈するような仕方で、前記データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域(ZMi,j)の1つに割り当てるステップと
を含む、方法。
【請求項２】
少なくとも2つのメモリ領域(ZMi,j)が同じメモリエンティティ(EM1、EM2)のそれぞれ別々の領域を形成する、請求項1に記載の方法。
【請求項３】
前記2つのメモリ領域(ZMi,j)が、前記メモリエンティティ(EM)のそれぞれの反対端によって定義されるそれぞれの開始位置を有する、請求項2に記載の方法。
【請求項４】
前記2つのメモリ領域(ZMi,j)の各々が、前記メモリ領域の第1の空き空間に向けて指し示すように構成されるポインタ(Pi,j)と関連付けられ、前記2つのメモリ領域の各々の前記ポインタ(Pi,j)が、前記メモリ領域にオブジェクトが構築される場合に他方の前記メモリ領域の前記ポインタ(Pi,j)に近づくように構成される、請求項2または3に記載の方法。
【請求項５】
少なくとも2つのメモリ領域(ZMi,j)が異なるメモリエンティティ(EMi)に属する、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記コンピュータコードの解析を行うステップが、前記オブジェクトの一部または全部の各オブジェクト(OBJ)に対して、前記データ処理における前記オブジェクト(OBJ)の前記使用の開始および終了を決定するステップを含み、前記オブジェクト(OBJ)の前記使用の前記開始および終了に基づいて、前記対応するメモリ領域への前記オブジェクトの前記割り当てが実施される、請求項1から5のいずれか一項に記載の方法。
【請求項７】
少なくとも1つのオブジェクトに対して、前記オブジェクトが、前記複数のメモリ領域の中から1つのメモリ領域(ZMi,j)を表す前記オブジェクトの定義パラメータの値に基づいて前記対応するメモリ領域に割り当てられ、前記値が、前記コンピュータコードの前記解析前に前記コードに記録される、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記データ処理の間に実行される1つまたは複数の実行可能ファイルの制作のために前記コンピュータコード(COD)をコンパイルするステップを更に含み、コンパイルする前記ステップが、少なくとも1つのオブジェクトに対して、前記実行可能ファイルの制作のために前記コンピュータコードに基づいて生成される変換コンピュータコードに、前記オブジェクト(OBJ)の前記使用の前記終了時に直ちに前記対応するメモリ領域(ZMi,j)の前記オブジェクト(OBJ)を破棄するように構成されるデストラクタの呼出しを挿入するステップを含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
少なくとも1つのオブジェクト(OBJ)に対して、前記オブジェクトが、メモリ領域(ZMi,j)における前記オブジェクトのサイズが分からない時点で前記メモリ領域に割り当てられる、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
命令がプロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法を実装するための命令を含むコンピュータプログラム。
【請求項１１】
データ処理の実行のために使用されるように構成される装置(DIS)であって、
-  前記データ処理の複数のオブジェクト(OBJ)に対して、前記データ処理における前記オブジェクトの使用を定義する前記データ処理のコンピュータコード(COD)の解析を行い、
-  前記コンピュータコードの前記解析に基づいて、各メモリ領域(ZMi,j)がスタック動作を呈するような仕方で、前記データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクト(OBJ)をメモリモジュール(MM)の複数のメモリ領域(ZMi,j)の1つに割り当てる
ように構成される解析モジュール(ANA)を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、コンピュータ手段によって実行されるデジタルデータの処理に関し、より詳細には、これとの関連で必要とされるメモリ管理に関する。
【背景技術】
【０００２】
周知のように、情報技術において、用語「割当て」は、メモリ内の位置を、非常に複雑かつ大サイズであり得る変数またはオブジェクトのそこへの記憶のために確保するための仕組みを表す。割当ての対応語である、割当て解除は、割当てメモリが解放される仕組みである。
【０００３】
メモリへのデータ処理オブジェクトの割当てを管理するために現在使用されている原則の中で、スタック割当てとしても知られている、スタックへの割当ての原則を挙げ得る。この原則は、先頭の利用可能なメモリアドレスを指定するポインタの使用に基づく。メモリに割り当てられるオブジェクトは続いてこのアドレスに記憶され、そしてポインタは、このメモリアドレスおよび割当オブジェクトのサイズに基づいて更新される。
【０００４】
この割当て原則は、それが実装しやすく、したがって高性能を有するので、特に有用であるが、それは、割当て解除が割当てと対称であることを必要とする。言い換えれば、所与の時点でメモリに存在するオブジェクトの中で、最後に作成されたオブジェクトが最初に破棄されるものでなければならない。この動作は「後入れ先出し」の略語LIFOによって知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非常に多くの用途で、データ処理の異なるオブジェクトが広く様々な使用法を有するので、それらは、メモリのスタック動作に対応する割当ておよび割当て解除にかろうじてかつ/またはより低能力で適合できるだけである。結果的に、データ処理のために必要とされるメモリ管理の原則は通常、一層複雑でなければならない。
【０００６】
本発明は、この課題を解決するものである。
【課題を解決するための手段】
【０００７】
このために、本発明は、データ処理を実行するための方法であって、コンピュータ手段によって実装され、かつ、
-  データ処理の複数のオブジェクトに対して、データ処理における上記オブジェクトの使用を定義するデータ処理のコンピュータコードの解析を行うステップと、
-  コンピュータコードの解析に基づいて、データ処理の間に、各メモリ領域がスタック動作を呈するような仕方で、データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域の1つに割り当てるステップと
を含む、方法に関する。
【０００８】
本発明の一態様によれば、少なくとも2つのメモリ領域が同じメモリエンティティの別々の領域を形成する。
【０００９】
本発明の一態様によれば、2つのメモリ領域は、メモリエンティティのそれぞれの反対端によって定義されるそれぞれの開始位置を有する。
【００１０】
本発明の一態様によれば、2つのメモリ領域の各々は、当該メモリ領域の第1の空き空間に向けて指し示すように構成されるポインタと関連付けられ、2つのメモリ領域の各々のポインタが、当該メモリ領域におけるオブジェクトの構築のために他方のメモリ領域のポインタに近づくように構成される。
【００１１】
本発明の一態様によれば、少なくとも2つの領域が異なるメモリエンティティに属する。
【００１２】
本発明の一態様によれば、コンピュータコードの解析を行うステップは、オブジェクトの一部または全部の各オブジェクトに対して、データ処理におけるオブジェクトの使用の開始および終了を決定するステップを含み、オブジェクトの使用の開始および終了に基づいて、対応するメモリ領域へのオブジェクトの割当てが実施される。
【００１３】
本発明の一態様によれば、少なくとも1つのオブジェクトに対して、上記オブジェクトは、複数のメモリ領域の中から1つのメモリ領域を表す上記オブジェクトの定義パラメータの値に基づいて対応するメモリ領域に割り当てられ、上記値は、コンピュータコードの解析前に上記コードに記録される。
【００１４】
本発明の一態様によれば、本方法は、データ処理の間に実行される1つまたは複数の実行可能ファイルの制作のためにコンピュータコードをコンパイルするステップを更に含み、コンパイルするステップは、少なくとも1つのオブジェクトに対して、実行可能ファイルの制作のために上記コンピュータコードに基づいて生成される変換コンピュータコードに、上記オブジェクトの使用の終了時に直ちに対応するメモリ領域の上記オブジェクトを破棄するように構成されるデストラクタの呼出しを挿入するステップを含む。
【００１５】
本発明の一態様によれば、少なくとも1つのオブジェクトに対して、オブジェクトは、メモリ領域におけるオブジェクトのサイズが分からない時点でメモリ領域に割り当てられる。
【００１６】
本発明は、命令がプロセッサによって実行されると以上定義した方法を実装するための命令を含むコンピュータプログラムにも関する。
【００１７】
本発明は、データ処理の実行のために使用されるように構成される装置であって、
-  データ処理の複数のオブジェクトに対して、データ処理における上記オブジェクトの使用を定義するデータ処理のコンピュータコードの解析を行い、
-  コンピュータコードの解析に基づいて、データ処理の間に、メモリモジュールの各メモリ領域がスタック動作を呈するような仕方で、データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域の1つに割り当てる
ように構成される解析モジュールを備える、装置にも関する。
【００１８】
本発明は、添付の図を参照しつつ、単に例として提供される、以下の詳細な説明の熟読からより完全に理解されるであろう。
【図面の簡単な説明】
【００１９】
【図１】本発明に係る装置を示す図である。
【図２】図1の装置のメモリモジュールを示す図である。
【図３】本発明に係る方法を示すブロック図である。
【図４】本発明との関連で複数のオブジェクトの使用の開始および終了を示す図である。
【図５】本発明の意味での代替構成を示す図である。
【発明を実施するための形態】
【００２０】
図1は、本発明に係る装置DISを示す。
【００２１】
装置DISは、少なくともデータ処理の実行のために使用されるように構成される。
【００２２】
本発明との関連では、装置DISの2つの構成が提供される。
【００２３】
第1の構成との関連では、装置DISはデータ処理の実際の実装のために適合される。
【００２４】
第2の構成との関連では、装置DISはデータ処理の準備に使用され、その実際の実装は、装置DISと別である第2の装置によって行われる。
【００２５】
これは以下に詳細に記載される。
【００２６】
一般則として、装置DISはコンピュータ装置であり、データ処理に関与するデータはデジタルデータである。
【００２７】
データ処理のデータは任意の種類の内容に関する。例えば、それらは、第1の電子機器によって第2の電子機器に送られる情報を表現する。
【００２８】
データ処理は、データ処理のデータの一部を形成するオブジェクトOBJの操作を含む。これらのオブジェクトがデータ処理の任意の段階で使用されてよく、かつデータ処理のより長いもしくは短い部分の間またはデータ処理の期間の全体にわたってさえ存在してよいことが留意されるべきである。
【００２９】
例えば、オブジェクトOBJは、データ処理において通例見られるオブジェクトの種類の中からの任意の種類である。
【００３０】
例えば、各オブジェクトOBJは、少なくとも数、行列、一覧または一連の文字を含む群の中からの1つの要素に対応する。
【００３１】
装置の第1の構成との関連では、装置DISは、通信モジュールCOM、メモリモジュールMMおよび処理モジュールTRAを備える。それは解析モジュールANAも備える。
【００３２】
これらの要素は、例えばそれらが接続される1つまたは複数のバスを用いて互いと通信状態にある。
【００３３】
通信モジュールCOMは、装置DISと他の機器との間の通信を可能にするように構成される。例えば、このモジュールは、データ処理の開始時に使用されるデータの装置DISによる受信のために構成される。
【００３４】
有利には、このモジュールCOMは、このデータ処理から生じるデータを装置DISから離れた装置に供給するためにも提供される。
【００３５】
通信モジュールCOMは、1つまたは複数の周知の技術を使用する通信のために適合される。
【００３６】
有利には、通信モジュールCOMは無線通信のために適合される。例えば、それは、3G、4G、5G等などの移動電話に使用される1つもしくは複数の標準技術、1つもしくは複数の近距離通信技術、ならびに/またはZigBee、RFID、WiFiおよび他の技術の中からの1つもしくは複数の技術に基づく無線通信のために適合される。
【００３７】
代替的または追加的に、通信モジュールCOMは、無線電気通信と対照的に、有線通信のために適合される。例えば、それは、通信モジュールを有線で遠隔機器に接続するための1つまたは複数のソケットを備える。
【００３８】
ユニバーサルシリアルバスを表す、USBモジュールなどの着脱可能なデータ媒体を介する任意の形態の通信が明らかに可能である。
【００３９】
メモリモジュールMMは、概してデータ記憶のために適合される。
【００４０】
本発明との関連では、メモリモジュールMMは特に、データ処理の異なる段階でデータ処理のデータ、特にオブジェクトOBJを記憶するために適合される。
【００４１】
メモリモジュールMMは、データ処理の実行のためにも装置DISの定型動作のためにも、装置DISの正しい動作のために必要とされるプログラムを記憶するためにも適合される。
【００４２】
特に、メモリモジュールMMは、命令が処理モジュールTRAなどのプロセッサによって実行されると、下記される本発明に係る本方法を実装するための命令を含む、本発明に係るプログラムPRGを記憶するために適合される。
【００４３】
メモリモジュールMMは、データ処理を定義するコンピュータコードCODを記憶するためにも適合される。
【００４４】
コンピュータコードCODは、データ処理の1つまたは複数の一連の動作の定義を表現し、それとの関連で処理のオブジェクトOBJが操作される。
【００４５】
例えば、処理の各オブジェクトOBJに対して、コンピュータコードCODは、このオブジェクトの使用と共に、当該オブジェクトOBJの定義を含む。この使用は開始および終了を有する。
【００４６】
この定義および/またはこの使用がコンピュータコードCOD内で必ずしも明示的であるわけではないことが留意されるべきである。言い換えれば、定義および使用は、明示的な形態でそこに存在することなくコンピュータコードから生じてよい。
【００４７】
しかしながら、この定義が典型的に、以下に記載される、コンピュータコードに基づいて生成される1つまたは複数の実行可能ファイルEXEC内で明示的にされることが留意されるべきである。
【００４８】
例えば、使用の開始は、コードCOD内のオブジェクトOBJの最初の出現によって定義される。使用の終了は、例えば、コードCOD内の当該のオブジェクトの最後の出現によって定義される。
【００４９】
当該の使用は、オブジェクトを作成する動作など、オブジェクトが操作される少なくとも1つの動作を含む。有利には、使用は、当該のオブジェクトを基礎とする新たなオブジェクトの生成を含む。
【００５０】
コードCODは、1つまたは複数のコンピュータ言語で書かれる。例えば、この言語は、C++言語などの周知の言語である。
【００５１】
実際には、コンピュータコードCODは、実施されるデータ処理の動作を完全にまたは部分的に定義する。このように、例えば、それは、処理の入力データの他に、これらのデータが処理の間に受ける一組の動作を定義する。
【００５２】
従来は、コンピュータコードCODは、1つまたは複数の実行可能ファイルEXECに変換されると意図され、処理モジュールTRAのものなどの1つまたは複数のプロセッサによるその実行は、データ処理の実装によって明示される。この変換動作はコンパイルという名前で知られている。
【００５３】
この変換は、コンピュータコードCODとしてのその初期形態と当該の実行可能ファイルEXECとの間のコードの中間状態を構成する1つまたは複数の形態のコードの存在によって明示される。以下に記載するように、これらの形態の1つには、例えば、変換されてもされなくてもよいバージョンのコードに加えて、解析モジュールANAによって追加される命令など、コードCODに追加される命令を含む。
【００５４】
メモリモジュールMMは少なくとも1つのメモリエンティティEMiを備え、ここでiはメモリエンティティにインデックスを付ける。
【００５５】
各メモリエンティティEMiは、処理のデータ、特にオブジェクトOBJを記憶するための連続メモリ空間を形成する。言い換えれば、各メモリエンティティ内で、メモリ空間を形成する異なるブロックの論理アドレスが互いに続く。
【００５６】
当該のメモリ空間は論理メモリ空間である。メモリ空間が複数の物理メモリ空間に対応してよいことが留意されるべきである。
【００５７】
周知のように、このメモリ空間は、データを含み、これらのデータを返し、そしてこれらのデータを破棄するように適合されるブロックを備え、それによって前に占有されたブロックを再び新たなデータのために利用可能にする。
【００５８】
これらの機能の基礎となる物理原則は、例えば、周知のものである。
【００５９】
一般則として、メモリエンティティは、例えば、周知のように形成されて任意の型である。有利には、しかしながら、メモリエンティティは、DRAM(ダイナミックランダムアクセスメモリを表す)などのランダムアクセスメモリ型のエンティティである。
【００６０】
それが空間的に局所化されたブロックの形態で図1および図2に示されるが、メモリモジュールMMは、それが備えるメモリエンティティの数および示される装置DISの異なる要素間のこれらのメモリエンティティの分散に関して任意の形態である。
【００６１】
例えば、これらのメモリエンティティの一部または全部が処理モジュールTRAに含まれる。
【００６２】
処理モジュールTRAは、装置DISの動作のために装置DISのその他の要素を制御するために構成される。
【００６３】
処理モジュールTRAは、特に、この処理の実装のためのデータ処理のデータへの動作を行うための命令を実行するために特に適合される1つまたは複数のプロセッサCPUiを備える。
【００６４】
有利には、モジュールTRAは複数のそのようなプロセッサを備える。プロセッサCPUiは、例えば、当業者に知られているように、プロセッサの1つがマスタプロセッサとして動作し、そしてその他がスレーブプロセッサとして動作する動作モードに従って動作するために適合される。
【００６５】
図2を参照しつつ、解析モジュールANAは、コンピュータコードCODを実行可能ファイルEXECに変換するために、メモリモジュールMMに含まれるそれを解析するために構成される。
【００６６】
より詳細には、モジュールANAは、少なくとも、コンピュータコードCODを解析し、そしてこのコードに基づいて、実際のデータ処理の実装のために実行されることになる実行可能ファイルを生成するために構成される。言い換えれば、解析モジュールANAはコンパイラとして構成される。例えば、それは周知の種類のコンパイラである。有利には、コンパイラはユーザ構成可能である。
【００６７】
本発明との関連では、解析モジュールANAは、コンピュータコードCODの解析に基づいて、データ処理のオブジェクトOBJの少なくとも一部を、メモリエンティティEMjにそれぞれ属する複数のメモリ領域ZMi,jの1つに割り当てるために構成される。
【００６８】
言い換えれば、解析モジュールANAは、コンパイルから生じるファイルの実行の間に、メモリエンティティEMjに設けられるそのようなメモリ領域ZMi,jにおいて、モジュールANAによる各オブジェクトOBJの構築-および、したがって破棄-が発生するであろうことを規定するために構成される。
【００６９】
追加的に、本発明との関連では、解析モジュールANAは、各メモリ領域ZMi,jがデータ処理の間にスタック動作を呈するような仕方で、当該のオブジェクトOBJをメモリ領域ZMi,jに割り当てるために構成される。
【００７０】
言い換えれば、実際のデータ処理の間に、モジュールANAによって実施される割当てのため、各ZMi,jはLIFO(後入れ先出しを表す)型の動作を呈する。
【００７１】
有利には、これは、データ処理の全てのオブジェクトOBJに対して事実である。
【００７２】
一部の実施形態において、少なくとも1つのオブジェクトOBJに対して、メモリ領域の1つへのその割当てが、このメモリ領域におけるオブジェクトOBJのサイズが分からない時点で実施されることが留意されるべきである。
【００７３】
解析モジュールANAによるオブジェクトOBJの割当ての詳細は、以下の本発明に係る方法の説明との関連で記載される。
【００７４】
少なくとも2つのこれらのメモリ領域ZMi,jがある。それらの正確な数は、例えば、事前に決定される。
【００７５】
スタック動作自体は知られている。この動作との関連では、各メモリ領域ZMi,jは、対応する領域における先頭の空きメモリブロックを表現するポインタPi,jと関連付けられており、先行するブロック、すなわちメモリ領域の開始メモリブロックとポインタによって指定されるこのブロックとの間に設けられるもの、がデータによって占有されている。
【００７６】
メモリ領域ZMi,jにオブジェクトが構築される場合、それは、オブジェクトのサイズに従って、ポインタによって指定されるメモリブロックおよび後続のメモリブロックに構築されており、ポインタは、新たな先頭の空きメモリブロックを指定するように更新される。
【００７７】
メモリ領域に最後に作成されたオブジェクトが破棄される場合、対応するメモリブロックは解放され、そしてポインタは、この破棄後にメモリ領域がない先頭の空きメモリブロックを指定するように更新される。
【００７８】
このように、スタックメモリの管理は、それが基本的に関連するポインタの管理に基づくので、特に単純である。
【００７９】
以上から明らかであるように、この場合の用語「割当て」は、オブジェクトOBJとメモリ領域ZMi,jとの間になされる関連付けを意味するとみなされ、結果として、データ処理の間に、このメモリ領域にオブジェクトOBJが構築されるという事実になる。本発明との関連では、この割当ては、実際のデータ処理の上流で解析モジュールANAによってなされる。
【００８０】
有利には、本発明との関連では、少なくとも2つのメモリ領域ZMi,jが同じメモリエンティティEMiの一部を形成する。言い換えれば、それらは同じメモリ空間の異なる領域に対応する。
【００８１】
有利には、また、これらのメモリ領域ZMi,jは、このメモリエンティティEMiの反対である端に対応するそれぞれの開始位置を有する。言い換えれば、メモリエンティティEMiが選ばれた進行方向の意味で最初のメモリブロックおよび最後のメモリブロックを有するとすると、これらの最初および最後のブロックは当該の2つのメモリ領域のそれぞれの開始点を形成する。
【００８２】
これらのメモリ領域の1つにオブジェクトが構築されるとき、関連するポインタの更新は、他方のメモリ領域のポインタに向けたこのポインタの移動によって明示される。
【００８３】
言い換えれば、埋めが発生する場合、これらのメモリ領域のポインタは反対のそれぞれの方向に移動し、その結果メモリ領域の1つにオブジェクトが作成されれば、それらは互いに接近する。
【００８４】
例えば、図2における参照指示ZM11およびZM21を有するメモリ領域はこのように構成される。
【００８５】
この構成は、必要とされるメモリ空間のサイズに関して特に有利である。
【００８６】
しかしながら、この構成は任意選択である。例えば、同じエンティティEMjのメモリ領域ZMi,jは、関連するメモリ領域にオブジェクトが構築される場合に同じ方向に移動するポインタPi,jを有する。
【００８７】
この構成では、図2におけるメモリ領域ZM22によって示されるように、メモリ領域の1つの開始点は端メモリブロックを形成しない。
【００８８】
解析モジュールANAが有利にはソフトウェアであることが留意されるべきである。
【００８９】
代替的または追加的に、解析モジュールANAはハードウェアである。
【００９０】
データ処理を実行するための本発明に係る方法がここで図、特に図3を参照しつつ詳細に記載されることになる。
【００９１】
初期ステップS0では、行われることになるデータ処理を定義するコンピュータコードCODが利用可能とされる。上記したように、この定義は、特にオブジェクトOBJに対して、部分的に黙示でよい。
【００９２】
このコンピュータコードCODは、例えば、コンピュータコードの一部もしくは全部を書いた1人もしくは複数の人物ならびに/または典型的に当該のコードを入力するためにおよび/もしくはコードの一部を生成するために使用される1つもしくは複数の電子機器を必要とする生成プロセスによって制作される。
【００９３】
ステップS1では、解析モジュールANAが、メモリ領域ZMi,jがデータ処理の実行の間にスタック方式で動作するような仕方で、コンピュータコードCODに反映されるデータ処理のオブジェクトOBJの少なくとも一部をそれらの領域の1つに割り当てるために、コンピュータコードCODを解析する。
【００９４】
有利には、データ処理の各オブジェクトOBJがこのようにメモリ領域ZMi,jの1つに割り当てられる。
【００９５】
所与の実施形態において、この割当てをするために、各オブジェクトOBJに対して、解析モジュールANAは、データ処理との関連で当該オブジェクトOBJの使用の開始および終了を決定する。
【００９６】
例えば、2つのオブジェクトAおよびBに対して、データ処理におけるそれらの使用が、以下に示される例示的なコードによって定義される:
void func()
{
OBJ A;            //creation of A
OBJ B;            //creation of B
<portion of code using A, B>
<portion of code using B>
}
【００９７】
例えば、図4に示される3つのオブジェクトA、B、Cに対するそれらのそれぞれの出現の時点t0A、tfA、t0B、tfB、t0CおよびtfCによって表されるオブジェクトの使用の開始および終了が、メモリ領域ZMi,jを各オブジェクトと関連付けるために使用される。
【００９８】
例えば、1つの構成では、この関連付けは、図4に示されるように、オブジェクトを、オブジェクトの使用が重複しないオブジェクトのグループに仕分けることによって制作される。
【００９９】
言い換えれば、各グループのオブジェクト内で、先に使用が終わるものをAとして、任意の一対のオブジェクトA、Bに対して、tfAがオブジェクトAの使用の終了を表しかつt0BがオブジェクトBの使用の開始を表すとして、関係tfA<t0Bが真である。
【０１００】
例えば、図4において、オブジェクトAおよびCが所与のグループに分類され、そして同じメモリ領域に割り当てられてよいが、オブジェクトBはオブジェクトAおよびCと分類できず、したがってオブジェクトAのまたはオブジェクトCのメモリ領域に割り当てできない。
【０１０１】
この動作が、明示的な日付の形態での使用の開始および終了の表現でなく、単に解析モジュールANAによるコードCODの解析の結果である、それらの出現の相対順序の決定を必要とすることが留意されるべきである。
【０１０２】
形成される各グループのオブジェクト、したがってグループの各オブジェクトは次いで、所与のメモリ領域ZMi,jと関連付けられる。
【０１０３】
仕分けプロセスが有利には、例えば仕分け様式の定義において構成可能であることが留意されるべきである。
【０１０４】
このように、例えば、複数のオブジェクトが同じグループに置かれるように適合されるが、同時にそこに存在できないとき、受け入れられることになるオブジェクトを選ぶための様式は1つまたは複数の所定の基準に従って適合される。
【０１０５】
例えば、所与の構成では、作成が最も早い時間のオブジェクトが選ばれる。
【０１０６】
代替の実施形態において、割当ては、コンピュータコードに含まれ、かつ解析モジュールANAによる解析前にそこに記録される情報に基づいて行われる。
【０１０７】
有利には、所与のオブジェクトOBJに対して、この情報は、複数の可能なメモリ領域の中から1つのメモリ領域ZMi,jを表す上記オブジェクトの定義パラメータの値を含んでおり、上記値は、解析モジュールANAによるコンピュータコードCODの解析前に上記コードに記録されている。
【０１０８】
言い換えれば、この構成では、その解析の瞬間に、コードCODは、メモリ領域ZMi,jの1つへのオブジェクトOBJの一部または全部の割当ての宣言を既に含む。
【０１０９】
2つの手法が両立することが留意されるべきである。このように、例えば、オブジェクトの一部に対して、割当てはコードに事前に記録され、そしてオブジェクトの残りに対して、割当ては、上記したようにオブジェクトの使用の開始および終了の解析によって決定される。
【０１１０】
割当てが決定されたとき、解析モジュールANAは、コードCODにおいて、または代替的に実行可能ファイルEXECへのコードの変換のステップから生じる変換コードにおいて割当ての結果を報告する。この報告のために、解析モジュールは、コードまたは変換コードに対応する情報を挿入するが、この情報はオブジェクトOBJが割り当てられるメモリ領域ZMi,jを表す。
【０１１１】
例えば、追加情報は、関連するメモリ領域ZMi,jの特徴を表す、コード内のまたは変換コード内のオブジェクトの定義の1つまたは複数のパラメータまたは属性の値の形態をとっており、この値またはこれらの値は次いで、それまたはそれらが実行可能ファイルに存在するようにコードの変換の異なるステップの間、保持される。
【０１１２】
有利には、ステップS2では、少なくとも1つのオブジェクトOBJに対して、解析モジュールANAが、コンピュータコードCODまたは変換コードへの、上記オブジェクトの使用の終了に直ちに対応してメモリ領域ZMi,jの上記オブジェクトの破棄を引き起こすために構成されるデストラクタの呼出しの挿入を実施する。
【０１１３】
有利には、この挿入の配置は、上記オブジェクトが操作される1つまたは複数の機能の範囲から独立している。この範囲は機能の使用に対応する。
【０１１４】
言い換えれば、このステップでは、解析モジュールANAは、関連するメモリ領域ZMi,jにおける当該オブジェクトの破棄の発生を、この破棄が、通常の場合のようにオブジェクトの使用が発生する機能の範囲の終了時にでなく、オブジェクトの使用の終了後に発生するように構成する。
【０１１５】
例えば、上記の例示的なコードを参照しつつ、オブジェクトAおよびBに対するこれらのデストラクタの挿入は次の通りに行われる:
void func()
{
OBJ A;            //creation of A
OBJ B;            //creation of B
<portion of code using A, B>
Destructor (A);
<portion of code using B>
Destructor (B);
}
【０１１６】
このステップが任意選択であることが留意されるべきである。
【０１１７】
代替的に、解析モジュールANAは、デストラクタが、オブジェクトの使用の終了を含む、オブジェクトを操作する機能の範囲の終了時に動作するようにする。
【０１１８】
ステップS3では、解析モジュールANAがコードCODのコンパイルを完了し、これは、実際のデータ処理の実行のための処理モジュールTRAによる実行可能ファイルEXECの生成によって明示される。
【０１１９】
このステップは、当業者に知られている1つまたは複数の動作を含んでよい。
【０１２０】
上記の方法の継続とみなされてよいステップS4では、データ処理が、処理モジュールTRAによる前ステップから生じるEXECファイルの実行を用いて実装される。
【０１２１】
この処理では、オブジェクトOBJは、これらのメモリ領域ZMi,jが実際のデータ処理の完了までスタック方式で動作するような仕方で、それらが前ステップで割り当てられたメモリ領域において連続して作成および破棄される。
【０１２２】
以上の説明は、第1の構成、すなわち装置DISがコンピュータコードCODをコンパイルするタスクも実際のデータ処理の実装のためにEXECファイルを実行するタスクも実施する構成のために提供された。
【０１２３】
第2の構成では、図5を参照しつつ、コンパイルの終了時に供給されるEXECファイルの実行から生じるデータ処理は、上記したようなメモリモジュールMMを備える第2の装置DIS2によって実施されており、装置DISは、第2の装置DIS2のメモリモジュールMMのメモリ領域ZMi,jへのオブジェクトOBJの割当てを行うように構成される。
【０１２４】
この構成では、装置DISは、他の機器、特に第2の装置DIS2と通信するために適合される。
【０１２５】
このために、それは通信モジュールCOM1を備える。この通信モジュールCOM1は、例えば、上記したモジュールCOMと類似している。
【０１２６】
装置DISは上記した解析モジュールANAも備え、これは、コンピュータコードCODを解析し、そしてこの解析に基づいて、この構成では、第2の装置に設けられるメモリモジュールMMの一部を形成するメモリ領域ZMi,jが実際のデータ処理の間に常にスタック動作に一致するような仕方で、オブジェクトOBJをこれらのメモリ領域ZMi,jの1つに割り当てるために提供される。
【０１２７】
追加的に、装置DISは、コンピュータコードCODを記憶するために、ならびに解析モジュールANAによるコードCODのコンパイルから生じるEXECファイルおよびコードCODとこれらのEXECファイルとの間の様々な中間ファイルを記憶するために構成されるメモリMEMを備える。メモリMEMは、プログラムPRGを記憶するためにも提供される。
【０１２８】
この第2の構成では、メモリMEMは、実際のデータ処理を実装する第2の装置DIS2によって操作されるオブジェクトOBJを含むとは意図されない。
【０１２９】
このメモリMEMは任意の構成を有することができる。特に、それは、単一の物理および/または論理メモリエンティティの形態をとってよい。一部の実施形態において、メモリMEMは、メモリモジュールMM(典型的に構造に関して同一)のそれと類似の構成を有してよい。
【０１３０】
装置DISは、命令を実行するために適合された、TRA1で表される、処理モジュールも備える。このモジュールTRA1は1つまたは複数のプロセッサを備える。実際には、この処理モジュールTRA1は、装置DISの正しい動作のためのメモリMEMに設けられるプログラムを実行するために提供される。
【０１３１】
その一部として、第2の装置DIS2は、それが実際のデータ処理を実装するために実行すると意図されるEXECファイルを受信するために他の機器、特に装置DISと通信するために適合される。
【０１３２】
それは、例えば、追加的に、データ処理から生じるデータを遠隔機器に供給するように提供される。
【０１３３】
このために、それは、例えば、上記した通信モジュールCOMに対応する通信モジュールCOM2を備える。
【０１３４】
上記したように、それは、コンピュータコードの解析に基づいて解析モジュールANAによってデータ処理のオブジェクトOBJが割り当てられるメモリ領域ZMi,jを備える、上記したメモリモジュールMMも備える。
【０１３５】
それは処理モジュールTRA2も備える。このモジュールは、有利には上記した処理モジュールTRAに対応する。
【０１３６】
第2の構成との関連では、本方法の進展は上記したものと類似しており、相違点は、コードCODを基礎としたEXECファイルの生成が装置DISを介して実装されること、および実際のデータ処理の実装のためのこれらのEXECファイルの実行が、EXECファイルが供給された第2の装置DIS2を介して実装されることである。
【０１３７】
言い換えれば、装置DISの解析モジュールANAは、装置DISのメモリMEMに設けられるコードCODを解析し、コードによって報告されるオブジェクトOBJを第2の装置DIS2のメモリモジュールMMの異なるメモリ領域ZMi,jに、それらがデータ処理の間にスタック方式で動作するように割り当て、そしてEXECファイルを生成する。
【０１３８】
これらのファイルは次いで、これらのファイルに基づいてデータ処理を実装する第2の装置に転送される。
【０１３９】
この処理の間に、解析モジュールによって割り当てられたメモリ領域ZMi,jに、メモリ領域ZMi,jがスタック方式で動作するような仕方でオブジェクトOBJが生成される。
【０１４０】
このように、これらの2つの可能な構成のため、メモリモジュールMMは、装置DISの要素か装置DIS以外の装置の要素かである。第1の構成では、モジュールMMは装置DISの一部を形成する。第2の構成では、それは、装置DISと別の装置DIS2の一部を形成する。
【０１４１】
本発明は幾つかの利点を有する。
【０１４２】
第一に、それは、スタック方式で動作するメモリ領域だけを備えるので、全体として、非常に簡略的に動作するメモリを有することを可能にする。
【０１４３】
追加的に、本発明は各種の環境および構成に特に適応しやすい。特に、本発明は、多種多様な処理モジュールTRAに、複雑さが非常に可変的であるデータに、および非常に異なるメモリモジュール構成に適合される。
【０１４４】
最後に、それはコンピュータ装置の部品の置換を、またはそれらに大きな変更をすることを必要としないので、それは既存の装置に応用しやすい。
【符号の説明】
【０１４５】
ANA  解析モジュール
COD  コンピュータコード
COM  通信モジュール
COM1  通信モジュール
COM2  通信モジュール
CPUi  プロセッサ
DIS  装置
DIS2  第2の装置
EMi  メモリエンティティ
EMj  メモリエンティティ
EXEC  実行可能ファイル
MEM  メモリ
MM  メモリモジュール
OBJ  オブジェクト
Pi,j  ポインタ
PRG  プログラム
TRA  処理モジュール
TRA1  処理モジュール
TRA2  処理モジュール
ZMi,j  メモリ領域
【図１】
2020532812.tif 000003
【図２】
2020532812.tif 000004
【図３】
2020532812.tif 000005
【図４】
2020532812.tif 000006
【図５】
2020532812.tif 000007
【国際調査報告】
2020532812.tif 000008
2020532812.tif 000009
2020532812.tif 000010
2020532812.tif 000011