CN107430530A - 在芯片计算系统上向网络处理器映射的过程 - Google Patents

在芯片计算系统上向网络处理器映射的过程 Download PDF

Info

Publication number
CN107430530A
CN107430530A CN201680019194.7A CN201680019194A CN107430530A CN 107430530 A CN107430530 A CN 107430530A CN 201680019194 A CN201680019194 A CN 201680019194A CN 107430530 A CN107430530 A CN 107430530A
Authority
CN
China
Prior art keywords
distribution
computing system
sub
cluster
computing
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
CN201680019194.7A
Other languages
English (en)
Inventor
道格拉斯·A·帕尔默
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.)
Crossbow Ltd By Share Ltd
Original Assignee
Crossbow Ltd By Share 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 Crossbow Ltd By Share Ltd filed Critical Crossbow Ltd By Share Ltd
Publication of CN107430530A publication Critical patent/CN107430530A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

系统和方法可以被提供来在计算系统的多个资源上执行多个计算任务。在一个方面中,计算机实现的方法可以在计算系统上执行包括多个任务的软件应用程序。该方法可以包括将软件应用程序读取进计算系统中,根据第一个分配将多个任务分配给计算系统的多个计算资源,根据第一个分配在多个计算资源上执行多个任务。每个处理资源都可以被配置来生成和收集系统活动监视(SAM)数据。该方法还包括从多个处理资源收集SAM数据,基于该收集到的SAM数据对第一次分配进行分析以及基于该分析确定对第一次分配所要做的调整。

Description

在芯片计算系统上向网络处理器映射的过程
对相关申请的交叉引用
本申请主张优先权,且基于对2015年1月29日提交的美国专利申请No.14/608,505题目为“在芯片计算系统上向网络处理器映射的过程”,其内容在此以参考文献的形式全文并入。
技术领域
本文所描述的系统、方法和设备涉及具有多个多核处理器以及将计算机应用程序的多个任务分配给多个多核处理器的计算系统。
背景技术
并行处理已经在计算机系统中实现了很久了。例如,从早期的大型计算机到今天的个人计算机、便携式电脑、平板电脑或智能电话,并行处理已经通过硬件与能够使用硬件的软件相结合得到了实现。硬件支持一般包括多处理器和处理器之间的共享存储器(例如对称多处理(SMP)系统),或者使用协处理器(例如图形处理器(GPU))来处理某些密集型计算任务。利用硬件支持的软件可以包括有注解的程序代码,例如共享存储并行编程(OpenMP)或者实现可移植操作系统接口(POSIX)线程的程序代码。
然而,现有的并行处理技术对程序员在管理和控制并行处理方面施加了很大的负担。例如,程序员必须创建“线程”来并行执行任务,并保证“线程”在某些点上的同步。同样,程序员要决定如何把任务分配给“线程”,给不同的处理器,和/或给协处理器。因此,在现有系统下开发并行软件通常会增加成本,增加软件缺陷的数量,而且相对于能达到的平行度来说又很受限制。因此,本领域需要一种可以动态地适应地确定对处理器映射任务的计算系统。
发明内容
本发明提供了用来在计算系统中执行计算机应用程序的系统、方法以及设备。该计算系统可以包括多个处理引擎,每个处理引擎可以在非暂存存储器中生成并存储性能数据来支持对系统性能的监控与调试。该计算系统可以从多个处理引擎中收集性能数据。可以基于监控期间所收集的性能数据来在计算系统中平衡和/或分配任务与进程。
在本发明的一个方面中,计算机实现的方法可以执行计算系统上包括多个任务的软件应用程序。该方法可以包括将软件应用程序读取进计算系统,根据第一个分配将多个任务分配给计算系统中的计算资源,根据第一个分配在多个计算资源上执行多个任务。每个处理资源可以被配置为生成和收集系统活动监控(SAM)数据。所述方法还可以包括从多个计算资源中收集SAM数据,基于所收集的SAM数据对第一个分配进行分析,以及基于该分析确定对第一个分配进行的调整。
在本发明的另一方面中,计算系统可以被配置为并行地执行软件应用程序的多个任务。该计算系统可以包括主机和被配置来执行程序代码的多个计算资源。每个计算机资源可以包括被配置用来生成和收集SAM数据的系统活动监视器(SAM)仪器。主机可以被配置来将软件应用程序读取进计算系统中,根据第一个分配将多个任务分配给所述多个计算资源,根据第一个分配在多个计算资源上执行多个任务,从多个处理资源中收集SAM数据,基于所收集的SAM数据执行对第一个分配的分析;基于该分析确定对第一个分配进行的调整。
在本发明的另一个方面中,所述计算系统可以包括多个处理设备,每个处理设备可以包括分组成一个或多个集群的多个处理引擎,多个集群可以可选地分组成超级集群,每个处理资源可以是处理设备、集群、可选的超级集群、或者处理引擎中的一个。每个处理资源可以实施SAM仪器来生成和收集SAM数据。
本发明的这些和其它目的、特征和特点,结构的相关元件的操作方法和功能,部件的组合,以及制造成本,都将通过考虑参考附图的下面描述和所附权利要求书变得更加明朗,这些都构成了本说明书的一部分,其中相似的参考数字指代了各个图中的对应部分。然而,应该清楚地理解,附图仅用来示例和描述目的,并不旨在限定本发明的界限。正如在说明书和权利要求书中所使用的,单数形式的不定冠词和定冠词,除非文中明确表述,否则也包括复数。
附图说明
图1A是根据本发明的示例性计算系统的结构图。
图1B是根据本发明的示例性处理设备的结构图。
图2A是根据本发明的示例性计算系统的拓扑连接的结构图。
图2B是根据本发明的另一示例性计算系统的拓扑连接的结构图。
图3A是根据本发明的示例性集群的结构图。
图3B是根据本发明的示例性超级集群的结构图。
图4是根据本发明的示例性处理引擎的结构图。
图5是根据本发明的示例性包的结构图。
图6是根据本发明的使用包来寻址计算资源的示例性过程的流程图。
图7A是根据本发明的具有系统控制和监控特征的示例性计算系统的结构图。
图7B是根据本发明的具有系统控制和监控特征的示例性处理设备的结构图。
图7C是根据本发明的具有系统控制和监控特征的示例性集群的结构图。
图7D是根据本发明的具有系统控制和监控特征的示例性超级集群的结构图。
图8展示了根据本发明的示例性计算系统中被配置为分配计算任务的主机。
图9是根据本发明的计算系统可以调整给计算系统中多个计算资源的计算任务分配的示例性过程的流程图。
图10A示例了根据本发明的计算问题和/或软件应用程序的有向图。
图10B示例了根据本发明的对应于计算问题和/或软件应用程序的实现和/或分配的一组物理处理元件的有向图。
图10C示例了根据本发明的互连的物理处理元件的网络。
图11是根据本发明示例了一示例性任务再分配结构图。
图12是根据本发明示例了另一个示例性任务再分配结构图。
具体实施方式
这里结合以下描述和附图描述了根据本发明的系统、设备和方法的某些说明性方面。然而,这些方面仅指出了本发明的原理的一些应用方式,本发明旨在包括所有这些方面及其等同方面。当结合附图考虑时,本发明的其它优点和新颖性特征可以通过以下具体实施方式变得更加显而易见。
在以下详细描述中,为了彻底理解本发明阐述了许多具体细节。在其他实施例中,为了避免与本发明发生不必要的混淆,公知的结构、接口和进程并没有作详细的展示。然而,除了在权利要求书中叙述的之外,这里公开的那些特定细节不需要用于实施发明,并且不代表对本发明范围的限制,这对本领域技术人员而言显而易见。因此,本说明书的任一部分都不应解释为导致对本发明全部范围内任意部分的否定。虽然描述了本发明的某些实施方式,但这些实施方式同样不旨在限定本发明的全部范围。
图1A展示了根据本发明的示例性计算系统100。该计算系统100可以包括至少一个处理设备102。然而,典型的计算系统100可以包括多个处理设备102。每个处理设备102,也可以被称为设备102,可以包括路由器104,设备控制器106,多个高速接口108以及多个集群110。路由器104也可以被称为顶级路由器或一级路由器。每个集群110可以包括多个为所述计算系统100提供计算力的处理引擎。所述高速接口108可以包括通讯端口来在设备102外传输数据,例如,传输到计算系统100的其它设备102和/或与其他计算系统的接口。除非另有特别说明,否则本文所述数据可以指代程序代码和程序代码在其上所运行的信息块。
在有些实施方式中,处理设备102可以包括2、4、8、16、32或者其他数量的高速接口108。每个高速接口108可以实现物理通讯协议。在一个非限制性实施例中,每个高速接口108可以实现媒介访问控制(MAC)协议,因此可以具有与其关联的唯一MAC地址。物理通讯可以以一个已知的通讯技术实现,比如,千兆以太网或任何其它现有或未来开发的通讯技术。在一个非限制性实施例中,每个高速接口108可以实现双向高速串行端口,比如10千兆比特/秒(Gbps)的串行端口。实现这种高速接口108的两个处理设备102可以通过一对或多对高速接口108直接耦合,每对包括一个处理设备102上的一个高速接口108和另一个处理设备102上的另一个高速接口108。
所述计算系统100的不同计算资源之间的数据通讯可以通过使用路由包来实现。所述计算资源可以包括设备级资源例如设备控制器106,集群级资源例如集群控制器或集群存储控制器,和/或处理引擎级资源比如各个处理引擎和/或各个处理引擎存储控制器。根据本发明的示例性包140如图5所示。包140可以包括头部142和有效载荷144。头部142可以包括包140的路由目的地地址。路由器104可以是配置在每个处理设备102上路由包的最顶部路由器。路由器104可以是可编译路由器。也就是说,路由器104所用的路由信息可以被编译和更新。在一个非限制性实施方式中,可以用地址解析表(ART)或查找表(LUT)来实施路由器104,来在高速接口108上,或者与设备控制器106或集群110相接的任何内部接口上路由它接收到的任何包。例如,根据目的地地址,从一个集群110收到的包140可以被路由到在同一个处理设备102上的不同集群110上,或者被路由到不同的处理设备102上;从一个高速接口108接收到的包140可以被路由到处理设备上的集群110或者路由到不同的处理设备102上。
设备控制器106可以通过开关电源来控制处理设备102的操作。设备控制器106可以包括设备控制器处理器、一个或多个寄存器和设备控制器存储空间。设备控制器处理器可以是任何现有或未来开发的微型控制器。在一个实施方式中,例如,Cortex M0微控制器可以由于其小面积和低功耗的特性而被采用。在另一个实施方式中,如果需要,可以选择更大更强劲的微控制器。所述一个或多个寄存器可以包括用于在处理设备102加电后为处理设备102保存设备标识符(DEVID)的寄存器。所述DEVID可以用来在计算系统100中唯一地标识处理设备102。在一个非限制性实施方式中,DEVID可以从非易失性存储器,例如,处理设备102上的非易失性内部存储器或非易失性外部存储器开始在系统上被加载。设备控制器存储器空间可以包括只读存储器(ROM)和随机存储器(RAM)。在一个非限定性实施方式中,所述ROM可以存储在系统启动期间可以被执行以初始化处理设备102的引导程序代码并且通过总线从设备控制器106外加载所述引导代码的剩余部分。用于设备控制器处理器的所述指令(也可称为固件),可以在系统启动期间被加载后保留在RAM中。
设备控制器106的寄存器和设备控制器存储器空间可以使用包通过计算系统100的计算资源读取和写入。也就是说,它们可以使用包来寻址。如此处所用,术语“存储器”可指代RAM、SRAM、DRAM、eDRAM、SDRAM、易失性存储器、非易失性存储器和/或其它类型的电子存储器。例如,包的头部可以包括目的地地址比如DEVID:PADDR,其中DEVID可以识别处理设备102而PADDR可以是设备控制器106的寄存器地址或者处理设备102的设备控制器存储空间的存储器位置。在有些实施方式中,指向设备控制器106的包可以具有包操作代码,也可以称作包操作码或只是操作码,用来指令对包进行何种操作。例如,包操作代码可以指示从PADDR指向的存储位置读取或者向其写入。需要注意的是,设备控制器106除了接收包之外还可以发送包。由设备控制器106发送的包可以自行初始化或响应收到的包(例如,读取请求)。自行初始化的包可以包括例如报告状态信息、请求数据等等。
在一个实施方式中,在处理设备102上的多个集群110可以分组在一起。图1B展示了根据本发明的另一个示例性处理设备102A的结构图。示例性处理设备102A是处理设备102的一个特定实施方式。因此,本发明中所指的处理设备102可以包括处理设备102的任何实施方式,包括示例性处理设备102A。如图1B中所示,多个集群110可以分组在一起形成一个超级集群130同时示例性处理设备102A可以包括多个这样的超级集群130。在一个实施方式中,处理设备102可以包含2、4、8、16、32或者其他数量的集群110,而不用将集群110分组成超级集群。在另一实施方式中,处理设备102可以包括2、4、8、16、32或者其他数量的超级集群130并且每个超级集群130可以包括多个集群。
图2A展示了根据本发明的示例性计算系统100A的结构图。计算系统100A可以是图1A中计算系统100的一个示例性实施方式。计算系统100A可以包括命名为F1、F2、F3、F4、F5、F6、F7和F8的多个处理设备102。如图2A所示,每个处理设备102可以被直接耦合到一个或多个其它处理设备102。例如,F4可以被直接耦合到F1、F3和F5;F7可以直接耦合到F1、F2、F8。在计算系统100A中,一个处理设备102可以起到整个计算系统100A的主机的作用。主机可以有唯一的设备ID,计算系统100A中的每个处理设备102都可以辨识该主机。例如,任意处理设备102都可以被指为计算系统100A的主机。在一个非限制性实施例中,F1可以被指为主机同时F1的设备ID可以被设置为主机的唯一设备ID。
在另一个实施方式中,主机可以是不同类型的计算设备,例如本领域已知的计算机处理器(例如,Cortex或x86处理器)或任何其它现有或未来开发的处理器。在本实施方式中,主机可以通过通讯接口与系统100A的其余部分通讯,并可以通过主机的设备ID来向系统100A的其余部分表明其为主机。
计算系统100A可以用任何适合的技术来把设备标识符设定到计算系统100A的相应处理设备102,包括主机的唯一设备标识符。在一个示例性实施方式中,所述设备标识符可以存储到每个处理设备102的相应的设备控制器106的只读存储器中,并在加电时加载到设备控制器106的寄存器中。在另一个实施方式中,可以从外部存储器加载设备标识符。在这样的实施方式中,设备标识符的分配可以离线执行,并可以随时或适时地在离线时改变。因此,每次计算系统100A初始化时,一个或多个处理设备102的设备标识符可以是不同的。此外,存储在每个设备控制器106的寄存器中的设备标识符可以随运行时间被改变。其运行时间改变可以由计算系统100A的主机所控制。例如,在计算系统100A初始化后,可以从只读存储器或外部存储器加载预先配置的设备标识符,计算系统100A的主机可以重新配置计算系统100A并将不同的设备标识符分配给计算系统100A中的处理设备102来改写设备控制器106寄存器中的初始设备标识符。
图2B是根据本发明的另一示例性系统100B的拓扑结构图。计算系统100B可以是图1中计算系统100的另一示例性实施方式并且可以包括多个处理设备102(在图2B中被命名为P1至P16)、总线202和处理设备P_host。P1至P16的每个处理设备可以通过它们之间的直连来直接耦合到另一个P1至P16的处理设备。P1至P16至少一个处理设备可以被耦合到总线202。如图2B所示,处理设备P8、P5、P10、P13、P15和P16可以被耦合到总线202。处理设备P_host可以被耦合到总线202并可以被指定为计算系统100B的主机。在示例性系统100B中,主机可以是本领域中已知的计算机处理器(例如,Cortex或x86处理器)或任何其它现有或未来开发的处理器。主机可以通过耦合到总线的通讯接口与系统100B的其余部分通讯,并且可以通过主机的设备ID向系统100B的其余部分表明其为主机。
图3A展示了根据本发明的示例性集群110的结构图。所述示例性集群110可以包括路由器112、集群控制器116、辅助指令处理器(AIP)114、集群存储器118和多个处理引擎120。路由器112可以耦合到上游路由器从而使该上游路由器和集群110之间相互连通。例如,如果集群110不是超级集群130的一部分,则上游路由器可以是处理设备102的路由器104。
由路由器112执行的示例性操作可以包括接收从集群110外去往集群110内的资源的包和/或发送源自集群110内、去往集群110内部或外部的资源的包。集群110内部的资源可以是,例如,集群110内的集群存储器118或任意处理引擎120。集群110外部的资源可以是,例如,计算机设备102的另一集群110中的资源、处理设备102的设备控制器106或者是另一个处理设备102上的资源。在有些实施方式中,路由器112也可以向路由器104发送包,即使该包可以指向它自身内部的资源。在一个实施方式中,如果目的地资源在集群110内,路由器104可以实现回送地址路径以将包发回到初始集群110。
集群控制器116可以发送包,例如,作为对读取请求的回应,或者硬件主动发送的错误或状态报告的数据。集群控制器116也可以接收包,例如,具有读取或写入数据的操作码的包。在一个实施方式中,集群控制器116可以是任何现有或未来开发的微型控制器,例如,Cortex-M微型控制器之一,而且可以包括一个或多个集群控制寄存器(CCRs),来提供对集群110的配置与控制。在另一个实施方式中,不使用微控制器,集群控制器116可以设为自定义模式,使得其实施用于处理包和控制路由器112的操控的任何功能。在这样一个实施方式中,所述功能可以被称为自定义逻辑并且可以通过诸如FPGA或其它的特定电路来实现。无论它是微型控制器还是通过自定义逻辑来实现,所述集群控制器116可以实现封装包的固定目的状态机和对CCRs(的存储器访问。
每个集群存储器118可以是计算系统100全部可寻址存储器的一部分。也就是说,计算系统100的可寻址存储器可以包括计算系统100的所有设备102的所有集群的集群存储器118。集群存储器118可以是由计算系统100共享的主存储器的一部分。在有些实施方式中,集群存储器118内的任何存储器的位置可以在计算系统100内的任意处理引擎通过物理地址寻址得到。该物理地址可以是集群存储器118内DEVID、集群标识符(CLSID)和物理地址位置(PADDR)的组合,它可以形成位串,例如,DEVID:CLSID:PADDR。DEVID可以与上述设备控制器106相关联,并且CLSID可以作为唯一标识符来专门识别本地处理设备102中的集群110。应当注意的是,至少在有些实施方式中,集群控制器116的每个寄存器也可以被分配给物理地址(PADDR)。因此,物理地址DEVID:CLSID:PADDR也可以被用来寻址集群控制器116的寄存器,其中PADDR可以是分配给集群控制器116的寄存器的地址。
在有些其它实施方式中,集群存储器118内的任何存储器位置都可以通过虚拟地址由计算系统100内的任意处理引擎寻址。该虚拟地址可以是DEVID,CLSID和虚拟地址位置(ADDR)的组合,它可以形成位串,例如,DEVID:CLSID:ADDR。虚拟地址中的DEVID和CLSID可以同物理地址中的相同。
在一个实施方式中,ADDR的宽度可以通过系统配置来指定。例如,ADDR的宽度可以在系统启动期间加载进适于集群存储器118的存储位置和/或可以在当计算系统100执行系统配置时随时间变化改变。为了将虚拟地址转化为物理地址,可以将ADDR的值添加到基础物理地址值(BASE)。BASE也可以通过系统配置指定为ADDR的宽度,并存储到适于集群存储器118的存储器控制器的位置。在一个实施例中,ADDR的宽度可以存储在存储器控制器中的首次寄存器中,同时BASE可以存储在存储器控制器中的二次寄存器中。因此,虚拟地址DEVID:CLSID:ADDR可以转化成DEVID:CLSID:ADDR+BASE这个物理地址。需要注意的是ADDR+BASE的结果同两个中较长的那个宽度相同。
计算系统100中的地址可以是8位、16位、32位、64位或者任意其他数字的位宽。在一个非限定性实施例中,地址可以是32位宽。DEVID可以是10、15、20、25或者任意其他数字的位宽。DEVID的宽度可以基于计算系统100的大小来选择,例如,计算系统100有多少个或设计为有多少个处理设备102。在一个非限定性实施例中,DEVID可以有20位宽,同时应用该DEVID位宽的计算系统100可以包括最多220个处理设备102。CLSID的宽度可以基于处理设备102设计为有多少个集群110来选择。例如,CLSID可以是3、4、5、6、7、8位或者任意其他数字的位宽。在一个非限定性实施例中,CLSID可以是5位宽,同时应用该CLSID位宽的处理设备102可以包括最多25个集群。集群级的PADDR宽度可以是20、30或者任意其他数量的位宽。在一个非限定性实施例中,集群级的PADDR可以有27位,同时应用该PADDR宽度的集群110可以包括最多227个存储器位置和/或可寻址的寄存器。因此,在有些实施方式中,如果DEVID可以是20位宽,CLSID可以是5位宽,PADDR可以有27位宽,那么物理地址DEVID:CLSID:PADDR或DEVID:CLSID:ADDR+BASE可以是52位。
为了执行虚拟到物理存储器的转换,第一个寄存器(ADDR寄存器)可以有4、5、6、7位或者任意其他数量的位。在一个非限制性实施例中,第一个寄存器可以是5位宽。如果该5位寄存器的值是4,ADDR的宽度可以是4位;如果5位寄存器的值是8,ADDR的宽度将会是8位。无论ADDR是4位宽还是8位宽,如果集群级的PADDR可以是27位,那么BASE可以是27位,并且ADDR+BASE的结果仍然可以是在集群存储器118内27位的物理地址。
图3A展示了集群110可以包括一个集群存储器118。在另一个实施方式中,集群110可以包括多个集群存储器118,每个集群存储器118各自可以包括存储器控制器和多个存储器库。此外,在另一个实施方式中,集群110可以包括多个集群存储器118,并且这些集群存储器118可以通过路由器112的下游路由器连接到一起。
所述AIP114可以是由一个集群110的全部处理引擎120所共享的特殊处理引擎。在一个实施例中,所述AIP114可以实现为处理引擎120的协处理器。例如,所述AIP114可以实现不那么常用的指令比如一些浮点运算,包括但不限于加法、减法、乘法、除法和开平方根等等中的一种或多种。如图3A所示,该AIP114可以直接耦合到路由器112,并且可以配置为通过路由器112发送和接收包。虽然图3A中没有显示,但作为同一集群110内处理引擎120的协处理器,AIP114也可以与同一集群110内的每个处理引擎120直接耦合。在一个实施方式中,由同一集群110内全部处理引擎120共享的总线可以用于在同一集群110内的全部处理引擎120和AIP114之间通讯。在另一个实施方式中,多路复用器可以用于控制同一集群110内的全部处理引擎120和AIP114之间通讯。在另一个实施方式中,多路复用器可以用来控制对同一集群110内全部处理引擎120共享的总线的访问以便与AIP114通讯。
计算设备102上的处理引擎120的分组可以具有多级层次。例如,可以将多个集群110分组在一起形成超级集群。图3B是根据本发明的示例性超级集群130的结构图。如图3B所示,从110A到110H的多个集群可以分组成示例性超级集群130。尽管图3B中的示例性超级集群只显示了8个集群,但示例性超级集群130可以包括2、4、8、16、32或者任意个数的集群110。所述示例性超级集群130可以包括路由器134和超级集群控制器132,以及多个集群110。路由器134可以被配置为在所述集群110和所述超级集群130内的超级集群控制器132之间路由包,并经由链接到上游路由器,将该包路由到所述超级集群130外部资源或者从该外部资料对包路由。在实施方式中超级集群130可以用于处理设备102A中,路由器134的上游路由器可以是处理设备102A的顶层路由器104,路由器134可以是集群110内路由器112的上游路由器。在一个实施方式中,超级集群控制器132可以实现CCRs,可以用来配置接收和发送包,还可以实现封包的固定目的状态机以及对CCRs的存储器访问,所述超级集群132与所述集群116类似,也可以被执行。在另一个实施方式中,超级集群130可以仅用路由器134实现,并且可以没有超级集群控制器132。
根据本发明的示例性集群110可以包括2、4、6、8、16、32或者任意数量的处理引擎120。图3A表示了已经被分组成集群110的多个处理引擎120的实施例,图3B表示了已经被分组成超级集群130的多个集群110的实施例。处理引擎的分组并不仅限于集群或者超级集群。在一个实施方式中,可以实现两个以上级别的分组同时每一级可以有自己的路由器和控制器。
图4给出了根据本发明的示例性处理引擎120的结构图。如图4所示,处理引擎120可以包括引擎内核122,引擎存储器124和包接口126。处理引擎120可以耦合到AIP114。如本文所述,AIP114可以由集群110内全部处理引擎120所共享。处理内核122可以是带有指令集的中央处理器(CPU),并可以实现现代CPU的一些或全部功能,例如,多级指令流水线,一个或多个算数逻辑单元(ALUs),浮点单元(FPU)或其它任何现有或未来开发的CPU技术。所述指令集可以包括一个ALU指令集来进行算数和逻辑运算,另一个FPU指令集来进行浮点运算。在一个实施方式中,FPU可以是包含多级、单精度浮点流水线的完全独立执行单元。当FPU指令到达处理引擎120的指令流水线时,该指令及其源操作数可以分配给该FPU。
使用与x86指令相似或不同的语法,指令集的指令可以实现算数和逻辑运算以及浮点数运算,例如x86指令集中的指令。在有些实施方式中,指令集可以包括自定义的指令。例如,一个或多个指令可以根据计算系统的特征来运行。在一个实施例中,一个或多个指令可以使处理引擎执行指令来直接生成具有系统宽寻址的包。在另一实施例中,一个或多个指令可以具有作为操作数存在的位于计算系统100中任何位置的存储器地址。在这种实施例中,运行指令的处理引擎的存储器控制器可以根据被访问的存储器地址生成包。
引擎存储器124可以包括程序存储器,包含一个或多个通用寄存器的寄存器堆,一个或多个专用寄存器以及一个或多个事件寄存器。程序寄存器可以是用来存储由处理内核122所执行指令和由该指令所操作的数据的物理存储器。在有些实施方式中,程序存储器的一部分可以通过禁用和断电来节能。例如,当运行占用存储空间不到一半的足够小的程序时可以禁用程序存储器的上半部或下半部来节约能源。程序存储器的大小可以是1K、2K、3K、4K或者其它任意数字大小的存储单元。寄存器堆可以包括128、256、512、1024或其它任意数字大小的存储单元。在一个非限定性实施例中,存储单元可以是32位宽,其也可称为长字,并且所述程序存储器可以包括2K 32位长字,寄存器堆可以包含256个32位寄存器。
寄存器堆可以包括用于所述处理内核122的一个或多个通用寄存器。该通用寄存器可以提供与x86架构CPU的通用寄存器相同或相似的功能。
专用寄存器可以用于配置、控制和/或状态跟踪。示例性的专用寄存器可以包括一个或多个以下寄存器:程序计数器,它可用于指向所述程序存储器的地址,由处理内核122执行的下一指令在该地址保存;以及存储处理设备102的DEVID的设备标识符(DEVID)寄存器。
在一个示例性实施方式中,寄存器堆可以通过两个库来实现——一个库用来存放奇数地址一个库用来存放偶数地址,这样允许在操作数存取期间的快速访问。如果对计算系统100实施小字节序,则偶数和奇数库可以基于寄存器地址的最低有效位来选择;如果对计算系统100实施大字节序,则偶数和奇数库可以基于寄存器地址的最高有效位来选择。
引擎存储器124可以是计算系统100的可寻址存储器空间的一部分。也就是说,可以分配存储器地址PADDR到程序存储器的任意存储位置、寄存器堆中的任一通用寄存器、多个专用寄存器中的任一专用寄存器以及多个事件寄存器中的任一事件寄存器。可以分配引擎标识符(ENGINE ID)给处理设备102上的每个处理引擎120。因此,为了访问所述引擎存储器124,引擎存储器124中的任何可寻址位置都可以通过DEVID:CLSID:ENGINE ID:PADDR来寻址。在一个实施方式中,寻址到引擎级存储器位置的包可以包括下列形式的地址:DEVID:CLSID:ENGINE ID:EVENTS:PADDR,其中EVENTS可以是一个或多个来设置目标处理引擎120中事件标识的位。应当注意的是当所述地址以这样形式形成时,事件不需要形成物理地址中的一部分,也就是说物理地址仍然是DEVID:CLSID:ENGINE ID:PADDR。在这种形式中,事件位可以标识被设立的一个或多个事件寄存器,但是这些事件位可以从正被访问的物理地址中分离。
包接口126可以包括用来传输数据包的通讯端口。该通讯端口可以同路由器112以及本地集群的集群存储器118耦合。对于任何接收到的包,所述包接口126可以使包直接通过引擎存储器124。在有些实施方式中,处理设备102可以实现两种机制来将数据包发送到处理引擎120。例如,第一种机制可以采用具有读写包操作码的数据包。该数据包可以被传送到包接口126并根据包操作码来由包接口126来处理。该包接口126可以包括暂存多个存储单元的缓存,比如,1K、2K、4K、8K或任意其他大小。在第二种机制中,所述引擎存储器124还可以包括提供只写功能的寄存器区域,称为入站数据接口,也可称作信箱。在一个实施方式中,信箱可以包括两个存储单元,每个存储单元一次可以暂存一个包。所述处理引擎120中可以包含事件标识,当包到达信箱时设置该事件标识,提醒处理引擎120检索并处理到达的包。当处理这个包时,另一个包可以被另一个存储单元接收但任何后续的包可以在发送端处缓存,例如,路由器112或集群存储器118或任何中间缓存。
在各种实施方式中,计算系统100内的不同计算资源之间的数据请求与传送可以通过包来实现。图5展示了根据本发明的示例性包140的框图。如图5所示,包140可以包括头部142和可选的有效载荷144。头部142可以包括单个地址域、包操作码(POP)域以及大小域。该单个地址域可以指示该包的目的地计算资源的地址,例如,该地址可以是设备控制器级的地址比如DEVID:PADDR,集群级的地址比如物理地址DEVID:CLSID:PADDR或者虚拟地址DEVID:CLSID:ADDR,以及处理引擎级的地址比如DEVID:CLSID:ENGINE ID:PADDR或DEVID:CLSID:ENGINE ID:EVENTS:PADDR。POP域可以包括指示由目的地计算资源执行的操作的操作码。POP域中的示例性操作可以包括读取(从目的地读取数据)和写入(向目的地(例如有效载荷144中)写入数据)。
在有些实施方式中,POP域中的示例性操作还可以包括批量数据转移。例如,某些计算资源可以实现直接存储器访问(DMA)功能。实现DMA的示例性计算资源可以包括每个集群存储器118的集群存储器控制器,每个引擎存储器124的存储器控制器以及每个设备控制器106的存储器控制器。任意两个实现DMA的计算资源可以使用具有批量数据转移的包操作码来在二者之间执行批量数据转移。
除了批量数据转移之外,在有些实施方式中,在POP域中的示例性操作还可以包括未经请求的数据的传输。例如,任何计算资源都可以在运行中生成状态报告或产生错误,该状态或错误可以通过具有包操作码的包来报告给目的地,表示有效载荷144包含源计算资源及状态或错误数据。
所述POP域可以是2、3、4、5或其它任意数字大小的位宽。在有些实施方式中,POP域的宽度可以依据计算系统100中为包定义的操作的数量来选择。并且,在有些实施方式中,包操作码的值可以根据接收包的目的地计算机资源的类型而具有不同的含义。作为例子而非限制,对于3位POP域来说,对于三位POP域,值001可以被定义为处理引擎120的读取操作,但也可被定义为集群存储器118的写入操作。
在有些实施方式中,所述头部142还可以包括寻址模式域和寻址级别域。寻址模式域可以包括表明单个地址域是否包含物理地址或可能需要在目的地处转换成物理地址的虚拟地址的值。寻址级别域可以包括表明目的地是在设备、集群存储器或者处理引擎级别上的值。
包140的有效载荷144是可选的。如果某个包140不包括有效载荷144,头部142大小域的值可以是0。在有些实施方式中,包140的有效载荷144可以包含返回地址。例如,如果包是一个读取请求,那么任何可读取数据的返回地址都会包括在有效载荷144中。
图6是根据本发明的使用包来寻址计算资源的示例性过程200的流程图。计算系统100的示例性性实施方式可以具有一个或多个处理设备,所述处理设备被配置为响应电子地存储在电子存储介质上的指令而执行示例性过程600的一些或全部操作。所述一个或多个处理设备可以包括一个或多个通过硬件、固件配置的设备,和/或专门设计用来执行示例性过程600的一个或多个操作的软件。
所述范例过程600可以从块602开始,在块602,可以在计算系统100的示例性实施方式的源计算资源处生成包。源计算资源可以是,例如,设备控制器106、集群控制器118,如果实现了超级集群的超级集群控制器132、AIP114、用于集群存储器118的存储器控制器或者处理引擎120。所生成的该包可以是根据本发明的包140的示例性实施方式。从块602起,示例性过程600可以继续到块604,在块604处所述包可以基于生成包的源计算资源被发送到合适的路由器。例如,如果源计算资源是设备控制器106,生成的包可以被发送到本地处理设备102的顶层路由器104;如果源计算资源是集群控制器116,生成的包可以被发送到本地集群110的路由器112;如果源计算资源是集群存储器118的存储器控制器,生成的包可以被发送到本地集群110的路由器112,或者如果有多个集群存储器118通过路由器112的下游路由器耦合在一起,那么生成的包可以被发送到路由器112的下游路由器;如果所述源计算资源是处理引擎120,如果目的地是在本地集群之外,则生成的数据包可以被发送到本地集群110的路由器上,如果目的地是在本地集群之内,则生成的数据包可以被发送到本地集群110的集群存储器118的存储器控制器上。
在块606处,可以在路由器确定所生成包的路由。如本文所述,生成的包可以包括头部,头部包含单一目的地的地址。单一目的地地址可以是计算系统100的统一存储器空间的任意可寻址位置。对计算系统100的每个设备控制器、集群控制器、如果实现了超级集群的超级集群控制器、集群存储器和处理引擎而言,统一存储器空间可以是涵盖全部存储器和寄存器的可寻址空间。在有些实施方式中,可寻址位置可以是计算系统100的目的地计算资源的一部分。所述目的地计算资源可以是,例如,另一设备控制器106、另一集群控制器118、另一集群存储器118的存储器控制器、或者与所述源计算资源不同的另一处理引擎120。接收所生成包的路由器可以基于单一目的地地址决定所生成包的路由。在块608处,生成的包可以被路由到它的目的地计算资源。
每个处理设备102也实现了系统控制和监控功能。图7A展示了根据本发明的具有在处理设备级实现系统活动监控(SAM)功能的示例性计算系统100。图7B展示了根据本发明的具有系统控制和监控功能的示例性处理设备102A。如图7A所示,每个处理设备102可以在处理设备级实现SAM功能。该设备级的SAM功能可以包括用于设备控制器106的SAM仪器704,用于顶层路由器104的SAM仪器706,以及多路复用器702。该多路复用器702可以被配置为由处理设备102输出SAM数据。该SAM数据可以由SAM仪器704、706以及集群和超级集群中(如果实现超级集群)的SAM仪器来收集。多路复用器702的输入端可以与设备控制器106、顶层路由器104以及集群110(或如果实现了超级集群的图7B所示的超级集群130)相耦合来接收SAM数据,并且该多路复用器702的输入端也可以被控制来选择SAM数据输入端其中之一来由处理设备102进行输出。在一个实施方式中,计算系统100的主机可以控制SAM数据来由多路复用器702进行输出,并且该主机702可以从全部的处理设备102收集SAM数据进行分析。
图7C展示了根据本发明的具有SAM功能的示例性集群110。如图7C所示,该示例性集群110可以包括多路复用器712、用于AIP114的SAM仪器714、用于路由器112的SAM仪器716、用于集群存储器116的SAM仪器718、用于集群存储器118的SAM仪器722、用于每个处理引擎120的对应的SAM仪器720。示例性集群110的SAM数据可以由该集群110内的SAM仪器714、716、718、720和722收集。多路复用器712的输入端可以与AIP114、路由器112、集群控制器116、集群存储器118以及全部的处理引擎120相耦合来接收SAM数据,并可以被控制来选择SAM数据输入端其中之一来由集群110进行输出。在一个实施方式中,计算系统100的主机可以控制SAM数据来由多路复用器712进行输出,并且传播到下一级多路复用器。例如,在没有超级集群的处理设备102中,多路复用器712的下一级多路复用器可以是多路复用器702。
图7D展示了根据本发明的具有SAM功能的示例性超级集群130。该示例性超级集群130的SAM功能可以包括多路复用器730、用于超级集群132的SAM仪器732以及用于路由器134的SAM仪器734。多路复用器730可以是集群110A到110H内多路复用器712的下一级多路复用器。该多路复用器730的输入端可以同超级集群控制器132、路由器134和集群110A到110H相耦合来接收SAM数据,并且可以被控制来选择SAM数据输入端其中之一来由超级集群130进行输出。在一个实施方式中,计算系统100的主机可以控制SAM数据来由多路复用器730输出,并传播到下一级多路复用器。例如,在具有一级超级集群的处理设备102中,下一级多路复用器可以是多路复用器702。应当注意的是,超级集群控制器132是可选的,在一个实施方式中超级集群控制器132可以不被实现,从而用虚线表示。
所述SAM仪器704、706、714、716、718、720、722、732和734中的每个可以分别包括一个或多个计数器、一个或多个寄存器、和/或一些非易失性存储器(例如,多个寄存器或者闪存)。示例性计数器可以包括,但不限于用来计算计算资源已经发送了多少包和/或计算资源已经收到了多少包的计数器。示例性寄存器可以包括,但不限于存储用于SAM计数器计数周期的时间的可编程临界值的寄存器。非易失性存储器的示例性使用可以包括,但不限于存储用于SAM计数器计数周期的时间的可编程临界值(例如,在系统启动期间使用。)虽然没有显示出,但示例性处理设备102可以包括其他的SAM仪器,例如,用于控制多路复用器702、712和730的信号线,至少暂时为SAM仪器704、706、714、716、718、720、722、732和734保存一些配置参数的寄存器,以及多路复用器702、712和730。
在一个实施方式中,例如,示例性SAM仪器706的一个或多个计数器可以被用来计算从开始时间到结束时间期间,可以在入口端口处接收多少包,从开始时间到结束时间期间,可以向出口端口处发送多少包,和/或从开始时间到结束时间期间,从耦合到集群110(如果实现了超级集群则为超级集群130)的内部接口处可以接收多少包等等。由计数器收集的信息也可以包括,例如,目的地计算资源的标识和/或发送方计算资源的标识。每个目的地和/或发送方计算资源可以是集群110(或者如果实现了超级集群则为超级集群130)或处理设备102上的设备控制器106,或另一处理设备102。被监控的端口,开始和结束时间,以及任何被收集的额外信息,都是可编程的。在一个实施方式中,特定需要由计数器收集的信息参数可以在运行时在SAM仪器706的寄存器中编程,并且能够被随时更新。例如,计算系统100的主机可以向处理设备102发送指令来为处理设备102上的SAM仪器编程。该指令可以包括待收集信息的参数并可以随时发送。
用于SAM数据的通讯,例如在图7A、7B、7C、7D的单项数据链,可以是与用来传递包的数据通路分离的数据通路。在一个实施方式中,可以控制多路复用器702、712、730来选择输出哪个SAM数据。例如,在所述计算系统100操作期间的任何时候,可以控制多路复用器702、712、730来从一个或多个特定处理引擎、一个或多个集群、一个或多个超级集群(如果实现)、或者一个或多个处理设备来输出SAM数据。在另一个实施方式中,可以控制多路复用器来例如,以循环方式旋转通过全部的一个或多个处理引擎、一个或多个集群、一个或多个超级集群(如果实现)、或者一个或多个处理设备。在一个实施方式中,SAM数据可以通过所述计算系统100的主机进行积累,以便主机可以实时地或接近实时地生成计算系统100的活动和性能的整体视图。所述主机可以使用该性能信息来诊断系统性能。例如,主机可以实现硬件和/或软件来收集和分析来自所述计算系统100的全部处理引擎、全部集群、全部超级集群(如果实现它们)以及全部处理设备的性能信息。除了性能分析之外,所述SAM数据也可以帮助硬件调试、软件调试、运行调试、设备内性能分析以及跨设备性能分析。
虽然SAM仪器704、706、714、716、718、720、732和734同它们对应的计算资源设备控制器106、顶层路由器104、AIP114、路由器112、集群控制器116、处理引擎120、超级集群控制器132和路由器134已经被展示出来了,但在一个实施方式中,这些SAM仪器可以被放置在它们对应的计算资源之外。在这样的实施方式中,所述多路复用器702、712和730的输入端可以直接耦合到SAM仪器上而不需要耦合到对应的计算资源上。
图8示例了根据本发明的在示例性计算系统100C中被配置为进行计算任务分配的示例性主机11。所述示例性计算系统100C可以是计算系统100的实施例并且可以实现本文中描述的计算系统100的全部功能。主机11可以是计算系统100的主机的实施例并且可以实现本文中描述的计算系统100的主机的全部功能。如图8所示,计算系统100C可以包括多个处理设备102以及主机11。处理设备102的数量可以低至两个或者高达成千上万,或者更高,仅由DEVID的宽度所限制。处理设备102的准确数量并不重要,因此,处理设备102以虚线表示。主机11可以包括一个或多个处理器20,物理存储器60和接口40。在一个实施方式中,所述计算系统100C内的拓扑和/或互连可以是固定的。在另一个实施方式中,所述计算系统100C内的拓扑和/或互连是可编程的。
接口40可以被配置为在所述计算系统100C和用户(例如,系统管理员)之间通过用户可以提供和/或接收的信息提供接口。这使得数据、结果和/或指令和任何其它通讯项目,统称为“信息”,可以在用户和所述计算系统100C之间来通讯。适用于包括在接口40中的接口装置的实例包括键区、按键、开关、键盘、旋钮、杠杆、显示屏、触摸屏、扬声器、麦克风、指示灯、声音报警以及打印机。信息可以由接口40以听觉信号、视觉信号、触觉信号、和/或其它的感官信号的形式提供。
应该理解的是,其他通讯技术,有线或者无线,在此也被视为接口40。例如,在有些实行中,接口40可以与物理存储器60合并。在此实施例中,信息从存储器(例如智能卡,闪存,移动硬盘等等)被读取进计算系统100C,可以使用户来自定义计算系统100C的实现。其它作为接口40适用于计算系统100C的示例性输入设备和技术包括,但不限于,RS-232端口,RF链接,IR链接,调制解调器(电话、有线、以太网、因特网或其它)。简单地说,任何用于同计算系统100C通讯信息的技术都被认为是接口40。
一个或多个处理器20(可以与处理器20的名称互换)可以被配置以执行计算机程序组件。该计算机程序组件可以包括分配组件23,互连组件24,读取组件25,程序组件26,性能组件27,分析组件28,调整组件29,和/或其它组件。由组件23-29所提供的功能可以归因于一个或多个特定计算机100C组件的说明性目的。这并不旨在以任何方式作限制,并且任何功能都可以由本文所描述的组件或实体提供。
由组件23-29所提供的功能可以被用来读取和执行一个或多个计算机应用程序,包括但不限于一个或多个计算机测试应用程序,一个或多个计算机网络服务器应用程序,或者一个或多个计算机数据库管理应用程序。例如,应用程序可以包括软件定义无线电(SDR)或其一些代表性部分。例如,测试应用程序可以基于如SDR这样的应用程序,例如通过按比例缩减范围使得测试更容易和/或更迅速。其他应用程序也被考虑在了本公开的范围之内。作为非限定性实施例,SDR应用程序可以包括一个或多个混频器、过滤器、放大器、调制器、解调器、探测器、和/或当互连时可以形成应用的其它工作和/或组件。作为非限定性实施例,图10A示例了包括形成有向图表示的一组功能处理元件的计算问题和/或应用程序。所述功能处理元件可以标记为T1-T8。有向图内的有向链接可以表示功能处理元件之间的数据交换。图10A所示的功能处理元件组可以对应一组互连任务。在一个实施方式中,当为应用程序创建一个或多个模块时,这种任务划分可以由软件程序员创建。
分配组件23可以被配置为在计算系统100C内分配一个或多个计算资源来执行一个或多个任务。可以被分配任务的计算资源可以包括处理设备102、集群110、超级集群130(如果实现超级集群)和/或处理引擎120。在有些实现中,分配组件23可以被配置为根据特定路由和/或基于特定路由执行分配。例如,路由可以限制处理设备102和/或直连到特定处理引擎120的处理引擎120的数量。在有些实现中,通过非限定性实例,处理设备102网络的路由可以是固定的(例如不同处理设备102之间的硬件连接可以是固定的),但是给特定计算资源的特定任务的分配可以被细化,改进,和/或优化来追求更高性能。在有些实现中,通过非限定性实施例,处理引擎102网络的路由可以不是固定的(例如在反复执行任务和确定特定分配的性能之间可以编程),并且给特定处理设备102和/或处理引擎120的特定任务的分配也是可以被调整的,例如在追求更高性能中。
分配组件23可以被配置来重复确定和/或执行分配,例如在追求更高性能中。正如在文中使用的,任何关联(或者对应)涉及到应用程序、处理资源、任务和/或与操作在此描述的计算系统100C相关联的任何其它实体,可以是一对一的关联,一对多的关联、多对一的关联、和/或多对多的关联或N对M的关联(请注意N和M可以是大于1的不同数)。例如,分配组件23可以分配一个或多个计算资源来执行SDR应用程序的一个或多个混频器任务。通过非限定性实例,图10B示例了形成有向图表示的一组物理处理元件,该有向图对应与图10A中所描绘的相同或相似的计算机问题和/或软件应用程序。参考图10B,该物理处理元件如所述被标识为P1-P16。在一个实施方式中,物理处理元件可以对应于处理设备102。在另一个实施方式中,物理处理元件可以对应于处理引擎120。在又一个实施方式中,所述物理处理元件可以对应于集群110。在另一个实施方式中,如果实现了超级集群,所述物理处理元件可以对应于超级集群130。在本公开的范围内可以想象包括一个或多个处理引擎120,集群110,超级集群130以及一个或多个处理设备102的组合。参照图10B,有向图中的定向链接可以代表物理处理元件之间的数据交换和/或物理通讯连接。图10B中所描绘的物理处理元件组可以对应于由分配组件23所分配的一组处理引擎120,集群110,超级集群130(如果实现超级集群)和/或处理设备102。
互连组件24可以被配置来获取和/或确定物理处理元件之间的互连来支持由分配组件23进行的分配。一组确定的互连可以被称为路由。在一个实施方式中,互连组件24可以被配置来确定一组计算资源中单个资源之间的互连,这样在一组互连任务中的这种互连和/或关系对应于由分配组件23做出的分配。
作为非限制性实施例,图10C示例了对应于一组互连、形成网络的物理处理元件,该互连支持与图10B中描述相同或相似的一组物理处理元件的分配。参照图10C,该组物理处理元件标识为240同时单个物理处理元件标识为240A-240R,如图所示。在一些实例中,物理处理元件可以对应于处理设备102、集群110、超级集群130(如果实现超级集群)、处理引擎120和/或它们的任意组合。参照图10C,网络中的箭头(包括但不限于连290a,290b,290c和290z)可以表示物理处理元件之间的数据交换和/或物理通讯连接。例如,连接290a可以表示物理处理元件240A和240B之间的通讯,连接290b可以表示物理处理元件240B和240C之间的通讯,连接290c可以表示物理处理元件240C和240D之间的通讯,连接290z可以表示物理处理元件240A和图10C所描绘的另一元件之间的通讯,图10C中所描绘的任何箭头以此类推。图10C所描绘的物理处理元件组可以对应于由互连组件24决定的一组互联。
回到图8,读取组件25可以被配置来读取和/或编程状态、功能和/或连接进计算系统100C和/或它的组件中。状态可以包括指令、与其他处理设备102、集群110、超级集群130(如果实现超级集群)和/或处理引擎120集的互连相关的信息和/或执行特定任务所需的其它信息。在有些实现中,状态可以由程序组件26决定。在有些实现中,读取组件25可以被配置为读取和/或编程处理引擎120、集群110、超集群130(如果实现超级集群)和/或处理设备102的组,由互连组件24决定的互连的组,和/或额外功能到计算系统100C中。例如,额外功能可以包括输入处理、存储器存储、在一个或多个处理设备102中的数据转移,在一个或多个集群110或超级集群130中的数据转移,输出处理,和/或其它功能。在有些实现中,读取组件25可以被配置来执行(至少部分)应用程序,例如对读取进计算系统100C和/或它的组件的功能和/或连接的响应。
程序组件26可以被配置以确定处理设备102、集群110、超级集群130(如果实现超级集群)、和/或处理引擎120的状态。特定集群110、超级集群130(如果实现超级集群)或处理引擎120的特定状态可以与来自系统100C另一组件的分配和/或路由相一致。在有些实现中,程序组件26可以被配置来编程和/或读取指令和/或状态进一个或多个集群110、超级集群130(如果实现超级集群)和/或处理引擎120。在有些实现中,对各个处理引擎120、集群110、超级集群130(如果实现超级集群)和/或处理设备102的编程可以包括设置和/或写入控制寄存器,例如,集群控制器116和超级集群控制器132的CCRs,设备控制器106中的控制寄存器,或处理引擎120中的控制寄存器。
性能组件27可以被配置来确定计算系统100C,一个或多个处理设备102,一个或多个集群110,一个或多个超级集群130(如果实现超级集群),一个或多个处理引擎120,和/或其它本文中描述的处理组件的配置或组合的性能参数。在有些实现中,一个或多个性能参数可以指示性能的分配,和/或由分配组件23,互连组件24,和/或其它组件执行的路由。例如,一个或多个性能参数可以指代(存储器/计算/通信-)瓶颈、速度、延迟和/或其它性能特征。在有些实现中,性能可以同特定应用程序结合起来,例如测试应用程序。除此之外,收集到的其它信息可以包括计算资源每隔多长时间需要一次同任意其他计算资源的其协调处理,在计算资源之间协调各自处理时彼此通讯需要的执行时间,当分配到任务的其它计算资源需要等待时,一些计算资源是否可以闲置。
在有些实现中,一个或多个性能参数可以基于一个或多个处理引擎120,一个或多个处理设备102,一个或多个集群控制器116,一个或多个超级集群控制器132,一个或多个多级路由器和/或计算系统100C的其它组件内和/或通过它们所生成的信号。例如,如本文其它地方所述,所生成的信号可以指示计算系统100C的特定组件内的发生或事件。通过本公开所描述的信号机制(例如SAM数据收集)的优势,可以监控、确定或比较(不同配置的)多核处理系统的性能。
分析组件28可以被配置来分析性能参数。在有些实现中,分析组件28可以被配置来比较多核处理系统不同配置的性能,由程序员(或编译器,或汇编器)将应用程序分成一组互连任务的不同方式,由分配组件23所做的不同分配,由互连组件24所做的不同路由,和/或在多核处理系统的配置、设计和/或操作期间的应用的其它不同选项。
在有些实现中,分析组件28可以被配置来指示瓶颈和/或访问存储器,计算负载,和/或多个处理元件/引擎之间的通讯方面的其它性能问题。例如,一个任务可以被读取到处理引擎上并执行。如果该处理引擎在预定的时间内一直处在忙碌状态(例如,没有闲置的时件信号),那么所述任务可以被标记为计算密集任务和需要并行执行的好候选,例如需要在两个或更多处理引擎中去执行。在另一实施例中,两个处理引擎可以被分配去分别执行一些程序代码(可以是在两个处理引擎之间将一个任务分开,或者每个处理引擎执行两个互联任务中的一个)。如果所述两个处理引擎中每一个花费的时间多于预定百分比的时间(例如,10%,20%,30%或其它百分比,该百分比是可编程的)来在其它处理引擎上等待(例如,因为数据或者事件信号),则所述程序代码可以被标记为通讯密集任务和在单一处理引擎上执行的好候选,或者移动得更近(例如但不限于一个集群中的两个处理引擎,一个超级集群中的两个处理引擎,或者一个处理设备中的两个处理引擎)。
调整组件29可以被配置来确定对多核处理系统的配置、设计和/或操作的调整,例如,基于由分析组件28所做出的分析。调整可以涉及一个或多个由分配组件23所做的不同分配,由互连组件24所做的不同路由,和/或多核处理系统在配置、设计、和/或操作期间应用的其它不同选择。调整可以由用户引导,可以由基于一个或多个特定性能参数的算法引导,可以由基于通用设计原理的启发引导,和/或通过其他方式来引导多核处理性能的逐步细化。在有些实现中,为了找到和/或确定更高级的性能,计算系统100C的组件所执行的一个或多个操作可以被循环地和/或重复地执行。
在有些实现中,调整的确定可以基于模拟退火过程,也可以称为人造退火过程,在一个实施方式中,调整组件29可以实现示例性模拟退火过程的部分或全部功能。例如,调整做出之后,可以在调整后的配置上收集性能数据并进行分析。如果调整改善了性能,该调整可以被保留并可以尝试其它调整。如果调整不能改善性能,该调整可以被退回重来。在一个实施方式中,可以重复此过程多次直到能够达成一个或多个性能目标。该性能目标可以包括绝对要求或相对要求。例如,绝对要求可以指定每秒预定数量的操作次数,相对性能目标可以是连续重复次数(例如,2、3、4或更多)来提供小于某一特定百分比的改进(例如5%、10%、15%或不同的百分数)。
模拟退火技术也可以被用在根据本公开的示例性模拟退火过程中。例如,在有些情况下,退火可以引入噪音(例如特定处理引擎120或处理设备102对特定任务的随机分配),为了追求全局优化避免局部优化(例如可以引入噪音来避免在计算系统100C的配置、分配、路由等一系列选择中的局部性能最大化/最优化)。在有些实现中,对分配和/或路由的调整可以包括从互联任务集将两个任务合并成一个新任务。在有些实现中,对分配和/或路由的调整可以包括从互联任务集将一个单独任务分成两个新任务。在有些实现中,对分配和/或路由的调整可以包括在两个处理引擎之间交换任务。
参考图8,一个或多个处理器20可以被配置来在计算系统100C和/或主机11中提供信息处理能力。同样地,处理器20可以包括一个或多个数字处理器,模拟处理器,设计来处理信息的数字电路,也设计来处理信息的模拟电路,状态机和/或其它电子处理信息的装置。尽管处理器20可以作为单一整体如图8所示,但这只是为了示例目的。在一个实施方式中,处理器20可以包括多个处理单元。例如,每个处理器20可以是处理设备102或者本文描述的不同类型的处理器。这些处理单元可以在实际上位于同一物理装置内,或者处理器20可以表示多个协调操作的设备中的处理功能(例如,“在云端”,和/或其它虚拟处理解决方案)。
应当理解尽管如图8所示的组件23-29在同一单个处理单元内,但在处理器20包括多个处理单元来实现的过程中,组件23-29的一个或多个组件可以被定位远离其它组件。在这里所描述的由不同组件23-29所提供的功能描述是用于示例性目的,并不旨在作为限制,因为组件23-29中的任何组件可以提供比所描述功能更多或更少的功能。例如,组件23-29中的一个或多个组件可以被去除,并且其一些或全部的功能可以由其他23-29组件提供。作为另一个实施例,处理器20可以被配置来执行一个或多个额外的组件,这些组件可以执行文中所述组件23-29中一个组件提供的一些或全部功能。
图8中计算系统100C的物理存储器60可以包括储存信息的电子存储介质。在有些实现中,物理存储器60可以存储计算机程序组件的表现,包括实现该计算机程序组件的指令。所述物理存储器60的电子存储介质可以包括一个或两个与主机11整体提供的系统存储器和/或例如,通过端口(例如USB端口,固件端口等等)或驱动器(例如磁盘驱动器等等),可移除连接到主机11的可移除存储器。物理驱动器60可以包括一个或多个光学可读存储介质(例如光盘等等),磁性可读存储介质(例如磁带,磁性硬盘驱动器,软盘驱动器等等),基于电荷的存储介质(例如EEPROM,RAM等等),固态存储介质(例如,闪存驱动器等等),网络附属存储(NAS),和/或其它电子可读存储介质。物理存储器60可以包括虚拟存储资源,例如通过云和/或虚拟专用网络提供的存储资源。物理存储器60可以存储软件算法,由处理器20确定的信息,通过客户端计算平台14接收的信息,和/或其它使主机11和计算系统100C正常工作的信息。物理存储器60可以是一个或多个系统100C中的单独组件,或物理存储器60可以作为整体提供给计算系统100C中一个或多个其它组件(例如处理器20)。
用户可以通过客户端计算平台14与系统100C之间交互。通过非限制性实施例,客户端计算平台可以包括台式计算机、笔记本计算机、掌上计算机、上网本、智能手机、平板电脑、移动计算平台、游戏控制台、电视机、用于流因特网媒体的设备、和/或其它计算平台中的一个或多个。所述计算系统100C和客户端计算平台之间的交互可以由一个或多个网络13所支持,包括但不限于互联网。
图9是根据本发明的用于计算系统100来向计算系统100的多个计算资源分配计算任务的示例性过程900的流程图。所述计算资源中的每一个可以是处理引擎120,集群110,超级集群130(如果实现超级集群),或处理设备102。配置为执行示例性过程900的计算系统100中的一个实施例可以是计算系统100C,其中计算系统100C中的主机11和其它组件可以通过硬件、固件,和/或特意设计来执行一个或多个示例性过程900操作的软件来配置。
示例性过程900可以从块902处开始,在此具有多个任务的计算过程可以被读取进示例性计算系统100C。例如,计算过程可以是计算机应用程序的一部分。这种计算机应用程序的非限制性实施例可以包括测试应用程序、网络服务器、以及数据库管理系统。对于这些实施例,所述计算过程可以是网络服务器服务因特网上的网页或者数据库管理系统提供数据存储和/或数据分析这样的计算过程。在一个范例性实施方式中,所述软件应用程序可以包括多个由单独的物理处理组件读取并执行的模块。这种模块的非限制性实施例可以包括动态链接库(DLLs),JAVA归档(JAR)包,以及操作系统上的类似库。例如,对于网页服务器应用程序而言,服务网页的计算过程可以包括用来认证用户,用来服务静态网页,和/或生成动态网页的不同任务;对于数据库管理系统,数据分析的计算过程可以包括用于查询数据库和/或生成报告的不同任务。包含多个任务的示例性计算过程可以如图10A所示。
在块904处,多个任务可以被配分给计算系统的多个计算资源。给计算资源的任务分配也可以称为映射。例如,一个示例性计算系统100C可以包括10000个处理设备102,并且其中每一个处理设备102可以包括分组在集群中的256个处理引擎120,多个任务可以分配给处理设备102,集群110和/或处理引擎120。如果实现了超级集群,则所述分配也可以在超级集群级别上实现。在有些实施方式中,由主机11所执行的程序代码可以在处理设备之间分配多个任务,并通过直接寻址到各个计算资源的包来传送所述任务。图10B示例了被分配来执行多个任务的多个计算资源P1到P16。计算资源P1到P16中的每个可以被分配给一个任务,任务的副本,或图10A中的多个任务。计算资源P1到P16中的每个可以是处理设备102,集群110,超级集群130(如果实现超级集群)或处理引擎120。
在块906处,多个任务可以在多个计算资源上执行。如图10B所示,可以在计算资源P1到P16上执行多个任务。所述计算资源P1到P16之间的定向连接可以是计算资源之间的通讯通道。尽管所有的该通道如图10B所示都是单向的,但是在本公开的范围内,有些或全部计算资源之间的有些通讯通道可以是双向的。
在块908处,可以收集多个计算资源的性能信息。如本文所述,每个处理设备102可以在设备、集群(如果实现了超级集群则有超级集群)以及处理引擎级别处收集SAM数据。在有些实施方式中,当所述多个计算资源正在执行分配给它们的任务时,主机11可以用SAM数据收集性能信息。例如,性能组件27可以从SAM设备包括SAM计数器,SAM寄存器或二者一同来收集性能信息。在一个实施方式中,可以在多个计算资源上以预定的时间来执行多个任务,并且可以收集在该预定时间下的性能信息,例如,几毫秒或最多几分钟。在另一个实施方式中,可以收集在运行中确定的时间下的性能信息。例如,一旦多个任务在多个计算资源上开始执行,在为多个计算资源传输数据的一个或多个路由器上可以有活动级别的峰值。该活动级可以被持续地监测,持续时间可以是由峰值开始直到活动级别趋于稳定的时间段。活动的稳定可以被确定,例如,在预定时间内,比如1或2毫秒内,或1或2秒内,无重大变化(例如,小于5%,10%或20%)。
在块910处,可以分析所述收集到的性能信息。例如,分析组件28可以对收集到的性能信息进行分析。在一个实施方式中,主机11可以在任务分配给计算机资源并由计算资源执行前收集SAM数据,以便主机11可以比较任务分配给计算资源前和分配给计算资源后的SAM数据作为分析的一部分。
在块912处,对多个计算资源的多个任务的分配可以被更改。在一个实施方式中,基于所收集的性能数据,主机11可以修改给所述处理资源的任务的映射。例如,主机11可以决定有些任务可以组合而有些任务(例如,有多个程序模块的任务)可以被分成小片(例如,软件包内各个程序模块或者更少的模块)。
图11示例了根据本发明的示例性任务再分配。原始映射图1100A显示了多个计算资源1102、1104、1106、1108、1110以及1112最初可以分配到任务OT1到OT6来分别执行。修改后的映射图1100B显示了任务OT1到OT6的任务再分配,其中计算资源1104到1106可以交换他们所分配到的任务OT2和OT3。也就是说,任务OT2现在可以在计算资源1106上被执行而任务OT3可以在计算资源1102上被执行。由于在计算资源1104和1106之间的任务交换,来自和到达这两个计算资源1104和1106的有向链接可以受到的影响如图所示。计算资源1102到1112中的每个资源可以是处理引擎120、集群110、超级集群130(如果实现超级集群)或处理设备102。
图12示例了根据本发明的另一个示例性任务再分配。原始映射图1200A表示多个计算资源1202、1204、1206、1208、1210和1212最初可以分配到任务OT1到OT6来分别执行。修改后的映射图1200B显示了O1到O6的任务再分配,其中两个任务O5和O6可以被分配给了计算资源1210而任务O4被分配给了两个计算资源1208和1212。在单一计算资源上一起执行O5和O6可以很有用,例如,如果任务O5和O6会频繁交换数据。把任务O4分配给两个计算资源1208和1212可以以多种方式实现。例如,任务04可以分成多个部分,每个部分可以分配给一个计算资源,或者可替代地,任务O4可以被拷贝而每个拷贝副本可以分配给一个计算资源。计算资源1202到1212中的每个可以是处理引擎120,集群110,超级集群130(如果实现超级集群),或处理设备102。
将单独的任务组合起来以在单一计算资源上执行可以被称为任务的合并(或合并体),将一个任务分配给多个计算资源来执行可以被称为任务的分割。尽管图12显示了同时进行的一个合并和一个分割,但在不同实施方式中,任务的合并和/或分割可以单独地发生或以任何有益于优化应用程序处理的组合形式发生。例如,在一个实施方式中,可以应用一个或多个合并而没有任何分割,任意的该合并可以是两个或两个以上任务的合并体。在另一个实施方式中,可以应用一个或多个分割而没有任何合并,任意的该分割可以是分成两个或两个以上任务的分割。此外,当进行合并时,合并后的任务可以在计算系统的任意计算资源中执行,而不必提前使用一个计算资源来执行一个合并的任务。也就是说,在有些实施方式中,合并的任务O5和O6可以被分配到计算资源1202到1208其中之一或该计算系统中任一其它计算资源。应当注意的是在一个实施方式中,其他任务的再分配伴随着一个合并后的任务分配。与其类似,当发生分割时,分割任务可以在该计算系统的任一计算资源中执行,而不必提前使用一个计算资源来执行分割的任务或一个合并的任务(如果有)。也就是说,在有些实施方式中,分割任务O4可以被分配给计算资源1202、1204、1206和1210中任意两个计算资源,或者所述计算系统中任意其他的计算资源。
返回参考图9,在块914处,再分配的多个任务可以根据新的分配由多个计算资源执行。通过使用收集到的SAM数据,计算系统100C可以动态地并适应地向计算系统100C的计算资源分配计算任务。在有些实施方式中,任务的初始修改和再分配后,块908到912可以被重复。此外,在有些实施方式中,所述计算系统100C可以实现模拟退火过程的功能,例如但不限于,如果性能没有改进这退回重来调整,并将模拟噪音注入收集的SAM数据。因此,计算系统100C的实施方式可以是稳固的和响应计算需求,同时可以对复杂计算机应用程序提供很好的可扩缩性。
虽然已经示例并描述了本发明的特定实施方式和应用程序,然而应该理解的是,本发明并不局限于文中所公开的精确配置和组件。仅仅通过示例的方式阐述了在此使用的术语、描述和附图,并不意味着局限于此。对于本领域所属技术人员显而易见的各种修正、改变和多样化都可以在本发明公布的设备的布置、操作、细节、方法和系统中在不脱离本发明主旨和范围的情况下实现。作为非限制性实施例,应当理解这里所包括的结构图旨在展示每个设备和系统的组件的所选子集,而且每张设备和系统的图片可以包含其他未在图中显示的其它部件。另外,本领域所述技术人员将认识到本文描述的某些步骤和功能可以忽略和重新排序,而不会损害本文中所描述的实施方式的范围和性能。
本文所公开的与实施方式相关的各种示例性逻辑块、模块、电路和算法步骤可以实现为电子产品硬件、计算机软件,或二者的结合。为了说明硬件和软件的可互换性,各种说明性组件、模块、电路和步骤已经在前文中按照他们的功能做了一般性描述。这种功能是作为硬件还是软件实现取决于实施在整体系统上的特定应用和设计约束。所述功能可以对每个特定应用以多种方式实现——例如通过使用微型处理器、微型控制器、现场可编程门阵列(FPGAs)、专用集成电路(ASICs)和/或芯片级系统(SoC)——但这些实现决定不应被解释为偏离本发明的范围。
与本文中所公开实施方式相关的方法或算法的步骤可以直接体现在硬件中、由处理器执行的软件模块中,或二者的组合中。软件模块可以存在于随机存储器、闪存、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动硬盘、只读光盘或其它任何本领域已知的存储媒介。
本文公开的方法包括一个或多个用于实现所述方法的步骤或动作。所述方法的步骤和/或动作可以彼此互换而不会背离本发明的范围。换句话说,除非对于实施方式的正确实施需要特定顺序的步骤或动作,在不偏离本发明范围的情况下可以修改顺序和/或特定步骤和/或动作的使用。

Claims (20)

1.一种用于在计算系统上执行软件应用程序的计算机实现方法,该方法包括:
将软件应用程序读取进计算系统,所述软件应用程序包括多个任务;
根据第一次分配,将多个任务分配给计算系统的多个计算资源;
根据所述第一次分配,在多个计算资源上执行多个任务,每个处理资源都被配置来生成和收集系统活动监视(SAM)数据;
从多个处理资源上收集SAM数据;
基于所收集到的SAM数据进行对第一次分配的分析;以及
基于分析,确定对第一次分配的调整。
2.权利要求1所述方法,还包括:
根据第二次分配,将多个修改过的任务重新分配给多个计算资源,其中第二次分配是基于对第一次分配所确定的调整;以及
在重新分配的多个计算资源上执行多个任务。
3.权利要求2所述方法,还包括:
至少重复一次基于特定分配来执行多个任务的步骤,收集SAM数据,执行分析,
确定特定分配的特定调整,基于修改后的分配来分配计算资源,以及在所述重新分配后的多个处理资源上执行多个任务。
4.权利要求1所述的方法,其中所述计算系统包括多个处理设备,每个处理设备包括分组成一个或多个集群的多个处理引擎,并且每个处理资源都是处理设备,集群,或处理引擎其中之一,每个处理资源实施了SAM仪器来生成和收集SAM数据。
5.权利要求4所述的方法,其中多个所述的一个或多个集群被分组成一个或多个超级集群,并且每个处理资源都是处理设备,集群,超级集群或处理引擎其中之一,
每个超级集群也实施了SAM仪器来生成和收集SAM数据。
6.权利要求1所述的方法,其中确定对第一次分配的调整是基于模拟退火技术。
7.权利要求1所述的方法,其中确定对第一次分配的调整包括引入不以SAM数据为基础的噪音。
8.权利要求1所述的方法,其中对第一次分配的调整包括由多个任务中将两个任务合并成一个新任务。
9.权利要求1所述的方法,其中对第一次分配的调整包括由多个任务中将一个单独任务分割成两个新任务。
10.权利要求1所述的方法,其中第一次分配包括被分配来执行第一个任务的第一个处理资源,以及被分配来执行第二个任务的第二个处理资源,并且其中对第一次分配的调整包括对第一和第二个计算资源的交换,使得第一个处理资源被分配来执行第二个任务而第二个处理资源被分配来执行第一个任务。
11.一种被配置来并行执行软件应用程序的多个任务的计算系统,包括:
被配置来执行程序代码的多个计算资源,每个计算资源包括被配置来生成和收集SAM数据的系统活动监控(SAM)仪器;以及
主机被配置来:
将软件应用程序读取进计算系统内;
根据第一次分配将多个任务分配给多个计算资源;
根据第一次分配在多个所述计算资源上执行多个任务
从多个处理资源处收集SAM数据;
基于所收集的SAM数据执行所述第一次分配的分析;以及
基于分析,确定对第一次分配的调整。
12.权利要求11所述的计算系统,其中主机还可以被配置来:
根据第二次分配,将修改后的多个任务重新分配给多个计算资源,其中第二次分配是基于对第一次分配所确定的调整;以及
在重新分配的多个处理资源上执行多个任务。
13.权利要求12所述的计算系统,其中主机还可以被配置来:
至少重复一次基于特定分配来执行多个任务的步骤,收集SAM数据,执行分析,
确定特定分配的特定调整,基于修改后的分配来分配计算资源,以及在重新分配后的多个处理资源上执行多个任务。
14.权利要求11所述的计算系统,其中计算系统包括多个处理设备,每个处理设备包括分组成一个或多个集群的多个处理引擎,并且每个处理资源都是处理设备,集群,或者处理引擎其中之一。
15.权利要求14所述的计算系统,其中多个所述一个或多个集群被分组成一个或多个超级集群,并且每个处理资源都是处理设备,集群,超级集群或者处理引擎其中之一。
16.权利要求11所述的计算系统,其中确定对第一次分配的调整是基于模拟退火技术。
17.权利要求1所述的计算系统,其中确定对第一次分配的调整包括引入不以SAM数据为基础的噪音。
18.权利要求11所述的计算系统,其中对第一次分配的调整包括从多个任务中将两个任务合并成一个新任务。
19.权利要求11所述的计算系统,其中对第一次分配的调整包括从多个任务中将一个单独的任务分割成两个新任务。
20.权利要求1所述的计算系统,其中第一次分配包括第一个处理资源被分配来执行第一个任务并且第二个处理资源被分配来执行第二个任务,其中对所述第一次分配的调整包括对第一和第二个计算资源的交换,使得第一个处理资源被分配来执行第二个任务而第二个处理资源被分配来执行第一个任务。
CN201680019194.7A 2015-01-29 2016-01-27 在芯片计算系统上向网络处理器映射的过程 Pending CN107430530A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/608,505 2015-01-29
US14/608,505 US20160224379A1 (en) 2015-01-29 2015-01-29 Mapping Processes to Processors in a Network on a Chip Computing System
PCT/US2016/015064 WO2016123184A1 (en) 2015-01-29 2016-01-27 Mapping processes to processors in a network on a chip computing system

Publications (1)

Publication Number Publication Date
CN107430530A true CN107430530A (zh) 2017-12-01

Family

ID=55521784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680019194.7A Pending CN107430530A (zh) 2015-01-29 2016-01-27 在芯片计算系统上向网络处理器映射的过程

Country Status (5)

Country Link
US (1) US20160224379A1 (zh)
EP (1) EP3251008A1 (zh)
KR (1) KR20170109600A (zh)
CN (1) CN107430530A (zh)
WO (1) WO2016123184A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395066A (zh) * 2020-12-06 2021-02-23 王志平 一种流水线时分复用和空分复用的方法
CN115469909A (zh) * 2022-11-14 2022-12-13 深圳鸿芯微纳技术有限公司 指令更新方法、软件平台的工作方法、装置、设备和介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108516B2 (en) 2015-01-29 2018-10-23 Knuedge Incorporated Affinity data collection in a computing system
US10331569B2 (en) 2016-01-05 2019-06-25 Friday Harbor Llc Packet router buffer management
FR3061785B1 (fr) * 2017-01-12 2021-01-29 Bull Sas Procede d'analyse des regles d'evolutions entre les niveaux d'utilisation des ressources d'un systeme informatique
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
GB2569270B (en) * 2017-10-20 2020-02-19 Graphcore Ltd Parallel computing
KR102279184B1 (ko) * 2019-12-12 2021-07-16 이화여자대학교 산학협력단 포그 네트워크에서의 태스크 처리 방법 및 포그 네트워크 형성 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
CN103124228A (zh) * 2011-09-12 2013-05-29 索尼公司 信息处理设备、信息处理方法、记录介质和信息处理系统
US20130239111A1 (en) * 2013-04-30 2013-09-12 Splunk Inc. Top-Down Performance Assessment of a Hypervisor
US20140281723A1 (en) * 2013-03-12 2014-09-18 International Business Machines Corporation Algorithm Selection For Collective Operations In A Parallel Computer
US20140297846A1 (en) * 2013-03-29 2014-10-02 Compuware Corporation System And Method For Combining Server Side and Network Side Transaction Tracing And Measurement Data At The Granularity Level Of Individual Transactions
CN104156271A (zh) * 2014-08-01 2014-11-19 浪潮(北京)电子信息产业有限公司 一种协同计算集群负载均衡的方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904848B2 (en) * 2006-03-14 2011-03-08 Imec System and method for runtime placement and routing of a processing array
GB2457309A (en) * 2008-02-11 2009-08-12 Picochip Designs Ltd Process allocation in a processor array using a simulated annealing method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
CN103124228A (zh) * 2011-09-12 2013-05-29 索尼公司 信息处理设备、信息处理方法、记录介质和信息处理系统
US20140281723A1 (en) * 2013-03-12 2014-09-18 International Business Machines Corporation Algorithm Selection For Collective Operations In A Parallel Computer
US20140297846A1 (en) * 2013-03-29 2014-10-02 Compuware Corporation System And Method For Combining Server Side and Network Side Transaction Tracing And Measurement Data At The Granularity Level Of Individual Transactions
US20130239111A1 (en) * 2013-04-30 2013-09-12 Splunk Inc. Top-Down Performance Assessment of a Hypervisor
CN104156271A (zh) * 2014-08-01 2014-11-19 浪潮(北京)电子信息产业有限公司 一种协同计算集群负载均衡的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
贾俊秀 等: "《系统工程学》", 31 January 2014, 西安电子科技大学出版社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395066A (zh) * 2020-12-06 2021-02-23 王志平 一种流水线时分复用和空分复用的方法
CN115469909A (zh) * 2022-11-14 2022-12-13 深圳鸿芯微纳技术有限公司 指令更新方法、软件平台的工作方法、装置、设备和介质
CN115469909B (zh) * 2022-11-14 2023-06-20 深圳鸿芯微纳技术有限公司 指令更新方法、软件平台的工作方法、装置、设备和介质

Also Published As

Publication number Publication date
US20160224379A1 (en) 2016-08-04
KR20170109600A (ko) 2017-09-29
WO2016123184A1 (en) 2016-08-04
EP3251008A1 (en) 2017-12-06

Similar Documents

Publication Publication Date Title
CN107430530A (zh) 在芯片计算系统上向网络处理器映射的过程
Shao et al. Simba: Scaling deep-learning inference with multi-chip-module-based architecture
Guerrero et al. Resource optimization of container orchestration: a case study in multi-cloud microservices-based applications
CN104520814B (zh) 用于配置云计算系统的系统和方法
CN108694069A (zh) 动态可组成的计算系统、数据中心和用于动态组成计算系统的方法
CN110063051A (zh) 可重新配置的服务器
US20120304020A1 (en) Shared performance monitor in a multiprocessor system
US10108516B2 (en) Affinity data collection in a computing system
WO2019239254A1 (en) Parallel computational architecture with reconfigurable core-level and vector-level parallelism
Besta et al. Substream-centric maximum matchings on fpga
CN108269602B (zh) 非易失性存储存储器中的处理器
CN108268421A (zh) 用于在机架规模环境中提供可重新配置的数据层的机制
CN106164810B (zh) 使用基于电压的功能的性能变化的指令优化
CN103649932B (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US20190197018A1 (en) Dynamic reconfiguration using data transfer control
Katevenis et al. Next generation of exascale-class systems: Exanest project and the status of its interconnect and storage development
CN109542835A (zh) 用于使用多个存储器通道来降低平台中的加速器-存储器访问成本的技术
JP2021521539A (ja) ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ
Souza et al. CAP Bench: a benchmark suite for performance and energy evaluation of low‐power many‐core processors
US20220108135A1 (en) Methods and apparatus for performing a machine learning operation using storage element pointers
Lin et al. Hard-odt: Hardware-friendly online decision tree learning algorithm and system
Chatzikonstantis et al. Multinode implementation of an extended hodgkin–huxley simulator
CN107408085A (zh) 用于计算系统的统一系统宽寻址
Ribeiro Contributions on memory affinity management for hierarchical shared memory multi-core platforms
US20220129769A1 (en) Modular neural network computing apparatus with distributed neural network storage

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20171201

WD01 Invention patent application deemed withdrawn after publication