CN105359098A - 多处理器嵌入式系统上应用的动态重新配置 - Google Patents
多处理器嵌入式系统上应用的动态重新配置 Download PDFInfo
- Publication number
- CN105359098A CN105359098A CN201380077900.XA CN201380077900A CN105359098A CN 105359098 A CN105359098 A CN 105359098A CN 201380077900 A CN201380077900 A CN 201380077900A CN 105359098 A CN105359098 A CN 105359098A
- Authority
- CN
- China
- Prior art keywords
- application
- exchange
- processor
- data
- memory buffer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开涉及多处理器嵌入式系统上应用的动态重新配置。公开了多处理器系统和用于交换在多处理器系统上执行的应用的方法。所述多个应用可以包括第一应用和多个其它应用。第一应用可以动态地与第二应用交换。交换可以在不停止所述多个其它应用的情况下被执行。多个其它应用可以在交换期间继续执行,以执行实时操作和处理实时数据。在交换之后,多个其它应用可以继续与第二应用一起执行,并且所述多个其它应用的至少一个子集可以与第二应用通信,以执行实时操作和处理实时数据。
Description
技术领域
本发明涉及多处理器系统,并且更具体而言涉及在多处理器系统(MPS)上执行的软件应用的动态重新配置。
背景技术
嵌入式系统可以被描述为为特定功能而设计的计算机系统,常常具有实时计算约束。物理上,嵌入式系统的范围从便携式消费者电子设备,诸如视频和/或音频设备,到大的固定装置,诸如交通灯、工厂控制器,以及在很大程度上复杂的系统,诸如混合动力车辆和航空电子设备。嵌入式系统可以接收输入信号并实时地处理信号,以执行特定的实时操作。嵌入式系统可以替代地(或另外地)执行实时处理并生成输出信号。
由嵌入式系统执行的处理可以以不同的方式实现。一些设备使用现场可编程门阵列(FPGA)或其它可编程逻辑设备。FPGA是在无需使用存储的命令式软件编程方法的情况下实现复杂系统的一种手段。相反,这些设备利用硬件描述语言,诸如VHDL或Verilog,来配置,这使得用户能够描述互连的电气部件集合。通过在芯片被初始化时编程熔丝或设置配置存储器位置,FPGA实现这种互连设计。
嵌入式系统还可以利用一个或多个处理器或数字信号处理(DSP)引擎来实现。例如,传统的粗粒度可编程嵌入式系统可以有少量的处理器或DSP引擎,诸如两个或四个处理器核心以及固定的或可编程的特定于应用的逻辑功能。这些系统通常具有大的数据和指令存储器或者利用虚拟存储器方案来扩展可被寻址的数据和指令存储器的范围。
在一些情况下,可能期望在运行时重新编程嵌入式系统,例如,重新编程在不停止系统的情况下发生。但是,基于FPGA的和传统的基于处理器的嵌入式系统都有使这种重新编程成问题的缺点。例如,虽然一些FPGA设备可以具有用于在运行时重新配置FPGA的特定物理区域的有限能力,但是一般难以在运行时动态地重新编程FPGA来执行不同的应用。例如,FPGA重新配置能力可能不是以逻辑(或应用)为基础,而是基于逻辑设计的哪一部分被映射到芯片的特定物理部分。要花费很大的努力在FPGA上对齐设计的逻辑和物理映射,但这可能会造成实现非常低效。
在传统的基于处理器的系统中,处理能力可以通过众所周知的多任务技术在不同的应用之间共享。在这种方法中,两个或更多个应用可以以交织的方式同时在同一处理器上运行。处理器动态地管理多个应用的状态。但是,这会引起性能下降并且注入不确定的时间延迟,对于实时嵌入式系统,这可能是无法接受的。
因此,可能期望提供一种实时嵌入式系统,该系统提供,例如通过在不停止系统执行的情况下动态地交换应用,在运行时执行系统的重新编程的改进能力。
发明内容
公开了多处理器系统以及用于交换在该多处理器系统上执行的应用的相关联方法的各种实施例。多处理器系统可以包括多个处理器和散置在处理器当中的多个存储器。多个应用可以在多处理器系统上加载。加载应用可以包括在多个存储器中的不同存储器当中分布来自多个应用的指令和数据,以供由关联的处理器执行。所述多个应用可以在多处理器系统上执行。在一些实施例中,所述多个应用可以一起执行并且彼此通信,以执行实时操作。例如,所述多个应用可以处理实时数据。实时操作可以执行关于实时数据的输入或输出当中至少其一。
所述多个应用可以包括第一应用和多个其它应用。根据一些实施例,第一应用可以用第二应用交换,其中该第二应用可以不是先前已被加载在多处理器系统上并执行的多个应用之一。可以在不停止所述多个其它应用的同时执行交换。换句话说,所述多个其它应用可以在交换期间继续执行,以执行实时操作和处理实时数据。交换之后,所述多个其它应用可以继续与第二应用一起执行,并且所述多个其它应用的至少一个子集可以与第二应用通信,以执行实时操作通信和处理实时数据。所述多个其应用可以不知道交换正在发生。
在交换之前,第一应用可以在多个处理器的第一子集上执行。在一些实施例中,交换可以包括在多个处理器的第一子集上停止第一应用,将第一应用与在多处理器系统外部的一个或多个外部资源解耦,以及可选地保存第一应用的状态。交换还可以包括,在第二应用中的交换之前,复位多个处理器的第一子集,以便将多个处理器的第一子集置于已知状态。交换还可以包括解耦第一应用与一个或多个其它应用的通信。
然后,交换可以涉及将第二应用加载到与多个处理器的第一子集相关联的存储器中。在加载第二应用之后,第二应用可以被耦合到一个或多个外部资源,这些外部资源可以是第一应用之前耦合到的相同的一个或多个外部资源,或者可以是不同的外部资源。在第二应用已被加载之后,交换还可以包括耦合第二应用与一个或多个其它应用的通信,这些其它应用可以是第一应用先前与其通信的相同的应用,或者可以是不同的应用。
在一些实施例中,一个或多个第一缓冲存储器可以耦合在多个处理器的第一子集与多个处理器的其它子集之间。解耦第一应用的通信可以包括控制一个或多个第一缓冲存储器,以启用解耦,例如,通过更改由第一缓冲存储器执行的、到和/或来自第一应用的通信。
在一些实施例中,第一应用可以在第一缓冲存储器的下游侧,并且更改由第一缓冲存储器执行的通信可以包括在交换期间停止第一缓冲存储器从发送应用接受数据。在一些实施例中,发送应用可以响应于第一缓冲存储器停止从发送应用接收数据而暂停。在其它实施例中,更改可以包括配置第一缓冲存储器在交换期间继续从发送应用接受数据并且重写先前存储且未发送的数据。
在其它实施例中,第一应用可以在第一缓冲存储器的上游侧,并且更改由第一缓冲存储器执行的通信可以包括在交换期间停止第一缓冲存储器向接收应用转发数据。在一些实施例中,一旦没有来自第一应用的更多进入的数据,第一缓冲存储器就可以停止向接收应用转发数据。在其它实施例中,更改可以包括配置第一缓冲存储器在交换期间重复地将其数据,例如先前从第一应用接收并存储在第一缓冲存储器中的数据,发送到接收应用两次或更多次。因此,相同的数据可以在交换期间被重复地发送到接收应用。
在一些实施例中,第一应用可以经由第一缓冲存储器传送结构化数据元素。每个数据元素可以具有开始边界和结束边界。第一缓冲存储器可以在第一数据元素的传输已被启动之后接收停止数据通信的请求。在一些实施例中,第一缓冲存储器可以继续第一数据元素的传输,直到第一数据元素的结束边界。
当第二应用被换入时,通过配置一个或多个缓冲存储器,第二应用可以被耦合到它与其通信的(一个或多个)应用。例如,如果第二应用和第一应用与相同的(一个或多个)其它应用通信,则通过控制参与解耦第一应用与(一个或多个)其它应用的相同的一个或多个第一缓冲存储器,第二应用可以耦合到这些(一个或多个)其它应用。
例如,第一应用可以已经在给定缓冲存储器的下游侧,并且该缓冲存储器可以已经在第一应用被换出时被停止从发送应用接受数据。当第二应用被换入时,缓冲存储器可以被放回接受数据的模式。因此,当开始第二应用的执行时,由发送应用发送的数据现在可以被发送到第二应用,而不是先前从发送应用接收数据的第一应用。
作为另一个例子,第一应用可以已经在给定缓冲存储器的上游侧,并且该缓冲存储器可以已经在第一应用被换出时被停止向接收应用转发数据。当第二应用被换入时,缓冲存储器可以被放回转发数据的模式。因此,当开始第二应用的执行时,接收应用现在可以从第二应用,而不是先前将数据发送到接收应用的第一应用,接收数据。
第二应用可以在先前被用来执行第一应用的多处理器系统的处理器的同一子集上执行,或者可以在处理器的不同子集上执行,或者在相同和不同处理器的组合上执行。交换可以包括将第二应用的程序指令和/或数据加载到与执行第二应用的处理器子集相关联的一个或多个存储器中。在一些实施例中,第二应用可以从外部存储器设备,诸如RAM设备、闪存存储器设备或者在多处理器系统外部的其它存储器设备,被加载到一个或多个存储器中。在其它实施例中,第二应用可以从由多处理器系统外部的外部处理器发送的指令流被加载到一个或多个存储器中。
将第二应用的程序指令和数据加载到一个或多个存储器中可以包括沿两条或更多条交换路线通过多处理器系统发送指令和数据(通信路线是物理地实现多处理器系统中的通信的一种手段)。每条交换路线可以与特定存储器相关联并且可以被用来将指令/数据加载到该存储器中。在一些实施例中,这两条或更多条交换路线可以共享共同的第一部分,被称为交换路线的主干部分。该主干部分可以包括从多处理器系统的I/O端口到多处理器系统内的端点的路线。交换路线的第二部分可以将主干路线的端点连接到被第二应用使用的目标存储设备。
在一些实施例中,第一应用可以响应于从在多处理器系统上执行的其中一个其它应用接收信息而用第二应用交换,例如,其中该信息指示第一应用应当被换出。在其它实施例中,交换可以包括响应于接收到指示第一应用应当被换出的外部信号而换出第一应用。外部信号可以从多处理器系统的外部接收。例如,在一些实施例中,外部信号可以从在多处理器系统外部的处理器上执行的系统控制器程序接收。
在一些实施例中,主任务或管理任务可以连同多个应用一起在多处理器系统上执行。管理任务可以在多处理器系统的一个或多个处理器上执行,并且可以被配置为管理用第二应用交换第一应用。
在一些实施例,第二应用可以包括多个可执行任务,并且用第二应用交换第一应用可以包括配置每个所述任务由多处理器系统的不同处理器执行。
在一些实施例中,用第二应用交换第一应用可以包括同时从多处理器系统外部的两个或更多个源存储器设备向多处理器系统发送两个或更多个指令流。每个指令流可以包括第二应用的程序指令。
在一些实施例中,交换可以包括同时用多个第二应用交换第一应用。多个第二应用可以同时从不同的源存储设备被加载到多处理器系统中。
在进一步的实施例中,程序指令可以被存储在计算机可读存储介质上。程序指令可以由多处理器系统执行,以便在多处理器系统上加载多个应用。多处理器系统可以包括多个处理器和散置在处理器当中的多个存储器。加载可以包括在多个存储器中的不同存储器当中分布来自多个应用的指令和数据以供关联的处理器执行。
程序指令还可以由多处理器系统执行,以启动多个应用在多处理器系统上的执行。多个应用可以一起执行并且彼此通信,以执行实时操作。实时操作可以执行关于实时数据的输入或输出当中至少其一。多个应用可以处理实时数据。
多个应用可以包括第一应用和多个其它应用。程序指令还可以由多处理器系统执行,以便用第二应用交换第一应用,其中第二应用不是先前被加载在多处理器系统上并执行的多个应用之一。可以在不停止所述多个其它应用的情况下执行交换。换句话说,所述多个其它应用可以在交换期间继续执行,以执行实时操作和处理实时数据。在交换之后,所述多个其它应用可以继续与第二应用一起执行。所述多个其它应用的至少一个子集可以与第二应用通信,以执行实时操作和处理实时数据。
根据一些实施例,多处理器系统可以包括:多个处理器;散置在处理器当中的多个存储器;以及互连多个处理器和散置在处理器当中的多个存储器的通信架构。通信架构可以包括散置在多个处理器的至少一个子集当中的多个缓冲存储器。多个缓冲存储器可以可配置为在多处理器系统中执行的应用之间传送数据。在多个应用在多处理器系统上被执行以便执行包括实时数据的接收和/或发送以及实时数据的处理的实时操作的过程中,多个缓冲存储器可以可配置为在用第二应用交换第一应用期间中断和恢复活动应用之间的连接。
在一些实施例中,多处理器系统还可以包括耦合在多个处理器之间的多个数据存储器路由器(DMR)。DMR可以包括散置在处理器当中的多个存储器。
附图说明
图1A示出了示例摄像机;
图1B示出了可被包括在摄像机中或耦合到其的嵌入式系统,其中该嵌入式系统利用配置为具有可交换应用的多处理器系统(MPS);
图2A示出了示例性蜂窝电话;
图2B和2C示出了用在电话中的MPS,其中该MPS配置为具有可交换应用;
图3A示出了无线发送器/接收机设备;
图3B示出了可以由无线设备执行的通信算法,其中该通信算法是利用在MPS上执行的可交换应用实现的;
图4-6示出了根据一种实施例、用于MPS的HyperXTM体系架构的例子;
图7-12示出了根据一种实施例、在MPS上执行的算法的示例踪迹;
图13示出了多个应用在其上执行的MPS的例子;
图14示出了在应用被换出并且另一个应用被换入以取代其之后的图13的MPS;
图15示出了在三个应用被其它两个应用取代之后的图13的MPS;
图16示出了其中主任务被触发以便通过在MPS内部执行的应用来启动应用交换的实施例;
图17示出了其中主任务被触发以便通过在位于MPS外部的通用处理器(GPP)上执行的系统控制器程序来启动应用交换的不同实施例;
图18示出了其中主任务与系统控制器一起在外部GPP上执行的实施例;
图19示出了在从外部存储器设备换入应用时所涉及的资源;
图20示出了备选实施例,其中,通过从外部处理器向MPS发送指令和数据流,应用代码被加载到MPS中;
图21示出了其中两个应用同时从两个不同的外部RAM设备被换入MPS的实施例;
图22示出了换入和换出应用的生命周期;
图23示出了换入和换出简单应用的生命周期;
图24示出了用于生成实现应用交换所需的可执行软件代码的一组软件工具;
图25示出了从MPS上的一个应用配置到该MPS上的另一应用配置的过渡;
图26示出了可以在系统的开发阶段被用来构造互不干扰的应用集的开发工作流;
图27示出了其中多条交换路线被用来换入应用的例子;及
图28示出了其中可交换应用与其它应用通过经由隔离器传递数据来通信的例子。
虽然本公开内容容许各种修改和备选形式,但是其具体实施例作为例子在附图中示出并且将在本文中详细描述。但是,应当理解,附图和对其的详细描述不是要将本公开内容限定到所示出的特定形式,相反,其意图是覆盖所有属于由所附权利要求所限定的本公开内容的精神和范围之内的修改、等同物和备选方案。本文所使用的标题仅用于组织目的,并且不意味着被用来限制本描述的范围。如贯穿本说明书所使用的,词“可以”在许可的意义(即,意味着有可能)而不是强制的意义(即,意味着必须)上被使用。类似地,词“包括”或“包含”的意思是包括,但不限于。
各种单元、电路或其它部件可以被描述为“被配置为”执行一个或多个任务。在这种语境下,“被配置为”是一般地指“具有”在操作期间执行一个或多个任务的“电路”的“结构”的广义阐述。照此,即使当单元/电路/部件当前不执行任务时,单元/电路/部件也可以被配置为执行该任务。一般而言,构成对应于“被配置为”的结构的电路可以包括硬件电路。类似地,为了描述的方便,各种单元/电路/部件可以被描述为执行一个或多个任务。这种描述应当被解释为包括短语“被配置为”。阐述被配置为执行一个或多个任务的单元/电路/部件明确地不是要对那个单元/电路/部件援引35U.S.C.§112第六段的解释。更一般而言,任何元件的阐述都明确地不是要对那个元件援引35U.S.C.§112第六段的解释,除非具体地阐述了语言“用于……的装置”或“用于……的步骤”。
具体实施方式
引入作为参考
其发明人为MichaelB.Doerr、WilliamH.Hallidy、DavidA.Gibson和CraigM.Chase的、标题为“ProcessingSystemWithInterspersedStallPropagatingProcessorsAndCommunicationElements”的美国专利No.7,415,594的全部内容通过引用被结合于此,就好像在本文完全被描述了一样。
于2011年10月14日提交、其发明人为MichaelB.Doerr、CarlS.Dobbs、MichaelB.Solka、MichaelRTrocino和DavidA.Gibson的、标题为“DisablingCommunicationinaMultiprocessorSystem”的美国专利申请序列No.13/274,138的全部内容通过引用被结合于此,就好像在本文完全被描述了一样。
术语
计算机系统—各种类型的计算或处理系统中的任何一种,包括个人计算机系统(PC)、大型机计算机系统、工作站、网络设备、互联网设备、个人数字助理(PDA)、网格计算系统或者其它设备或设备的组合。一般而言,术语“计算机系统”可被广泛地定义为涵盖具有执行来自存储介质的指令的至少一个处理器的任何设备(或设备的组合)。
软件应用-术语“软件应用”(在本文也被仅称为“应用”)旨在具有其普通含义的全部范围,并且包括可以被存储在一个或多个存储器中并且由一个或多个处理器执行的任何类型的程序指令、代码、脚本和/或数据,或它们的组合。示例性软件应用包括以基于文本的编程语言,诸如C、C++、FORTRAN、Java、汇编语言等编写的程序;图形程序(以图形化编程语言编写的程序);汇编语言程序;已被编译成机器语言的程序;脚本;以及其它类型的可执行软件。
应用可以在MPS的一个或多个处理器上执行并且可以从MPS的一个或多个本地存储器读出数据和/或向其写入数据。应用可以包括一个或多个计算任务,其中每个任务通常在MPS的单个处理器上运行并且可以与来自一个或多个应用的一个或多个任务共享该处理器。应用可以执行特定的功能或操作。如果应用包含多于一个任务,则这些任务可以彼此通信,以执行功能或操作。
MPS可以同时执行多个应用,例如,当应用彼此并行地执行时。应用可以彼此通信,并且由应用执行的相应功能或操作可以建立在彼此之上,以执行更大或更高级的功能或操作。
自动-指的是在没有直接指定或执行动作或操作的用户输入的情况下由计算机系统(例如,由计算机系统执行的软件)或设备(例如,电路、可编程硬件元件、ASIC,等等)执行的动作或操作。从而,术语“自动”与在用户提供输入来直接执行操作的情况下由用户手动执行或指定的操作形成对照。自动过程可由用户提供的输入启动,但是“自动”执行的后续动作不是用户指定的,即,不是在用户指定每个要执行的动作的情况下“手动”执行的。例如,通过选择每个字段并且提供指定信息的输入(例如,通过键入信息、选择复选框、单选选择,等等)来填写电子表单的用户是在手动填写该表单,虽然计算机系统必须响应于用户动作来更新表单。表单可由计算机系统自动填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表单的字段并且在没有任何指定字段的答案的用户输入的情况下填写表单。如上所述,用户可调用表单的自动填写,但不参与表单的实际填写(例如,用户不是手动指定字段的答案,而是这些字段被自动地完成)。本说明书提供了响应于用户采取的动作而自动执行操作的各种例子。
详细描述
描述了多处理器系统(MPS)以及用于动态交换在MPS上执行的应用的相关联方法的各种实施例。多处理器系统(MPS)可以被定义为包括多个处理元件(PE)的系统。MPS可以具有散置在PE当中的多个存储器,或者作为替代可以具有单个共享存储器。如本文所使用的,术语“处理元件”指的是处理器或CPU(中央处理单元)、微处理器或处理器核心。虽然MPS可以包括任何数量的两个或更多个PE,但是应当注意的是,一些MPS可以包括比通常只包括一个通用处理器(GPP)或几个GPP的传统计算机系统显著更多的PE。例如,一些MPS可以包括4、8、16、32或64个PE(其它例子包括,例如,几十、几百甚至上千个PE)。在一些实施例中,由于其用于低功耗目的的特殊构造,适于大型MPS的PE设备可以比由传统计算机系统使用的通用处理器更能量高效。
MPS还可以包括互连PE和/或存储器的互连网络(IN)。PE和存储器可以在一个、两个、三个或更多个维度,包括圆形维度(例如,循环或环),中互连。较高维度的MPS可以被映射到具有较少维度的制造介质上。例如,具有四维(4D)超立方体形状的MPS可以被映射到硅集成电路(IC)芯片的3D堆叠上、或单个2D芯片上,或者甚至1D的计算单元行。此外,低维度的MPS可以被映射到更高维度的介质。例如,1D的计算单元行可以以蛇形形状布置到IC芯片的2D平面上,或盘绕到芯片的3D堆叠中。MPS可以包括多种类型的计算单元以及处理器和存储器的散置布置。在板的意义上还包括在MPS中的是MPS的层次结构或嵌套布置,尤其是由互连的IC芯片组成的MPS,其中IC芯片包含一个或多个还可以具有更深层次结构的MPS。
如本文所使用的,术语MPS既覆盖相对同质的处理器集合,又覆盖异质的通用集合,以及在所谓的“平台IC”芯片上集成的专用处理器。平台IC芯片可以包含几个到许多个处理器,通常与共享存储器和可能的片上网络互连。在MPS与“平台IC”芯片之间可以有或者可以没有区别。但是,“平台IC”芯片可以在市场上销售,以解决在特定垂直市场中的特定技术要求。
一般而言,用于MPS的存储器可以按层次组织,快速存储器在顶部,并且更慢但更高容量的存储器在层次结构中逐层向下。在MPS中,位于层次结构顶部的支持存储器可以位于每个PE附近。每个支持存储器可以专门只保持指令或只保持数据。用于特定PE的支持存储器可以是那个PE私有的或者与其它PE共享。
沿存储器层次再往下,可以有更大的共享存储器,诸如半导体同步动态随机存取存储器(SDRAM),其具有比与PE相邻的支持存储器大许多倍的位容量。沿存储器层次再往下,可以有其它类型的存储器,诸如闪存存储器、磁盘和光盘。
MPS可以用软件应用进行编程,以完成特定操作。每个应用可以由MPS中的一个或多个PE执行。多个应用常常可以彼此并发地在MPS上执行。应用可以一起执行并彼此通信,以执行实时操作。实时操作可以执行关于实时数据的输入和/或输出。例如,MPS可以经由输入信号接收实时数据。一个或多个应用可以处理输入信号,并且有可能产生具有基于所述处理被修改的或附加的实时数据的输出信号。
在系统执行期间的某个点,可以确定特定的应用可能不需要被执行。例如,该应用可以变成空闲并保持空闲很长一段时间,或者该应用的优先级可以比正在等待运行的另一个应用低,或者另一个应用可能需要访问正在由该应用使用的特定资源。因此,停止该正在运行的应用的执行并允许另一个应用使用新的可用处理器资源可能是有利的。这在本文中被称为“换出”先前运行的应用,和“换入”另一应用。
嵌入式系统通常需要保持活动并持续工作,并且通常不能被随意停止。一个例子是用于控制关键安全设备的系统,其中停止该系统可能会产生不安全的情况。作为另一个例子,其中嵌入式系统正在处理用于向用户呈现或传输的视频和/或音频,停止该嵌入式系统可以引起媒体数据中不期望的伪影。因此,在嵌入式系统中,应用通过其被停止和起动的过程可以需要被谨慎处理。本文所述的交换方法可以在不停止系统的情况下使得应用能够被交换。例如,当前在MPS上执行的、除被换入/换出的应用之外的其它应用可以在交换发生时继续执行。此外,该交换方法还可以使得交换能够快速进行,以确保系统的完整性并保持平稳运行。
本文所述的交换方法可以考虑特定MPS的资源限制。这种限制可以包括每个PE可用的指令存储器的量、每个PE可用的数据存储器的量、PE之间的通信带宽、PE与外部存储器之间的通信带宽,等等。例如,其中PE具有有限指令存储器的MPS可以要求新指令从外部储存器被移入指令存储器,以便初始化新的应用。因此,该交换方法可以对资源有限的MPS敏感。如下面详细描述的,该交换方法可以使第一应用(或第一应用集合)能够被安全地停止并且其处理资源被释放以作他用,并且还使得第二应用(或第二应用集合)能够快速且安全地开始在可用的处理资源上运行。
在交换过程期间,在嵌入式系统中执行的其它应用可以继续操作,并且可以不知道正在执行交换。此外,被换入或换出的应用可以自己不“知道交换”。换句话说,可交换应用可以不需要被特别构造。这可以有利地使可交换应用容易构造,例如,通过按常规方式作为普通应用来编写或开发它们,而无需包括特殊程序逻辑来实现交换。实现交换的程序代码可以在可交换应用本身外部的其它部件中实现。
图1A-3B嵌入式系统中动态可重新配置的MPS的例子
图1A-3B示出了可重新配置的MPS的几个例子,例如,其中MPS被配置为根据本文所述的技术动态地换入和换出应用。每个MPS可以是在设备中操作的嵌入式系统的一部分,以执行实时操作。应当注意的是,图1A-3B仅仅是例子,并且各种其它类型的嵌入式系统当中任何一种都可以使用本文所述的方法。
图1A示出了摄像机201,并且图1B示出了可被包括在摄像机201中或耦合到其的嵌入式系统202。如图2B中所示,嵌入式系统202包括从摄像机201接收视频信号并将其传递给MPS203的相机链路接口204。在这个例子中,MPS203包括基本系统208,该基本系统208接收原始视频流并执行基本处理,诸如去马赛克和色彩空间转换,以便将原始相机数据变换成可被下游过滤器消费的数据。基本系统208可以将变换后的数据提供给一个或多个图像处理应用209。图像处理应用可以包括至少两个应用,其中每个应用被配置为过滤或另外地以各种方式当中任何一种处理视频数据。图像处理应用可被动态地换入和换出,以改变视频信号被处理的方式。作为一个例子,系统可以最初执行对信号执行边缘过滤算法的边缘过滤器应用。响应于用户输入或其它条件,边缘过滤器应用可以与对信号执行中值过滤算法的中值过滤器应用动态地交换。当前图像处理应用的结果可以与由基本系统208产生的原始数据通过“组合视频流”方框207组合,例如,在分割屏幕显示器中。然后,组合的信号可以经由数字视频接口(DVI)方框206被传递到耦合到显示设备的DVI接口210。因此,交换边缘过滤器应用和中值过滤器应用的结果可以实时地在显示设备上查看。视频流也可以被传递到通用处理器(GPP)211。在GPP211上执行的程序还可以向MPS提供控制信号,以指示哪个过滤器应当在MPS203上执行。
图2A示出了蜂窝电话215,并且图2B和2C示出了在该电话中被使用的MPS216。在图2B中所示的MPS的配置中,MPS当前正在执行蜂窝搜索应用218。该电话使用长期演进(LTE)4G蜂窝电信无线电接口技术标准。根据LTE标准,电话首先利用蜂窝搜索应用218向本地蜂窝基站注册。一旦注册,蜂窝搜索应用218就不再被需要。因此,蜂窝搜索应用218可以被动态地用不同的应用,例如,图2C中所示的共享链路数据处理应用219,取代。前端应用217执行重新采样和上/下变频,并且在这种交换发生的时候保持在MPS上执行。如果MPS足够大(例如,100+处理器),则蜂窝搜索和共享链路数据处理应用的一部分可以在任何时候都保持被加载,例如,而不是在它们被交换时完全装载和卸载它们。
在这个例子中,用于从蜂窝搜索应用切换到共享链路数据处理应用所期望的时间间隔,以及在需要重新注册的情况下反过来的所期望的时间间隔,为4ms。如果切换太慢,则介质访问控制器221回到重新注册。蜂窝搜索应用并行地执行许多CRC计算,并且在发现真实信号时,电话锁定到那个信号上。当介质访问控制器完成注册过程并请求共享链路中的数据时隙时,存在短的间隔。介质访问控制器被设计为预测当前发送的数据,以便适当地预留时隙。通常,它预测4个子帧,或大约4毫秒,并且因此,这是用于切换到共享链路数据处理应用的期望间隔。
图3A示出了无线发送器/接收器设备230。设备230可以替代地仅仅是接收器设备,诸如无线电。图3B示出了可以由无线设备230执行的通信算法。顶部示出了该算法的发送部分231,并且底部示出了该算法的接收部分232。调制器组235执行调制算法,并且解调器组236执行解调算法。调制器组235和有可能还有算法的发送部分231的其它部分可以在使用多个调制器应用的MPS上实现。在任何给定的时间,只有一个调制器应用可以被加载并执行。MPS可以被配置为用不同的应用动态地交换当前加载的调制器应用,以改变所使用的特定调制算法。不同的解调应用可以以类似的方式被换入和换出,以动态地改变由解调器组236执行的解调算法。对理解本公开内容不必要的通信算法的部分从本描述中被省略了。
应当注意的是,图1A-3B是作为其中可以使用被配置为动态交换软件应用的MPS的设备的例子给出的。在各种实施例中,诸如本文所述的MPS可以在任何类型的设备或系统中使用。而且,被换入和换出的应用可以是任何类型的软件应用,例如,以各种方式中任何一种处理实时数据或者执行其它各种功能当中任何一种以便实现由设备或系统执行的实时操作或其它操作的应用。
图4-12示例MPS体系架构
在各种实施例中,本文所述的应用交换技术可用在各种MPS当中任何一种上。MPS可以具有任何期望的体系架构。图4-6示出了根据一种实施例的用于MPS的示例体系架构。这种MPS体系架构是在美国专利No.7,415,594中公开的HyperX体系架构的例子。这种体系架构可以适于实现具有同时运行多个应用的能力的可编程的、非常低功率、低成本的多处理器嵌入式计算机系统(在这里被体现为单个集成电路芯片)。下面对HyperXTM体系架构的描述仅仅是例子,并且各种其它MPS体系结构当中任何一种都可以根据需要被使用。
在图4中所示的实施例中,MPS10包括多个表示为方块的处理元件(PE)。MPS还包括多个表示为圆圈的数据存储器路由器(DMR)。DMR充当用于相邻的PE的支持存储器,以及通信路由器或交换机节点。DMR之间的线说明了实现互连网络(IN)的DMR到DMR通信信道或链路。DMR可以与该链路一起使用,以形成PE之间以及PE和将MPS耦合到外部设备的I/O端口之间的通信路径。在每个PE,所传送的任何信息都可以被缓存在相邻的DMR的存储器中。如本文所使用的,PE也可以被称为PE节点,并且DMR也可以被称为DMR节点。DMR在本文中也被称为“可配置的通信元件”。
在图4和5中所示的DMR之间的链路构成直线网格。但是,许多其它的连接方案也是可能的和预期的。在图5中示出的MPS连接方案中,每个PE被连接到四个邻居DMR,而每个DMR被连接到四个邻居PE以及4个邻居DMR。其它连接方案也是可以预见的,以支持更高维度的IN,诸如每个DMR使用六条DMR到DMR链路,以支持三维直线网格,或者每个DMR使用8条链路,以便除北、东、南和西方向之外还支持四个对角线方向。链路不必局限于物理上最近的邻居。
具有芯片I/O的MPS20可以在当前使用通用微处理器、DSP、FPGA或ASIC的各种系统和应用当中任何一种中使用。例如,图4和5中示出的处理系统可以在需要计算的各种类型的计算机系统、数字信号处理器(DSP)或其它设备当中任何一种中使用。
HyperX硬件架构
在HyperXTM体系架构的一种实施例中,多处理器阵列可以由基于单元的硬件架构(网)组成,其中每个单元被称为HyperSlice(超片)。硬件架构可以通过在网格上布置单元并且互连相邻的单元来形成。每个HyperSlice单元可以包括一个或多个数据存储器和路由器(DMR)以及一个或多个处理元件(PE)。
在美国专利No.7,415,594中,DMR可以被称为动态可配置通信(DCC)元件,并且PE可以被称为动态可配置处理(DCP)元件。DMR可以为其邻居PE提供支持存储器,并且为互连网络(IN)提供路由器和链路。在这种语境下的动态可配置意味着那些硬件资源(PE、DMR链路和DMR存储器)可以在应用软件运行的时候被重新分配。这可以通过将应用软件划分成更小任务和通信消息的层次结构来实现。这些任务和消息可以被指派给资源并且被同时执行(或者,如果需要的话,串行地执行)。当任务和消息完成时,它们可以被重新执行或者被其它任务和消息取代,以形成应用软件的新配置。除其它之外,“在运行时”改变配置的能力支持使得有限资源能更高效地使用并且更好地适应不断变化的外部需求的灵活性。
HyperXTM硬件架构具有独立地操作并对处理元件透明的主IN(PIN),并且可以通过支持任意通信网络拓扑的HyperSlices之间实时可编程并可修改的通信路径(可以被称为路线或路径)的集合体提供按需带宽。协调的HyperSlices组可以“在进行时(on-the-fly)”在软件的控制下被形成并重组。这种动态更改被用来评估功能的硬件的量的能力允许硬件资源的最优应用,以减轻处理瓶颈。在硬件架构的边缘,链路可以连接到专用于在存储器层次结构进一步向下的存储器类型或者用于在集成电路(IC)芯片边缘的I/O的电路。
HyperX硬件架构的互连的DMR可以跨芯片和从芯片到芯片提供最邻近、区域性和全局通信。这些通信模式当中每一种可以物理地利用DMR资源来不同地发送数据/消息,这取决于数据和软件算法需求的局部性。“快速端口”设施可以被提供,以支持数据的一个或多个字从处理器到任何网络目的地的低等待时间传输。对于块传输,DMR内的直接存储器访问(DMA)引擎可用于跨存储器和路由架构(或通信架构)管理数据的运动。对于PE之间的最邻近通信,共享存储器和寄存器的使用可以是数据运动的最高效方法。对于区域性和全局数据运动,利用路由架构(PIN)可能是最高效的方法。通信通路(或路线)可以是动态的或者是静态的。动态路线可以为数据传输设置并且在传输完成之后被推倒,以释放PIN资源,供其它路线和数据传输使用。静态路线可以在整个程序执行过程中都保持并且可以主要用于高优先级和关键通信。通信通路的物理位置和数据传输跨该通信通路的定时可以在软件程序控制之下。多条通信通路可以存在,以支持任何发送方和接收方之间的同时数据传输。
处理元件(PE)
DMR的体系架构可以允许在多处理器架构中使用不同的可互换PE来优化用于特定应用的系统。HyperX多处理器系统可以包括或异质或同质的PE阵列。PE可以是常规的处理器,或者作为替代,PE可以不符合处理器的常规定义。在一些实施例中,PE可以是充当用于某些逻辑功能的硬连线处理器的逻辑门的集合,其中,为了更高的性能、更小的面积和/或更低的功率,可编程性被折中。
如图5中所示,例如,通过在PE当中散置DMR,在诸如HyperXMPS的MPS中的PE可以利用到多个存储器的并行连接来提供。相对于隔离(即,非散置)布置,这种布置可以减少给定PE访问DMR中的存储器所需的时间和能量,并且在本文中可以被称为散置布置。
在图4的实施例中,PE与DMR之比大约为1:1。在各种其它实施例中,PE与DMR的不同比率是可能的。
HyperX处理器体系架构可以包括固有的多维度,但是可以在平面实现中被物理实现。处理器体系架构可以具有能量高效的特点并且还可以从根本上可扩展(到大阵列)并且是可靠的-代表既低功率又可靠的概念。使处理器体系架构能够实现高性能的各方面可以包括流线型处理器、存储器-网络以及灵活的IO。处理元件(PE)可以是全功能的DSP/GPP并且基于由可变宽度指令字指令集体系架构支撑的存储器到存储器(无高速缓存)体系架构,该体系结构可以动态地扩展执行管线,以维持吞吐量,同时最大化硬件资源的利用。
通信通路的设置
图4示出了HyperXTM系统的实施例,包括处理元件(PE)和数据存储器路由器(DMR)的网络。PE被示为矩形块并且DMR被示为圆圈。DMR之间的路由路径被示为点线。实心三角形示出离网通信并且粗实线示出DMR之间的活动数据通信。计算任务由其数字标识符示出并且被放在执行其的PE上。用于通信的数据变量由其名称示出并且被放在包含其的DMR上。在示出的实施例中,左上方的PE已经被指派了具有任务ID62的任务并且可以经由与PE相邻的相应DMR与其它PE或存储器通信,由通信路径变量t、w和u指出。在这个实施例中,还示出了经由标记为“x”的相邻DMR将指定为71(例如,另一个任务ID)的PE连接到离网通信路径或端口的活动通信路线。
数据存储器路由器
DMR硬件结构的示例实施例的框图在图6中示出。在所示实施例中,中央数据存储器(DM)被表示路由器的八角形环环绕。应当注意的是,所示的八角形形状仅是象征性的,并且实际形状可以不同,例如,可以是矩形。环绕DMR的是代表到其它DMR与PE的数据路径的多个双向箭头。这些双向数据路径可以利用在每一端的实际双向收发器来实现,或者被实现为一对相反定向的单向路径。
图6中路由器与数据存储器之间的单向箭头表示存储器与路由器之间的单向数据路径。这些箭头附近的小方块表示DMA引擎,即,支持从DM读出的DMA读取器(DMAR),和/或支持将数据写入DM的DMA写入器(DMAW)。DMAR引擎为存储器生成地址信号,通常跨缓冲区增加,从而读取数据,以便送出到另一DMR的链路。类似地,DMAW引擎为存储器生成地址信号,通常跨缓冲区增加,从而写入它从链路接收到的数据。每个DMA引擎比PE小得多并且使用更少的功率,因此它们对于存储器块的读和写的使用是有吸引力的。DMA引擎可以被PE写配置到DM存储器空间中相关联的配置寄存器。写到特定地址触发DMA开始递增。当DMA完成通过一块地址的递增时,它停止–除非被配置为继续循环,或者无限期地或者预定义次数的循环。
为了支持诸如图5中所示的MPS20的MPS中的高带宽端口,端口之间的连接或链路(PE到DMR或DMR到DMR)可以短(即,限定到邻居)并且由许多平行的导电迹线或“电线”或“线路”组成。在一些实施例中,链路可以由仅仅几条平行迹线、一条迹线或一个波导组成。
PE到DMR连接可以分离用于存储器地址的迹线与用于数据的迹线。用于数据的迹线可以被连接到收发器,以支持双向数据传输,或者被分离成将写数据带入存储器的一组迹线与从存储器带来读数据的另一组迹线。DMR到DMR连接可以不必具有地址线,但可以具有表示所传输数据中特殊字,诸如用于消息报头或消息终止的控制字,的线路。
所有DMR连接都可以具有用于流控制的附加线路。例如,线路可以发信号通知上游(从目的地到源)数据字的进一步前进由于在路线中存在某个其它通信路径或者目的地不能接受更多数据而被阻塞。另一条线路可以发信号通知下游(从源到目的地)有效数据已准备就绪。上游和下游信令都可以被用来指示连接到DMR——其或者是本地(相邻)DMR或全局(非相邻的)DMR——之间的链路的端部的发送器和接收器的状态。在一些MPS实施例中,节点之间的通信可以在程序员控制之下。
图7-12示出了在MPS上执行的算法的示例踪迹。为了说明的目的,该算法是故意简单和稀疏的。该算法将样本数据带到MPS上、处理数据,然后将结果送离MPS。然后,该算法重新开始并且将下一组样本数据带到网上。
在图8中,任务62从MPS外部的源读取数据并将数据存储在变量“t”和“u”中。同时,任务62组合变量“t”和“u”并且将结果写入变量“w”。同时,任务71将数据带离网并将其存储在变量“x”中。
在某个稍后的时间(图9),任务62结束读取变量“t”和“u”并且开始向任务12发送变量“w”,在那里它将被进一步处理。任务12必须一直等到变量“w”和变量“x”都可用才能开始其下一个计算任务。一旦数据就绪,任务12就从它的输入“x”和“y”计算变量“sv”(图10),其中“sv”是共享变量。
在图11中,任务5作用于共享变量“sv”,以产生变量“z”。由于“sv”是共享的,因此在任务12(在图10中)与任务5之间没有显式通信,但是存在任务之间的同步。同时,任务62和71开始从离网(offmesh)读取下一数据样本(如图8中)。
在图12中,在任务62和71继续读取下一数据样本的时候,任务5将最终结果(变量“z”)送离网。
图13-28-应用交换
MPS可以具有同时运行多个软件应用的能力。图13示出了多个应用在其上执行的MPS300的例子。为了执行应用,来自这从多个应用的指令和数据可以在MPS的不同存储器当中分布以供由与存储器关联的处理器执行。例如,用于其中一个应用的程序指令和数据可以存储在MPS的存储器的第一子集中。MPS的处理器的第一子集可以被耦合到存储器的第一子集并且可以执行用于该应用的指令和数据。类似地,用于另一应用的程序指令和数据可以存储在MPS的存储器的第二子集中以供处理器的第二子集执行,等等。
在一些实施例中,MPS的给定存储器可以与MPS的特定处理器关联或为其预留。在其它实施例中,给定的存储器可以由MPS的多于一个处理器共享。在一些实施例中,由给定处理器使用的存储器或存储器集合可以物理地位于该处理器附近,例如,使得该处理器可以直接访问存储器,而无需使用互连网络或与其它路由元件通信。
在图13中,椭圆的相对尺寸旨在说明被分配给应用的系统资源的相对量(例如,处理器和存储器的数量)。例如,应用5C由大椭圆表示,这指示这个应用比用小椭圆表示的应用5A使用更多系统处理器。而且,MPS300内的椭圆的相对位置旨在说明应用在MPS上的物理位置,例如,由每个应用使用的处理器和存储器位于其中的MPS的相应物理区域。(在这个例子中,MPS被示为具有二维布局,但在其它实施例中,MPS的处理器和存储器可以根据不同的维度数被布置,例如,1D、3D、4D,等等。)
术语“应用交换”指的是除去一个或多个应用并且用一个或多个其它应用取代它们的过程。交换可以在其它应用继续执行的时候动态地发生。例如,图14示出了在应用5E已经被换出并且应用5K已经被换入以取代其之后的MPS300。当应用5E和5K之间的交换发生时,其它应用5A、5B、5C、5D、5F、5G、5H和5J可以在MPS上继续执行。虽然应用5K被放在MPS中先前执行的应用5E所处的相同通用区域中,但是应用5K不必使用与应用5E完全相同的处理器和存储器资源。
系统也可以一次换入和/或换出多于一个应用。图15示出了其中来自图13的三个应用5E、5G、5H被两个应用5L和5J取代的例子。因此,被交换的应用的数目、形状(就物理位置而言)和大小(就所使用的处理器和存储器资源而言)不必相同。
对于为什么在各种实施例中期望从运行的MPS除去一个或多个应用并且用一个或多个其它应用取代其,存在各种原因。例如,应用程序可以执行一段时间,然后再没有什么可做很长一段时间。在这段时间里,该应用的资源可以被某个其它应用使用,由此提高整个系统的性能。另一个原因是,可能期望通过除去一个应用并用另一个应用取代其来改变的MPS的功能。例如,两个应用可以执行相同的通用功能,但是以稍微不同的途径执行。
如下面更详细描述的,应用交换可以包括动态加载和执行应用、停止正在运行的应用并且清除停止的应用的资源的操作。这些操作可以被设计为以这样一种方式被执行,使得在应用交换正在进行时,在该MPS上运行的其它应用不受干扰,因此其它应用可以继续执行其保留的正常操作。
在一些实施例中,应用交换可以由在本文被称为主任务或管理任务的特殊任务或应用进行管理。主任务可以从MPS内部或外部被触发,以启动应用交换。图16示出了其中主任务55被在MPS内部执行的应用6F触发以便启动应用交换的实施例。例如,应用6F可以包括响应于在该应用6F中发生的各种内部状态变化而触发应用交换的程序逻辑。图17示出了不同的实施例,其中主任务55被在位于MPS外部的通用处理器(GPP)260上执行系统控制器程序262触发,以启动应用交换。例如,系统控制器262可以响应于用户输入或者源自MPS外部的各种其它类型的触发器或条件当中任何一种而触发应用交换。在一些实施例中,主任务55可以在MPS外部执行。例如,图18示出了其中主任务55连同系统控制器262一起在外部GPP260上执行的实施例。
系统控制器262可以利用高级应用编程接口(API)编写。通过隐藏底层控制和通信层的细节,该API可以使系统控制器能够容易地从一个GPP移植到另一个。
主任务55可以从系统控制器262(或者从MPS中的其它应用)接收高级命令,诸如“换出应用X”或“换入应用Y”,并且,作为响应,可以启动并管理所请求的应用交换。
主任务的缺省行为可以是起动和停止应用,如由系统控制器262指示的。在一些情况下,主任务55可以与可交换应用通信以管理其执行状态。例如,主任务55可以请求可交换应用进入稳定状态,使得它可以被换出,或者主任务55可以被可交换应用通知它处于稳定状态并准备好被换出。这种通信可以通过可交换应用可以调用以便与主任务55通信的API来实现,反之亦然。
在各种实施例中,如以上所指出的,MPS可以具有不同的形状因子。在一些实施例中,MPS可以被实现为芯片上的集成电路。在一些实施例中,多个MPS芯片可以在系统中被使用。(一个或多个)芯片可以耦合到在所述(一个或多个)芯片外部的其它硬件设备,诸如一个或多个芯片外的处理器(例如,通用处理器)或者一个或多个芯片外存储器设备(例如,RAM、闪存存储器、盘驱动器,或者其它类型的存储器或存储设备),或者不属于MPS本身的一部分的其它硬件设备。在一些实施例中,在换入或换出应用时,片下存储器可以被使用,例如,将被换出的应用的程序数据保存到在MPS外部的存储器设备,或者从外部存储器设备检索被换入的应用的程序指令和/或数据。其中存储被换出的应用的信息的外部存储器设备可以是从其检索被换入的应用的信息的相同外部存储器设备,或者可以是不同的外部存储器设备。将应用的指令和数据换出到外部存储器设备和从其换入的能力对于不具有足够多内部存储器资源来存储需要在该MPS上执行的所有应用的整体的MPS会是有用的。
图19示出了根据一种实施例、在从外部存储器设备272换入应用8时所涉及的资源。在这个例子中,应用代码270可以最初被存储在耦合到MPS300(并在其外部)的随机存取存储器(RAM)设备272中。RAM设备272可以包括任何类型的RAM,诸如动态RAM(DRAM)、同步动态RAM(SDRAM)、RambusDRAM(RDRAM)、静态RAM(SRAM),等等。应用代码270可以经由输入/输出(IO)端口274从RAM设备272被加载到MPS。IO端口274可以由专用的加载器PE276控制。从IO端口274,应用代码可以经由一个或多个交换路线277被发送到与应用8关联的MPS的一个或多个内部存储器。
在其它实施例中,除RAM设备之外,应用代码270还可以从任何其它类型的外部存储器设备换入。可被用于交换的外部存储器设备的例子包括闪存存储器、磁或光存储器、盘驱动器、固态驱动器,等等。但是,如以上所指出的,在一些实施例中,系统的一个目标可以是尽可能快地执行交换。因此,用于交换的外部存储器设备的类型可以被选择为快速型存储器设备。例如,DRAM设备一般可以比闪存存储器设备或盘驱动器使交换更快地执行,并且因此在一些实施例中可以是优选的。
图20示出了也可以启用快速交换的备选实施例。在这个例子中,GPP260可以通过向MPS发送指令和数据流而将应用代码270加载到MPS中。系统控制器程序262可以控制指令和数据流。
在一些实施例中,系统控制器程序262可以在嵌入式操作系统环境中在GPP260上运行。在一些实施例中,系统控制器262可以利用开放计算语言(OpenCL)语言的子集来实现。系统控制器262可以通过芯片到芯片通信机制来与MPS通信,但是可以被实现为独立于通信机制。
系统控制器262可以直接地,诸如通过MPS芯片的串行总线(例如,经由调试访问端口(DAP)),或者通过信号端口,将命令发送到主任务55。由于在系统控制器262和主任务55之间传递的控制数据的量通常将是小的,因此通过MPS的串行总线的通信不应当显著影响交换性能。系统控制器262可以通过利用DAP端口读取数据值来从MPS取回数据。系统不要求从MPS到GPP的通信路径,但是,如果可用,可以采用。GPP与MPS之间的通信协议可以以许多不同的方式实现,这取决于GPP的能力。例如,它可以是高级协议,诸如通用串行总线(USB)或快速外围组件互连(PCIe),或者它可以是GPP总线与信号端口之间的更简单的连接。在诸如USB或PCIe的更复杂的协议中,FPGA设备可以在GPP与MPS之间被使用,以实现协议的接收侧。在一些实施例中,小的FPGA设备也可以用于更简单的GPP总线连接。
为了通信效率,在一些实施例中,主任务55可以驻留在PE上可以直接访问连接到MPS上所有其它PE和存储器的MPS的串行总线的位置。利用串行总线进行通信可以是期望的,以避免干扰在互连网络中发生的MPS中正在进行的数据通信。但是,可以使用主任务与可交换系统的其余部分之间的任何其它通信手段。在一些实施例中,特定的PE可以为主任务55预留,使得该PE不能被用于应用。而且,在一些实施例中,与PE相邻的存储器可以被预留以由主任务55用于其存储需求。
定义可交换应用的指令和数据可以存储在可从MPS访问的任何位置。如果MPS包括足够多的内部存储器资源,则所有应用都可以存储在MPS内部的本地存储器设备中。如以上所提到的,在其它实施例中,应用可以存储在一个或多个外部存储器设备上,诸如耦合到MPS的一个或多个DRAM设备,存储在GPP文件系统中并被直接流化到系统,存储在耦合到MPS的一个或多个闪存存储器设备中,等等。
应用存储器的重要参数是存储容量和可用于将指令移动到MPS上的带宽。例如,如果一个小应用被交换,则MPS内部的本地存储器有可能可以被使用。对于许多系统,内部存储器的尺寸可以是有限的并且交换速度是重要的,因此直接从GPP流化应用指令或使用附加的DRAM可以是必要的。直接从GPP流化指令在其中没有附连到系统的DRAM的硬件系统中或者在其中DRAM为已经在该系统上运行的应用支持大量数据流量的系统中会是有利的。
在其中应用指令从耦合到MPS的外部DRAM加载或者从GPP流化的情况下,I/O端口274和执行加载器任务的相邻的加载器PE276可以被保留用于应用交换并且不能被应用使用,如图19和20中所示。在一些实施例中,加载器任务可以管理流经I/O端口的应用指令和数据。例如,用于交换应用的指令和数据可以存储在连接到MPS上的IO端口的DRAM设备中,并且相邻的加载器任务可以被用来从DRAM中的正确地址拉应用指令,然后通过路由架构将指令发送到与应用的PE相关联的内部MPS存储器。
当使用用于I/O端口控制的加载器任务时,主任务可以通过将不打扰正在运行的应用的机制,例如通过MPS的串行总线,与加载器任务通信。串行总线的使用不会干扰正在运行的应用,因为它们可以使用不同的路由架构(例如,互连网络)用于其通信需求。
当换入应用时,用于应用的每个任务的指令和数据被移到MPS上适当的存储器中。在各种实施例中,对于这种运输可以使用不同的机制,例如,取决于MPS上可用的特定通信资源。在一些实施例中,指令和数据可以通过由MPS实现的高速路由架构(在本文也被称为作为互连网络)从其原始存储位置被移到适当的片上存储器。在其它实施例中,指令和数据可以通过串行总线被移到适当的片上存储器。使用高速路由架构可以比使用串行总线显著更快。
当使用路由架构时,交换系统可以定义用于交换的一系列临时“交换路线”(指令和/或数据要加载到其中的每个存储器有一条)。使用通信路由架构移动指令和数据可以要求确保交换路线不与被在MPS上执行的其它应用使用的通信路线相互作用或冲突。因此,用来加载指令的交换路线可以被精心规划,以便不与这些其它通信线路相交。
为了帮助这种规划,每条交换路线可以被分为两部分。第一部分,被称为主干路线,在用于应用的所有交换路线之间共享。主干路线从指令和数据存储位置连接到MPS上应用将驻留在其的一般附近的位置。交换路线的第二部分,被称为结束路线,可以将主干路线的端点连接到由应用所使用的目标存储器设备。因此,每条交换路线可以具有与用于应用的所有其它交换路线相同的主干部分,以及从主干路线的端点到特定存储器设备的独特的结束路线。在一些实施例中,用户还可以将应用所使用的存储器划分成多组,并且可以为每个组定义相应的主干路线。例如,如果应用非常大并且使用许多不同的存储器设备,这会是有用的。
在一些实施例中,主干路线可以通过用户输入指定,然后系统软件工具可以自动地定义每条交换路线的第二部分。使用主干路线的一个优点是用户可以谨慎地定义路线,以避开被其它正在运行的应用使用的路线。
一些系统可以具有多于一个用于路由的路由层,使得主干路线可以在必要时改变层,以避开其它活动的路线。在一些实施例中,系统软件工具可以在生成交换路线的结束部分时总是使用第一层,从而不干扰驻留在MPS的交换区域中的任何第二层路线。
如以上所指出的,移动指令通过串行总线可以比通过路由架构显著更慢。但是,在速度不重要并且减少路由架构资源的使用重要的情况下,使用串行总线来移动指令可以是期望。通过定义,主任务可以拥有串行总线,使得不能有访问其的任何冲突。在一些实施例中,当指令被存储在外部闪存存储器设备中时,或者当指令从GPP被流化到与主任务相邻的端口中时,可以使用串行总线。
在一些实施例中,MPS可以包括多个芯片,例如,其中每个芯片包括多个处理器和散置在处理器当中的多个存储器。在一些实施例中,当应用交换正关于多芯片系统被使用时,上述的专用应用交换资源可以在每个芯片上复制。应用指令储存装置可以被分成多个DRAM,或者多个指令流可以在必要时被采用。此外,系统控制器可以被设计为理解多芯片系统,例如,为了了解部件驻留的位置,以便向正确的芯片发送命令。
在一些实施例中,可交换应用可以跨系统中的多个芯片分布,但是它可以简化交换过程,以便要求每个可交换应用在仅一个芯片上运行。
在一些实施例中,如果有独立数据流的多个源可让系统使用,则多个应用可以同时被交换。例如,图21示出了其中两个应用9A和9B同时从两个不同的RAM设备272A和272B被换入的实施例。两个不同的加载器任务可以在加载PE274A和274B上执行,以便经由IO端口274A和274B同时将两个应用加载到MPS上。同时换入多个应用可以使MPS能够比如果应用一次换入一个的话更快地被重新配置。可以被同时换入或换出的应用的数量可以取决于MPS耦合到其的指令流的外部存储器设备或源的数目。例如,如果芯片的包装具有用于四个DRAM的连接,则至多四个应用可以同时被交换。
在一些实施例中,主任务55可以一次仅运行一个线程。交换过程可以被构造为使得主任务55可以管理同时运行的多个交换过程。例如,交换的最耗时部分常常将指令从DRAM或I/O端口移到应用PE的指令存储器。主任务55可以同时指示在I/O端口旁边的加载器任务开始移动指令。其它不太耗时的交换步骤可以由主任务串行完成。
多个指令流也可以被用来换入单个应用,以便更快地加载应用。例如,用于被换入的应用的指令可被存储在两个不同的外部DRAM设备中,并且两个不同的指令流可以并行地初始化应用PE,由此将加载应用的时间减半。
可交换应用的生命周期
当MPS在运行时,给定的应用可以过渡通过多个步骤,以便首先换入、然后执行、然后停止执行,然后换出。可交换应用可以经历这个过程多次。图22示出了换入和换出应用的生命周期。主任务可以负责控制步骤序列。一些步骤可以在给定的情形下以稍微不同的次序完成,或者根本不进行。
在一些情况下,可以有一次性初始化步骤,以执行在系统复位时进行的系统级功能。例如,被许多不同的可交换应用使用的I/O端口可以被初始化,或者应用数据初始化可以被写到外部DRAM。从已经复位的系统开始,“换入应用”事件可以由主任务接收,如311中所示。这个事件可以从MPS内部被接收,例如从另一个应用,或者可以作为外部信号被接收,例如从在MPS外部的GPP上执行的系统控制器被接收。
然后,主任务55可以使用于被换入的应用的变量被初始化和/或使该应用的先前状态(如果以前被保存了的话)被恢复,如313中所示。变量初始化(如果有的话)在一些实施例中可以得自用于该应用的程序代码,例如,得自C程序代码。如果用于应用的变量的任意个变量状态先前被保存(例如,得自应用的先前执行),则变量状态可以被加载。这可以将应用恢复到其保存的状态。保存的变量状态可以覆盖从应用的程序代码得出的初始化。应用变量的初始化和状态恢复可以通过在由该应用使用的一个或多个存储器中存储指派变量值的信息来进行。
如315中所示,主任务55还可以使应用的程序指令被加载到与该应用相关联的相应内部MPS存储器中(如果它们还没有被加载的话),例如,通过从一个或多个外部DRAM设备或其它外部源加载它们。在指令被加载之后,被指定执行指令的应用PE可被置于等待状态。
如317中所示,主任务55还可以处理应用的通信到在MPS中加载的一个或多个其它应用的耦合,例如,可以使应用能够开始与每个它需要与其通信的其它应用开始通信,以便执行应用的预期功能。主任务55还可以初始化由应用使用的设备或资源,诸如I/O端口、DRAM端口等等,和/或执行使应用连接到这些设备和资源所必需的任何操作。主任务55还可以初始化由应用使用的DRAM设备、DRAM内容,以及连接到I/O端口的设备(如果需要的话)。
然后,主任务55可以起动应用,如319中所示。例如,主任务55可以向每个应用PE发送唤醒信号,以便使它们开始执行来自其关联的存储器设备的相应的程序指令。一旦被起动,应用就可以继续运行(方框321),直到主任务55接收到“换出应用”事件(方框323)。在一些实施例中,应用本身可以向主任务55发送指示它已完成执行并且因此可以被换出的信号。在其它实施例中,主任务55可以从在MPS上执行的另一应用、或者从系统控制器262或其它外部源接收换出事件。
作为响应,主任务55可以停止应用的执行,如325中所示。例如,主任务55可以向应用的每个PE发送停止信号,以便使它们停止执行。在一些实施例中,该信号也可以使PE复位到已知状态。
如327中所示,主任务55可以使应用从在它被加载时之前连接到的其它应用和设备断开。这可以包括终止应用与它被耦合到的任何其它应用之间的通信通路。主任务55还可以执行关闭或复位被该应用使用的外围设备或其它资源所必需的任何操作。
如329中所示,主任务55还可以管理保存应用的状态的过程。例如,应用的所有变量的值,或者其状态需要被保存的应用的选定变量子集的值,可以从一个或多个内部MPS存储器被发送到一个或多个外部RAM设备或其它外部存储器设备以供外部存储,直到再次被需要。对应于应用的变量的寄存器的内容也可以被保存。
如331中所示,主任务55还可以执行一个或多个操作,以清理MPS的内部资源。例如,这可以包括复位由应用使用的全部内部存储器。在这个过程结束时,已经被这个应用使用的PE、存储器和路由片段将准备好用于某个其它目的。
应当注意的是,并非所有这些步骤都需要被执行,例如,这取决于特定的应用。例如,图23示出了用于只需要连接到I/O端口并且不需要与其它应用通信或者保存其在执行之间的状态的应用的简化生命周期。
为实现交换而创建的可执行部件
如图24中所示,软件工具401的集合可以为MPS提供,以生成实现本文所述的应用交换技术所需的软件代码。工具401可以包括被配置为将应用的源代码编译为可执行程序指令的源代码的编译器403,以及一个或多个过程生成模块405。过程生成模块405可以被配置为自动生成将在运行时被执行以便实现交换过程的可执行软件过程。例如,该过程可以执行,以执行应用交换中所涉及的操作,诸如加载应用的保存的状态、初始化应用使用的设备,等等。这些过程可以只根据需要被创建。例如,特定的应用可以不保存或恢复其状态,因此用于这些操作的对应过程在这种情况下可以不被创建。一些创建的过程可以由应用任务执行,一些由加载器任务(如果存在的话)执行,并且一些由主任务执行。执行每个过程的任务可以基于与被访问的资源的接近程度和MPS的配置来确定。在一些实施例中,这些过程的整体排序由主任务管理。
根据一些实施例,执行以下操作的过程可以由过程生成模块405在运行时之前自动生成,然后在运行时由加载器任务执行:初始化从应用的底层程序代码得出的变量值;加载应用的可执行程序指令;以及加载应用的保存的状态。
根据一些实施例,执行以下操作的过程可以由过程生成模块405在运行时之前自动生成,然后在运行时由应用任务执行:初始化I/O和DRAM端口;初始化DRAM控制器和外围I/O设备(这些DRAM和I/O被应用使用并且不用于交换);以及关闭外围I/O设备。
根据一些实施例,执行以下操作的过程可以由过程生成模块405在运行时之前自动生成,然后在运行时由主任务执行:将应用耦合到邻居应用;起动应用(使PE退出等待状态);停止应用;解耦该应用与邻居应用;将应用的状态保存到DRAM;以及清理内部MPS存储器和路由架构。
可交换应用的布局和开发
在一些实施例中,在MPS上执行的应用可以被分成两个集合。一个应用集合被称为基本系统。基本系统包括一个或多个不可交换应用,例如,保持被加载并且在MPS运行时执行的应用。另一集合是可以被动态换入和换出的可交换应用的集合。在MPS运行的任何时候,驻留在MPS上的可交换和不可交换应用的组合能够互不干扰地操作。这种互不干扰的应用集合被称为合法配置。在MPS上具有给定布局和位置的可交换应用被称为应用实例。同一可交换应用的不同布局或位置是不同的应用实例,因为相同的交换代码不能被用于两者。例如,应用的一个实例可以被部署在MPS的一个区域上并且使用MPS的存储器与PE的一个子集,并且应用的另一个实例可以被部署在MPS的另一区域上并且使用MPS的存储器与PE的不同子集。可交换代码可能需要特定于每个实例,例如,以便将应用的指令加载到正确的存储器中、与正确的PE通信以起动其运行,等等。
可交换MPS系统可以被看作是当交换事件发生时从一种合法配置过渡到另一种合法配置的系统。交换过程造成从一种合法配置到另一种的过渡。这种交换过程可以包括换入一个或多个应用并且换出一个或多个其它应用、添加一个或多个应用或将其换入MPS(例如,在不换出另一个应用的情况下),以及从MPS除去或换出一个或多个应用(例如,在不换入另一个应用的情况下)。图25示出了MPS300的例子,其中四个应用410A-410D被部署在MPS的四个相应区域上,如由左侧的合法配置A示出的。在MPS运行时的一些点上,第五个应用410E可以被动态添加,从而导致过渡到右侧所示的新合法配置B。
每个交换过程应当被实现为不干扰基本系统或交换过程中不涉及的其它可交换应用。图26示出了可以在系统的开发阶段中被用来构造相互不干扰的应用集合(合法配置)的开发工作流。
每个应用可以被开发和验证(方框412)。开发和验证应用可以包括创建应用代码、以应用单元(applicationcell)的形式将应用打包、为应用构造实例化应用单元的测试台并赋予它定位和路由,以及利用该测试台验证应用单元。
包括每种合法配置的应用集合可以被定义。该合法配置的集合及其过渡可以被规划(方框414)。
用于每个应用实例的物理定位可以被定义(方框416)。在应用的周界上接界(在任何合法的配置中)的所有其它应用实例可以被识别。应用的定位和路由可以被定义,以避免接界的应用。在一些实施例中,相邻的应用不能共享MPS的任何内部存储器,因为共享存储器中的存储器冲突会对应用造成定时问题。而且,由应用使用的内部存储器可以被应用被交换时复位。
如以上所讨论的,如果MPS中的内部存储器是有限的,使得它无法存储用于多个应用的指令,则指令将经由交换路线从MPS外面被移入MPS。应用的交换应当被定义为不干扰接界应用。定义交换路线可以包括定义从指令源到应用实例的大致附近的主干路线,使得主干路线不干扰接界应用。用于应用的每条交换路线可以使用主干路线作为交换路线的第一部分。然后,交换路线可以从主干线路线的末端被分支到由应用使用的相应的内部存储器。主干路线可以被定义为在该应用实例驻留在其中的每种合法配置中都不干扰它接界应用。图27示出了其中多条交换路线正在被用来换入应用440D的例子。每条交换路线的开始部分是源自I/O端口437的主干部分433(由粗线指示)。交换路线的结束部分435(由虚线指示)从主干路线的结束点分支并继续到位于应用440D部署在其上的MPS的区域中的个别存储器。在各种实施例中,可以使用任何数量的交换路线来加载用于应用的程序指令,例如,这取决于多少PE和存储器被应用使用。
再次参照图26,该开发工作流还可以包括检查用于合法配置的组成应用实例的布局,以确保相应的应用布局彼此兼容。为了检查给定的合法配置,实例化用于该配置的所有应用单元的顶层测试台可以被创建。用于每个应用单元以及用于应用单元和I/O之间的连接的定位和路线可以被提供。组合的应用单元集合的定位和路线可以被检查,以确保关于物理资源没有冲突。在一些实施例中,整个配置的行为可以通过模拟该配置和测试台来验证。
可交换应用之间的通信
如上所述,换入或换出应用可以包括耦合或解耦该应用与在MPS上执行的一个或多个其它应用之间(或者该应用与一个或多个物理端口或外围设备之间)的通信。通信可以通过MPS的路由架构发生。当换出应用时,该应用的通信的终止可能需要被谨慎处理,以使路由架构不会处于不可用状态。例如,在一些实施例中,如果可交换应用在向另一应用发送数据块的时候被粗鲁地终止,则现有的路线一直到系统被复位之前都可能不能容易地被再次重用。
在一些实施例中,在MPS上执行的应用可以通过经由缓冲存储器设备向彼此传递数据来通信。在一些实施例中,每个缓冲存储器设备可以被包括在特殊类型的应用单元中,在本文中被称为“隔离器单元(isolatorcell)”。在一些实施例中,隔离器单元可以具有一个输入和一个输出。隔离器单元可以缓冲进入的数据,然后将其拷贝到输出。隔离器单元的使用可以为主任务提供以可靠和一致的方式中断和恢复活动应用之间的连接的方式。MPS可以包含许多隔离器单元。图28示出了其中可交换应用460A通过经由隔离器单元464A向另一可交换应用460B传递数据来与另一可交换应用460B通信的例子。可交换应用460A还通过经由另一隔离器单元464B传递数据来与不可交换应用462通信。
隔离器单元可以被设计为使得主任务可以通过串行总线向隔离器单元发送命令,以使隔离器单元中断两个连接的应用之间的连接,来准备换出其中一个应用。在应用被换出并且新应用被换入之后,该新应用可以连接到隔离器,以恢复系统中的数据流。
当隔离器单元中断应用之间的连接时,不同的操作模式是可能的。根据一些实施例,当位于隔离器单元的下游(接收)侧的应用被换出时,隔离器单元的缺省行为是,一旦连接被中断,就停止从发送应用接受数据。任何进入的数据都可以在路由架构中备份并最终导致发送应用暂停。以备选方式,隔离器单元可以继续接受新的数据包并且简单地重写隔离器单元的存储器缓冲区中的数据包。
根据一些实施例,当位于隔离器单元的上游(发送)侧的应用被换出时,隔离器单元的缺省行为是,一旦没有更多进入的数据,就停止向接收应用转发数据。以备选方式,通过一遍又一遍地持续发送隔离器单元的存储器缓冲区中的现有数据,隔离器单元可以继续向接收应用发送数据。例如,有时候可能期望保持数据流动,使得下游应用将不会进入不良状态或锁定。
如果在任何应用在MPS上运行的时候隔离器单元总是存在,则可以简化交换方法。如果每个隔离器单元在每种合法配置中确切相同的位置存在,这可以是最简单的。利用固定位置可以允许使用隔离器单元的可交换应用具有连接到的可靠物理位置,并且可以为主任务提供与隔离器单元通信的可靠位置。
在更复杂的实现中,隔离器单元可以被允许不在每种合法配置中都存在。例如,如果其上游和下游应用都被换出并且被换入的(一个或多个)新应用不使用该隔离器单元或者在不同位置使用其,则隔离器可被移除(或移动)。
在一些情况下,突然停止应用之间的数据流可能会产生问题。例如,被传输的数据可以包括具有某个结构的数据元素。如果应用之间的通信在传输给定数据元素的中间被切断,则接收应用会接收到数据元素的一部分并且可能不知道如何处理该部分数据元素。为了克服这个问题,在一些实施例中,应用之间的隔离器单元可以对数据元素具有内置的知识并且可以确保通信不会在发送数据元素的中间被切断。
例如,考虑其中可交换应用向另一应用发送视频数据的情况。视频数据的每一帧可以具有从报头开始的结构。报头可以指定帧的尺寸。报头之后可以是一系列的行和行终止,之后是脚注或尾部。所有的视频帧可以被预期具有相同的帧结构。因此,接收应用可能不能处理部分帧。隔离器单元可以被增强,以拥有对视频帧结构的知识,使得它理解它从发送应用传递到接收应用的数据。当隔离器单元在一帧传输正在进行的时候接收到隔离两个应用的命令时,它不会立即终止该帧的传输,而是可以继续传输,直到该帧的其余部分被发送完。这可以防止接收应用只接收到部分帧。
当新应用被换入时,通过配置MPS中的一个或多个隔离器单元,该新应用可以被耦合到它与其通信的(一个或多个)应用。例如,如果新应用与和被换出的旧应用相同的(一个或多个)其它应用通信,则新应用可以通过控制在解耦旧应用与(一个或多个)其它应用时所涉及的相同的一个或多个隔离器单元而被耦合到这些(一个或多个)其它应用。
例如,旧应用可以已经在给定隔离器单元的下游侧,并且当旧应用被换出时隔离器单元可以已经被停止从发送应用接受数据。当新应用被换入时,隔离器单元可以被放回接受数据的模式。因此,当起动新应用的执行时,由发送应用发送的数据现在可以被发送到新应用,而不是先前从发送应用接收数据的旧应用。
作为另一个例子,旧应用可以已经在给定的隔离器单元的上游侧,并且当旧应用被换出时隔离器单元可以已经被停止向接收应用转发数据。当新应用被换入时,隔离器单元可以被放回转发数据的模式。因此,当起动新应用的执行时,接收应用现在可以从新应用,而不是先前向接收应用发送数据的旧应用,接收数据。
应当注意的是,新应用还可以和与旧应用与其通信的不同的一组一个或多个应用进行通信。因此,在一些实施例中,一组不同的隔离器单元可以被配置为将新应用耦合到与用于旧应用的通信不同的其相应的通信应用。
无隔离器单元的可靠通信
隔离器单元在应用换入和换出的定时不被可靠已知的系统中特别有用。采用隔离器单元可以允许中断和杀死要被可靠执行的通信并且保持系统处于已知的良好状态。
但是,不使用隔离器单元的其它实施例也可以考虑。例如,在一些实施例中,应用可以被设计为可靠地清理其外部通信。清理可以与合作伙伴上游或下游应用一致地完成。应用可以在至少两种情况下开始清理它们的通信,例如,当应用已完成其计算时,以及当应用已经被命令过渡到稳定状态并清理其自己时。
在一些实施例中,当主任务向应用发送命令时,应用和主任务之间的通信机制可以是使用每个PE中的一个或多个邮箱寄存器的简单轮询风格API。这可能是有利的,因为它不要求所有PE都具有直接通信回主任务的手段。作为例子,API可以具有以下两个函数,这两个函数可以被可交换应用调用:
MPX_ready_to_swap(...)-应用在清理其(一个或多个)外部通信之后已进入稳定状态并且通知主任务它已准备好交换;和
MPX_check_for_stop_request(...)-应用检查主任务是否已请求其停止计算并进入稳定状态。
这个API可以被使用的典型方式是主任务可以通过向邮箱寄存器发送值来请求应用停止。应用可以通过轮询来接收停止请求,例如,通过在其执行过程中各个不同时间调用MPX_check_for_stop_request(...)函数。响应于停止请求,应用可以停止并清理其外部通信。然后,应用可以通过调用MPX_ready_to_swap(...)函数来通知主任务它已经准备好换出,该函数在邮箱寄存器中设定值。主任务可以通过轮询邮箱寄存器来接收这个通知。
如果应用已独立完成其计算,则该API也可以被使用。例如,应用可以停止并清理其外部通信。然后,应用可以通过调用MPX_ready_to_swap(...)函数来通知主任务它已经准备好交换。主任务可以通过轮询邮箱寄存器来接收通知。
系统控制器
在一些实施例中,系统控制器程序可以提供应用交换的系统级控制。系统控制器可以在MPS外部的处理器上运行。在示例性实现中,系统控制器在外部通用处理器上运行并且向主任务传送命令,然后主任务执行这些命令。
在一些实施例中,系统控制器可以是运行在GPP上并利用开放计算语言(OpenCL)主机控制API的子集的应用。该API子集提供用于建模附连的硬件系统、起动和停止应用以及将数据移到和移出嵌入式存储器(例如,附连到系统的DRAM)的功能。
OpenCL子集的实现可以被设计为跨不同的GPP可移植,使得为ARM处理器编写的系统控制器程序可以通过简单地重新编译被移植到x86处理器。要做到这一点,API应当在两层中实现:通用API层和数据通信层。数据通信层可以专用于特定的硬件平台并且将被移植到任何新的硬件平台。一个OpenCL能力是对在附连的计算引擎上执行本机程序的支持。
实现可交换系统
一旦可交换系统的逻辑和物理设计和验证已经完成,在目标系统上执行该设计所必需的目标和信息文件就可以被创建。在一些实施例中,这可以如下进行:1)创建并验证基本系统。2)创建并验证所有的可交换应用。3)创建并验证所有的合法配置。4)为包括隔离器单元的基本系统创建数据库和对象文件。5)为每种合法配置中的每个独特的应用实例创建可执行交换过程。这可以对每种合法配置重复,直到已经为所有的应用实例创建了可交换对象文件。6)为应用的整个集合生成主数据库。这可以允许系统控制器和主任务在运行时管理该应用集合。7)在GPP上编译系统控制器程序。
运行时初始化
运行可交换系统可以利用系统控制器开始。系统控制器可以首先加载主任务和加载器任务(如果需要的话)。然后,主任务可以完成以下:1)运行预引导初始化,以初始化诸如DDR控制器和IO控制器之类的所有资源。2)如果需要的话,将用于可交换应用的对象文件传输到(一个或多个)DRAM。3)加载包括所有不可交换应用和隔离器单元的基本系统。4)等待来自系统控制器的指令。在运行时,系统控制器可以通过向主任务发送命令来控制运行系统的状态。
验证包含可交换应用的系统
通过确保它们对刺激正确地作出响应,各个应用可以独立地以通常的方式被验证。彼此通信的应用应当一起被验证,例如,利用上述开发工作流。所有合法配置的验证应当利用用于验证完整系统的正常的软件或硬件技术来进行。
单个应用的交换过程的验证也可以利用软件模拟器来完成。这可以通过定义可交换系统来实现,该系统仅仅由单个应用和与其相关联的测试台(作为不可交换应用)组成。然后,包括主任务和加载器任务的整个交换过程可以在仿真环境中被执行和观察。为了应用交换机制的验证,在GPP上运行的系统控制器不需要被模拟。来自系统控制器的命令可以经由在模拟期间流入I/O端口(或DAP端口)的数据文件或者通过创建可以静态地或交互地仿真系统控制器的时序行为的外部程序来进行仿真。
调试包含可交换应用的系统
多个不同的调试任务可以为复杂的多应用交换系统执行。它们可以包括:
1.各个应用可以在应用创建和验证过程期间被独立地正常调试。
2.用于个别应用的交换过程可以利用上述过程进行调试。然后,整个交换过程可以在包括主任务中和加载器任务中的所有代码的模拟(或硬件调试)环境中被执行和调试。
3.调试各个配置可以通过为所有活动的应用定义顶级配置测试台并根据需要使用调试命令来进行。由于稳定的配置被调试,因此模拟器不需要执行任何应用交换步骤并且可以只运行应用。
4.为了调试完整的可交换系统,调试器可以加载包括基本系统、隔离器单元和应用实例的完整项目。在调试会话期间的任何时候,模拟器(或系统在硬件上的执行)可以跟踪哪些应用实例被换入,或者处于换入或换出的过程中。这种信息可以被显示给用户,使得在运行的应用是可调试的并且不在运行的应用是可见的但不可调试。这种信息也可以被用来收集并显示系统统计信息,并显示系统级交换行为。
当调试可交换应用的系统时,调试器可以有用于调试命令的行为的两种选择(例如,断点和单步)。第一个选项可以把整个设计看作单个系统,并且调试命令可以应用到设计中所有活动的应用(例如,一个断点停止所有的应用)。第二个选项可以允许每个应用被独立地调试。在这种情况下,一个断点只停止它驻留在其中的应用。此外,调试器将提供在当前被换出的应用中设置断点的能力。以这种方式,当它被换入时,断点立即处于活动状态。
为了连同MPS一起调试GPP上的系统控制器,调试器可以提供基于与系统开发环境并发运行的基于Eclipse的开发环境。这两个开发环境可以被链接,使得它们共享调试事件。例如,GPP中的断点可以被定义为也中断在MPS上运行的应用。作为替代,如果用户不想调试实际的系统控制器,则调试器可以提供GPP仿真器,该仿真器可以交互地或编程地向正在运行的系统提供系统控制器命令流。
在各种实施例中,计算机可读存储介质可以存储可由MPS的处理器和/或一个或多个外部处理器执行的程序指令,以实现上述各种功能,诸如交换软件应用中所涉及的功能。一般而言,计算机可读存储介质可以包括任何指令集,当指令被执行时,实现本文所述的功能的一部分或全部。一般而言,计算机可读存储介质可以包括在使用期间可由计算机访问以便向计算机系统提供指令和/或数据的任何存储介质。例如,计算机可读存储介质可以包括存储介质,诸如磁或光介质,例如,盘(固定的或可移动的)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或Blu-Ray。存储介质还可以包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、RambusDRAM(RDRAM)、静态RAM(SRAM),等等)、ROM、闪存存储器、可经由诸如通用串行总线(USB)接口的外围接口访问的非易失性存储器(例如,闪存存储器)、闪速存储器接口(FMI)、串行外设接口(SPI),等等。存储介质可以包括微机电系统(MEMS),以及可经由诸如网络和/或无线链路的通信介质访问的存储介质。载波介质可以包括计算机可访问的存储介质以及诸如有线或无线传输的传输介质。
虽然本发明的系统和方法已结合优选实施例进行了描述,但并不意在限定到本文所阐述的具体形式,相反,它意在覆盖可以合理地包括在如由所附权利要求定义的本发明的精神和范围内的此类备选方案、修改和等同物。
Claims (40)
1.一种用于在多处理器系统中执行应用交换的方法,所述方法包括:
在多处理器系统上加载多个应用,其中多处理器系统包括多个处理器和散置在处理器当中的多个存储器,其中所述加载包括在多个存储器中的不同的相应存储器当中分布来自多个应用的指令和数据以供相关的处理器执行;
在多处理器系统上执行所述多个应用,其中所述多个应用一起执行并且彼此通信以执行实时操作,其中实时操作执行关于实时数据的输入或输出当中至少其一,其中所述多个应用处理实时数据,其中所述多个应用包括第一应用和多个其它应用;
用第二应用交换第一应用,其中第二应用不是先前已被加载在多处理器系统上并执行的多个应用之一,其中所述交换是在不停止多个其它应用的情况下执行的,其中所述多个其它应用在所述交换期间继续执行以执行实时操作和处理实时数据;
其中,在所述交换之后,所述多个其它应用继续与第二应用一起执行,并且其中所述多个其它应用的至少一个子集与第二应用通信以执行实时操作和处理实时数据。
2.如权利要求1所述的方法,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换包括:
在多个处理器的第一子集上停止第一应用;
保存第一应用的状态;及
将第二应用加载到与多个处理器的第一子集相关联的存储器中。
3.如权利要求2所述的方法,
其中所述交换还包括:
解耦第一应用与所述其它应用当中一个或多个的通信。
4.如权利要求3所述的方法,
其中一个或多个第一缓冲存储器耦合在多个处理器的第一子集与多个处理器的其它子集之间;
其中所述解耦第一应用的通信包括控制一个或多个第一缓冲存储器启用所述解耦。
5.如权利要求3所述的方法,
其中所述交换还包括:
在所述加载第二应用之后,耦合第二应用与所述其它应用当中一个或多个的通信。
6.如权利要求3所述的方法,
其中所述交换还包括:
在换入第二应用之前,复位多个处理器的第一子集以将多个处理器的第一子集置于已知状态。
7.如权利要求1所述的方法,
其中所述多个其它应用不知道交换在发生。
8.如权利要求1所述的方法,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换还包括:
解耦第一应用与一个或多个外部资源,其中外部资源在多处理器系统的外部;
在多个处理器的第一子集上停止第一应用;
将第二应用加载到与多个处理器的第一子集关联的存储器中;及
在所述加载第二应用之后,将第二应用耦合到所述外部资源。
9.如权利要求1所述的方法,
其中多处理器系统包括散置在多个处理器的至少一个子集当中的多个缓冲存储器;
其中所述交换包括在所述交换期间更改由第一缓冲存储器执行的、到第一应用或来自第一应用当中至少其一的通信。
10.如权利要求9所述的方法,
其中第一应用在第一缓冲存储器的下游侧,其中所述更改包括在所述交换期间停止第一缓冲存储器从发送应用接受数据。
11.如权利要求10所述的方法,
其中所述更改还包括发送应用响应于第一缓冲存储器停止从发送应用接受数据而暂停。
12.如权利要求9所述的方法,
其中第一应用在第一缓冲存储器的下游侧,其中所述更改包括配置第一缓冲存储器在所述交换期间继续从发送应用接受数据并且重写先前存储且未发送的数据。
13.如权利要求9所述的方法,
其中第一应用在第一缓冲存储器的上游侧,其中所述更改包括在所述交换期间停止第一缓冲存储器向接收应用转发数据。
14.如权利要求13所述的方法,
其中所述更改包括:一旦没有来自第一应用的更多进入的数据,就停止第一缓冲存储器向接收应用转发数据。
15.如权利要求9所述的方法,
其中第一应用在第一缓冲存储器的上游侧,其中所述更改包括配置第一缓冲存储器在所述交换期间重复地将其数据发送到接收应用两次或更多次。
16.如权利要求1所述的方法,
其中多处理器系统包括散置在多个处理器的至少一个子集当中的多个缓冲存储器,其中,在所述交换之前,第一应用经由第一缓冲存储器传送结构化数据元素,其中每个数据元素具有开始边界和结束边界;
其中所述交换包括:
在第一数据元素的传输已被启动之后,第一缓冲存储器接收停止数据通信的请求;及
第一缓冲存储器继续第一数据元素的传输,直到第一数据元素的结束边界。
17.如权利要求1所述的方法,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换包括将第二应用从外部存储器设备加载到与多个处理器的第一子集关联的存储器中。
18.如权利要求1所述的方法,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换包括将第二应用从由多处理器系统外部的外部处理器发送的指令流加载到与多个处理器的第一子集关联的存储器中。
19.如权利要求1所述的方法,
其中所述交换包括同时用多个第二应用交换第一应用,其中多个第二应用从不同的源存储器设备被同时加载到多处理器系统中。
20.如权利要求1所述的方法,
其中所述交换包括将第二应用加载到两个或更多个存储器中,其中所述加载包括沿两条或更多条交换路线通过多处理器系统发送第二应用的程序指令,其中每条交换路线与所述两个或更多个存储器之一相关联。
21.如权利要求20所述的方法,
其中所述两条或更多条交换路线共享公共的第一部分,其中第一部分包括从多处理器系统的I/O端口到多处理器系统中的端点的路线。
22.如权利要求1所述的方法,
其中所述交换包括响应于从在多处理器系统上执行的所述其它应用之一接收信息而换出第一应用,其中所述信息指示第一应用应当被换出。
23.如权利要求1所述的方法,
其中所述交换包括响应于接收到指示第一应用应当被换出的外部信号而换出第一应用,其中所述外部信号是从多处理器系统外部接收的。
24.如权利要求23所述的方法,
其中外部信号是从在多处理器系统外部的处理器上执行的系统控制器程序接收的。
25.如权利要求1所述的方法,还包括:
在多处理器系统上连同多个应用一起执行管理任务,其中管理任务在多处理器系统的一个或多个处理器上执行,其中管理任务被配置为管理所述用第二应用交换第一应用。
26.如权利要求1所述的方法,
其中第二应用包括多个可执行任务,其中所述用第二应用交换第一应用包括配置每个所述任务由多处理器系统的不同处理器执行。
27.如权利要求1所述的方法,
其中所述用第二应用交换第一应用包括同时从多处理器系统外部的两个或更多个源存储器设备向多处理器系统发送两个或更多个指令流,其中每个指令流包括第二应用的程序指令。
28.一种存储程序指令的非临时性计算机可读存储介质,其中程序指令能由多处理器系统执行以:
在多处理器系统上加载多个应用,其中多处理器系统包括多个处理器和散置在处理器当中的多个存储器,其中所述加载包括在多个存储器中的不同的相应存储器当中分布来自多个应用的指令和数据以供相关的处理器执行;
启动所述多个应用在多处理器系统上的执行,其中所述多个应用一起执行并且彼此通信以执行实时操作,其中实时操作执行关于实时数据的输入或输出当中至少其一,其中多个应用处理实时数据,其中所述多个应用包括第一应用和多个其它应用;
用第二应用交换第一应用,其中第二应用不是先前已被加载在多处理器系统上并执行的多个应用之一,其中所述交换是在不停止所述多个其它应用的情况下执行的,其中所述多个其它应用在所述交换期间继续执行以执行实时操作和处理实时数据;
其中,在所述交换之后,所述多个其它应用继续与第二应用一起执行,并且其中所述多个其它应用的至少一个子集与第二应用通信以执行实时操作和处理实时数据。
29.如权利要求28所述的非临时性计算机可读存储介质,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换包括:
在多个处理器的第一子集上停止第一应用;
保存第一应用的状态;及
将第二应用加载到与多个处理器的第一子集相关联的存储器中。
30.如权利要求29所述的非临时性计算机可读存储介质,
其中所述交换还包括:
解耦第一应用与所述其它应用当中一个或多个的通信。
31.如权利要求29所述的非临时性计算机可读存储介质,
其中所述交换还包括:
在所述加载第二应用之后,耦合第二应用与所述其它应用当中一个或多个的通信。
32.如权利要求28所述的非临时性计算机可读存储介质,
其中多处理器系统包括散置在多个处理器的至少一个子集当中的多个缓冲存储器;
其中所述交换包括在所述交换期间更改由第一缓冲存储器执行的、到第一应用或来自第一应用当中至少其一的通信。
33.如权利要求28所述的非临时性计算机可读存储介质,
其中,在所述交换之前,第一应用在多个处理器的第一子集上执行;
其中所述交换包括将第二应用从外部存储器设备加载到与多个处理器的第一子集关联的存储器中。
34.一种多处理器系统,包括:
多个处理器;
散置在处理器当中的多个存储器;
通信架构,所述通信架构互连多个处理器和散置在处理器当中的多个存储器,其中所述通信架构包括散置在多个处理器的至少一个子集当中的多个缓冲存储器;
其中所述多个缓冲存储器能被配置为在多处理器系统中执行的应用之间传送数据;
其中,在所述多个应用在多处理器系统上执行以执行包括实时数据的接收和/或发送以及实时数据的处理的实时操作期间,所述多个缓冲存储器能被配置为在第一应用与第二应用交换期间中断和恢复活动应用之间的连接。
35.如权利要求34所述的多处理器系统,还包括:
耦合在多个处理器之间的多个数据存储器路由器(DMR),其中DMR包括散置在处理器当中的多个存储器。
36.如权利要求34所述的多处理器系统,
其中第一应用在第一缓冲存储器的下游侧,其中第一缓冲存储器能被配置为在所述交换期间停止从发送应用接受数据。
37.如权利要求34所述的多处理器系统,
其中第一应用在第一缓冲存储器的下游侧,其中第一缓冲存储器能被配置为在所述交换期间继续从发送应用接受数据并且重写之前存储且未发送的数据。
38.如权利要求34所述的多处理器系统,
其中第一应用在第一缓冲存储器的上游侧,其中第一缓冲存储器能被配置为在所述交换期间停止向接收应用转发数据。
39.如权利要求34所述的多处理器系统,
其中第一应用在第一缓冲存储器的上游侧,其中第一缓冲存储器能被配置为在所述交换期间重复地向接收应用发送其数据两次或更多次。
40.如权利要求34所述的多处理器系统,
其中,在所述交换之前,第一应用经由第一缓冲存储器传送结构化数据元素,其中每个数据元素具有开始边界和结束边界;
其中响应于所述交换的启动,第一缓冲存储器能被配置为:
在第一数据元素的传输被启动之后,接收停止数据通信的请求;及
继续第一数据元素的传输,直到第一数据元素的结束边界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910513077.1A CN110083440B (zh) | 2013-05-17 | 2013-05-21 | 多处理器嵌入式系统上应用的动态重新配置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/896,577 | 2013-05-17 | ||
US13/896,577 US9195575B2 (en) | 2013-05-17 | 2013-05-17 | Dynamic reconfiguration of applications on a multi-processor embedded system |
PCT/US2013/041942 WO2014185933A1 (en) | 2013-05-17 | 2013-05-21 | Dynamic reconfiguration of applications on a multi-processor embedded system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910513077.1A Division CN110083440B (zh) | 2013-05-17 | 2013-05-21 | 多处理器嵌入式系统上应用的动态重新配置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105359098A true CN105359098A (zh) | 2016-02-24 |
CN105359098B CN105359098B (zh) | 2019-07-02 |
Family
ID=48576563
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077900.XA Active CN105359098B (zh) | 2013-05-17 | 2013-05-21 | 用于在多处理器系统中执行应用交换的方法、介质和系统 |
CN201910513077.1A Active CN110083440B (zh) | 2013-05-17 | 2013-05-21 | 多处理器嵌入式系统上应用的动态重新配置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910513077.1A Active CN110083440B (zh) | 2013-05-17 | 2013-05-21 | 多处理器嵌入式系统上应用的动态重新配置 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9195575B2 (zh) |
EP (4) | EP3537295A3 (zh) |
JP (4) | JP6228294B2 (zh) |
CN (2) | CN105359098B (zh) |
WO (1) | WO2014185933A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105785856A (zh) * | 2016-02-26 | 2016-07-20 | 西安电子科技大学 | 基于弹载应用的程序动态分段加载装置和方法 |
CN113785280A (zh) * | 2019-03-27 | 2021-12-10 | 图核有限公司 | 环形计算机网络上的嵌入环 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102165460B1 (ko) * | 2013-11-27 | 2020-10-14 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 메모리 관리 방법 |
US8990793B1 (en) * | 2013-12-05 | 2015-03-24 | Google Inc. | Updating an operating system |
US9690894B1 (en) * | 2015-11-02 | 2017-06-27 | Altera Corporation | Safety features for high level design |
US9928168B2 (en) | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
WO2018013651A1 (en) * | 2016-07-12 | 2018-01-18 | Proximal Systems Corporation | Apparatus, system and method for proxy coupling management |
DE102017130552B3 (de) | 2017-12-19 | 2019-03-14 | Beckhoff Automation Gmbh | Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung |
CN115833874A (zh) * | 2019-02-04 | 2023-03-21 | 相干逻辑公司 | 用于执行虚拟分段的方法以及有线通信设备 |
US11488650B2 (en) * | 2020-04-06 | 2022-11-01 | Memryx Incorporated | Memory processing unit architecture |
US11165846B2 (en) * | 2019-06-21 | 2021-11-02 | International Business Machines Corporation | Dynamically converting static and dynamic connections in a streaming application |
CN110362362A (zh) * | 2019-07-24 | 2019-10-22 | 北京明略软件系统有限公司 | 任务调度方法及装置、存储介质、电子装置 |
KR102322727B1 (ko) * | 2019-07-29 | 2021-11-05 | 에스케이하이닉스 주식회사 | 데이터 스왑을 위한 메모리 시스템 및 그 동작방법 |
CN110457107B (zh) * | 2019-08-09 | 2021-01-15 | 珠海格力电器股份有限公司 | 组态软件操作指令管理方法、装置和系统 |
CN110569979B (zh) * | 2019-09-09 | 2022-09-06 | 中国科学技术大学 | 面向嘈杂中型量子设备的逻辑-物理比特重映射方法 |
DE102019219464B3 (de) | 2019-12-12 | 2021-05-12 | Volkswagen Aktiengesellschaft | Verfahren zum Betrieb eines selbstfahrenden Fahrzeugs sowie Steuerungssystem zum Durchführen eines solchen Verfahrens |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004003781A2 (en) * | 2002-06-26 | 2004-01-08 | Coherent Logix Incorporated | Processing system with interspersed processors and communication elements |
CN1910554A (zh) * | 2004-02-20 | 2007-02-07 | 索尼计算机娱乐公司 | 多处理器系统中处理器任务迁移的方法与装置 |
EP1326165A3 (en) * | 2002-01-04 | 2007-12-12 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
CN101667138A (zh) * | 2008-09-04 | 2010-03-10 | 国际商业机器公司 | 混合计算环境以及混合计算环境中的数据处理方法 |
US20130081044A1 (en) * | 2011-09-27 | 2013-03-28 | Mark Henrik Sandstrom | Task Switching and Inter-task Communications for Multi-core Processors |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3177117B2 (ja) * | 1994-05-11 | 2001-06-18 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 複数のノード内の制御コードを更新する方法および装置 |
JP3052891B2 (ja) * | 1997-05-26 | 2000-06-19 | 日本電気株式会社 | 信号処理システム |
US6952827B1 (en) | 1998-11-13 | 2005-10-04 | Cray Inc. | User program and operating system interface in a multithreaded environment |
US7107329B1 (en) * | 1999-05-21 | 2006-09-12 | Lucent Technologies Inc. | In networks of interconnected router nodes for routing data traffic, a method of and system for imperceptibly upgrading router node software and the like without traffic interruption |
US6678645B1 (en) | 1999-10-28 | 2004-01-13 | Advantest Corp. | Method and apparatus for SoC design validation |
US7089517B2 (en) | 2000-09-29 | 2006-08-08 | Advantest Corp. | Method for design validation of complex IC |
US6708326B1 (en) * | 2000-11-10 | 2004-03-16 | International Business Machines Corporation | Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence |
US7047330B2 (en) * | 2001-03-06 | 2006-05-16 | Ati Technologies, Inc. | System for digital stream transmission and method thereof |
US8140829B2 (en) | 2003-11-20 | 2012-03-20 | International Business Machines Corporation | Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution |
US7853934B2 (en) | 2005-06-23 | 2010-12-14 | Hewlett-Packard Development Company, L.P. | Hot-swapping a dynamic code generator |
US8826228B2 (en) * | 2006-03-27 | 2014-09-02 | Coherent Logix, Incorporated | Programming a multi-processor system |
JP2007272895A (ja) * | 2006-03-31 | 2007-10-18 | Technology Properties Ltd | コンピュータプロセッサアレイの操作方法および装置 |
CN103109279B (zh) * | 2010-06-22 | 2016-08-31 | 富士通株式会社 | 多核处理器系统,控制程序以及控制方法 |
CN106227693B (zh) | 2010-10-15 | 2019-06-04 | 相干逻辑公司 | 多处理器系统中的通信禁用 |
US20130117168A1 (en) * | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
TW201235833A (en) * | 2011-02-16 | 2012-09-01 | Ind Tech Res Inst | System and method for multi-core synchronous debugging of a multi-core platform |
US9009678B2 (en) * | 2011-06-28 | 2015-04-14 | International Business Machines Corporation | Software debugging with execution match determinations |
US8924619B2 (en) * | 2013-03-15 | 2014-12-30 | Seagate Technology Llc | Unified message-based communications |
-
2013
- 2013-05-17 US US13/896,577 patent/US9195575B2/en active Active
- 2013-05-21 JP JP2016513913A patent/JP6228294B2/ja active Active
- 2013-05-21 EP EP19158284.0A patent/EP3537295A3/en not_active Ceased
- 2013-05-21 EP EP23156978.1A patent/EP4220399A3/en active Pending
- 2013-05-21 CN CN201380077900.XA patent/CN105359098B/zh active Active
- 2013-05-21 EP EP13726971.8A patent/EP2997469B1/en active Active
- 2013-05-21 CN CN201910513077.1A patent/CN110083440B/zh active Active
- 2013-05-21 EP EP17185840.0A patent/EP3279793B1/en active Active
- 2013-05-21 WO PCT/US2013/041942 patent/WO2014185933A1/en active Application Filing
-
2015
- 2015-10-23 US US14/921,281 patent/US9990227B2/en active Active
-
2017
- 2017-10-12 JP JP2017198250A patent/JP6453971B2/ja active Active
-
2018
- 2018-05-10 US US15/976,021 patent/US11023272B2/en active Active
- 2018-12-13 JP JP2018233478A patent/JP2019057321A/ja active Pending
-
2020
- 2020-07-27 JP JP2020126852A patent/JP7121076B2/ja active Active
-
2021
- 2021-04-29 US US17/243,890 patent/US11726812B2/en active Active
-
2023
- 2023-06-22 US US18/212,888 patent/US20230409380A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1326165A3 (en) * | 2002-01-04 | 2007-12-12 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
WO2004003781A2 (en) * | 2002-06-26 | 2004-01-08 | Coherent Logix Incorporated | Processing system with interspersed processors and communication elements |
CN1910554A (zh) * | 2004-02-20 | 2007-02-07 | 索尼计算机娱乐公司 | 多处理器系统中处理器任务迁移的方法与装置 |
CN101667138A (zh) * | 2008-09-04 | 2010-03-10 | 国际商业机器公司 | 混合计算环境以及混合计算环境中的数据处理方法 |
US20130081044A1 (en) * | 2011-09-27 | 2013-03-28 | Mark Henrik Sandstrom | Task Switching and Inter-task Communications for Multi-core Processors |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105785856A (zh) * | 2016-02-26 | 2016-07-20 | 西安电子科技大学 | 基于弹载应用的程序动态分段加载装置和方法 |
CN105785856B (zh) * | 2016-02-26 | 2018-07-20 | 西安电子科技大学 | 基于弹载应用的程序动态分段加载装置和方法 |
CN113785280A (zh) * | 2019-03-27 | 2021-12-10 | 图核有限公司 | 环形计算机网络上的嵌入环 |
Also Published As
Publication number | Publication date |
---|---|
CN105359098B (zh) | 2019-07-02 |
EP3537295A3 (en) | 2019-11-27 |
US9990227B2 (en) | 2018-06-05 |
US20180260240A1 (en) | 2018-09-13 |
US20160041842A1 (en) | 2016-02-11 |
EP4220399A3 (en) | 2023-09-27 |
EP3279793A1 (en) | 2018-02-07 |
CN110083440A (zh) | 2019-08-02 |
EP4220399A2 (en) | 2023-08-02 |
US11023272B2 (en) | 2021-06-01 |
JP2016519378A (ja) | 2016-06-30 |
EP2997469A1 (en) | 2016-03-23 |
JP6228294B2 (ja) | 2017-11-08 |
JP6453971B2 (ja) | 2019-01-16 |
US11726812B2 (en) | 2023-08-15 |
US20210294643A1 (en) | 2021-09-23 |
US20140344527A1 (en) | 2014-11-20 |
JP7121076B2 (ja) | 2022-08-17 |
JP2018022524A (ja) | 2018-02-08 |
US20230409380A1 (en) | 2023-12-21 |
WO2014185933A1 (en) | 2014-11-20 |
JP2020184375A (ja) | 2020-11-12 |
JP2019057321A (ja) | 2019-04-11 |
EP3279793B1 (en) | 2019-12-04 |
US9195575B2 (en) | 2015-11-24 |
CN110083440B (zh) | 2023-08-04 |
EP3537295A2 (en) | 2019-09-11 |
EP2997469B1 (en) | 2017-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7121076B2 (ja) | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 | |
CN105549904B (zh) | 一种应用于存储系统中的数据迁移方法及存储设备 | |
CN110719206B (zh) | 天基fpga虚拟化计算服务系统、方法和可读存储介质 | |
WO2016155335A1 (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
US7849441B2 (en) | Method for specifying stateful, transaction-oriented systems for flexible mapping to structurally configurable, in-memory processing semiconductor device | |
CN104823164B (zh) | 具有同步控制器的多处理器系统以及维持同步的方法 | |
CN110088737A (zh) | 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径 | |
CN101013415A (zh) | 用于多处理器阵列的线程感知分布式软件系统 | |
EP2917827B1 (en) | Multiprocessor programming toolkit for design reuse | |
CN103455371A (zh) | 用于优化的管芯内小节点间消息通信的方法和系统 | |
CN118451422A (zh) | 可重新定位的fpga模块 | |
CN105808354B (zh) | 利用WLAN网络组建临时Hadoop环境的方法 | |
Pham et al. | Moving compute towards data in heterogeneous multi-FPGA clusters using partial reconfiguration and I/O virtualisation | |
CN108572831B (zh) | 一种软件在线更新升级系统及方法 | |
Werner et al. | Virtualized on-chip distributed computing for heterogeneous reconfigurable multi-core systems | |
Truong et al. | A developing method for distributed sensing systems | |
Brand et al. | *‐Predictable MPSoC execution of real‐time control applications using invasive computing | |
Ykman-Couvreur et al. | Design-time application mapping and platform exploration for MP-SoC customised run-time management | |
Ambrose | Reuse of Retired Mobile Devices in Cyber-Physical Systems | |
CN116841731A (zh) | 一种fpga虚拟化资源调度系统及方法 | |
Gruian et al. | NoC-based CSP support for a Java chip multiprocessor | |
Clemente Barreira | Técnicas de planificación en entornos reconfigurables para aplicaciones multimedia (Scheduling techniques in reconfigurable environments for multimedia applications) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |