用于多核处理器的同步操作的方法与流程

文档序号:16807140发布日期:2019-02-10 13:09阅读:419来源:国知局
用于多核处理器的同步操作的方法与流程

本发明涉及用于多个多核处理器的同步操作的方法。本发明还涉及多核处理器系统,其以这种方式设计,以执行多个多核处理器的同步操作的方法。



背景技术:

对于安全相关的应用程序,通常使用这样的方法,其中具有硬件支持的多个处理器(多个cpu)同步运行它们的程序,使得它们生成的输出是准同时的(在μs内)。经由其进行输出的这些输出路径中的每一个也被称为下面的通道。这些输出可以在输出期间通过硬件装置相互比较,例如,通过表决模块(votermodule)。在三个处理器的情况下,例如,每个处理器生成单独的输出(三个通道),可以检测到一个输出的变化,然后可以排除该特定处理器或相应的通道。在两个处理器的情况下,例如,变化导致两个处理器都被排除并与外围装备隔离,因为不可能确定两个处理器中的哪一个生成正确的输出。

中断表示正在运行的程序的间断,例如,为了执行具有更高优先级的程序或任务。为此,在特定点中断正在运行的程序,并在中断已经被处理完后在该点处再次继续运行该程序。在彼此同步的处理器和/或硬件同步系统的情况下,并且因此例如,在时间上协调到小于1μs的精度,以这种方式施加中断,使得每个处理器处的中断在正在执行的程序的完全相同的机器指令处中断。此外,输入以这种方式分布在处理器上,使得各个处理器总是接收完全相同的输入数据。

为了使处理器的输出以这种方式在时间上接近,(由略微不同的石英引起的,并且可能还由用于机器代码的不同周期数引起的)通道或处理器的运行时间差异必须通过相对于较慢处理器的较快处理器的时间延迟来均衡。为了实现这一点,例如,可以配置整个程序代码,使得非常频繁地生成同步调用,从而触发每个硬件项目的同步。在其他实施例中,同步被触发为输入/输出指令的次要影响或者跟随在特定数量的存储器访问之后。由于在现代处理器中不再存在对处理器的内部总线的访问,因此软件通常通过频繁调用提供用于硬件的同步提示的短函数来辅助硬件同步单元。中断只能应用在同步时间点。因此,当在正在执行的程序中已经进行或进行同步调用(用于同步的特殊调用)时,在所有处理器上精确地处理常规时钟中断(例如,每20ms)和其他中断。

然而,问题在于该方法不适合于代替单核处理器的多核处理器操作,即对于具有多于一个处理器内核的处理器或具有超线程处理能力的处理器,其因此提供第二虚拟处理器内核。到目前为止,在同步操作中已经关闭这些附加的处理器内核,即在同步操作中不使用这些附加的处理器内核。

特定的困难是处理器内核完全彼此独立地起作用。在这种情况下,硬件的同步逻辑无法决定哪个处理器内核正在同步。因此,处理器的各个处理器内核的同步输出相互阻碍。例如,由于仍在工作的处理器内核继续同步,因此无法检测到不再运行任何程序或软件的非活动处理器内核或处理器内核。

因此,到目前为止,每通道仅一个处理器内核已在硬件同步系统中得到充分利用。因此,如果多个处理器内核或其他超线程内核是可用的,则不会使用该计算容量,而如果存在则将关闭该计算容量。到目前为止,硬件同步系统因此纯粹是每通道单处理器内核系统。不利地,这意味着仅使用多核处理器或具有超线程能力的处理器的全部容量的相应部分。因此,为了生成附加的并发计算能力,迄今为止必须并行地操作多个硬件同步系统,相应地表示更高的硬件开销。

因此,本发明的目的是开发一种在使用多核处理器时允许硬件同步操作的方法,由此附加处理器内核的计算能力不会保持未使用。



技术实现要素:

用于多个多核处理器的同步操作的本发明的方法基本上包括以下步骤:a)提供第一多核处理器和第二多核处理器,每个包括主处理器内核和用于执行实用程序的至少一个二级处理器内核。在下一步骤b)中,第一多核处理器与第二多核处理器的同步以这种方式进行,使得仅第一多核处理器的相应的主处理器内核与第二多核处理器的主处理器内核同步。在进一步的步骤c)中,通过每个多核处理器中的相应的主处理器内核控制至少一个二级处理器内核。在进一步的步骤d)中,通过至少一个二级处理器内核处理实用程序,并且生成对相同的多核处理器的相应的主处理器内核可用的输出。在最后的步骤e)中,通过相应的主处理器内核实现来自多个多核处理器的输出的同步输出。

该方法具有以下优点,同步仅受每个多核处理器的主处理器内核的影响,并且另外的(一个或多个)二级处理器内核不干扰该同步。因此,相应的主处理器内核充当同步主机。在这种情况下,二级处理器内核仅用作从属计算机,即,挂起的(pending)实用程序被传送到二级处理器内核,被执行,然后使得输出对相应的主处理器内核再次可用。此上下文中的实用程序包括应用程序、应用程序软件、计算程序、任务以及可由处理器内核处理的任何类型的程序。由于将输出传送到主处理器内核,所以输出被包括在主处理器内核的同步中。这意味着二级处理器内核不会在本地同步,而是在很大程度上自主地运行。这意味着可以有利地充分利用二级处理器内核的计算能力而不会因此破坏同步,因为该任务仅由相应的主处理器内核执行。作为实用程序在多个处理器内核上的功能分布和相应的并发性的结果,可以根据处理器内核的数量实现计算能力的线性增加。因此可以省去并行的附加计算机,从而允许更经济和紧凑的结构形式。

输入/输出有利地仅经由相应的主处理器内核进行。因此,仅经由主处理器内核控制二级处理器内核。因此,仅主处理器内核与外围装备“通信”。

主处理器内核和至少一个二级处理器内核之间的通信优选地借助于经由共享存储器的消息进行。为了实现这一点,可以借助于虚拟化辅助工具将二级处理器内核作为虚拟处理器内核操作,其中在这些内核上可以提供允许借助于消息交换在处理器内核之间进行通信的操作系统。在这种情况下,使用例如联锁协议(interlockingprotocol),消息的传送可以经由共享存储器区域进行,以避免访问冲突。在此上下文中,主处理器内核管理存储器分发。

主处理器内核优选地将时钟时间增量传送到相应的多核处理器的至少一个相应的二级处理器内核。在这种情况下,时钟时间增量被理解为以规则时间步长或时间间隔更新的时钟。因此,同步地向每个主处理器内核的二级处理器内核提供相同的时钟时间增量。例如,这可以每20ms发生一次。因此,委托二级处理器内核以规律间隔执行挂起的就绪的任务或程序。这些可以由主处理器内核以特定方式分布在二级处理器内核上,其中所述分布在每个多核处理器中以相同的方式进行。

优选地在实用程序和/或操作系统中实现重复的系统调用。例如,这种系统调用可以是同步提示。

在这种情况下作为系统调用的结果,优选地在相应的至少一个二级处理器内核中执行第一处理阶段,在该第一处理阶段中执行至少一个二级处理器内核与相应的主处理器内核之间的消息的接收和发送,并且在这种情况下中断第二处理阶段,在该第二处理阶段中在至少一个二级处理器内核中执行实用程序。因此,第一处理阶段在第二处理阶段的中断期间进行。程序的实际执行在该第二处理阶段中进行,二级处理器内核的相应的操作系统也在该阶段中运行。因此,第二处理阶段不知道相应的第一处理阶段。

在第一处理阶段,优选地在同步时间点执行在至少一个二级处理器内核和相应的主处理器内核之间的消息的接收和发送。然后,输出可用,并且可以在不会生成任何不需要的变化的情况下,在每个主处理器内核中处理输出。可以通过主动等待时钟时间增量来实现同步时间点。例如,这可以每100ms或每200ms发生。

第一处理阶段可以基于在两个时钟时间增量之间的时间内计数的系统调用,在对至少一个二级处理器内核中的时钟时间增量的反应中生成延迟。由此有利地使运行时差异均衡,并且二级处理器内核相应地更加同步地运行。

二级处理器优选地用于执行实用程序,其输出在大于实用程序的运行时间的延迟时间之后被同步地传送到主处理器内核。在这种情况下,必须相应地选择延迟时间,使得当延迟时间期满(expired)时要计算的输出是可用的,并且因此可以同步传输到主处理器内核。例如,可以预先知道实用程序的运行时间。主动等待延迟时间的期满。

至少一个二级处理器内核的至少一个处理器内核可以被设计为超线程内核。因此,该方法还可以应用于具有提供虚拟处理器内核的超线程功能的处理器。

还公开了一种多核处理器系统,其包括多个多核处理器,每个多核处理器包括主处理器内核和用于执行实用程序的至少一个二级处理器内核,其特征在于,所述多核处理器系统被设计成执行如上所述的实施例之一的用于多个多核处理器的同步操作的方法。

还公开了一种计算机程序,一旦将其加载到数据处理设备的存储器装置中,就使所述数据处理设备能够执行如上所述的实施例之一的用于多个多核处理器的同步操作的方法。

还公开了一种用于存储程序的计算机可读存储介质,该程序一旦被加载到数据处理设备的存储器装置中,就使所述数据处理设备能够执行用于如上所述的实施例之一的用于多个多核处理器的同步操作的方法。

附图说明

在下面描述的并且参考附图更详细地解释的示例性实施例的背景下,如上所述的本发明的特性、特征和优点以及实现这些的方式变得更清楚和更容易理解,其中:

图1示出了根据本发明的多核处理器系统的示意图,以及

图2示出了根据本发明的用于多个多核处理器的同步操作的方法的示意图。

具体实施方式

仅举例来说,图1示出了根据本发明的多核处理器系统(10)的示意图。该图示还用作描述用于多个多核处理器(mc1,mc2)的同步操作的本发明方法的基础,所述方法在图2中示意性地总结。应当注意,在图1中仅示出那些与本发明特别相关的那些技术特征,所述特征并非详尽无遗,而是进一步可包括本领域技术人员已知的其他技术特征,例如,另外的存储器结构、相应的总线系统、定时器、调度器、外围单元等。

举例来说,多核处理器系统(10)包括第一多核处理器(mc1)和第二多核处理器(mc2)。然而,只要存在至少两个,可以提供任何期望数量的多核处理器(mc1,mc2),其因此对应于多个多核处理器(mc1,mc2)。特别优选的实施例包括三个多核处理器,因为可以在安全性方面补偿输出的任何变化或多核处理器的故障。每个多核处理器(mc1,mc2)恰好包含一个主处理器内核(a1,a2),这里作为示例,主处理器内核(a1)被安装在第一多核处理器(mc1)中,以及主处理器内核(a2)被安装在第二多核处理器(mc2)中。此外,用于执行实用程序的两个二级处理器内核(b1,b2)对于第一多核处理器(mc1)是可用的。此外,用于执行实用程序的两个二级处理器内核(b3,b4)对于第二多核处理器(mc2)同样是可用的。然而,本发明不限于两个二级处理器内核(b1,b2,b3,b4),而是每个主处理器内核可以仅提供一个二级处理器内核或多于两个二级处理器内核。此上下文中的实用程序包括应用程序、应用程序软件、计算程序、任务以及可由处理器内核处理的任何类型的程序。由相应的多核处理器(mc1,mc2)处理的实用程序在这种情况下是相同的,即它们由相同的机器指令序列组成。

各个多核处理器(mc1,mc2)的主处理器内核(a1,a2)彼此同步,这在图1中由同步单元(se)示意性地表示。主处理器内核(a1,a2)之间的这种同步可以作为例如同步调用,即程序中的特定调用的结果进行,或者作为诸如硬件的存储器访问的特定访问的结果进行。主处理器内核(a1,a2)的输出优选地以这种方式同步,即它们的输出在μs内发生并且可以在输出期间由例如通过所示的表决模块(v)进行比较。

二级处理器内核(b1,b2,b3,b4)不包括在此同步中,但基本上是自主运行的。因此,仅各个多核处理器(mc1,mc2)的相应的主处理器内核(a1,a2)彼此同步。二级处理器内核(b1,b2,b3,b4)用以执行实用程序,并由相应的主处理器内核(a1,a2)激活。控制,即包括程序、子程序或任务在相应的二级处理器内核(b1,b2,b3,b4)上的分发,在每个多核处理器(mc1,mc2)中以相同的方式进行,即在每个多核处理器(mc1,mc2)中操作相同的过程。

作为由至少一个二级处理器内核(b1,b2,b3,b4)处理实用程序的一部分,生成对相同多核处理器(mc1,mc2)的相应的主处理器内核(a1,a2)可用的输出。因此,来自多个多核处理器(mc1,mc2)的输出的同步输出受相应的主处理器内核(a1,a2)的影响。

这意味着主处理器内核(a1,a2)用作同步主机,而二级处理器内核(b1,b2,b3,b4)用作从属计算机。这具有以下优点:另外的二级处理器内核(b1,b2,b3,b4)不干扰该同步,因为它们不参与该同步。这意味着可以有利地充分利用二级处理器内核(b1,b2,b3,b4)的计算能力而不会因此破坏同步,因为该任务仅由相应的主处理器内核(a1,a2)执行。作为在多个处理器内核上的实用程序的功能分布和相应的并发(并行处理)的结果,可以根据处理器内核的数量实现计算能力的线性增加。

输入/输出经由输入/输出单元(e1,e2)进行,其中仅相应的主处理器内核具有相应的输入/输出单元(e1,e2)。输入/输出同样被包含在主处理器内核(a1,a2)的同步中。相应的二级处理器内核(b1,b2,b3,b4)不具有输入/输出单元。这也意味着二级处理器内核(b1,b2,b3,b4)与输入/输出单元(e1,e2)的中断隔离。

主处理器内核(a1,a2)和至少一个二级处理器内核(b1,b2,b3,b4)之间的通信借助于经由共享存储器(m1,m2)的消息发送。为了实现这一点,可以借助于虚拟化辅助工具将二级处理器内核(b1,b2,b3,b4)作为虚拟处理器内核操作。然后,可以在这些处理器内核上提供允许借助于与相应的主处理器内核(a1,a2)进行消息交换来在处理器内核之间进行通信的操作系统。消息的传送可以借助于联锁协议经由共享存储器区域(m1,m2)发生,以避免与共享存储器(m1,m2)的访问冲突。在此上下文中,主处理器内核(a1,a2)管理存储器分发。

第一多核处理器(mc1)的主处理器内核(a1)将其时钟时间增量(i1)路由到两个二级处理器内核(b1,b2)。第二多核处理器(mc2)的主处理器内核(a2)同样将其时钟时间增量(i2)路由到相应的两个二级处理器内核(b3,b4)。例如,时钟时间增量(i1,i2)可以每20ms发生一次,并且彼此同步。使用时钟时间增量(i1,i2),可以使基本上就绪的程序或任务可用于临时处理,所述程序或任务根据例如优先级或其他标准在队列中排序。这对应于具有优先级控制方法的抢占式多任务系统。以下部分将更详细地描述时钟时间增量的处理。

包含在实用程序中的是叫做系统调用的特殊调用。这些系统调用是操作系统的功能。例如,使用20ms的时钟时间增量,这些系统调用可以每ms发生,例如,因此理想地总是远小于20ms,并且因此经常与时钟时间增量有关。例如,系统调用可以是同步提示,但不用于同步目的。当发生这样的系统调用时,在相应的二级处理器内核(b1,b2,b3,b4)中开始第一处理阶段。

在该第一处理阶段中,在相应的二级处理器内核(b1,b2,b3,b4)中管理循环例程。在这种情况下,传入消息和传出消息由等待列表管理,并借助于访问共享存储器区域(m1,m2)、在特定同步时间点、在二级处理器内核(b1,b2,b3,b4)和主处理器内核(a1,a2)之间传送。例如,这可以在每100ms或每200ms的同步时间点发生。可以通过主动等待时钟时间增量(i1,i2)来实现同步时间点。在第一处理阶段中,还要检查相应的时钟时间增量(i1,i2)是否挂起或下一个时钟时间增量(i1,i2)是否正在主动等待二级处理器内核(b1,b2,b3,b4)的近似同步,以便均衡轻微的运行时间差异,使得例如可以进行任务交换。在这种情况下,当计时器期满时就绪的程序取代具有较低优先级的程序,并且当所有程序都已被执行时,空闲任务接管并运行直到下一个时钟时间增量(例如,每20ms),使得抢占式多任务被传播。如果没有时钟时间增量(i1,i2)挂起,则第一处理阶段更新时间计数器(如果提供的话)(例如,ms时间计数器),所述时间计数器主要负责识别时间差,并跳回到调用点。

在这种情况下,实用程序的处理是第二处理阶段的一部分,即二级处理器内核(b1,b2,b3,b4)的实际计算阶段。二级处理器内核的操作系统也在第二处理阶段运行。第二处理阶段(纯执行阶段)独立于第一处理阶段,即它不知道第一处理阶段的例程。

第一处理阶段还检测在两个时钟时间增量(i1,i2)之间进行的系统调用的次数,例如,每20毫秒。二级处理器内核(b1,b2,b3,b4)中的这些系统调用通常将在ms的时间进行。基于检测到的系统调用次数,执行对检测到的时钟中断(i1,i2)的反应延迟。该延迟旨在导致相应的二级处理器内核(b1,b2,b3,b4)的处理的同步,从而均衡由运行差异引起的轻微变化。通过简单地对系统调用进行计数,由第一处理阶段检测该变化,并借助于适当的延迟来均衡该变化。因此,各个多核处理器(mc1,mc2)的二级处理器内核(b1,b2,b3,b4)的同步可能性在所选择的时钟时间增量间隔或时钟增量间隔的区域中,例如,20毫秒。因此,该时间窗口比用于要彼此同步的相应的主处理器内核(a1,a2)的时间窗口定义的更宽,后者通常应位于μs区域中。因此,这比主处理器内核(a1,a2)的同步更近似。可替代地,使用时钟周期,例如每20ms,以及通过主动等待如所述的二级处理器内核(b1、b2、b3、b4)与主处理器内核(a1、a2)之间的输入和输出的传送来近似地同步,例如每200ms,可以影响近似同步。在这种情况下应该注意的是,在第二处理阶段(即工作阶段)中在二级处理器内核(b1,b2,b3,b4)中运行的处理通常仅在千分之一的范围内彼此不同。

在第一个处理阶段,在二级处理器内核(b1,b2,b3,b4)和它们相应分配的主处理器内核(a1,a2)之间进行的累积消息的交换不需要在每个时钟时间增量(i1,i2)之后进行,但也可以以更长的时间间隔进行,例如每100ms,因为对于处理时间概念(timeconcept)以便控制或跟踪动作的许多应用程序,例如,仅使用至少较长时间间隔的周期,例如,100毫秒、200毫秒甚至500毫秒。

本发明的范围包括也可以被设计为超线程内核的二级处理器内核(b1,b2,b3,b4)。因此,该方法基本上可以在同样具有超线程能力的处理器上执行。

可替代地,在二级处理器(b1,b2,b3,b4)中执行并具有已知运行时间的实用程序的情况下,例如,既不需要用于多任务的操作系统也不需要时钟时间增量(i1,i2),则可以实现大于实用程序的运行时间的延迟时间,并且在所述延迟时间期满之后将计算的输出同步地传送到主处理器内核(a1,a2)。在这种情况下,应该选择延迟时间,使得在延迟时间期满之后,在各个二级处理器内核(b1,b2,b3,b4)中将计算的输出是可用的,使得尽管可能存在运行差异,仍可以将同步转移到相应的主处理器内核(a1,a2)。主动等待延迟时间的期满。

仅使用一个多核处理器的方法的操作基本上也是可能的,并且因此包括在本发明的范围内,例如,为了以简化的方式支持开发运行和测试运行。然后相应地省略与另外的通道的同步,因为这些不存在。

为了确保在二级处理器内核(b1,b2,b3,b4)的存储器区域中不存在休眠错误(其可能类似在另一个通道中出现但未检测到),可以有利地在二级处理器内核(b1,b2,b3,b4)中连续生成用于正在使用的存储器的哈希值,并将哈希值传送到相关的主处理器内核(a1,a2)进行比较。

相同或不同的操作系统可以在相应的主处理器内核(a1,a2)和相应的二级处理器内核(b1,b2,b3,b4)上运行,所述操作系统始终彼此分离。这使得可以将用于二级处理器内核(b1,b2)的实用程序加载为单独的附加图像。这降低了更新和维护的复杂性。

相应的主处理器内核(a1,a2)通常不必支持任何项目特定的应用程序或实用程序,因为用于特定的实用程序的计算能力由二级处理器内核(b1,b2,b3,b4)单独提供。结果,相应的主处理器内核(a1,a2)可以仅将其自身应用于通信负载,从而可能增加在主处理器内核(a1,a2)上运行的安全协议的可能可用通道的数量。然而,还包括在本发明的范围内的是,程序也可以根据工作量在各个主处理器内核(a1,a2)上容易地处理。

为了仍然可以在没有冲突的情况下使用诊断接口操作诊断软件,经由主处理器内核(a1,a2)访问二级处理器内核(b1,b2,b3,b4)的诊断接口或允许每个fpga(现场可编程门阵列)单独访问的硬件也是有利的。这意味着即使只存在一个物理诊断接口访问,每个处理器内核也有自己的诊断接口。

图2示意性地总结了根据本发明的用于多个多核处理器的同步操作的方法。在第一步骤(s1)中,提供多个多核处理器(mc1,mc2),每个多核处理器包括主处理器内核(a1,a2)和用于执行实用程序的至少一个二级处理器内核(b1,b2,b3,b4)。在第二步骤(s2)中,第一多核处理器(mc1)与第二多核处理器(mc2)以这种方式同步,使得仅第一多核处理器(mc1)的相应的主处理器内核(a1)与第二多核处理器(mc2)的主处理器内核(a2)同步。在第三步骤(s3)中,由每个多核处理器(mc1,mc2)中的相应的主处理器内核(a1,a2)控制至少一个二级处理器内核(b1,b2,b3,b4)。在每个多核处理器(mc1,mc2)中以相同的方式影响对至少一个二级处理器内核(b1,b2,b3,b4)的控制。在进一步的步骤(s4)中,由至少一个二级处理器内核(b1,b2,b3,b4)处理实用程序,并生成对相同的多核处理器(mc1,mc2)的相应的主处理器内核(a1,a2)可用的输出。在进一步的步骤(s5)中,由相应的主处理器内核(a1,a2)同步输出来自多个多核处理器(mc1,mc2)的输出。

总之,提出了一种用于其中生成同步的输出的多个多核处理器(mc1,mc2)的同步操作的方法,其中充分利用多核处理器(mc1,mc2)并行执行程序的计算容量。在这种情况下,在多核处理器(mc1,mc2)内的各个处理器内核之间建立任务层次结构,其中主处理器内核(a1,a2)充当同步主机,并且一个或多个二级处理器内核(b1,b2,b3,b4)被降级为充当从属计算机,它们不会干扰主处理器内核(a1,a2)的同步。

这具有更有效地利用计算容量和相应地降低硬件开销的优点。此外,多核处理器现在还可以用于安全相关系统,同时充分利用其增强的计算能力。

尽管以上参考示例性实施例详细说明和描述了本发明,但是本发明不限于这里公开的示例,并且本领域技术人员在不脱离本发明的范围的情况下可以从中导出其他变型。

参考字符列表

mc1,mc2多核处理器

a1,a2主处理器内核

b1,b2,b3,b4二级处理器内核

i1,i2时钟时间增量

e1,e2输入/输出单元

se同步单元

m1,m2共享存储器

v表决模块

s1,s2,s3,s4,s5步骤

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1