CN116450361B - 一种内存预测方法、装置及存储介质 - Google Patents

一种内存预测方法、装置及存储介质 Download PDF

Info

Publication number
CN116450361B
CN116450361B CN202310590446.3A CN202310590446A CN116450361B CN 116450361 B CN116450361 B CN 116450361B CN 202310590446 A CN202310590446 A CN 202310590446A CN 116450361 B CN116450361 B CN 116450361B
Authority
CN
China
Prior art keywords
instruction
memory
information table
source file
instruction information
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
CN202310590446.3A
Other languages
English (en)
Other versions
CN116450361A (zh
Inventor
陈芙蕖
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.)
Nanjing Semidrive Technology Co Ltd
Original Assignee
Nanjing Semidrive Technology Co Ltd
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 Nanjing Semidrive Technology Co Ltd filed Critical Nanjing Semidrive Technology Co Ltd
Priority to CN202310590446.3A priority Critical patent/CN116450361B/zh
Publication of CN116450361A publication Critical patent/CN116450361A/zh
Application granted granted Critical
Publication of CN116450361B publication Critical patent/CN116450361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种内存预测方法、装置及存储介质。该方法包括:获取目标任务的源文件;对源文件进行编译处理,得到汇编源文件,汇编源文件包括至少一条指令,至少一条指令中的每条指令对应一个唯一的位置标识;根据汇编源文件,构建目标任务对应的指令信息表,指令信息表包括各指令的指令类型、操作数据和位置标识;根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值。本申请提供的内存预测方法可根据源文件中的指令类型、操作数据和位置标识就能够进行内存消耗的预测,如此可在目标任务运行之前,为内存资源的申请、管理和准备提供依据。

Description

一种内存预测方法、装置及存储介质
技术领域
本申请涉及内存预测领域,尤其涉及一种内存预测方法、装置及存储介质。
背景技术
内存预测有助于:合理申请内存资源,避免内存浪费或短缺;实时动态地为各计算任务合理分配内存资源;针对可能发生内存需求陡增的突发事件,提前准备内存资源。
目前常用的内存预测往往基于系统内存使用情况的历史数据和当前的任务执行情况进行趋势预测,具有一定局限性,特别是在长期预测方面,准确度欠佳。
发明内容
本申请提供一种内存预测方法、装置及存储介质。
根据本申请实施例第一方面,提供一种内存预测方法,包括:获取目标任务的源文件;对源文件进行编译处理,得到汇编源文件,汇编源文件包括至少一条指令,至少一条指令中的每条指令对应一个唯一的位置标识;根据汇编源文件,构建目标任务对应的指令信息表,指令信息表包括各指令的指令类型、操作数据和位置标识;根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值。
根据本申请一实施例,在根据汇编源文件,构建目标任务对应的指令信息表之后,该方法还包括:根据指令所在的程序结构,对指令信息表进行调整。
根据本申请一实施例,根据指令所在的程序结构,对指令信息表进行调整,包括:若指令所在的程序结构为条件分支程序结构,则遍历条件分支程序结构的每一条件分支,得到与每一条件分支对应的指令类型、操作数据和位置标识;将与每一条件分支对应的指令类型、操作数据和位置标识,添加至指令信息表。
根据本申请一实施例,根据指令所在的程序结构,对指令信息表进行调整,包括:若指令所在的程序结构为循环程序结构,则根据循环次数,将循环程序结构内的指令类型、操作数据和位置标识,重复添加至指令信息表。
根据本申请一实施例,根据汇编源文件,构建目标任务对应的指令信息表,包括:根据汇编源文件,确定每一指令类型在每一位置标识上对应的操作数据所占的字节数;将字节数存储至指令信息表中,作为相应指令类型、相应位置标识对应的操作数据的值。
根据本申请一实施例,指令运行时内存预测模型包括运行时内存预测子模型和与每一指令类型对应的内存消耗类型子模型,相应地,根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值,包括:根据指令信息表中的每一指令的指令类型对应的内存消耗类型子模型,确定相应指令对应的内存消耗类型;根据指令信息表中的每一指令的位置标识,确定相应指令与其他指令之间的关联关系,形成相应指令对应的关联网络;根据指令信息表中的每一指令对应的内存消耗类型、关联关系网络和运行时内存预测子模型,确定目标任务随时间变化的内存指标值。
根据本申请一实施例,在根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值之前,还包括:获取训练任务的源文件作为训练样本数据;对训练任务的源文件进行编译处理,得到训练汇编源文件;根据训练汇编源文件中各指令的指令类型、操作数据和位置标识,构建训练任务对应的训练指令信息表;确定训练任务随时间变化的实际内存指标值;根据训练任务对应的训练指令信息表和训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新神经网络模型及神经网络模型的参数,得到指令运行时内存预测模型。
根据本申请一实施例,在对预先建立的神经网络模型进行训练之前,还包括:建立神经网络模型;确定神经网络模型的参数的初始值。
根据本申请一实施例,根据训练任务对应的训练指令信息表和训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新神经网络模型及神经网络模型的参数,包括:根据训练指令信息表和神经网络模型,确定训练任务随时间变化的预测内存指标值;确定预测内存指标值和实际内存指标值的差异值;根据差异值,更新神经网络模型及神经网络模型的参数,以使得差异值最小化。
根据本申请一实施例,确定训练任务随时间变化的实际内存指标值,包括:执行训练任务,并记录下训练任务随时间变化的实际内存指标值。
根据本申请一实施例,源文件包括以下至少一种源文件:高级编程语言源文件;硬件描述语言源文件;硬件验证语言源文件。
根据本申请实施例第二方面,提供一种内存预测装置,包括:源文件获取模块,用于获取目标任务的源文件;编译模块,用于对源文件进行编译处理,得到汇编源文件,汇编源文件包括至少一条指令,至少一条指令中的每条指令对应一个唯一的位置标识;指令信息表构建模块,用于根据汇编源文件,构建目标任务对应的指令信息表,指令信息表包括各指令的指令类型、操作数据和位置标识;内存预测模块,用于根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值。
根据本申请实施例第三方面,提供一种存储有计算机指令的计算机可读存储介质,其中,计算机指令用于使计算机执行上述任一项内存预测方法。
本申请提供了一种内存预测方法、装置及存储介质,该方法包括:首先,将目标任务的源文件编译成汇编源文件;然后,根据汇编源文件中的指令及指令的位置标识,构建目标任务对应的指令信息表;之后,将指令信息表作为模型的输入之一,输入到指令运行时内存预测模型,以根据模型的输出预测目标任务随时间变化的内存指标值。如此,只需根据目标任务源文件中的指令类型、操作数据和位置标识就能进行内存消耗的预测,从而在目标任务运行之前,为内存资源的申请、管理和准备提供依据。
需要理解的是,本申请的实施并不需要实现上面的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本申请一实施例实现内存预测方法的流程示意图;
图2为本申请另一实施例基于指令运行时内存预测模型实现内存预测方法的数据转换流程示意图;
图3为图2所示实施例的模型输出示意图;
图4为图2所示实施例的模型训练方法的流程示意图;
图5为本申请另一实施例基于指令运行时内存预测模型实现内存预测方法的流程示意图;
图6为本申请实施例内存预测装置的结构示意图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
图1示出了本申请实施例实现内存预测方法的主要流程,参见图1,该方法包括:
操作S110,获取目标任务的源文件;
其中,目标任务指待预测运行时内存消耗情况的计算机可执行任务,可以是一段程序、一个脚本、一个应用或实现某一功能的一组程序、一套脚本或是一系列应用等。
源文件指由终端或输入设备输入的源程序和数据所形成的文件,通常是由人类可理解的自然语言或高级编程语言编写而成的。
操作S120,对源文件进行编译处理,得到汇编源文件,汇编源文件包括至少一条指令,至少一条指令中的每条指令对应一个唯一的位置标识;
其中,汇编源文件指通过汇编语言描述操作或数据的文件,例如,扩展名为.asm的文件。
汇编语言属于底层机器描述语言,使用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的。
汇编源文件的指令指代替机器指令操作码的助记符,例如:指令“ADD”代表加法操作指令;指令“SUB”代表减法操作指令;指令“INC”代表增加1;指令“DEC”代表减去1;指令“MOV”代表变量传递等等。
每条指令对应的位置标识指用于表征指令执行顺序的标识。可以通过“文件名+行号”的方式来确定每条指令对应的位置标识;也可以通过遍历汇编文件后得到了一个指令执行序列,将指令在该执行序列中的序号,确定为该指令对应的位置标识。通过位置标识,还可以获知指令所在程序的程序结构。
当目标任务对应的汇编源文件中包括两个及以上的指令时,根据位置标识可以确定各个指令的执行顺序,特别是每个指令之前执行的指令和每个指令之后执行的指令。而每个指令之前执行的指令和每个指令之后执行的指令,还可以作为该指令运行时的上下文信息,为确定运行时随时间变化的内存指标值提供更加丰富和更为准确的预测依据。
编译处理主要指使用编译器将源文件转换为汇编源文件的操作。
通常,程序员在写代码的时候都会随意设置函数或接口的名字,如果使用源文件中的函数或接口作为样本数据,会造成函数或接口数量过大,而针对每一函数或接口的样本又过少,很难达到预期的模型精度和预测效果。使用编译器将源文件转换为汇编源文件之后,就可将程序与随意设置的函数或接口转化为统一的指令集,并使用统一指令集中的指令作为样本数据。如此,不管是使用哪种语言编写的源文件,只要可以编译成汇编源文件,就可以作为训练样本数据,大大提高了样本数据的数量和质量,使模型训练更为高效,更易于得到预测效果较好且模型精度较高的指令运行时内存预测模型。
操作S130,根据汇编源文件,构建目标任务对应的指令信息表,指令信息表包括各指令的指令类型、操作数据和位置标识;
其中,指令类型可以是指令本身,例如,“ADD”、“PUSH”这样的具体指令;也可以是一类操作或运行原理相近的指令,例如“传送指令”、“逻辑运算指令”、“移位指令”、“位操作指令”、“控制转移指令”、“串操作指令”和“输入输出指令”等。
操作数据主要指根据指令的操作数据所确定的与目标任务运行时所需内存空间相关的值。例如,根据操作的数据类型和数据数量所确定的操作数据在目标任务运行时所需的内存空间大小。
指令信息表泛指表征指令类型、操作数据和位置标识之间关系的一组数据,可以存储在任何数据存储介质中,例如,数据库、文件、LDAP服务器或配置管理服务器中。在内存中,也可以使用数组、哈希、集合等任何适用的数据结构。
操作S140,根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值。
其中,内存指标值指用于表征内存消耗情况的指标值,例如,已使用的内存空间大小、可供使用的内存空间大小、已使用的内存空间大小占总内存空间大小的百分比等。
指令运行时内存预测模型是用于学习指令类型、操作数据、位置标识和运行时内存指标值之间关联关系的模型,可以是传统意义上的统计学模型,也可以是基于神经网络的机器学习模型。
若指令运行时内存预测模型支持指令信息表格式的输入数据,则可以将指令信息表直接输入指令运行时内存预测模型;若指令运行时内存预测模型不支持指令信息表格式的输入数据,则可以通过编码或数据转换将指令信息表转换为指令运行时内存预测模型所支持的格式,然后再输入到指令运行时内存预测模型。
指令运行时内存预测模型的输出是预测得到的目标任务随时间变化的内存指标值,通常是一个时间序列,即一个时间点对应一个或一组内存指标值。
本申请实施例通过获取目标任务的源文件并将其编译为汇编源文件,就可以根据汇编源文件中的指令信息预测目标任务运行时的内存消耗情况。
如此,在目标任务运行之前,就能够对目标任务运行时的内存消耗情况进行预测和评估,从而在申请运行环境时,可以给出一个较为合理的内存空间申请,避免内存空间浪费。
此外,对于一些可能引起运行时内存空间消耗陡增的目标任务,在运行前就可以提前做好准备,避免运行时才发现内存紧缺,而无法临时调配足够的内存资源。
由于本申请实施例是根据汇编语言源文件中的指令信息构建指令信息表的,而大部分高级程序语言的编译过程会包括以下两个阶段:第一阶段,从高级程序语言编译为汇编语言;第二阶段,从汇编语言编译为机器语言。因此,无论目标任务的源文件是通过何种高级程序语言编写的,大都可以编译为汇编语言,进而使本申请内存预测方法适用于大部分高级程序语言所编写的目标任务,应用范围较广。
图2示出了本申请一实施例使用指令运行时内存预测模型实现内存预测方法的数据转换过程。在本实施例中,指令运行时内存预测模型是基于神经网络模型,通过训练数据进行机器学习机制学习指令类型、指令数量、数据类型、数据数量以及程序结构(通过位置标识表征)与内存消耗之间的关系而得到的。
如图2所示,在本实施例中,指令运行时内存预测模型实现内存预测方法的主要过程包括:对目标任务的多个源文件201进行编译得到相应的多个汇编源文件202;根据多个汇编源文件202构建相应的多个指令信息表203;对多个指令信息表203进行特征提取和编码得到相应的多个输入向量204;将输入向量204输入到指令运行时内存预测模型205,得到相应的多个随时间变化的内存指标值206。
在本实施例中,所使用到的源文件201包括:高级编程语言源文件(例如,扩展名为“.c”的C语言程序文件);使用硬件描述语言和硬件验证语言编写的芯片设计源文件(例如,systemverilog、verilog)。
在本实施例中,是通过如下方式确定指令信息表的:根据汇编源文件202,确定每一指令类型在每一位置标识上对应的操作数据所占的字节数;将字节数存储至指令信息表203中,作为相应指令类型、相应位置标识对应的操作数据的值。
具体地,假设在本实施例中,编译得到的汇编源文件202中存在如下的汇编语言代码:
22 ADD AX,30H;
其中,“22”为行号;“ADD”为指令;“AX”为一寄存器;“30H”为一数值。
在本实施例中,构建的指令信息表包括指令类型字段“Ins”、位置标识字段“Site”和根据存储指令操作数和操作码所占用的内存空间大小的操作数据字段“Value”。针对该指令“ADD AX,30H”,可将指令类型字段“Ins”设为“ADD”、位置标识字段“Site”设为“汇编源文件202+22”、操作数据字段“Value”设为该指令存储指令操作数和操作码所占用的内存空间大小,假设存储指令操作数和操作码所占用的内存空间大小的值为Value(Ins,site),得到如表1所示的如下指令信息表:
表1
此外,在本实施例中,还会根据指令所在的程序结构,对指令信息表进行调整。
例如,对于条件结构而言,由于各个条件分支可能产生的内存消耗情况不同,可根据各种条件,罗列所有可能的情况并将每种情况都视为会执行对应的操作,对每种情况进行内存消耗的预测,最终输出时取内存消耗最大的值,以确保执行时内存空间足够。
示例性地,若指令所在的程序结构为条件分支程序结构,则遍历条件分支程序结构的每一条件分支,得到与每一条件分支对应的指令类型、操作数据和位置标识;将与每一条件分支对应的指令类型、操作数据和位置标识,添加至指令信息表。
具体地,假设在本实施例中,编译得到的汇编源文件202中存在如下的汇编语言代码:
// 1. 判断条件
CMP w0,w1
B.LT loc_1000067C4
/结合这两句代码表示,判断(CMP) w0 和 w1 的比较结果是否小于。如果是小于,则执行标号(loc_1000067C4)以下的代码,否则不跳转继续执行下面的代码。/>/
// 2. 不满足条件不跳转继续执行
LDR w8, [SP,#0x10+var_4]
STR w8, [SP,#0x10+var_C]
// 3. 满足条件跳转标号执行
loc_1000067C4;
CODE XREF: _func+1C↑j
LDR w8, [SP,#0x10+var_8]
STR w8, [SP,#0x10+var_C]
对于上述条件结构而言,可遍历条件结构的每一条件分支,如w0小于w1,w0大于w1,w0等于w1。在指令信息表中,为每一条件分支都构建一条相应的记录,以预测每一条件分支的内存消耗情况,在输出预测结果时,将所有条件分支对应的预测结果都设置为内存消耗最大的那一条件分支的预测结果。
对循环结构而言,根据循环的次数,可在指令信息表中,为每一次循环都创建一条相应的记录。
示例性地,若指令所在的程序结构为循环程序结构,则根据循环次数,将循环程序结构内的指令类型、操作数据和位置标识,重复添加至指令信息表。
具体地,假设在本实施例中,编译得到的汇编源文件202中存在如下的汇编语言代码:
start:
mov ax, 2
mov cx, 4
s:
add ax, ax
loop s
其中,
ax寄存器为累加器(Accumulator),主要用于存放数据,例如算术、逻辑运算种的操作数或结果;
cx 寄存器为计数寄存器(CountRgister),主要用于存放计算值。例如在移位指令、循环(loop)和串处理指令种用作隐含的技术其访问存储器时所使用的地址。
由于cx为4,这就意味着代码里“s”至“loop s”之间的代码“add ax, ax”会循环4次,可展开为4个“add ax, ax”。并在指令信息表中添加相应的信息。
在本实施例中,通过上述方式构建指令信息表可充分考虑到程序结构对内存消耗的影响,使运行时内存消耗的预测更为准确。
图3示出了本实施例指令运行时内存预测模型205输出的随时间变化的内存指标值206。
如图3所示,在本实施例中,随时间变化的内存指标值206为一时间序列,可表示为横轴为时间纵轴为内存指标值的一条曲线,每个时间点对应一个内存指标值。
图4示出了本实施例指令运行时内存预测模型205的训练过程。
其中,指令运行时内存预测模型205是基于神经网络的机器学习模型。在将指令运行时内存预测模型205投入使用之前,首先要通过大量的训练数据对预先建立的神经网络模型其进行训练,以使得指令运行时内存预测模型205学习到输入和输出数据之间的关系,并达到预期的模型精度。
在训练指令运行时内存预测模型205之前,还需要根据专家经验或领域知识建立神经网络模型;确定神经网络模型的参数的初始值。之后,就可以对指令运行时内存预测模型205进行训练了。
如图4所示,指令运行时内存预测模型205的训练过程,包括:
操作S410,获取训练任务的源文件作为训练样本数据;
操作S420,对训练任务的源文件进行编译处理,得到训练汇编源文件;
操作S430,根据训练汇编源文件中各指令的指令类型、操作数据和位置标识,构建训练任务对应的训练指令信息表;
操作S440,确定训练任务随时间变化的实际内存指标值;
在本实施例中,是通过执行训练任务,并记录下训练任务随时间变化的实际内存指标值,来确定训练任务随时间变化的实际内存指标值的。
操作S450,根据训练任务对应的训练指令信息表和训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新神经网络模型及神经网络模型的参数,得到指令运行时内存预测模型。
具体地,可根据训练指令信息表和神经网络模型,确定训练任务随时间变化的预测内存指标值;确定预测内存指标值和实际内存指标值的差异值;根据差异值,更新神经网络模型及神经网络模型的参数,以使得差异值最小化。
在如图2所述的本实施例中,通过基于神经网络模型的指令运行时内存预测模型205实现内存预测方法,通过机器学习得到的指令类型、操作数据以及位置标识与运行时内存消耗之间的关系可以伴随训练过程不断调整优化,更为灵活也更为精准,而伴随实际应用的数据又转换为训练样本数据,对指令运行时内存预测模型205进行持续训练和更新,还可使得指令运行时内存预测模型205的预测精度不断提升。
图5示出了本申请另一实施例实现内存预测方法所使用的指令运行时内存预测模型。
如图5所示,在本实施例中,指令运行时内存预测模型包括运行时内存预测子模型507和与每一指令类型对应的内存消耗类型子模型(例如ADD子模型502和PUSH子模型503)。在根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值,包括如下分支和操作:
第一分支,根据指令信息表(输入向量501)中的每一指令的指令类型和操作数据5011确定与指令类型对应的内存消耗类型子模型(假设为ADD子模型502),根据内存消耗类型子模型(假设为ADD子模型502)、指令类型和操作数据5011确定相应指令对应的内存消耗类型505;
第二分支,根据指令信息表(输入向量501)指令信息表中的每一指令的指令类型和位置标识5012,通过指令关系网络生成504,确定相应指令与其他指令之间的关联关系,形成相应指令对应的关联网络,指令关系网络506;
将第一分支和第二分支的输出结果:根据指令信息表中的每一指令对应的内存消耗类型505和指令关系网络506都输入到运行时内存预测子模型507,确定目标任务随时间变化的内存指标值508。
其中,每种汇编指令例如ADD、MOV、PUSH都可视为一种模式,不同模式,对内存的消耗不同。
而每条指令之前的指令执行对后面的内存也有一定影响,因此还可以融合执行指令的上下环境影响,也就是指令关系网络进行训练。
具体地,假设根据位置标识确定的当前指令是INSTRUCT_CURRENT,其地址为ADDR_PC;假设指令INSTRUCT_CURRENT前面执行的指令是INSTRUCT_OLD。
首先,将汇编每个指令类型作为一个网络节点,总共INSTRUCT_LENGTH层节点层;然后,从执行INSTRUCT_OLD开始到执行INSTRUCT_CURRENT结束的过程中,依据指令执行的顺序和调用关系,顺序连接所执行指令对应的指令类型节点,没有执行的指令类型节点就不连接,如此即可得到每一指令对应的关联关系网络CONNECT_NET。
在对图5所示的指令运行时内存预测模型进行训练时,可以对运行时内存预测子模型507和与每一指令类型对应的内存消耗类型子模型(例如ADD子模型502和PUSH子模型503)进行联合训练。
如此,通过每一指令类型对应的内存消耗类型子模型匹配不同指令类型的内存消耗类型,并融入指令关系网络506作为执行时内存消耗的上下文,可使得指令运行时内存预测模型得到的预测结果更为精准。
进一步地,本申请实施例还提供一种内存预测装置。如图6所示,该装置60包括:源文件获取模块601,用于获取目标任务的源文件;编译模块602,用于对源文件进行编译处理,得到汇编源文件,汇编源文件包括至少一条指令,至少一条指令中的每条指令对应一个唯一的位置标识;指令信息表构建模块603,用于根据汇编源文件,构建目标任务对应的指令信息表,指令信息表包括各指令的指令类型、操作数据和位置标识;内存预测模块604,用于根据指令信息表和指令运行时内存预测模型,确定目标任务随时间变化的内存指标值。
根据本申请一实施例,该装置60还包括:指令信息表调整模块,用于根据指令所在的程序结构,对指令信息表进行调整。
根据本申请一实施例,指令信息表调整模块具体用于:若指令所在的程序结构为条件分支程序结构,则遍历条件分支程序结构的每一条件分支,得到与每一条件分支对应的指令类型、操作数据和位置标识;将与每一条件分支对应的指令类型、操作数据和位置标识,添加至指令信息表。
根据本申请一实施例,指令信息表调整模块具体用于:若指令所在的程序结构为循环程序结构,则根据循环次数,将循环程序结构内的指令类型、操作数据和位置标识,重复添加至指令信息表。
根据本申请一实施例,指令信息表构建模块603包括:指令信息确定子模块,用于根据汇编源文件,确定每一指令类型在每一位置标识上对应的操作数据所占的字节数;指令信息存储子模块,用于将字节数存储至指令信息表中,作为相应指令类型、相应位置标识对应的操作数据的值。
根据本申请一实施例,指令运行时内存预测模型包括运行时内存预测子模型和与每一指令类型对应的内存消耗类型子模型,相应地,内存预测模块604包括:内存消耗类型子模块,用于根据指令信息表中的每一指令的指令类型对应的内存消耗类型子模型,确定相应指令对应的内存消耗类型;关联网络生成子模块,用于根据指令信息表中的每一指令的位置标识,确定相应指令与其他指令之间的关联关系,形成相应指令对应的关联网络;运行时内存预测子模块,用于根据指令信息表中的每一指令对应的内存消耗类型、关联关系网络和运行时内存预测子模型,确定目标任务随时间变化的内存指标值。
根据本申请一实施例,源文件获取模块601还用于获取训练任务的源文件作为训练样本数据;编译模块602还用于对训练任务的源文件进行编译处理,得到训练汇编源文件;指令信息表构建模块603还用于根据训练汇编源文件中各指令的指令类型、操作数据和位置标识,构建训练任务对应的训练指令信息表;该装置60还包括:实际内存指标值确定模块,用于确定训练任务随时间变化的实际内存指标值;模型训练模块,用于根据训练任务对应的训练指令信息表和训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新神经网络模型及神经网络模型的参数,得到指令运行时内存预测模型。
根据本申请一实施例,该装置60还包括:模型建立模块,用于建立神经网络模型;模型初始化模块,用于确定神经网络模型的参数的初始值。
根据本申请一实施例,模型训练模块包括:内存预测子模块,用于根据训练指令信息表和神经网络模型,确定训练任务随时间变化的预测内存指标值;差异值确定子模块,用于确定预测内存指标值和实际内存指标值的差异值;模型更新子模块,用于根据差异值,更新神经网络模型及神经网络模型的参数,以使得差异值最小化。
根据本申请一实施例,实际内存指标值确定模块具体用于执行训练任务,并记录下训练任务随时间变化的实际内存指标值。
此外,本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,其中,计算机指令用于使计算机执行上述任一项内存预测方法。
这里需要指出的是:以上针对内存预测装置实施例的描述和以上针对计算机可读存储介质实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本申请对内存预测装置实施例的描述和以上对计算机可读存储介质实施例的描述尚未披露的技术细节,请参照本申请前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(ReadOnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种内存预测方法,包括:
获取目标任务的源文件;
对所述源文件进行编译处理,得到汇编源文件,所述汇编源文件包括至少一条指令,所述至少一条指令中的每条指令对应一个唯一的位置标识;
根据所述汇编源文件,构建所述目标任务对应的指令信息表,所述指令信息表包括各指令的指令类型、操作数据和位置标识;
根据所述指令信息表和指令运行时内存预测模型,确定所述目标任务随时间变化的内存指标值,所述指令运行时内存预测模型为预先训练完成的神经网络模型,所述指令运行时内存预测模型包括运行时内存预测子模型和与每一指令类型对应的内存消耗类型子模型;
其中,所述根据所述汇编源文件,构建所述目标任务对应的指令信息表,包括:根据所述汇编源文件,确定每一指令类型在每一位置标识上对应的操作数据所占的字节数;将所述字节数存储至所述指令信息表中,作为相应指令类型、相应位置标识对应的操作数据的值;
所述根据所述指令信息表和指令运行时内存预测模型,确定所述目标任务随时间变化的内存指标值,包括:
根据所述指令信息表中的每一指令的指令类型对应的内存消耗类型子模型,确定相应指令对应的内存消耗类型;根据所述指令信息表中的每一指令的位置标识,确定相应指令与其他指令之间的关联关系,形成相应指令对应的关联关系网络;根据所述指令信息表中的每一指令对应的内存消耗类型、关联关系网络和所述运行时内存预测子模型,确定所述目标任务随时间变化的内存指标值。
2.根据权利要求1所述的方法,在所述根据所述汇编源文件,构建所述目标任务对应的指令信息表之后,所述方法还包括:
根据所述指令所在的程序结构,对所述指令信息表进行调整。
3.根据权利要求2所述的方法,所述根据所述指令所在的程序结构,对所述指令信息表进行调整,包括:
若所述指令所在的程序结构为条件分支程序结构,则遍历所述条件分支程序结构的每一条件分支,得到与每一条件分支对应的指令类型、操作数据和位置标识;
将所述与每一条件分支对应的指令类型、操作数据和位置标识,添加至所述指令信息表。
4.根据权利要求2所述的方法,所述根据所述指令所在的程序结构,对所述指令信息表进行调整,包括:
若所述指令所在的程序结构为循环程序结构,则根据循环次数,将所述循环程序结构内的指令类型、操作数据和位置标识,重复添加至所述指令信息表。
5.根据权利要求1所述的方法,在所述根据所述指令信息表和指令运行时内存预测模型,确定所述目标任务随时间变化的内存指标值之前,还包括:
获取训练任务的源文件作为训练样本数据;
对所述训练任务的源文件进行编译处理,得到训练汇编源文件;
根据所述训练汇编源文件中各指令的指令类型、操作数据和位置标识,构建所述训练任务对应的训练指令信息表;
确定所述训练任务随时间变化的实际内存指标值;
根据所述训练任务对应的训练指令信息表和所述训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新所述神经网络模型及所述神经网络模型的参数,得到所述指令运行时内存预测模型。
6.根据权利要求5所述的方法,在所述对预先建立的神经网络模型进行训练之前,还包括:
建立所述神经网络模型;
确定所述神经网络模型的参数的初始值。
7.根据权利要求5所述的方法,所述根据所述训练任务对应的训练指令信息表和所述训练任务随时间变化的实际内存指标值,对预先建立的神经网络模型进行训练,以更新所述神经网络模型及所述神经网络模型的参数,包括:
根据所述训练指令信息表和所述神经网络模型,确定所述训练任务随时间变化的预测内存指标值;
确定所述预测内存指标值和所述实际内存指标值的差异值;
根据所述差异值,更新所述神经网络模型及所述神经网络模型的参数,以使得所述差异值最小化。
8.根据权利要求5所述的方法,所述确定所述训练任务随时间变化的实际内存指标值,包括:
执行所述训练任务,并记录下所述训练任务随时间变化的实际内存指标值。
9.根据权利要求1所述的方法,所述源文件包括以下至少一种源文件:
高级编程语言源文件;
硬件描述语言源文件;
硬件验证语言源文件。
10.一种内存预测装置,包括:
源文件获取模块,用于获取目标任务的源文件;
编译模块,用于对所述源文件进行编译处理,得到汇编源文件,所述汇编源文件包括至少一条指令,所述至少一条指令中的每条指令对应一个唯一的位置标识;
指令信息表构建模块,用于根据所述汇编源文件,构建所述目标任务对应的指令信息表,所述指令信息表包括各指令的指令类型、操作数据和位置标识;
内存预测模块,用于根据所述指令信息表和指令运行时内存预测模型,确定所述目标任务随时间变化的内存指标值,所述指令运行时内存预测模型为预先训练完成的神经网络模型,所述指令运行时内存预测模型包括运行时内存预测子模型和与每一指令类型对应的内存消耗类型子模型;
其中,所述指令信息表构建模块,具体用于根据所述汇编源文件,确定每一指令类型在每一位置标识上对应的操作数据所占的字节数;将所述字节数存储至所述指令信息表中,作为相应指令类型、相应位置标识对应的操作数据的值;
所述内存预测模块,具体用于根据所述指令信息表中的每一指令的指令类型对应的内存消耗类型子模型,确定相应指令对应的内存消耗类型;根据所述指令信息表中的每一指令的位置标识,确定相应指令与其他指令之间的关联关系,形成相应指令对应的关联关系网络;根据所述指令信息表中的每一指令对应的内存消耗类型、关联关系网络和所述运行时内存预测子模型,确定所述目标任务随时间变化的内存指标值。
11.一种存储有计算机指令的计算机可读存储介质,其中,所述计算机指令用于使计算机执行权利要求1-9中任一项所述的方法。
CN202310590446.3A 2023-05-23 2023-05-23 一种内存预测方法、装置及存储介质 Active CN116450361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310590446.3A CN116450361B (zh) 2023-05-23 2023-05-23 一种内存预测方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310590446.3A CN116450361B (zh) 2023-05-23 2023-05-23 一种内存预测方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN116450361A CN116450361A (zh) 2023-07-18
CN116450361B true CN116450361B (zh) 2023-09-29

Family

ID=87125828

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310590446.3A Active CN116450361B (zh) 2023-05-23 2023-05-23 一种内存预测方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116450361B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9329907B1 (en) * 2014-12-18 2016-05-03 International Business Machines Corporation Automated exploitation of virtual machine resource modifications
CN108509267A (zh) * 2017-02-28 2018-09-07 英特尔公司 运行时处理器优化
CN109558141A (zh) * 2018-11-28 2019-04-02 北京东土科技股份有限公司 一种最坏执行时间wcet的确定方法、装置和可读介质
CN111190604A (zh) * 2019-12-30 2020-05-22 航天信息股份有限公司 一种安卓应用内存混淆方法、装置、电子设备及介质
CN112084028A (zh) * 2020-09-07 2020-12-15 北京字节跳动网络技术有限公司 一种内存检测方法及装置
CN113268243A (zh) * 2021-05-11 2021-08-17 网易(杭州)网络有限公司 内存预测方法及装置、存储介质、电子设备
CN114443310A (zh) * 2022-03-17 2022-05-06 中国工商银行股份有限公司 资源调度方法、装置、设备、介质和程序产品
CN114741204A (zh) * 2022-05-10 2022-07-12 吉林大学 一种仿真模型的任务分解与并行求解的方法
CN114968552A (zh) * 2022-03-16 2022-08-30 中国工商银行股份有限公司 缓存分配方法、装置、设备、存储介质和程序产品

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324768B2 (en) * 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization
US20230153109A1 (en) * 2021-11-16 2023-05-18 Massachusetts Institute Of Technology System and method for analyzing and steering use of third-party libraries

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9329907B1 (en) * 2014-12-18 2016-05-03 International Business Machines Corporation Automated exploitation of virtual machine resource modifications
CN108509267A (zh) * 2017-02-28 2018-09-07 英特尔公司 运行时处理器优化
CN109558141A (zh) * 2018-11-28 2019-04-02 北京东土科技股份有限公司 一种最坏执行时间wcet的确定方法、装置和可读介质
CN111190604A (zh) * 2019-12-30 2020-05-22 航天信息股份有限公司 一种安卓应用内存混淆方法、装置、电子设备及介质
CN112084028A (zh) * 2020-09-07 2020-12-15 北京字节跳动网络技术有限公司 一种内存检测方法及装置
CN113268243A (zh) * 2021-05-11 2021-08-17 网易(杭州)网络有限公司 内存预测方法及装置、存储介质、电子设备
CN114968552A (zh) * 2022-03-16 2022-08-30 中国工商银行股份有限公司 缓存分配方法、装置、设备、存储介质和程序产品
CN114443310A (zh) * 2022-03-17 2022-05-06 中国工商银行股份有限公司 资源调度方法、装置、设备、介质和程序产品
CN114741204A (zh) * 2022-05-10 2022-07-12 吉林大学 一种仿真模型的任务分解与并行求解的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Residue buildup predictive modeling for stencil cleaning profile decision-making using recurrent neural network";Shrouq Alelaumi;《Robotics and Computer-Integrated Manufacturing》;第68卷;第102041页 *
"面向CUDA程序的性能预测框架";曲海成;《电子学报》;第48卷(第04期);第654-661页 *

Also Published As

Publication number Publication date
CN116450361A (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
US7325232B2 (en) Compiler for multiple processor and distributed memory architectures
Rosenmüller et al. Tailoring dynamic software product lines
Yamato Study and evaluation of automatic GPU offloading method from various language applications
KR101418969B1 (ko) 프로세서 및 컴파일 방법
JP5936118B2 (ja) コード変換方法、プログラム及びシステム
US20080282238A1 (en) Static type for late binding
Benelallam et al. Distributed model-to-model transformation with ATL on MapReduce
Wozniak et al. Turbine: A distributed-memory dataflow engine for high performance many-task applications
US20080295070A1 (en) Native access to foreign code environment
CN110598855B (zh) 深度学习模型生成方法、装置、设备及存储介质
CN114625351B (zh) 编译器优化方法、系统和存储介质
US20090328016A1 (en) Generalized expression trees
US20120036138A1 (en) Method and apparatus for design space exploration in high level synthesis
WO2009061146A2 (en) A method for software development and operation based on component reuse and dependency injection
CN1853164B (zh) 用于开发dsp编译器构件块的组合方法
CN102257478A (zh) 操作数据结构
Wozniak et al. Language features for scalable distributed-memory dataflow computing
Yin et al. Strategies to deploy and scale deep learning on the summit supercomputer
Hughes et al. Building Resource Adaptive Software Systems (BRASS) Objectives and System Evaluation
CN116450361B (zh) 一种内存预测方法、装置及存储介质
CN112631656A (zh) 一种基于源代码的智能合约优化方法及装置
CN114816532B (zh) 一种提高risc-v二进制代码密度的寄存器分配方法
US8793671B2 (en) Interface optimization in a closed system
Seiferth et al. Offsite autotuning approach: performance model driven autotuning applied to parallel explicit ODE methods
Dieterle et al. Iterating Skeletons: Structured Parallelism by Composition

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