CN111316249B - 改进的数据处理方法 - Google Patents
改进的数据处理方法 Download PDFInfo
- Publication number
- CN111316249B CN111316249B CN201880066902.1A CN201880066902A CN111316249B CN 111316249 B CN111316249 B CN 111316249B CN 201880066902 A CN201880066902 A CN 201880066902A CN 111316249 B CN111316249 B CN 111316249B
- Authority
- CN
- China
- Prior art keywords
- memory
- data processing
- zmi
- computer code
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Abstract
数据处理方法。所述方法由计算机手段实施且包括:‑对于所述数据处理的多个对象(OBJ),执行所述数据处理的计算机代码(COD)的分析,所述计算机代码(COD)限定所述数据处理中所述对象(OBJ)的使用,‑基于所述计算机代码(COD)的所述分析,将每一对象分配到多个存储器区域(ZMi,j)中的一个用于所述数据处理期间相应存储器区域中的每一对象的构建及随后析构,使得在所述数据处理期间,每一存储器区域展现堆栈操作。
Description
技术领域
本发明领域涉及由计算机手段执行的数字数据的处理,且更具体地说涉及在此背景下所需的存储器管理。
背景技术
以已知方式,在信息技术中,术语“分配”表示用于在存储器中保留位置用于在其中存储可能极其复杂且具有较大大小的变量或对象的机制。分配的对应词-解除分配-是借以释放所分配存储器的机制。
在当前用于管控数据处理对象到存储器的分配的原理当中,可以提及到堆栈的分配原理,也被称为堆栈分配。此原理是基于使用指定第一可用存储器地址的指针。被分配到存储器的对象随后被存储在此地址处,且基于存储器地址和所分配对象的大小更新指针。
此分配原理特别有用,因为其实施起来较简单且因此具有高性能,但其需要解除分配与分配对称。换句话说,在给定时刻存在于存储器中的对象当中,所创建的最后一个对象必须第一个被破坏。此操作的缩写为LIFO,即“后进先出”。
在非常多的应用中,因为不同的数据处理对象具有广泛不同的用途,所以使它们适于对应于存储器的堆栈操作的分配和解除分配较困难和/或性能较低。因此,数据处理所需的存储器管理的原理通常不得不增加复杂性。
本发明既定解决此问题。
发明内容
为此目的,本发明涉及一种用于执行数据处理的方法,所述方法由计算机手段实施且包括:
-针对数据处理的多个对象,执行数据处理的计算机代码的分析,计算机代码限定所述对象在数据处理中的使用,
-基于计算机代码的分析,将每一对象分配到多个存储器区域中的一个用于数据处理期间相应存储器区域中的每一对象的构建及随后析构,使得在数据处理期间,每一存储器区域展现堆栈操作。
根据本发明的一方面,至少两个存储器区域形成相同存储器实体的单独区域。
根据本发明的一方面,所述两个存储器区域具有由存储器实体的相应相对末端限定的相应开始位置。
根据本发明的一方面,所述两个存储器区域中的每一个与被配置成指向所涉及存储器区域的第一空闲空间的指针相关联,所述两个存储器区域中的每一个的所述指针被配置成移动为更靠近另一存储器区域的指针用于所涉及存储器区域中对象的构建。
根据本发明的一方面,至少两个区域属于不同存储器实体。
根据本发明的一方面,执行计算机代码的分析包含:针对所述对象中的一些或全部的每一对象,确定数据处理中所述对象的使用的开始和结束,基于所述对象的使用的开始和结束来实行对象到相应存储器区域的分配。
根据本发明的一方面,针对至少一个对象,基于表示来自所述多个存储器区域的一个存储器区域的所述对象的限定参数的值将所述对象分配到相应存储器区域,所述值在计算机代码的分析之前记录于所述代码中。
根据本发明的一方面,所述方法进一步包括编译用于产生在数据处理期间执行的一个或多个可执行文件的计算机代码,所述编译包括:针对至少一个对象,将析构函数的调用插入到基于用于产生所述一个或多个可执行文件的所述计算机代码生成的经变换计算机代码中,所述析构函数被配置成在所述对象的使用的结束处立即破坏相应存储器区域的所述对象。
根据本发明的一方面,针对至少一个对象,在存储器区域中的对象的大小并非已知的时刻将对象分配到存储器区域。
本发明还涉及一种计算机程序,其包括指令,当这些指令由处理器执行时所述指令用于实施如上文限定的方法。
本发明还涉及一种装置,其被配置成用于执行数据处理,所述装置包括分析模块,所述分析模块被配置成用于:
-针对数据处理的多个对象,执行限定所述对象在数据处理中的使用的数据处理的计算机代码的分析,
-基于计算机代码的分析,将每一对象分配到存储器模块的多个存储器区域中的一个用于数据处理期间相应存储器区域中的每一对象的构建及随后析构,使得在数据处理期间,每一存储器区域展现堆栈操作。
附图说明
参考附图,通过细读仅借助于实例提供的以下详细描述将更充分理解本发明,附图中:
-图1展示根据本发明的装置;
-图2展示图1的装置的存储器模块;
-图3是展示根据本发明的方法的框图;
-图4展示在本发明的上下文中的多个对象的使用的开始和结束;以及
-图5展示在本发明的意义上的替代性配置。
具体实施方式
图1展示根据本发明的装置DIS。
装置DIS被配置成至少用于执行数据处理。
在本发明的上下文中,提供装置DIS的两个配置。
在第一配置的上下文中,使装置DIS适于数据处理的实际实施方案。
在第二配置的上下文中,在数据处理的准备过程中使用装置DIS,数据处理的实际实施方案由与装置DIS分离的第二装置执行。
这在下文详细描述。
一般说来,装置DIS为计算机装置,数据处理中涉及的数据为数字数据。
数据处理的数据涉及任何种类的内容。举例来说,其表示由第一件电子设备发送到第二件电子设备的信息。
数据处理包括操纵形成数据处理的数据的一部分的对象OBJ。应注意,这些对象可在数据处理的任何阶段使用,且可在数据处理的较长或较短部分期间存在,乃至在数据处理的整个持续时间内存在。
举例来说,对象OBJ是来自数据处理中通常所见的对象类型的任何类型。
举例来说,每一对象OBJ对应于来自包括至少数字、矩阵、列表或一连串字符的群组的一个要素。
在装置的第一配置的上下文中,装置DIS包括通信模块COM、存储器模块MM和处理模块TRA。其还包括分析模块ANA。
这些元件例如借助于其连接到的一条或多条总线彼此通信。
通信模块COM被配置成允许装置DIS和其它件设备之间的通信。举例来说,此模块被配置成用于由装置DIS接收在数据处理开始时使用的数据。
有利的是,此模块COM还用于将产生于此数据处理的数据供应到远离装置DIS的装置。
使通信模块COM适于使用一种或多种已知技术的通信。
有利的是,使通信模块COM适于无线通信。举例来说,使其适于基于移动电话中使用的一种或多种标准技术(例如3G、4G、5G等)、一种或多种近场通信技术,和/或来自ZigBee、RFID、WiFi和其它技术的一种或多种技术的无线通信。
或者或另外,相比于无线电信,使通信模块COM适于有线通信。举例来说,其包括一个或多个插口,用于通过电线将通信模块连接到一件远程设备。
经由例如USB(代表通用串行总线)模块等可移除数据介质的任何形式的通信显然都是可能的。
大体来说,使存储器模块MM适于数据存储。
在本发明的上下文中,确切地说,使存储器模块MM适于在数据处理的不同阶段存储数据处理的数据,尤其是对象OBJ。
还使存储器模块MM适于存储用于执行数据处理并且还用于装置DIS的例行操作的装置DIS的正确操作所需的程序。
值得注意的是,根据本发明,使存储器模块MM适于存储程序PRG,其包括指令,当所述指令由例如处理模块TRA等处理器执行时所述指令用于实施下文描述的根据本发明的方法。
还使存储器模块MM适于存储限定数据处理的计算机代码COD。
计算机代码COD表示数据处理的操作的一个或多个序列的限定,在此上下文中,操纵处理的对象OBJ。
举例来说,对于处理的每一对象OBJ,计算机代码COD包括所涉及的对象OBJ以及此对象的使用的限定。此使用具有开始和结束。
应注意,此限定和/或此使用不必在计算机代码COD中为显式的。换句话说,所述限定和使用可来源于计算机代码,而不以显式的形式在那里存在。
然而,应注意,通常在下文描述的且基于计算机代码生成的一个或多个可执行文件EXEC中使此限定为显式的。
举例来说,使用的开始由代码COD中对象OBJ的第一次出现限定。使用的结束例如由代码COD中所讨论的对象的最后一次出现限定。
所讨论的使用包含在此期间操纵对象的至少一个操作,例如创建对象的操作。有利的是,所述使用包括基于所讨论的对象生成新对象。
以一种或多种计算机语言编写代码COD。举例来说,此语言为已知语言,例如C++语言。
在实践中,计算机代码COD完全或部分限定所实行的数据处理的操作。因此,举例来说,其限定处理的输入数据,以及这些数据在处理期间经受的一组操作。
常规地,计算机代码COD既定变换成一个或多个可执行文件EXEC,所述一个或多个可执行文件EXEC由例如处理模块TRA的处理器等一个或多个处理器执行是通过数据处理的实施方案来体现。此变换操作称为编译。
此变换通过构成代码的初始形式(正如计算机代码COD)和所讨论的可执行文件EXEC之间的代码的中间状态的一个或多个形式的代码的存在来体现。如下文所描述,除可或可不经过变换的版本的代码外,这些形式中的一个还包含(例如)添加到代码COD的指令,例如由分析模块ANA添加的指令。
存储器模块MM包括至少一个存储器实体EMi,其中i标引所述一个或多个存储器实体。
每一存储器实体EMi形成用于存储处理的数据(确切地说,对象OBJ)的连续存储器空间。换句话说,在每一存储器实体内,形成存储器空间的不同块的逻辑地址彼此相随。
所讨论的存储器空间为逻辑存储器空间。应注意,存储器空间可对应于多个物理存储器空间。
以已知方式,此存储器空间包括块,所述块适于含有数据、传回这些数据且破坏这些数据,借此使先前被占据的块对于新数据再次可用。
这些功能背后的物理原理是例如一个已知原理,
一般说来,存储器实体例如以已知方式形成且为任何类型。然而,有利的是,所述存储器实体是例如DRAM(代表动态随机存取存储器)等随机存取存储器类型的实体。
尽管在图1和2中以空间上定位的块的形式展示,但存储器模块MM依据其包括的存储器实体的数目以及这些存储器实体在所展示的装置DIS的不同元件之间的分布而具有任何形式。
举例来说,这些存储器实体中的一些或全部包含在处理模块TRA中。
处理模块TRA被配置成用于控制装置DIS的其它元件以用于装置DIS的操作。
处理模块TRA包括一个或多个处理器CPUi,其尤其适于执行指令,所述指令尤其用于对数据处理的数据执行操作以用于此处理的实施。
有利的是,模块TRA包括多个此类处理器。使处理器CPUi例如适于根据操作模式操作,在所述操作模式的上下文中,处理器中的一个操作为主处理器,且其它处理器操作为从处理器,正如所属领域的技术人员所知。
参看图2,分析模块ANA被配置成用于分析存储器模块MM中所含有的计算机代码COD,以便将其变换为一个或多个可执行文件EXEC。
更确切地说,模块ANA被配置成用于至少分析计算机代码COD,且基于此代码生成待执行以用于实施实际数据处理的一个或多个可执行文件。换句话说,分析模块ANA被配置成编译器。举例来说,其为已知类型的编译器。有利的是,编译器为用户可配置的。
在本发明的上下文中,分析模块ANA被配置成用于基于计算机代码COD的分析将数据处理的至少一些对象OBJ分配到分别属于存储器实体EMj的多个存储器区域ZMi,j中的一个。
换句话说,分析模块ANA被配置成用于指定在执行产生于编译的文件期间由模块ANA对每一对象OBJ的构建及因此析构将在定位于存储器实体EMj中的此存储器区域ZMi,j中发生。
此外,在本发明的上下文中,分析模块ANA被配置成用于将所讨论的对象OBJ分配到存储器区域ZMi,j,使得每一存储器区域ZMi,j在数据处理期间展现堆栈操作。
换句话说,在实际数据处理期间,由于由模块ANA实行的分配,每一ZMi,j展现LIFO(代表后入先出)类型的操作。
有利的是,这是数据处理的所有对象OBJ的情况。
应注意,在一些实施例中,对于至少一个对象OBJ,其到存储器区域中的一个的分配在此存储器区域中的对象OBJ的大小并非已知的时刻实行。
分析模块ANA执行的对象OBJ的分配的细节在下文根据本发明的方法的描述的背景下描述。
存在这些存储器区域ZMi,j中的至少两个。其确切数目例如事先确定。
堆栈操作本身是已知的。在此操作的上下文中,每一存储器区域ZMi,j与指针Pi,j相关联,指针Pi,j表示相应区域中的第一空闲存储器块,定位于存储器区域的开始存储器块和由所述指针标示的此块之间的先前块被数据占据。
如果在存储器区域ZMi,j中构建对象,则其根据对象的大小在由指针标示的存储器块和后续存储器块中构建,指针经更新以标示新的第一空闲存储器块。
如果存储器区域中创建的最后一个对象被破坏,则释放相应的存储器块,且指针被更新以标示在此析构之后不含存储器区域的第一空闲存储器块。
因此,堆栈存储器的管理尤其简单,因为其基本上是基于相关联指针的管理。
正如从上文显而易见,术语“分配”在此情况下意味着在对象OBJ和存储器区域ZMi,j之间形成的关联,从而产生以下事实:在数据处理期间,在此存储器区域中构建对象OBJ。在本发明的上下文中,由分析模块ANA在实际数据处理的上游作出此分配。
有利的是,在本发明的上下文中,至少两个存储器区域ZMi,j形成相同存储器实体EMi的一部分。换句话说,它们对应于相同存储器空间的不同区域。
并且,有利的是,这些存储器区域ZMi,j具有对应于此存储器实体EMi的相对末端的相应开始位置。换句话说,在存储器实体EMi在所选行进方向上具有第一存储器块和最后一个存储器块的条件下,这些第一和最后块形成所讨论的两个存储器区域的相应开始点。
当在这些存储器区域中的一个中构建对象时,通过使相关联指针朝向另一存储器区域的指针移动来体现此指针的更新。
换句话说,如果发生填充,则这些存储器区域的指针在相反的相应方向上移动,使得如果在所述存储器区域中的一个中创建对象则它们彼此接近。
举例来说,图2中的具有参考ZM11和ZM21的存储器区域以此方式配置。
此配置在所需的存储器空间大小方面特别有利。
然而,此配置是任选的。举例来说,相同实体EMj的存储器区域ZMi,j具有指针Pi,j,如果在相关联存储器区域中构建对象则其在相同的方向上移动。
在此配置中,存储器区域中的一个的开始点不形成结束存储器块,如图2中的存储器区域ZM22所示。
应注意,分析模块ANA有利地为软件。
或者或另外,分析模块ANA为硬件。
现将参看各图(尤其是图3)详细地描述用于执行数据处理的根据本发明的方法。
在初始步骤S0中,使限定待执行的数据处理的计算机代码COD可用。如上文所指出,此限定可以是部分隐式的,尤其是对于对象OBJ。
此计算机代码COD是例如通过生成过程产生,所述生成过程需要已经编写计算机代码中的一些或全部的一个或多个人,和/或通常用于输入所讨论的代码和/或用于生成代码的一部分的一件或多件电子设备。
在步骤S1中,分析模块ANA分析计算机代码COD以便将计算机代码COD中反映的数据处理的至少一些对象OBJ分配到存储器区域ZMi,j中的一个,使得这些区域在执行数据处理期间以堆栈的方式操作。
有利的是,因此将数据处理的每一对象OBJ分配到存储器区域ZMi,j中的一个。
在给定实施例中,为了作出此分配,对于每一对象OBJ,分析模块ANA确定在数据处理的上下文中所涉及的对象OBJ的使用的开始和结束。
举例来说,对于两个对象A和B,其在数据处理中的使用由下文所示的说明性代码来限定:
例如由图4中示出的三个对象A、B、C的相应发生时刻t0A、tfA、t0B、tfB、t0C和tfC表示的对象的使用的开始和结束用于使存储器区域ZMi,j与每一对象相关联。
举例来说,在一个配置中,通过将对象分拣为其中对象的使用不重叠的对象群组来产生此关联,如图4中所展示。
换句话说,在每一对象群组内,对于任何对象对A、B,其中A为使用首先结束的对象,关系tfA<t0B成立,其中tfA表示对象A的使用的结束且t0B表示对象B的使用的开始。
举例来说,在图4中,对象A和C可分组在给定群组中且分配到相同存储器区域,但对象B无法与对象A和C一起分组,且因此无法分配到对象A或对象C的存储器区域。
应注意,此操作不需要以显式日期的形式表达使用的开始和结束,而是简单地确定其相对发生次序,这是通过分析模块ANA分析代码COD的结果。
形成每一对象群组,且因此接着使群组中的每一对象与给定存储器区域ZMi,j相关联。
应注意,分拣过程有利地例如在分拣模态的限定过程中是可配置的。
因此,举例来说,当多个对象适于放置于相同群组中但无法在该处同时存在时,根据一个或多个预定义准则调适用于挑选待接受对象的模态。
举例来说,在给定配置中,挑选在时间上最早创建的对象。
在替代实施例中,基于包含在计算机代码中且在分析模块ANA执行分析之前记录于其中的信息来执行分配。
有利的是,对于给定对象OBJ,此信息包括表示来自所述多个可能的存储器区域的一个存储器区域ZMi,j的所述对象的限定参数的值,所述值在分析模块ANA分析计算机代码COD之前已经记录于所述代码中。
换句话说,在此配置中,在代码分析的时刻,代码COD已经含有将对象OBJ中的一些或全部分配到存储器区域ZMi,j中的一个的声明。
应注意,这两种方法是兼容的。因此,举例来说,对于一些对象,所述分配预记录于代码中,且对于对象的其余部分,通过如上文所描述分析对象的使用的开始和结束来确定分配。
当分配已确定时,分析模块ANA在代码COD中或替代地在产生于将代码变换为一个或多个可执行文件EXEC的步骤的经变换代码中报告分配的结果。对于此报告,分析模块将相应信息插入到代码或经变换代码中,此信息表示对象OBJ被分配到的存储器区域ZMi,j。
举例来说,所添加信息采取表征相关联存储器区域ZMi,j的代码中或经变换代码中的对象的限定的一个或多个参数或属性的值的形式,此值或这些值接着在不同的代码变换步骤期间保持使得它或它们在一个或多个可执行文件中存在。
有利的是,在步骤S2中,对于至少一个对象OBJ,分析模块ANA实行析构函数的调用到计算机代码COD或经变换代码中的插入,所述析构函数被配置成用于执行紧密地对应于存储器区域ZMi,j的所述对象的使用的结束的所述对象的析构。
有利的是,此插入的放置独立于作为所述对象被操纵的上下文的一个或多个功能的范围。此范围对应于功能的使用。
换句话说,在此步骤中,分析模块ANA配置相关联存储器区域ZMi,j中所涉及的对象的析构的发生以致使此析构在对象的使用的结束之后发生,而不在作为对象的使用发生的上下文的功能的范围的末端处发生(正如通常的情况)。
举例来说,参考上文的说明性代码,针对对象A和B的这些析构函数的插入执行如下。
应注意,此步骤为任选的。
或者,分析模块ANA致使析构函数在包含对象的使用的结束的操纵对象的功能的范围的末端处操作。
在步骤S3中,分析模块ANA完成代码COD的编译,这由处理模块TRA生成用于执行实际数据处理的一个或多个可执行文件EXEC来体现。
此步骤可包含所属领域的技术人员已知的一个或多个操作。
在可视为上述方法的延续的步骤S4中,借助于由处理模块TRA执行产生于前一步骤的一个或多个EXEC文件来实施数据处理。
在此处理中,在先前步骤中对象OBJ已经被分配到的存储器区域中连续创建和破坏对象OBJ,使得这些存储器区域ZMi,j以堆栈的方式操作直至实际数据处理完成。
已针对第一配置提供以上描述,也就是说,装置DIS在其中实行编译计算机代码COD的任务和执行用于实施实际数据处理的EXEC文件的任务两者的配置。
在第二配置中,参看图5,产生于执行在编译结束时供应的EXEC文件的数据处理由第二装置DIS2实行,所述第二装置包括如上文所描述的存储器模块MM,装置DIS被配置成执行对象OBJ到第二装置DIS2的存储器模块MM的存储器区域ZMi,j的分配。
在此配置中,使装置DIS适于与其它件设备(尤其是第二装置DIS2)通信。
为此目的,其包括通信模块COM1。此通信模块COM1例如类似于上文描述的模块COM。
装置DIS还包括上文描述的分析模块ANA,其用于分析计算机代码COD,且基于此分析将对象OBJ分配到在此配置中形成定位于第二装置中的存储器模块MM的一部分的存储器区域ZMi,j中的一个,始终使得这些存储器区域ZMi,j在实际数据处理期间遵循堆栈操作。
此外,装置DIS包括存储器MEM,其被配置成用于存储计算机代码COD,且用于存储产生于分析模块ANA对代码COD的编译的EXEC文件以及代码COD和这些EXEC文件之间的各种中间文件。存储器MEM还用于存储程序PRG。
在此第二配置中,存储器MEM并不既定含有由实施实际数据处理的第二装置DIS2操纵的对象OBJ。
此存储器MEM可具有任何配置。确切地说,其可采取单个物理和/或逻辑存储器实体的形式。在一些实施例中,存储器MEM可具有类似于存储器模块MM的配置的配置(通常在结构方面相同)。
装置DIS还包括适于执行指令的处理模块,表示为TRA1。此模块TRA1包括一个或多个处理器。在实践中,此处理模块TRA1用于执行定位于存储器MEM中的程序以实现装置DIS的正确操作。
就其本身而言,第二装置DIS2适于与其它件设备(尤其是装置DIS)通信,用于接收既定执行以便实施实际数据处理的EXEC文件。
其例如用于将产生于数据处理的数据额外供应到一件远程设备。
为此目的,其包括对应于例如上文描述的通信模块COM的通信模块COM2。
如上文所指出,其还包括上文描述的存储器模块MM,所述存储器模块MM包括数据处理的对象OBJ由分析模块ANA基于计算机代码的分析被分配到的存储器区域ZMi,j。
其还包括处理模块TRA2。此模块有利地对应于上文描述的处理模块TRA。
在第二配置的上下文中,方法的进程类似于上文所描述,差异在于:基于代码COD生成EXEC文件是经由装置DIS来实施,且经由EXEC文件已经被供应到的第二装置DIS2来实施用于实施实际数据处理的这些EXEC文件的执行。
换句话说,装置DIS的分析模块ANA分析定位于装置DIS的存储器MEM中的代码COD,将由所述代码报告的对象OBJ分配到第二装置DIS2的存储器模块MM的不同存储器区域ZMi,j,使得它们在数据处理期间以堆栈的方式操作,且生成一个或多个EXEC文件。
这些文件接着传递到第二装置,所述第二装置基于这些文件实施数据处理。
在此处理期间,在由分析模块分配的存储器区域ZMi,j中生成对象OBJ,使得存储器区域ZMi,j以堆栈的方式操作。
因此,由于这两种可能的配置,存储器模块MM是装置DIS的元件或除装置DIS外的装置的元件。在第一配置中,模块MM形成装置DIS的部分。在第二配置中,其形成与装置DIS分离的装置DIS2的部分。
本发明具有若干优点。
首先,其使得有可能具有总体上以大大简化的方式操作的存储器,因为所述存储器仅包括以堆栈的方式操作的存储器区域。
此外,本发明尤其容易地适于多种环境和配置。值得注意的是,本发明适于广泛多种处理模块TRA、适于复杂性很大程度上可变的数据,且适于非常不同的存储器模块配置。
最后,其容易应用于预先存在的装置,因为其不需要替换计算机装置的组件或对所述组件作出重大修改。
Claims (11)
1.一种用于执行数据处理的方法,所述方法由计算机手段实施且包括:
对于所述数据处理的多个对象(OBJ),执行所述数据处理的计算机代码(COD)的分析,所述计算机代码(COD)限定所述数据处理中所述对象(OBJ)的使用,
基于所述计算机代码(COD)的分析,将每一对象分配到多个存储器区域(ZMi,j)中的一个,用于所述数据处理期间相应存储器区域中的每一对象的构建及随后析构,使得在所述数据处理期间,每一存储器区域(ZMi,j)展现堆栈操作。
2.根据权利要求1所述的方法,其特征在于,至少两个存储器区域(ZMi,j)形成相同存储器实体(EM1、EM2)的相应单独区域。
3.根据权利要求2所述的方法,其特征在于,所述两个存储器区域(ZMi,j)具有由所述存储器实体(EM)的相应相对末端限定的相应开始位置。
4.根据权利要求2所述的方法,其特征在于,所述两个存储器区域(ZMi,j)中的每一个与指针(Pi,j)相关联,所述指针被配置成指向所涉及的所述存储器区域的第一空闲空间,两个存储器区域中的每一个的所述指针(Pi,j)被配置成在所涉及的所述存储器区域中构建对象的情况下移动为更靠近另一存储器区域的所述指针(Pi,j)。
5.根据权利要求1所述的方法,其特征在于,至少两个存储器区域(ZMi,j)属于不同存储器实体(EMI)。
6.根据前述权利要求中任一项所述的方法,其特征在于,执行所述计算机代码的分析包含针对所述对象中的一些或全部的每一对象(OBJ),确定所述数据处理中所述对象(OBJ)的使用的开始和结束,基于所述对象的使用的开始和结束实行所述对象到相应存储器区域的分配。
7.根据权利要求1所述的方法,其特征在于,对于至少一个对象,基于表示来自所述多个存储器区域的一个存储器区域(ZMi,j)的所述对象的限定参数的值将所述对象分配到相应存储器区域,所述值在所述计算机代码的分析之前记录于所述代码中。
8.根据权利要求1所述的方法,其进一步包括编译用于产生在所述数据处理期间执行的一个或多个可执行文件的计算机代码(COD),所述编译包括:针对至少一个对象,将析构函数的调用插入到基于用于产生所述一个或多个可执行文件的所述计算机代码生成的经变换计算机代码中,所述析构函数被配置成在所述对象(OBJ)的使用的结束处立即破坏所述相应存储器区域(ZMi,j)的所述对象(OBJ)。
9.根据权利要求1所述的方法,其特征在于,对于至少一个对象(OBJ),在存储器区域(ZMi,j)中所述对象的大小并非已知的时刻将所述对象分配到所述存储器区域。
10.一种非暂时性计算机可读存储介质,其上存储有计算机程序指令,当这些指令由处理器执行时,实现根据权利要求1所述的方法。
11.一种装置(DIS),其被配置成用于执行数据处理,所述装置包括分析模块(ANA),所述分析模块被配置成用于:
对于所述数据处理的多个对象(OBJ),执行所述数据处理的计算机代码(COD)的分析,所述计算机代码(COD)限定所述数据处理中所述对象的使用,
基于所述计算机代码的所述分析,将每一对象(OBJ)分配到存储器模块(MM)的多个存储器区域(ZMi,j)中的一个,用于所述数据处理期间相应存储器区域中的每一对象的构建及随后析构,使得每一存储器区域(ZMi,j)展现堆栈操作。
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 (2)
Publication Number | Publication Date |
---|---|
CN111316249A CN111316249A (zh) | 2020-06-19 |
CN111316249B true CN111316249B (zh) | 2023-09-29 |
Family
ID=60627768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880066902.1A Active CN111316249B (zh) | 2017-09-04 | 2018-09-03 | 改进的数据处理方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11341054B2 (zh) |
EP (1) | EP3679476A1 (zh) |
JP (1) | JP2020532812A (zh) |
KR (1) | KR20200061355A (zh) |
CN (1) | CN111316249B (zh) |
FR (1) | FR3070775B1 (zh) |
WO (1) | WO2019043345A1 (zh) |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292114A (zh) * | 1998-11-06 | 2001-04-18 | 布尔Cp8公司 | 执行于板上系统内的中间对象代码程序的数据压缩方法 |
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 |
CN1661559A (zh) * | 2003-09-23 | 2005-08-31 | 微软公司 | 用于面向对象的程序的基于区域的存储器管理 |
CN1765105A (zh) * | 2004-02-27 | 2006-04-26 | 株式会社东芝 | 具有修改设施的协议栈 |
CN1783010A (zh) * | 2004-12-02 | 2006-06-07 | 国际商业机器公司 | 用于多存储器多处理系统的程序代码大小划分系统和方法 |
CA2654395A1 (en) * | 2006-05-31 | 2007-12-06 | Storwize Ltd. | Method and system for transformation of logical data objects for storage |
CN101156131A (zh) * | 2005-04-15 | 2008-04-02 | 爱特梅尔公司 | 使用本机指令将操作数堆栈作为寄存器堆的微处理器存取 |
US7376768B1 (en) * | 2003-12-19 | 2008-05-20 | Sonic Solutions, Inc. | Dynamic memory allocation for multiple targets |
CN101499956A (zh) * | 2008-01-31 | 2009-08-05 | 中兴通讯股份有限公司 | 分级缓冲区管理系统及方法 |
CN102200911A (zh) * | 2010-03-24 | 2011-09-28 | 微软公司 | 变量闭包 |
CN102622321A (zh) * | 2011-01-28 | 2012-08-01 | 炬力集成电路设计有限公司 | 一种数据处理设备及其数据传输方法 |
CN102725730A (zh) * | 2009-12-18 | 2012-10-10 | 赛丹思科大学 | 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统 |
EP2521063A1 (fr) * | 2011-05-04 | 2012-11-07 | STMicroelectronics (Rousset) SAS | Protection d'une mémoire volatile contre des virus par changement d'instructions |
CN103493025A (zh) * | 2011-04-25 | 2014-01-01 | 微软公司 | 用于存储器管理的保守垃圾收集和经标记的整数 |
CN103870242A (zh) * | 2012-12-12 | 2014-06-18 | 辉达公司 | 优化线程栈存储器的管理的系统、方法和计算机程序产品 |
CN104793920A (zh) * | 2014-01-17 | 2015-07-22 | 想象力科技有限公司 | 堆栈指针值预测 |
CN104794067A (zh) * | 2014-01-17 | 2015-07-22 | 想象力科技有限公司 | 堆栈存储的变量值预测 |
CN105556466A (zh) * | 2013-10-30 | 2016-05-04 | 国际商业机器公司 | 代码堆栈管理 |
CN106716361A (zh) * | 2014-09-26 | 2017-05-24 | 微软技术许可有限责任公司 | 用于运行时例程冗余跟踪的编译器高速缓存 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020174316A1 (en) * | 2001-05-18 | 2002-11-21 | Telgen Corporation | Dynamic resource management and allocation in a distributed processing device |
EP1498841B1 (fr) * | 2003-07-14 | 2010-03-24 | EM Microelectronic-Marin SA | Circuit transpondeur multi-applications et procédé de gestion de la mémoire d'un tel circuit transpondeur |
US20090282206A1 (en) * | 2008-05-12 | 2009-11-12 | International Business Machines Corporation | Method for Resolving Memory Leak Problems Resulting from Loitering Objects |
-
2017
- 2017-09-04 FR FR1758134A patent/FR3070775B1/fr active Active
-
2018
- 2018-09-03 WO PCT/FR2018/052140 patent/WO2019043345A1/fr unknown
- 2018-09-03 JP JP2020533371A patent/JP2020532812A/ja active Pending
- 2018-09-03 EP EP18773798.6A patent/EP3679476A1/fr active Pending
- 2018-09-03 KR KR1020207009775A patent/KR20200061355A/ko unknown
- 2018-09-03 US US16/644,070 patent/US11341054B2/en active Active
- 2018-09-03 CN CN201880066902.1A patent/CN111316249B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292114A (zh) * | 1998-11-06 | 2001-04-18 | 布尔Cp8公司 | 执行于板上系统内的中间对象代码程序的数据压缩方法 |
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 |
CN1661559A (zh) * | 2003-09-23 | 2005-08-31 | 微软公司 | 用于面向对象的程序的基于区域的存储器管理 |
US7376768B1 (en) * | 2003-12-19 | 2008-05-20 | Sonic Solutions, Inc. | Dynamic memory allocation for multiple targets |
CN1765105A (zh) * | 2004-02-27 | 2006-04-26 | 株式会社东芝 | 具有修改设施的协议栈 |
CN1783010A (zh) * | 2004-12-02 | 2006-06-07 | 国际商业机器公司 | 用于多存储器多处理系统的程序代码大小划分系统和方法 |
CN101156131A (zh) * | 2005-04-15 | 2008-04-02 | 爱特梅尔公司 | 使用本机指令将操作数堆栈作为寄存器堆的微处理器存取 |
CA2654395A1 (en) * | 2006-05-31 | 2007-12-06 | Storwize Ltd. | Method and system for transformation of logical data objects for storage |
CN101499956A (zh) * | 2008-01-31 | 2009-08-05 | 中兴通讯股份有限公司 | 分级缓冲区管理系统及方法 |
CN102725730A (zh) * | 2009-12-18 | 2012-10-10 | 赛丹思科大学 | 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统 |
CN102200911A (zh) * | 2010-03-24 | 2011-09-28 | 微软公司 | 变量闭包 |
CN102622321A (zh) * | 2011-01-28 | 2012-08-01 | 炬力集成电路设计有限公司 | 一种数据处理设备及其数据传输方法 |
CN103493025A (zh) * | 2011-04-25 | 2014-01-01 | 微软公司 | 用于存储器管理的保守垃圾收集和经标记的整数 |
EP2521063A1 (fr) * | 2011-05-04 | 2012-11-07 | STMicroelectronics (Rousset) SAS | Protection d'une mémoire volatile contre des virus par changement d'instructions |
CN103870242A (zh) * | 2012-12-12 | 2014-06-18 | 辉达公司 | 优化线程栈存储器的管理的系统、方法和计算机程序产品 |
CN105556466A (zh) * | 2013-10-30 | 2016-05-04 | 国际商业机器公司 | 代码堆栈管理 |
CN104793920A (zh) * | 2014-01-17 | 2015-07-22 | 想象力科技有限公司 | 堆栈指针值预测 |
CN104794067A (zh) * | 2014-01-17 | 2015-07-22 | 想象力科技有限公司 | 堆栈存储的变量值预测 |
CN106716361A (zh) * | 2014-09-26 | 2017-05-24 | 微软技术许可有限责任公司 | 用于运行时例程冗余跟踪的编译器高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
CN111316249A (zh) | 2020-06-19 |
KR20200061355A (ko) | 2020-06-02 |
US11341054B2 (en) | 2022-05-24 |
JP2020532812A (ja) | 2020-11-12 |
WO2019043345A1 (fr) | 2019-03-07 |
FR3070775A1 (fr) | 2019-03-08 |
FR3070775B1 (fr) | 2019-08-23 |
EP3679476A1 (fr) | 2020-07-15 |
US20200409853A1 (en) | 2020-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190384515A1 (en) | Method for configuring resources, electronic device and computer program product | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
JP5939123B2 (ja) | 実行制御プログラム、実行制御方法および情報処理装置 | |
CN105045791A (zh) | 数据库设备 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN111143446A (zh) | 数据对象的数据结构转换处理方法、装置及电子设备 | |
CN110941456A (zh) | 按需加载动态脚本语言代码以减少内存使用 | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN108681446B8 (zh) | 基于组件服务的众创性气候算法管理系统及方法 | |
CN111949312B (zh) | 数据模块的打包方法、装置、计算机设备和存储介质 | |
CN111316249B (zh) | 改进的数据处理方法 | |
CN113672375B (zh) | 资源分配预测方法、装置、设备及存储介质 | |
WO2021219211A1 (en) | Memory allocation in a neural network | |
JP2018132948A (ja) | 読込プログラム、読込方法および情報処理装置 | |
CN109033209B (zh) | Spark存储过程处理方法及装置 | |
CN104111967A (zh) | 用于微处理器系统中的多维索引的方法和设备 | |
CN108664249B (zh) | 提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质 | |
CN113296788B (zh) | 指令调度方法、装置、设备及存储介质 | |
CN114675954A (zh) | 任务调度方法及装置 | |
CN110297843B (zh) | 用于b/s系统的数据查询方法及系统、终端 | |
CN109284128B (zh) | 转换数据的方法、装置、存储介质及移动终端 | |
CN111880803A (zh) | 一种应用于多平台的软件构建方法及装置 | |
CN111221787A (zh) | 一种文件处理方法及装置 | |
WO2017001900A1 (en) | A data processing method | |
Kraas | Realizing Model Simplifications with QVT Operational Mappings. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |