CN108287759A - 处理数据过程中的调度方法、装置和系统 - Google Patents

处理数据过程中的调度方法、装置和系统 Download PDF

Info

Publication number
CN108287759A
CN108287759A CN201710016528.1A CN201710016528A CN108287759A CN 108287759 A CN108287759 A CN 108287759A CN 201710016528 A CN201710016528 A CN 201710016528A CN 108287759 A CN108287759 A CN 108287759A
Authority
CN
China
Prior art keywords
computation engine
data processing
preset condition
computation
engine
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
CN201710016528.1A
Other languages
English (en)
Other versions
CN108287759B (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.)
Alibaba China Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710016528.1A priority Critical patent/CN108287759B/zh
Priority to TW106136681A priority patent/TWI753036B/zh
Priority to PCT/US2018/013185 priority patent/WO2018132485A1/en
Priority to US15/867,128 priority patent/US10467057B2/en
Publication of CN108287759A publication Critical patent/CN108287759A/zh
Application granted granted Critical
Publication of CN108287759B publication Critical patent/CN108287759B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined 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/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
    • 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
    • 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
    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/5061Partitioning or combining of resources
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种处理数据过程中的调度方法、装置和系统。其中,该方法包括:计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。本发明解决了计算机设备中运算资源利用率低的技术问题。

Description

处理数据过程中的调度方法、装置和系统
技术领域
本发明涉及信息安全领域,具体而言,涉及一种处理数据过程中的调度方法、装置和系统。
背景技术
在数据处理过程中,尤其在多任务数据处理过程中,通常会涉及到很多的运算,在进行这些运算过程中,会消耗大量的CPU资源,影响系统的性能。为了减少在数据处理过程中对CPU资源的占用,可以采用增加硬件加速单元,将大量的运算在CPU之外运行。
以RSA公钥加密算法为例,RSA公钥加密算法是一种重要的非对称签名/加密算法,广泛应用于现有的网络通信中(例如,HTTPS)。在RSA加密算法中涉及到大量的运算,并且其加密强度依赖于密钥长度,即密钥越长,破解的难度越大。随着计算机技术的快速发展,为了增强RSA加密的安全强度,需要采用更长的密钥,然后,采用更长的密钥长度,会导致RSA加解密速度降低。通常,在服务器端完成RSA算法的计算,如果利用软件完成RSA加解密,则需要耗费大量的CPU资源,严重影响性能;如果利用硬件加速单元将运算密集的RSA操作在CPU之外单独进行,则CPU能够处理更多的协议栈和操作系统层面的请求。
由于硬件加速单元中通常都会采用多运算核心(引擎)的方案来进行运算处理,因而基于硬件加速的数据处理方案,需要解决如何在多个引擎之间调度资源、提高资源利用效率的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种处理数据过程中的调度方法、装置和系统,以至少解决计算机设备中运算资源利用率低的技术问题。
根据本发明实施例的一个方面,提供了一种处理数据过程中的调度方法,包括:计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
根据本发明实施例的一个方面,还提供了一种处理数据过程中的调度系统,包括:计算设备,包括:输入/输出接口、一级调度器、二级调度器、多个运算引擎和多个逻辑运算单元;输入/输出接口,用于接收至少一个数据处理请求,并存储至请求队列中;一级调度器,与输入/输出接口连接,用于从请求队列中读取至少一个数据处理请求,并为每个数据处理请求分配到一个满足第一预设条件的运算引擎;二级调度器,与一级调度器连接,用于接收数据处理请求,并基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;其中,满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
根据本发明实施例的另一方面,还提供了一种处理数据过程中的调度装置,包括:读取模块,用于计算设备从请求队列中读取至少一个数据处理请求;分配模块,用于计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;调度模块,用于基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;处理模块,用于计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求;其中,计算设备包括多个运算引擎和多个逻辑运算单元。
根据本发明实施例的另一方面,还提供了一种用于硬件加密单元的任务调度装置,输入/输出接口,用于从请求队列中读取至少一个数据处理请求;控制器,与输入/输出接口连接,用于为每个数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元,并使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
根据本发明实施例的另一方面,还提供了一种计算设备,包括:硬件加密单元,用于处理加密请求;存储器,与硬件加密单元连接,用于将加密请求中的一个或多个数据处理请求存储至请求队列中;任务调度单元,与存储器连接,用于从请求队列中读取至少一个数据处理请求,并为数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元;处理器,与任务调度单元连接,用于使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
根据本发明实施例的另一方面,还提供了一种处理数据过程中的两级调度方法,包括:从请求队列中读取至少一个数据处理请求;执行一级调度:为每个数据处理请求分配到一个满足预设状态的运算引擎,其中,运算引擎在执行过程中具备多个执行状态;执行二级调度:基于满足预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与预设状态对应的可用的至少一个逻辑运算单元;使用逻辑运算单元处理数据处理请求。
根据本发明实施例的另一方面,还提供了计算设备,包括:输入输出接口,用于接收数据处理请求;存储器,用于保存数据处理请求,形成请求队列;一级调度器,用于从请求队列中读取至少一个数据处理请求,并分配到一个满足预设状态的运算引擎;二级调度器,用于基于满足预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与预设状态对应的可用的至少一个逻辑运算单元处理数据处理请求;运算引擎池,包括多个运算引擎,用于向一级调度器提供预设状态的运算引擎,其中,每个运算引擎在执行过程中具备多个执行状态;和逻辑运算单元池,包括多个逻辑运算单元,用于向二级调度器提供逻辑运算单元。
在本发明实施例中,通过计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求,达到了将逻辑复杂的一级调度与逻辑简单的二级调度区分开的目的,从而实现了有效地对运算任务进行动态调整和分配运算资源的技术效果,进而解决了计算机设备中运算资源利用率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种硬件资源调度系统结构示意图;
图2是根据本发明实施例的一种可选的硬件资源调度系统示意图;
图3(a)所示为根据本发明实施例的一种可选的基于单个引擎的RSA硬件加速方案示意图;
图3(b)所示为根据本发明实施例的一种可选的基于多个引擎的RSA硬件加速方案示意图;
图3(c)所示为根据本发明实施例的一种可选的二级调度器示意图;
图4是根据本发明实施例的一种处理数据过程中的调度方法的流程图;
图5是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图6是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图7是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图8是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图9是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图10是根据本发明实施例的一种可选的处理数据过程中的调度方法的流程图;
图11所示为根据本发明实施例的一种可选的在多个引擎中进行资源调度的方法流程图;
图12是根据本发明实施例的一种处理数据过程中的调度装置示意图;
图13是根据本发明实施例的一种用于硬件加密单元的任务调度装置示意图;
图14是根据本发明实施例的一种计算设备结构框图;
图15是根据本发明实施例的一种处理数据过程中的两级调度方法流程图;
图16是根据本发明实施例的一种计算设备示意图;以及
图17是根据本发明实施例的一种计算机终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
RSA算法:一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
ALU:Algorithm Logic Unit,算术逻辑单元,实现多组算术运算和逻辑运算的组合逻辑电路。
LRU:Least Recently Used,“近期最少使用”算法,用于为运算任务选择相应的运算引擎。
HTTPS:全称为“Hyper Text Transfer Protocol over Secure Socket Layer”,即加入Secure Socket Layer的HTTP,以安全为目标的HTTP通道,是HTTP的安全版。
运算引擎:在硬件加速器中用于进行运算处理的核心组件,硬件加速器通常会采用多个运算核心组件来提高处理算法的速度。
实施例1
在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请的原理的一个合适的硬件资源调度体系结构。
图1是根据本发明实施例的一种硬件资源调度系统结构示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该硬件资源调度系统解释为对图1所示的任一组件或其组合具有任何依赖或需求。
如图1所示,该硬件资源调度系统在本发明中用于实现处理数据过程中的调度系统,具体的,可以通过安全引擎来实现生成密钥等密码功能。上述硬件资源调度系统可以包括:客户端设备10以及可以通过网络与客户端设备通信的服务器20。在本申请中,客户端设备10与服务器20可以建立安全通信会话,客户端设备10可以是移动设备、计算机设备部、机顶盒、数字电视、平板设备、移动互联网设备(MID)、台式计算机或者能够与服务器20进行通信的其它设备。
在客户端设备10与服务器20发起安全通信会话的过程中,需要进行相互之间的安全验证,即通过交换安全密钥来进行他们之间的会话加密。此处需要说明的是,根据本申请一个实施例,安全通信会话可以是安全套接字层(SSL)通信会话,但不限于该安全通信会话。
在本申请中,上述客户端设备10可以被体现为具有各种部件和结构的任何类型的片上系统设备。结合图1可知,为了实现与服务器之间的安全通信会话,客户端设备10可以设置有运算引擎,该运算引擎为一种加密引擎,通过加密引擎来实现生成并存储安全密钥等密码功能,加密引擎可以是独立中央处理器的安全处理器或处理电路。在一些可选实施例中,客户端设备10还可以包括存储器、一个或多个输入/输出设备等部件。
本申请基于上述安全通信会话的场景,可以实现一种处理数据过程中的调度系统,目的在于提高客户端设备的资源利用率,进而提高系统中安全通信会话的处理效率。
为了达到上述目的,该调度系统中的客户端设备至少包括:输入/输出接口、存储器、一级调度器、二级调度器、多个运算引擎和多个逻辑运算单元,以及总线链路(图1中显示为链路)。
其中,根据本申请一个实施例,一级调度器、二级调度器封装在一个Die中,通过主板总线链路与运算引擎进行数据连接;或者,根据本申请一个实施例,一级调度器、二级调度器、多个运算引擎和多个逻辑运算单元,以及总线链路封装在一个Die中;或者,根据本申请一个实施例,输入/输出接口、存储器、一级调度器、二级调度器、多个运算引擎和多个逻辑运算单元,以及总线链路可以封装在一个Die中。
其中:
输入/输出接口,用于接收至少一个数据处理请求,并存储至请求队列中;其中,该数据处理请求可以为在进行加密等算法过程中涉及到的各种运算的处理请求,由外接设备或者中央处理器通过该输入/输出接口将数据处理请求存储至请求队列中。
一级调度器101,与输入/输出接口连接,用于从请求队列中读取至少一个数据处理请求,并为每个数据处理请求分配到一个满足第一预设条件的运算引擎;
二级调度器103,与一级调度器连接,用于接收数据处理请求,并基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;其中,满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
其中,一级调度器101,用于在接收到一个或多个数据处理请求后,根据当前运算引擎的工作状态,为每个数据处理请求分配相应的运算引擎;该数据处理请求可以为需要调度硬件资源来进行数据处理的一个或多个请求,一种可选的实施例中,以RSA算法为例,该数据处理请求可以是RSA硬件加速方案中用于进行模幂或模乘运算的数据处理请求;上述运算引擎可以为用于计算模幂或模乘运算的加法器、乘法器等。
下面以RSA算法为例,对本实施进一步介绍,RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法,广泛应用于智能IC卡和网络安全产品。RSA算法通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存,另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,一方用公钥加密文件发送给另一方,另一方就可以用私钥解密接收。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。由于RSA密码算法涉及大量的模幂或模乘运算,采用软件完成,需要耗费大量的CPU资源,严重影响加解密的速度。而通过硬件加速方案,可以使得运算密集的RSA操作在CPU之外单独进行,以便CPU能够处理更多的协议栈和操作系统层面的请求。
由于RSA运算的复杂性,为了提高RSA算法的运算速度,采用硬件加速方案来进行RSA运算时,通常都会采用多运算核心(引擎)的硬件加速器来进行处理。这种情况下,可以从包含了多个数据处理请求的请求队列中同时读取多个数据处理请求,以并行的方式对读取的数据处理请求进行处理。
需要说明的是,一级调度器101需要实时检测硬件加速器中的各个运算引擎当前的工作状态,并将当前处于空闲的运算引擎分配给每个数据处理请求。具体地,当从请求队列中读取到至少一个数据处理请求后,首先判断是否存在空闲的运算引擎,如果存在空闲的运算引擎,则优先调度处于空闲状态的运算引擎来对读取到的数据处理请求进行处理;如果不存在处于空闲状态的运算引擎,则继续判断是否存在处于后处理状态的运算引擎,如果存在处于后处理状态的运算引擎,则调度处于后处理状态的运算引擎来对读取到的数据处理请求进行处理;如果不存在处于后处理状态的运算引擎,则判断处于等到状态的运算引擎中是否存在空闲状态的运算引擎,如果处于等待状态的运算引擎中存在处于空闲状态的运算引擎,则调度处于空闲状态的运算引擎来对读取到的数据处理请求进行处理;如果处于等待状态的运算引擎中不存在处于空闲状态的运算引擎,则拒绝当前的数据处理请求。
可选地,如果不存在多个运算引擎中存在处于空闲状态的运算引擎,可以根据最近最少使用算法LRU从即将进入空闲状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
由此可以看出,对运算引擎的调度采用的是状态调度,即通过一级调度器101根据运算引擎当前的状态类为各个数据处理请求分配相应的运算引擎,保证了负载均衡。
二级调度器103用于根据一级调度后的各个运算引擎当前的运算阶段,从逻辑运算单元池中调度一个或多个逻辑运算单元处理数据处理请求来进行相应的计算。其中,逻辑运算单元池用于表征包含了多个逻辑运算单元的集合。
仍以RSA算法为例,逻辑运算单元可以为算数逻辑单元ALU,由于每个运算引擎在不同的运算阶段需要向CPU申请的调度的算术逻辑单元(Arithmetic Logic Unit,ALU)不同,因而,在被选出执行当前数据处理任务的运算引擎进入工作模式后,根据该运算引擎各个运算阶段的不同,依次向RSA硬件加速器的二级调度器申请相应的ALU资源,二级调度器从逻辑运算单元池中调度相应的ALU资源,例如,在与计算阶段就会申请ALU0资源,正式计算时申请ALU1或ALU2资源。
需要说明的是,ALU是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,主要功能是进行二进制的算术运算(例如,加减乘等运算)。例如,在RSA硬件加速方案中,主要涉及到三种类型的算数逻辑单元,分别为ALU0、ALU1、ALU2。其中,算术逻辑单元ALU0用于预处理/后处理步骤,算术逻辑单元ALU1、ALU2用于正式计算步骤,其中,ALU1用于平方及取模步骤,ALU2用于相乘及取模步骤。由于ALU0、ALU1和ALU2的数据位宽不同,所以一般不会复用。另外,由于同一类型的ALU的每次运算时间几乎完全相同,所以,只要判断ALU池中该类型的ALU是否有空闲,如有空闲则可以按照轮询模式进行分配。
由此可以看出,对逻辑运算单元的调度采用的是无状态调度,即通过二级调度器103根据每个运算引擎在不同的运算阶段选择相应的逻辑运算单元,从而实现无状态调度,简单高效。
一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,可以直接判断多个运算引擎中处于等待状态的运算引擎队列中是否存在空闲状态的运算引擎,如果运算引擎队列中存在空闲状态的运算引擎,则根据最近最少使用算法LRU从运算引擎队列中存在空闲状态一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
另一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,首先判断多个运算引擎中是否存在处于空闲状态的运算引擎,如果多个运算引擎中存在处于空闲状态的运算引擎,则根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎;如果多个运算引擎中不存在处于空闲状态的运算引擎,再根据最近最少使用算法LRU从即将进入空闲状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎;如果多个运算引擎中也不存在即将进入空闲状态的运算引擎,则从运算引擎队列中选取处于空闲状态的运算引擎,将数据处理请求分配至该运算引擎。
通过上述实施例,在多个运算引擎中既不存在空闲状态的运算引擎,也不存在处于后处理状态的运算引擎的情况下,从运算引擎队列中选取处于空闲状态的运算引擎,将数据处理请求分配至该运算引擎,进一步提高了运算引擎资源的调度和利用率。
此处需要说明的是,由于同一类型的ALU的每次运算时间几乎完全相同,所以只要判断ALU池中该类型的ALU是否有空闲,如有空闲则可以按照轮询模式进行分配。所以二级调度器的基本调度功能由“独热编码”(1-hot)的环形移位器与空闲标记的逻辑操作完成,通过请求控制实现资源分配。
基于上述实施例中,当运算引擎完成算法迭代步骤,并输出结果后,其占用资源被释放,一级调度器中对该运算引擎状态做更新,并且刷新等待队列和LRU表项,然后等待接受下一个RSA计算请求。
可选地,图2是根据本发明实施例的一种可选的硬件资源调度系统示意图,如图2所示,该系统包括:处理单元201、一级调度器203、二级调度器205、运算引擎组207、逻辑运算单元池209、配置寄存器211、存储器213和输入输出接口215。
其中,处理单元201通过输入输出接口215接收一个或多个加/解密请求,并将该请求中的一个或多个数据处理请求存储至存储器213;一级调度器203从存储器213的从请求队列中读取至少一个数据处理请求后,从运算引擎组207中为每个数据处理请求调度一个满足预设工作状态的运算引擎,并将该数据处理请求分配至相应的运算引擎;当运算引擎进入工作模式后,根据运算引擎当前所处的运算阶段,从逻辑运算单元池209中调度一个相应的逻辑运算单元处理该数据处理请求。
综上所述,采用一级调度器和二级调度器构成的硬件资源调度方案,通过一级调度对硬件加速器的运算引擎进行有状态调度,通过二级调度对各个逻辑运算单元进行无状态调度。很好的兼顾了调度算法的硬件实现复杂度和调度效果,各个引擎、和各个逻辑运算单元之间解耦,能实现更高效的资源利用。而现有的RSA硬件加速方案并没有在这些运算引擎之间进行逻辑运算单元的资源调度分配,因而资源利用率较低。
需要说明的是,本申请提供的硬件资源调度系统可以广泛应用于硬件加速领域,例如,智能卡、IC卡、电子钥匙USB Key中使用的RSA公开密钥算法的硬件加速方案。与传统的软件加密相比,硬件加密的主要特点:一是稳定性和兼容性好,速度更快;二是安全性好,抗解密攻击强度高,能够较好地避免软件实现中密钥泄漏,内存被扫描等问题。
实施例2
根据本发明实施例,还提供了一种处理数据过程中的调度的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例2所提供的方法实施例可以广泛应用于硬件加速领域,例如,智能卡、IC卡、电子钥匙USB Key中使用的RSA公开密钥算法的硬件加速方案。与传统的软件加密相比,硬件加密的主要特点:一是稳定性和兼容性好,速度更快;二是安全性好,抗解密攻击强度高,能够较好地避免软件实现中密钥泄漏,内存被扫描等问题。
随着智能卡、IC卡、电子钥匙USB Key等在电子商务、身份认证等许多领域越来越广泛的应用,它们集数据加密和数据存储两大功能于一身,有着体积小,使用方便,功能强大,安全性好,价格便宜等特点,成为了推动电子商务发展的强大动力之一,还广泛应用于交通、医疗、身份认证等其他领域,极大地提高了人们生活和工作的现代化程度。智能卡、IC卡、电子钥匙USB Key等小型硬件设备,不仅被用来实现数据加密传输,还用来实现数字签名、密钥交换等功能。人们对它安全性能的要求越来越高,不仅要求它能实现对称密码算法,还要求实现RSA非对称公钥密码算法,相比于对称密码算法,RSA加密算法的计算量要大很多。
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法,广泛应用于智能IC卡和网络安全产品。RSA算法通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。由于RSA密码算法涉及大量的运算,采用软件完成,需要耗费大量的CPU资源,严重影响加解密的速度。而通过硬件加速方案,可以使得运算密集的RSA操作在CPU之外单独进行,以便CPU能够处理更多的协议栈和操作系统层面的请求。
由于RSA运算的复杂性,其硬件加速单元中通常都会采用多运算核心(引擎)的方案来进行处理。而每个运算引擎在不同的运算阶段需要向CPU申请的调度的算术逻辑单元(Arithmetic Logic Unit,ALU)不同,ALU是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,主要功能是进行二进制的算术运算(例如,加减乘等运算)。现有的RSA硬件加速方案并没有在这些运算引擎之间进行资源调度分配,因而资源利用率较低。
本申请实施例将RSA引擎状态控制与ALU池进行了解耦合,采用两级调度方案,通过一级调度为当前的数据处理请求分配相应的运算引擎,并根据该运算引擎的在不同运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源。二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
以RSA算法为例,图3(a)所示为根据本发明实施例的一种基于单个引擎的RSA硬件加速方案示意图,如图3(a)所示,基于单个引擎的RSA硬件加速器包括:配置寄存器、数据I/O接口、RSA引擎以及三种类型的算术逻辑单元,分别为ALU0、ALU1、ALU2;其中,算术逻辑单元ALU0用于预处理/后处理步骤,算术逻辑单元ALU1、ALU2用于正式计算步骤,其中,ALU1用于平方及取模步骤,ALU2用于相乘及取模步骤。由于ALU0与ALU1和ALU2的数据位宽不同,所以一般不会复用。而ALU1的平方取模虽然也可用ALU2的乘法取模替代,但是专用于平方取模的运算单元ALU1会经过专门的优化设计,功耗和速度要优于ALU2。
图3(b)所示为根据本发明实施例的一种基于多个引擎的RSA硬件加速方案示意图,如图3(b)所示,基于多个引擎的RSA硬件加速器包括:配置寄存器、数据I/O接口、RSA运算引擎分组以及三种类型的逻辑运算单元,分别为ALU0、ALU1、ALU2。由图3(b)可以看出,在RSA运算引擎分组中包含N个RSA运算引擎,一级调度器可以根据当前并发请求队列中数据处理任务,为每个数据处理任务分配一个相应的RSA运算引擎;在被选出执行当前任务的运算引擎进入工作模式后,根据该运算引擎各个运算阶段的不同,依次向RSA硬件加速器的二级调度器申请相应的ALU资源,二级调度器从逻辑运算单元池中调度相应的ALU资源,例如,在与计算阶段就会申请ALU0资源,正式计算时申请ALU1或ALU2资源。由于同一类型的ALU的每次运算时间几乎完全相同,所以只要判断ALU池中该类型的ALU是否有空闲,如有空闲则可以按照轮询模式进行分配;图3(c)所示为根据本发明实施例的一种可选的分配ALU池资源的二级调度器示意图,如图3(c)所示,二级调度器的基本调度功能由“独热编码”(1-hot)的环形移位器与空闲标记的逻辑操作完成,通过请求控制实现资源分配。
在上述运行环境下,本申请提供了如图4所示的一种处理数据过程中的调度方法。图4是根据本发明实施例的一种处理数据过程中的调度方法的流程图,调度方法所包括如下步骤均可以在计算设备中运行,其中,该计算设备可以包括多个运算引擎和多个逻辑运算单元:
步骤S402,计算设备从请求队列中读取至少一个数据处理请求。
具体地,在上述步骤中,上述数据处理请求可以为需要调度硬件资源来进行数据处理的一个或多个请求,一种可选的实施例中,可以是利用硬件加速的方法来实现RSA公钥加解密算法的数据处理请求。上述请求队列为包含了一个或多个数据处理请求的任务队列;基于上述步骤S402公开的方案,计算设备的一级调度模块可以从任务队列中读取一个或多个数据处理请求。如果采用串行的方式来处理数据处理请求,可以从请求队列中依次读取每个数据处理请求;如果采用并行的方式来处理数据处理请求,可以从请求队列中每次读取多个数据处理请求,例如,以RSA算法为例,为了提高RSA算法的运算速度,可以采用多运算核心(即,多个运算引擎)的硬件加速器来实现,这种情况下,可以从请求队列中读取多个数据处理请求,以并行的方式对读取的数据处理请求进行处理。
步骤S404,计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎。
具体地,在上述步骤中,上述第一预设条件可以为预设的运算引擎能够处理数据处理请求的条件;由于每个数据处理请求需要通过相应的运算引擎来进行处理,因而,如果并行处理多个数据处理请求,一级调度模块可以从请求队列中同时读取多个数据处理请求,查找当前处于空闲状态的运算引擎,并将每个数据处理请求分配至相应的运算引擎;例如,以RSA算法为例,在通过采用多引擎的硬件加速器来对RSA算法进行加速的情况下,在从请求队列中读取多个数据处理请求后,可以将读取的多个数据处理请求分配至相应的运算引擎。
在第一种实施方案中,上述第一预设条件可以为运算引擎当前处于空闲状态;如果该运算引擎处于空闲状态,则该运算引擎可以用于处理数据处理请求。
在第二种实施方案中,上述第一预设条件还可以为运算引擎当前处于后处理状态(即,即将进入空闲的状态);如果该运算引擎处于后处理状态,则该运算引擎可以用于处理数据处理请求。
在第三种实施方案中,上述第一预设条件还可以为处于等待状态的运算引擎进入空闲状态;如果处于等待状态的运算引擎进入空闲状态,则该运算引擎可以用于处理数据处理请求。
此处需要说明的是,在一种可选的实施例中,可以依次执行上述三种实施方案,即,从请求队列中读取到至少一个数据处理请求后,首先判断是否存在空闲的运算引擎,如果存在空闲的运算引擎,则优先调度处于空闲状态的运算引擎来对读取到的数据处理请求进行处理;如果不存在处于空闲状态的运算引擎,则继续判断是否存在处于后处理状态的运算引擎,如果存在处于后处理状态的运算引擎,则调度处于后处理状态的运算引擎来对读取到的数据处理请求进行处理;如果不存在处于后处理状态的运算引擎,则判断处于等到状态的运算引擎中是否存在空闲状态的运算引擎,如果处于等待状态的运算引擎中存在处于空闲状态的运算引擎,则调度处于空闲状态的运算引擎来对读取到的数据处理请求进行处理;如果处于等待状态的运算引擎中不存在处于空闲状态的运算引擎,则拒绝当前的数据处理请求。
步骤S406,计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元。
具体地,在上述步骤中,上述逻辑运算单元可以为用于运算引擎对数据处理请求进行处理的过程中涉及到的各个运算单元,一种可选的实施例中,以RSA算法为例,该逻辑运算单元可以为算数逻辑单元ALU。上述第二预设条件可以为满足运算引擎在处理数据处理请求过中不同运算阶段请求的逻辑运算单元的类型。针对某一数据处理请求,在选取到满足第一预设条件的运算引擎后,该运算引擎可以从逻辑运算单元池中调度当前运算阶段请求的逻辑运算单元资源,得到满足第二预设条件的一个或多个逻辑运算单元。
此处需要说明的是,逻辑运算单元池用于表征包含了多个逻辑运算单元的集合。
步骤S408,计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
具体地,在上述步骤中,针对读取到的数据处理请求,在选取到满足第一预设条件的运算引擎从逻辑单元池中调度相应的一个或多个逻辑运算单元后,该运算引擎会通过调度的一个或多个逻辑运算单元对数据处理请求进行相应的处理。
需要说明的是,现有技术采用一级调度方案,没有将运算过程中逻辑复杂的一级调度与逻辑简单的二级调度区分开,也没有针对并行的多个运算任务进行动态调整,其资源利用率不高。而本申请上述步骤S402至S408公开的方案,采用两级调度方案,其中,步骤S404中数据处理请求分配至满足第一预设条件的运算引擎,采用的是一级调度,通过判断当前每个运算引擎的状态(即,上述第一预设条件),并根据运算引擎的状态将数据处理请求分发给相应的运算引擎,从而实现状态调度,保证了负载均衡;步骤S404中运算引擎从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元采用的是二级调度方案,即根据每个运算引擎在不同的运算阶段选择相应的逻辑运算单元,从而实现无状态调度,简单高效。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
在一种可选的实施例中,第一预设条件至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
具体地,在上述实施例中,上述空闲的运算引擎是指可以用于执行当前请求任务的处于空闲状态的运算引擎,上述正在做后处理的运算引擎是指即将进入空闲状态的运算引擎,上述处于等待状态的运算引擎是指当前处于运算引擎等待队列中的运算引擎,可以从上述三种运算引擎中选择任意一种或多种作为执行当前请求任务的引擎,一种可选的实施例中,可以优先选用当前处于空闲状态的运算引擎,如果没有当前处于空闲状态的运算引擎,则选用处于后处理状态的运算引擎,如果也没有处于后处理状态的运算引擎,可以选用处于等待状态的运算引擎,直到不存在上述任意一种运算引擎,则拒绝当前请求。
在一种可选的实施例中,如图5所示,计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎,可以包括如下步骤:
步骤S502,计算设备判断多个运算引擎中是否存在空闲的运算引擎;
步骤S504,如果存在,计算设备根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
具体地,在上述步骤中,上述空闲的运算引擎是指可以用于执行当前请求任务的处于空闲状态的运算引擎;上述最近最少使用算法LRU(Least Recently Used)为“近期最少使用”算法;在从请求队列中读取一个或多个数据处理请求后,判断多个运算引擎中是否存在处于空闲状态的运算引擎,如果存在多个运算引擎中存在处于空闲状态的运算引擎,则根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎。
通过上述实施例,优先将数据处理请求分配至当前处于空闲状态的运算引擎,可以实现RSA算法硬件加速方案中的多个运算引擎之间进行调度的目的。
在一种可选的实施例中,如图6所示,计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
步骤S602,计算设备判断多个运算引擎中是否存在正在做后处理的运算引擎;
步骤S604,如果存在,计算设备根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
具体地,在上述步骤中,上述正在做后处理的运算引擎可以为即将进入空闲状态的运算引擎;一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,可以直接判断多个运算引擎中是否存在即将进入空闲状态的运算引擎,如果存在即将进入空闲状态的运算引擎,则根据最近最少使用算法LRU从即将进入空闲状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎;另一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,首先判断多个运算引擎中是否存在处于空闲状态的运算引擎,如果多个运算引擎中存在处于空闲状态的运算引擎,则根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎;如果不存在多个运算引擎中存在处于空闲状态的运算引擎,再根据最近最少使用算法LRU从即将进入空闲状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
通过上述实施例,优先将数据处理请求分配至当前处于空闲状态的运算引擎,如果没有处于空闲状态的运算引擎,再从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎,达到了充分调度和利用运算引擎资源的目的。
在一种可选的实施例中,如图7所示,计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
步骤S702,计算设备判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;
步骤S704,如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
具体地,在上述步骤中,上述处于等待状态的运算引擎是指当前处于执行状态加入等待队列中的运算引擎,如果多个运算引擎中既没有处于空闲状态的运算引擎,也没有处于后处理状态的运算引擎,可以从处于等待状态的运算引擎队列中选取处于空闲状态的运算引擎,并将数据处理请求分配至该运算引擎。
一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,可以直接判断多个运算引擎中处于等待状态的运算引擎队列中是否存在空闲状态的运算引擎,如果运算引擎队列中存在空闲状态的运算引擎,则根据最近最少使用算法LRU从运算引擎队列中存在空闲状态一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
另一种可选的实施方案中,在从请求队列中读取一个或多个数据处理请求后,首先判断多个运算引擎中是否存在处于空闲状态的运算引擎,如果多个运算引擎中存在处于空闲状态的运算引擎,则根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎;如果多个运算引擎中不存在处于空闲状态的运算引擎,再根据最近最少使用算法LRU从即将进入空闲状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎;如果多个运算引擎中也不存在即将进入空闲状态的运算引擎,则从运算引擎队列中选取处于空闲状态的运算引擎,将数据处理请求分配至该运算引擎。
通过上述实施例,在多个运算引擎中既不存在空闲状态的运算引擎,也不存在处于后处理状态的运算引擎的情况下,从运算引擎队列中选取处于空闲状态的运算引擎,将数据处理请求分配至该运算引擎,进一步提高了运算引擎资源的调度和利用率。
在一种可选的实施例中,如图8所示,计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎,可以包括如下步骤:
步骤S802,计算设备判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;
步骤S804,如果不存在,则计算设备继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;
步骤S806,如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
具体地,在上述步骤中,在从请求队列中读取一个或多个数据处理请求后,首先判断多个运算引擎中是否存在处于空闲状态和/或处于正在做后处理状态的运算引擎,如果多个运算引擎中存在处于空闲状态和/或处于正在做后处理状态的运算引擎,则根据最近最少使用算法LRU从处于空闲状态和/或处于正在做后处理状态的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎;如果多个运算引擎中不存在处于空闲状态和/或处于正在做后处理状态的运算引擎,则继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态,如果存在至少一个进入空闲状态的运算引擎,根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
通过上述实施例,实现了RSA算法硬件加速方案中充分调度和利用运行运算引擎的目的。
在一种可选的实施例中,如图9所示,计算设备使用满足第一预设条件的运算引擎从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元,包括:
步骤S902,计算设备控制满足第一预设条件的运算引擎进入工作模式;
步骤S904,计算设备根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;
步骤S906,计算设备根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
具体地,在上述步骤中,上述逻辑运算单元可以为用于运算引擎对数据处理请求进行处理的过程中涉及到的各个运算单元,一种可选的实施例中,以RSA算法为例,该逻辑运算单元可以为算数逻辑单元ALU。在从请求队列中读取一个或多个数据处理请求,通过一级调度算法从多个运算引擎中选取到至少一个符合条件的运算引擎,并将数据处理请求分配后,该运算引擎则进入工作模式,根据当前运算阶段处于的状态,确定需要申请的逻辑运算单元的类型,在确定需要申请的逻辑运算单元的类型后,根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
可选的,从逻辑运算单元池中选择对应的至少一个逻辑运算单元,包括:采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
此处需要说明的是,由于同一类型的ALU的每次运算时间几乎完全相同,所以只要判断ALU池中该类型的ALU是否有空闲,如有空闲则可以按照轮询模式进行分配。所以二级调度器的基本调度功能由“独热编码”(1-hot)的环形移位器与空闲标记的逻辑操作完成,通过请求控制实现资源分配。
作为一种可选的实施例,以RSA算法为例,图3(a)所示为根据本发明实施例的一种基于单个引擎的RSA硬件加速方案示意图,图3(b)所示为根据本发明实施例的一种基于多个引擎的RSA硬件加速方案示意图,如图3(a)所示,基于单个引擎的RSA硬件加速器包括:配置寄存器、数据I/O接口、RSA引擎以及三种类型的逻辑运算单元,分别为ALU0、ALU1、ALU2;如图3(b)所示,基于多个引擎的RSA硬件加速器包括:配置寄存器、数据I/O接口、N个RSA引擎以及三种类型的逻辑运算单元,分别为ALU0、ALU1、ALU2。
需要说明的是,ALU0用于预处理/后处理步骤,ALU1、ALU2用于正式计算步骤,ALU1用于平方及取模步骤,ALU2用于相乘及取模步骤。ALU0与ALU1/2的数据位宽不同,所以一般不会复用。而ALU1的平方取模虽然也可用ALU2的乘法取模替代,但是专用于平方取模的运算单元ALU1会经过专门的优化设计,功耗和速度要优于ALU2。在被选出执行当前任务的运算引擎进入工作模式后,根据该运算引擎每个运算阶段的状态,依次向RSA的二级调度器申请相应的ALU资源。例如,在与计算阶段就会申请ALU0资源,正式计算时申请ALU1/2资源。如图3(c)所示为根据本发明实施例的一种可选的二级调度器示意图。
在一种可选的实施例中,如图10所示,在计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求之后,上述方法还可以包括如下步骤:
步骤S102,计算设备释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;
步骤S104,计算设备返回等待下一次数据处理请求。
具体地,在上述步骤中,当运算引擎完成算法迭代步骤,并输出结果后,其占用资源被释放,一级调度器中对该运算引擎状态做更新,并且刷新等待队列和LRU表项,然后等待接受下一个RSA计算请求。
在一种可选的实施例中,在计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎之前,上述方法还可以包括:在多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
作为一种可选的实施方式,图11所示为根据本发明实施例的一种可选的在多个引擎中进行资源调度的方法流程图。如图11所示,包括如下步骤:
步骤S112,等待请求。
具体地,在上述步骤中,上述请求为数据处理请求,在运算引擎队列中的多个运算引擎处于等待相应的数据处理请求的状态。
步骤S114,收到RSA计算请求。
具体地,在上述步骤中,通过数据I/O接口接收RSA算法的数据处理请求。
步骤S116,查询各引擎权重及状态。
具体地,在上述步骤中,在通过数据I/O接口接收RSA算法的数据处理请求后,在运算引擎队列中查询各个运算引擎的权重及当前所处的状态,其状态包括:空闲状态、后处理状态(即,即将进入空闲的状态)、允许等待状态。
步骤S118,判断是否有空闲引擎。
具体地,在上述步骤中,判断是否存在空闲的运算引擎,如果存在空闲的运算引擎,则执行步骤S120;如果不存在空闲的运算引擎,则执行步骤S132。
步骤S120,根据LRU选择一个空闲引擎。
具体地,在上述步骤中,如果存在空闲的运算引擎,则根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,将数据处理请求分配至该运算引擎。
步骤S122,申请ALU。
具体地,在上述步骤中,根据最近最少使用算法LRU从空闲的多个运算引擎中选择一个或多个运算引擎,并将数据处理请求分配后,该运算引擎则进入工作模式,根据当前运算阶段处于的状态,确定需要申请的逻辑运算单元的类型,在确定需要申请的逻辑运算单元的类型后,根据确定的逻辑运算单元的类型,向二级调度器申请相应类型的逻辑运算单元。
步骤S124,按照申请类型轮询ALU池。
具体地,在上述步骤中,在确定需要申请的逻辑运算单元的类型后,根据确定的逻辑运算单元的类型,采用轮询的方式从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
步骤S126,分配和占用ALU。
具体地,在上述步骤中,在采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元后,占用申请得到的逻辑运算单元。
步骤S128,判断引擎是否完成处理。
具体地,在上述步骤中,在采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元后,利用该逻辑运算单元对数据处理请求进行处理,并实时判断该运算引擎是否完成处理。
步骤S130,释放资源及更新状态。
具体地,在上述步骤中,在运算引擎利用该逻辑运算单元对数据处理请求进行处理完后,释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态,返回等待下一次数据处理请求。
步骤S132,判断是否有引擎正做后处理。
具体地,在上述步骤中,在通过数据I/O接口接收RSA算法的数据处理请求后,如果多个运算引擎中不存在处于空闲状态的运算引擎,则判断多个运算引擎中是否存正在做后处理的运算引擎。
步骤S134,选择一个在做后处理的引擎。
具体地,在上述步骤中,如果多个运算引擎中存正在做后处理的运算引擎,则根据最近最少使用算法LRU从后处理状态的一个或多个运算引擎中选择一个运算引擎,将数据处理请求分配至该运算引擎。
步骤S136,判断所有引擎的等待队列是否已满。
具体地,在上述步骤中,判断处于等待状态的运行引擎队列是否已满,如果处于等待状态的运行引擎队列未满,则执行步骤S138;如果处于等待状态的运行引擎队列已满,则执行步骤S142。
步骤S138,根据LRU选择一个引擎。
具体地,在上述步骤中,如果处于等待状态的运行引擎队列未满,则根据最近最少使用算法LRU选择一个引擎加入运行引擎等待队列中。
步骤S140,加入等待队列。
具体地,在上述步骤中,根据最近最少使用算法LRU选择一个引擎加入运行引擎等待队列中,当等待队列中的运算引擎空闲后进入步骤S132。
步骤S142,拒绝请求。
具体地,在上述步骤中,如果处于等待状态的运行引擎队列已满,则拒绝数据处理请求。
本申请上述实施例中,采用二级调度算法,第一级调度算法对各个加速引擎进行有状态调度,第二级调度算法对各个ALU单元使用无状态调度。很好的兼顾了调度算法的硬件实现复杂度和调度效果,各个引擎、和各个ALU单元之间解耦,能实现更高效的资源利用。同时,更均衡的硬件资源调度对于抵抗侧信道攻击也有好处。通过上述实施例,采用多级调度方案,将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度。将引擎与ALU解耦合,引擎根据当前状态进行ALU占用请求,对引擎集合采用有状态调度,保证负载均衡,对ALU池采用无状态调度方案,简单高效。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述处理数据过程中的调度方法的装置实施例,图12是根据本发明实施例的一种处理数据过程中的调度装置示意图,如图12所示,该装置包括:读取模块121、分配模块123、调度模块125和处理模块127。
其中,读取模块121,用于计算设备从请求队列中读取至少一个数据处理请求;
分配模块123,用于计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;
调度模块125,用于基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;
处理模块127,用于计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
此处需要说明的是,读取模块121、分配模块123、调度模块125和处理模块127可以对应于实施例1中的步骤S402至步骤S408,四个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
在一种可选的实施例中,第一预设条件至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
在一种可选的实施例中,上述分配模块123可以包括:第一判断模块,用于计算设备判断多个运算引擎中是否存在空闲的运算引擎;第一执行模块,用于如果存在,根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
此处需要说明的是,上述第一判断模块和第一执行模块对应于实施例2中的步骤S502至步骤S504,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述分配模块123可以包括:第二判断模块,用于计算设备判断多个运算引擎中是否存正在做后处理的运算引擎;第二执行模块,用于如果存在,计算设备根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
此处需要说明的是,上述第二判断模块和第二执行模块对应于实施例2中的步骤S602至步骤S604,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述分配模块123可以包括:第三判断模块,用于计算设备判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;第三执行模块,用于如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
此处需要说明的是,上述第三判断模块和第三执行模块对应于实施例2中的步骤S702至步骤S704,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述分配模块123可以包括:第四判断模块,用于计算设备判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;第四执行模块,用于如果不存在,则计算设备继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;第五执行模块,用于如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
此处需要说明的是,上述第四判断模块、第四执行模块和第五执行模块对应于实施例2中的步骤S802至步骤S806,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述调度模块125可以包括:控制模块,用于计算设备控制满足第一预设条件的运算引擎进入工作模式;确定模块,用于计算设备根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;选择模块,用于计算设备根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
此处需要说明的是,上述控制模块、确定模块和选择模块对应于实施例1中的步骤S902至步骤S906,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述选择模块可以用于计算设备采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
在一种可选的实施例中,上述装置还可以包括:更新模块,用于计算设备释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;返回模块,用于计算设备返回等待下一次数据处理请求。
此处需要说明的是,上述更新模块和返回模块对应于实施例2中的步骤S102至步骤S104,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
在一种可选的实施例中,上述装置还可以包括:第六执行模块,在计算设备从多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
此处需要说明的是,上述第六执行模块对应于实施例2中的步骤中在多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求,该模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。
实施例4
根据本发明实施例,还提供了一种用于硬件加密单元的任务调度装置实施例,图13是根据本发明实施例的一种用于硬件加密单元的任务调度装置示意图,如图13所示,该装置包括:输入/输出接口131和控制器133。
其中,输入/输出接口131,用于从请求队列中读取至少一个数据处理请求;控制器133,与输入/输出接口连接,用于为每个数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元,并使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
此处需要说明的是,上述输入/输出接口可以是并行传输接口,也可以是串行传输接口。
此处还需要说明的是,上述任务调度装置可以用于任何一种用于提高运算速度的硬件加速器中,一种可选的实施例中,可以用于加密设备的硬件加密单元中。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
在一种可选的实施例中,第一预设条件至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
在一种可选的实施例中,上述控制器133还用于判断多个运算引擎中是否存在空闲的运算引擎;如果存在,根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述控制器133还用于判断多个运算引擎中是否存正在做后处理的运算引擎;如果存在,根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述控制器133还用于判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述控制器133还用于判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;如果不存在,则继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述控制器133还用于满足第一预设条件的运算引擎进入工作模式;根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
在一种可选的实施例中,上述控制器133还用于采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
在一种可选的实施例中,上述控制器133还用于释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;返回等待下一次数据处理请求。
在一种可选的实施例中,上述控制器133还用于在多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
实施例5
根据本发明实施例,还提供了一种计算设备实施例,图14是根据本发明实施例的一种计算设备结构框图,如图14所示,该装置包括:硬件加密单元141、存储器143、任务调度单元145和处理器147。
其中,硬件加密单元141,用于处理加密请求;存储器143,与硬件加密单元连接,用于将加密请求中的一个或多个数据处理请求存储至请求队列中;任务调度单元145,与存储器连接,用于与存储器连接,用于从请求队列中读取至少一个数据处理请求,并为数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元;处理器147,与任务调度单元连接,用于使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
此处需要说明的是,上述计算设备可以是智能移动设备,例如、手机、平板电脑、计算机等。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
在一种可选的实施例中,第一预设条件至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
在一种可选的实施例中,上述任务调度单元145还用于判断多个运算引擎中是否存在空闲的运算引擎;如果存在,根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述任务调度单元145还用于判断多个运算引擎中是否存正在做后处理的运算引擎;如果存在,根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述任务调度单元145还用于判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述任务调度单元145还用于判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;如果不存在,则继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
在一种可选的实施例中,上述任务调度单元145还用于满足第一预设条件的运算引擎进入工作模式;根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
在一种可选的实施例中,上述任务调度单元145还用于采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
在一种可选的实施例中,上述任务调度单元145还用于释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;返回等待下一次数据处理请求。
在一种可选的实施例中,上述任务调度单元145还用于在多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
实施例6
根据本发明实施例,还提供了一种处理数据过程中的两级调度方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图15是根据本发明实施例的一种处理数据过程中的两级调度方法流程图,如图15所示,该方法所包括如下步骤
步骤S152,从请求队列中读取至少一个数据处理请求;
步骤S154,执行一级调度:为每个数据处理请求分配到一个满足预设状态的运算引擎,其中,运算引擎在执行过程中具备多个执行状态;
步骤S156,执行二级调度:基于满足预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与预设状态对应的可用的至少一个逻辑运算单元;和
步骤S158,使用逻辑运算单元处理数据处理请求。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
实施例7
根据本发明实施例,还提供了一种计算设备实施例,图16是根据本发明实施例的一种计算设备示意图,如图16所示,该计算设备包括:输入输出接口161、存储器162、一级调度器163、二级调度器164、运算引擎池165和逻辑运算单元池166。
其中,输入输出接口161,用于接收数据处理请求;
存储器162,用于保存数据处理请求,形成请求队列;
一级调度器163,用于从请求队列中读取至少一个数据处理请求,并分配到一个满足预设状态的运算引擎;
二级调度器164,用于基于满足预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与预设状态对应的可用的至少一个逻辑运算单元处理数据处理请求;
运算引擎池165,包括多个运算引擎,用于向一级调度器提供预设状态的运算引擎,其中,每个运算引擎在执行过程中具备多个执行状态;和
逻辑运算单元池166,包括多个逻辑运算单元,用于向二级调度器提供逻辑运算单元。
由上可知,本申请上述实施例公开的方案中,采用两级调度的方式,通过第一级调度算法对运算引擎进行状态调度,通过第二级调度算法对逻辑运算单元进行无状态调度,具体地,在从请求任务队列中读取到一个或多个数据处理请求后,将数据处理请求分配至满足第一预设条件的运算引擎,满足第一预设条件的运算引擎再从逻辑运算单元池中调度,得到满足第二预设条件的一个或多个逻辑运算单元对数据处理请求进行处理。一种可选的实施例中,以RSA算法为例,每个输入的RSA计算请求都会进入统一的并发请求队列,然后通过一级调度和二级调度完成资源的分配、完成计算。其中,一级调度是根据当前每个RSA引擎的状态和LRU表项完成任务分发,将请求队列中的每个请求任务都分配到一个RSA引擎,如果没有合适的引擎可分配,则给出拒绝回应;二级调度是根据每个RSA引擎在不同的运算阶段(预计算、正式计算、后处理等),根据不同的运算需求申请对应的ALU资源,二级调度器从ALU池中选择对应类型的ALU单元,分配给相应的RSA引擎。
通过上述实施例公开的方案,达到了将RSA引擎状态控制与ALU池进行了解耦合,降低了整体的设计复杂度的目的,实现了提高资源利用率的技术效果。
由此,本申请上述实施例解决了计算机设备中运算资源利用率低的技术问题。
实施例8
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选的,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选的,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
图17示出了一种计算机终端的硬件结构框图。如图17所示,计算机终端17可以包括一个或多个(图中采用172a、172b,……,172n来示出)处理器172(处理器172可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器174、以及用于通信功能的传输装置176。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图17所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端17还可包括比图17中所示更多或者更少的组件,或者具有与图17所示不同的配置。
应当注意到的是上述一个或多个处理器172和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端17中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器174可用于存储应用软件的软件程序以及模块,如本发明实施例中的处理数据过程中的调度方法对应的程序指令/数据存储装置,处理器172通过运行存储在存储器174内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的处理数据过程中的调度方法。存储器174可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器174可进一步包括相对于处理器172远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端17。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置176用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端17的通信供应商提供的无线网络。在一个实例中,传输装置176包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置176可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端17(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图17所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图17仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在本实施例中,上述计算机终端可以执行应用程序的处理数据过程中的调度方法中以下步骤的程序代码:计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的安全漏洞检测方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的系统漏洞攻击的检测方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
可选的,预设工作状态至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在预设工作状态包括多种情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备判断多个运算引擎中是否存在空闲的运算引擎;如果存在,计算设备根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备判断多个运算引擎中是否存在正在做后处理的运算引擎;如果存在,计算设备根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;如果不存在,则计算设备继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备控制满足第一预设条件的运算引擎进入工作模式;计算设备根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;计算设备根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
可选的,上述处理器还可以执行如下步骤的程序代码:计算设备释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;计算设备返回等待下一次数据处理请求。
可选的,上述处理器还可以执行如下步骤的程序代码:在计算设备从多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
本领域普通技术人员可以理解,图17所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图17其并不对上述电子装置的结构造成限定。例如,计算机终端17还可包括比图17中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图17所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例9
本发明的实施例还提供了一种存储介质。可选的,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的处理数据过程中的调度方法所执行的程序代码。
可选的,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备从请求队列中读取至少一个数据处理请求;计算设备为每个数据处理请求分配到一个满足第一预设条件的运算引擎;计算设备基于满足第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;计算设备使用满足第二预设条件的至少一个逻辑运算单元处理数据处理请求。
可选的,第一预设条件至少包括如下一个条件:运算引擎是否空闲、运算引擎是否正在做后处理和运算引擎是否处于等待状态,其中,在第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对运算引擎进行依次判断。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备判断多个运算引擎中是否存在空闲的运算引擎;如果存在,计算设备根据最近最少使用算法LRU从空闲的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备判断多个运算引擎中是否存在正在做后处理的运算引擎;如果存在,计算设备根据最近最少使用算法LRU从正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从处于至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;如果不存在,则计算设备继续判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;如果存在至少一个进入空闲状态的运算引擎,计算设备根据最近最少使用算法LRU从存在至少一个进入空闲状态的运算引擎中选择一个运算引擎作为满足第一预设条件的运算引擎。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备控制满足第一预设条件的运算引擎进入工作模式;计算设备根据运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;计算设备根据确定的逻辑运算单元的类型,从逻辑运算单元池中选择对应的至少一个逻辑运算单元。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备采用轮询的方式从逻辑运算单元池中申请与类型相同的逻辑运算单元,并占用申请得到的逻辑运算单元。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算设备释放用于处理数据处理请求的资源,并更新用于调度逻辑运算单元来处理数据处理请求的运算引擎的状态;计算设备返回等待下一次数据处理请求。
可选的,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在计算设备从多个运算引擎中没有查询到满足第一预设条件的运算引擎的情况下,拒绝数据处理请求,并返回等待下一次数据处理请求。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (16)

1.一种处理数据过程中的调度系统,其特征在于,包括:
客户端设备,包括:输入/输出接口、一级调度器、二级调度器、多个运算引擎和多个逻辑运算单元;
所述输入/输出接口,用于接收至少一个数据处理请求,并存储至请求队列中;
所述一级调度器,与所述输入/输出接口连接,用于从所述请求队列中读取至少一个数据处理请求,并为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎;
所述二级调度器,与所述一级调度器连接,用于接收所述数据处理请求,并基于满足所述第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;
其中,满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求。
2.一种处理数据过程中的调度方法,其特征在于,包括:
计算设备从请求队列中读取至少一个数据处理请求;
所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎;
所述计算设备基于满足所述第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;
所述计算设备使用满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求。
3.根据权利要求2所述的方法,其特征在于,所述第一预设条件至少包括如下一个条件:所述运算引擎是否空闲、所述运算引擎是否正在做后处理和所述运算引擎是否处于等待状态,其中,在所述第一预设条件包括多个条件的情况下,每个条件的按照预定的优先级对所述运算引擎进行依次判断。
4.根据权利要求3所述的方法,其特征在于,所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
所述计算设备判断多个运算引擎中是否存在空闲的运算引擎;
如果存在,所述计算设备根据最近最少使用算法LRU从所述空闲的至少一个运算引擎中选择一个运算引擎作为满足所述第一预设条件的运算引擎。
5.根据权利要求3所述的方法,其特征在于,所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
所述计算设备判断多个运算引擎中是否存在正在做后处理的运算引擎;
如果存在,所述计算设备根据最近最少使用算法LRU从所述正在做后处理的至少一个运算引擎中选择一个运算引擎作为满足所述第一预设条件的运算引擎。
6.根据权利要求3所述的方法,其特征在于,所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
所述计算设备判断多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;
如果存在至少一个进入所述空闲状态的运算引擎,所述计算设备根据最近最少使用算法LRU从所述至少一个进入所述空闲状态的运算引擎中选择一个运算引擎作为满足所述第一预设条件的运算引擎。
7.根据权利要求3所述的方法,其特征在于,所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎,包括:
所述计算设备判断多个运算引擎中是否存在空闲的运算引擎和/或正在做后处理的运算引擎;
如果不存在,则所述计算设备继续判断所述多个运算引擎中处于等待状态的运行引擎是否进入空闲状态;
如果存在至少一个进入所述空闲状态的运算引擎,所述计算设备根据最近最少使用算法LRU从所述至少一个进入所述空闲状态的运算引擎中选择一个运算引擎作为满足所述第一预设条件的运算引擎。
8.根据权利要求2至7中任意一项所述的方法,其特征在于,所述计算设备使用满足所述第一预设条件的运算引擎从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元,包括:
所述计算设备控制满足所述第一预设条件的运算引擎进入工作模式;
所述计算设备根据所述运算引擎的当前运算阶段,确定需要申请的逻辑运算单元的类型;
所述计算设备根据确定的逻辑运算单元的类型,从所述逻辑运算单元池中选择对应的所述至少一个逻辑运算单元。
9.根据权利要求8所述的方法,其特征在于,从所述逻辑运算单元池中选择对应的所述至少一个逻辑运算单元,包括:
所述计算设备采用轮询的方式从所述逻辑运算单元池中申请与所述类型相同的逻辑运算单元,并占用申请得到的所述逻辑运算单元。
10.根据权利要求2所述的方法,其特征在于,在所述计算设备使用满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求之后,所述方法还包括:
所述计算设备释放用于处理所述数据处理请求的资源,并更新用于调度逻辑运算单元来处理所述数据处理请求的运算引擎的状态;
所述计算设备返回等待下一次数据处理请求。
11.根据权利要求2所述的方法,其特征在于,在所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎之前,所述方法还包括:在所述计算设备从多个运算引擎中没有查询到满足所述第一预设条件的运算引擎的情况下,拒绝所述数据处理请求,并返回等待下一次数据处理请求。
12.一种处理数据过程中的调度装置,其特征在于,包括:
读取模块,用于计算设备从请求队列中读取至少一个数据处理请求;
分配模块,用于所述计算设备为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎;
调度模块,用于基于满足所述第一预设条件的运算引擎的状态数据从逻辑运算单元池中调度,得到满足第二预设条件的至少一个逻辑运算单元;
处理模块,用于所述计算设备使用满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求。
13.一种用于硬件加密单元的任务调度装置,其特征在于,包括:
输入/输出接口,用于从请求队列中读取至少一个数据处理请求;
控制器,与所述输入/输出接口连接,用于为每个所述数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元,并使用满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求。
14.一种计算设备,其特征在于,包括:
硬件加密单元,用于处理加密请求;
存储器,与所述硬件加密单元连接,用于将所述加密请求中的一个或多个数据处理请求存储至请求队列中;
任务调度单元,与所述存储器连接,用于从所述请求队列中读取至少一个数据处理请求,并为所述数据处理请求分配到一个满足第一预设条件的运算引擎,以及调度满足第二预设条件的至少一个逻辑运算单元;
处理器,与所述任务调度单元连接,用于使用满足所述第二预设条件的至少一个逻辑运算单元处理所述数据处理请求。
15.一种处理数据过程中的两级调度方法,其特征在于,包括:
从请求队列中读取至少一个数据处理请求;
执行一级调度:为每个所述数据处理请求分配到一个满足预设状态的运算引擎,其中,所述运算引擎在执行过程中具备多个执行状态;
执行二级调度:基于满足所述预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与所述预设状态对应的可用的至少一个逻辑运算单元;和
使用所述逻辑运算单元处理所述数据处理请求。
16.一种计算设备,其特征在于,包括:
输入输出接口,用于接收数据处理请求;
存储器,用于保存所述数据处理请求,形成请求队列;
一级调度器,用于从请求队列中读取至少一个数据处理请求,并分配到一个满足预设状态的运算引擎;
二级调度器,用于基于满足所述预设状态的运算引擎的状态数据,从逻辑运算单元池中调度,选择与所述预设状态对应的可用的至少一个逻辑运算单元处理所述数据处理请求;
运算引擎池,包括多个运算引擎,用于向所述一级调度器提供运算引擎,其中,每个运算引擎在执行过程中具备多个执行状态;和
逻辑运算单元池,包括多个逻辑运算单元,用于向所述二级调度器提供逻辑运算单元。
CN201710016528.1A 2017-01-10 2017-01-10 处理数据过程中的调度方法、装置和系统 Active CN108287759B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710016528.1A CN108287759B (zh) 2017-01-10 2017-01-10 处理数据过程中的调度方法、装置和系统
TW106136681A TWI753036B (zh) 2017-01-10 2017-10-25 處理資料過程中的調度方法、裝置和系統
PCT/US2018/013185 WO2018132485A1 (en) 2017-01-10 2018-01-10 Scheduling method, apparatus, and system for use in data processing
US15/867,128 US10467057B2 (en) 2017-01-10 2018-01-10 Selecting a logic operation unit that matches a type of logic operation unit required by a selected operation engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710016528.1A CN108287759B (zh) 2017-01-10 2017-01-10 处理数据过程中的调度方法、装置和系统

Publications (2)

Publication Number Publication Date
CN108287759A true CN108287759A (zh) 2018-07-17
CN108287759B CN108287759B (zh) 2021-07-09

Family

ID=62782457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710016528.1A Active CN108287759B (zh) 2017-01-10 2017-01-10 处理数据过程中的调度方法、装置和系统

Country Status (4)

Country Link
US (1) US10467057B2 (zh)
CN (1) CN108287759B (zh)
TW (1) TWI753036B (zh)
WO (1) WO2018132485A1 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190733A (zh) * 2019-12-27 2020-05-22 华为技术有限公司 用于进行rsa计算的计算资源调度方法及装置
CN111866159A (zh) * 2020-07-28 2020-10-30 阿戈斯智能科技(苏州)有限公司 人工智能服务的调用方法、系统、设备和存储介质
CN112905525A (zh) * 2019-11-19 2021-06-04 中科寒武纪科技股份有限公司 控制运算装置进行计算的方法及设备
CN113449344A (zh) * 2020-03-27 2021-09-28 支付宝(杭州)信息技术有限公司 一种安全计算方法、装置、设备及介质
CN113885945A (zh) * 2021-08-30 2022-01-04 山东云海国创云计算装备产业创新中心有限公司 一种计算加速方法、设备以及介质
CN113900828A (zh) * 2021-12-08 2022-01-07 深圳致星科技有限公司 联邦学习专用处理器、联邦学习处理芯片及芯片
WO2022036690A1 (zh) * 2020-08-21 2022-02-24 华为技术有限公司 一种图计算装置、处理方法及相关设备
CN114691590A (zh) * 2020-12-31 2022-07-01 中科寒武纪科技股份有限公司 一种用于数据传送的方法和相关产品
CN115795522A (zh) * 2023-02-09 2023-03-14 广州万协通信息技术有限公司 多核并发的高速密码引擎数据处理方法及装置
CN115934031A (zh) * 2023-03-15 2023-04-07 紫光同芯微电子有限公司 一种计算引擎、数据处理方法、设备及存储介质
CN117667208A (zh) * 2024-02-01 2024-03-08 腾讯科技(深圳)有限公司 数据运算方法、存储器及计算机设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108363615B (zh) * 2017-09-18 2019-05-14 清华大学 用于可重构处理系统的任务分配方法和系统
CN113283898A (zh) * 2021-05-27 2021-08-20 武汉天喻信息产业股份有限公司 一种基于多操作系统的智能卡调度方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739242A (zh) * 2009-11-27 2010-06-16 宇盛通信科技(深圳)有限公司 一种流数据处理方法及流处理器
CN101957780A (zh) * 2010-08-17 2011-01-26 中国电子科技集团公司第二十八研究所 一种基于资源状态信息的网格任务调度处理器及方法
US8281218B1 (en) * 2009-11-02 2012-10-02 Western Digital Technologies, Inc. Data manipulation engine
CN104852860A (zh) * 2015-05-04 2015-08-19 四川大学 一种基于队列的异构资源多目标调度策略
CN105808328A (zh) * 2014-12-31 2016-07-27 杭州华为数字技术有限公司 任务调度的方法、装置和系统

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8639625B1 (en) 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6611906B1 (en) * 2000-04-30 2003-08-26 Hewlett-Packard Development Company, L.P. Self-organizing hardware processing entities that cooperate to execute requests
US20020041683A1 (en) 2000-09-29 2002-04-11 Hopkins Dale W. Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system
US7305092B2 (en) 2000-12-19 2007-12-04 Qualcomm Incorporated Method and system to accelerate cryptographic functions for secure e-commerce applications
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
WO2005008999A1 (en) 2003-07-03 2005-01-27 Sinett Corporation Hardware acceleration for diffie hellman in a wireless lan
US20050132226A1 (en) 2003-12-11 2005-06-16 David Wheeler Trusted mobile platform architecture
US20050132186A1 (en) 2003-12-11 2005-06-16 Khan Moinul H. Method and apparatus for a trust processor
US7636858B2 (en) 2003-12-11 2009-12-22 Intel Corporation Management of a trusted cryptographic processor
US7512945B2 (en) * 2003-12-29 2009-03-31 Intel Corporation Method and apparatus for scheduling the processing of commands for execution by cryptographic algorithm cores in a programmable network processor
US7873687B2 (en) 2005-07-25 2011-01-18 International Business Machines Corporation Method for calculating a result of a division with a floating point unit with fused multiply-add
US20070055879A1 (en) 2005-08-16 2007-03-08 Jianjun Luo System and method for high performance public key encryption
US7738657B2 (en) 2006-08-31 2010-06-15 Intel Corporation System and method for multi-precision division
US7912886B2 (en) 2006-12-14 2011-03-22 Intel Corporation Configurable exponent FIFO
US7961877B2 (en) 2006-12-14 2011-06-14 Intel Corporation Factoring based modular exponentiation
US7925011B2 (en) 2006-12-14 2011-04-12 Intel Corporation Method for simultaneous modular exponentiations
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US20080148011A1 (en) 2006-12-14 2008-06-19 Intel Corporation Carry/Borrow Handling
US20090319804A1 (en) 2007-07-05 2009-12-24 Broadcom Corporation Scalable and Extensible Architecture for Asymmetrical Cryptographic Acceleration
US8781111B2 (en) 2007-07-05 2014-07-15 Broadcom Corporation System and methods for side-channel attack prevention
EP2367102B1 (en) 2010-02-11 2013-04-10 Nxp B.V. Computer processor and method with increased security properties
US9025767B2 (en) 2010-03-24 2015-05-05 Nokia Corporation Method and apparatus for querying content protected by identity-based encryption
US8601169B1 (en) * 2010-11-03 2013-12-03 Pmc-Sierra Us, Inc. Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines
US20130332707A1 (en) 2012-06-07 2013-12-12 Intel Corporation Speed up big-number multiplication using single instruction multiple data (simd) architectures
JP2014078214A (ja) * 2012-09-20 2014-05-01 Nec Corp スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム
US20140282978A1 (en) 2013-03-15 2014-09-18 Sergio Demian LERNER Method and apparatus for secure interaction with a computer service provider
US9208330B2 (en) 2014-02-03 2015-12-08 Avago Technologies General Ip (Singapore) Pte. Ltd. System for execution of security related functions
US9411644B2 (en) * 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9600239B2 (en) 2014-08-08 2017-03-21 Texas Instruments Incorporated Cryptographic accelerator
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281218B1 (en) * 2009-11-02 2012-10-02 Western Digital Technologies, Inc. Data manipulation engine
CN101739242A (zh) * 2009-11-27 2010-06-16 宇盛通信科技(深圳)有限公司 一种流数据处理方法及流处理器
CN101957780A (zh) * 2010-08-17 2011-01-26 中国电子科技集团公司第二十八研究所 一种基于资源状态信息的网格任务调度处理器及方法
CN105808328A (zh) * 2014-12-31 2016-07-27 杭州华为数字技术有限公司 任务调度的方法、装置和系统
CN104852860A (zh) * 2015-05-04 2015-08-19 四川大学 一种基于队列的异构资源多目标调度策略

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谢陈宁: "分布式图并行计算框架的调度分析与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905525B (zh) * 2019-11-19 2024-04-05 中科寒武纪科技股份有限公司 控制运算装置进行计算的方法及设备
CN112905525A (zh) * 2019-11-19 2021-06-04 中科寒武纪科技股份有限公司 控制运算装置进行计算的方法及设备
CN111190733A (zh) * 2019-12-27 2020-05-22 华为技术有限公司 用于进行rsa计算的计算资源调度方法及装置
CN111190733B (zh) * 2019-12-27 2023-11-17 华为技术有限公司 用于进行rsa计算的计算资源调度方法及装置
CN113449344B (zh) * 2020-03-27 2023-03-17 支付宝(杭州)信息技术有限公司 一种安全计算方法、装置、设备及介质
CN113449344A (zh) * 2020-03-27 2021-09-28 支付宝(杭州)信息技术有限公司 一种安全计算方法、装置、设备及介质
CN111866159A (zh) * 2020-07-28 2020-10-30 阿戈斯智能科技(苏州)有限公司 人工智能服务的调用方法、系统、设备和存储介质
WO2022036690A1 (zh) * 2020-08-21 2022-02-24 华为技术有限公司 一种图计算装置、处理方法及相关设备
CN114691590A (zh) * 2020-12-31 2022-07-01 中科寒武纪科技股份有限公司 一种用于数据传送的方法和相关产品
CN114691590B (zh) * 2020-12-31 2024-04-05 中科寒武纪科技股份有限公司 一种用于数据传送的方法和相关产品
CN113885945A (zh) * 2021-08-30 2022-01-04 山东云海国创云计算装备产业创新中心有限公司 一种计算加速方法、设备以及介质
CN113885945B (zh) * 2021-08-30 2023-05-16 山东云海国创云计算装备产业创新中心有限公司 一种计算加速方法、设备以及介质
CN113900828A (zh) * 2021-12-08 2022-01-07 深圳致星科技有限公司 联邦学习专用处理器、联邦学习处理芯片及芯片
CN115795522A (zh) * 2023-02-09 2023-03-14 广州万协通信息技术有限公司 多核并发的高速密码引擎数据处理方法及装置
CN115934031B (zh) * 2023-03-15 2023-09-01 紫光同芯微电子有限公司 一种计算引擎、数据处理方法、设备及存储介质
CN115934031A (zh) * 2023-03-15 2023-04-07 紫光同芯微电子有限公司 一种计算引擎、数据处理方法、设备及存储介质
CN117667208A (zh) * 2024-02-01 2024-03-08 腾讯科技(深圳)有限公司 数据运算方法、存储器及计算机设备
CN117667208B (zh) * 2024-02-01 2024-05-24 腾讯科技(深圳)有限公司 数据运算方法、存储器及计算机设备

Also Published As

Publication number Publication date
TWI753036B (zh) 2022-01-21
CN108287759B (zh) 2021-07-09
WO2018132485A1 (en) 2018-07-19
US20180196699A1 (en) 2018-07-12
TW201826121A (zh) 2018-07-16
US10467057B2 (en) 2019-11-05

Similar Documents

Publication Publication Date Title
CN108287759A (zh) 处理数据过程中的调度方法、装置和系统
CN104657220B (zh) 混合云中基于截止时间和费用约束的调度模型及方法
CN109669768A (zh) 一种面向边云结合架构的资源分配和任务调度方法
CN107196900A (zh) 一种共识校验的方法及装置
CN107710237A (zh) 服务器上深度神经网络划分
Xie et al. Virtualized network function forwarding graph placing in SDN and NFV-enabled IoT networks: A graph neural network assisted deep reinforcement learning method
Ali et al. A cost and energy efficient task scheduling technique to offload microservices based applications in mobile cloud computing
CN103931148A (zh) 流量调度设备
Jangiti et al. Scalable and direct vector bin-packing heuristic based on residual resource ratios for virtual machine placement in cloud data centers
CN109600798A (zh) 一种网络切片中多域资源分配方法及装置
Rani et al. An implementation of modified blowfish technique with honey bee behavior optimization for load balancing in cloud system environment
CN108111335A (zh) 一种调度和链接虚拟网络功能的方法及系统
CN109343972A (zh) 任务处理方法及终端设备
CN108600299A (zh) 分布式多用户间计算任务卸载方法及系统
CN106598727A (zh) 一种通信系统的计算资源分配方法及系统
Shafiee et al. Scheduling coflows with dependency graph
Kaur et al. Packet optimization of software defined network using lion optimization
Zhao et al. Joint reducer placement and coflow bandwidth scheduling for computing clusters
CN115277692A (zh) 边缘网络计算终端设备自动运维方法、装置和系统
CN114710571A (zh) 数据包处理系统
CN103701587B (zh) 一种多接口密码模块并行调度方法
Sana et al. Improved particle swarm optimization based on blockchain mechanism for flexible job shop problem
CN107465717A (zh) 一种密码按需服务的方法、装置与设备
CN105190599A (zh) 云应用带宽建模
CN115562861A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20221114

Address after: Room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: Alibaba (China) Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right