CN109271164B - 用于存储数据的方法和系统、以及存储介质 - Google Patents

用于存储数据的方法和系统、以及存储介质 Download PDF

Info

Publication number
CN109271164B
CN109271164B CN201810782729.7A CN201810782729A CN109271164B CN 109271164 B CN109271164 B CN 109271164B CN 201810782729 A CN201810782729 A CN 201810782729A CN 109271164 B CN109271164 B CN 109271164B
Authority
CN
China
Prior art keywords
application
data
memory
configuration data
nvm
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
Application number
CN201810782729.7A
Other languages
English (en)
Other versions
CN109271164A (zh
Inventor
苏普拉泰卡·R·赫格德
施莱德·P·乔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN109271164A publication Critical patent/CN109271164A/zh
Application granted granted Critical
Publication of CN109271164B publication Critical patent/CN109271164B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • 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
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一些示例涉及在非易失性存储器中存储应用的存储器配置数据。在示例中,可以将应用的源代码编译为用于生成应用的配置数据的测量代码。在示例中,配置数据可以包括与应用的存储器使用有关的存储器配置数据。接下来,可以使用测量代码来生成包括应用的存储器配置数据的配置数据。可以基于包括应用的存储器配置数据的配置数据来重新编译应用。可以根据应用的存储器配置数据识别要存储在非易失性存储器(NVM)中的数据。可以将被识别的数据存储在NVM中。

Description

用于存储数据的方法和系统、以及存储介质
技术领域
本公开总体涉及在非易失性存储器中存储应用的存储器配置数据。
背景技术
非易失性存储器(NVM)是当功率被断开时保留其内容的一类型的计算机存储器。非易失性存储器的示例可以包括只读存储器、闪存存储器、硬盘驱动器、软盘、磁带和光盘。
发明内容
根据本公开的一方面,提供了一种用于存储数据的方法,包括:由处理器:将应用的源代码编译为用于生成所述应用的配置数据的测量代码,其中,所述配置数据包括与所述应用的存储器使用有关的存储器配置数据;使用所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;根据所述应用的所述存储器配置数据识别要存储在非易失性存储器NVM中的数据;并且将所述数据存储在所述NVM中。
根据本公开的另一方面,提供了一种用于存储数据的系统,包括:编译器,用于:将应用的源代码编译为测量代码,以生成所述应用的配置数据,其中,所述配置数据包括与由所述应用对易失性存储器的存储器使用有关的存储器配置数据;使用所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;并且根据所述应用的所述存储器配置数据识别要存储在能够由所述系统的中央处理单元寻址的非易失性存储器NVM中的数据;以及加载器,用于:将所述数据存储在所述NVM中;并且在所述应用的执行期间使用存储在所述NVM中的所述数据。
根据本公开的另一方面,提供了一种包括指令的非暂时性机器可读存储介质,所述指令能够由处理器执行以:将应用的源代码编译为测量代码,以生成所述应用的配置数据,其中,所述配置数据包括与所述应用的存储器使用有关的存储器配置数据;通过利用代表数据运行所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;并且根据所述应用的所述存储器配置数据识别要存储在非易失性存储器NVM中的数据;并且将所述数据存储在所述NVM中。
附图说明
以下详细描述参考附图,其中:
图1是用于在非易失性存储器中存储应用的存储器配置数据的示例系统的框图;
图2是在非易失性存储器中存储应用的存储器配置数据的示例方法的框图;以及
图3是包括机器可读存储介质中的指令的示例系统的框图,所述指令用于在非易失性存储器中存储应用的存储器配置数据。
具体实施方式
与非易失性存储器相反,易失性存储器是要求功率来维持所存储的信息的计算机存储器。易失性存储器(例如,随机存取存储器(RAM))在上电时保留其内容,但是当功率被中断时,所存储的数据可能立即或者非常快速地丢失。应用可以例如在应用启动期间或者稍后将数据加载到易失性存储器用于各种活动。因为存储在易失性存储器中的数据在功率断开时丢失,所以应用可能必须再次将数据加载在易失性存储器中。不用说,这可以显著地影响应用性能。
为了解决该技术挑战,本公开描述用于在非易失性存储器中存储应用的存储器配置数据的各个示例。在示例中,可以将应用的源代码编译为用于生成应用的配置数据的测量代码。在示例中,配置数据可以包括与应用的存储器使用有关的存储器配置数据。接下来,可以使用测量代码来生成包括应用的存储器配置数据的配置数据。然后可以基于包括应用的存储器配置数据的配置数据来重新编译应用。可以根据应用的存储器配置数据识别存储在非易失性存储器(NVM)中的数据。可以将被识别的数据存储在NVM中。在示例中,当应用存在时,不从NVM卸载这样的数据。通过在NVM中保持这样的数据,应用启动能够更快,因为每次应用不需要将数据从辅助存储器加载到系统存储器。
图1是用于在非易失性存储器中存储应用的存储器配置数据的示例系统100的框图。在示例中,系统100可以表示能够读取机器可执行指令的任何类型的计算设备。计算设备的示例可以包括服务器、台式计算机、笔记本式计算机、平板式计算机、瘦客户端、移动设备、个人数字助理(PDA)等等,没有限制。
如在本文所使用的,术语“服务器”可以包括可以处理通过网络来自其他(客户端)计算机的请求的计算机和/或计算机程序(机器可读指令)。
在示例中,系统100可以包括处理器102、非易失性存储器(NVM)104、编译器106、加载器108以及计算机应用110。
处理器102可以是解释和执行机器可读指令的任何类型的中央处理单元(CPU)或者处理逻辑。在示例中,处理器102可以包括微控制器、微处理器、可编程门阵列、专用集成电路(ASIC)、计算机处理器等等。处理器212例如可以包括芯片上的多个核、多个芯片上的多个核、多个设备上的多个核或者其组合。在一些示例中,处理器102可以包括集成电路(IC)、其他控制逻辑、其他电子电路,或者其组合。处理器102可以例如经由存储器总线联接到存储器104。
非易失性存储器(NVM)104的示例可以包括相变存储器(PCM)、忆阻器、只读存储器(ROM),以及非易失性双列直插式存储器模块(NVDIMM)。在一些示例中,非易失性存储器104可以是处理器102可寻址的。就可访问性而言,非易失性存储器104可以比易失性RAM慢、但是比辅助存储器(例如,闪存存储器)快。访问辅助存储器可能较慢,因为它们可以被顺序地读取。而且,将存储设备连接到系统的接口可能不如NVM使用的接口那么快。因为NVM与辅助存储器相比快得多,与辅助存储器相比,性能极其高。NVM是字节可寻址的并且可以由处理器直接地寻址,而在辅助存储器的情况下,访问可以借助于控制器(例如,磁盘控制器)。
在示例中,处理器可以调用编译器106来执行计算机应用110的基于配置的优化。基于配置的优化可以被定义为基于应用的运行时特性的性能改善代码变换的集合。在示例中,为了执行应用110的基于配置的优化,编译器106可以准备应用110,使得其生成配置数据。该处理可以被称为测量。为了准备用于生成配置数据的应用110,编译器106可以将应用110的源代码编译为测量代码。测量代码可以包括附加代码,该附加代码被添加到源代码以用于生成可以被利用以例如用于执行与应用有关的分析(例如,运行时分析或者组件测试)的数据。
为了提供示例,考虑到编译器106支持用于C++编程语言的ISO/IEC 14882标准(关于C++的国际标准)。编译器106可以编译称作“样本”的应用(其可以从C源文件sample.c构建)以生成测量程序。编译器106可以如下编译应用sample.c。
aCC+Oprofile=collect-O-c sample.C[1.1]
aCC+Oprofile=collect-O-o sample.exe sample.o[1.2]
可以例如在外壳提示处使用aCC命令,以便调用编译器106。aCC命令后面可以是将被编译的选项和文件。
在以上示例中,第一命令行[1.1]使用+Oprofile=collect选项以准备用于测量的代码。+Oprofile选项可以指示编译器106来测量用于收集应用110的运行时配置数据的代码。第一命令行中的-c选项抑制链接并且产生称作sample.o的目标文件。第二命令行[1.2]使用-o option将sample.o链接到sample.exe。+Oprofile=collect option利用数据收集代码来测量sample.exe。
在示例中,编译器106可以测量用于收集应用110的运行时存储器使用数据(“存储器配置数据”)的代码。在示例中,可以将应用110的存储器配置数据包括在应用110的运行时配置数据中。在上述示例的上下文中,以下命令可以用于测量用于收集应用的运行时存储器使用数据的代码。
aCC+Oprofile=collect+nvprof-O-csample.C[1.3]
以上命令行[1.3]中的“+Oprofile=collect+nvprof”选项可以指示编译器106测量用于收集应用110的存储器配置数据的代码。
在示例中,应用110的存储器配置数据可以指的是应用110对物理存储器或者虚拟存储器的使用。应用110的存储器配置数据的示例可以包括与在应用110的执行期间被调取的每个方法有关的数据、程序在方法内花费的总时间、调取方法的次数、每调取的平均时间、在应用110的启动期间存储在存储器中的数据、在应用110的运行时期间存储在存储器中的数据、跨应用的调用未改变的数据、跨应用110的调用可以存留的数据和同一应用110的多个调用可以共享的只读数据。
一旦生成测量代码,可以利用代表数据运行测量代码以生成应用110的配置数据。在示例中,极其类似于用户的环境中的输入数据的数据可以用作代表数据。在上述示例的上下文中,可以利用以下代表数据运行测量代码:
sample.exe<input.file1
sample.exe<input.file2
在示例中,可以将应用110的配置数据存储在文件(例如flow.data)中。在示例中,文件可以存储多个输入文件的配置数据。例如,在上述情况中,flow.data可以存储来自两个输入文件(input.file1和input.file2)的配置数据。在示例中,配置数据可以包括应用110的存储器配置数据。
应用110的配置数据可以用于优化应用110。为了生成优化的应用,可以使用应用110的配置数据来重新编译应用110。编译器106可以使用配置数据来对代码做出智能优化决定,因此生成应用110的高度优化版本。优化可以导致应用110的运行时性能的改善。
在示例中,编译器106可以根据应用110的存储器配置数据识别可以被存储在非易失性存储器中的数据以(例如,在应用启动或者运行时期间)改善应用110性能。此类数据的示例可以包括跨应用110的调用未改变的数据(例如,符号表、调试信息、操作系统特定的属性等等)、跨应用110的调用可以存留的数据(例如,共享程序库动态再定位、符号解析数据等等)和同一应用110的多个调用可以共享的只读数据。在示例中,编译器106可以通过使用数据流分析来识别将被存储在非易失性存储器104中的数据。数据流分析是可以由来编译器106使用,以用于收集关于在计算机程序中的各个点计算的值的可能的集合的信息的技术。程序的控制流图可以用于确定被指配给变量的特定值可能传播到的程序的那些部分。例如,了解在到达给定框之前最后在哪里定义了变量(比如,debug)。可以由编译器106来使用所采集的信息,以用于优化程序(例如,110)。优化的示例可以包括常数传送、公用子表达式消除和死码删除。
在识别之后,当应用110再次开始时,加载器108可以将这样的数据存储在非易失性存储器中。加载器108可以包括负责加载程序(例如,应用110)和库的系统100上的操作系统的组件。当应用110存在时,不从非易失性存储器中卸载这样的数据。通过在非易失性存储器中保持这样的数据,应用110启动能够更快,这是因为每次应用110不需要将数据从辅助存储器(例如,RAM)加载到系统存储器。如在本文所使用的,辅助存储器可以包括不可由处理器(例如,102)直接地访问的非易失性存储器。辅助存储器的一些非限制性示例可以包括闪存存储器、光盘、磁盘和磁带。在示例中,可以使用NVM库的应用编程接口(API)将数据写入到非易失性存储器。
图2是在非易失性存储器中存储应用的存储器配置数据的示例方法200的框图。可以在图1的系统100上执行以下描述的方法200。然而,也可以使用其他设备。
在框202,处理器(例如,102)可以调用编译器(例如,106)。作为响应,编译器可以将应用的源代码编译为用于生成应用的配置数据的测量代码。在示例中,配置数据可以包括与应用对易失性存储器(例如,RAM)的存储器使用有关的存储器配置数据。在框204,可以利用代表数据运行测量代码。利用代表数据运行测量代码可以生成包括应用的存储器配置数据的配置数据。在框206,编译器可以访问存储应用的配置数据的文件。编译器可以基于包括应用的存储器配置数据的配置数据来重新编译应用。在框208,可以根据应用的存储器配置数据识别要存储在非易失性存储器(NVM)中的数据。在框210,可以访问被识别为将被存储在NVM中的数据。数据然后可以被存储在NVM中。
图3是包括机器可读存储介质中的指令的示例系统300的框图,所述指令用于在非易失性存储器中存储应用的存储器配置数据。
系统300包括通过系统总线通信地联接的处理器302和机器可读存储介质304。处理器302可以是解释和执行存储在机器可读存储介质304中的机器可读的指令的任何类型的中央处理单元(CPU)、微处理器或处理逻辑。机器可读存储介质304可以是可以存储信息和可以通过处理器302执行的机器可读指令的随机存取存储器(RAM)或另一种类型的动态存储设备。例如,机器可读存储介质304可以是同步DRAM(SDRAM)、双数据速率(DDR)、RambusDRAM(RDRAM)、Rambus RAM,等等或诸如软盘、硬盘、CD-ROM、DVD、随身存储器等等之类的存储器贮存介质。在一些示例中,机器可读存储介质304可以是非暂时性机器可读介质。在一些示例中,机器可读存储介质304可以是远程的但是可由系统300访问。
机器可读存储介质304可以存储指令306、308、310、312和314。在一些示例中,可以由处理器302执行指令306以将应用的源代码编译为用于生成应用的配置数据的测量代码。在示例中,配置数据可以包括与应用的存储器使用有关的存储器配置数据。可以由处理器302执行指令308,以通过利用代表数据运行测量代码来生成包括应用的存储器配置数据的配置数据。可以由处理器302执行指令310以基于包括应用的存储器配置数据的配置数据来重新编译应用。可以由处理器302执行指令312以根据应用的存储器配置数据识别要存储在非易失性存储器(NVM)中的数据。可以由处理器302执行指令314以将数据存储在NVM中。
为了解释的简明的目的,图3的示例方法被示出为逐次地执行,然而,应当理解和了解,目前和其他示例不限于所图示的次序。可以以包括可以结合适当的操作系统(例如,微软Windows软件、Linux、UNIX等等)在任何适当的计算设备上运行的诸如程序代码之类的计算机可执行指令的计算机程序产品的形式来实施图1和图3的示例系统以及图2的方法。在目前解决方案的范围内的示例也可以包括将用于携带或具有存储在其上的计算机可执行指令或数据结构的非暂时性计算机可读介质包括在内的程序产品。此类计算机可读介质能够是通过通用或专用计算机能够访问的任何可用的介质。举例来说,此类计算机可读介质能够包括RAM、ROM、EPROM、EEPROM、CD-ROM、磁盘存储器或其他存储设备,或能够用于携带或存储计算机可执行指令的形式的期望的程序代码的并且通过通用或专用计算机能够访问的任何其他介质。计算机可读指令也能够从存储器被访问并且通过处理器来执行。
应当理解的是,目前解决方案的以上描述的示例仅仅为了说明的目的。尽管已经结合其特定实施例描述了解决方案,但在没有实质上背离在本文描述的主题的教导和优点的情况下,许多修改可以是可能的。可以在不背离目前解决方案的精神的情况下进行其他置换、修改和改变。可以在任何组合中组合在本说明书(包括任何所附权利要求、摘要和附图)中公开的所有特征和/或如此公开的任何方法或处理的所有步骤,除非其中这样的特征和/或要素中的至少一些是互斥的组合。

Claims (20)

1.一种用于存储数据的方法,包括:
由处理器:
将应用的源代码编译为用于生成所述应用的配置数据的测量代码,其中,所述配置数据包括与所述应用的存储器使用有关的存储器配置数据,并且其中所述存储器配置数据包括以下项中的至少一个:与在所述应用的执行期间被调取的每个方法有关的数据、程序在方法内花费的总时间、调取方法的次数、每调取的平均时间、在所述应用的启动期间存储在存储器中的数据、在所述应用的运行时期间存储在存储器中的数据、跨所述应用的调用未改变的数据、跨所述应用的调用能够存留的数据和同一应用的多个调用能够共享的只读数据;
使用所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;
基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;
根据所述应用的所述存储器配置数据识别要存储在非易失性存储器NVM中的数据;并且
将所述数据存储在所述NVM中。
2.根据权利要求1所述的方法,进一步包括:
在所述应用的执行期间使用所述NVM中的所述数据。
3.根据权利要求1所述的方法,其中,所述数据包括跨所述应用的调用保持未改变的数据。
4.根据权利要求1所述的方法,其中,所述数据包括由所述应用的多个调用共享的数据。
5.根据权利要求4所述的方法,其中,由所述应用的多个调用共享的所述数据包括只读数据。
6.根据权利要求1所述的方法,其中,生成包括所述应用的所述存储器配置数据的所述配置数据包括:
利用代表数据运行所述测量代码。
7.一种用于存储数据的系统,包括:
编译器,用于:
将应用的源代码编译为测量代码,以生成所述应用的配置数据,其中,所述配置数据包括与由所述应用对易失性存储器的存储器使用有关的存储器配置数据,并且其中所述存储器配置数据包括以下项中的至少一个:与在所述应用的执行期间被调取的每个方法有关的数据、程序在方法内花费的总时间、调取方法的次数、每调取的平均时间、在所述应用的启动期间存储在存储器中的数据、在所述应用的运行时期间存储在存储器中的数据、跨所述应用的调用未改变的数据、跨所述应用的调用能够存留的数据和同一应用的多个调用能够共享的只读数据;
使用所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;
基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;并且
根据所述应用的所述存储器配置数据识别要存储在能够由所述系统的中央处理单元寻址的非易失性存储器NVM中的数据;以及
加载器,用于:
将所述数据存储在所述NVM中;并且
在所述应用的执行期间使用存储在所述NVM中的所述数据。
8.根据权利要求7所述的系统,其中,所述非易失性存储器包括非易失性双列直插式存储器模块NVDIMM。
9.根据权利要求7所述的系统,其中,所述测量代码包括附加代码,所述附加代码添加到所述源代码以执行与所述应用有关的分析。
10.根据权利要求7所述的系统,其中,所述数据包括跨所述应用的调用存留的数据。
11.根据权利要求7所述的系统,其中,所述配置数据文件被存储在文件中。
12.一种包括指令的非暂时性机器可读存储介质,所述指令能够由处理器执行以:
将应用的源代码编译为测量代码,以生成所述应用的配置数据,其中,所述配置数据包括与所述应用的存储器使用有关的存储器配置数据,并且其中所述存储器配置数据包括以下项中的至少一个:与在所述应用的执行期间被调取的每个方法有关的数据、程序在方法内花费的总时间、调取方法的次数、每调取的平均时间、在所述应用的启动期间存储在存储器中的数据、在所述应用的运行时期间存储在存储器中的数据、跨所述应用的调用未改变的数据、跨所述应用的调用能够存留的数据和同一应用的多个调用能够共享的只读数据;
通过利用代表数据运行所述测量代码来生成包括所述应用的所述存储器配置数据的所述配置数据;
基于包括所述应用的所述存储器配置数据的所述配置数据来重新编译所述应用;并且
根据所述应用的所述存储器配置数据识别要存储在非易失性存储器NVM中的数据;并且
将所述数据存储在所述NVM中。
13.根据权利要求12所述的存储介质,其中,将所述数据存储在所述NVM中的所述指令包括使用NVM库的应用编程接口API将所述数据写入到所述NVM的指令。
14.根据权利要求12所述的存储介质,进一步包括将所述配置数据存储在文件中的指令。
15.根据权利要求12所述的存储介质,进一步包括在所述应用的执行期间识别所述NVM中的所述数据的指令。
16.根据权利要求12所述的存储介质,其中,将所述数据存储在所述NVM中的所述指令包括使加载器将所述数据加载在所述NVM中的指令。
17.根据权利要求12所述的存储介质,其中,所述非易失性存储器包括相变存储器PCM和忆阻器中的至少一个。
18.根据权利要求12所述的存储介质,其中,基于所述配置数据重新编译所述应用的所述指令包括访问存储在文件中的所述配置数据的指令。
19.根据权利要求12所述的存储介质,其中,所述存储器配置数据与易失性存储器的存储器使用有关。
20.根据权利要求12所述的存储介质,其中,所述非易失性存储器能够由所述处理器寻址。
CN201810782729.7A 2017-07-17 2018-07-17 用于存储数据的方法和系统、以及存储介质 Active CN109271164B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/651,376 2017-07-17
US15/651,376 US10359971B2 (en) 2017-07-17 2017-07-17 Storing memory profile data of an application in non-volatile memory

Publications (2)

Publication Number Publication Date
CN109271164A CN109271164A (zh) 2019-01-25
CN109271164B true CN109271164B (zh) 2022-12-20

Family

ID=63165150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810782729.7A Active CN109271164B (zh) 2017-07-17 2018-07-17 用于存储数据的方法和系统、以及存储介质

Country Status (3)

Country Link
US (1) US10359971B2 (zh)
EP (1) EP3438814B1 (zh)
CN (1) CN109271164B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10812406B2 (en) * 2017-11-08 2020-10-20 International Business Machines Corporation Assigning processing elements to stream computing servers
US10901658B2 (en) * 2018-12-28 2021-01-26 Micron Technology, Inc. Host adaptive memory device optimization
CN115080151B (zh) * 2022-07-22 2023-07-14 平安银行股份有限公司 App启动流程控制方法、计算机可读存储介质及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574626B1 (en) * 2000-09-29 2003-06-03 Agilent Technologies, Inc. Method and apparatus for administration of extended memory
CN102880497A (zh) * 2012-09-28 2013-01-16 无锡江南计算技术研究所 一种编译器及软件管理存储器的重用优化方法
CN103049268A (zh) * 2012-12-25 2013-04-17 中国科学院深圳先进技术研究院 一种基于Naplet的应用开发管理系统
CN103339621A (zh) * 2011-11-07 2013-10-02 辉达公司 用于gpu计算编译器中的过程间存储器地址空间优化的技术
CN103999038A (zh) * 2011-12-28 2014-08-20 英特尔公司 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6971091B1 (en) * 2000-11-01 2005-11-29 International Business Machines Corporation System and method for adaptively optimizing program execution by sampling at selected program points
US20030140337A1 (en) 2001-12-21 2003-07-24 Celoxica Ltd. System, method, and article of manufacture for data transfer reporting for an application
US7367024B2 (en) 2004-09-21 2008-04-29 University Of Maryland Compiler-driven dynamic memory allocation methodology for scratch-pad based embedded systems
US20100169602A1 (en) 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US20110209128A1 (en) * 2010-02-24 2011-08-25 Nokia Corporation Systems, methods and apparatuses for facilitating targeted compilation of source code
DE102010039021B4 (de) * 2010-08-06 2023-02-23 Robert Bosch Gmbh Verfahren zur Rekonfiguration von Softwareparametern in einem Mikrocontroller sowie Mikrocontroller und Steuergerät
FR2971349B1 (fr) * 2011-02-09 2015-12-04 Continental Automotive France Procede de reprogrammation d'un calculateur, support de memorisation de donnees et calculateur de vehicule automobile
US8819382B2 (en) 2012-08-09 2014-08-26 Apple Inc. Split heap garbage collection
US9952879B2 (en) * 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory
US20160274999A1 (en) * 2014-05-20 2016-09-22 Samsung Electronics Co., Ltd. Distributed test and profiler framework
US9841914B2 (en) 2015-05-05 2017-12-12 Sap Se Managed energy-efficient hybrid main memory systems
US10031736B2 (en) * 2015-09-29 2018-07-24 Quanta Computer Inc. Automatic system software installation on boot

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574626B1 (en) * 2000-09-29 2003-06-03 Agilent Technologies, Inc. Method and apparatus for administration of extended memory
CN103339621A (zh) * 2011-11-07 2013-10-02 辉达公司 用于gpu计算编译器中的过程间存储器地址空间优化的技术
CN103999038A (zh) * 2011-12-28 2014-08-20 英特尔公司 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备
CN102880497A (zh) * 2012-09-28 2013-01-16 无锡江南计算技术研究所 一种编译器及软件管理存储器的重用优化方法
CN103049268A (zh) * 2012-12-25 2013-04-17 中国科学院深圳先进技术研究院 一种基于Naplet的应用开发管理系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Framework of distributed controlling via smartphone for industrial automation application;PHUA GING SHENG;《https://plh.utem.edu.my/cgi-bin/koha/opac-detail.pl?biblionumber=92055》;20150904;1-24 *
NPAM: NVM-Aware Page Allocation for Multi-Core Embedded Systems;Farimah R. Poursafaei等;《IEEE Transactions on Computers ( Volume: 66, Issue: 10, 01 October 2017)》;20170511;1704-1716 *
手机软件开发中的程序加载方法研究及应用;谷长龙;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100115;I138-65 *
面向非易失性片上存储的编译技术研究;李清安;《中国博士学位论文全文数据库 信息科技辑》;20140515;I138-22 *

Also Published As

Publication number Publication date
CN109271164A (zh) 2019-01-25
EP3438814A1 (en) 2019-02-06
EP3438814B1 (en) 2024-04-17
US20190018610A1 (en) 2019-01-17
US10359971B2 (en) 2019-07-23

Similar Documents

Publication Publication Date Title
US8843912B2 (en) Optimization of an application to reduce local memory usage
US9563446B2 (en) Binary file generation
US8286152B2 (en) Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
CN109271164B (zh) 用于存储数据的方法和系统、以及存储介质
US10884761B2 (en) Best performance delivery in heterogeneous computing unit environment
US9323508B2 (en) Method and system for compiler optimization
US20090228875A1 (en) Method and System for Reducing Disk Allocation by Profiling Symbol Usage
US9710355B2 (en) Selective loading of code elements for code analysis
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
JP2022545012A (ja) メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存
WO2012010419A1 (en) A string cache file for optimizing memory usage in a java virtual machine
US10860499B2 (en) Dynamic memory management in workload acceleration
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
US8521760B2 (en) Dynamic translator for requests for system resources
US20150020056A1 (en) Methods and systems for file processing
US10552135B1 (en) Reducing a size of an application package
WO2016044501A1 (en) Selectively loading precompiled header(s) and/or portion(s) thereof
US8930683B1 (en) Memory order tester for multi-threaded programs
US11249733B2 (en) Electronic apparatus and control method thereof
US9747146B2 (en) Method and system for memory access protection
US9348621B2 (en) Using hardware transactional memory for implementation of queue operations
Yannes et al. Amniote: A User Space Interface to the Android Runtime.
WO2023065861A1 (en) Application migration assessment
JP3917079B2 (ja) 最適なアクセス戦略の決定方法
Kim et al. LASER: Latency-Aware Segment Relocation for non-volatile memory

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