[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN110032407B - 提升cpu并行性能的方法及装置和电子设备 - Google Patents

提升cpu并行性能的方法及装置和电子设备 Download PDF

Info

Publication number
CN110032407B
CN110032407B CN201910175628.8A CN201910175628A CN110032407B CN 110032407 B CN110032407 B CN 110032407B CN 201910175628 A CN201910175628 A CN 201910175628A CN 110032407 B CN110032407 B CN 110032407B
Authority
CN
China
Prior art keywords
code
parallel
executing
cpu
requests
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
CN201910175628.8A
Other languages
English (en)
Other versions
CN110032407A (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910175628.8A priority Critical patent/CN110032407B/zh
Publication of CN110032407A publication Critical patent/CN110032407A/zh
Priority to TW108130000A priority patent/TWI724505B/zh
Priority to EP20709055.6A priority patent/EP3857362A1/en
Priority to PCT/US2020/016607 priority patent/WO2020185328A1/en
Priority to US16/794,971 priority patent/US10783004B1/en
Priority to US16/945,589 priority patent/US11080094B2/en
Priority to US16/945,396 priority patent/US11082239B2/en
Application granted granted Critical
Publication of CN110032407B publication Critical patent/CN110032407B/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/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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • 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/30098Register arrangements
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

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

本说明书实施例提供一种提升CPU并行性能的方法及装置和电子设备,所述方法包括:获取分配到同一CPU核心的相同类型的数据请求;确定获取到的数据请求的请求个数;如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

Description

提升CPU并行性能的方法及装置和电子设备
技术领域
本说明书实施例涉及互联网技术领域,尤其涉及一种提升CPU并行性能的方法及装置和电子设备。
背景技术
在大数据处理场景下,数据呈现出越来越多的并行性,但是CPU(CentralProcessing Unit,中央处理器)的并行能力却是有限的。
在相关技术中,为了提升CPU的并行性能,只有增加CPU更多的超线程,但是超线程会占用更多CPU硬件开销。因此,需要不断增加CPU硬件上的性能,以满足越来越高的并行要求。
然而,CPU硬件的开发周期较长并且硬件成本也高。
因此,如何在不增加CPU硬件的情况下,如何从软件方面挖掘CPU更多的并行性能已经成为业内亟待解决的问题。
发明内容
本说明书实施例提供的一种提升CPU并行性能的方法及装置和电子设备:
根据本说明书实施例的第一方面,提供一种提升CPU并行性能的方法,所述方法包括:
获取分配到同一CPU核心的相同类型的数据请求;
确定获取到的数据请求的请求个数;
如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
可选的,所述方法还包括:
如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。
可选的,所述方法还包括:
如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述CPU核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。
可选的,所述方法还包括:
如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下步骤:
步骤31:执行代码00;
步骤32:执行代码10;
步骤33:设置标识位设为第一标识;
步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;
步骤35:再次执行代码00,并将标识位设为第二标识,执行步骤36;
步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;
步骤37:再次执行代码10,并将标识位设为第二标识,执行步骤38;
步骤38:判断标识位是否第一标识,如果不是,重复执行步骤33;直到标识位为第一标识时,循环结束。
可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:
如果代码的执行结果符合阈值,确定需要再次执行代码;
如果代码的执行结果不符合阈值,确定不需要再次执行代码。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下步骤:
步骤41:执行代码00;
步骤42:执行代码00的跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;
步骤43:顺序执行指令,即执行步骤44;
步骤44:执行代码10;
步骤45:执行代码10的跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;
步骤46:顺序执行指令,即执行步骤47;
步骤47:执行下一代码01。
根据本说明书实施例的第二方面,提供一种提升CPU并行性能的装置,所述装置包括:
获取单元,获取分配到同一CPU核心的相同类型的数据请求;
确定单元,确定获取到的数据请求的请求个数;
执行单元,如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
根据本说明书实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述任一项提升CPU并行性能的方法。
本说明书实施例,提供了一种提升CPU并行性能的方案,充分利用大数据处理的特征(执行数据请求的代码几乎相同,数据请求不具有数据相关性),通过预先根据并行数对相同代码进行混合链接从而得到并行数对应的可执行代码;在数据请求的请求个数大于或等于并行数时,直接获取并行数对应的可执行代码并执行。如此,在一个CPU核心运行中也可以产生并行执行数据请求的结果。实现了在不增加CPU硬件的情况下,提升了CPU并行处理性能。
附图说明
图1是本说明书一实施例提供的提升CPU并行性能的方法的流程图;
图2是本说明书一实施例提供的以并行数为3的并行处理过程的示意图;
图3是本说明书一实施例提供的两个代码跳转指令都是向上跳转的编译示意图;
图4是本说明书一实施例提供的两个代码跳转指令都是向下跳转的编译示意图;
图5是本说明书一实施例提供的提升CPU并行性能的装置的模块示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在大数据处理场景下,数据呈现出越来越多的并行性,但是CPU的并行能力却是有限的。
在相关技术中,为了提升CPU的并行性能,只有增加CPU更多的超线程,但是超线程会占用更多CPU硬件开销。因此,需要不断增加CPU硬件上的性能,通常就是增加CPU核心数量,例如从32核CPU增加到64核CPU以满足越来越高的并行要求。然而,CPU硬件的开发周期较长并且增加硬件的成本也高。在实际应用中,无法无限制地增加硬件,并且随着增加的硬件越多,能提升的并行性能却越小。
本说明书通过分析大数据处理的特征发现,大数据场景中的数据请求通常具有同质化现象,即批量的数据请求基本相同,仅是携带的参数不同,因此,执行这些数据请求的代码也几乎相同;并且,大数据场景中的数据请求之间不存在数据相关性,所述数据相性可以是指执行某个数据请求之前,必须等待其它数据请求执行完成,以获取其它数据请求执行结果,再带入本数据请求中;也就是说具有数据相关性的数据请求的输入数据是其它数据请求的输出数据,例如某个数据请求是将用户A的余额减100;如果要执行该请求,那么首先需要执行获取用户A的余额;只有在获取到用户A的余额后,才可以减100。
本说明书提供了一种提升CPU并行性能的方案,就是充分利用大数据处理的特征(执行数据请求的代码几乎相同,数据请求不具有数据相关性),通过预先根据并行数对相同代码进行混合链接从而得到并行数对应的可执行代码;在数据请求的请求个数大于或等于并行数时,直接获取并行数对应的可执行代码并执行。由于代码之间彼此不存在数据相关性,因此在一个CPU核心运行中也可以产生并行执行数据请求的结果。实现了在不增加CPU硬件的情况下,提升了CPU并行处理性能。
以下请参考图1所示的本说明书提供了一种提升CPU并行性能的方法,该方法可以应用于CPU,所述方法包括:
步骤110:获取分配到同一CPU核心的相同类型的数据请求;
步骤120:确定获取到的数据请求的请求个数;
步骤130:如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
本说明书实施例中,所述并行数为所述CPU提供的最大并行线程的数量。通常,CPU可以根据实际硬件资源确定最大并行线程的数量。
预先根据并行数将寄存器进行分组。当并行数为3个,寄存器为N个时,可以分为3份:当请求个数为1个时,将N个寄存器分为1份并编译1个请求数对应的可执行代码;
当请求个数为2个时,将N个寄存器分为2份(每份N/2)并编译2个请求数对应的可执行代码;
当请求个数大于或等于3个时,将N个寄存器分为3份(每份N/3)并编译3个请求数对应的可执行代码。
当分配到同一CPU核心的相同类型的数据请求的请求个数大于或等于并行数时,CPU核心可以获取对应所述并行数的可执行代码并执行。由于可执行代码是根据并行数编译后链接而成的代码程序,执行该可执行代码就可以处理所有数据请求。如此在单核CPU运行中也可以产生并行执行数据请求的结果。
在一实施例中,所述方法还包括:
如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。
当分配到同一CPU核心的相同类型的数据请求的请求个数小于并行数,并且获取次数也小于并行数时,说明当前获取到的数据请求的数量还没有达到最大并行数量,因此可以再次执行步骤110以获取更多的数据请求。
在一实施例中,所述方法还包括:
如果所述请求个数小于并行数但大于0,并且所述获取次数不小于并行数,所述CPU核心获取对应所述请求个数的可执行代码并执行。
如果请求个数小于并行数,但大于0;并且获取次数不小于并行数,说明已经多次获取过数据请求,还是没有达到最大并行数量,反映了当前待处理的数据请求并不多,可以直接处理这些已经获取到的数据请求。具体地,可以根据请求个数获取预先编译好的可执行代码。
在一实施例中,所述方法还包括:
如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求。
如果请求个数等于0,说明当前没有待处理的数据请求,可以继续执行步骤110以获取待处理的数据请求。
以下如图2所示以并行数为3的示例加以说明。假设使用分别将寄存器分为3组(请求数大于等于3时使用),2组(请求数为2时使用),1组(请求数为1时使用)。
步骤21:获取请求,执行步骤22。
获取分配到同一CPU核心的相同类型的数据请求。
步骤22:如果请求个数(即获取到的数据请求的数量)大于或者等于并行数即3,执行步骤28;如果请求数小于3,则执行步骤23。
如果请求个数大于或者等于并行数,说明当前待执行的数据请求已经达到最大并行数量,需要并行处理这些数据请求。
步骤23:如果获取次数(即获取请求的次数)小于3次,执行步骤21;如果获取次数不小于(大于或者等于)3次,则执行步骤24。
如果请求个数和获取次数均小于3,说明还没有达到最大并行数量,因此可以再次执行步骤21以获取更多的数据请求;如果请求个数小于3,但获取次数不小于(大于或者等于)3次,说明已经多次获取过数据请求,还是没有达到最大并行数量,反映了当前待处理的数据请求不多,直接处理这些已经获取到的数据请求。
步骤24:如果请求个数等于2,执行步骤27;如果请求个数小于2,执行步骤25。
如果请求个数小于3但等于2,说明有2个数据请求,那么可以针对这2个数据请求做并行处理。
步骤25:如果请求个数等于1,执行步骤26;如果请求个数小于1,执行步骤21。
如果请求个数小于3但等于1,说明仅有1个数据请求,那么可以单独进行处理,无需并行处理;如果请求个数小于1,说明没有获取到数据请求,对此重复执行步骤21以获取待处理的数据请求。
步骤26:获取请求数为1的可执行代码。
如果所述请求个数等于1,所述CPU核心获取预先编译好的请求数为1的可执行代码。
步骤27:获取请求数为2的可执行代码。
如果所述请求个数等于2,所述CPU核心获取预先编译好的请求数为2的可执行代码。
步骤28:获取请求数为3的可执行代码。
如果所述请求个数大于或者等于3,所述CPU核心获取预先编译好的请求数为3的可执行代码。
步骤29:完成。
整个CPU并行处理过程如上图2所示。
其中,在实际应用中,由于所有数据请求的代码相同,因此执行代码过程中涉及的跳转指令通常是一致的,例如跳转指令都是向上跳转,或者都是向下跳转。此时,在简单混编(混合编译)时会出现得不到正确编译结果的问题。
举例说明,假设并行数为2时,有如下代码:
Figure BDA0001989441390000091
假设都是向下跳转,则简单混编后执行过程为:
执行代码00,执行跳转指令00;
由于跳转指令00为向下跳转,因此,有可能会跳过代码10而执行代码01;类似的,由于跳转指令01也是向下跳转,同样可能会跳过代码11而执行代码02;这样有关代码10和代码11都无法执行。
综上,正常情况下CPU有n个寄存器,然后编译器可以将高级程序语言用这n个寄存器进行编译成CPU可执行的指令任务代码。如果希望在一个CPU核心中并行运行3个任务,那么先将相同的任务分别用n/3组寄存器,分别生成3份CPU可执行的指令任务代码。为了能使这3份CPU可执行的指令任务代码可以在一个CPU核心中运行,需要再次优化编译器,使编译器能够在上面三份代码的基础上再次进行链接优化。
具体地,虽然需要以每个代码为单位代码进行混编,但对于同一任务所有编译后的编译结果,其跳转指令方向都是一致的;因此只需要解决同时向上跳转以及同时向下跳转两种情况的混编链接结果。
请参考图3所示的两个跳转指令都为向上跳转的代码的编译示意图。假设并行数为2,代码包括代码00和代码10。步骤如下:
步骤31:执行代码00;
步骤32:执行代码10;
步骤33:标识位设为0(第一标识);
步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;
步骤35:再次执行代码00,并将标识位设为1(第二标识),执行步骤36;
步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;
步骤37:再次执行代码10,并将标识位设为1,执行步骤38;
步骤38:判断标识位是否0,如果不是,重复执行步骤33(进行循环);直到标识位为0时,结束循环。
其中,根据代码的执行结果判断是否需要再次执行代码,具体包括:
如果代码的执行结果符合阈值,确定需要再次执行代码;
如果代码的执行结果不符合阈值,确定不需要再次执行代码。
其中,00,01,02,…,0n代表将寄存器分组后,使用其中一组对任务进行编译的结果。
该实施例,每当有代码需要再次执行时,都可以保证标识位不为0,因此,每当有代码需要再次执行时,都可以再次进行循环,判断有没有代码需要再次执行,避免当有代码可以跳转而有的代码不能跳转时,就结束整体并行执行的情况。
值得一提的是,当前方向为向下,与原始方向相反,例如原有向上跳转的指令为Ja,因此向下跳转指令只要变为Jbe即可。这种跳转指令的修改非常简单方便,通过CPU中的编译器就可以实现;不需要借助额外其他工具。
请参考图4所示的两个跳转指令都为向下跳转的代码的编译示意图。假设并行数为2,代码包括代码00和代码10。步骤如下:
步骤41:执行代码00;
步骤42:执行跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;
步骤43:顺序执行指令;即执行步骤44;
步骤44:执行代码10;
步骤45:执行跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;
步骤46:顺序执行指令;即执行步骤47;
步骤47:执行下一代码01。
其中,00,01,02,…,0n代表将寄存器分组后,使用其中一组对任务进行编译的结果。
通过上述向上或向下跳转的实施例,在混编链接的时候,把每一个跳转模块作为混编的单位,处理了同时向上跳转和同时向下跳转两种混合链接方式。
综上,CPU在运行上面混编的结果的时候,由于是不同的寄存器,彼此不存在数据相关性,因此在一个CPU核心内部可以并行处理,最终提升任务处理的并行性。值得一提的是,本说明书提供的方案,可以增加的并行数量取决于当前CPU寄存器的数量,因此在不增加硬件开销的情况下,也可以提高CPU并行处理能力。
与前述提升CPU并行性能的方法实施例相对应,本说明书还提供了提升CPU并行性能的装置的实施例。
请参见图5,为本说明书一实施例提供的提升CPU并行性能的装置的模块图,所述装置对应了图1所示实施例,所述CPU中包含有寄存器,所述装置包括:
获取单元510,获取分配到同一CPU核心的相同类型的数据请求;
确定单元520,确定获取到的数据请求的请求个数;
执行单元530,如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
可选的,所述装置还包括:
第一获取子单元,如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。
可选的,所述装置还包括:
第一执行子单元,如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述CPU核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。
可选的,所述装置还包括:
第二获取子单元,如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下子单元:
第一执行子单元,执行代码00;
第二执行子单元,执行代码10;
第一设置子单元,设置标识位设为第一标识;
第一判断子单元,根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行第三执行子单元,如果不需要执行第二判断子单元;
第三执行子单元,再次执行代码00,并将标识位设为第二标识,执行第二判断子单元;
第二判断子单元,根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行第四执行子单元,如果不需要执行标识判断子单元;
第四执行子单元,再次执行代码10,并将标识位设为第二标识,执行标识判断子单元;
标识判断子单元,判断标识位是否第一标识,如果不是,重复执行第一设置子单元;直到标识位为第一标识时,循环结束。
可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:
如果代码的执行结果符合阈值,确定需要再次执行代码;
如果代码的执行结果不符合阈值,确定不需要再次执行代码。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下子单元:
第一执行子单元,执行代码00;
第一跳转子单元,执行代码00的跳转指令00,如果不跳转执行第一顺序子单元;如果跳转执行第二执行子单元;
第一顺序子单元,顺序执行指令,即执行第二执行子单元;
第二执行子单元,执行代码10;
第二跳转子单元,执行代码10的跳转指令10,如果不跳转执行第二顺序子单元;如果跳转执行第三执行子单元;
第二顺序子单元,顺序执行指令,即执行第三执行子单元;
第三执行子单元,执行下一代码01。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上图5描述了提升CPU并行性能的装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取分配到同一CPU核心的相同类型的数据请求;
确定获取到的数据请求的请求个数;
如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
可选的,还包括:
如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。
可选的,还包括:
如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述CPU核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。
可选的,还包括:
如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下步骤:
步骤31:执行代码00;
步骤32:执行代码10;
步骤33:设置标识位设为第一标识;
步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;
步骤35:再次执行代码00,并将标识位设为第二标识,执行步骤36;
步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;
步骤37:再次执行代码10,并将标识位设为第二标识,执行步骤38;
步骤38:判断标识位是否第一标识,如果不是,重复执行步骤33;直到标识位为第一标识时,循环结束。
可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:
如果代码的执行结果符合阈值,确定需要再次执行代码;
如果代码的执行结果不符合阈值,确定不需要再次执行代码。
可选的,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下步骤:
步骤41:执行代码00;
步骤42:执行代码00的跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;
步骤43:顺序执行指令,即执行步骤44;
步骤44:执行代码10;
步骤45:执行代码10的跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;
步骤46:顺序执行指令,即执行步骤47;
步骤47:执行下一代码01。
在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

Claims (9)

1.一种提升CPU并行性能的方法,所述方法包括:
获取分配到同一CPU核心的相同类型的数据请求;
确定获取到的数据请求的请求个数;
如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
2.根据权利要求1所述的方法,所述方法还包括:
如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。
3.根据权利要求1所述的方法,所述方法还包括:
如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述CPU核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。
4.根据权利要求3所述的方法,所述方法还包括:
如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一CPU核心的相同类型的数据请求。
5.根据权利要求1所述的方法,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下步骤:
步骤31:执行代码00;
步骤32:执行代码10;
步骤33:设置标识位设为第一标识;
步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;
步骤35:再次执行代码00,并将标识位设为第二标识,执行步骤36;
步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;
步骤37:再次执行代码10,并将标识位设为第二标识,执行步骤38;
步骤38:判断标识位是否第一标识,如果不是,重复执行步骤33;直到标识位为第一标识时,循环结束。
6.根据权利要求5所述的方法,根据代码的执行结果判断是否需要再次执行代码,具体包括:
如果代码的执行结果符合阈值,确定需要再次执行代码;
如果代码的执行结果不符合阈值,确定不需要再次执行代码。
7.根据权利要求1所述的方法,在所述预先根据并行数编译过程中:
如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下步骤:
步骤41:执行代码00;
步骤42:执行代码00的跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;
步骤43:顺序执行指令,即执行步骤44;
步骤44:执行代码10;
步骤45:执行代码10的跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;
步骤46:顺序执行指令,即执行步骤47;
步骤47:执行下一代码01。
8.一种提升CPU并行性能的装置,所述装置包括:
获取单元,获取分配到同一CPU核心的相同类型的数据请求;
确定单元,确定获取到的数据请求的请求个数;
执行单元,如果所述请求个数大于或者等于并行数,所述CPU核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述CPU提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。
9.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述权利要求1-7中任一项所述的方法。
CN201910175628.8A 2018-12-28 2019-03-08 提升cpu并行性能的方法及装置和电子设备 Active CN110032407B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN201910175628.8A CN110032407B (zh) 2019-03-08 2019-03-08 提升cpu并行性能的方法及装置和电子设备
TW108130000A TWI724505B (zh) 2019-03-08 2019-08-22 提升cpu並行性能的方法及裝置和電子設備
EP20709055.6A EP3857362A1 (en) 2019-03-08 2020-02-04 Method, apparatus, and electronic device for improving parallel performance of cpu
PCT/US2020/016607 WO2020185328A1 (en) 2019-03-08 2020-02-04 Method, apparatus, and electronic device for improving parallel performance of cpu
US16/794,971 US10783004B1 (en) 2019-03-08 2020-02-19 Method, apparatus, and electronic device for improving parallel performance of CPU
US16/945,589 US11080094B2 (en) 2019-03-08 2020-07-31 Method, apparatus, and electronic device for improving parallel performance of CPU
US16/945,396 US11082239B2 (en) 2018-12-28 2020-07-31 Accelerating transaction deliveries in blockchain networks using transaction resending

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910175628.8A CN110032407B (zh) 2019-03-08 2019-03-08 提升cpu并行性能的方法及装置和电子设备

Publications (2)

Publication Number Publication Date
CN110032407A CN110032407A (zh) 2019-07-19
CN110032407B true CN110032407B (zh) 2020-12-22

Family

ID=67235153

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910175628.8A Active CN110032407B (zh) 2018-12-28 2019-03-08 提升cpu并行性能的方法及装置和电子设备

Country Status (5)

Country Link
US (2) US10783004B1 (zh)
EP (1) EP3857362A1 (zh)
CN (1) CN110032407B (zh)
TW (1) TWI724505B (zh)
WO (1) WO2020185328A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
CN114218017B (zh) * 2022-02-18 2022-05-10 苏州浪潮智能科技有限公司 一种数据恢复方法、系统、装置及存储设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216684A (zh) * 2013-06-04 2014-12-17 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
US9875192B1 (en) * 2015-06-25 2018-01-23 Amazon Technologies, Inc. File system service for virtualized graphics processing units

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449256B (zh) * 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) * 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
CN102171650B (zh) * 2008-11-24 2014-09-17 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置
KR101626378B1 (ko) * 2009-12-28 2016-06-01 삼성전자주식회사 병렬도를 고려한 병렬 처리 장치 및 방법
CN101989192A (zh) * 2010-11-04 2011-03-23 浙江大学 一种程序自动并行化的方法
KR101738641B1 (ko) * 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
DE102013100169A1 (de) * 2012-01-18 2013-07-18 Nvidia Corporation Planen und Ausführung einer Rechenaufgabe
US9361079B2 (en) * 2012-01-30 2016-06-07 Nvidia Corporation Method for compiling a parallel thread execution program for general execution
US10007527B2 (en) * 2012-03-05 2018-06-26 Nvidia Corporation Uniform load processing for parallel thread sub-sets
US9436475B2 (en) * 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
US9134974B2 (en) 2012-11-12 2015-09-15 Signalogic, Inc. Source code separation and generation for heterogeneous central processing unit (CPU) computational devices
US9424038B2 (en) * 2012-12-10 2016-08-23 Nvidia Corporation Compiler-controlled region scheduling for SIMD execution of threads
EP2767904B1 (en) * 2013-02-18 2018-07-04 Hybridserver Tec IP GmbH Method, processing modules and system for executing an executable code
EP2972845B1 (en) * 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
KR20160046331A (ko) * 2013-08-19 2016-04-28 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법
CN103714039B (zh) * 2013-12-25 2017-01-11 中国人民解放军国防科学技术大学 通用计算数字信号处理器
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9354883B2 (en) * 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
WO2015145762A1 (ja) * 2014-03-28 2015-10-01 株式会社日立製作所 データベース管理システム、計算機、データベース管理方法
US10523957B2 (en) * 2014-10-08 2019-12-31 Vid Scale, Inc. Optimization using multi-threaded parallel processing framework
CN105677297B (zh) * 2014-11-18 2018-05-04 龙芯中科技术有限公司 套锁实现方法及装置
CN105988872B (zh) * 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
JP2017037370A (ja) * 2015-08-06 2017-02-16 富士通株式会社 計算機、プロセス制御方法およびプロセス制御プログラム
US20170083365A1 (en) * 2015-09-23 2017-03-23 Qualcomm Incorporated Adaptive Chunk Size Tuning for Data Parallel Processing on Multi-core Architecture
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
WO2018094087A1 (en) * 2016-11-17 2018-05-24 The Mathworks, Inc. Systems and methods for generating code for parallel processing units
WO2018111228A1 (en) * 2016-12-12 2018-06-21 Intel Corporation Apparatuses and methods for a processor architecture
US10838656B2 (en) * 2016-12-20 2020-11-17 Mediatek Inc. Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units
EP3343351B1 (en) * 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
US10261835B2 (en) * 2017-03-21 2019-04-16 Arm Limited Hardware thread scheduling
US10713166B2 (en) * 2017-05-05 2020-07-14 Samsung Electronics Co., Ltd. Efficient early ordering mechanism
US10467056B2 (en) * 2017-05-12 2019-11-05 Google Llc Configuration of application software on multi-core image processor
US11373242B2 (en) * 2017-06-29 2022-06-28 Chicago Mercantile Exchange Inc. Optimization processor for electronic data multiple transaction request messages
US10802831B2 (en) * 2017-06-30 2020-10-13 Sap Se Managing parallel processing
US10997180B2 (en) * 2018-01-31 2021-05-04 Splunk Inc. Dynamic query processor for streaming and batch queries
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216684A (zh) * 2013-06-04 2014-12-17 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
US9875192B1 (en) * 2015-06-25 2018-01-23 Amazon Technologies, Inc. File system service for virtualized graphics processing units

Also Published As

Publication number Publication date
WO2020185328A1 (en) 2020-09-17
CN110032407A (zh) 2019-07-19
EP3857362A1 (en) 2021-08-04
US20200364090A1 (en) 2020-11-19
TWI724505B (zh) 2021-04-11
US10783004B1 (en) 2020-09-22
US20200285522A1 (en) 2020-09-10
TW202036287A (zh) 2020-10-01
US11080094B2 (en) 2021-08-03

Similar Documents

Publication Publication Date Title
EP3572944A1 (en) Concurrency vulnerability detection
CN108614696B (zh) 一种应用制作的方法、静态库生成的方法及装置
US20160179484A1 (en) Code Generating Method, Compiler, Scheduling Method, Scheduling Apparatus and Scheduling System
CN110032407B (zh) 提升cpu并行性能的方法及装置和电子设备
CN112698888A (zh) 应用程序的组件化、组件调用和组件初始化方法及其装置
CN112597013A (zh) 一种在线开发以及调试方法及装置
US10540156B2 (en) Parallelization method, parallelization tool, and in-vehicle device
US20150331787A1 (en) Software verification
CN111026493A (zh) 界面渲染的处理方法和装置
JP2016510472A (ja) ソフトウェア・モジュールの並行動作
CN108984223B (zh) 一种程序调用解耦方法、装置、电子设备及存储介质
CN113296788B (zh) 指令调度方法、装置、设备及存储介质
US20160371068A1 (en) Computer that performs compiling, compiler program, and link program
CN118034924A (zh) 基于众核系统的数据处理方法、装置、电子设备和介质
US20150220425A1 (en) Test context generation
CN112907198B (zh) 业务状态流转维护方法、装置及电子设备
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US8694975B2 (en) Programming system in multi-core environment, and method and program of the same
CN110990137B (zh) 应用程序的功能模块调度方法、调度信息处理方法及设备
US9396044B2 (en) Memory efficient thread-level speculation
CN111580834B (zh) 一种应用安装包的生成方法和装置
CN113742096B (zh) 一种事件队列的实现方法及系统
CN112214765B (zh) 一种病毒查杀方法、装置、电子设备及存储介质
CN109377177B (zh) 流程处理方法、装置、设备和计算机可读存储介质
JP2018124710A (ja) 並列化方法、並列化ツール、及び車載制御装置

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

Effective date of registration: 20201019

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201019

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant