基于固定延时重传服务的数据帧读写方法、装置以及终端与流程



1.本发明涉及数据传输领域,特别是涉及一种基于固定延时重传服务的数据帧读写方法、装置以及终端。


背景技术:



2.新能源车尤其是具备辅助驾驶功能的新能源车近年来得到越来越广泛的普及。新能源车尤其是具有辅助驾驶功能的车配备了越来越多的传感器。具有l3辅助驾驶功能的车一般要配13个以上的摄像头。这些传感器的数据需要传送到辅助驾驶域控制器。考虑到压缩会带来较大的延迟,在车载应用环境下,传感器需要将未压缩的原生数据传输到域控制器。每个摄像头像素数越来越高,从而对数据传输带宽的要求逐年提高。另一方面,传输距离较长,达到10米到15米,这会引入较大的衰减,需要特定的技术对抗线缆造成的衰减,恢复出原来的数据。
3.目前的主流方案是车载serdes(串行解串器)方案。在摄像头模组中集成串行器芯片(发送芯片),串行器芯片输出连接到同轴电缆或者屏蔽双绞线。线缆的另一端连到辅助驾驶域控制器,域控制器集成解串器芯片(接收芯片)。解串器芯片将线缆上接收的信号进行处理,转成并行数据。串行器和解串器间建立了双向通道:从串行器到解串器方向的通道是高速下行通道,主要传输视频数据;从解串器到串行器方向的通道是低速上行通道,主要传输命令。目前这一市场的垄断者是两家美企。他们都采用了私有协议,不能和其他厂家的芯片互通。mipi联盟为了解决互联互通的问题,推出了aphy(车载串行解串器)标准。在一些情况下,解串器接收到的数据中会有误码。为了得到正确的数据,aphy定义了重传流程。解串器在接收到的数据帧中检测到crc(循环冗余检查)错误,可以在上行通道上要求串行器重新发送指定的先前发送的数据帧。在限定的时间内,解串器可以对同一数据帧多次提出重传请求。超过限定时间,放弃这一数据帧,串行器也不再保留这一帧的数据。数据帧中有字段指示当前帧是重传帧还是原始帧。数据帧中mc(message counter信息计数器)字段对帧进行编号。mc是8比特的可翻转的计数器:mc从0增加到255,然后又从0开始计数。每一个帧都用mc区分,如果一个下行通道上mc=5的帧crc有错,解串器通过上行通道要求重传mc=5的帧,串行器从缓存器中mc=5相应区域读出数据重新发送数据。
4.aphy提供了两种重传服务:minrd(最小延时重传服务)和fixrd(固定延时重传服务)。minrd目标用最小的延时将数据提交。fixrd目标是用最小的延时差异将数据提交。数据帧帧头中特定字段用来区分minrd和fixrd。
5.在接收端,数据帧必须按发送时的顺序依次提交,由于数据可能有错从而引发重传,接收端必须管理一个缓存器。对于minrd服务,按照mc的顺序依次读缓存器,如果数据已经收到并完好,立即提交;如果帧数据在传输中,需要等待crc无错的帧到来再提交。对于fixrd,也按照mc的顺序依次提交;不过即使数据已经收到并完好,也不能立即提交,而是需要等待固定延时期满才能提交。发送端和接收端始终管理一个移动的活跃mc窗口。以下行链路为例,这个窗口不超过128。发送端和接收端的缓存器深度都不小于最大的活跃mc窗口
宽度。每当接收端提交一个帧,接收端通过另一条通道告知发送端该mc可以回收,发送端的活跃mc窗口会发生移动,该mc将在未来赋予新的帧;同时本地保存的该mc帧从缓存器中丢弃。对于minrd接收端缓存器的深度为最大活跃mc窗口宽度,但是fixrd相对于minrd需要额外的缓冲空间。因为如果fixrd服务等到固定延时期满提交后再释放该缓存地址的话,性能会大幅下降。如果fixrd服务数据已经收到并完好,应该立即将数据搬运到附加缓存,从而可以立即释放缓存地址和该mc。现有技术缺少一种不需数据搬运、使用资源较少的方法实现固定延时重传服务。


技术实现要素:



6.鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于固定延时重传服务的数据帧读写方法,用于解决现有技术中出现的以上技术问题。
7.为实现上述目的及其他相关目的,本发明提供一种基于固定延时重传服务的数据帧读写方法,包括:基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。
8.于本发明的一实施例中,所述直接链表读写方法包括:当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。
9.于本发明的一实施例中,所述基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表的链表尾指针对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中。
10.于本发明的一实施例中,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;若没有数据,标记主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址没有建立链表,构建该主缓存地址的直接链表;其中,该直接链表包括:指向该主缓存地址的链表头指针、指向该主缓存地址的链表尾指针以及对应链表已建立的链表建立信息;若该主缓存地址已建立链表,令链表尾指针指向的下一地址指向该主缓存地址,更新链表尾指针指向该主缓存地址;
11.若有数据,从所述附加缓存中寻一具有对应没有数据的数据占用标记的附加缓存地址,并更新该主缓存地址的直接链表,并标记该附加缓存地址的数据占用标记为有数据状态,将该fixrd帧写在该附加缓存地址中;其中,所述该直接链表包括:链表头指针,链表尾指针以及对应链表已建立的链表建立信息;且令链表尾指针指向的下一地址指向该附加缓存地址,更新链表尾指针指向该附加缓存地址。
12.于本发明的一实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与
fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应直接链表的链表头指针以及链表是否建立信息,并标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态。
13.于本发明的一实施例中,所述间接链表读写方法包括:当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。
14.于本发明的一实施例中,所述基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表已经建立,则将该重写帧数据直接覆盖该间接链表的链表尾指针对应位置的数据;若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表没有建立,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中。
15.于本发明的一实施例中,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;若没有数据,标记该主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址已经指向间接链表,将链表尾指针指向的下一地址指向该主缓存地址,并令链表尾指针指向该主缓存地址;若有数据,从构建的对应各附加缓存地址寻一对应附加缓存地址的数据占用标记为无数据状态的地址空间,将该fixrd帧写在所述附加缓存地址中,标记该附加缓存地址的数据占用标记为有数据状态;若该主缓存地址没有指向链表将构建对应该主缓存地址的间接链表,从链表空间中寻一无效链表,并标志该链表有效,并标记主缓存地址的指向链表标志为具有链表指向状态且构建该主缓存地址对应该链表的链表索引;其中,所述该间接链表包括:指向该主缓存地址的链表头指针,指向该附加缓存地址的链表尾指针以及对应链表已建立的链表建立信息;且令链表头指针指向下一地址为该附加缓存地址;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该附加缓存地址,并令链表尾指针指向该附加缓存地址。
16.于本发明的一实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的指向链表标志判断是否建立链表;若建立了链表,则根据该主缓存地址的链表索引,获取对应的间接链表,并基于该间接链表在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应间接链表的链表头指针以及链表是否建立信息,或释放链表;还标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态;若未建立链表,则直接在该主缓存地址读取该fixrd帧,并标记对应的主缓存地址数据占用标记为无数据状态。
17.为实现上述目的及其他相关目的,本发明提供一种基于固定延时重传服务的数据
帧读写装置,所述装置包括:读写实现模块,用于基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。
18.为实现上述目的及其他相关目的,本发明提供一种终端,包括:基于固定延时重传服务的数据帧读写装置。
19.如上所述,本发明的一种基于固定延时重传服务的数据帧读写方法、装置以及终端,具有以下有益效果:本发明通过基于直接链表读写方法和/或间接链表读写方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;本发明不仅解决了固定延时服务面临的搬运数据带来的性能损耗问题与功耗增加问题,还解决了支持重传服务的覆盖写要求。
附图说明
20.图1显示为本发明一实施例中的直接链表读写方法储存示意图。
21.图2显示为本发明一实施例中的间接链表读写方法储存示意图。
22.图3显示为本发明一实施例中的终端的结构示意图。
具体实施方式
23.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
24.需要说明的是,在下述描述中,参考附图,附图描述了本发明的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本发明的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本发明的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本发明。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、
““
下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
25.在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
26.其中提到的第一、第二及第三等术语是为了说明多样的部分、成分、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成分、区域、层或段区别于其它部分、成分、区域、层或段。因此,以下叙述的第一部分、成分、区域、层或段在不超出本发明范围的范围内,可以言及到第二部分、成分、区域、层或段。
27.再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特
征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
28.本发明实施例中提供一种基于固定延时重传服务的数据帧读写方法、装置以及终端,通过基于直接链表读写方法和/或间接链表读写方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;本发明不仅解决了固定延时服务面临的搬运数据带来的性能损耗问题与功耗增加问题,还解决了支持重传服务的覆盖写要求。
29.下面针对本发明的实施例进行详细说明,以便本发明所述技术领域的技术人员能够容易地实施。本发明可以以多种不同形态体现,并不限于此处说明的实施例。
30.所述方法包括:
31.基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;
32.其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。
33.具体来说,由于需要按照mc的顺序依次读取缓存器中的帧,如果当前读取的帧为fixrd帧并且该fixrd帧数据完好,需要放到附加缓存。实际上,搬运数据需要很多周期(一帧最大长度392字节,而缓存器的数据宽度仅为数字节,因此搬运一帧需要数十周期),缓存器的读逻辑被长期占用,这段时间不能做正常的数据读操作;同时数据搬运增加了功耗。因此,更为有效的方法是建立链表。该fixrd帧还占据原来的存储空间,释放相应的mc后,指向同一地址的新帧到来时,写到附加缓存中,同时建立一个链表,将这两个帧加入链表。读出时按链表的先后顺序读出即可。
34.在一实施例中,数据缓存器包括两个部分:深度为m的主缓存main_buf,深度为n的附加缓存addon_buf。其中,附加缓存就是为fixrd帧需要额外存储一段时间而开辟的缓存。m等于最大的活跃mc窗口宽度。优选的,在aphy下行通道上m为128,n可以为16、32等。
35.在一实施例中,信息计数器mc与主缓存存在对应关系(如果不考虑附加存储,mc的低位地址与主缓存地址一一对应)。
36.在一实施例中,所述直接链表读写方法包括:
37.当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;
38.当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。
39.在一具体实施例中,所述基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:
40.若所述fixrd帧数据为重写帧数据,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表的链表尾指针对应位置的数据;
41.若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中。
42.因此,直接链表写操作与一般链表的写操作不同之处在于:支持覆盖写功能。如果是覆盖写,本次写数据到来之前已有存储空间,数据应该写入已有存储空间,覆盖原有数据,而不是将数据写入一个新地址,从而支持重传帧的写入。如果是正常写,需要分配一个新地址,数据写入新地址。
43.在一具体实施例中,如图1所示,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中包括:
44.基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;具体的,首先用mc低位部分mc_low寻址,例如aphy下行通道上mc_low=mc[6:0]。基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记entry_valid,判断该主缓存地址是否有数据;在一具体实施例中,若entry_valid为有数据状态则判断为有数据,若为无数据状态则判断为无数据。
[0045]
若没有数据且该主缓存地址没有建立链表,构建该主缓存地址的直接链表,并标记主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;其中,该直接链表包括:指向该主缓存地址的链表头指针、指向该主缓存地址的链表尾指针以及对应链表已建立的链表建立信息;具体的,对于m个主存储地址,每一个地址都有一个链表,共有m个链表。每个链表都有链表的头指针linklist_head,链表的尾指针linklist_tail,链表是否建立linklist_valid等信息。若主缓存地址为x建立链表linklist_head[x]=x,linklist_tail[x]=x,linklist_valid[x]=1。若该主缓存地址已经建立链表(linklist_valid[x]=1),将链表尾指针指向的下一地址指向该主缓存地址,并更新链表尾指针指向该主缓存地址。
[0046]
若有数据,从所述附加缓存中寻一具有对应没有数据的数据占用标记的附加缓存地址,并更新该主缓存地址的直接链表,并标记该附加缓存地址的数据占用标记为有数据状态,将该fixrd帧写在该附加缓存地址中;其中,所述该直接链表包括:链表头指针,链表尾指针以及对应链表已建立的链表建立信息;且令链表尾指针指向的下一地址指向该附加缓存地址,更新指链表尾指针指向该附加缓存地址。
[0047]
举例来说,从附加缓存中寻一个空闲地址,假定为y,写地址返回y。假定linklist_tail[x]=z,设置其指向的下一个地址nxt_addr[z]=y,将该地址y添加到链表尾部:linklist_tail[x]=y,标志该地址有数据entry_valid[y]=1。
[0048]
也就是说,若第x个链表链接了主缓存地址空间x与部分附加缓存地址空间。如果mc_low=x,首先检查主缓存地址x中有无数据:如果没有数据,数据就写入该地址空间x。如果该地址已经有数据,从附加缓存addon_buf中寻一个闲置地址写入数据。
[0049]
在一具体实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:
[0050]
基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应直接链表的链表头指针以及链表是否建立信息,并标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态。
[0051]
具体的,若直接链表的链表头指针指向主缓存地址,则在缓存器中的该主缓存地址读取该fixrd帧,并令链表头指针指向下一地址,并标记对应的主缓存地址为无数据状
态;
[0052]
若直接链表的链表头指针指向附加缓存地址,则在缓存器中的该附加缓存地址读取该fixrd帧,并令链表头指针指向下一地址,并标记对应的附加缓存地址为无数据状态。
[0053]
在一具体实施例中,直接链表读写方法要求建立对应主缓存地址个数的m个链表。实际上,在同一时刻至多存在n个链表,因为附加缓存的深度为n。而m》》n,如果只保留n个链表相应的存储,将降低成本。
[0054]
在一实施例中,所述间接链表读写方法包括:
[0055]
当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;
[0056]
当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。
[0057]
在一具体实施例中,所述当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:
[0058]
若所述fixrd帧数据为重写帧数据,若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表已经建立,则将该重写帧数据直接覆盖该间接链表的链表尾指针对应位置的数据;若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表没有建立,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址对应位置的数据;
[0059]
若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中。
[0060]
在一具体实施例中,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中包括:
[0061]
基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;具体的,基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记entry_valid,判断该主缓存地址是否有数据;在一具体实施例中,若entry_valid为有数据状态则判断为有数据,若为无数据状态则判断为无数据。
[0062]
若没有数据,标记该主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该主缓存地址,并令链表尾指针指向该主缓存地址。
[0063]
若有数据,从构建的对应各附加缓存地址寻一对应附加缓存地址的数据占用标记为无数据状态的地址空间,将该fixrd帧写在所述附加缓存地址中,标记该附加缓存地址的数据占用标记为有数据状态。若该主缓存地址没有指向链表将构建对应该主缓存地址的间接链表,从链表空间中寻一无效链表,并标志该链表有效,并标记主缓存地址的指向链表标志为具有链表指向状态且构建该主缓存地址对应该链表的链表索引;其中,所述该间接链表包括:指向该主缓存地址的链表头指针,指向该附加缓存地址的链表尾指针以及对应链表已建立的链表建立信息;且令链表头指针指向下一地址为该附加缓存地址;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该附加缓存地址,并令链表尾指针指向该附加缓存地址。
[0064]
具体的,如图2所示,共有n个链表,每个链表都有链表的头指针linklist_head,链表的尾指针linklist_tail,该链表信息是否有效linklist_valid等信息。对于m个主存储地址,每个地址包含指向链表标志linklist_exist,链表间接索引linklist_index等信息。如果主存储地址x相应的链表中只有一个元素,并且该元素在主存储地址x中,那么并不占用链表资源,linklist_exist[x]=0。如果要建立新链表,首先需要从n个链表中寻一个无效链表,假定其索引为y,那么linklist_valid[y]=0;其次将主存储地址x与这个新链表y间建立映射:linklist_head[y]指向链表的头,linklist_tail[y]指向链表的尾,同时linklist_valid[y]置1,linklist_exist[x]置1,将y赋给linklist_index[x]。在写过程中,主存储地址x建立新链表的条件:如果x有数据,从addon_buf中寻一个闲置地址xnew写入数据,如果之前没有链表,此时需要建立链表:链表头指针指向地址x,尾指针指向地址xnew。
[0065]
间接链表读写方法与直接链表读写方法的主要不同点是:主存储地址x的链表头指针、尾指针等链表信息需要用其间接索引linklist_index[x]从n个链表的信息中选出。由于linklist_head和linklist_tail的位宽之和远大于linklist_index的位宽,因此间接链表方法使用的存储小于直接链表方法。
[0066]
在一具体实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:
[0067]
基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的指向链表标志判断是否建立链表;
[0068]
若建立了链表,则根据该主缓存地址的链表索引,获取对应的间接链表,并基于该间接链表在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应间接链表的链表头指针以及链表是否建立信息,或释放链表;还标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态;具体的,如果有链表linklist_exist[x]=1,那么读出链表头指针指向的地址空间。若间接链表的链表头指针指向主缓存地址,则首先在缓存器中的该主缓存地址读取该fixrd帧,并更新链表头指针指向头指针的下一个地址,并标记对应的主缓存地址为无数据状态;若间接链表的链表头指针指向附加缓存地址,则在缓存器中的该附加缓存地址读取该fixrd帧,并更新链表头指针指向头指针的下一个地址,并标记对应的附加缓存地址为无数据状态。
[0069]
需要说明的是,主缓存地址x释放链表的条件:假定x映射到链表y,如果头指针和尾指针指向同一个地址,读出数据后链表释放;或者尾指针指向x,并且头指针指向地址的下一个地址也是x,说明读出数据后链表中有唯一元素x,那么读出数据后也释放链表:linklist_exist[x]清0,linklist_valid[y]清0。
[0070]
为了更好的说明上述基于固定延时重传服务的数据帧读写方法,本发明提供以下具体实施例。
[0071]
实施例1:一种基于直接链表读写方法的数据帧读写方法。
[0072]
所述方法包括:所有的主缓存、附加缓存中没有数据,entry_valid皆为0。
[0073]
到来第一个写请求时:mc_low=3,检查entry_valid[3]=0,地址3中没有数据,写地址返回3。建立链表linklist_head[3]=3,linklist_tail[3]=3,linklist_valid[3]=1,同时标志该地址有数据entry_valid[3]=1。
[0074]
接着到来第二个写请求时:mc_low=3,检查entry_valid[3]=1,说明地址3中有数据,从附加缓存中寻一个空闲地址,假定为129,写地址返回129。将该地址添加到链表尾部:linklist_tail[3]=129,同时设置主缓存地址3在链表中的下一个地址nxt_addr[3]=129,标志该地址有数据entry_valid[129]=1。
[0075]
到来第一个读请求时:mc_low=3,由于头指针指向地址3,返回读地址3。将头指针指向下一个地址(nxt_addr[3]=129):linklist_head[3]=129,同时标志该地址没有数据:entry_valid[3]=0。
[0076]
到来第二个读请求时:mc_low=3,头指针指向的地址129,返回读地址129。由于头指针和尾指针指向同一个地址,链表释放:linklist_valid[3]=0,同时标志该地址没有数据:entry_valid[129]=0。
[0077]
实施例2:一种基于间接链表读写方法的数据帧读写方法。
[0078]
所述方法包括:所有的主缓存、附加缓存中没有数据,entry_valid皆为0。
[0079]
到来第一个写请求时:mc_low=3,检查entry_valid[3]=0,地址3中没有数据,写地址返回3。同时标志该地址有数据entry_valid[3]=1。
[0080]
接着到来第二个写请求时:mc_low=3,检查entry_valid[3]=1,地址3中有数据,从附加缓存中寻一个空闲地址,假定为129,写地址返回129。建立链表,假定寻到的无效链表序号为5,则linklist_valid[5]=0。主存储地址3与这个新链表5间建立映射:linklist_head[5]=3,linklist_tail[5]=129,linklist_valid[5]=1,linklist_exist[3]=1,linklist_index[3]=5,同时设置主缓存地址3在链表中的下一个地址nxt_addr[3]=129,标志该地址有数据entry_valid[129]=1。
[0081]
到来第一个读请求时:mc_low=3,头指针linklist_head[linklist_index[3]]=linklist_head[5]=3,返回读地址3。将头指针指向下一个地址(nxt_addr[3]=129):linklist_head[5]=129,同时标志该地址没有数据:entry_valid[3]=0。
[0082]
到来第二个读请求时:mc_low=3,头指针linklist_head[linklist_index[3]]=linklist_head[5]=129,返回读地址129。linklist_tail[linklist_index[3]]=linklist_tail[5]=129,由于头指针和尾指针指向同一个地址,链表释放:linklist_valid[5]=0,linklist_exist[3]=0。同时标志该地址没有数据:entry_valid[129]=0。
[0083]
与上述实施例原理相似的是,本发明提供一种基于固定延时重传服务的数据帧读写装置。
[0084]
以下结合附图提供具体实施例:
[0085]
所述装置包括:
[0086]
读写实现模块,用于基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;
[0087]
其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。
[0088]
由于该基于固定延时重传服务的数据帧读写装置的实现原理已在前述实施例中进行了叙述,因此此处不作重复赘述。
[0089]
在一实施例中,所述直接链表读写方法包括:当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表在缓存器中的主缓
存或附加缓存中进行该fixrd帧的读操作。
[0090]
在一实施例中,所述基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表尾指针对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中。
[0091]
在一实施例中,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;
[0092]
若没有数据,标记主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址没有建立链表,构建该主缓存地址的直接链表。其中,该直接链表包括:指向该主缓存地址的链表头指针、指向该主缓存地址的链表尾指针以及对应链表已建立的链表建立信息;若该主缓存地址已建立链表,令链表尾指针指向的下一地址指向该主缓存地址,更新链表尾指针指向该主缓存地址。若有数据,从所述附加缓存中寻一具有对应没有数据的数据占用标记的附加缓存地址,并更新该主缓存地址的直接链表,并标记该附加缓存地址的数据占用标记为有数据状态,将该fixrd帧写在该附加缓存地址中;其中,所述该直接链表包括:链表头指针,链表尾指针以及对应链表已建立的链表建立信息;且令链表尾指针指向的下一地址指向该附加缓存地址,更新指链表尾指针指向该附加缓存地址。
[0093]
在一实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应直接链表的链表头指针以及链表是否建立信息,并标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态。
[0094]
在一实施例中,所述间接链表读写方法包括:当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。
[0095]
在一实施例中,所述当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表已经建立,则将该重写帧数据直接覆盖该间接链表的链表尾指针对应位置的数据;若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表没有建立,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中。
[0096]
在一实施例中,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中
包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;
[0097]
若没有数据,标记该主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该主缓存地址,并令链表尾指针指向该主缓存地址。若有数据,从构建的对应各附加缓存地址寻一对应附加缓存地址的数据占用标记为无数据状态的地址空间,将该fixrd帧写在所述附加缓存地址中,标记该附加缓存地址的数据占用标记为有数据状态。若该主缓存地址没有指向链表将构建对应该主缓存地址的间接链表,从链表空间中寻一无效链表,并标志该链表有效,并标记主缓存地址的指向链表标志为具有链表指向状态且构建该主缓存地址对应该链表的链表索引;其中,所述该间接链表包括:指向该主缓存地址的链表头指针,指向该附加缓存地址的链表尾指针以及对应链表已建立的链表建立信息;且令链表头指针指向下一地址为该附加缓存地址;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该附加缓存地址,并令链表尾指针指向该附加缓存地址。
[0098]
在一实施例中,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的指向链表标志判断是否建立链表;若建立了链表,则根据该主缓存地址的链表索引,获取对应的间接链表,并基于该间接链表在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应间接链表的链表头指针以及链表是否建立信息,或释放链表;还标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态;若未建立链表,则直接在该主缓存地址读取该fixrd帧,并标记对应的主缓存地址数据占用标记为无数据状态。
[0099]
如图3展示本发明实施例中的终端30的结构示意图。
[0100]
所述终端包括:所述的基于固定延时重传服务的数据帧读写装置31。
[0101]
其中,该基于固定延时重传服务的数据帧读写装置的实现原理已在前述实施例中进行了叙述,因此此处不作重复赘述。
[0102]
需要说明的是,所述终端可以指发送端和接收端,均始终管理一个移动的活跃mc窗口。
[0103]
综上所述,本发明基于固定延时重传服务的数据帧读写方法、装置以及终端,通过基于直接链表读写方法和/或间接链表读写方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;本发明不仅解决了固定延时服务面临的搬运数据带来的性能损耗问题与功耗增加问题,还解决了支持重传服务的覆盖写要求。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0104]
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

技术特征:


1.一种基于固定延时重传服务的数据帧读写方法,其特征在于,包括:基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。2.根据权利要求1中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述直接链表读写方法包括:当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。3.根据权利要求2中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表的链表尾指针对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中。4.根据权利要求3中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,将该fixrd帧写在主缓存或附加缓存中包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;若没有数据,标记主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址没有建立链表,构建该主缓存地址的直接链表;其中,该直接链表包括:指向该主缓存地址的链表头指针、指向该主缓存地址的链表尾指针以及对应链表已建立的链表建立信息;若该主缓存地址已建立链表,令链表尾指针指向的下一地址指向该主缓存地址,更新链表尾指针指向该主缓存地址;若有数据,从所述附加缓存中寻一具有对应没有数据的数据占用标记的附加缓存地址,并更新该主缓存地址的直接链表,并标记该附加缓存地址的数据占用标记为有数据状态,将该fixrd帧写在该附加缓存地址中;其中,所述该直接链表包括:链表头指针,链表尾指针以及对应链表已建立的链表建立信息;且令链表尾指针指向的下一地址指向该附加缓存地址,更新链表尾指针指向该附加缓存地址。5.根据权利要求2中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的直接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的直接链表,在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应直接链表的链表头指针以及链表是否建立信息,并标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态。6.根据权利要求1中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述间接链表读写方法包括:
当接收到对应一mc窗口的fixrd帧的写请求时,基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作;当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作。7.根据权利要求6中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述基于构建的间接链表,在缓存器中的主缓存或附加缓存中进行该fixrd帧的写操作包括:若所述fixrd帧数据为重写帧数据,若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表已经建立,则将该重写帧数据直接覆盖该间接链表的链表尾指针对应位置的数据;若与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表没有建立,则将该重写帧数据直接覆盖与fixrd帧所对应的mc窗口具有对应关系的主缓存地址对应位置的数据;若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中。8.根据权利要求7中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述若所述fixrd帧数据为正常帧数据,则基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的间接链表,将该fixrd帧写在主缓存或附加缓存中包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的数据占用标记,判断该主缓存地址是否有数据;若没有数据,标记该主缓存地址的数据占用标记为有数据状态,将该fixrd帧写在所述主缓存地址中;若该主缓存地址已经指向间接链表,将链表尾指针指向的下一地址指向该主缓存地址,并令链表尾指针指向该主缓存地址;若有数据,从构建的对应各附加缓存地址寻一对应附加缓存地址的数据占用标记为无数据状态的地址空间,将该fixrd帧写在所述附加缓存地址中,标记该附加缓存地址的数据占用标记为有数据状态;若该主缓存地址没有指向链表将构建对应该主缓存地址的间接链表,从链表空间中寻一无效链表,并标志该链表有效,并标记主缓存地址的指向链表标志为具有链表指向状态且构建该主缓存地址对应该链表的链表索引;其中,所述该间接链表包括:指向该主缓存地址的链表头指针,指向该附加缓存地址的链表尾指针以及对应链表已建立的链表建立信息;且令链表头指针指向下一地址为该附加缓存地址;若该主缓存地址已经指向链表,将链表尾指针指向的下一地址指向该附加缓存地址,并令链表尾指针指向该附加缓存地址。9.根据权利要求6中所述的基于固定延时重传服务的数据帧读写方法,其特征在于,所述当接收到对应一mc窗口的fixrd帧的读请求时,基于构建的间接链表在缓存器中的主缓存或附加缓存中进行该fixrd帧的读操作包括:基于与fixrd帧所对应的mc窗口具有对应关系的主缓存地址的指向链表标志判断是否建立链表;若建立了链表,则根据该主缓存地址的链表索引,获取对应的间接链表,并基于该间接链表在缓存器中的主缓存或附加缓存读取该fixrd帧,并更新对应间接链表的链表头指针以及链表是否建立信息,或释放链表;还标记对应的主缓存地址或附加缓存地址的数据占用标记为无数据状态;
若未建立链表,则直接在该主缓存地址读取该fixrd帧,并标记对应的主缓存地址数据占用标记为无数据状态。10.一种基于固定延时重传服务的数据帧读写装置,其特征在于,所述装置包括:读写实现模块,用于基于链表读写实现方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的mc窗口获得的fixrd帧的读写操作;其中,所述链表读写实现方法包括:直接链表读写方法和/或间接链表读写方法。11.一种终端,其特征在于,包括:如权利要求10中所述的基于固定延时重传服务的数据帧读写装置。

技术总结


本发明的基于固定延时重传服务的数据帧读写方法、装置以及终端,通过基于直接链表读写方法和/或间接链表读写方法,利用构建的链表在缓存器中的主缓存或附加缓存中进行从移动的MC窗口获得的FixRD帧的读写操作;本发明不仅解决了固定延时服务面临的搬运数据带来的性能损耗问题与功耗增加问题,还解决了支持重传服务的覆盖写要求。重传服务的覆盖写要求。重传服务的覆盖写要求。


技术研发人员:

陈克林

受保护的技术使用者:

上海昂麟企业管理咨询合伙企业(有限合伙)

技术研发日:

2022.09.23

技术公布日:

2022/12/26

本文发布于:2024-09-25 03:22:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/49510.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:缓存   链表   地址   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议