首页 / 专利库 / 电脑编程 / 算法 / 操作高速缓存的方法

操作高速缓存的方法

阅读:292发布:2020-05-08

专利汇可以提供操作高速缓存的方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种操作高速缓存模 块 (400)的方法(100),该高速缓存模块(400)包括作为高速缓存模块(400)的最小存储块的高速缓存行,其中该方法(100)包括接收用于存储的传入消息的步骤(110)。接收步骤(110)包括:确定(112)消息的大小,进而确定消息所需的高速缓存行的数量;查找(116)确定数量的高速缓存行所需的可用高速缓存行,其中查找步骤(116)包括:i.利用(116i)使用de Bruijn序列的 算法 通过确定值为1的最低有效位的 位置 来找到可用的第一高速缓存行;ii.在高速缓存模块(400)中的第一缓存行中存储(116ii)消息,或者如果需要一个以上的高速缓存行,则存储消息的一部分;iii.将第一高速缓存行的位置存储(116iii)在查找表(300)中,该查找表(300)为所存储的消息的细节编索引;iv.如果消息需要一个以上的缓存行,则重复步骤i到iii。本发明还涉及一种 计算机程序 产品和一种 电子 控制单元 ,该电子控制单元尤其包括被配置为执行该方法(100)的处理器。本发明还涉及一种车辆控制单元,其包括通过 数据总线 系统彼此电子通信的多个电子控制单元。,下面是操作高速缓存的方法专利的具体信息内容。

1.一种操作高速缓存模(400)的方法(100),该高速缓存模块(400)包括作为高速缓存模块(400)的最小存储块的高速缓存行,其中该方法(100)包括接收用于存储的传入消息的步骤(110),该接收步骤(110)包括:
确定(112)消息的大小,进而确定消息所需的高速缓存行的数量;
查找(116)所确定数量的高速缓存行所需的可用高速缓存行,其中查找步骤(116)包括:
i.利用(116i)使用de Bruijn序列的算法通过确定值为1的最低有效位的位置来找到可用的第一高速缓存行;
ii.在高速缓存模块(400)中的第一高速缓存行中存储(116ii)消息,或者如果需要一个以上的高速缓存行,则存储消息的一部分;
iii.将第一高速缓存行的位置存储(116iii)在查找表(300)中,该查找表(300)为所存储的消息的细节编索引;
iv.如果消息需要一个以上的高速缓存行,则重复步骤i到iii。
2.根据权利要求1所述的方法(100),还包括:
接收(120a)检索所存储的消息的请求
借助于查找表(300)检索(120c)所存储的消息。
3.根据权利要求1或2所述的方法(100),还包括:在所述检索步骤之后,清除(130)存储在至少一个高速缓存行中的消息。
4.根据权利要求1或2所述的方法(100),还包括在存储消息或消息的一部分的步骤(116ii)之前清除(130)存储在至少一个高速缓存行中的消息。
5.根据前述任一权利要求所述的方法(100),其中,查找表(300)还包括指示哪些高速缓存行可用或被使用的位图。
6.根据前述任一权利要求所述的方法(100),其中,所述高速缓存模块(400)是电子控制单元的一部分。
7.根据权利要求6所述的方法(100),其中,所述方法(100)由所述电子控制单元的处理器执行。
8.一种驻留在电子控制单元中的非暂时性计算机可读存储介质上的计算机程序产品,该存储介质上存储有多个指令,这些指令在由电子控制单元的处理器执行时使处理器执行根据前述任一权利要求所述的方法(100)。
9.一种电子控制单元,包括:
处理器,被配置为执行根据权利要求1至7中任一项所述的方法(100);
计算机可读存储介质,其包括非暂时性部分和暂时性部分,所述非暂时性部分包括根据权利要求8所述的计算机程序产品,并且所述暂时性部分包括所述高速缓存模块(400);

电路,被配置为传送至少一条消息和至少一条指令。
10.一种车辆控制单元,其包括通过数据总线系统彼此电子通信的多个根据权利要求9所述的电子控制单元。
11.根据权利要求10所述的车辆控制单元,其中,所述数据总线系统包括CAN总线或LIN总线。

说明书全文

操作高速缓存的方法

技术领域

[0001] 本发明涉及用于数字信息的存储手段和数字信息处理。

背景技术

[0002] 在当今的计算机系统中,处理器速度通常比主存储器的能快得多。因此,在检索处理器所要求的主存储器数据时通常存在延迟。高速存储器或高速缓存存储器用于克服这种延迟。高速缓存存储器通过复制主存储器中经常使用或最近使用的数据来工作。高速缓存存储器是位于处理器内或处理器附近的存储器。因此,省去了从远程或单独的存储器中检索这种数据的步骤。
[0003] 但是,处理器电路技术和相关的成本限制了高速缓存存储器的大小。因此,由于受限的高速缓存存储器,一旦填充满了高速缓存存储器,就不断地替换高速缓存存储器中的数据。当处理器从存储器请求数据时,首先测试高速缓存存储器,如果在高速缓存存储器中找到了数据,则从高速缓存存储器中检索数据并恢复执行。否则,处理器继续从较慢的主存储器中请求并获得数据。因此,尽可能快而高效地识别存储在高速缓存中的数据与减少延迟相关。
[0004] 为了运行计算机程序或应用程序,某些程序或进程的存储器需求只能在运行时被确定,例如何时需要存储器取决于用户输入。因此,程序或进程需要动态分配存储器,这种分配的存储器称为堆(heap)。一些堆可能存储在高速缓存中,而另一些可能存储在随机存取存储器中。高速缓存存储器由存储单元组成,最小的存储单元是高速缓存行。高速缓存行通常分配给堆中预定大小的存储器,并保存在池中。
[0005] 尽管通过使用高速缓存减少了从远程或单独的存储器中检索数据所导致的延迟,但存在由于关联、获取和管理高速缓存行而引起的开销,尤其是当高速缓存存储器的大小和高速缓存行的数量增加时。例如,可以通过从主存储介质向高速缓存分配更多的存储器来增加高速缓存中的总存储器。然而,高速缓存模块的存储器的增加意味着高速缓存行的数量的增加。如果高速缓存存储器的大小和高速缓存行的数量增加,则搜索和获取高速缓存行所需的开销将会累积,并可能导致严重的性能问题。
[0006] 通常对高速缓存行编索引以便进行高效且系统性的管理。由于高速缓存行是动态分配的,因此应该存在一种高效地确定哪些高速缓存行可用或被使用的方式。当前方法涉及通过直接访问每个高速缓存行来确定可用性或通过操纵每个位的位图表示来确定可用性来使用循环。但是,随着高速缓存变满或高速缓存大小增加,循环可能会加重处理器负担。
[0007] 因此,需要提供一种改进的操作高速缓存存储器的架构和方法,其克服或至少减轻上述缺点中的一个或多个。

发明内容

[0008] 因此,本发明的一个目的是提供一种操作高速缓存模块以解决上述问题的方法。特别地,本发明的一个目的是提供一种具有减少的延迟的操作高速缓存模块的方法。本发明的另一个目的是提供一种不使用不必要的循环和遍历的操作高速缓存模块的方法。本发明的另一个目的是提供一种高速缓存模块,其高效和系统性地操作其高速缓存行。
[0009] 为了实现本发明的这些和其他目的,在第一方面,提供了一种操作高速缓存模块的方法,该高速缓存模块包括作为高速缓存模块的最小存储块的高速缓存行,其中该方法包括接收用于存储的传入消息的步骤,该接收步骤包括:确定消息的大小,进而确定消息所需的高速缓存行的数量;查找确定数量的高速缓存行所需的可用高速缓存行,其中查找步骤包括:i.利用使用de Bruijn序列的算法通过确定值为1的最低有效位的位置来找到可用的第一高速缓存行;ii.在高速缓存模块中的第一缓存行中存储消息,或者如果需要一个以上的高速缓存行,则存储消息的一部分;iii.将第一高速缓存行的位置存储在查找表中,该查找表为所存储的消息的细节编索引;iv.如果消息需要一个以上的缓存行,则重复步骤i到iii。
[0010] 术语“高速缓存模块”是指一种存储器组件,其功能是通常在池中存储可再次使用的数据或信息,从而可以更快地满足或检索对该数据或信息的未来请求。高速缓存模块可以具有比主存储介质更高的存取速度。存储在高速缓存模块中的数据或信息也可以存储在主存储介质中。因此,存储在高速缓存模块中的数据或信息可以是主存储介质中的内容的子集。高速缓存模块中的存储器通常是易失性的或暂时性或非持久性的;也就是说,可以替换存储在高速缓存模块中的数据。本文所使用的术语“高速缓存模块”,“高速缓存存储器”和“高速缓存”是可互换的。
[0011] 高速缓存模块由固定存储器大小的块组成。每个存储块或单元称为高速缓存行,并且每个高速缓存行具有相同的大小。每个存储块或高速缓存行的大小取决于高速缓存模块的应用,尽管每个存储块或高速缓存行的示例性大小可以在1个字节到数个字节的范围内。如果需要存储的数据或信息大于高速缓存行的大小,则将数据或信息分成多个区块并存储在多个高速缓存行中,其中每个区块都在每个高速缓存行的大小之内。
[0012] 主存储介质可以是与高速缓存模块分离的组件。在该示例中,主存储介质可以包括诸如硬盘驱动器之类的盘存储介质,或者诸如闪存之类的固态存储介质,而高速缓存模块可以位于CPU芯片上。在另一个示例中,高速缓存模块和主存储介质可以位于同一组件的分离区域中,例如包括盘高速缓存的盘驱动器。在存在有限或固定或有限数量的过程和消息的又一个示例中,唯一的存储介质可以是高速缓存模块,例如处理器高速缓存。因此,主存储介质可以是可选的,但是通常包括主存储介质,这是因为对于相同大小,诸如高速缓存存储设备之类的其他类型的存储介质更加昂贵。
[0013] 如本文中关于高速缓存模块的操纵所使用的术语“操作”或其语法变体应广义地解释为包括但不限于读取高速缓存模块中的数据、将数据存储或写入高速缓存模块中、从高速缓存模块中删除或清除数据、在高速缓存模块中查找数据、在高速缓存模块中组织数据、和/或以其他方式管理缓存模块。
[0014] 术语“消息”广义上是指可以在计算设备或软件应用程序之间传输的数据,例如文件或数据流的一部分。
[0015] 如本文所使用的,术语“计算系统”或具有这种意思的术语(例如,术语“计算设备”)广义上是指至少包括处理器、高速缓存模块、输入/输出元件(例如被配置为从传感器接收数据的输入、来自人机界面的数字输入、显示输出和驱动器)、以及可选的主存储器或主存储介质的任何计算机设备。计算系统的示例包括但不限于汽车网络中的电子控制单元。
[0016] 可以理解的是,可以增加高速缓存模块的总存储器以改善计算系统的性能,从而例如更多数量的消息可被传输或处理。高速缓存模块的总存储器的增加意味着高速缓存行的数量的增加。
[0017] 有利地,所公开的操作高速缓存模块及其高速缓存行的方法基本上独立于高速缓存模块中的高速缓存池的整体大小,这是因为所公开的方法不涉及检查每个高速缓存行的可用性或存储在其中的消息。相反,所公开的方法利用所公开的算法来确定最低有效位的位置,该最低有效位指示被使用的或可用的高速缓存行。
[0018] 最低有效位是指多位二进制数的最右侧位中的整数,因为最右侧整数是“1”位置的整数。相反,最高有效位是指多位二进制数的最左侧位的整数。
[0019] 在本申请的上下文中并且为了一致性,具有值1的位是指可用于存储数据的可用高速缓存行,而具有值0的位是指其中已经存储了数据的高速缓存行。然而,这样的术语是相对的,并且在本申请的范围内,值为0的位可以指代可用于存储数据的可用高速缓存行,因此在这种上下文中,具有值1的位将指代已经存储了数据的高速缓存行。
[0020] 因此,找到值为1或0的最低有效位的位置提供了一种系统性地分别识别哪个高速缓存行可用或被使用的方式。
[0021] 当有传入消息(例如从温度传感器读取的温度或用户输入到计算系统中的数据)时,可能需要将消息放置(park)在某处以备将来检索或使用。因此,消息可以被放置或存储在主存储器或高速缓存模块中。在一个示例中,消息被放置或存储在高速缓存模块中。因此,需要在高速缓存模块中找到可用于消息存储的高速缓存行。根据所公开的方法,可以首先确定消息的大小,以便可以确定存储消息所需的高速缓存行的数量。然后可以利用使用de Bruijn序列的算法找到可用的一个或多个高速缓存行。
[0022] 使用de Bruijn序列的这种乘法和查找算法的说明可以在文档“Using de Bruijn Sequences to Index a 1in a Computer Word”,Charles E.Leiserson,Harald Prokop,Keith H.Randall,MIT Laboratory for Computer Science,Cambridge,MA 02139USA,July 7,1998以及斯坦福大学的网页http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBr uijn中被找到,这些文档和网页通过引用并入本文。因此,在此将不描述de Bruijn序列及其推导。该网页描述了用于对于32位整数确定值为1的最低有效位的位置的示例操作或函数。示例函数如下所示:
[0023] unsigned int v;
[0024] int r;
[0025] static const int MultiplyDeBruijnBitPosition[32]=
[0026] {
[0027] 0,1,28,2,29,14,24,3,30,22,20,15,25,17,4,8,
[0028] 31,27,13,23,21,19,16,7,26,12,18,6,11,5,10,9
[0029] };
[0030] r=MultiplyDeBruijnBitPosition[((uint32_t)((v&-v)*0x077CB531U))>>27];
[0031] 其中十六进制值0x077CB531U是de Bruijn序列。
[0032] 简要地和示例性地,利用使用de Bruijn序列的乘法和查找算法通过确定值为1的最低有效位的位置来找到可用的第一高速缓存行可以包括:(1)计算y=v&(-v),其中v是哪些高速缓存行空闲或已使用的二进制表示(例如,此处公开的位图或高速缓存行中的二进制值),并且-v是该二进制表示的1的补码;(2)在大小为k的字母表上计算n阶de Bruijn序列,其中k为正使用的高速缓存行的数量(即位图中二进制值的数量或位图的大小),并且n=lg k;(3)构造以升序列出旋转后的n位子串的哈希表,各n位子串被顺序编索引;(4)将y与de Bruijn序列相乘以产生乘法积;(5)计算x=k–(lg k);(6)截断乘法积的低x个位;(7)从哈希表中检索由(6)中的结果索引的值,该值是值为1的最低有效位的位置。
[0033] 计算系统执行算法步骤所需的时间基本上是固定的。因此,与循环算法相反,所公开的方法有利地不依赖于高速缓存模块的大小或状态。进一步有利地,所公开的方法利用了可预测的系统负载,并且提供了一种可随着高速缓存模块的大小而缩放的方法。即使增加高速缓存池的大小,系统的性能也可被控制。因此,提供了一种高效的定位资源和管理高速缓存行的方法。还提供了一种高效的管理被高速缓存的消息的序列的方法。所公开的方法有利地提供了针对顺序消息而关联和获取高速缓存行,而无需使用任何循环。
[0034] 一旦找到可用的高速缓存行,则可以将传入消息存储在该第一可用高速缓存行中。
[0035] 在传入消息需要一个以上的高速缓存行进行存储的情况下,消息的第一部分可以存储在第一可用高速缓存行中。然后,该算法可用于通过确定下一个值为1的最低有效位的位置来找到第二可用高速缓存行,并将消息的第二部分存储在第二可用高速缓存行中。该过程持续进行,直到消息的最后第n部分存储在第n可用高速缓存行中为止。
[0036] 查找表为存储在高速缓存模块中的或由高速缓存模块使用的所有消息的细节编索引,因此可以称为“消息查找表”。有利地,消息查找表保持被存储的或与高速缓存行相关联的消息的细节的记录。进一步有利地,可以在查找表中汇总存储在高速缓存模块中的消息。还进一步有利地,借助于查找表,可以容易地或高效地找到和检索存储在高速缓存模块中的消息。查找表也可以称为消息查找表。查找表可以顺序地为所存储的消息编索引或列出所存储的消息,例如消息索引0,消息索引1等。存储在查找表中的消息的细节可以包括消息的大小或消息所需的高速缓存行的数量。细节可以包括消息的最后第n部分的序列号(它是n)。细节可以包括包含消息或消息的第一部分的第一高速缓存行的位置,例如,如果消息的第一部分存储在3号高速缓存行中,则下一个高速缓存索引(Next Cache Index)为3。细节可以包括包含消息的最后第n部分的最后第n高速缓存行的位置,例如,如果消息的最后部分存储在1号高速缓存行中,则最后高速缓存索引(Last Cache Index)为1。细节可以可选地包括分别包含消息的第二,第三,第四,…和第(n-1)部分的第二、第三、第四、…和第(n-1)缓存行的位置。
[0037] 每个高速缓存行可以用于存储,或者可以由存储在其中的消息或消息的一部分使用。可以对高速缓存池编索引,使得每个高速缓存行具有索引号,例如,1号高速缓存行的索引号为高速缓存索引1(Cache Index 1)。每个高速缓存行可以存储与该高速缓存行相关联的消息的消息索引,例如,如果存储在1号高速缓存行中的消息或消息的一部分被编索引为0号消息,消息索引(Message Index)0被记录在高速缓存索引1中。每个高速缓存行还可以存储消息的部分的序列号,例如,如果消息的第n部分存储在4号高速缓存行中,SQN n被记录在高速缓存索引4中。每个高速缓存行还可以存储包含消息的下一第(n+1)部分的下一高速缓存行的位置,例如,如果消息的第n部分存储在6号高速缓存行中,消息的最后第(n+1)部分存储在2号高速缓存行中,则下一高速缓存索引(Next Cache Index)2被记录在高速缓存索引6中。每个高速缓存行还可以存储其是可用还是被使用的指示,例如如果3号高速缓存行被使用或可用,则二进制0或1被分别记录在高速缓存索引3中。在高速缓存行不与任何消息以及任何消息的一部分相关联的情况下,高速缓存行中的一个或多个条目可以这样指示,例如,如果1号高速缓存行可用,高速缓存索引1可以指示其中的数据无效,消息索引无效,SQN无效,下一高速缓存索引无效,并且二进制值为1。因此,当有传入消息时,消息可能需要存储在高速缓存模块的一个或多个缓存行中,以备将来检索或使用。通过该算法找到第一高速缓存行。该第一高速缓存行的索引号可以被存储在查找表中。如果消息需要多于一个的缓存行,则通过算法找到下一高速缓存行。下一高速缓存行的索引号可以被存储在查找表和第一高速缓存行中,序列号在查找表中被增加,并且更新后的序列号和其他数据被存储在该下一高速缓存行中。
[0038] 将理解的是,本文公开的一个、一些或所有细节可以被包括在查找表中或存储在高速缓存行中。还应理解,本文未公开的相似或相关细节在本申请的范围内,并且可以被包括在查找表中或存储在高速缓存行中。
[0039] 在高速缓存行存储包含消息的下一部分的下一高速缓存行的位置的情况下,查找表可以仅包括第一高速缓存行和最后第n高速缓存行的位置,而可以不包括分别包含消息的第二、第三、第四、…和第(n-1)部分的第二、第三、第四、…和第(n-1)高速缓存行,这是因为此类细节被记录在高速缓存行中。在其他情况下,高速缓存行可以存储包含消息的下一部分的下一高速缓存行的位置,并且查找表也可以存储第一、第二、第三、…以及最后第n高速缓存行的位置。
[0040] 在某些情况下,查找表还可包括指示哪些高速缓存行可用或被使用的位图。该位图可以用于保持记录每个高速缓存行的状态,即每个高速缓存行是可用还是被使用。如果高速缓存行被使用了,则位图可以指示二进制0;如果高速缓存行可用,则位图可以指示二进制1,反之亦然。该位图也可以称为高速缓存状态位图。有利地,该算法可以使用位图中存储的二进制值来定位值为1或0的最低有效位。在不包括位图且每个高速缓存行存储其可用还是被使用的指示的情况下,该算法可以使用存储在高速缓存行中的二进制值来定位值为1或0的最低有效位。
[0041] 所公开的方法可以进一步包括:接收用于检索所存储的消息的请求;以及利用查找表来检索所存储的消息。所公开的方法可以进一步包括将检索到的消息发送到诸如驱动器的输出元件或接口,或者提供检索到的消息以用于发送或允许检索到的消息可用于另一模块或计算系统以便处理该消息。有利地,利用查找表来组织或跟踪高速缓存模块中的消息,这使得能够高效地检索高速缓存模块中的消息,而无需循环算法来搜索每个高速缓存行。
[0042] 在一个示例中,可以根据来自另一计算系统的请求而检索存储在高速缓存模块中的一个或多个消息。例如,车控制单元或控制模块的处理器接收到解车门的消息。处理器可以根据所公开的方法找到可用的一个或多个高速缓存行,以将“解锁”消息存储在门控制单元的高速缓存模块中。响应于“解锁”消息,处理器可以指示门控制单元的驱动器从高速缓存模块检索“解锁”消息,然后使车门解锁。此外,响应于“解锁”消息,门控制单元可向座椅控制单元或控制模块发消息以使座椅向后移动,从而增加腿部空间,以使车辆使用者容易进入座椅区域。座椅控制单元的处理器可以根据所公开的方法找到一个或多个可用高速缓存行,以将“向后移动”消息存储在座椅控制单元的高速缓存模块中。座椅控制单元的驱动器可以向处理器请求“向后移动”消息,并且处理器可以借助于公开的查找表来检索该消息。可以将“向后移动”消息发送给驱动器,以使车辆座椅向后移动。门控制单元和座椅控制单元可以彼此电子连接,或者可以通过例如数据总线系统彼此电子通信。
[0043] 在例如在局域网或控制器区域网中存在有限数量的计算系统或控制模块并因此存在有限数量的消息的情况下,可以将来自特定模块的消息指定为查找表中的特定消息索引。因此,来自同一模块的相同消息或不同消息可以存储在同一消息索引中,以实现一致性和系统性管理,但是如通过所公开的方法确定的,存储来自同一模块的一个或多个消息的高速缓存行可有所不同。例如,来自通过USB连接到系统的模块1的消息可存储在消息索引1中,而来自点火控制模块的消息可存储在消息索引2中。在其他情况下,来自同一模块的相同消息或不同消息可能未存储在同一消息索引中。在这样的情况下,该方法可以进一步包括用于确定哪个模块使用哪个消息索引的步骤。在某些情况下,所公开的方法可以用在其他合适的系统中,在该系统中被发送的消息可被编索引或定位或适配到查找表中。
[0044] 高速缓存模块可以是电子控制单元的一部分。所公开的方法可以由电子控制单元的处理器来执行。
[0045] 高速缓存模块可以用于消息的临时存储。因此,可以清除存储在高速缓存行中的消息,以便高速缓存行可用于存储新的传入消息。只要能够将新消息存储在高速缓存模块中,清除步骤的顺序就不受限制。选择消息进行清除或替换的一些已知算法包括先进先出、最近最少使用和最近最少替换。清除或清理高速缓存行可以包括将高速缓存行中的值或细节重置为它们的初始值,其中,初始值可以是“无效的”。已清除的高速缓存行意味着其中的细节可能不再有用,并且高速缓存行可适用于在其中写入或存储新数据。
[0046] 在一些情况下,所公开的方法可以进一步包括在检索步骤之后清除存储在至少一个高速缓存行中的消息。因此,一旦检索到所存储的消息以便使用,就可以从与其关联的高速缓存行中清除该消息。在其他情况下,所公开的方法可以进一步包括在存储消息或消息的一部分的步骤之前清除存储在至少一个高速缓存行中的消息。在这样的情况下,可以在新消息需要高速缓存之前清除高速缓存行。
[0047] 在另一方面,提供了一种驻留在电子控制单元中的非暂时性计算机可读存储介质上的计算机程序产品,该存储介质上存储有多个指令,这些指令在由电子控制单元的处理器执行时使处理器执行所公开的方法。
[0048] 非暂时性计算机可读存储介质可以是其存储器是非易失性的或持久性的存储器组件或存储器组件的一部分。非暂时性计算机可读存储介质可以是主存储介质或主存储器的一部分。
[0049] 除了非暂时性计算机可读存储介质和处理器之外,电子控制单元还可以包括暂时性计算机可读存储介质,该暂时性计算机可读存储介质包括高速缓存模块和软件,该软件包括存储在计算机可读存储介质之一或两者中的操作系统。电子控制单元可以进一步包括这种控制单元的典型元件,例如输入/输出设备和晶体管。电子控制单元可以控制交通工具的部件,交通工具包括但不限于运工具、陆地交通工具,飞机和航天器。暂时性和非暂时性计算机可读存储介质可以是单独的组件或同一组件上的单独区域,如本文所公开的。
[0050] 因此,在另一方面,提供一种电子控制单元,包括:处理器,被配置为执行所公开的方法;计算机可读存储介质,包括非暂时性部分和暂时性部分,所述非暂时性部分包括所公开的计算机程序产品,所述暂时性部分包括所述高速缓存模块;以及配置成传输至少一条消息和至少一条指令的电路。
[0051] 如本文所公开的,暂时性部分和非暂时性部分可以是单独的组件或在同一组件上的单独的区域。
[0052] 该电路可以包括输入/输出设备或电路、继电器和其他外围电路或电连接器,其连接电子控制单元的组件以传输消息或指令或其他电子或数字信息。
[0053] 电子控制单元可以是网络的一部分,例如但不限于局域网或控制器区域网。
[0054] 控制器区域网(CAN)是串行总线或通信网络,它连接例如分布式环境(例如汽车、工业自动化、航空电子、医疗和办公设备、消费类电器等)中各种控制应用中的设备、传感器和致动器。通常,CAN网络用于实时控制应用中传感器和致动器之间的信息传递、传输和接收。在汽车控制应用中,控制网络使得多个节点或控制单元(例如,门控制单元和座椅控制单元)之间能够通信。在某些情况下,控制网络中可能存在充当该多个控制单元中的主控或大脑的一个控制单元。对于车辆,大脑可以称为车辆控制单元。
[0055] 因此,在另一方面,提供了一种车辆控制单元,其包括通过数据总线系统彼此电子通信的如本文公开的多个电子控制单元。多个电子控制单元可以彼此进行电子无线通信。
[0056] 典型的数据总线系统包括CAN总线,本地互连网络(LIN)总线或通用串行总线(USB),但是其他合适的总线系统也在本申请的范围内。附图说明
[0057] 图1示出了根据本发明的第一实施例的操作高速缓存模块(400)的方法(100)的流程图,该高速缓存模块(400)包括作为高速缓存模块(400)的最小存储块的高速缓存行。
[0058] 图2示出了根据本发明的实施例的被存储在高速缓存模块(400)中的查找表(300)、位图和被编索引的高速缓存池的图示。
[0059] 图3示出了根据本发明的第一实施例的接收(110)用于存储在高速缓存模块(400)中的传入消息200的流程图。
[0060] 图4示出了根据本发明的第一实施例的从高速缓存模块(400)检索(120)和清除(130)所存储的消息200的流程图。

具体实施方式

[0061] 在下文中,将参照附图详细描述本发明的示例性实施例。为了解释本发明的原理及其实际应用,将提供本发明的详细描述,从而使本领域技术人员能够理解本发明的各种示例性实施例以及适于预期的特定用途的各种修改。详细描述并非旨在穷举或将本发明限制为所公开的确切实施例。修改和等同形式对于本领域技术人员将是显而易见的,并且被包括在所附权利要求的精神和范围之内。
[0062] 图1示出了根据本发明的第一实施例的操作高速缓存模块(400)的方法(100)的流程图,该高速缓存模块(400)包括作为高速缓存模块(400)的最小存储块的高速缓存行。该方法(100)尤其包括:接收用于存储在高速缓存模块(400)中的传入消息200的步骤(110);从高速缓存模块(400)中检索所存储的消息200的步骤(120);以及从高速缓存模块(400)清除所存储的消息200的步骤(130)。
[0063] 方法(100)涉及使用查找表(300)来索引所存储的消息200的细节和被编索引的高速缓存行。查找表(300)还包括指示哪些高速缓存行可用或被使用的位图。图2示出了根据本发明的实施例的被存储在高速缓存模块(400)中的查找表(300)、位图和被编索引的高速缓存池的图示。
[0064] 如图2所示,消息查找表(300)将每个存储的消息依次列出为消息索引0,消息索引1,消息索引2,依此类推。在每个消息索引中,在“消息计数(Message Count)”下输入存储在该消息索引中的消息的大小。例如,存储在消息索引0中的消息需要三个高速缓存行,因此将“消息计数”输入为3。在每个消息索引中,包含消息的第一部分的第一高速缓存行的位置和包含消息的最后一部分的最后高速缓存行的位置分别在“下一高速缓存索引”和“最后高速缓存索引”中被输入。例如,包含存储在消息索引0中的消息的第一部分的第一高速缓存行的位置是在1号高速缓存行中,因此将下一高速缓存索引输入为1,而包含存储在消息索引0中的消息的最后部分的最后高速缓存行的位置是在3号高速缓存行,因此将最后高速缓存索引输入为3。在另一个示例中,存储在消息索引2中的消息仅需要一个缓存行,因此,第一缓存行和最后缓存行的位置反映了同一个5号高速缓存行,即下一高速缓存索引和最后高速缓存索引输入为5。最后,在每个消息索引中,存储在该消息索引中的消息的最后一部分的序列号在最后SQN(Last SQN)下输入。例如,存储在消息索引0中的消息需要三个高速缓存行,因此消息的最后一部分存储在第三高速缓存行中,即最后SQN输入为3。在消息索引不用于任何消息(例如在消息索引1中所示)的情况下,下一高速缓存索引和最后高速缓存索引输入为无效或INV,而消息计数和最后SQN输入为0。
[0065] 如本文所提及并参考图2,每个高速缓存行被用索引号索引,从而构成了被编索引的高速缓存池。每个高速缓存行均存储数据(消息)以及数据的细节。数据的细节包括与存储在该高速缓存行中的数据相关联的消息索引、存储在该高速缓存行中的消息部分的序列号、以及用于该消息的下一部分的下一高速缓存行的位置。关于其第一高速缓存行是高速缓存索引1的消息索引0中的消息,被编索引的高速缓存池中的高速缓存索引1表明了对消息索引0的引用,表明这是消息的第一部分,即SQN为1,表明恰好是2号高速缓存行的第二高速缓存行的位置,即下一高速缓存索引为2,并且包含消息索引0的消息的第一部分中的数据。对于消息索引0中的消息的第二部分,高速缓存索引2表明了对消息索引0的引用,表明这是消息的第二部分,即SQN为2,表明恰好是3号高速缓存行的第三高速缓存行的位置,即下一高速缓存索引为3,并且包含消息索引0的消息的第二部分中的数据。对于消息索引0中的消息的第三和最后部分,被编索引的高速缓存池中的高速缓存索引3包含在消息索引0的消息的第三部分中的数据,表明了对消息索引0的引用,表明这是消息的第三部分,即SQN为3,并表明其中为空的下一缓存行的位置,因此下一高速缓存索引无效或为INV。因此,可以看出消息索引0使用了高速缓存索引1、2和3,消息索引2使用了高速缓存索引5,而高速缓存索引0和高速缓存索引4可用于存储新消息。
[0066] 因此,高速缓存状态位图表明分别对应于高速缓存索引0和高速缓存索引4的位0和位4是空闲的,并且具有二进制值1,而其余的位和高速缓存索引被使用并且具有二进制值0。
[0067] 现在参考图3中的流程图来解释接收用于存储在高速缓存模块(400)中的传入消息200的步骤(110)。步骤(110)的算法大体上包括:确定(112)消息200的大小,以进而确定消息200所需的高速缓存行的数量;查找(116)所确定数量的高速缓存行所需的可用高速缓存行,其中查找步骤(116)包括:i.利用(116i)使用de Bruijn序列的算法通过确定值为1的最低有效位的位置来找到可用的第一高速缓存行;ii.在高速缓存模块(400)中的第一缓存行中存储(116ii)消息200,或者如果需要一个以上的高速缓存行,则存储消息200的一部分;iii.将第一高速缓存行的位置存储(116iii)在查找表(300)中,该查找表(300)为所存储的消息200的细节编索引;iv.如果消息200需要一个以上的缓存行,则重复步骤i到iii。每个步骤的详细解释如下。
[0068] 步骤(110)首先包括确定传入消息200的大小和存储消息200所需的高速缓存行的数量的步骤(112)。
[0069] 步骤(112)可以进一步包括检查或扫描查找表(300),以确定消息200是否先前已被保存在高速缓存模块(400)中的消息索引中,例如来自温度传感器的温度读数是否先前已被保存在缓存模块(400)中。
[0070] 如果消息200不存在于高速缓存模块(400)中的任何消息索引中,则在步骤(113)中跳过“消息计数”,“下一高速缓存索引”,“最后高速缓存索引”和“最后SQN”或将其视为无效。如果消息200不存在于高速缓存模块(400)中,则在步骤(116i)中通过利用所公开的算法来找到值为1的最低有效位的位置,来找到可用的第一高速缓存行。在步骤(116ii)中,消息200或消息200的一部分被存储或复制到所找到的第一高速缓存行中。在步骤(116iii)中,对于消息200在查找表(300)中分配消息索引,并且该消息索引被引用并记录在第一高速缓存行中,并且高速缓存状态位图的对应位被设置为0或被使用。这是第一次将高速缓存行与该特定消息索引相关联,因此查找表(300)中的消息计数增加为1。由于消息计数不大于1,因此步骤(116iv)中的检查将失败,并且过程将前进到步骤(116v)。在步骤(116v)中,将查找表(300)中的下一高速缓存索引设置为在步骤(116i)中检索到的高速缓存行的索引。在步骤(116vi)中,将高速缓存行的SQN和查找表(300)的最后SQN更新为1,以示出消息的第一部分被存储。然后,在步骤(116xx)中,使用最近添加的高速缓存行的索引更新消息查找表(300)中的最后高速缓存索引。也就是说,由于此时仅关联一个高速缓存行,因此查找表(300)中的“下一高速缓存索引”和“最后高速缓存索引”指的是同一高速缓存行。
[0071] 在步骤(116xxx),执行检查以验证是否已经存储了消息200中所需的所有信息。如果按照步骤(119)已经存储了所有信息,则步骤(110)的处理结束。如果否,则该信息需要存储在多个高速缓存行中,并且处理返回到步骤(116i)。查找表(300)中的消息计数增加到2,因此步骤(116iv)将转至步骤(116x),访问持有先前保存的消息的最后部分的高速缓存行。然后,按照步骤(116xi),将该高速缓存行的下一高速缓存索引更新为在步骤(116i)中检索到的新高速缓存行的索引,从而有效地保留了所存储消息的顺序。在步骤(116xii)中,将在步骤(116i)中检索到的新高速缓存行的SQN设置为(消息查找表的最后SQN+1),然后该消息查找表的最后SQN的值也被递增1。然后在步骤(116xx)中使用最近添加的高速缓存行的索引更新消息查找表(300)中的最后高速缓存索引,并执行步骤(116xxx)中的检查。
[0072] 另一方面,如果消息200先前确实已作为消息200'保存在高速缓存模块(400)中,则优选地,为了一致性,使用查找表(300)中的同一消息索引。如果消息200先前确实已作为消息200'保存在缓存模块(400)中,则在步骤(113)中,从查找表(300)获得“消息计数”、“下一高速缓存索引”、“最后高速缓存索引”和“最后SQN”,以分别查找所需的高速缓存行的数量、消息200'的第一高速缓存行的位置、消息200'的最后最终高速缓存行的位置、以及消息的最后一部分的最后序列号。在步骤(116i)中,从表(300)中的“下一高速缓存索引”获得第一高速缓存行的位置,并访问第一高速缓存行。可以清除该第一高速缓存行中的消息200'或消息200'的第一部分,并且在步骤(116ii)中,可以将消息200或消息200的第一部分存储在该第一高速缓存行中。因此,方法(100)可以进一步包括在存储消息200或消息200的一部分的步骤(116ii)之前清除(130)存储在第一高速缓存行中的消息200'(图3中未示出)。该过程如前所述继续进行。在步骤(116xxx)中,如果一个以上的高速缓存行与消息200'相关联,则过程返回到步骤(116i),并且可以从第一高速缓存行中的对下一高速缓存行的位置的引用获得用于存储消息200的下一高速缓存行。可以清除下一高速缓存行中的消息200'的下一部分,并且可以将消息200的下一部分存储在该下一高速缓存行中。获得后续的高速缓存行、清除后续的高速缓存行以及存储消息200的后续部分的步骤被重复执行,直到存储了消息200的最后一部分为止。如果消息200具有比消息200'大的消息计数,则过程返回到步骤(116i),并且可以通过利用算法确定值为1的最低有效位的位置来获得下一高速缓存行。因此继续进行该过程,并且所使用的高速缓存行的状态和二进制值在高速缓存状态位图中分别更新为“已使用”和“0”。此后,在步骤(116xi)中,将先前高速缓存行中的下一高速缓存索引更新为通过算法找到的该下一高速缓存行的位置,并且还更新该下一高速缓存行中的细节。在步骤(116xii)中,最终高速缓存行的SQN和查找表(300)的最后SQN被更新为(先前SQN值+1)。在步骤(116xx)中更新查找表(300)中的特定消息索引的最后高速缓存索引。该过程继续进行,直到按照步骤(119)存储了所有信息。
[0073] 参照图2和3提供示例(示例1)。消息200可以是温度传感器的24℃的温度读数,而消息200'可以是温度传感器的27℃的温度读数。温度传感器读数存储在消息索引2中。当在步骤(110)中接收到消息200时,在步骤(112)中确定消息200的大小。检查或扫描查找表(300),并确定消息200先前已保存在缓存模块(400)中作为消息索引2中的消息200'。从查找表(300)在“下一缓存索引”下获得消息200'的第一高速缓存行的位置。访问高速缓存索引5并清除消息200',以用于存储消息200。
[0074] 根据本发明的第一实施例,该方法(100)尤其包括从高速缓存模块(400)检索所存储的消息200的步骤(120)和从高速缓存模块(400)清除所存储的消息200的步骤(130)。现在参考图4中的流程图说明步骤(120)和(130)。
[0075] 步骤(120)的处理大体上包括:接收(120a)检索所存储的消息200的请求;以及通过查找表(300)检索(120c)所存储的消息200。
[0076] 参照图2和4提供了另一示例(示例2)。座椅控制模块请求检索作为消息200存储在门控制模块的高速缓存模块(400)中的消息索引0中的“解锁”消息。在步骤(120a)中,该请求由门控制模块的处理器接收。因此,高速缓存模块(400)是电子控制单元的一部分,并且方法(100)由电子控制单元的处理器执行。在步骤(120b)中,门控制模块确定需要被检索的消息200的消息索引,即消息索引0。然后,通过将得自消息索引0的下一高速缓存索引保存在处理器存储器中的临时位置,来记住该消息以用于消息顺序保存。这在下文中称为“记住的高速缓存索引”。处理器从查找表(300)获得在消息索引0中作为下一高速缓存索引被引用的高速缓存行,在步骤(120c)中获取高速缓存行,即高速缓存索引1,并在所获取的高速缓存行中检索数据。在步骤(120d)中,获得存储在高速缓存索引1中的下一高速缓存索引,即高速缓存索引2,并且将所记住的高速缓存索引替换为高速缓存索引2。同样在步骤(120d)中,存储在高速缓存索引1中的SQN被记住,这在下文中称为“记住的SQN”。
[0077] 然后,门控制单元的处理器可以在步骤(120e)中做决定是释放高速缓存索引1中的数据还是保留该数据以供将来访问。如果高速缓存索引1将被释放,则开始清除步骤(130)的过程。首先,在步骤(130a)中将消息查找表(300)中的消息计数减1,并且在步骤(130b)中将高速缓存索引1的所有值重置为默认值。然后,按照步骤(130c),将高速缓存状态位图中的相应位设置为“空闲”(即“可用”)或“1”。在步骤(130d)中,消息查找表(300)随后被更新以示出要获取的下一高速缓存索引是来自步骤(120d)的记住的高速缓存索引。因此,在检索步骤(120)之后,方法(100)可以包括清除(130)存储在高速缓存索引1中的消息。
[0078] 然后在步骤(120f)中,将所记住的SQN与存储在消息查找表(300)中的最后SQN进行比较。如果它们相同,则意味着该消息索引的所存储的所有信息都已被读取或检索,否则该过程从步骤120c重复。
[0079] 一旦确认了所有高速缓存行要被读取,并且如果按照步骤(120e)处理器已决定丢弃所有数据,则在步骤(130e)中将消息查找表(300)中的值全部重置为初始无效或INV值。否则,一旦确认所有高速缓存行要被读取,则步骤(120)的处理在步骤(160)中结束。
[0080] 示例2的方法(100)被实现为驻留在门控制模块中的非暂时性计算机可读存储介质上的计算机程序产品,该非暂时性计算机可读存储介质上存储有多个指令,这些指令在由门控制模块的处理器执行时使处理器执行所公开的方法(100)。
[0081] 在示例2中,门控制模块包括:处理器,被配置为执行所公开的方法;计算机可读存储介质,包括非暂时性部分和暂时性部分,所述非暂时性部分包括上述的计算机程序产品,所述暂时性部分包括高速缓存模块(400);以及配置成传输消息100和至少一条指令的电路。
[0082] 示例2的门控制模块和座椅控制模块被包括在车辆控制单元(未示出)中,并且通过数据总线系统(例如,CAN总线或LIN总线)彼此电子通信。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈