JP2020532812A - データ処理のための改良された方法 - Google Patents

データ処理のための改良された方法 Download PDF

Info

Publication number
JP2020532812A
JP2020532812A JP2020533371A JP2020533371A JP2020532812A JP 2020532812 A JP2020532812 A JP 2020532812A JP 2020533371 A JP2020533371 A JP 2020533371A JP 2020533371 A JP2020533371 A JP 2020533371A JP 2020532812 A JP2020532812 A JP 2020532812A
Authority
JP
Japan
Prior art keywords
memory
data processing
zmi
memory area
obj
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.)
Pending
Application number
JP2020533371A
Other languages
English (en)
Inventor
ハレド・マーレイ
チュン・ドゥン・グェン
ジュリアン・シュミット
ピエール−エマニュエル・ベルナール
Original Assignee
ヴェソラ
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 ヴェソラ filed Critical ヴェソラ
Publication of JP2020532812A publication Critical patent/JP2020532812A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

データ処理のための方法。本方法は、コンピュータ手段によって実装され、かつ、- データ処理の複数のオブジェクト(OBJ)に対して、データ処理における上記オブジェクト(OBJ)の使用を定義するデータ処理のコンピュータコード(COD)の解析を行うステップと、- コンピュータコード(COD)の解析に応じて、データ処理の間に、各メモリ領域がスタック方式で動作するように、データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域(ZMi,j)の1つに割り当てるステップとを含む。

Description

本発明の分野は、コンピュータ手段によって実行されるデジタルデータの処理に関し、より詳細には、これとの関連で必要とされるメモリ管理に関する。
周知のように、情報技術において、用語「割当て」は、メモリ内の位置を、非常に複雑かつ大サイズであり得る変数またはオブジェクトのそこへの記憶のために確保するための仕組みを表す。割当ての対応語である、割当て解除は、割当てメモリが解放される仕組みである。
メモリへのデータ処理オブジェクトの割当てを管理するために現在使用されている原則の中で、スタック割当てとしても知られている、スタックへの割当ての原則を挙げ得る。この原則は、先頭の利用可能なメモリアドレスを指定するポインタの使用に基づく。メモリに割り当てられるオブジェクトは続いてこのアドレスに記憶され、そしてポインタは、このメモリアドレスおよび割当オブジェクトのサイズに基づいて更新される。
この割当て原則は、それが実装しやすく、したがって高性能を有するので、特に有用であるが、それは、割当て解除が割当てと対称であることを必要とする。言い換えれば、所与の時点でメモリに存在するオブジェクトの中で、最後に作成されたオブジェクトが最初に破棄されるものでなければならない。この動作は「後入れ先出し」の略語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 メモリ領域

Claims (11)

  1. データ処理を実行するための方法であって、コンピュータ手段によって実装され、かつ、
    - 前記データ処理の複数のオブジェクト(OBJ)に対して、前記データ処理における前記オブジェクト(OBJ)の使用を定義する前記データ処理のコンピュータコード(COD)の解析を行うステップと、
    - 前記コンピュータコード(COD)の前記解析に基づいて、前記データ処理の間に、各メモリ領域(ZMi,j)がスタック動作を呈するような仕方で、前記データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクトを複数のメモリ領域(ZMi,j)の1つに割り当てるステップと
    を含む、方法。
  2. 少なくとも2つのメモリ領域(ZMi,j)が同じメモリエンティティ(EM1、EM2)のそれぞれ別々の領域を形成する、請求項1に記載の方法。
  3. 前記2つのメモリ領域(ZMi,j)が、前記メモリエンティティ(EM)のそれぞれの反対端によって定義されるそれぞれの開始位置を有する、請求項2に記載の方法。
  4. 前記2つのメモリ領域(ZMi,j)の各々が、前記メモリ領域の第1の空き空間に向けて指し示すように構成されるポインタ(Pi,j)と関連付けられ、前記2つのメモリ領域の各々の前記ポインタ(Pi,j)が、前記メモリ領域にオブジェクトが構築される場合に他方の前記メモリ領域の前記ポインタ(Pi,j)に近づくように構成される、請求項2または3に記載の方法。
  5. 少なくとも2つのメモリ領域(ZMi,j)が異なるメモリエンティティ(EMi)に属する、請求項1から4のいずれか一項に記載の方法。
  6. 前記コンピュータコードの解析を行うステップが、前記オブジェクトの一部または全部の各オブジェクト(OBJ)に対して、前記データ処理における前記オブジェクト(OBJ)の前記使用の開始および終了を決定するステップを含み、前記オブジェクト(OBJ)の前記使用の前記開始および終了に基づいて、前記対応するメモリ領域への前記オブジェクトの前記割り当てが実施される、請求項1から5のいずれか一項に記載の方法。
  7. 少なくとも1つのオブジェクトに対して、前記オブジェクトが、前記複数のメモリ領域の中から1つのメモリ領域(ZMi,j)を表す前記オブジェクトの定義パラメータの値に基づいて前記対応するメモリ領域に割り当てられ、前記値が、前記コンピュータコードの前記解析前に前記コードに記録される、請求項1から6のいずれか一項に記載の方法。
  8. 前記データ処理の間に実行される1つまたは複数の実行可能ファイルの制作のために前記コンピュータコード(COD)をコンパイルするステップを更に含み、コンパイルする前記ステップが、少なくとも1つのオブジェクトに対して、前記実行可能ファイルの制作のために前記コンピュータコードに基づいて生成される変換コンピュータコードに、前記オブジェクト(OBJ)の前記使用の前記終了時に直ちに前記対応するメモリ領域(ZMi,j)の前記オブジェクト(OBJ)を破棄するように構成されるデストラクタの呼出しを挿入するステップを含む、請求項1から7のいずれか一項に記載の方法。
  9. 少なくとも1つのオブジェクト(OBJ)に対して、前記オブジェクトが、メモリ領域(ZMi,j)における前記オブジェクトのサイズが分からない時点で前記メモリ領域に割り当てられる、請求項1から8のいずれか一項に記載の方法。
  10. 命令がプロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法を実装するための命令を含むコンピュータプログラム。
  11. データ処理の実行のために使用されるように構成される装置(DIS)であって、
    - 前記データ処理の複数のオブジェクト(OBJ)に対して、前記データ処理における前記オブジェクトの使用を定義する前記データ処理のコンピュータコード(COD)の解析を行い、
    - 前記コンピュータコードの前記解析に基づいて、各メモリ領域(ZMi,j)がスタック動作を呈するような仕方で、前記データ処理の間に対応するメモリ領域における各オブジェクトの構築および次いで破棄のために各オブジェクト(OBJ)をメモリモジュール(MM)の複数のメモリ領域(ZMi,j)の1つに割り当てる
    ように構成される解析モジュール(ANA)を備える、装置。
JP2020533371A 2017-09-04 2018-09-03 データ処理のための改良された方法 Pending JP2020532812A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1758134 2017-09-04
FR1758134A FR3070775B1 (fr) 2017-09-04 2017-09-04 Allocation dynamique utilisant plusieurs piles
PCT/FR2018/052140 WO2019043345A1 (fr) 2017-09-04 2018-09-03 Procédé amélioré pour le traitement de données

Publications (1)

Publication Number Publication Date
JP2020532812A true JP2020532812A (ja) 2020-11-12

Family

ID=60627768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020533371A Pending JP2020532812A (ja) 2017-09-04 2018-09-03 データ処理のための改良された方法

Country Status (7)

Country Link
US (1) US11341054B2 (ja)
EP (1) EP3679476B1 (ja)
JP (1) JP2020532812A (ja)
KR (1) KR20200061355A (ja)
CN (1) CN111316249B (ja)
FR (1) FR3070775B1 (ja)
WO (1) WO2019043345A1 (ja)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2785695B1 (fr) * 1998-11-06 2003-01-31 Bull Cp8 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants
US6381738B1 (en) * 1999-07-16 2002-04-30 International Business Machines Corporation Method for optimizing creation and destruction of objects in computer programs
EP1383044A1 (en) * 2001-03-26 2004-01-21 Kansai Technology Licensing Organization Co., Ltd. Function executing method, function executing device, computer program and recording medium
US20020174316A1 (en) * 2001-05-18 2002-11-21 Telgen Corporation Dynamic resource management and allocation in a distributed processing device
DE60331823D1 (de) 2003-07-14 2010-05-06 Em Microelectronic Marin Sa Schaltkreis für einen Mehrzwecktransponder und Verfahren zur Speicherverwaltung desselben
US7263532B2 (en) * 2003-09-23 2007-08-28 Microsoft Corporation Region-based memory management for object-oriented programs
US7376768B1 (en) * 2003-12-19 2008-05-20 Sonic Solutions, Inc. Dynamic memory allocation for multiple targets
GB2411494B (en) * 2004-02-27 2006-04-12 Toshiba Res Europ Ltd Protocol stack with modification facility
US7478376B2 (en) * 2004-12-02 2009-01-13 International Business Machines Corporation Computer program code size partitioning method for multiple memory multi-processing systems
US7478224B2 (en) * 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
WO2007138602A2 (en) * 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
CN101499956B (zh) * 2008-01-31 2012-10-10 中兴通讯股份有限公司 分级缓冲区管理系统及方法
US20090282206A1 (en) * 2008-05-12 2009-11-12 International Business Machines Corporation Method for Resolving Memory Leak Problems Resulting from Loitering Objects
JP2013514569A (ja) * 2009-12-18 2013-04-25 シダンスク ユニバーシティ 静的に型付けされたクラスベースのオブジェクト指向ソフトウェアのノンブロッキング動的更新の方法、コンピュータ・プログラム製品、およびシステム
US8997040B2 (en) * 2010-03-24 2015-03-31 Microsoft Technology Licensing, Llc Variable closure
CN102622321B (zh) * 2011-01-28 2015-06-17 炬芯(珠海)科技有限公司 一种数据处理设备及其数据传输方法
US8862640B2 (en) * 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
FR2974919B1 (fr) 2011-05-04 2013-12-13 St Microelectronics Rousset Protection d'une memoire volatile contre des virus par changement d'instructions
US9411715B2 (en) * 2012-12-12 2016-08-09 Nvidia Corporation System, method, and computer program product for optimizing the management of thread stack memory
US9189214B2 (en) * 2013-10-30 2015-11-17 International Business Machines Corporation Code stack management
GB2518912B (en) * 2014-01-17 2015-08-26 Imagination Tech Ltd Stack pointer value prediction
GB2518022B (en) * 2014-01-17 2015-09-23 Imagination Tech Ltd Stack saved variable value prediction
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking

Also Published As

Publication number Publication date
US20200409853A1 (en) 2020-12-31
FR3070775B1 (fr) 2019-08-23
WO2019043345A1 (fr) 2019-03-07
EP3679476C0 (fr) 2024-08-07
CN111316249B (zh) 2023-09-29
FR3070775A1 (fr) 2019-03-08
EP3679476B1 (fr) 2024-08-07
US11341054B2 (en) 2022-05-24
EP3679476A1 (fr) 2020-07-15
KR20200061355A (ko) 2020-06-02
CN111316249A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
US11010681B2 (en) Distributed computing system, and data transmission method and apparatus in distributed computing system
CN111831287B (zh) 用于确定执行代码段所需的资源的方法、设备和程序产品
EP3285170B1 (en) Application profiling job management system, program, and method
US8949805B2 (en) Processing method
US20070169042A1 (en) Object-oriented, parallel language, method of programming and multi-processor computer
CN109828759B (zh) 代码编译方法、装置、计算机装置及存储介质
JP2007531946A (ja) データ処理装置におけるデータ整合性
KR102114245B1 (ko) 그래픽스 상태 관리 장치 및 방법
JP2018028777A (ja) エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム
CN114691188A (zh) 兼容性评估方法、装置、设备及存储介质
EP3441883B1 (en) Function serialization for inter-thread messaging
US10496433B2 (en) Modification of context saving functions
US8769498B2 (en) Warning of register and storage area assignment errors
CN110275706A (zh) 程序发布和加载方法、装置、计算机系统及可读存储介质
CN113407343A (zh) 一种基于资源分配的业务处理方法、装置及设备
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
JP2020532812A (ja) データ処理のための改良された方法
CN115437619A (zh) iOS分类属性的添加方法和装置、电子设备及存储介质
CN114168151B (zh) 基于容器的程序编译方法、装置、电子设备及存储介质
CN110333870B (zh) Simulink模型变量分配的处理方法、装置及设备
CN111221787A (zh) 一种文件处理方法及装置
US7958330B2 (en) Compiler program, compiler program recording medium, compile method, and program processing system
CN109923527B (zh) 可变类型建立器
US20210055971A1 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device
CN111061538A (zh) 一种多Lua虚拟机内存优化方法及其系统