首页> 中国专利> 用于控制从多个进程出发的对存储器的区域的访问的方法以及用于实现该方法的带有消息存储器的通信模块

用于控制从多个进程出发的对存储器的区域的访问的方法以及用于实现该方法的带有消息存储器的通信模块

摘要

本发明涉及一种用于控制从多个进程(2)出发的对存储器(1)的区域的访问的方法。为了使得多个进程可以没有数据丢失并且没有等待时间地对存储器(1)中存储的各最新的有效数据分组进行访问,本发明建议,所述进程(2)的第一进程(#1)控制地址总线(3)的一部分,所述进程(2)的另外的进程(#2)借助该地址总线访问存储器(1),其中通过控制地址总线(3)的该部分,第一进程(#1)影响所述另外的进程(#2)访问哪个存储区域。

著录项

  • 公开/公告号CN102027424A

    专利类型发明专利

  • 公开/公告日2011-04-20

    原文格式PDF

  • 申请/专利权人 罗伯特.博世有限公司;

    申请/专利号CN200980117123.0

  • 发明设计人 F·哈特维希;

    申请日2009-03-06

  • 分类号G05B19/042;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人李少丹

  • 地址 德国斯图加特

  • 入库时间 2023-12-18 02:09:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-26

    授权

    授权

  • 2011-06-08

    实质审查的生效 IPC(主分类):G05B19/042 申请日:20090306

    实质审查的生效

  • 2011-04-20

    公开

    公开

说明书

背景技术

本发明涉及一种用于控制从多个进程(Prozessen)出发的对存储器的区域的访问的方法。此外,本发明涉及一种连接到通信媒质上的、通信系统的用户的通信模块,其中该模块具有消息存储器用于缓存通过该媒质接收的或者通过该媒质要发送的消息。

现有技术中有多种不同的应用,其中不同的进程使用相同的存储器,以便在彼此之间交换数据。这种进程的一个例子是中央处理单元(CPU)和任意的外围设备,二者访问相同的随机访问存储器(RAM),以便在CPU和外围设备之间交换数据。

当从多个进程出发访问相同消息存储器时要交换的数据不仅作为单个的存储字存在,而且还作为分别具有多个字的数据分组存在时,数据一致性和数据完整性的问题是重要的。当例如一个进程读取确定的数据分组,而另一进程改变同一数据分组时,损害了数据一致性。进行读取的进程会在这种情况中获得由旧的和新的存储字组成的混合构成的数据分组。在进一步处理数据分组的内容时会导致严重问题。

为了避免这一点,由现有技术中已知的是,其中两个进程之一在访问数据分组之前观察另一进程并且必要时等待,直到该进程结束其访问。对此可替选地,一个进程也可以阻止另一进程的访问,然而当被阻止的进程在其缓存必须用于其他任务之前不能存储其数据时,这会导致数据丢失。此外也已知了其他方法,其中两个进程的至少之一仅仅间接地访问存储器,其中专用的存储器管理控制器将数据分组以一致的形式存储在存储器中并且从中提取。然而这比较费事并且昂贵。这些已知的方法可以与数据分组的多次存储相结合。

由现有技术中此外公开了一种所谓的FlexRay通信控制器(CC)形式的通信模块。该通信模块用于将FlexRay通信媒质即数据总线与FlexRay用户耦合,其中消息通过该FlexRay通信媒质传输。尤其是用于使用在FlexRay中的相应的通信控制器例如在DE 102005034744A1中进行了描述。为了在用户和通信媒质之间传输消息,在通信控制器中设计了以特别的方式构建的、用于存储消息的装置。消息传输或者存储器的管理通过状态机来进行。

在现有技术中已知的通信控制器中,设计了两个所谓的瞬态缓冲器(TBF),一个设计用于通道A,并且另一个设计用于通道B。每个瞬态缓冲器可以存储两个消息,即Rx(接收)消息和Tx(发送)消息。接口模块此外包括所谓的输入缓冲器(IBF)和输出缓冲器(OBF),它们分别具有两个消息的容量。

一方面从通信媒质出发并且另一方面通过FlexRay通信控制器的所谓的消息处理程序(Message Handler)访问瞬态缓冲器(TBF)。一方面通过用户的主机CPU并且另一方面通过消息处理程序来访问输入或输出缓冲器(IBF;OBF)。在从所提及的进程出发来访问通信控制器的所提及的缓冲器时,获得数据一致性和完整性是非常重要的前提。出于该原因,在已知的通信控制器中,主机CPU对于消息存储器(IBF;OBF)并没有直接访问。输入或输出缓冲器而是具有两个彼此分离的存储块(所谓的IBF和IBF阴影或者OBF和OBF阴影)。为了发送数据,主机CPU将数据写入到输入缓冲器中并且随后开始消息传输。接着,交换IBF和IBF阴影的内容。随后,开始数据从IBF阴影至消息存储器(所谓的消息RAM)的传输。主机CPU可以将后继消息的数据已经写入输入缓冲器(IBF)中,而从IBF阴影至消息RAM的数据传输还在进行。来自消息RAM的数据随后通过通信媒质传输给其他的用户。在IBF阴影和消息RAM之间的数据传输结束之后,又交换IBF和IBF阴影的内容,等等。

通过这些比较费事的措施,虽然可以保证数据完整性,然而这些措施耗费非常多的芯片面积,因为消息存储器(IBF;OBF)分别必须被双倍地实施。已知的通信控制器的其他缺点在于,消息处理程序是比较大并且由此比较贵的状态机(所谓的State Machine)。此外,所描述的方法导致了在消息存储器(消息RAM)中存储当前的以及较老的数据。此外,主机CPU通过输入或者输出缓冲器(IBF;OBF)对消息存储器(消息RAM)的访问比较费事,因为直接访问不可能,而是只能通过IBF阴影或者OBF阴影进行间接访问。

基于所描述的现有技术,本发明的任务是,将多个进程对相同的存储器的访问简化,尤其是加速,并且能够实现成本低廉的实现,其中同时必须保证数据完整性。

为了解决该任务,基于开头所述类型的用于控制对存储区域的访问的方法,提出了所述进程中的第一进程控制地址总线的一部分,另一进程借助该地址总线访问存储器,其中第一进程通过控制地址总线的该部分对于另一进程访问哪个存储区域施加影响。

本发明的公开

根据本发明,于是提出了一种方法,一个进程如何可以控制另一进程对存储在存储器中的数据分组的访问而使得两个进程可以没有数据丢失并且没有等待时间地对各最新的有效数据分组进行访问。根据本发明的方法于是适于多个进程、尤其是两个进程可以同时访问的存储器(双端口RAM),并且适于由多个进程出发交替地、尤其是时间复用地访问的存储器(所谓的单端口RAM)。该方法不仅可以用于两个进程访问相同存储器的这种存储器,而且还可以用于其中多于两个进程访问相同存储器的这种方法。

在根据本发明的方法中,进程之一控制地址总线的一部分,另一进程借助该地址总线访问存储器。地址总线通过第一进程的控制例如可以通过可写入的控制寄存器来进行。由此,提出了一种可以简单地并且成本低廉地实现的可能性,如何让两个或者所有进程可以没有等待时间地访问同一的存储器,而并不丢失数据分组并且无需费事的存储器管理控制器。

在该方法中,优选的是所有数据分组大小相同。尤其是所有数据分组包括2n个存储字。如果情况并非如此,则将数据分组优选分为两部分:所谓的头部,其具有固定大小尤其是2n个存储字;以及主部,其大小是可变的。头部包含对于主部的指针,该指针可以存储在相同的存储器中或者其他存储器中。数据分组或者数据分组的头部优选以至少两个版本存储在存储器中。

在根据本发明的方法中,第一进程可以访问存储器的所有存储区域。此外,第一进程可以修改地址总线信号,另一进程借助该地址总线信号访问相同的存储器。这仅仅适用于访问相同大小的数据分组,或者当数据分组被分为头部和主部时,适用于访问相同大小的头部。对数据分组的主部的访问并未修改,而是通过存储在相应头部中的、对主部的指针来进行。

访问直到2m个数据分组之一或者访问分别由2n个存储字组成的数据分组的2m个头部的另一进程产生确定比特长度的地址信号。在数据分组的大小或者数据分组的头部的大小为2n个存储字、并且另一进程访问直到2m个数据分组或者访问数据分组的2m个头部的情况下,第二进程的地址信号具有(m+n)比特的长度。然而另外的进程不能借助由其产生的地址信号在多次存储的数据分组的地址之间、即在数据分组的不同版本之间进行区分。为此,需要附加的地址比特,它们被第一进程提供使用。有利的是,附加的地址比特来自控制寄存器,其被第一进程控制。借助k个附加比特,在2k个所存储的、确定数据分组的版本或者确定数据分组的头部的版本之间进行区分。由此,得到总计(m+n+k)比特的地址信号。三个比特组在地址信号中的位置是任意的。

从属权利要求包含根据本发明的方法的有利的扩展方案。本发明的特别的特征和优点在下面参照附图进一步阐述。其中:

图1示出了带有不同区域的存储器,可以由多个进程出发访问这些区域;

图2示出了存储器的内容的一个例子,其中按照根据本发明的方法控制存储器的区域;

图3示出了示意性方框电路图用于阐述根据本发明的方法;并且

图4示出了带有多个连接到通信媒质上的通信用户的通信系统,其分别带有通信控制器,该通信控制器带有消息存储器,按照根据本发明的方法可以由不同的进程出发访问消息存储器。

在图1中示出了存储器1,其例如构建为随机访问存储器(RAM)。特别地,存储器可以构建为双端口RAM或者构建为单端口RAM。当然,存储器1也可以构建为任意其他的易失性或者非易失性可写入的存储器。多个进程(#1、#2、#n)2可以访问存储器1的区域。对存储器区域的访问尤其是包括对存储器1的写入和/或读取访问。进程2例如包括中央处理单元(CPU)和任意的外围设备,它们可以访问相同存储器1的区域。

存储器1也可以如示例性地在图4中所示的那样是通信系统33(例如FlexRay网络、CAN网络或者TTCAN网络)的通信用户32的通信控制器(CC)31的一部分。在此,一方面可以通过通信媒质30(例如FlexRay总线、CAN总线或者TTCAN总线)并且另一方面可以从通信用户32的主处理器34(主CPU)出发来访问与通信控制器31关联的存储器1。

处理器2将对共同的存储器1的访问尤其是用于交换数据。当要交换的数据不仅作为单个的存储字存在,而且作为包括多个字的数据分组存在时,数据完整性、尤其是数据一致性的问题变得突出。存储字是确定的处理单元的与系统相关的存储单元。字是可以由处理单元的处理器在一个处理步骤中执行的最大的数据量,并且通常对应于主数据总线的宽度。典型的字宽为16比特和32比特。当例如进程#1读取确定的数据分组,而另一进程#2改变相同的数据分组时,存储在存储器1中的数据的一致性被损坏。进行读取的进程#1于是可以获得由旧的数据字和新的数据字的混合构成的分组。为了避免这一点,根据本发明提出了一种方法,一个进程2如何可以控制另一进程2对存储在存储器1中的数据分组的访问而使得两个进程可以没有数据丢失并且没有等待时间地对分别最新的有效数据分组进行访问。该方法不但适用于两个或者多个进程2可以同时访问的存储器1(双端口RAM),而且也适用于交替地、优选以时间复用的方式访问的存储器1(单端口RAM)。

根据本发明的方法在下面详细地参照图2和3进一步阐述。在该方法中,进程#1之一例如CPU控制地址总线3的一部分,另一进程#2例如外围模块借助该地址总线访问存储器1。地址总线通过第一进程#1的控制优选通过可写入的控制寄存器4来进行。根据本发明的方法具有的优点是:两个进程#1、#2(或者可以访问存储器1的所有进程2)可以没有等待时间地访问存储器1,使得并不丢失数据分组,并且无需费事的存储器管理控制器。

在存储器1中存储的数据分组都是大小相同的。优选的是,数据分组包括2n个存储字。如果数据分组大小不同,则其被分为两部分,即具有固定大小的头部和大小可变的主部。头部的大小优选为2n个存储字。头部包含对主部的指针,其可以位于相同的存储器1中或者位于另外的存储器中。数据分组分别以至少两个不同的版本A、B存储在存储器1中。在图2中示出了用于管理存储器1中的数据的例子,其一共包括32个存储字,其以5比特宽的向量来寻址。存储器1在各具有四个(=22)数据字(n=2)的两个(=21)版本的每个(k=1)中包括四个(=22)数据分组(m=2)。

在根据本发明的方法中,第一进程#1可以访问存储器1的所有部分。此外,第一进程#1可以修改地址总线信号(在地址总线3上),第二进程#2借助该地址总线信号访问存储器1。这适用于对相同大小的数据分组的访问,或者如果数据分组被分为头部和主部时则适用于对数据分组的头部的访问。对分组的主部的访问并未被修改。

访问分别包括两个2n存储字的直到2m个数据分组(或者访问数据分组的直到2m个头部)之一的第二进程产生长度为(m+n)比特的地址总线信号。通过在地址总线3上的该信号,第二进程#2可以访问确定数据分组的确定数据字,或者访问存储器1中的相应的区域。然而第二进程#2不可以借助该地址总线信号在多次存储的数据分组的地址之间、即在数据分组的不同的版本之间进行区分。为此所需的附加地址比特来自控制寄存器4,其被第一进程#1控制。借助k个附加的比特,在确定的数据分组的2k个存储的版本之间进行区分。由此总计得到(m+n+k)比特长度的地址总线信号5。在此,这三个比特组在地址信号5中的位置是任意的。在存储器1中(其管理在图2中给出),如所述的那样将分别带有4个数据字(n=2)的四个数据分组(m=2)以每个数据分组两个不同的版本(k=1)来存储。在图2中,列“数据分组”用参考标记10表示,列“版本”用参考标记11表示,列“存储字”用参考标记12表示,并且列“地址”用参考标记13表示。在存储器1中于是有共计32个存储字的位置,它们可以通过5比特宽的向量来寻址。地址由比特(m_k_n)组成。

对于存储器1中包含的数据分组的每个,存在k比特宽的两级控制寄存器4,第一进程#1可以借助该控制寄存器调节另一进程#2可以(或者应当)访问所希望的数据分组的哪个版本。寄存器4优选多级地、尤其是两级地构建。在所描述的实施例中,于是一共存在4个k比特宽度的两级寄存器4。在寄存器4中的两级用参考标记6和7表示。第一进程#1可以选出允许第二进程#2对其进行访问的数据分组的确定版本11,或者仅仅给出用于切换到下一个可用的版本11的控制信号。第一进程#1可以对寄存器4的第一级6进行写入(参考标记20),然而并不对寄存器4的第二级7进行写入。在通过第一进程#1对第一级6进行写入之后,当另外的进程#2并未将第二级7闭锁时(参考标记22),优选将数据从第一级6立即拷贝到第二级7中(参考标记21)。第二级7的输出随后被插入地址总线信号5中(参考标记23)。当寄存器4的第二级7闭锁时,在解锁之后才将数据从第一级6拷贝到第二级7中。可能的是,第一进程#1也通过经修改的地址总线信号访问存储器1中的数据分组,然而随后并不访问与第二进程#2相同的版本。

在根据本发明的方法的处理中,在从第一进程#1至第二进程#2的数据分组与在相反方向从第二进程#2向第一进程#1的数据分组之间进行区分。

首先描述根据本发明的针对从第一进程#1至第二进程#2的数据分组的方法的流程。首先,第一进程#1将其数据写入确定的数据分组10的确定版本11中,该版本对于第二进程#2是不可访问的,并且随后立即将第二进程#2的入口切换到数据分组10的该版本11。

读取数据分组10的第二进程#2首先将该分组10的控制寄存器4的第二级7闭锁(22),随后在块传输中读取相关数据分组10(必要时头部和主部)的、对其可访问的版本11,并且将第二级7解锁(22)用于结束块传输。

如果第一进程#1的写入访问和第二进程#2的读取访问在时间上彼此交迭,则第二进程#2从数据分组10的较老的版本11中读取一致的数据。如果第二进程#2是时间控制的通信控制器(CC)31(例如TTCAN-CC或者FlexRay-CC),则该行为特别重要。在此,必须读取数据分组10的时刻由通信系统33预先给定。借助通信控制器31对数据分组10的读取访问,在时间控制的通信系统33中于是可以不等待,直到第一进程#1结束其写入访问。

在此所基于的是,与数据可以被第二进程#2获取的情况相比,数据并不会更快地被第一进程#1写入为此设计的存储器区域中。可选地存在的可能性是,第二进程#2用信号通知第一进程#1:是否其在最后的分组版本11切换之后从确定的存储区域中获取了至少一次数据。

当数据要从第二进程#2向第一进程#1传输时,首先第一进程#1从数据分组10的版本11中读取其从第二进程#2所期待的数据,这些数据对于第二进程#2是不可访问的,并且紧随其后将第二进程#2的入口(Zugang)切换到该分组10的该版本11。

写入数据分组10的第二进程#2首先将该分组10的控制寄存器4的第二级7闭锁(22),随后在块传输中写入分组10(必要时为头部和主部),并且将第二级7解锁(22)用于结束块传输。

如果第一进程#1的读取访问和第二进程#2的写入访问在时间上交迭,则第一进程#1从分组10的较老的版本11读取一致的数据。当第二进程#2存储新的数据分组的时刻并不在第一进程#1的控制之下时,该行为特别重要。

在此所基于的是,第一进程#1足够快速地获取数据,使得并非数据分组10的两个版本11都可以包括未被读取的数据。可选地可能的是,第二进程#2用信号通知第一进程#1:是否其将确定的数据分组10的数据自分组版本11的最后切换以来进行了更新,并且是否这些数据自最后的切换以来被多次更新了,这会意味着数据丢失。

根据本发明的存储器管理方法尤其适用于通信系统(例如FlexRay,CAN,TTCAN)的通信用户32的硬件通信模块31中的消息存储器。在其他外围模块中的应用同样是可能的并且有利的。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号