多处理器系统、装置和方法
【专利摘要】本发明涉及多处理器系统、装置和方法。本发明的实施方式提供了多处理器系统中的方法和装置,从而在硬件部件中创建和实施与存储器访问有关的规则的集合。这些规则可以被动态地更新,例如通过用于控制多处理部件的顺序处理器(或者定序器)来动态地更新。
【专利说明】多处理器系统、装置和方法
【技术领域】
[0001]本发明涉及多处理器系统中的方法和装置。
【背景技术】
[0002]本 申请人:的在先申请(GB2482141A)描述了在计算必须满足严格的实时约束的情况下在具有多处理器或处理部件的系统中控制任务执行的系统和方法。该文献描述了使用应用建模(例如使用统一建模语言(Unified Modeling Language, UML))来描述无线物理层的设计。
[0003]在上述申请中描述了如下装置,该装置由顺序处理器(即具备实现UML原语的指令集的可编程处理器)组成,该顺序处理器可用表示由UML定义的操作序列的代码来编程并生成控制信号以触发各个处理部件中的操作;并且其中来自处理部件的表示任务完成的信号还与控制原语结合使用,以控制后续任务的执行。所述系统还允许使用由系统时钟生成的、将要作为触发信号被包括在内的时间事件,使得严格的实时约束能够被应用到系统。所描述的装置和方法的优点是可以非常有效地控制多处理器集合中的任务执行,并且由UML定义的任务序列可以被自动编译成微代码,以控制顺序处理器的操作。
[0004]因此,建模工具根据以专用硬件顺序处理器为对象的模型生成代码。该硬件顺序处理器保证在处理器上执行的任务(以及实际上在专用硬件块上运行的任务/功能)满足它们的截止期限以及它们的控制和数据依赖性。
[0005]在多处理器系统中,存储器的访问是复杂的,因为在各个时间很多处理部件都能访问存储器。如果存储器也被频繁地循环利用(以缩小尺寸),那么系统的调试和验证极其困难。
[0006]此外,在能够支持多个空中接口模式(诸如未来的蜂窝手机中所需要的模式,其中可以在现场加载和更新的软件中定义模式)的调制解调器中,在软件访问存储器的方式上可能存在意料之外的交互,这将会引起系统必须自动恢复的操作故障。
[0007]因此,期望具有能够识别和管理多处理器系统中的存储器访问中、或者在开发/调试阶段或在正常操作中的问题的系统。
【发明内容】
[0008]根据本发明的第一个方面,提供了如所附权利要求书中阐述的、监控多处理器系统中的存储器访问的方法。
[0009]根据本发明的另一个方面,公开了配置为执行根据第一个方面的方法的硬件部件(还被称为存储器监视单元),以及多处理器系统,该多处理器系统包括上述硬件部件;多个处理部件;各处理部件所访问的存储器;以及用于生成要被多个处理部件执行的代码序列的定序器。
【专利附图】
【附图说明】[0010]为了更好地理解本发明,并且更清楚地示出可以如何实施本发明,现在将以示例的方式参考以下附图,在附图中:
[0011]图1是根据本发明实施方式的多处理器系统的示意图;以及
[0012]图2是生成用于图1所示的系统的代码的处理流程的示意图。
【具体实施方式】
[0013]图1是根据本发明实施方式的多处理器系统10的示意图。
[0014]系统10包括多个处理部件I_nl2,其中η是大于I的正整数。虽然示例性实施方式示出了三个处理部件12,但系统10可以包括如两个这样少的处理部件。
[0015]处理部件12可以包括任何处理器或专用处理器。例如,多个处理部件12可以包括如下每个的一个或更多个:矢量信号处理器,其能够在同一处理器周期中对数据阵列的每个元素执行矩阵矢量算术运算;硬件块,其专用于例如直接存储器访问或turbo译码这样的单一类型的操作;中央处理单元(CPU);或者许多其它类型的处理块中的一种。
[0016]系统10进一步包括提供系统时钟的定时器14、控制处理器15和顺序处理器16。处理部件12、定时器14、控制处理器15和顺序处理器16经由系统总线或互连器18来彼此互连。 [0017]顺序处理器16是具备实现UML原语的指令集的可编程处理器。顺序处理器16可用表示由UML定义的操作序列的代码来编程并生成信号(还被称作动作启用(ActionInnovation))以触发各个处理部件12中的操作。来自处理部件的指示任务完成的信号(还被称作动作指示)还与控制原语结合使用以控制后续任务的执行。因此由UML定义的任务序列能够被自动地编译成微代码,以控制顺序处理器16的操作,该顺序处理器16产生动作启用(Action Invocation, Al)来触发处理部件12中的操作。
[0018]每个Al都是包括以下内容中的一部分或全部的消息:执行该动作所要求的资源的定义,包括要求的处理部件的类型、任何存储器要求和/或任何功率或电流要求;关于所要求的处理部件能否被先占有的指示;指向对处理部件进行编程的代码(如果需要)的指针;指向输入数据和输出数据缓冲区的指针;关于如果数据依赖则执行该动作要求的最小和最大执行循环的数据;动作的优先级的定义;任何最早开始或最晚结束时间(即,动作决不能在特定时间之如开始、或必须在特定时间完成)的定乂 ;以及?呆作序列中在动作完成时控制必须交返回的位置的定义。
[0019]设置有每个处理部件12和顺序处理器16都具有访问权的存储器20。存储器20可以是片上存储器、片外存储器或二者的组合。可以通过单个存储体提供存储器20,但是更通常期望存储器将包括排列在系统10周围不同位置的多个存储体。存储器20可以经由存储总线21或多条总线(例如存储地址总线、存储数据总线和/或一条或多条控制线)连接到系统10的其它部件。
[0020]根据本发明的实施方式,系统还包括存储器监视单元22。该存储器监视单元22是专用硬件部件,与存储器20同样耦接到互连器或总线21。其可以是专用存储总线(如图1所示实施方式)或更通用的系统互连器18。因此,存储器监视单元22能监控处理部件12和/或顺序处理器16进行的每个存储器访问。下面给出存储器监视单元22的操作的进一步细节。[0021]图2是示出在设计过程期间创建多处理器系统(例如前面所述的多处理器系统10)的模型的技术的示意图。这种系统的一个具体示例是(如GB2482141A描述的)调制解调器物理层的软件实例化。该模型允许表达和可视化各种设计考虑(例如,功率、性能、面积等),并且允许在生成用于控制多处理器系统的代码之前进行对模型的分析。虽然这些设计考虑(以及其它)并不是彼此孤立的,但是当其被表达和可视化时将它们分开是有用的,不只是对于设计人员而言降低复杂性。在处理的分析阶段,各种考虑可以被一起交叉搭配和分析。在这个阶段,可以定义策略以便可以影响代码生成阶段。
[0022]在模型103中表达了存储器101的考虑或约束或其它考虑102 (可以使用UML或任何其它适合的建模语言来表达)。如GB2482141A所描述地,模型103的主要目的是表达系统的多处理部件执行的任务之间的依赖性。
[0023]使用模型中描述的行为生成存储器使用情况104。可以通过在模型中创建缓冲区并将其隶属于处理器中运行的任务,对存储器使用情况进行建模,以创建控制和数据流。该模型可进一步被注释以描述存储器的属性-例如在系统中可以从何处分配存储器、其对齐类型等。还可以对缓冲区进行注释,以描述其预期寿命,允许随着代码执行的进行存储器重复用于其它用途。因此该模型获知全部关键方面:存储器位置、存储器地址、数据流(即,哪个处理正在访问什么和何时访问)和存储器寿命。
[0024]可以通过可视化工具105显示存储器使用情况:可视辅助工具,其向设计人员呈现存储器在使用时如何布局。
[0025]可以应用策略107以允许分析关于不同方面之间交互的“交叉考虑”并且优化系统。例如,策略可以是尽可能将访问限于一个存储器存储体,使得可以关闭其它存储体,即本示例中的策略优先考虑节电。在这种情况下,开发工具能推断出一个存储器子系统未使用,然后可以生成代码将其关闭。在另一个示例中,策略可优先考虑访问速度,并生成代码以优先于片外存储器来使用片上存储器。在再一个示例中,策略可以优先考虑性能,由此在多个存储器子系统上来展开存储器分配,以便多个处理部件可以并行地访问存储器子系统。然而,本发明并不限于任何特定的策略。
[0026]接下来,基于在步骤106中执行的分析,针对系统中的各个处理器生成108代码。在代码生成阶段,可以静态地分配(即,被管理为使得在设计时进行分配)存储器;动态地分配存储器,其中生成代码来访问存储器分配API(由目标主机的操作系统来提供);或者静态和动态分配的组合。在一个实施方式中,控制处理器15与操作系统通信,并因而与存储器分配API通信;但是,在其它实施方式中,任何处理部件12都可以直接与存储器分配API通信。
[0027]生成的代码包括针对顺序处理器16的目标代码109和存储器监视列表110。该目标代码包括在顺序处理器16控制下多个处理部件要执行的程序或者动作的列表。
[0028]当生成并运行针对顺序处理器16和其它系统部件的代码时,可能出现意料之外的行为,其中存储器20的特定区域被分配给不同并且无关的处理。这可能是因为程序员失误,或者因为顺序处理器16正在运行来自无关的并且可能异步的协议的代码。这样的行为可能很难被追踪,尤其是如果其不是在开发阶段出现而是随后在现场部署产品时出现。
[0029]因此,顺序处理器16被提供有在图2中概示的流程中生成的程序或者动作的列表,并由此可以生成上述的将要发送到处理部件12的动作启用。经由图2的流程还生成存储器监视列表110,其包含系统操作中各个点上的存储器地址、存储器数据内容和存储器控制信号(例如读或写信号)的集合。顺序处理器16使用该存储器监视列表以利用关于对存储器20的访问的一条或多条规则对存储器监视单元22编程。
[0030]因此,随着程序执行的进行,顺序处理器16提供多个信号来对存储器监视单元22动态编程。例如,在处理部件完成任务时,可以规定新规则或者改变旧规则。这些信号可以包括在执行控制处理部件12的代码序列期间在各个点上期望出现(或者不应当出现)的存储器地址、存储器位置数据内容和存储器控制信号。
[0031]存储器监视单元22经由总线21 (其可以是许多总线和/或事实上其它互连器)连接到存储器20,并由此能够检测处理部件进行的存储器访问,并且应用存储器监视列表110中规定的规则。如果规则中的一条或更多条被违反,则可以按照以下描述的生成警告信号。
[0032]例如,可以被编程以应用禁止对一个或者一组存储器地址的访问的规则。因此,存储器监视单元22可以检测存储器访问中规定的地址,并且如果该地址与被禁止地址列表中的一个地址相匹配时将该存储器访问标志为违反规则。可以通过分析地址的最高有效位中的仅仅一位或更多位,检测对一组地址中的任意地址的访问。而且,这些地址可以仅仅针对特定类型的处理部件被禁止访问。因此,如果存储器访问源自第一类型的处理部件(允许该类型的处理部件访问该地址),则可以授权存储器访问;如果存储器访问源自第二类型的处理部件(其对该地址的访问被禁止),则可以认为存储器访问违反了规则。
[0033]在另一个实施方式中,可以应用规则,从而如果对特定地址的存储器访问为特定类型,则其被禁止。例如,存储器控制线可以标识访问是读操作还是写操作。特定地址可以被指定为只读,因此对这些地址的任何写操作可以认为是违反了存储器访问规则。
[0034]在进一步的实施方式中,存储器监视单元22可以通过监控任何存储器访问中的指定存储器位置处的数据来实施规则。例如,规则可以规定在特定存储器地址的数据采用特定值。该值可以是用于使系统正确运行而要求的控制值,或者用来测试系统是否正确运行的任意值(用于防止恶意程序对存储器覆写的技术)。如果存储器访问向该存储器地址写入不同的值,或者从该存储器地址读取不同的值,则可以认为已经违反了规则。
[0035]为了实施这些规则,存储器监视单元22可以包含多个比较器,以便将数据、地址、始发处理部件和/或存储器访问类型与可能违反存储器监视列表110中规定的规则的那些参数的值进行比较。存储器监视单元22可以包含一个或多个比较器组,其可以逻辑组合以给出复杂的触发。
[0036]如果存储器监视单元22发现存储器访问已经违反了规则中的一条(例如,比较器检测到与被禁止访问相匹配的存储器访问),则其可以生成在系统10中可以以各种方式使用的警告信号(也被称为存储器违规触发)。
[0037]例如,警告信号可以被施加给断点模块,其将“中断”软件执行并且在系统“调试”阶段向外部系统输出跟踪数据,使得程序员能够发现问题。在进一步的实施方式中,警告信息可以被传递到中断控制器以生成系统中断(其可以被传递到控制处理器)和/或顺序处理器16以触发异常处理例程来按照可控的方式处理存储器违规。
[0038]根据本发明的实施方式,可以在开发期间为了调试而提供的预先存在的跟踪模块中实现存储器监视单元22。也就是说,在很多嵌入式系统中(例如,基于来自ARM Limited的处理器和总线技术的那些系统),通常具有被称为跟踪模块的IP块。在ARM技术中,这可以是“系统跟踪模块”(System Trace Module, STM)或者“扩展跟踪模块”(Extended TraceModule, ETM)。这些IP块通常包含可以由外部调试器来编程的一组比较器,以与一组条件相匹配接着导致系统断点(即,暂停软件执行以允许程序员检查直至断点的跟踪数据)。通常,跟踪模块由外部调试系统经由符合IEEE 1149.1标准测试访问端口和边界扫描架构的JTAG端口来编程。现代嵌入式系统设计的一个重要方面是这类跟踪硬件被理所当然地并入,然而可以通过在已编程控制下将其关闭,来使功耗最小。也就是说,通过JTAG端口上的信号来使能跟踪硬件,并且通过该端口向所附接的诸如ARM D-Stream JTAG接口模块和DS5跟踪和调试软件这样的监控系统传输跟踪信息。当开发完成时,该硬件被关闭。
[0039]根据本发明的实施方式,可以改造该预先存在的跟踪电路,以被系统10自身内部地访问。例如,可以将跟踪电路的输入和输出送往系统互连器18,使得该电路可以被顺序处理器16访问,或许还有通常所使用的JTAG端口。按此方式,跟踪电路可以被顺序处理器16编程,或者被适于实现存储器监视列表110中列出的规则的任何其它硬件部件来编程。由此跟踪电路可以适于执行存储器监视单元22要求的功能,并且可以在基本上不增加系统10中要求的硬件数量的情况下提供本发明的功能。
[0040]因此,本发明的实施方式提供了多处理器系统中的方法和装置,从而在硬件部件中创建和实施与存储器访问有关的规则的集合。这些规则可以被动态地更新,例如在这些处理部件执行的任务完成之后,通过用于控制多处理部件的顺序处理器(或者定序器)16来动态更新。
[0041]本领域技术人员将认识到,在不脱离所附权利要求书所限定的本发明的范围的前提下,可以对上述实施方式作出各种修改和替换。
【权利要求】
1.一种多处理器系统中的方法,所述系统包含多个处理部件、各个所述处理部件所访问的存储器以及适于生成所述多个处理部件要执行的代码序列的定序器,所述方法包括以下步骤: 在执行所述代码序列期间接收多个信号,所述信号指示在进一步执行所述代码序列期间在实例中将要应用的多个存储器访问规则; 所述实例中,针对所述多个处理部件的存储器访问应用所述存储器访问规则;以及 在所述处理部件的存储器访问违反所述规则中的一条或多条的情况下,生成警告信号。
2.根据权利要求1所述的方法,其中,所述多个信号包括指示一个或多个存储器地址以及在这些一个或多个存储器地址的预期数据内容的一个或多个信号。
3.根据权利要求1或2所述的方法,其中,所述多个信号包括指示特定存储器地址和期望访问所述特定存储器地址的处理部件的一个或多个信号。
4.根据前述权利要求中的任一项所述的方法,所述方法进一步包含以下步骤: 在生成所述警告信号时,采取动作来处理所述一个或多个违反规则的后果。
5.根据权利要求4所述的方法,其中,所述动作包括以下中的一个或多个: 暂停执行所述代码序列的一部分或者全部; 输出在所述违反之前的存储器访问的跟踪数据;以及 触发异常处理例程。
6.根据前述权利要求中的任一项所述的方法,其中,如果处理部件的存储器访问指定了禁止该处理部件访问的存储器地址,则认为出现违反。
7.根据前述权利要求中的任一项所述的方法,其中,如果存储器访问指定了对只读的存储器地址的写动作,则认为出现违反。
8.根据前述权利要求中的任一项所述的方法,其中,如果存储器访问指定了与所述存储器访问规则中的一条所指定的值不同的数据值,则认为出现违反。
9.根据前述权利要求中的任一项所述的方法,所述方法进一步包括以下步骤: 在连接到所述存储器的一条或多条总线上检测存储器访问。
10.根据前述权利要求中的任一项所述的方法,其中,从所述定序器接收所述多个信号。
11.根据权利要求10所述的方法,其中,随着所述代码序列执行的进行,所述多个信号动态地更新所述存储器访问规则。
12.根据前述权利要求中的任一项所述的方法,在为了调试而提供的跟踪数据获取电路上执行所述方法。
13.一种在多处理器系统中使用的硬件部件,所述硬件部件适于执行根据前述权利要求中的任一项所述的方法。
14.一种多处理器系统,所述多处理器系统包括: 多个处理部件; 各所述处理部件所访问的存储器; 适于生成所述多个处理部件要执行的代码序列的定序器;以及 权利要求13所述的硬件部件。
【文档编号】G06F15/16GK103593320SQ201310180544
【公开日】2014年2月19日 申请日期:2013年3月29日 优先权日:2012年3月30日
【发明者】E·乌伊贡, P·庭达尔 申请人:优北罗墨尔本有限公司