CN111857825A - 指令执行方法、装置、电子设备和计算机可读存储介质 - Google Patents

指令执行方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111857825A
CN111857825A CN202010699439.3A CN202010699439A CN111857825A CN 111857825 A CN111857825 A CN 111857825A CN 202010699439 A CN202010699439 A CN 202010699439A CN 111857825 A CN111857825 A CN 111857825A
Authority
CN
China
Prior art keywords
execution
memory instruction
instruction
memory
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010699439.3A
Other languages
English (en)
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.)
Kunlun core (Beijing) Technology Co.,Ltd.
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010699439.3A priority Critical patent/CN111857825A/zh
Publication of CN111857825A publication Critical patent/CN111857825A/zh
Priority to EP21164336.6A priority patent/EP3819758A3/en
Priority to US17/210,616 priority patent/US11748108B2/en
Priority to KR1020210038060A priority patent/KR102543951B1/ko
Priority to JP2021089687A priority patent/JP7419293B2/ja
Pending legal-status Critical Current

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/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)

Abstract

根据本公开的示例实施例,提供了一种指令执行方法、装置、电子设备和计算机可读存储介质,可以用于人工智能领域中。指令执行方法包括:执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。利用上述方法,可以在提升处理器整体性能的同时保证编程正确性和易用性,有利于人工智能处理器的推广。

Description

指令执行方法、装置、电子设备和计算机可读存储介质
技术领域
本公开涉及计算机技术,并且更具体地,涉及指令执行方法、装置、电子设备和计算机可读存储介质,可以应用于人工智能领域中。
背景技术
存储器模型可以分为硬件层面的存储器模型和语言的存储器模型,其通过定义硬件设计或者编程需要的规范来保证访存顺序和程序顺序,从而保证执行程序的正确性。传统的处理器以及例如C++等高级语言都支持存储器模型。主要的存储器模型包括顺序一致性模型、全存储排序模型和松散存储器模型等,其中松散存储器模型对性能最友好。对于新兴的人工智能处理器以及相应的编程语言,同样需要针对其定义和支持存储器模型。人工智能处理器是一类域特定的处理器。在针对人工智能领域的特点设计的存储器架构,最大的变化是采用便签存储器来替代传统处理器中的高速缓存,从而使得编程人员可以直接管理数据的存储。
具体而言,在人工智能应用场景中,访存局部性相对传统处理器较差,这时高速缓存带来的性能提升不明显,而在数据即用即扔的场景中反而会降低性能。同时,高速缓存的复杂度以及资源占比极高,相比之下移除高速缓存以获得更多的硬件资源面积用于算力的增加是更合理的,所以目前很多人工智能处理器采取无高速缓存的便签存储器结构。采用便签存储器之后,存储器主要由软件编程人员来管理,大部分人工智能由于架构和编程语言上的不同,传统处理器实现的存储模型***和方法不能完全适用。
发明内容
根据本公开的实施例,提供了一种指令执行方法、装置、电子设备和计算机可读存储介质。
在本公开的第一方面中,提供了一种指令执行方法,包括:执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。
在本公开的第二方面中,提供了一种指令执行装置,包括:指令序列执行模块,被配置为执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;执行确定模块,被配置为确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及非存储器指令执行模块,被配置为在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。
在本公开的第三方面中,提供了一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够实现根据本公开的第一方面的方法。
在本公开的第四方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机实现根据本公开的第一方面的方法。
利用根据本申请的技术,可以在提升处理器整体性能的同时保证编程正确性和易用性,有利于人工智能处理器的推广。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的参考标号通常代表相同部件。应当理解,附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示出了可以在其中实现本公开的某些示例性实施例中的指令执行方法的指令执行***100的示意图;
图2示出了根据本公开的实施例的指令执行方法200的流程图;
图3示出了根据本公开的实施例的指令执行装置300的示意性框图;以及
图4示出了根据本公开实施例的电子设备400的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如以上在背景技术中所描述的,高速缓存更适合于存储内容被多次使用的情况,但在人工智能应用场景中数据使用次数可能较少,甚至有可能只使用一次,因此更适于应用便签存储器,而这两种存储器的实现方式不同。因此,使用传统处理器实现的存储模型***和方法不能完全适用例如在人工智能处理器中所使用的便签存储器。例如,传统处理器中,由于高速缓存的存在,指令和数据的存储对编程人员而言是不可见的。因而,为了实现松散的存储器模型,相关的程序正确性由编译器来处理。
在处理器执行指令序列时,指令序列中的指令会按顺序开始执行。但是处理器并不需要在每个指令执行完毕后再开始下一个指令的执行,而是可以例如在一个处理器周期开始时执行第一个指令,并在下一处理器周期开始时执行第二个指令。由于每个指令的指令周期可能不同,例如,第一个指令可能需要10个处理器周期,而第二个指令可能只需要1个处理器周期,因此较晚开始执行的指令有可能在较早开始执行的指令之前被执行完毕,此时处理器可以继续执行后续的指令。因此,处理器可能会乱序执行指令序列中的指令。
然而,在处理器处理指令时,有些指令必须有严格的执行顺序,即,在后指令必须在先前指令执行完毕之后才能够开始执行,否则会产生错误。例如,第一个指令是对变量A进行赋值,第二个指令是使用赋值后的变量A。由于必须要在完成对变量A的赋值之后才能正常使用赋值后的变量A,因此这两个指令的执行需要有严格的执行顺序,即,必须在第一个指令执行完毕之后再开始执行第二个指令。在处理器领域中,需要保证执行顺序的指令例如包括标量加载(scalar load)指令、标量存储(scalar store)指令、向量加载(vectorload)指令、向量存储(vector store)指令、全局存储器向本地存储器搬运(gm2lm)指令以及本地存储器向全局存储器搬运(lm2gm)指令。在本公开中,这些指令被称为存储器指令,而除这些指令之外的、无需有严格执行顺序的指令被称为非存储器指令。
此外,仍然以上述赋值指令为例,当由编程人员使用高级语言编写上述两条指令之后,在这两条指令被转换成汇编语言之后,在它们之间可能会产生多个其他指令,这些指令通常为非存储器指令。因此,转换完汇编语言之后的指令序列中,在存储器指令之间会存在大量的非存储器指令。
当两个存储器指令由于指令的语义而导致必须有严格的执行顺序时,可以被称为存在冒险冲突。为了解决冒险冲突问题,传统处理器中所使用的方法包括在编译过程中隐含的添加适当的中止指令,例如,fence指令。中止指令的用途类似于阻止符,在执行中止指令时,会阻止后续所有指令的执行,并且需要在满足特定条件时恢复开始执行后续的指令,这些条件例如包括中止指令前的特定指令或者所有指令执行完毕。
然而,在传统处理器中,由于高速缓存中存储的指令在软件层面不可见,因此只能够通过硬件来解决冒险冲突问题。此外,由于传统的处理器在开始执行中止指令时会阻止后续所有指令的执行,因此也会阻止原本可以执行、而不会带来冒险冲突问题的非存储器指令的执行,例如,在存在冒险冲突的两个存储器指令之间可能存在数个、数十个、数百个甚至更多的非存储器指令。由于以上情况的存在,在传统的处理器中,对于冒险冲突问题的解决效率较低,并且在解决冒险冲突问题时会严重影响非存储器指令的执行效率。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种指令执行方法,使用这种方法,在按顺序执行包括存储器指令和非存储器指令的指令序列时,当遇到相邻的存储器指令之间存在冒险冲突的情况时,可以通过硬件与软件的协作,继续执行产生冒险冲突的两个存储器指令之间的大量非存储器指令。从而可以在提升处理器整体性能的同时仍然保证编程正确性和易用性,进而有利于提高用户使用处理器来执行指令的效率以及用户体现,并且也能够有助于人工智能处理器的推广。
图1示出了可以在其中实现本公开的某些示例性实施例中的指令执行方法的指令执行***100的示意图。如图1中所示,指令执行***100包括全局存储器110、DMA(直接存储器存取部件)120以及处理器核130。需要指出的是,指令执行***100是可扩展的,其中可以包括更多的处理器核130、甚至可以包括更多的全局存储器110和DMA 120。出于简化示图的原因,在图1中仅示出了一个全局存储器110、一个DMA 120以及一个处理器核130。需要指出的是,指令执行***100可以是使用存储器中的存储内容对软件层面可见并且可管理的任何指令执行***,例如,使用便签存储器的人工智能存储器***。
图1中所示的处理器核130包括标量模块131、向量模块132、全局存储器模块133、交叉开关134和本地存储器135。交叉开关134控制与本地存储器135、标量模块131、向量模块132以及全局存储器模块133进行的数据交互。全局存储器模块133通过DMA 120与全局存储器110进行数据交互。
标量模块131包括冒险进程部件131-1、标量加载部件131-2和标量存储部件131-3。标量加载部件131-2用于处理标量指令的加载,标量存储部件131-3用于处理标量指令的存储,冒险进程部件131-1用于处理标量指令的冒险冲突。标量指令例如可以包括标量加载指令和标量存储指令。
向量模块132包括冒险进程部件132-1、向量加载部件132-2和向量存储部件132-3。向量加载部件132-2用于处理向量指令的加载,向量存储部件132-3用于处理向量指令的存储,冒险进程部件132-1用于处理向量指令的冒险冲突。向量指令例如可以包括向量加载指令和向量存储指令。
全局存储器模块133包括全局存储器加载部件133-1和全局存储器部件存储部件133-2。全局存储器加载部件133-1用于处理全局存储器指令的加载,全局存储器部件存储部件133-2用于处理全局存储器指令的存储。全局存储器指令可以包括例如全局存储器向本地存储器搬运指令以及本地存储器向全局存储器搬运指令。
根据本公开的实施例,指令执行***100还可以包括控制器,用于控制指令执行***100进行各种操作。
根据本公开的实施例,在指令执行***100中,例如标量加载指令、标量存储指令、向量加载指令、向量存储指令、全局存储器向本地存储器搬运指令以及本地存储器向全局存储器搬运指令的存储器指令可以使用不同的硬件队列来执行,在每个硬件队列之间保持存储器顺序一致性和程序顺序一致性。
图2示出了根据本公开的实施例的指令执行方法200的流程图。具体而言,方法200可以由指令执行***100来执行。应当理解的是,方法200还可以包括未示出的附加操作和/或可以省略所示出的操作,本公开的范围在此方面不受限制。
在框202,指令执行***100执行指令序列。根据本公开的实施例,指令序列包括如上所述的存储器指令和非存储器指令,并且指令执行***100按照执行序列中的指令的顺序开始执行每个指令。
在框204,指令执行***100确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。根据本公开的实施例,第二存储器指令是在指令序列中第一存储器指令之后的下一个存储器指令。
根据本公开的一些实施例,由于指令的执行存在先后顺序,因此指令执行***100可以在执行第一存储器指令时,确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。根据本公开的另一些实施例,指令执行***100也可以在尚未开始执行第一存储器指令时即确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。
在人工智能处理器领域中,并不是所有的冒险冲突都可以由软件发现。例如,对于存储器指令的存储器操作粒度是一个存储器行大小的特定操作,同一个子***(例如,标量模块131和向量模块132)内部的加载与存储之间的冒险冲突由硬件处理,这些存储器指令包括标量加载指令之间、标量存储指令之间、向量加载指令之间和向量存储指令之间。因为这些冒险冲突对于软件不可见,所以无法由软件处理。
然而,由于通过软件来进行处理更为高效和便捷,因此在根据本公开的实施例中,首先由软件来处理冒险冲突问题,如果冒险冲突无法由于对于软件不可见而无法被软件发现和处理,则由硬件来处理冒险冲突。
因此,根据本公开的一些实施例,指令执行***100可以基于第一存储器指令和第二存储器指令的类型,来确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。这种情况例如包括存储器操作粒度是一个存储器行大小的特定操作,例如标量加载指令之间、标量存储指令之间、向量加载指令之间和向量存储指令之间的冒险冲突。此时,通过用于执行指令序列的硬件来确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。
对于能够通过软件来进行处理的指令冲突,由于编程人员在编写指令序列时即知晓可能出现的冒险冲突,因此编程人员可以在指令序列中添加特定定义的中止指令来使软件可以知道将发生冒险冲突。
根据本公开的实施例,由于在指令序列中包括中止指令,因此指令执行***100可以在执行中止指令时,将中止指令所针对的存储器指令确定为第一存储器指令,并且进一步确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。根据本公开的一些实施例,中止指令可以紧跟在某个存储器指令之后,从而指示在中止指令之前的最接近的这一存储器指令为第一存储器指令。根据本公开的另一些实施例,中止指令可以紧挨在某个存储器指令之前,从而指示在中止指令之后的最接近的这一存储器指令为第一存储器指令。此时,通过软件来确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行。根据本公开的实施例,由软件处理的冒险冲突例如可以包括对于不同子***之间的冒险冲突,例如标量模块131、向量模块132和全局存储器模块133之间的冒险冲突。由软件处理的冒险冲突还可以包括对于存储器指令的存储器操作粒度是多个存储器行大小的操作,例如全局存储器模块133内部的全局存储器加载和全局存储器存储之间的冒险冲突。
在框206,指令执行***100在执行第一存储器指令的周期期间,执行第一存储器指令与第二存储器指令之间的非存储器指令,而不执行第二存储器指令。
通过框202、204和206中的操作,可以实现高效地发现冒险冲突,以及在存在冒险冲突时,执行大量的非存储器指令而不执行会导致冒险冲突的存储器指令,从而可以提高冒险冲突的处理效率以及指令序列的处理效率。
方法200还包括在图2中以虚线框的形式示出的可选框208。在可选框208,指令执行***100响应于完成对第一存储器指令的执行,开始执行第二存储器指令。
以下以特定定义的fence指令作为根据本公开的实施例的中止指令的示例来描述根据本公开的实施例的中止指令的操作过程。
例如,指令序列为gm2lm→fence→add,r0,r1,r2→load r3,lm→add,r0,r1,r2→....。在这一指令序列中,gm2lm是第一存储器指令,load是第二存储器指令,fence是中止指令。当执行到fence指令时,软件已知晓gm2lm是第一存储器指令,并且知晓应当在开始执行load之前完成对gm2lm的执行。根据传统的处理器处理,此时将会停止fence之后的所有指令的执行。然而,在根据本公开的实施例的这一示例中,fence指令与load指令之间add,r0,r1,r2指令仍然会正常的执行。当gm2lm指令执行完毕后,软件会通知硬件来继续执行load指令。
以上参考图1至图2描述了可以在其中实现本公开的某些示例性实施例中的指令执行方法的指令执行***100以及根据本公开的实施例的用于指令执行方法200的相关内容。应当理解,上述描述是为了更好地展示本公开中所记载的内容,而不是以任何方式进行限制。
应当理解,本公开的上述各个附图中所采用的各种元件的数目和物理量的大小仅为举例,而并不是对本公开的保护范围的限制。上述数目和大小可以根据需要而被任意设置,而不会对本公开的实施方式的正常实施产生影响。
上文已经参见图1至图2描述了根据本公开的实施方式的指令执行方法的细节。在下文中,将参见图3描述指令执行装置中的各个模块。
图3是根据本公开实施例的指令执行装置300的示意性框图。如图3所示,指令执行装置300可以包括:指令序列执行模块310,被配置为执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;执行确定模块320,被配置为确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及非存储器指令执行模块330,被配置为在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。
在某些实施例中,其中所述执行确定模块320包括:第一执行确定模块(未示出),被配置为在执行第一存储器指令时,确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
在某些实施例中,其中所述执行确定模块320包括:第二执行确定模块(未示出),被配置为基于所述第一存储器指令和所述第二存储器指令的类型,来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
在某些实施例中,其中所述第二执行确定模块被配置为通过用于执行所述指令序列的硬件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
在某些实施例中,其中所述指令序列还包括中止指令,并且其中所述执行确定模块320包括:第一存储器指令确定模块(未示出),被配置为在执行所述中止指令时,将所述中止指令所针对的存储器指令确定为所述第一存储器指令;以及第三执行确定模块(未示出),被配置为确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
在某些实施例中,其中所述第三执行确定模块被配置为通过软件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
在某些实施例中,指令执行装置300还包括可选的第二存储器指令执行模块340(在图3中用虚线框示出),被配置为响应于完成对所述第一存储器指令的所述执行,开始执行所述第二存储器指令。
根据本公开的实施例,本公开还提供了一种电子设备和一种计算机可读存储介质。
通过以上参考图1至图3的描述,根据本公开的实施方式的技术方案相对于传统方案具有诸多优点。例如,利用上述技术方案,可以在处理存储器指令冒险冲突时仍然能够执行产生冒险冲突的两个存储器指令之间的大量非存储器指令,从而可以在提升处理器整体性能的同时仍然保证编程正确性和易用性,进而有利于提高用户使用处理器来执行指令的效率以及用户体现,并且也能够有助于人工智能处理器的推广。此外,利用上述技术方案,还可以由硬件和软件协同处理存储器指令冒险冲突,而不是仅仅由硬件来进行处理,因此可以进一步提高处理存储器指令冒险冲突的效率。
图4示出了根据本公开实施例的电子设备400的示意性框图。例如,如图1所示的指令执行***100和如图3所示的指令执行装置300可以由电子设备400来实施。电子设备400旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备400还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图4所示,该电子设备400包括:一个或多个处理器401、存储器402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备400内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备400,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图4中以一个处理器401为例。
存储器402即为本公开所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本公开所提供的指令执行方法。本公开的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本公开所提供的指令执行方法。
存储器402作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本公开实施例中的指令执行方法对应的程序指令/模块(例如,图3所示的指令序列执行模块310、执行确定模块320以及非存储器指令执行模块330)。处理器401通过运行存储在存储器402中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的指令执行方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备400的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至电子设备400。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
电子设备400还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接为例。
输入装置403可接收输入的数字或字符信息,以及产生与电子设备400的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置404可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本公开实施例的技术方案,在按顺序执行包括存储器指令和非存储器指令的指令序列时,当遇到相邻的存储器指令之间存在冒险冲突的情况时,可以通过硬件与软件的协作,继续执行产生冒险冲突的两个存储器指令之间的大量非存储器指令,从而可以在提升处理器整体性能(处理速度以及指令执行效率)的同时仍然保证编程正确性和易用性,进而有利于提高用户使用处理器来执行指令的效率以及用户体现,并且也能够有助于人工智能处理器的推广。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (16)

1.一种指令执行方法,包括:
执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;
确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及
在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。
2.根据权利要求1所述的方法,其中确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行包括:
在执行第一存储器指令时,确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
3.根据权利要求1所述的方法,其中确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行包括:
基于所述第一存储器指令和所述第二存储器指令的类型,来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
4.根据权利要求3所述的方法,其中通过用于执行所述指令序列的硬件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
5.根据权利要求1所述的方法,其中所述指令序列还包括中止指令,并且其中确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行包括:
在执行所述中止指令时,将所述中止指令所针对的存储器指令确定为所述第一存储器指令;以及
确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
6.根据权利要求5所述的方法,其中通过软件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
7.根据权利要求1所述的方法,还包括:
响应于完成对所述第一存储器指令的所述执行,开始执行所述第二存储器指令。
8.一种指令执行装置,包括:
指令序列执行模块,被配置为执行指令序列,所述指令序列包括存储器指令和非存储器指令,所述执行序列中的指令按顺序开始执行;
执行确定模块,被配置为确定需要在开始执行第二存储器指令之前完成对第一存储器指令的执行,所述第二存储器指令是在所述指令序列中所述第一存储器指令之后的下一个存储器指令;以及
非存储器指令执行模块,被配置为在执行所述第一存储器指令的周期期间,执行所述第一存储器指令与所述第二存储器指令之间的非存储器指令,而不执行所述第二存储器指令。
9.根据权利要求8所述的装置,其中所述执行确定模块包括:
第一执行确定模块,被配置为在执行第一存储器指令时,确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
10.根据权利要求8所述的装置,其中所述执行确定模块包括:
第二执行确定模块,被配置为基于所述第一存储器指令和所述第二存储器指令的类型,来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
11.根据权利要求10所述的装置,其中所述第二执行确定模块被配置为通过用于执行所述指令序列的硬件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
12.根据权利要求8所述的装置,其中所述指令序列还包括中止指令,并且其中所述执行确定模块包括:
第一存储器指令确定模块,被配置为在执行所述中止指令时,将所述中止指令所针对的存储器指令确定为所述第一存储器指令;以及
第三执行确定模块,被配置为确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
13.根据权利要求12所述的装置,其中所述第三执行确定模块被配置为通过软件来确定需要在开始执行所述第二存储器指令之前完成对所述第一存储器指令的所述执行。
14.根据权利要求8所述的方法,还包括:
第二存储器指令执行模块,被配置为响应于完成对所述第一存储器指令的所述执行,开始执行所述第二存储器指令。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
CN202010699439.3A 2020-07-20 2020-07-20 指令执行方法、装置、电子设备和计算机可读存储介质 Pending CN111857825A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010699439.3A CN111857825A (zh) 2020-07-20 2020-07-20 指令执行方法、装置、电子设备和计算机可读存储介质
EP21164336.6A EP3819758A3 (en) 2020-07-20 2021-03-23 Instruction executing method and apparatus, electronic device, and computer-readable storage medium
US17/210,616 US11748108B2 (en) 2020-07-20 2021-03-24 Instruction executing method and apparatus, electronic device, and computer-readable storage medium
KR1020210038060A KR102543951B1 (ko) 2020-07-20 2021-03-24 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램
JP2021089687A JP7419293B2 (ja) 2020-07-20 2021-05-28 命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010699439.3A CN111857825A (zh) 2020-07-20 2020-07-20 指令执行方法、装置、电子设备和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111857825A true CN111857825A (zh) 2020-10-30

Family

ID=73000630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010699439.3A Pending CN111857825A (zh) 2020-07-20 2020-07-20 指令执行方法、装置、电子设备和计算机可读存储介质

Country Status (5)

Country Link
US (1) US11748108B2 (zh)
EP (1) EP3819758A3 (zh)
JP (1) JP7419293B2 (zh)
KR (1) KR102543951B1 (zh)
CN (1) CN111857825A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115225477B (zh) * 2022-07-19 2023-12-01 北京天融信网络安全技术有限公司 机框式设备的配置维护方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
CN102799418A (zh) * 2012-08-07 2012-11-28 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
US20170046157A1 (en) * 2015-08-12 2017-02-16 International Business Machines Corporation Processor instruction sequence translation

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5673408A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for renamable trap-stack
US6871273B1 (en) * 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
JP2002251283A (ja) * 2001-02-22 2002-09-06 Mitsubishi Electric Corp メモリ管理機構及びメモリ管理方法
WO2009119021A1 (ja) 2008-03-28 2009-10-01 パナソニック株式会社 命令実行制御方法、命令フォーマット、及びプロセッサ
CN101770357B (zh) 2008-12-31 2014-10-22 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN102420820B (zh) 2011-11-28 2016-06-08 杭州华三通信技术有限公司 一种集群***中的隔离方法和装置
US9535695B2 (en) * 2013-01-25 2017-01-03 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US9658961B2 (en) * 2014-06-27 2017-05-23 International Business Machines Corporation Speculation control for improving transaction success rate, and instruction therefor
US10073784B2 (en) * 2014-06-27 2018-09-11 International Business Machines Corporation Memory performance when speculation control is enabled, and instruction therefor
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US10572376B2 (en) * 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
CN107786374B (zh) 2017-10-19 2021-02-05 苏州浪潮智能科技有限公司 一种Oracle集群文件***及其实现fence的方法
US11175916B2 (en) 2017-12-19 2021-11-16 Advanced Micro Devices, Inc. System and method for a lightweight fencing operation
US10866805B2 (en) 2018-01-03 2020-12-15 Arm Limited Speculation barrier instruction
CN108984319B (zh) 2018-06-25 2021-10-15 广州视源电子科技股份有限公司 解决操作指令冲突的方法、装置、计算机设备和存储介质
CN109450670B (zh) 2018-10-19 2022-04-01 杭州东方通信软件技术有限公司 一种人工智能模式下的指令冲突判断方法及其***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
CN102799418A (zh) * 2012-08-07 2012-11-28 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
US20170046157A1 (en) * 2015-08-12 2017-02-16 International Business Machines Corporation Processor instruction sequence translation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨书鑫, 张兆庆: "ORC的全局指令调度技术", 计算机学报, no. 05, 12 May 2004 (2004-05-12) *

Also Published As

Publication number Publication date
JP7419293B2 (ja) 2024-01-22
US20210271482A1 (en) 2021-09-02
EP3819758A2 (en) 2021-05-12
EP3819758A3 (en) 2021-11-03
US11748108B2 (en) 2023-09-05
KR102543951B1 (ko) 2023-06-14
KR20210049725A (ko) 2021-05-06
JP2021144730A (ja) 2021-09-24

Similar Documents

Publication Publication Date Title
CN110806923B (zh) 一种区块链任务的并行处理方法、装置、电子设备和介质
CN111625224A (zh) 代码生成方法、装置、设备及存储介质
JP2021103577A (ja) 循環命令の処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム
CN111259205B (zh) 一种图数据库遍历方法、装置、设备及存储介质
EP3961395A1 (en) Method and apparatus for scheduling memory access request, device and storage medium
JP7170094B2 (ja) オペレーター併合方法、装置、電子デバイス、記憶媒体及びコンピュータプログラム
CN111475262A (zh) 区块链中事务请求处理方法、装置、设备和介质
US11520565B2 (en) Interpreter for interpreting a data model algorithm and creating a data schema
JP6293910B2 (ja) 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション
CN111767059B (zh) 深度学习模型的部署方法、装置、电子设备和存储介质
CN111563253B (zh) 智能合约运行方法、装置、设备及存储介质
CN111857825A (zh) 指令执行方法、装置、电子设备和计算机可读存储介质
JP2017509950A (ja) 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション
CN111767149A (zh) 调度方法、装置、设备及存储设备
US11941055B2 (en) Method and apparatus for graph computing, electronic device and storage medium
CN112306413B (zh) 用于访问内存的方法、装置、设备以及存储介质
CN111639116B (zh) 数据访问连接会话保护方法以及装置
CN110751282A (zh) 面向深度学习训练任务的处理器内存优化方法及装置
CN113568761B (zh) 数据处理方法、装置、设备及存储介质
CN115145730B (zh) 运行监测方法、装置、电子设备和存储介质
CN117270862A (zh) 基于动态编译的软件可插拔方法、装置、设备和介质
CN113360273A (zh) 处理器资源动态分配方法、装置、设备及存储介质
CN110851187A (zh) 显存处理方法、装置、设备和介质
CN115904477A (zh) 配置动态处理方法、装置、存储介质及电子设备
CN118132001A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211019

Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing 100086

Applicant after: Kunlun core (Beijing) Technology Co.,Ltd.

Address before: 100094 2 / F, *** building, No.10 Shangdi 10th Street, Haidian District, Beijing

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.