首页> 中国专利> 软件处理方法以及软件处理系统

软件处理方法以及软件处理系统

摘要

在由CPU那样的处理器和DSP所构成的、处理器和DSP以外部存储器和总线作为共享资源、DSP根据来自处理器的处理请求进行处理的多处理器系统中,使用状况的监视处理的过程,监视DSP的使用状况,当在上述使用状况的监视处理的过程中获得的竞争信息表示处于频繁使用时,软件处理的变更处理的过程,适当变更所执行的软件的处理方法,切换成等价处理,这样可以避免总线竞争,防止处理速度的降低。

著录项

  • 公开/公告号CN1506827A

    专利类型发明专利

  • 公开/公告日2004-06-23

    原文格式PDF

  • 申请/专利权人 松下电器产业株式会社;

    申请/专利号CN200310120142.3

  • 申请日2003-12-08

  • 分类号G06F11/30;G06F9/44;G06F9/45;

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人汪惠民

  • 地址 日本大阪府

  • 入库时间 2023-12-17 15:22:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-11-25

    专利权的转移 IPC(主分类):G06F11/30 登记生效日:20151104 变更前: 变更后: 申请日:20031208

    专利申请权、专利权的转移

  • 2009-04-29

    授权

    授权

  • 2004-09-01

    实质审查的生效

    实质审查的生效

  • 2004-06-23

    公开

    公开

说明书

技术领域

本发明涉及一种具有处理器和共享资源的系统,特别涉及在共享资源冲突时防止处理速度降低的技术。

背景技术

例如,在由CPU那样的处理器和DSP(Digital Signal Processor:数字信号处理器)所构成的多处理器系统中,通过由处理器和DSP分担执行处理,以图提高处理性能。通过将存储器、总线、外围电路作为共享资源共用,可以缩小芯片面积,降低成本。

当在处理器对外部存储器的数据读出过程中,而从DSP也发出对同一存储器的数据读出的处理,形成存取竞争时,由总线仲裁电路控制对存取竞争的处理。作为总线仲裁电路的控制方法,虽然受理来自DSP的数据读出处理,但直到由处理器的数据读出处理结束之前,使DSP的数据读出处理等待。

再有,在由处理器和DSP构成的、处理器对DSP放任(非约束)控制的多处理器系统中,DSP虽然无论DSP的状态如何都受理来自处理器的处理请求,但如果DSP正在执行另外的处理,则并不立即开始处理而要等待一段时间,在成为可执行的状态的时刻自主执行处理,并将处理结果返回处理器侧。

但是,在现有的具有共享资源的系统中,当频繁发生对共享资源的存取竞争时,直到先前的处理结束之前等待的频度增高,成为系统整体的处理速度降低的主要原因。

并且,仲裁电路只掌握了共享资源的状态,而并不掌握系统整体的状态。例如,当DSP正在执行其它处理的过程中而由处理器向DSP发出处理请求时,在现有的仲裁电路中,在先前的处理结束之前使该处理等待。另一方面,由于处理器在接收到向DSP发出处理的结果后才会执行下一处理,有时处理器也处于等待状态。在这样的状况下,在先前的处理结束之前向DSP发出的处理以及作为该发行源的处理器成为等待状态,因此不能有效使用处理器以及DSP。

另外,在上述现有的具有共享资源的系统中,为了避免重复向DSP的处理请求的DSP竞争,需要将软件适当分配给CPU和DSP。这样的分配作业由人工进行,在每次对软件修改时,都存在需要花费庞大的时间和工序的问题。

发明内容

本发明的主要目的在于提供一种在发生资源竞争(冲突)时,可以尽可能避免资源竞争时的处理出现停止,从而抑制系统的处理速度降低的软件处理方法及其系统。

本发明的其它目的、特征、优点可以在以后的说明中阐明。

在以下,虽然记述了多种构成要素模块,但各模块可以采用软件构成,或者也可以采用硬件构成,或者也可以采用软件和硬件组合构成。

为了达到上述目的,本发明采用以下模块构成。

依据本发明的软件处理方法,对于由处理器和处理器所使用的资源构成的系统,包括:监视处理器使用的资源的使用状况的使用状况监视处理的过程;根据在上述使用状况监视处理的过程中获取的竞争信息,适当变更所执行的软件的处理方法的软件处理的变更处理的过程。

与上述软件处理方法对应的依据本发明的软件处理系统,包括:处理器;上述处理器使用的资源;监视上述资源的使用状况的使用状况的监视装置;根据由上述使用状况的监视装置获得的竞争信息,适当变更所执行的软件的处理方法的软件处理的变更装置。

依据上述构成,动态判定资源的竞争,当竞争频度高于某种程度时,通过适当变更使用资源的软件的处理方法,可以避免资源竞争时的处理的停止,防止系统的处理速度的降低。

在上述中,对于上述软件处理的变更处理的过程、或者上述软件处理的变更装置的一种方式,是软件为进行某种处理而具有多个执行方法,在上述软件的执行中根据由上述使用状况监视处理的过程所获取的竞争信息,从上述多个执行方法中选择一个。是从多个执行方法中的选择,是最简单的方式。

在上述中,当资源是处理的存储装置时,使上述使用状况监视处理的过程是监视上述存储装置的使用状况的过程。这样,可以减轻对存储装置出现的存取竞争,有效使用存储装置。因此,可以减轻由于存储装置出现竞争而对系统的处理速度的降低的影响。

在上述中,作为上述使用状况监视处理的过程的一种方式,是保存追溯了多个时钟的存储装置的使用状况,根据过去以及现在的使用状况生成上述竞争信息。再有,作为上述使用状况监视处理的过程的另一种方式,是保存上述存储装置的使用时的使用时间,根据上述使用时间是否在给定值以上生成上述竞争信息。以时钟数或者时间作为指标,可以容易判定存储装置的使用状况。

在上述中,当上述资源是处理的存储装置、以及将上述处理器和上述存储装置连接的总线时,作为上述使用状况监视处理的过程的一种方式,是监视上述总线的使用状况的过程。这时,采用总线存取的竞争判定进行资源的竞争判定。这样,可以减轻总线竞争的发生,有效使用总线。因此,可以减轻由于总线存取出现竞争而对系统的处理速度的降低的影响。

在上述中,作为上述使用状况监视处理的过程的一种方式,是保存追溯了多个时钟的总线的使用状况,根据过去以及现在的使用状况生成上述竞争信息。再有,作为上述使用状况监视处理的过程的另一种方式,是保存上述总线的使用时的使用时间,根据上述使用时间是否在给定值以上生成上述竞争信息。以时钟数或者时间作为指标,可以容易判定总线的使用状况。

在上述中,上述资源是根据来自上述处理器(这作为第1处理器)的处理请求进行处理的第2处理器,上述使用状况监视处理的过程,或者上述使用状况的监视装置,监视上述第2处理器的使用状况。

适合第1处理器以放任控制方式控制第2处理器的情况。在放任控制方式中,第1处理器对第2处理器进行处理的请求,第2处理器无论自己处在什么状态都受理处理请求,第1处理器转移到执行其它处理。受理了处理请求的第2处理器,判断自己的状态,如果正在执行另外的处理则待机,在上述另外的处理执行结束后开始执行处理,并将处理结果返回第1处理器。在该控制方式中,由于多个处理在第2处理器竞争,第2处理器成为共享资源。

这时,在正在使用第2处理器时发生了另外的处理的情况下,作为上述竞争信息采用对上述第1处理器的中断信号,只要包括产生中断的中断功能即可。除了准备中断例程以外,对原来的软件不需要进行处理的变更、追加,可以原样适用软件,而且由于没有对软件的竞争对策处理,软件的额外开销也少。

上述软件处理方法,当进一步具有在相同地址上的可存储的多个存储器块时,作为由上述使用状况监视处理的过程获取的竞争信息的一种方式,是采用从上述多个存储器块中选择1个存储器块的信息。这时,只要在第2处理器每次执行处理,或者第2处理器执行的处理每次结束中,包括切换从所述多个存储器块中选择其中一个的选择信号的功能即可。

通过选择存储器块,可以避免处理器竞争时的处理的停止,防止系统的处理速度的降低。竞争对策的处理由于只是采用存储器块的切换电路实现,与其它方法相比要高速。

上述软件处理方法,当进一步具有软件的编译器时,作为上述编译器的一种方式,具有以下的构成。即,在上述软件中追加:从软件中识别是否是使用上述资源的处理的处理识别模块;与由上述处理识别模块识别的处理等价的、不使用上述资源的等价处理;由在上述使用状况监视处理的过程中获取的竞争信息判定使用状况的使用状况的判定处理;根据上述使用状况的判定处理的结果,将由上述处理识别模块识别的处理适当置换成上述等价处理的置换处理。这样,避免资源竞争,避免系统的处理速度下降。

再有,上述软件处理方法,当进一步具有软件的编译器时,作为上述编译器的另一种方式,具有以下的构成。即,在上述软件中追加:从软件中识别是否是使用上述资源的处理的处理识别模块;与由上述处理识别模块识别的处理等价的、不使用上述资源的等价处理;保存在当前时刻由在上述使用状况监视处理的过程中获取的竞争信息的存储处理;在过去时刻由上述竞争信息判定使用状况的使用状况的判定处理;根据上述使用状况的判定处理的结果,将由上述处理识别模块识别的处理适当置换成上述等价处理的置换处理。这样,成为加上了竞争的履历的处理,可以高精度进行资源竞争的判定。

在上述中,对于上述竞争信息的一种方式,采用从发出上述资源的处理请求开始到处理结束为止的“处理时间”。这时,上述使用状况的判定处理是将上述处理时间与一个设定值进行比较的处理。

再有,在上述中,对于上述竞争信息的另一种方式,采用从发出上述资源的处理请求开始到执行处理为止的“等待时间”。这时,上述使用状况的判定处理是将上述等待时间与一个设定值进行比较的处理。

依据该构成,通过测量处理的等待时间或者处理时间等判定是否正在发生资源竞争,如果正在发生资源竞争,则不发出引起新的资源竞争的处理。这样,可以抑制由于竞争引起的系统的处理速度的下降。

在上述中,作为对于上述使用状况的判定处理的一种方式,定期或者不定期重新进行上述资源的使用状况的判定。这时,可以采用随机数重新进行上述资源的使用状况的判定。这样,由于定期或者不定期校正竞争判定,可以更高精度进行竞争判定。

在上述软件处理方法中,在上述编译器中当由上述处理识别模块抽出的处理从上述软件的多个部位抽出时,作为上述编译器的一种方式,采用如下的构成。即,进一步在上述软件中追加识别由上述处理识别模块所识别的处理的出现部位的出现部位的识别处理,上述存储处理针对每个上述出现部位保存上述竞争信息,上述使用状况的判定处理采用针对每个上述出现部位保存的上述竞争信息进行判定。这样,通过与引起竞争的处理的出现部位一起保存竞争信息,在循环处理中可以高精度进行竞争判定。

如上所述,依据本发明,考虑到资源的竞争以及在处理器上执行处理的竞争,在发生竞争时,尽可能避免处理的停止,可以抑制系统的处理速度的下降。再有,处理的分配不需要人工进行,可以实现工时的削减。

通过参照附图在以下对本发明的说明可以更加明确理解上述以及其它特点。

附图说明

图1表示在本发明的实施方式中软件处理系统的基本构成的方框图。

图2表示在本发明的第1实施方式中软件处理系统的硬件构成的方框图。

图3表示在本发明的第1实施方式中软件处理系统的总线使用状况的监视装置的构成图。

图4A表示在本发明的第1实施方式中软件处理系统的软件构成图,图4B表示在程序中记述的处理的图,图4C表示不使用总线的等价处理图。

图5表示在本发明的第1实施方式中软件处理系统中的编译流程的流程图。

图6表示在本发明的第1实施方式中软件处理系统中的总线存取的识别装置所识别的总线存取状态的图。

图7A、图7B表示在本发明的第1实施方式中软件处理系统中的处理附加模块的软件变更的图。

图8表示在本发明的第2实施方式中软件处理系统的硬件构成的方框图。

图9表示在本发明的第2实施方式中软件处理系统的总线仲裁电路的控制流程的流程图。

图10表示在本发明的第2实施方式中软件处理系统的编译器的处理流程的流程图。

图11A、图11B表示在本发明的第2实施方式中软件处理系统中的对向外部存储器频繁存取的处理进行变更的图。

图12表示在本发明的第2实施方式中软件处理系统的总线竞争的判定流程的流程图。

图13表示在本发明的第2实施方式中软件处理系统的进行向等价处理置换的概率的图。

图14表示在本发明的第2实施方式中软件处理系统的考虑了出现场所时的总线竞争的判定流程的流程图。

图15表示在本发明的第2实施方式中软件处理系统的总线竞争的判定流程的流程图。

图16表示在本发明的第3实施方式中软件处理系统的硬件构成的方框图。

图17表示在本发明的第3实施方式中软件处理系统的编译器的处理流程的流程图。

图18A、图18B表示在本发明的第3实施方式中软件处理系统的由编译器进行的处理的变更的图。

图19表示在本发明的第3实施方式中软件处理系统的DSP竞争的判定流程的流程图。

图20A、图20B表示在本发明的第3实施方式中软件处理系统的处理流向的顺序图。

图21表示在本发明的第4实施方式中软件处理系统的硬件构成的方框图。

图22表示在本发明的第4实施方式中软件处理系统的仲裁电路的控制流程的流程图。

图23表示在本发明的第4实施方式中软件处理系统的编译器的处理流程的流程图。

图24A、图24B表示在本发明的第4实施方式中软件处理系统中的对由DSP执行的处理进行变更的图。

图25表示在本发明的第4实施方式中软件处理系统的DSP竞争的判定流程的流程图。

图26表示在本发明的第4实施方式中软件处理系统的进行向等价处理置换的概率的图。

图27表示在本发明的第4实施方式中软件处理系统的考虑了出现场所时的DSP竞争的判定流程的流程图。

图28表示在本发明的第4实施方式中软件处理系统的DSP竞争的判定流程的流程图。

图29表示在本发明的第5实施方式中软件处理系统的硬件构成的方框图。

图30表示在本发明的第5实施方式中软件处理系统的软件的图。

图31表示在本发明的第5实施方式中软件处理系统中的DSP竞争的处理流程的流程图。

图32A、图32B表示在本发明的第5实施方式中软件处理系统中的处理流向的顺序图。

图33表示在本发明的第6实施方式中软件处理系统的硬件构成的方框图。

图34A表示在本发明的第6实施方式中软件处理系统的软件构成图,图34B表示在程序中记述的包含使用DSP的命令的程序库化处理的图,图34C表示包含使用CPU的命令进行程序库化后的等价处理的图。

图35表示在本发明的第6实施方式中软件处理系统的编译流程的流程图。

图36表示在本发明的第6实施方式中软件处理系统的程序块映射图。

在所有上述图中,相同的构成要素采用相同的标号。

具体实施方式    

(基本构成)    

图1表示在本发明的实施方式中软件处理系统的基本构成的方框图。

当处理器101开始执行软件处理后,使用状况监视处理的模块103,对处理器101使用资源102的使用状况进行监视,接收其输出,获取资源102的使用状况的信息。软件处理的变更处理的模块104,根据资源102的使用状况信息的结果,适当变更所执行的软件的处理方法。

此外,使用状况监视处理的模块103以及软件处理的变更处理的模块104,虽然设想是分别由软件实现,但并没有必要只限定于此,也可以分别由硬件实现。只要具有监视资源102的使用状况、获取使用状况的信息的功能、以及接收使用状况信息的输出并适当变更软件的处理方法的功能即可。    

以下参照附图对本发明的第1到第6实施方式进行说明。

(第1实施方式)

以下参照附图对本发明的第1实施方式进行说明。

图2表示有关第1实施方式的软件处理系统的硬件构成的方框图。1001表示CPU,1002表示CPU1001所使用的总线,1003表示CPU1001的外围电路,1004表示外部存储器,1005表示保存在总线1002上的总线存取的状态的使用状况的监视装置。

图3表示上述使用状况的监视装置1005的构成图。1101表示只在特定期间识别在总线1002上是否出现总线存取的总线存取的识别装置,1102表示接收总线存取的识别装置1101的输出、记录总线存取的状态的总线存取的状态寄存器。

图4表示上述软件处理系统的软件的构成图。1201表示在CPU1001上动作的程序,1202、1203、1204表示程序1201中记述的处理,1205、1206、1207表示具有和处理1202、1203、1204分别等同的功能,并且不使用总线1002的CPU1001用的处理。

图5表示上述软件处理系统的编译流程的流程图。1301是编译器将程序1201编译的编译模块。1302是在程序1201中记述的处理中的,识别是否使用总线1002的处理的处理识别模块。1303是附加使用状况的判定处理和置换处理的处理附加模块。在此,使用状况的判定处理是指,接收处理识别模块1302的输出,读取在使用状况的监视装置1005中总线存取的状态寄存器1102的值,动态判定总线存取的信息的程序。而置换处理是指,将由处理识别模块1302得出是使用总线1002的处理的判断的处理,通过处理识别模块1302置换成不使用与上述处理等价的资源的等价处理。

图6表示上述总线存取的识别装置1101识别的总线存取的状态的图。图7表示由上述处理附加模块1303进行软件的变更的图。

以下对本实施方式的软件处理系统的动作进行说明。

由CPU1001,对在程序1201记述的处理1202、1203、1204,按照记述顺序依次处理。这时,假定处理1202、1203使用总线1002。

如图4、图5所示,首先,编译模块1301,在对程序1201编译时,对处理1202、1203、1204编译。同时,处理识别模块1302,对处理1202、1203,识别出这些是使用总线1002的处理。

然后,处理附加模块1303,在处理1202和处理1203正要执行之前,附加使用状况的判定处理以及置换处理。通过该附加处理,程序1201的处理,在处理1202正要执行之前,进行使用状况的判定处理,并根据需要执行置换处理。

总线存取的识别装置1101,计算出总线存取的频度α,将其结果记录在总线存取的状态寄存器1102中。该总线存取频度α,如图6所示,如果发生了总线存取则增加,如果没有发生总线存取则减少。总线存取频度α的增减程度可以任意设定。

在此,假定总线存取频度α的增减程度为β。总线存取频度α可按如下算出。首先,α在每经过1循环则乘以β,然后在该值(α×β)上,如果发生了总线存取则加1,如果没有发生总线存取则加0。即,假定第n次循环的α的值为α(n),则

    α(n)=β×α(n-1)+(1或者0)

例如,假定β=0.9时,α的值则为0到10之间的值。

    α(1)=1

    α(2)=0.9+1

    α(3)=0.92+0.9+1

    α(4)=0.93+0.92+0.9+1

    α(n)=0.9n-1+0.9n-2+…0.92+0.9+1     ……(1)

    0.9×α(n)=0.9n+0.9n-1+…0.92+0.9    ……(2)

当n足够大时,由(1)式减去(2)式,则

    (1-0.9)·α(n)=1

    ∴α(n)=10

这表明,作为是否频繁发生总线存取的状况的标志的总线存取频度α,收敛于极限值10。

假定β为0.9时的总线存取频度α和循环次数之间的关系如图6所示。在总线存取频度α增加的区域频繁发生总线存取,在总线存取频度α减少的区域不发生总线存取,

如上所述,总线存取的识别装置1101,计算出总线存取频度α的值,并将其结果记录在总线存取的状态寄存器1102中。

处理附加模块1303中的使用状况的判定处理,读取记录总线存取的状态寄存器1102中的总线存取频度α,与判定是否频繁发生总线存取的特定阈值进行比较,判定总线存取的状态。该阈值可以任意设定。对于上述β=0.9的情况,α可取0到10之间的值。假定阈值设定为5,当总线存取频度α比5大时,判定在该时刻频繁发生总线存取。相反,当总线存取频度α在5以下时,判定不频繁发生总线存取。

该判定结果如果是频繁使用总线1002,则由置换处理替换处理1202,而执行处理1205。相反,该判定结果如果是总线1002的使用不频繁时,仍然执行处理1202。

对于处理1203也相同,执行使用状况的判定处理以及置换处理,如果频繁使用总线1002,则替换处理1203,而执行处理1206,如果总线1002的使用不频繁时,仍然执行处理1203。

依据上述那样的本实施方式,通过使用状况的判定处理以及置换处理,动态判定总线存取竞争,当总线存取频度高于某种程度以上时,适当变更成不使用总线的等价处理。这样,可以减轻对总线的存取竞争的发生,避免处理的停止,可以有效使用总线,可以减轻对系统处理速度的降低的影响。

此外,在本实施方式中,虽然处理器为1个CPU,资源为1个总线,但对于多个CPU、总线的情况也适用。简言之,只要是至少1个资源,和使用该资源的至少1个处理器即可。例如,对于CPU使用共享存储器时的存储器竞争,也可以采用本实施方式,减轻存储器竞争的发生,可以有效利用存储器,减轻由于存储器竞争的发生而对系统的处理速度的降低的影响。

此外,在本实施方式中,虽然在总线存储器的状态寄存器中求取总线存取频度α,但对于总线存取频度的求取方法或者求取总线存取频度的方法,也可以不采用本方法,只要是可以作为指标求取的参数,就可以获得同等的效果。

(第2实施方式)

然后,采用图8~图15对处理器以放任控制方式控制DSP时的第2实施方式中的软件处理系统具体进行说明。在放任控制方式中,处理器对DSP请求处理,DSP无论自己处于何种状态都受理处理请求,处理器转移到执行另外的处理。受理了处理请求的DSP,判定自己的状态,如果是正在执行另外的处理的过程中则进行待机,在上述另外的处理执行结束后开始执行处理,并将处理结果返回处理器。在该控制方式下,由于多个处理在DSP中进行竞争,所以DSP为共享资源。

图8表示有关第2实施方式中软件处理系统的硬件构成的方框图。软件处理系统由处理器2001、DSP2002、保存由处理器2001和DSP2002执行的软件的存储装置2003、外围电路2004、总线仲裁电路2005、外部存储器2006、共享总线2007所构成。

处理器2001以放任控制方式控制DSP2002。当处理器2001从存储装置2003读出的软件是应由DSP2002执行的处理时,处理器2001向DSP2002发出处理请求,DSP2002接受处理请求后,执行处理。外部存储器2006是处理器2001、DSP2002执行处理时所使用的共享存储器。总线仲裁电路2005管理总线存取,当共享存储器的存取竞争,即共享总线2007的总线竞争发生时,判定是否执行向外部存储器2006的存取处理。

在此,总线仲裁电路2005的控制流程如图9所示。2101是判定是否发生了对作为共享存储器的外部存储器2006的存取请求(读取或者写入请求)的存取请求的判定模块。2102是判定外部存储器2006是否处在存取中的存储器状态的判定模块。2103是对存取请求释放总线,促使存储器存取的存储器存取的许可模块。2104是判定处理是否结束的处理结束的判定模块。

当在外部存储器的存取中新发生了对外部存储器2006的存取请求时,即发生了总线竞争时,总线仲裁电路2005,先受理存取请求,而对于实际的处理在先前的处理结束之前处于待机(wait)状态。如果对外部存储器2006的存取频繁发生时,发生总线竞争,由总线仲裁电路2005使处理处于待机(wait)状态。其结果,将会降低软件处理系统整体的处理速度。为此,在本实施方式中,避免总线竞争,防止处理速度的降低。

本实施方式中的编译器,除了作为根据由处理记述语言记述的软件输出目标代码的通常的编译器的功能之外,还具有图10所示的处理流程的功能。

编译器,首先,作为处理识别模块2201,对是否是对外部存储器2006频繁存取的处理进行识别。只要处理识别模块2201预先认识向外部存储器2006的存取处理即可。

然后,对于所识别的存取频度高的处理,判定是否由编译器等预先在程序库等中准备了与此等价的、对外部存储器2006的存取少的处理的等价处理。如果已经准备,编译器,对于所识别的存取频度高的处理,追加等价处理、存储处理、使用状况的判定处理、置换处理。

在此,存储处理是指,记录从发出频繁对外部存储器2006存取的处理请求开始到处理结束为止的处理时间的处理。使用状况的判定处理是指,根据由存储处理保存的使用状况的信息判定是否发生了总线竞争的的处理。而置换处理是指将所识别的存取频度高的处理置换成等价处理的处理。

图11表示使用具有图10的处理流程的编译器时的、变更成频繁存取处理的等价处理的动作(左边的数字是行号)。图11A表示编译程序执行前的处理,图11B表示编译程序执行后的处理。在此,将对外部存储器2006频繁存取的处理设为函数“mem_acs_many( )”,将其等价处理设为“mem_acs_few( )”。图12表示依据本实施方式的总线竞争的判定流程。

编译器,通过预先登录对外部存储器2006的存取处理,采用处理识别模块2201从软件中识别函数“mem_acs_many( )”。

然后,编译器,对于所识别的存取频度高的处理,附加上述的等价处理、存储处理、使用状况的判定处理、置换处理。具体如下进行。

首先,在图11B的第2行,在软件中附加使用状况的判定处理。即,追加“if(task_time<DEFINED_TIME)”。在此,“task_time”,是从处理器2001发出对外部存储器2006存取的处理请求开始到处理结束为止的处理时间。“DEFINED_TIME”是预先设定的设定值。此外,对于设定值,希望根据软件处理系统的规格设定确切的值。

在执行对外部存储器2006存取的处理之前,通过将“task_time”与“DEFINED_TIME”进行比较判定总线竞争。

然后,图11B的从第3行到第6行,表示由使用状况的判定处理推测没有发生总线竞争时的存储处理。在变量“start_time”中代入当前时刻的“timer_count”。执行对外部存储器2006的函数“mem_acs_many( )”。在变量“end_time”中代入当前时刻的“timer_count”。然后,参照“mem_acs_many( )”执行前后的时间值,按照“task_time=end_time-start_time”计算其差,获得“task_time”。

图11B的从第8行到第10行,表示置换处理。由使用状况的判定处理推测正发生总线竞争时,为了防止进一步发生总线竞争,置换成对外部存储器2006存取少的等价处理。也就是说,执行“mem_acs_many( )”的等价处理“mem_acs_few( )”。由该置换处理进行置换的处理,虽然为保持处理的匹配性而在功能上是等价,但希望是对外部存储器2006存取少的处理。

在本实施方式中,上述编译器通过追加的等价处理、存储处理、使用状况的判定处理、置换处理,实现使用状况的监视处理的过程以及软件处理的变更处理的过程。即,使用状况的监视处理的过程相当于由存储处理保存“task_time”,向使用状况的判定处理输出“task_time”的处理。而软件处理的变更处理的过程则相当于根据“task_time”将所识别的存取频度高的处理置换成等价处理的置换处理。

依据以上那样的本实施方式,根据对“task_time”和“DEFINED_TIME”的比较结果,判定是否正在发生总线竞争,当判定正在发生总线竞争时,自动将对外部存储器频繁存取的处理置换成对外部存储器存取少的处理。其结果,可以一边动态判定总线竞争一边自动进行处理的分配,同时可以避免新的总线竞争,防止处理速度的降低。

此外,本实施方式中的上述发明内容,为了与后述的发明区别,作为第1方法。

然而,在第1方法中,当“task_time≥DEFINED_TIME”时始终进行向等价处理的置换。为此,实际上当解除总线竞争后,使用状况的判定处理有可能继续作出处于总线竞争的错误判断。避免这种情况的方法是以下说明的第2方法。

作为第2方法的使用状况的判定处理,在由总线仲裁电路2005输出的竞争信息的“task_time”和“DEFINED_TIME”之间的比较结果的基础上,通过使用随机数进行总线竞争的判定。

图13表示对“task_time”和“DEFINED_TIME”之比进行向等价处理的置换的概率。随着“task_time”和“DEFINED_TIME”之比的增大,置换成等价处理的概率减少。

在“task_time”比“DEFINED_TIME”小,其比值比1小的情况下,使用状况的判定处理和第1方法同样判定没有发生总线竞争,不进行等价处理的置换。

但是,在“task_time”在“DEFINED_TIME”以上,其比值在1以上的情况下,按照图13的概率进行向等价处理的置换。或者,不进行向等价处理的置换,而再次测量处理时间进行保存。

在第1方法中,当“task_time”在“DEFINED_TIME”以上时,必定判定正在发生总线竞争。对此,在根据采用随机数的概率判定总线竞争的第2方法中,有可能输出和第1方法相反的、没有发生总线竞争的判定结果。然后,按照图12所示总线竞争判定流程,再次记录处理时间。即,通过在总线竞争的判定中加上随机数后重新进行判定。这样,可以避免进行尽管实际上已经解除了总线竞争但仍继续保持判定总线竞争的使用状况的判定处理作出的错误判断。

第2方法对于在一系列处理中频繁发生总线竞争的系统是有效的。“task_time”和“DEFINED_TIME”之比越大使向等价处理的置换概率越小,是因为“task_time”越长在不远的将来解除总线竞争的可能性越高。

此外,对于图13的概率值,需要根据对象系统的规格采用适当的值。

以上,采用第2方法可以提高使用状况的判定处理中的总线竞争的判定精度。

此外,在第2方法中,对于总线竞争的判定虽然使用了采用随机数的概率,也可以考虑不采用随机数的总线竞争的判定。例如,如果总线竞争时处理时间的平均值或者最大值等常数预先已知,也可以从判定处在总线竞争中开始每个一定周期进行处理时间的再次测量以及记录。

以下对第3方法进行说明。

当对外部存储器2006频繁存取的处理在多个部位存在时,如果按照该处理的调用源(出现部位)判定总线竞争,将提高判定精度。在第3方法中,针对由处理识别模块2201所识别的存取频度高的处理的每个出现部位保存处理时间,通过使用该处理时间高精度进行总线竞争的判定。

在图8的软件处理系统中,在执行记述了多个处理的函数时,将当前的程序计数器值临时压入到堆栈寄存器中,执行函数的处理。在函数处理结束后,从堆栈寄存器读出程序计数器值,使程序计数器返回到原来的值。在第3方法中,出现部位的识别处理通过从上述堆栈寄存器中读出程序计数器值确定由处理识别模块2201所识别的存取频度高的处理的出现部位。

在具有图12的判定流程的第1方法中,进一步追加出现部位的识别处理时的总线竞争的判定流程如图14所示。

首先,对于由处理识别模块2201所识别的存取频度高的处理,由出现部位的识别处理调查处理的出现部位。如果按照上述那样参照堆栈寄存器,可以确定出现部位。

然后,参照针对每个出现部位保存的处理时间。然后,通过将针对每个出现部位所保存的处理时间与设定值进行比较,判定是否正在发生总线竞争,如果正在发生总线竞争,置换成等价处理后执行处理。如果没有发生总线竞争,一边保存处理时间一边继续执行所识别的存取频度高的处理。此外,在针对每个出现部位保存处理时间的部分没有保存处理时间时,看作判定了没有发生总线竞争。这时,一边测量处理时间,一边执行由处理识别模块2201所识别的存取频度高的处理,将所测量的处理时间新保存。

第3方法,对于循环处理等反复执行同一处理进行处理时,通过参照按照出现部位判定的处理时间来提高总线竞争的判定精度。

此外,通过将本实施方式中的“task_time”保存在第1实施方式的使用状况的监视装置中也可以进行总线竞争的判定。这时的总线竞争的判定流程如图15所示。在求出处理时间后,通过在使用状况的监视装置中也保存处理时间,可以动态判定总线竞争,防止伴随总线竞争的处理速度的降低。

(第3实施方式)

图16表示有关第3实施方式中软件处理系统的硬件构成的方框图。软件处理系统由DSP4001、处理器4002、DSP的使用状况的监视装置4003、和存储器4004所构成。存储器4004保存作为由DSP4001和处理器4002执行的处理的如图17所示的目标代码4105。存储器4004,作为DSP4001和处理器4002执行处理时的共享存储器,保存处理结果或者处理数据。

处理器4002以放任控制方式控制DSP4001。当处理器4002从存储器4004读出的软件是由DSP4001执行的处理时,处理器4002向DSP4001发出处理请求,DSP4001接受处理请求后,执行处理。DSP的使用状况的监视装置4003是保存了当前是否由DSP4001执行处理中的寄存器(存储装置),由于分配了特定的地址,从软件的处理可以进行读出。

在软件的编译的流程的图17中,用C语言等处理记述语言编写的源代码4102,采用处理器用的程序库4103和DSP用的程序库4104,变换成目标代码4105。其结果,在目标代码4105中包含执行所需要的处理器用的程序库4106和DSP用的程序库4107。

编译器,除了包含从处理记述语言生成目标代码的通常的编译器功能之外,还包括对由处理识别模块识别的处理附加特定的处理的处理附加模块。

由处理识别模块以及处理附加模块对处理的变更如图18所示。在此,图18A的用处理记述语言编写的源代码,表示采用处理识别模块,从源代码4102中识别出作为由DSP4001执行的处理。即,函数“func1( )”、“func2( )”、“func3( )”全部是由DSP4001执行的处理。此外,通过将DSP4001执行的处理预先登录在处理识别模块中,可以从源代码中识别出由DSP4001执行的处理。    

图18B的源代码,表示由处理附加模块附加后的处理。此外,处理附加模块,对于func1、func3也和func2同样,附加特定的处理。

由处理附加模块附加的特定处理是指,使用状况的判定处理和置换处理。使用状况的判定处理是通过读出DSP的使用状况的监视装置4003判定DSP4001是否正在执行处理中的处理。在图18B中,第8行的“if(DSP处于等待状态)”相当于使用状况的判定处理。在此,等待状态是指DSP4001没有执行处理,等待来自处理器4002的处理请求。在图18B的第9行到第11行中,作为func2的处理内容,使用DSP用的程序库4104时为“func2_dsp( )”,使用处理器用的程序库4103时为“func2_cpu( )”。这些是具有同等功能的处理。

即,识别是否是使用DSP4001的处理,在执行该处理之前通过监测DSP的使用状况的监视装置4003,判定DSP4001的状态。然后,接收判定结果,如果DSP4001处于等待状态,直接由DSP4001执行处理。但是,当DSP4001正在执行其它处理中时,置换成不使用DSP4001的其它处理。通过这样的软件处理的变更处理,可以避免DSP竞争。作为参考,图19表示DSP竞争的判定流程。

以下,采用图20说明处理的流向的具体例。

图20A表示没有发生DSP竞争时的处理的流向。在软件中有func0、func1、func2、func3、func4、func5、func6的处理。对于func0、func2、func4,从处理器4002对DSP4001发出处理请求,分别采用DSP用的程序库4104在DSP4001上执行func0_dsp、func2_dsp、func4_dsp。DSP4001和处理器4002采用共享存储器传递相互的处理结果。func0_dsp、func2_dsp、func4_dsp将处理结果保存在共享存储器4004中。所保存的处理结果,在func3和func6执行处理时被读出。

如图20A所示没有发生DSP竞争时,在不会浪费处理器4002和DSP4001的资源的情况下执行处理。

但是,如图20B所示当func0_dsp的处理时间变长,在其结束之前funcl就发出了func2_dsp的处理请求时,发生DSP竞争。这时,在func0_dsp结束之前func2_dsp不能开始处理。其结果,采用的处理结果的func3也不能执行,处理整体的速度变慢。

为此,在本实施方式中,当func1发出func2_dsp的处理请求时,观测DSP的使用状况的监视装置4003。其结果,如果识别出DSP竞争,采用和func2等价的功能的不是由DSP4001而是由处理器4002进行处理的func2_cpu替代func2_dsp,执行处理。即,在发出由DSP4001执行的处理的处理请求时监视DSP4001的状态,采用可以确切将处理分配给DSP4001还是处理器4002的软件处理的变更处理。这样,可以防止DSP竞争,防止处理速度的降低。通过确切分配处理而使用处于等待状态的处理器4002,可以有效使用资源。

此外,由于本实施方式的编译器的处理识别模块、处理附加模块虽然增加了循环数,除了DSP的使用状况的监视装置4003以外,没有新增加硬件,可以避免DSP竞争,防止处理速度的降低。

(第4实施方式)

采用图21~图28具体说明依据第4实施方式的软件处理系统。

图21表示软件处理系统的硬件构成的方框图。软件处理系统由处理器5001、DSP5002、保存由处理器5001和DSP5002执行的软件的存储装置5003、外围电路5004、总线仲裁电路5007、外部存储器5005、共享总线5006、仲裁电路5008、使用状况的监视装置5009所构成。

处理器5001以放任控制方式控制DSP5002。当处理器5001从存储装置5003读出的软件是应由DSP5002执行的处理时,处理器5001向DSP52002发出处理请求,DSP5002接受处理请求后,执行处理。外部存储器5005是处理器5001、DSP5002执行处理时所使用的共享存储器。DSP5002内置总线仲裁电路5008。仲裁电路5008,在DSP5002执行处理中新发来处理请求,即发生DSP竞争时,判定是否可以执行新发出的处理。并且使用状况的监视装置5009监视DSP5002的使用状况,根据要求输出使用状况。

在此,仲裁电路5008的控制流程如图22所示。5101是判定由DSP5002执行的处理的处理请求是否发生的处理请求的判定模块。5102是判定当前DSP5002是否处于等待来自处理器5001的处理请求的等待状态的DSP状态的判定模块。5103是对处理请求促使DSP5002执行处理的DSP使用的许可模块。5104是判定处理是否结束的处理结束的判定模块。

当在DSP5002执行处理中新发来处理请求,即发生DSP竞争时,仲裁电路5008先受理处理请求,对于实际的处理在先前的处理结束之前处于待机(wait)状态。如果对由DSP5002执行的处理频繁发生时,发生DSP竞争,由仲裁电路5008使处理处于待机(wait)状态。其结果,将降低软件处理系统整体的处理速度。为此,在本实施方式中,避免DSP竞争,防止处理速度的降低。

如图23所示,编译器,首先,作为处理识别模块5201,对是否是由DSP执行的处理进行识别。这只要由处理识别模块5201预先对由DSP执行的处理进行识别即可。

然后,对于识别为由DSP执行的处理,判定是否在程序库等中预先准备了与此等价的、由处理器5001执行的处理的等价处理。如果已经准备,编译器,对于识别为由DSP执行的处理,追加等价处理、存储处理、使用状况的判定处理、置换处理。

在此,存储处理是指记录从发出由DSP5002执行处理的处理请求开始到处理开始为止的处理时间的处理。使用状况的判定处理是指根据由存储处理保存的使用状况的信息判定是否发生了DSP竞争的的处理。而置换处理是指将识别为由DSP执行的处理置换成等价处理的处理。

图24表示使用具有图23的处理流程的编译器时的、变更成由DSP执行的处理的等价处理的动作。图24A表示编译程序执行前的处理,图24B表示编译程序执行后的处理。在此,由DSP5002执行的处理为函数“dsp_task( )”,其等价处理为“proc_dsptask( )”。图25表示依据本实施方式的DSP竞争的判定流程。

然后,编译器,对于识别为由DSP执行的处理,附加上述的等价处理、存储处理、使用状况的判定处理、置换处理。具体如下进行。

首先,在图24B的第2行,在软件中附加使用状况的判定处理。即,追加“if(wait_time<DEFINED_TIME)”。在此,“wait_time”,是从处理器5001发出由DSP5002执行处理的处理请求开始到处理开始为止的等待时间。“DEFINED_TIME”是预先设定的设定值。此外,对于设定值,希望根据软件处理系统的规格设定确切的值。

等待时间“wait_time”表示过去发生的由DSP5002执行处理的等待时间。在发出当前时刻发生的由DSP5002执行处理的处理请求之前参照“wait_time”,通过和“DEFINED_TIME”进行比较判定DSP竞争。

然后,图24B的从第3行到第7行,表示由使用状况的判定处理推测没有发生DSP竞争时的存储处理。在变量“start_time”中代入当前时刻的“timer_count”。在由DSP可以开始处理之前等待。在变量“end_time”中代入当前时刻的“timer_count”。然后,参照发出处理请求的时刻和开始执行“dsp_task( )”的时间值,按照“wait_time=end_time-start_time”计算其差,获得“wait_time”。

图24B的从第9行到第11行,表示置换处理。由使用状况的判定处理推测正发生DSP竞争时,为了防止进一步发生DSP竞争,置换成由处理器5001执行的等价处理。执行“dsp_task( )”的等价处理的“proc_dsptask( )”。由该置换处理进行置换的处理,虽然为保持处理的匹配性而在功能上是等价,但希望不是由DSP5002执行的处理。

在本实施方式中,上述编译器通过追加的等价处理、存储处理、使用状况的判定处理、置换处理,实现使用状况的监视处理的过程以及软件处理的变更处理的过程。即,使用状况的监视处理的过程相当于由存储处理保存“wait_time”,向使用状况的判定处理输出“wait_time”的处理。而软件处理的变更处理的过程则相当于根据“wait_time”将识别由DSP执行的处理的处理置换成等价处理的置换处理。

依据以上那样的本实施方式,根据对“wait_time”和“DEFINED_TIME”的比较结果,判定是否正在发生DSP竞争,当判定正在发生DSP竞争时,自动将由DSP5002执行的处理置换成由处理器5001执行的处理。其结果,可以一边动态判定DSP竞争一边自动进行处理的分配,同时可以避免新的DSP竞争,防止处理速度的降低。

此外,本实施方式中的上述发明内容,为了与后述的发明区别,作为第4方法。

然而,在第4方法中,当“wait_time≥DEFINED_TIME”时始终进行向等价处理的置换。为此,实际上当解除DSP竞争后,使用状况的判定处理有可能继续作出处于DSP竞争的错误判断。避免这种情况的方法是以下说明的第5方法。

作为第5方法的使用状况的判定处理,在由使用状况的监视装置输出的竞争信息的“wait_time”和“DEFINED_TIME”之间的比较结果的基础上,通过使用随机数进行DSP竞争的判定。

图26表示对“wait_time”和“DEFINED_TIME”之比进行向等价处理的置换的概率。在“wait_time”比“DEFINED_TIME”小,其比值比1小的情况下,使用状况的判定处理和第4方法同样判定没有发生DSP竞争,不进行等价处理的置换。

但是,在“wait_time”在“DEFINED_TIME”以上,其比值在1以上的情况下,按照图26的概率进行向等价处理的置换。或者,不进行向等价处理的置换,而再次测量等待时间进行保存。

在第4方法中,当“wait_time”在“DEFINED_TIME”以上时,必定判定正在发生DSP竞争。对此,在根据采用随机数的概率判定DSP竞争的第5方法中,有可能输出和第4方法相反的、没有发生DSP竞争的判定结果。然后,按照图25所示DSP竞争判定流程,再次记录等待时间。即,通过在DSP竞争的判定中加上随机数后重新进行判定。这样,可以避免进行尽管实际上已经解除了DSP竞争但仍继续保持判定DSP竞争的使用状况的判定处理作出的错误判断。

第5方法对于在一系列处理中频繁发生DSP竞争的系统是有效的。“wait_time”和“DEFINED_TIME”之比越大使向等价处理的置换概率越小,是因为“wait_time”越长在不远的将来解除DSP竞争的可能性越高。

此外,对于图26的概率值,需要根据对象系统的规格采用适当的值。

以上,采用第5方法可以提高使用状况的判定处理中的DSP竞争的判定精度。

此外,在第5方法中,对于DSP竞争的判定虽然使用了采用随机数的概率,也可以考虑不采用随机数的DSP竞争的判定。例如,如果DSP竞争时等待时间的平均值或者最大值等常数预先已知,也可以从判定处在DSP竞争中开始每个一定周期进行等待时间的再次测量以及记录。

以下对第6方法进行说明。

当由DSP5002执行的处理在多个部位存在时,如果按照该处理的调用源(出现部位)判定DSP竞争,将提高判定精度。在第6方法中,针对由处理识别模块5201识别为由DSP执行的处理的每个出现部位保存等待时间,通过使用该等待时间高精度进行DSP竞争的判定。

在图21的软件处理系统中,在执行记述了多个处理的函数时,将当前的程序计数器值临时压入到堆栈寄存器中,执行函数的处理。在函数处理结束后,从堆栈寄存器读出程序计数器值,使程序计数器返回到原来的值。在第6方法中,出现部位的识别处理通过从上述堆栈寄存器中读出程序计数器值确定由处理识别模块5201识别为由DSP执行的处理的出现部位。

在具有图25的判定流程的第4方法中,进一步追加出现部位的识别处理时的DSP竞争的判定流程如图27所示。

首先,对于由处理识别模块5201识别为由DSP执行的处理,由出现部位的识别处理调查处理的出现部位。如果按照上述那样参照堆栈寄存器,可以确定出现部位。

然后,参照针对每个出现部位保存的等待时间。然后,通过将针对每个出现部位所保存的等待时间与设定值进行比较,判定是否正在发生DSP竞争,如果正在发生DSP线竞争,置换成等价处理后执行处理。如果没有发生DSP竞争,一边保存等待时间一边继续执行识别为由DSP执行的处理。此外,在针对每个出现部位保存等待时间的部分没有保存等待时间时,看作判定了没有发生DSP竞争。这时,一边测量等待时间,一边执行由处理识别模块5201识别为由DSP执行的处理,将所测量的等待时间新保存。

第6方法,对于循环处理等反复执行同一处理进行处理时,通过参照按照出现部位判定的处理时间来提高DSP竞争的判定精度。

此外,通过将本实施方式中的“wait_time”保存在第3实施方式的使用状况的监视装置中也可以进行DSP竞争的判定。这时的DSP竞争的判定流程如图28所示。在求出等待时间后,通过在使用状况的监视装置中也保存等待时间,可以动态判定DSP竞争,防止伴随DSP竞争的处理速度的降低。

(第5实施方式)

图29表示有关第5实施方式中软件处理系统的硬件构成的方框图。软件处理系统由DSP7001、处理器7002、DSP的使用状况的监视装置7003、和存储器7004所构成。存储器7004保存作为由DSP7001和处理器7002执行的处理的如图30所示的目标代码。存储器7004,作为DSP7001和处理器7002执行处理时的共享存储器,保存处理结果或者处理数据。

处理器7002以放任控制方式控制DSP7001。当处理器7002从存储器7004读取读取软件,进行解码,是由DSP7001执行的处理时,处理器7002向DSP7001发出处理请求,DSP7001执行处理。在此,度于处理器7002向DSP7001的处理请求的发行,进一步详细说明。

处理器7002,首先在DSP7001中的命令缓存器中写入处理命令以及进行处理所需要的数据。在数据写入结束后,处理器7002向DSP7001发出处理开始的请求。受理了该请求的DSP7001,从命令缓存器中读出处理命令、数据后执行处理。即,处理器7002对DSP7001的处理请求是指向DSP7001的命令缓存器中写入处理命令、数据以及发行处理开始的请求等一系列动作。

并且,DSP的使用状况的监视装置7003,监视DSP7001当前是否正在执行处理中,同时监视处理器7002是否向DSP7001的命令缓存器中进行处理命令以及数据的写入。然后,当DSP7001正在执行任意的处理中处理器7002为发出处理请求而向DSP7001的命令缓存器中进行了写入时,DSP的使用状况的监视装置7003向处理器7002发出中断信号。接收到中断信号的处理器7002停止向DSP7001发出处理开始的请求。其结果,由于停止了向DSP7001发出处理开始的请求,DSP7001不执行新的处理。即,由中断信号将新的DSP7001的处理请求取消。

进一步,接收到中断信号的处理器7002,进行替代由DSP7001执行的处理的替代处理。在此,替代处理是指不使用DSP7001的处理,在本实施方式中,是指和由DSP7001执行的预定的处理在功能上等价的、由处理器7002执行的处理。

为了实现对以上的中断信号的动作,对于由DSP7001执行的处理,分别准备与其在功能上等价的、由处理器7002执行的处理。然后,当接收到由DSP的使用状况的监视装置7003发出的中断信号时,处理器7002停止对DSP7001的处理请求,由处理器7002自身执行等价处理。

图30表示在本实施方式的软件处理系统中的软件。在main函数中有func1、func2、func3、func4、func5、func6、func7、func8,其中由DSP7001执行的处理有func2、func4、func6。在软件中包含由处理器7002执行的处理的处理器用程序库、和由DSP7001执行的处理的DSP用程序库。在图30中对于func2、func4、func6,分别是可以采用func2_dsp、func4_dsp、func6_dsp的DSP用程序库在DSP7001上执行处理,也可以采用func2_cpu、func4_cpu、func6_cpu的处理器用程序库在处理器7002上执行处理。

图31表示执行图30的软件时DSP竞争时的处理流程。如上所述,当在DSP7001执行其它处理中对DSP7001新发出处理请求时,向处理器7002输出中断信号,将使用DSP用程序库的处理置换成使用CPU用程序库的处理。

然后,采用图32对处理流向的具体例进行说明。

图32A表示DSP7001的任务没有竞争时的情况。处理器7002执行func1。处理器7002在执行func1后,对DSP7001发出func2的处理请求,DSP7001执行func2_dap。另一方面,处理器7002执行func3。DSP7002在执行func2后,将处理结果写入到存储器7004中。存储器7004是可以由处理器7002、DSP7001存取的共享存储器。处理器7002在执行func3后,对DSP7001发出func4的处理请求,DSP7001执行func4_dsp,处理器本身执行func5。DSP7002在执行func4后,将处理结果写入到存储器7004中。处理器7002在执行func5后,对DSP7001发出func6的处理请求,DSP7001执行func6_dsp,处理器本身执行func7。DSP7002在执行func6后,将处理结果写入到存储器7004中。处理器7002从存储器7004中读取以上的处理结果,处理func8。

在图32A中由于DSP7001的任务没有竞争,可以有效利用处理器7002和DSP7001的资源。

图32B表示DSP7001的任务有竞争时的情况。在此,在func2_dsp没有结束的期间,从处理器7002发出func4的处理请求,引起DSP竞争。其结果,func4的处理在func2_dsp结束之前处于停止状态,因此降低了系统的处理速度。 

为此,在本实施方式中,DSP的使用状况的监视装置7003判定DSP竞争,对要发出func4的处理请求的处理器7002发出中断信号。接收到该信号的处理器7002,中断自身正在执行的func5,采用CPU用程序库的func4_cpu在处理器7002对func4进行处理,在存储器7004中写入处理结果。然后,处理器7002重新执行中断后的func5。

这样,在本实施方式的软件管理系统中,一边执行处理一边判定DSP竞争,通过确切将处理分配给DSP7001还是处理器7002,避免DSP竞争,防止处理速度的降低。进一步,通过采用DSP的使用状况的监视装置7003的硬件进行处理,除了准备中断子程序以外,对源代码4102没有记述上的修正、追加,因此也可以适用于以汇编或者目标代码提供的情况。

(第6实施方式)

以下根据附图说明本发明的第6实施方式。

图33表示有关第6实施方式的软件管理系统的硬件构成的方框图。8001表示CPU,8002表示DSP,8003表示总线,8004表示外部存储器,8005表示外围电路,8006表示CPU8001中的存储器,8007表示存储器8006中的以块形式的DSP8002用的存储器块,8008表示存储器8006中的以块形式的CPU8001用的存储器块,8009表示监视DSP8002是否正在进行处理的使用状况的监视装置,8010表示切换DSP用存储器块8007和CPU用存储器块8008的块切换装置。

图34表示软件管理系统的软件的构成图。8101表示在CPU8001以及DSP8002上动作的程序,8102、8103、8104表示在程序8101中记述的包含使用DSP8002的命令的程序库化后的处理,8105、8106、8107表示分别具有与8102、8103、8104同等的功能的,包含使用CPU8001的命令的程序库化后的处理。

图35表示软件管理系统中的编译流程的流程图。8201表示将程序8101编译的编译模块,8202表示识别由DSP8002进行的处理的处理识别模块,8203表示映射DSP用存储器块8007或者CPU用存储器块8008的映射模块。

对以上那样构成的本实施方式的动作进行说明。

图36表示在存储器块上的软件的映射图。

DSP8002通过受理来自CPU8001的处理请求执行处理。CPU8001和DSP8002之间的控制方式是放任控制方式。程序8101中记述的处理func1、func2、func3,包含使用DSP8002或者CPU8001的命令,作为顺序按照处理func1、处理func2、处理func3的顺序,这些处理假定都不依赖于数据。

程序8101,在由具有编译器的编译模块8201进行编译时,由处理识别模块8202识别出是包含使用DSP8002的命令的处理的处理func1、func2、func3。然后,如图36所示,由存储器块的映射模块8203,映射到DSP用存储器块8007中的DSP8002用程序库化后的处理8102、8103、8104。同样,映射到CPU用存储器块8008中的CPUP8001用程序库化后的处理8105、8106、8107。这时,处理8102和处理8105以相同的地址作为开始地址。对于处理8103和处理8106、处理8104和处理8107也同样。这样,编译器具有可以识别出相同名称的不同处理器用的处理进行编译的特点。

在处理程序8101时,假定最初进行处理func1。处理func1被调用,处理func1所映射的开始地址的命令被CPU8001读取的瞬间,由块切换装置8010执行块切换的锁定。通过该锁定的执行,将不能由其它处理执行块切换。并且由使用状况的监视装置8009识别是否是由DSP8002进行处理的信息,该信息成为对块切换装置8010的输入信号,由块切换装置8010向存储器8006进行为执行块切换的请求。

首先,当DSP8002没有进行处理时,块切换,在表侧为DSP用存储器块8007,在背侧为CPU用存储器块8008。由先前的块切换的锁定,维持该块切换的状态。在执行块切换的锁定的期间,块切换的表侧由于是DSP用存储器块8007,CPU8001从DSP用存储器块8007中取出处理8102。在处理8102中包含使用DSP8002的命令,由CPU8001发出该使用DSP8002的命令,由DSP8002进行处理。DSP8002由于是放任控制,不能确定该命令的处理结束的时间。在向处理func1的调用源的程序8101的main函数返回时,返回该main函数的命令由CPU8001获取的瞬间,由块切换装置8010执行块切换的解锁。然后,受理对存储器8006的块切换请求,其结果,表侧成为CPU用存储器块8008,背侧成为DSP用存储器块8007。

当与此相反时,即在处理func1被调用时,DSP8002正在进行其它处理的情况下,块切换,表侧成为CPU用存储器块8008,背侧成为DSP用存储器块8007。由于执行了块切换的锁定,在执行解锁之前维持该块切换状态。由于DSP8002被其它处理所占用,块切换装置8010向存储器8006发出表侧成为CPU用存储器块8008,背侧成为DSP用存储器块8007的请求。

块切换由于表侧成为CPU用存储器块8008,CPU8001从CPU用存储器块8008中取出处理8105。处理8105由于是具有和包含使用DSP8002的命令的处理8102相同的功能,但包含使用CPU8001的命令,由CPU8001执行处理。处理8105的处理结束后,在返回处理func1的调用源的程序8101的main函数时,返回该main函数的命令由CPU8001获取的瞬间,由块切换装置8010执行块切换的解锁。然后,受理对存储器8006的块切换请求,其结果,表侧成为DSP用存储器块8007,背侧成为CPU用存储器块8008。在CPU8001进行处理8105的期间,使用DSP8002的其它处理结束时,接收使用状况的监视装置8009的输出,块切换装置8010,请求块切换的表侧成为DSP用存储器块8007,背侧成为CPU用存储器块8008。但是,受理该请求后执行块切换,和上述同样是在执行了块切换的解锁之后才执行。

然后,处理func1的使用DSP8002的处理8102中的命令在由DSP8002进行处理的期间,假定下一处理的处理func2被调用。这时,DSP8002在使用中,由于先前的块切换的解锁已经由块切换装置8010执行,块切换,其表侧成为CPU用存储器块8008,背侧成为DSP用存储器块8007。处理func2被调用,处理func2映射的开始地址的命令被CPU8001获取的瞬间,由块切换装置8010执行块切换的锁定。通过该锁定的执行,将不能由其它处理执行块切换。

块切换由于表侧成为CPU用存储器块8008,CPU8001从CPU用存储器块8008中取出处理8106。处理8106由于是具有和包含使用DSP8002的命令的处理8103相同的功能,但包含使用CPU8001的命令,由CPU8001执行处理。处理8106的处理结束后,在返回处理func2的调用源的程序8101的main函数时,返回该main函数的命令由CPU8001获取的瞬间,由块切换装置8010执行块切换的解锁。然后,受理对存储器8006的块切换请求,其结果,表侧成为DSP用存储器块8007,背侧成为CPU用存储器块8008。在CPU8001进行处理8106的期间,使用DSP8002的处理8102中的命令结束时,和进行先前的处理func1的处理时DSP8002在使用中的情况相同,由块切换装置8010对存储器8006进行块切换的请求,在执行了块切换的解锁之后,受理该请求。

最后,处理func3被调用。和先前DSP8002没有在使用的情况的处理func1时相同,由块切换装置8010,进行块切换的锁定,块切换请求,由CPU8001从DSP用存储器块8007中取出包含使用DSP8002的命令的处理8104,使用DSP8002的命令作为放任处理由DSP8002执行。在返回程序8101的main函数时执行块切换的解锁,同样使块切换的表侧成为CPU用存储器块8008,背侧成为DSP用存储器块8007。

依据以上所述的本实施方式,通过使用块切换装置8010的方法,可以减轻DSP8002中DSP竞争的发生,有效使用DSP8002。为实现该方法,由于没有必要修正程序8101而可以直接适用,几乎不发生软件的额外开销。并且通过采用使用状况的监视装置8009以及块切换装置8010那样的专用硬件,可以比较高速实现总线8003的使用状况的监视以及软件处理变更。

此外,在本实施方式中,虽然处理器只有1个CPU,资源只有1个DSP,也可以分别采用多个CPU、DSP。简言之,只要是至少1个资源、使用该资源的至少1个处理器即可。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号