CN110633105A - 指令序列处理方法、装置、电子设备和存储介质 - Google Patents

指令序列处理方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN110633105A
CN110633105A CN201910863889.9A CN201910863889A CN110633105A CN 110633105 A CN110633105 A CN 110633105A CN 201910863889 A CN201910863889 A CN 201910863889A CN 110633105 A CN110633105 A CN 110633105A
Authority
CN
China
Prior art keywords
instruction
sequence
target
instructions
instruction sequence
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.)
Granted
Application number
CN201910863889.9A
Other languages
English (en)
Other versions
CN110633105B (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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian 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 Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201910863889.9A priority Critical patent/CN110633105B/zh
Publication of CN110633105A publication Critical patent/CN110633105A/zh
Application granted granted Critical
Publication of CN110633105B publication Critical patent/CN110633105B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开涉及一种指令序列处理方法、装置、电子设备和存储介质。所述电子设备包括处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令以执行所述指令序列处理方法。本公开可以快速确定使得插入同步控制指令之后各指令之间并行度最大的插入位置。

Description

指令序列处理方法、装置、电子设备和存储介质
技术领域
本公开涉及计算机技术领域,特别是涉及一种指令序列处理方法、装置、电子设备和存储介质。
背景技术
由于随机生成的指令序列中会包含很多数据相关指令,需要插入许多同步控制指令来保证指令序列中指令的执行先后顺序。若指令序列中插入同步控制指令的位置不合适,会降低指令序列中各指令的并行执行程度,进而降低处理器的执行效率,使得无法有效验证多指令并行执行时处理器的性能。
发明内容
基于此,有必要针对上述技术问题,提供一种指令序列处理方法、装置、电子设备和存储介质,以使得在指令序列中插入同步控制指令之后,各指令之间并行度最大,从而提高处理器对该指令序列的执行效率。
根据本公开的第一方面,提供了一种指令序列处理方法,包括:
根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
根据本公开的第二方面,提供了一种指令序列处理装置,包括:位置调整模块,用于根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;插入模块,用于在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
根据本公开的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述第一方面所述的方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面所述的方法。
根据第一目标指令序列中各指令的类别,调整起始指令和终止指令为具备数据相关性的指令的第一目标指令序列中各指令的位置,得到第一目标指令序列对应的至少两个指令集合,第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合,进而在第一目标指令序列中的起始指令所在的指令集合,与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。通过各指令的类别调整指令序列中各指令的位置,可以得到各指令之间并行度最大的至少两个指令集合,进而在起始指令与终止指令所在的不同集合之间插入同步控制指令之后,既可以消除指令之间的数据相关性,又使得各指令之间并行度最大,从而提高处理器对指令序列的执行效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的指令序列处理方法的处理器的示意图;
图2示出根据本公开实施例的指令序列处理方法的流程示意图;
图3示出本公开一实施例的第一目标指令序列的示意图;
图4示出本公开一实施例的针对图3所示的第一目标指令序列进行聚类的示意图;
图5示出本公开一实施例的针对图4所示的两个指令集合插入第一同步控制指令的示意图;
图6示出本公开一实施例的针对第一目标指令序列进行聚类的聚类结果包括四个指令集合的示意图;
图7示出本公开一实施例的针对图6所示的四个指令集合插入第一同步控制指令的示意图;
图8示出本公开一实施例的第一目标指令序列和第二目标指令序列的示意图;
图9示出本公开一实施例的针对图8所示的非公共指令序列进行聚类的聚类结果的示意图;
图10示出本公开一实施例的第一目标指令序列和第二目标指令序列的示意图;
图11示出本公开一实施例的插入第二同步控制指令的示意图;
图12示出本公开一实施例的指令序列处理装置的结构框图;
图13示出本公开一实施例的一种电子设备的框图;
图14示出本公开一实施例的一种电子设备的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
根据本公开实施例的指令序列处理方法可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network ProcessingUnit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的指令序列处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
本公开的指令序列处理方法可以应用于处理器验证阶段,为了对处理器的功能和性能进行验证,随机生成指令序列来让待验证的处理器执行,指令序列中各指令的执行结果都是已知的,因此,可以通过判断待验证的处理器对指令序列中各指令的执行结果是否正确来对待验证的处理器的功能和性能进行验证。其中,指令序列可以是其它无需进行验证的处理器根据历史运行指令集合随机生成的,本公开对此不作具体限定。由于随机生成的指令序列中会包含具备数据相关性的指令,可以通过本公开的指令序列处理方法在指令序列中插入同步控制指令,以确保指令的执行先后顺序以及高并行度,进而可以对处理器的并行执行性能进行验证。
本公开的指令序列处理方法还可以应用于高级语言编译到指令的编译阶段,由于编译得到的指令序列中会包含具备数据相关性的指令,可以通过本公开的指令序列处理方法在编译得到的指令序列中插入同步控制指令,以提高指令序列的并行度,进而缩短后续指令序列的执行时间。
除了上述两种应用场景之外,本公开的指令序列处理方法还可以应用于其它需要确保指令序列的高并行度的场景,本公开对此不作具体限定。
图2示出根据本公开一实施例的指令序列处理方法的流程图。如图2所示,该方法包括:
在步骤S21中:根据第一目标指令序列中各指令的类别,调整第一目标指令序列中各指令的位置,得到第一目标指令序列对应的至少两个指令集合,其中,第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合。
其中,具备数据相关性的指令表示指令执行过程中处理的数据之间具有关联关系。比如,后一指令的执行依赖于前一指令的输出数据,这个时候就需要保证前一指令执行完成之后,后一条指令才能开始执行,以达到消除数据竞争冒险的目的,即该两条指令不能够并行执行。例如,指令C执行过程中的待处理数据为指令A执行结束后得到的结果数据,则指令A和指令C为具备数据相关性的指令,需要保证指令A执行完成之后,执行C才能开始执行。
在步骤S22中:在第一目标指令序列中的起始指令所在的指令集合,与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
同步控制指令用于指示在同步控制指令之前的指令全部执行完毕之后,同步控制指令之后的指令才能够执行。具体地,通过在第一目标指令序列中的起始指令所在的指令集合与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令,通过第一同步控制指令能够使得第一目标指令序列中的起始指令所在的指令集合在所述第一目标指令序列中的终止指令所在的指令集合之前执行,从而可以保证第一目标指令序列的起始指令执行完成之后,再执行第一目标指令序列的终止指令,以通过插入第一同步控制指令,保证第一目标指令序列的执行正确性,同时通过指令集合的方式确定第一同步控制指令的插入位置,可以提高第一目标指令序列的指令并行度,进而提高第一目标指令序列的执行效率。
可选地,当第一目标指令序列仅包含两个指令集合时,两个指令集合可以分别是:第一目标指令序列中的起始指令所在的指令集合与第一目标指令序列中的终止指令所在的指令集合,此时,第一同步控制指令可以插入在两个指令集合之间。插入第一同步控制指令之后的指令集合的执行顺序为:第一目标指令序列的起始指令所在的指令集合、第一同步控制指令、第一目标指令序列的终止指令所在的指令集合。
可选地,当该第一目标指令序列包含三个以上的指令集合时,第一同步指令可以插入在第一目标指令序列中的起始指令所在的指令集合与第一目标指令序列中的终止指令所在的指令集合之间的任意位置。
可选地,第一目标指令序列中各指令的类别可以是预先标记好的。
在一种可能的实现方式中,方法还包括:根据第一目标指令序列中各指令的并行关系,确定第一目标指令序列中各指令的类别。
在一种可能的实现方式中,根据第一目标指令序列中各指令的并行关系,确定第一目标指令序列中各指令的类别,包括:针对第一目标指令序列中的任意两条指令,若该两条指令在预设时间段内访问同一硬件模块,确定该两条指令不能够并行;其中,不能并行执行的指令具有相同的类别。
本方法实施例根据第一目标指令序列中各指令执行时需要访问的硬件模块,确定各指令的并行关系,进而根据各指令的并行关系,确定各指令的类别。例如,两条指令都要进行算数运算,假设硬件的算数运算器只有一个,那么只有前一条指令用完这个硬件模块后,后一条指令才能用,这样的指令是不能并行的,不能并行执行的指令属于相同的类别,能够并行执行的指令属于不同的类别。例如,运算指令、存储指令、访问指令能够并行,则运算指令、存储指令、访问指令为不同类别的指令。
图3示出本公开一实施例的第一目标指令序列的示意图。如图3所示,第一目标指令序列中包括A~H八个指令,其中,第一目标指令序列中的起始指令A和终止指令H为具备数据相关性的指令。
如图3所示,第一目标指令序列中:指令A和指令B的指令类别为类别1,指令C和指令D的指令类别为类别2,指令E的指令类别为类别3,指令F和指令G的指令类别为类别4,指令H的指令类别为类别5。
在一种可能的实现方式中,根据第一目标指令序列中各指令的类别,调整第一目标指令序列中各指令的位置,得到第一目标指令序列对应的至少两个指令集合,包括:根据第一目标指令序列中各指令的类别,对第一目标指令序列中的指令进行聚类,得到第一目标指令序列对应的至少两个指令集合。
具体地,处理器可以根据第一目标指令序列中各指令的类别,对第一目标指令序列中的指令进行聚类,使得通过调整第一目标指令序列中各指令的位置,将第一目标指令序列划分为至少两个指令集合,其中,任一指令集合中的指令能够并行执行。换言之,根据第一目标指令序列中各指令的类别进行聚类,在这个示例中可以理解为,根据各指令之间是否类别相同(是否能够并行执行)进行聚类,聚类的结果是,得到第一目标指令序列对应的至少两个指令集合,每个指令集合中包括不同类别的指令,即每个指令集合中的指令能够并行执行。例如,两个指令集合可以分别发送至不同的处理单元,不同的处理单元能够并行执行两个指令集合。
在一种可能的实现方式中,对第一目标指令序列中的指令进行聚类,包括:基于预设聚类条件,对第一目标指令序列中的指令进行聚类;其中,预设聚类条件包含以下至少一种:相同类别的指令聚类到不同的指令集合中;具备数据相关性的指令聚类到不同的指令集合中,其中,具备数据相关性的指令不能够并行执行。
在一种可能的实现方式中,针对任一指令,当该指令能够聚类到至少两个指令集合时,将该指令聚类到至少两个指令集合中包括的指令数最多的指令集合中。
仍以上述图3为例,根据上述预设聚类条件,依次对第一目标指令序列中的指令A~指令H进行聚类。图4示出本公开一实施例的针对图3所示的第一目标指令序列进行聚类的示意图。
如图4所示,初始化时,只有一个指令集合:第一指令集合。依次遍历第一目标指令序列中各指令执行下述聚类操作:
针对指令A,将指令A聚类到第一指令集合。
针对指令B,由于指令A和指令B为相同类别的指令,即指令A和指令B不能并行执行,则新建一个指令集合:第二指令集合,将指令B聚类到第二指令集合。
针对指令C,由于指令C和指令A为不同类别的指令,指令C和指令B也为不同类别的指令,即指令C能够和指令A并行执行,也能够和指令B并行执行,且当前第一指令集合和第二指令集合中均包含一个指令,则指令C既可以聚类到第一指令集合,也可以聚类到第二指令集合,即,当包括的指令最多的指令集合有多个时,可以根据需要将当前指令聚类到任意一个指令集合,如图4所示,将指令C聚类到第一指令集合。
针对指令D,由于指令D与聚类到第一指令集合中的指令C为相同类别的指令,且指令D与聚类到第二指令集合中的指令B为不同类别的指令,即指令D和指令C不能并行执行,指令D和指令B能够并行执行,则将指令D聚类到第二指令集合。
针对指令E,由于指令E与聚类到第一指令集合中的指令A、指令C为不同类别的指令,指令E与聚类到第二指令集合中的指令B、指令D为不同类别的指令,即指令E能够和指令A、指令C并行执行,也能够和指令B、指令D并行执行,且当前第一指令集合和第二指令集合中均包含两个指令,则指令E既可以聚类到第一指令集合,也可以聚类到第二指令集合,如图4所示,将指令E聚类到第一指令集合。
针对指令F,由于指令F与聚类到第一指令集合中的指令A、指令C、指令E为不同类别的指令,指令F与聚类到第二指令集合中的指令B、指令D为不同类别的指令,即指令F能够和指令A、指令C、指令E并行执行,也能够和指令B、指令D并行执行,但是由于当前第一指令集合相比于当前第二指令集合包含更多指令,为了提高指令并行度,则将指令F聚类到第一指令集合。
针对指令G,由于指令G与聚类到第一指令集合中的指令F为相同类别的指令,指令G与聚类到第二指令集合中的指令B、指令D为不同类别的指令,即指令G能够和指令B、指令D并行执行,但是不能和指令F并行执行,则将指令G聚类到第二指令集合。
针对指令H,由于指令H与聚类到第一指令集合中的指令A为具备数据相关性的指令,指令H与聚类到第二指令集合中的指令B、指令D、指令G为不同类别的指令,即指令H能够和指令B、指令D、指令G并行执行,但是不能和指令A并行执行,则将指令H聚类到第二指令集合。
最终聚类结束后,得到两个指令集合:第一指令集合(包括:指令A、指令C、指令E和指令F)和第二指令集合(包括:指令B、指令D、指令G和指令H),聚类之后各指令的并行度为4。其中,并行度可以用于衡量指令序列中并行执行的指令数量。可选地,指令序列中并行执行的指令数量越多,则指令序列的并行度越高,进而指令序列的处理时间越短,处理效率越高。指令序列中并行指令的指令数量越少,则待处理指令序列的并行度越低,进而处理器处理指令序列的处理时间越长,处理效率越低。
在一种可能的实现方式中,第一目标指令序列中的起始指令所在的指令集合位于第一目标指令序列中的终止指令所在的指令集合之前。
为了确保第一目标指令序列中具备数据相关性的起始指令和终止指令的执行先后顺序,在第一目标指令序列中的起始指令所在的指令集合与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令,且第一目标指令序列中的起始指令所在的指令集合位于第一目标指令序列中的终止指令所在的指令集合之前,以确保起始指令执行完毕之后,终止指令才能够执行。
仍以上述图4为例,具备数据相关性的指令A和指令H分别位于第一指令集合和第二指令集合,则在第一指令集合和第二指令集合之间插入第一同步控制指令。图5示出本公开一实施例的针对图4所示的两个指令集合插入第一同步控制指令的示意图。如图5所示,在第一指令集合和第二指令集合之间插入第一同步控制指令Sync。
对第一目标指令序列中的指令进行聚类之后得到第一目标指令序列对应的至少两个指令集合,为了确保在第一目标指令序列中的起始指令执行完成之后,第一目标指令序列中的终止指令才能够开始执行,则在插入第一同步控制指令之后,第一目标指令序列中的起始指令所在的指令集合位于第一同步控制指令之前,第一目标指令序列中的终止指令所在的指令集合位于第一同步控制指令之后,而聚类得到的其它指令集合的位置顺序不做具体限定。
仍以上述图5为例,如图5所示,对第一目标指令序列中的指令进行聚类之后,得到第一目标指令序列对应的第一指令集合和第二指令集合,在第一指令集合和第二指令集合之间插入第一同步控制指令,第一目标指令序列中的起始指令所在的第一指令集合位于第一同步控制指令之前,第一目标指令序列中的终止指令所在的第二指令集合位于第一同步控制指令之后。
图6示出本公开一实施例的针对第一目标指令序列进行聚类的聚类结果包括四个指令集合的示意图。如图6所示,对第一目标指令序列进行聚类之后得到第一目标指令序列对应的四个指令集合:第一指令集合(包括:指令A、指令C、指令E和指令G)、第二指令集合(包括:指令B和指令H)、第三指令集合(包括:指令D)和第四指令集合(包括:指令F)。
由于第一目标指令序列中的起始指令A和终止指令H为具备数据相关性的指令,为了确保指令A执行完成之后,指令H才能够开始执行,在第一指令集合和第二指令集合之间插入第一同步指令之后,第一指令集合位于第一同步控制指令之前,第二指令集合位于第一同步控制指令之后,而第三指令集合和第四指令集合的位置顺序不做具体限定。
图7示出了本公开一实施例的针对图6所示的四个指令集合插入第一同步控制指令的示意图。如图7所示,在第一种位置关系中,第一指令集合位于第一同步控制指令Sync之前,第二指令集合位于第一同步控制指令Sync之后,第三指令集合和第四指令集合位于第二指令集合之后。在第二种位置关系中,第一指令集合位于第一同步控制指令Sync之前,第二指令集合位于第一同步控制指令Sync之后,第三指令集合和第四指令集合位于第一同步控制指令Sync和第二指令集合之间。可选地,第一同步控制指令sync可以位于第一指令集合和第二指令集合之间的任意位置,第一同步控制指令sync可能的位置包括:位于第一指令集合和第三指令集合之间;可以位于第三指令和第四指令集合之间;还可以位于第四指令集合和第二指令集合之间。需要说明的是,图7仅对各指令集合位置关系以及插入第一同步控制指令的位置进行了两种位置示意,并未完全罗列出所有位置关系排布。
针对第一目标指令序列对应的至少两个指令集合中的任一指令集合,该指令集合中包括的各指令之间能够并行执行,即该指令集合中包括的各指令是无序的。
仍以上述图5为例,在第一指令集合和第二指令集合之间插入第一同步控制指令Sync之后,处理器执行指令过程中,第一同步控制指令Sync之前的第一指令集合先执行,第一指令集合中的指令A、指令C、指令E和指令F能够并行执行;在第一指令集合中的所有指令都执行完毕之后,第一同步控制指令Sync之后的第二指令集合开始执行,第二指令集合中的指令B、指令D、指令G和指令H能够并行执行。
在一种可能的实现方式中,第一目标指令序列中至少包括第二目标指令序列中的起始指令,第二目标指令序列中的起始指令和终止指令为具备数据相关性的指令;还包括:对第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列进行聚类,得到非公共指令序列对应的指令集合。
其中,第一目标指令序列中可以包括第二目标指令序列中的起始指令,也可以包括起始指令以及起始指令之后的一个或多个连续指令。第二目标指令序列中未包括在第一目标指令序列中的指令构成非公共指令序列。
图8示出本公开一实施例的第一目标指令序列和第二目标指令序列的示意图。如图8所示,第一目标指令序列中包括A~H八个指令,第二目标指令序列中包括F~L七个指令。其中,第一目标指令序列中的起始指令A和终止指令H为具备数据相关性的指令,第二目标指令序列中的起始指令F和终止指令L为具备数据相关性的指令。第一目标指令序列和第二目标指令序列存在公共指令序列:指令F、指令G和指令H。第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列为:指令I、指令J、指令K和指令L。第一目标指令序列聚类得到第一指令集合(包括:指令A、指令C、指令E和指令F)和第二指令集合(包括:指令B、指令D、指令G和指令H),在第一指令集合和第二指令集合之间插入第一同步控制指令Sync。
如图8所示,第二目标指令序列中的起始指令F位于第一同步控制指令Sync之前的第一指令集合。由于第一同步控制指令Sync用于指示在第一同步控制指令Sync之前的指令全部执行完毕之后,第一同步控制指令Sync之后的指令才能够执行,因此,当执行到第二目标指令序列的终止指令L时,第二目标指令序列的起始指令F已经执行完毕了,即,在第一目标指令序列对应的第一指令集合和第二指令集合之间插入的第一同步控制指令Sync,能够确保第二目标指令序列中具备数据相关性的起始指令F和终止指令L的执行先后顺序,无需在第二目标指令序列中执行插入同步控制指令的操作。
在实际应用中,处理器执行指令过程中,可先执行第一目标指令序列对应的至少两个指令集合,再执行第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列,即在执行到第二目标指令序列时,在执行第一目标指令序列过程中已经执行过的指令(即包括在第一目标指令序列中的公共指令序列)不再重复执行。
为了进一步提高第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列的并行度,对非公共指令序列进行聚类,得到非公共指令序列对应的指令集合。由于第二目标指令序列中包括在第一目标指令序列中的公共指令序列已经在对第一目标指令序列进行聚类时,被聚类到了一个或多个指令集合,因此,对第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列进行聚类后,得到的指令集合可以为一个,也可以为多个,具体根据非公共指令序列中各指令的类别确定。
仍以上述图8为例,如图8所示,非公共指令序列中指令I和指令J的指令类别为类别6,指令K和指令L的指令类别为类别7,即,指令I和指令J不能够并行执行,指令J和指令K能够并行执行,指令K和指令L不能够并行执行。
图9示出本公开一实施例的针对图8所示的非公共指令序列进行聚类的聚类结果的示意图。具体聚类过程与图4的聚类过程类似,这里不再赘述。如图9所示,聚类结果为非公共指令序列对应的两个指令集合:第三指令集合(包括:指令I和指令K)和第四指令集合(包括:指令J和指令L)。
由于对非公共指令序列进行了聚类,聚类得到的非公共指令序列对应的至少两个指令集合提高了非公共指令序列的并行度,可以有效缩短处理器的执行时间。
仍以上述图8为例,若不对非公共指令序列进行聚类,则在处理器执行非公共指令序列时,需要进行三步执行操作:先执行指令I、同步执行指令J和指令K,最后执行指令L。仍以上述图9为例,对非公指令序列进行聚类之后,在处理器执行聚类得到的非公共指令序列对应的两个指令集合时,只需进行两部执行操作:先执行第三指令集合(指令I和指令K并行执行)再执行第四指令集合(指令J和指令L并行执行),或者,先执行第四指令集合(指令J和指令L并行执行)再执行第三指令集合(指令I和指令K并行执行)。
在一种可能的实现方式中,还包括:当第一同步控制指令位于第二目标指令序列中的起始指令所在的指令集合之前时,在第二目标指令序列中的起始指令所在的指令集合与第二目标指令序列中的终止指令所在的指令集合之间插入第二同步控制指令。
图10示出本公开一实施例的第一目标指令序列和第二目标指令序列的示意图。如图10所示,第一目标指令序列中包括A~H八个指令,第二目标指令序列中包括F~L七个指令。其中,第一目标指令序列中的起始指令A和终止指令H为具备数据相关性的指令,第二目标指令序列中的起始指令F和终止指令L为具备数据相关性的指令。第一目标指令序列和第二目标指令序列存在公共指令序列:指令F、指令G和指令H。第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列为:指令I、指令J、指令K和指令L。第一目标指令序列聚类得到第一指令集合(包括:指令A、指令C、指令E和指令G)、第二指令集合(包括:指令B和指令H)、第三指令集合(包括:指令D)和第四指令集合(包括:指令F),在第一指令集合和第二指令集合之间插入第一同步控制指令Sync之后,第一指令集合位于第一同步控制指令之前,第二指令集合位于第一同步控制指令Sync之后,第三指令集合和第四指令集合位于第一同步控制指令Sync和第二指令集合之间。第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列聚类得到:第五指令集合(包括:指令I和指令K)和第六指令集合(包括:指令J和指令L)。
如图10所示,第一同步控制指令Sync位于第二目标指令序列中的起始指令F所在的第四指令集合之前,即第一同步控制指令Sync无法确保第二目标指令序列中具备数据相关性的起始指令F和终止指令L的执行先后顺序。此时,需要在第二目标指令序列中的起始指令F所在的第四指令集合与终止指令L所在的第六指令集合之间插入第二同步控制指令,如图11所示。
图11示出本公开一实施例的插入第二同步控制指令的示意图。如图11所示,第二同步控制指令Sync位于第四指令集合和第二指令集合之间。需要说明的是,第二同步控制指令Sync的位置除了可以如图11所示位于第四指令集合和第二指令集合之间之外,还可以位于第二指令集合和第五指令集合之间,还可以位于第五指令集合和第六指令集合之间,本公开对此不做具体限定。
在一种可能的实现方式中,还包括:当第二同步控制指令位于第一目标指令序列中的终止指令所在的指令集合之前时,删除第一同步控制指令。
仍以上述图11为例,如图11所示,第二同步控制指令Sync位于第一目标指令序列中的起始指令A所在的第一指令集合之后,位于第一目标指令序列中的终止指令H所在的第二指令集合之前,因此,第二同步控制指令Sync能够确保第一目标指令序列中具备数据相关性的起始指令A和终止指令H的执行先后顺序,此时,可以删除多余的第一同步控制指令Sync。由于是否删除第一同步控制指令Sync并不会对各指令集合的执行带来影响,也可以不对第一同步控制指令Sync进行删除,本公开对此不做具体限定。
根据第一目标指令序列中各指令的类别,调整起始指令和终止指令为具备数据相关性的指令的第一目标指令序列中各指令的位置,得到第一目标指令序列对应的至少两个指令集合,其中,任一指令集合中的指令能够并行执行,进而在第一目标指令序列中的起始指令所在的指令集合与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。这样,本公开可以根据目标指令序列对应的至少两个指令集合,快速确定使得插入同步控制指令之后各指令之间并行度最大的插入位置。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图12示出根据本公开实施例的数据处理装置的框图。如图12所示,装置1200包括:
位置调整模块1201,用于根据第一目标指令序列中各指令的类别,调整第一目标指令序列中各指令的位置,得到第一目标指令序列对应的至少两个指令集合,其中,第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;
插入模块1202,用于在第一目标指令序列中的起始指令所在的指令集合,与第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
在一种可能的实现方式中,装置1200还包括:
类别确定模块,用于根据第一目标指令序列中各指令的并行关系,确定第一目标指令序列中各指令的类别。
在一种可能的实现方式中,类别确定模块具体用于:
针对第一目标指令序列中的任意两条指令,若该两条指令在预设时间段内访问同一硬件模块,确定该两条指令不能够并行执行;其中,不能并行执行的指令具有相同的类别。
在一种可能的实现方式中,位置调整模块1201包括:
聚类子模块,用于根据第一目标指令序列中各指令的类别,对第一目标指令序列中的指令进行聚类,得到第一目标指令序列对应的至少两个指令集合。
在一种可能的实现方式中,聚类子模块具体用于:
基于预设聚类条件,对第一目标指令序列中的指令进行聚类;
其中,预设聚类条件包含以下至少一种:
相同类别的指令聚类到不同的指令集合中;
具备数据相关性的指令聚类到不同的指令集合中,其中,具备数据相关性的指令不能够并行执行。
在一种可能的实现方式中,针对任一指令,当该指令能够聚类到至少两个指令集合时,将该指令聚类到至少两个指令集合中包括的指令数最多的指令集合中。
在一种可能的实现方式中,第一目标指令序列中至少包括第二目标指令序列中的起始指令,第二目标指令序列中的起始指令和终止指令为具备数据相关性的指令;
聚类子模块,还用于对第二目标指令序列中未包括在第一目标指令序列中的非公共指令序列进行聚类,得到非公共指令序列对应的指令集合。
在一种可能的实现方式中,插入模块,还用于当第一同步控制指令位于第二目标指令序列中的起始指令所在的指令集合之前时,在第二目标指令序列中的起始指令所在的指令集合与第二目标指令序列中的终止指令所在的指令集合之间插入第二同步控制指令。
在一种可能的实现方式中,装置1200还包括:
删除模块,用于当第二同步控制指令位于第一目标指令序列中的终止指令所在的指令集合之前时,删除第一同步控制指令。
本公开提供的指令序列处理装置1200能够实现图2-11所示方法实施例中的各个步骤,并实现相同的技术效果,为避免重复,这里不再赘述。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(ResistiveRandom Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为调用述存储器存储的指令,以执行上述方法。
图13示出根据本公开一实施例的一种电子设备的框图。例如,电子设备可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等终端。
如图13所示,电子设备1300可以包括以下一个或多个组件:处理组件1302,存储器1304,电源组件1306,多媒体组件1308,音频组件1310,输入/输出(I/O)的接口1312,传感器组件1314,以及通信组件1316。
处理组件1302通常控制电子设备1300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1302可以包括一个或多个处理器1320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1302可以包括一个或多个模块,便于处理组件1302和其他组件之间的交互。例如,处理组件1302可以包括多媒体模块,以方便多媒体组件1308和处理组件1302之间的交互。
存储器1304被配置为存储各种类型的数据以支持在电子设备1300的操作。这些数据的示例包括用于在电子设备1300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1306为电子设备1300的各种组件提供电力。电源组件1306可以包括电源管理系统,一个或多个电源,及其他与为电子设备1300生成、管理和分配电力相关联的组件。
多媒体组件1308包括在所述电子设备1300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1308包括一个前置摄像头和/或后置摄像头。当电子设备1300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1310被配置为输出和/或输入音频信号。例如,音频组件1310包括一个麦克风(MIC),当电子设备1300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1304或经由通信组件1316发送。在一些实施例中,音频组件1310还包括一个扬声器,用于输出音频信号。
I/O接口1312为处理组件1302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1314包括一个或多个传感器,用于为电子设备1300提供各个方面的状态评估。例如,传感器组件1314可以检测到电子设备1000的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1300的显示器和小键盘,传感器组件1314还可以检测电子设备1300或电子设备1300一个组件的位置改变,用户与电子设备1300接触的存在或不存在,电子设备1300方位或加速/减速和电子设备1300的温度变化。传感器组件1314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1316被配置为便于电子设备1300和其他设备之间有线或无线方式的通信。电子设备1300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备1300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1304,上述计算机程序指令可由电子设备1300的处理器1320执行以完成上述方法。
图14示出本公开一实施例的一种电子设备的框图。例如,电子设备1400可以被提供为一服务器。如图14所示,电子设备1400包括处理组件1422,其进一步包括一个或多个处理器,以及由存储器1432所代表的存储器资源,用于存储可由处理组件1422的执行的指令,例如应用程序。存储器1432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1422被配置为执行指令,以执行上述方法。
电子设备1400还可以包括一个电源组件1426被配置为执行电子设备1400的电源管理,一个有线或无线网络接口1450被配置为将电子设备1400连接到网络,和一个输入输出(I/O)接口1458。电子设备1400可以操作基于存储在存储器1432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1432,上述计算机程序指令可由电子设备1400的处理组件1422执行以完成上述方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,一种指令序列处理的方法,所述方法包括:根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
条款A2,根据条款A1所述的方法,所述方法还包括:根据所述第一目标指令序列中各指令的并行关系,确定所述第一目标指令序列中各指令的类别。
条款A3,根据条款A2所述的方法,所述根据所述第一目标指令序列中各指令的并行关系,确定所述第一目标指令序列中各指令的类别,包括:针对所述第一目标指令序列中的任意两条指令,若所述两条指令在预设时间段内访问同一硬件模块,确定所述两条指令不能够并行执行;其中,不能并行执行的指令具有相同的类别。
条款A4,根据条款A1-A3任一项所述的方法,所述根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,包括:根据所述第一目标指令序列中各指令的类别,对所述第一目标指令序列中的指令进行聚类,得到所述第一目标指令序列对应的至少两个指令集合。
条款A5,根据条款A4所述的方法,所述对所述第一目标指令序列中的指令进行聚类,包括:基于预设聚类条件,对所述第一目标指令序列中的指令进行聚类;其中,所述预设聚类条件包含以下至少一种:相同类别的指令聚类到不同的指令集合中;具备数据相关性的指令聚类到不同的指令集合中,其中,具备数据相关性的指令不能够并行执行。
条款A6,根据条款A5所述的方法,针对任一指令,当该指令能够聚类到至少两个指令集合时,将该指令聚类到至少两个指令集合中包括的指令数最多的指令集合中。
条款A7,根据条款A5或A6所述的方法,所述第一目标指令序列中至少包括第二目标指令序列中的起始指令,所述第二目标指令序列中的起始指令和终止指令为具备数据相关性的指令;所述方法还包括:对所述第二目标指令序列中未包括在所述第一目标指令序列中的非公共指令序列进行聚类,得到所述非公共指令序列对应的指令集合。
条款A8,根据条款A7所述的方法,所述方法还包括:当所述第一同步控制指令位于所述第二目标指令序列中的起始指令所在的指令集合之前时,在所述第二目标指令序列中的起始指令所在的指令集合与所述第二目标指令序列中的终止指令所在的指令集合之间插入第二同步控制指令。
条款A9,根据条款A7所述的方法,所述方法还包括:当所述第二同步控制指令位于所述第一目标指令序列中的终止指令所在的指令集合之前时,删除所述第一同步控制指令。
条款A10,一种指令序列处理的装置,包括:位置调整模块,用于根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;插入模块,用于在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
条款A11,根据条款A10所述的装置,所述装置还包括:类别确定模块,用于根据所述第一目标指令序列中各指令的并行关系,确定所述第一目标指令序列中各指令的类别。
条款A12,根据条款A11所述的装置,所述类别确定模块具体用于:针对所述第一目标指令序列中的任意两条指令,若所述两条指令在预设时间段内访问同一硬件模块,确定所述两条指令不能够并行执行;其中,不能并行执行的指令具有相同的类别。
条款A13,根据条款A10-A12任一项所述的装置,所述位置调整模块包括:聚类子模块,用于根据所述第一目标指令序列中各指令的类别,对所述第一目标指令序列中的指令进行聚类,得到所述第一目标指令序列对应的至少两个指令集合。
条款A14,根据条款A13所述的装置,所述聚类子模块具体用于:基于预设聚类条件,对所述第一目标指令序列中的指令进行聚类;其中,所述预设聚类条件包含以下至少一种:相同类别的指令聚类到不同的指令集合中;具备数据相关性的指令聚类到不同的指令集合中,其中,具备数据相关性的指令不能够并行执行。
条款A15,根据条款A14所述的装置,针对任一指令,当所述指令能够聚类到至少两个指令集合时,将该指令聚类到所述至少两个指令集合中包括的指令数最多的指令集合中。
条款A16,根据条款A14或A15所述的装置,所述第一目标指令序列中至少包括第二目标指令序列中的起始指令,所述第二目标指令序列中的起始指令和终止指令为具备数据相关性的指令;所述聚类子模块,还用于对所述第二目标指令序列中未包括在所述第一目标指令序列中的非公共指令序列进行聚类,得到所述非公共指令序列对应的指令集合。
条款A17,根据条款A16所述的装置,所述插入模块,还用于当所述第一同步控制指令位于所述第二目标指令序列中的起始指令所在的指令集合之前时,在所述第二目标指令序列中的起始指令所在的指令集合与所述第二目标指令序列中的终止指令所在的指令集合之间插入第二同步控制指令。
条款A18,根据条款A16所述的装置,所述装置还包括:删除模块,用于当所述第二同步控制指令位于所述第一目标指令序列中的终止指令所在的指令集合之前时,删除所述第一同步控制指令。
条款A19,一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行条款A1-A9任一项所述的方法
条款A20,一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A1-A9中任一项所述的方法。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (12)

1.一种指令序列处理方法,其特征在于,包括:
根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;
在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第一目标指令序列中各指令的并行关系,确定所述第一目标指令序列中各指令的类别。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一目标指令序列中各指令的并行关系,确定所述第一目标指令序列中各指令的类别,包括:
针对所述第一目标指令序列中的任意两条指令,若所述两条指令在预设时间段内访问同一硬件模块,确定所述两条指令不能够并行执行;其中,不能并行执行的指令具有相同的类别。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,包括:
根据所述第一目标指令序列中各指令的类别,对所述第一目标指令序列中的指令进行聚类,得到所述第一目标指令序列对应的至少两个指令集合。
5.根据权利要求4所述的方法,其特征在于,所述对所述第一目标指令序列中的指令进行聚类,包括:
基于预设聚类条件,对所述第一目标指令序列中的指令进行聚类;
其中,所述预设聚类条件包含以下至少一种:
相同类别的指令聚类到不同的指令集合中;
具备数据相关性的指令聚类到不同的指令集合中,其中,具备数据相关性的指令不能够并行执行。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
针对任一指令,当所述指令能够聚类到至少两个指令集合时,将该指令聚类到所述至少两个指令集合中包括的指令数最多的指令集合中。
7.根据权利要求5或6所述的方法,其特征在于,所述第一目标指令序列中至少包括第二目标指令序列中的起始指令,所述第二目标指令序列中的起始指令和终止指令为具备数据相关性的指令;
所述方法还包括:
对所述第二目标指令序列中未包括在所述第一目标指令序列中的非公共指令序列进行聚类,得到所述非公共指令序列对应的指令集合。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述第一同步控制指令位于所述第二目标指令序列中的起始指令所在的指令集合之前时,在所述第二目标指令序列中的起始指令所在的指令集合与所述第二目标指令序列中的终止指令所在的指令集合之间,插入第二同步控制指令。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述第二同步控制指令位于所述第一目标指令序列中的终止指令所在的指令集合之前时,删除所述第一同步控制指令。
10.一种指令序列处理装置,其特征在于,包括:
位置调整模块,用于根据第一目标指令序列中各指令的类别,调整所述第一目标指令序列中各指令的位置,得到所述第一目标指令序列对应的至少两个指令集合,其中,所述第一目标指令序列中的起始指令和终止指令为具备数据相关性的指令,且分别属于不同的指令集合;
插入模块,用于在所述第一目标指令序列中的起始指令所在的指令集合,与所述第一目标指令序列中的终止指令所在的指令集合之间插入第一同步控制指令。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1-9任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-9中任一项所述的方法。
CN201910863889.9A 2019-09-12 2019-09-12 指令序列处理方法、装置、电子设备和存储介质 Active CN110633105B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910863889.9A CN110633105B (zh) 2019-09-12 2019-09-12 指令序列处理方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910863889.9A CN110633105B (zh) 2019-09-12 2019-09-12 指令序列处理方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN110633105A true CN110633105A (zh) 2019-12-31
CN110633105B CN110633105B (zh) 2021-01-15

Family

ID=68972733

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910863889.9A Active CN110633105B (zh) 2019-09-12 2019-09-12 指令序列处理方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN110633105B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020259560A1 (zh) * 2019-06-24 2020-12-30 华为技术有限公司 一种插入同步指令的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050183072A1 (en) * 1999-07-29 2005-08-18 Intertrust Technologies Corporation Software self-defense systems and methods
CN102073543A (zh) * 2011-01-14 2011-05-25 上海交通大学 通用处理器与图形处理器融合系统及其融合方法
CN104346223A (zh) * 2013-07-31 2015-02-11 想象力科技有限公司 基于类型的优先化指令
CN107851026A (zh) * 2015-08-14 2018-03-27 高通股份有限公司 电力高效获取适应

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050183072A1 (en) * 1999-07-29 2005-08-18 Intertrust Technologies Corporation Software self-defense systems and methods
CN102073543A (zh) * 2011-01-14 2011-05-25 上海交通大学 通用处理器与图形处理器融合系统及其融合方法
CN104346223A (zh) * 2013-07-31 2015-02-11 想象力科技有限公司 基于类型的优先化指令
CN107851026A (zh) * 2015-08-14 2018-03-27 高通股份有限公司 电力高效获取适应

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
罗杰等: "基于表调度的Matrix DSP指令调度算法的实现", 《计算机工程与科学》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020259560A1 (zh) * 2019-06-24 2020-12-30 华为技术有限公司 一种插入同步指令的方法及装置
US11934832B2 (en) 2019-06-24 2024-03-19 Huawei Technologies Co., Ltd. Synchronization instruction insertion method and apparatus

Also Published As

Publication number Publication date
CN110633105B (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
US20200387795A1 (en) Super network training method and device
KR101678038B1 (ko) Wlan 자동 연결방법, 장치, 프로그램 및 기록매체
CN104951335B (zh) 应用程序安装包的处理方法及装置
WO2016090822A1 (zh) 对固件进行升级的方法及装置
US20220019772A1 (en) Image Processing Method and Device, and Storage Medium
US20220248083A1 (en) Method and apparatus for video playing
US11449242B2 (en) Shared storage space access method, device and system and storage medium
EP3016349A1 (en) Method and apparatus for verifying terminal and computer program product
CN112416352A (zh) 数据处理方法、装置、计算机设备和存储介质
CN110867254A (zh) 预测方法及装置、电子设备和存储介质
CN112070235A (zh) 一种深度学习框架的异常定位方法、装置及存储介质
CN111597029A (zh) 数据处理方法及装置、电子设备和存储介质
CN108804684B (zh) 一种数据处理方法和装置
CN110633105B (zh) 指令序列处理方法、装置、电子设备和存储介质
EP3118729A1 (en) Method and device for presenting tasks
US11600300B2 (en) Method and device for generating dynamic image
CN110213062B (zh) 处理消息的方法及装置
CN113778687B (zh) 内存分配信息处理方法、装置、电子设备及存储介质
CN114549327A (zh) 视频超分辨率方法、装置、电子设备、存储介质
CN108427568B (zh) 用户界面的更新方法及装置
CN111104110A (zh) 全局样式共享方法、全局样式共享装置及电子装置
CN110311968B (zh) 流式加载文件的方法、装置及智能设备
CN114020505B (zh) 一种数据处理方法、装置、电子设备及存储介质
EP4174635A1 (en) Method and apparatus for processing multimedia data, and storage medium
CN118276991A (zh) 界面颜色处理方法、装置、电子设备、介质和程序产品

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201218

Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province

Applicant after: Anhui Cambrian Information Technology Co., Ltd

Address before: 100190 room 644, research complex, 6 South Road, Haidian District Science Academy, Beijing.

Applicant before: Zhongke Cambrian Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant