一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种缓存加速方法、装置、设备及可读存储介质与流程

2022-02-20 07:41:29 来源:中国专利 TAG:


1.本技术涉及片上系统技术领域,特别涉及一种缓存加速方法、缓存加速装置、缓存加速设备及计算机可读存储介质。


背景技术:

2.system on chip,简称soc,即片上系统,其由多个具有特定功能的集成电路组合在一个芯片上形成的系统或产品,其中包含完整的硬件系统及其承载的嵌入式软件。eeprom(electrically erasable programmable read only memory,带电可擦可编程只读存储器)是一种可更改的只读存储器,其可通过高于普通电压的作用来擦除和重编程(即重写)。当前,在很多soc的应用中,控制器等设备需要频繁的改写某些少量数据且需掉电非易失,因此eeprom在此非常适合。相关技术中,通常将由eeprom等组成的存储设备与数据总线相连,该数据总线上同样连接了例如cpu、gpu等主设备。由于cpu等主设备和eeprom的读写速度不匹配,因此数据存取效率较低,时延较大。


技术实现要素:

3.有鉴于此,本技术的目的在于提供一种缓存加速方法、缓存加速装置、缓存加速设备及计算机可读存储介质,减少访问请求的时延,提高读写效率。
4.为解决上述技术问题,本技术提供了一种缓存加速方法,应用于缓存加速设备,所述缓存加速设备设置于数据总线和存储设备之间,所述方法包括:从所述数据总线获取访问请求,并解析所述访问请求得到访问地址;将所述访问地址与地址内存中的各个预存地址进行匹配检测;若检测到目标预存地址与所述访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行所述访问请求对应的访问操作;其中,所述目标预存地址序号为所述目标预存地址在所述地址内存中的序号。
5.可选地,所述对数据内存中目标预存地址序号对应的目标预存数据执行所述访问请求对应的访问操作,包括:若所述访问请求为读取请求,则对所述目标预存数据执行读取操作;若所述访问请求为写入请求,则获取所述写入请求对应的待写入数据,并利用所述待写入数据对所述目标预存数据执行覆盖写入操作;在覆盖写入操作执行完毕后,将所述待写入数据封装得到写入数据包,并将所述写入数据包发送至所述存储设备。
6.可选地,所述对所述目标预存数据执行读取操作,包括:获取所述目标预存数据对应的有效数据单位标识;根据所述有效数据单位标识,从所述目标预存数据中提取有效数据单位,并向所述数据总线输出所述有效数据单位;相应的,在覆盖写入操作执行完毕后,还包括:
存储所述待写入数据对应的有效数据单位标识。
7.可选地,所述从所述数据总线获取访问请求,包括:从所述数据总线获取初始访问请求;判断所述初始访问请求和访问类型相同的中间访问请求的访问操作类型和数据操作长度是否相同;若相同,则利用所述初始访问请求和所述中间访问请求的数据操作长度更新所述中间访问请求;若不相同,则将所述中间访问请求确定为所述访问请求,并将所述初始访问请求确定为新的中间访问请求。
8.可选地,若所述访问请求为读取请求,则所述解析所述访问请求得到访问地址,包括:获取所述读取请求中的读取数据长度,并利用所述读取数据长度和读取单位长度确定读取数据个数;基于所述读取请求中的起始读地址,利用所述起始读地址和所述读取数据个数生成若干个非起始读地址;将所述起始读地址和所述非起始读地址确定为所述访问地址。
9.可选地,若不存在任意一个预存地址与所述访问地址匹配,包括:获取替换地址序号;将所述访问地址写入所述地址内存中所述替换地址序号对应的地址位置;获取所述访问请求对应的访问数据,将所述访问数据写入所述数据内存中所述替换地址序号对应的数据位置,并利用所述访问数据执行所述访问请求对应的访问操作。
10.可选地,还包括:从所述数据总线获取监听指令,并解析所述监听指令得到监听地址;将所述监听地址与各个所述预存地址进行匹配检测,得到监听结果;将所述监听结果反馈至所述数据总线。
11.本技术还提供了一种缓存加速装置,应用于缓存加速设备,所述缓存加速设备设置于数据总线和存储设备之间,所述装置包括:获取模块,用于从所述数据总线获取访问请求,并解析所述访问请求得到访问地址;匹配检测模块,用于将所述访问地址与地址内存中的各个预存地址进行匹配检测;操作模块,用于若检测到目标预存地址与所述访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行所述访问请求对应的访问操作;其中,所述目标预存地址序号为所述目标预存地址在所述地址内存中的序号。
12.本技术还提供了一种缓存加速设备,包括数据内存、地址内存和处理器,其中:所述数据内存,用于存储预存数据;所述地址内存,用于存储预存地址;所述处理器,用于从所述数据总线获取访问请求,并解析所述访问请求得到访问地址;
将所述访问地址与地址内存中的各个预存地址进行匹配检测;若检测到目标预存地址与所述访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行所述访问请求对应的访问操作;其中,所述目标预存地址序号为所述目标预存地址在所述地址内存中的序号。
13.本技术还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的缓存加速方法。
14.本技术提供的缓存加速方法,应用于缓存加速设备,缓存加速设备设置于数据总线和存储设备之间,方法包括:从数据总线获取访问请求,并解析访问请求得到访问地址;将访问地址与地址内存中的各个预存地址进行匹配检测;若检测到目标预存地址与访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作;其中,目标预存地址序号为目标预存地址在地址内存中的序号。
15.可见,该方法中,在数据总线和存储设备之间,插入了缓存加速设备作为中转。该缓存加速设备能够在数据总线处获取用于进行数据读取或数据写入的访问请求,并判断缓存加速设备内的地址内存中是否存在想要访问的访问地址。地址内存中的各个预存地址具有对应的预存地址序号,利用预存地址序号,可以将地址内存中的预存地址与数据内存中的预存数据相对应。若检测到访问请求指定的访问地址为目标预存地址,则说明该地址对应的目标预存数据在数据内存中存储,因此可以对目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作,例如将其读出或覆盖写入。根据cpu等主设备的特性,在进行数据访问时,通常会对一个较小的地址区间内的数据进行操作,因此利用地址内存和数据内存,有较大的概率缓存加速设备能够确定访问请求想要访问的数据,执行相应的操作并进行响应,使得cpu等主设备和eeprom等存储设备的读写速度相匹配,减少访问请求的时延,提高读写效率。
16.此外,本技术还提供了一种缓存加速装置、缓存加速设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
17.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
18.图1为本技术实施例提供的一种缓存加速系统结构图;图2为本技术实施例提供的一种缓存加速设备的结构示意图;图3为本技术实施例提供的一种缓存加速方法流程图;图4为本技术实施例提供的一种缓存加速装置的结构示意图。
具体实施方式
19.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术
人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
20.本技术提出了一种缓存加速设备,其设置于数据总线和存储设备之间。请参考图1,图1为本技术实施例提供的一种缓存加速系统结构图,其示出了一种基于ace总线的soc系统。其中,cpu(central processing unit,中央处理器)、gpu(graphics processing unit,全图形处理器)和dma(direct memory access,存储器直接访问)控制器等为主设备(即master),其能够对缓存加速设备(cache control unit,ccu)、存储设备(例如main memory,主存)等从设备(即slave)等进行控制或访问。ace是指axi coherency extensions,axi一致性扩展协议,axi是指advanced extensible interface,先进可扩展接口。
21.如图1所示,gpu、cpu、dma、master_0等主设备以及slave_0、slave_1、ccu等从设备均通过ace总线通讯,其均连接至ace总线一致性互联部分,即interconnect部分,该部分即为上述的数据总线。本技术中,主设备通过ccu与存储设备(图1中的eeprom以及与其相关的设备)通信,存储设备无法采用ace协议通信,ccu需要适应存储设备的需求,采用i2c协议或spi协议与存储设备通信。
22.进一步的,请参考图2,图2为本技术实施例提供的一种缓存加速设备的结构示意图,包括数据内存(data_ram)、地址内存(addr_ram)和处理器(包括match,还可以根据需要包括其他部件,例如若存在con模块,则处理包括con模块,con模块用于进行指令合并)。数据内存,用于存储预存数据,地址内存,用于存储预存地址。预存数据,是指在本次数据访问之前,在缓存加速设备中存储的数据,其具体可以为在本次数据访问之前想要写入存储设备的数据,或者为在本次数据访问之前从存储设备中读出的数据。本次数据访问,是指处理当前获取的访问请求的过程。预存地址,是指对应的预存数据在存储设备中的存储地址,其具体形式不做限定。可以理解的是,地址内存和数据内存中分别存储的数据数量相同,且一一对应。示例性的,地址内存和数据内存分别可以存储16条数据,则在地址内存中1号位置存储的预存地址,就是在数据内存中1号位置存储的预存数据在存储设备中的地址。相应的,在地址内存中2号位置存储的预存地址,就是在数据内存中2号位置存储的预存数据在存储设备中的地址。
23.处理器,用于执行对访问请求的处理,具体包括从数据总线获取访问请求,并解析访问请求得到访问地址。将访问地址与地址内存中的各个预存地址进行匹配检测。若检测到目标预存地址与访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作。其中,目标预存地址序号为目标预存地址在地址内存中的序号,示例性的,目标预存地址序号,即为上述的1号位置对应的1号,或2号位置对应的2号,通常情况下,会设置数据内存和地址内存中序号相同的位置存储相对应的预存数据和预存地址。利用目标预存地址序号,则可以在数据内存中确定数值相同的预存数据序号的目标预存数据。可以理解的是,序号的对应关系可以并不是相同,可以任意设置。
24.对于处理器执行的各个步骤,请参考图3,图3为本技术实施例提供的一种缓存加速方法流程图。该方法包括:s101:从数据总线获取访问请求,并解析访问请求得到访问地址。
25.数据总线,是指与主设备等非存储设备进行通信的总线,其采用协议可以为axi、ace或其他可选协议。主设备等可以通过数据总线发送对存储设备中的数据进行访问的访
问请求,该访问请求具体可以为写入数据的写入请求,或者可以为用于读出数据的读取请求,请求的格式与数据总线协议相匹配。无论对数据进行怎样的访问,访问请求中均需要指明想要访问的数据所处的位置,即访问地址,以便将新的数据写入到访问地址,或者从访问地址中读取想要的数据。需要说明的是,由于存储设备中的地址具有唯一性,因此访问地址应当为数据在存储设备中的地址,以便能够正确读出数据。
26.本实施例并不限定根据访问请求得到访问地址的方式,在一种实施方式中,访问请求包括了访问地址字段,按照协议识别访问请求的访问地址字段,即可从中读出访问地址。在另一种实施方式中,缓存加速设备预存有预设的若干个地址标识和对应的访问地址的一一对应关系,访问请求包括了地址标识字段,按照协议识别访问请求的地址标识字段并从中读出地址标识,并利用上述的一一对应关系确定地址标识对应的访问地址。
27.在一种优选的实施方式中,由于主设备在进行数据访问时,有时会连续发送相同类型的访问请求。由于存储设备更擅长连续读写而不是短暂的间断读写,因此这些访问请求若被存储设备一一单独执行,则执行效率较低。为了解决该问题,可以将符合要求的请求合并,以便存储设备一次执行。具体的,从数据总线获取访问请求的过程可以包括:步骤11:从数据总线获取初始访问请求;步骤12:判断初始访问请求和访问类型相同的中间访问请求的访问操作类型和数据操作长度是否相同。
28.步骤13:若相同,则利用初始访问请求和中间访问请求的数据操作长度更新中间访问请求。
29.步骤14:若不相同,则将中间访问请求确定为访问请求,并将初始访问请求确定为新的中间访问请求。
30.初始访问请求的数量不做限定,通常情况下,只有连续的请求才可能为符合要求的请求,因此首先从数据总线处获取若干个(例如两个)时间相邻,且访问类型相同的初始访问请求。初始访问请求,是指从数据总线直接获取到的请求。访问类型,是指表明访问请求为读或写的类型。访问操作类型,是指访问操作的具体执行方式类型,例如可以为固定地址访问,即对一段固定的位置区间进行访问;或者可以为递增地址访问,即以一个起始位置为基础,依次向后进行访问;或者可以为回环式访问,即在一个固定的位置区间内,以一个起始位置开始进行访问,在访问到未知取件的末尾时,从该位置区间的起始点继续进行访问。数据操作长度,是指初始访问请求想要访问的数据长度,大小是存储设备的最小访问长度的倍数,一个最小访问长度的数据可以被称为一个cacheline,最小访问长度用line_size表示。
31.中间访问请求,是指在获取初始访问请求之前,已经等待进行合并处理的请求,其具体为经过合并处理后的请求,或者可以为上一次合并处理时没有被成功合并的初始访问请求。若初始访问请求的访问操作类型和数据操作长度相同,则说明初始访问请求和中间访问请求可以进行合并,具体为利用数据操作长度合并得到合并后的新的中间访问请求的数据操作长度,并保持原有的访问操作类型,生成新的中间访问请求,完成中间访问请求的更新。此外,若不相同,则直接原有的中间访问请求确定为访问请求,由存储设备执行。并将未成功合并的初始访问请求确定为新的中间访问请求,等待与新获取的初始访问请求进行合并。可以理解的是,可以设置等待时长,在确定了新的中间访问请求后开始计时,在等待
时长大于预设时长后,将该中间访问请求确定为访问请求以便执行。由此可见,在某些情况下,在获取到新的初始访问请求时判断是否存在中间访问请求,若不存在中间访问请求,在这种情况下自然无法执行后续的合并判断等步骤,可以直接将刚获取到的初始访问请求确定为新的中间访问请求,以便再次重新获取并执行合并的流程。
32.请参考图2,图2中存在w_fifo和对应的r_fifo,以及分别与其连接的w_con模块和r_con模块。其中,fifo是指先进先出存储器,fifo为first input first output,先进先出。w_fifo用于存储从数据总线获得的写入请求,r_fifo用于存储从数据总线获得的读取请求。con模块(包括w_con模块和r_con模块),是指连续指令合并模块,其属于处理器的一部分,用于执行上述步骤11~步骤12的指令(即初始访问请求)合并步骤。在得到访问请求后,con模块将其发送至内存区的match进行后续处理。
33.具体的,以写入请求为例,w_fifo通过wr_addr通道获取用于进行写入的初始访问请求(或称为初始写入请求)。如果当前w_con模块中没有等待合并的中间访问请求,w_con模块可以从w_fifo中连续获取两个初始访问请求,将先获取的一个作为中间访问请求,提取其中的awburst(写类型,即访问操作类型)、awlen(写突发长度,即数据操作长度),除此以外,初始访问请求中还包括例如awsize(写数据宽度)等信息,对此不做限定。判断初始访问请求和中间访问请求的awburst和awlen是否相同,若相同则说明可以合并,因此利用两个数据操作长度,awlen_0和awlen_1,计算得到数据操作长度awlen,具体为awlen= awlen_0 awlen_1 1(因为awlen数据从0开始表示1个最小访问长度,以1表示2个最小访问长度,以此类推,因此在合并后,需要在二者相加的基础上再加1,此处加的“1”表示一个最小访问长度),将其作为新的中间访问请求的写突发长度。
34.若awburst和/或awlen不相同,则可以将中间访问请求确定为访问请求,将初始访问请求保留并作为新的中间访问请求,从w_fifo中获取一个新的初始访问请求,利用新获取的初始访问请求和本地保留的中间访问请求重新执行上述的是否能够合并的检测。这种检测和合并的方式能够最大可能地将能够合并的初始访问请求进行合并。
35.对于读取请求来说,其处理方式与写入请求相同,r_fifo通过rd_addr通道获取用于读取的初始访问请求(或称为初始读取请求)。初始读取请求中包括arburst(读类型,即访问操作类型)、arlen(读突发长度,即数据操作长度)、arsize(读写数据宽度)等信息。利用r_con对其进行合并处理的过程与初始写入请求相同,在此不再赘述。
36.此外,若成功合并且得到访问请求,则需要进行响应的计数,即更新写指令计数cnt_cmd_wr或读指令计数cnt_cmd_rd,具体为在原有基础上加一。虽然得到的访问请求在存储设备处仅需执行一次,但是对于主设备来说,访问请求的执行代表着多个初始访问请求被执行完毕,因此在访问请求执行完毕后需要进行多次响应,具体的响应次数与写指令计数cnt_cmd_wr或读指令计数cnt_cmd_rd相关。
37.在得到访问请求后,需要得到对应的访问地址。对于写入请求来说,其通常写入的长度很小,即便通过初始访问请求的合并得到访问请求,写入的长度通常也在一个最小访问长度以内。因此对于写入请求,其统称仅具有一个访问地址。而读取请求的数据操作长度(对于读取请求来说,可以称为读取数据长度)通常较长,很可能会超过一个最小访问长度,因此对于读取请求来说,解析访问请求得到访问地址的过程可以包括:步骤21:获取读取请求中的读取数据长度,并利用读取数据长度和读取单位长度
确定读取数据个数。
38.步骤22:基于读取请求中的起始读地址,利用起始读地址和读取数据个数生成若干个非起始读地址。
39.步骤23:将起始读地址和非起始读地址确定为访问地址。
40.其中,读取单位长度即为数据读取时的最小访问长度,二者实质相同,仅称呼不同。读取请求中具有读取数据长度,其是指想要读取的数据长度,其以读取单位长度为粒度,因此利用读取数据长度和读取单位长度确定读取数据个数,读取数据个数即为想要读取的cacheline的个数。读取请求中执行的起始读地址,每次读取一个cacheline,因此以起始读地址为基准,每次向后偏移读取单位长度,共偏移读取数据个数减一次,得到若干个非起始读地址,然后将起始读地址和非起始读地址确定均确定为访问地址,在后续分别判断各个读地址对应的数据是否在数据内存中。
41.具体的,可以利用cache_num表示读取数据个数,用r_num表示读取数据长度,读取单位长度可以用line_size或line_size/8byte表示(两种表示方式采用的计量单位不同)。若利用line_size/8byte表示读取单位长度,则cache_num=r_num*8/line_size。
42.s102:将访问地址与地址内存中的各个预存地址进行匹配检测。
43.地址内存,是指用于存储预存地址的内存,可以利用addr_ram表示。具体的,在第一种实施方式中,地址内存可以为双端口的ram,两个端口的数据位宽可以为预存地址的地址位宽(addr_size)。或者,在第二种实施方式中,两个端口的数据位宽为addr_size 1,在这种情况下,其中 [addr_size-1:0] 的比特位为预存数据在存储设备中的预存地址,[addr_size]的比特位为有效标志位,用于表示预存地址是否有效,例如在一种实施方式中,主设备可以向ccu发送指示数据无效的指令,则可以通过更改地址内存中的该指令指定的预存地址的有效标志位来将对应的预存数据无效。数据深度为1024,数据深度用depth表示。在第二种实施方式中,通过匹配检测需要满足两个方面,第一方面为访问地址与目标预存地址相同,第二方面为目标预存地址的有效标志位为使能状态或激活状态。与这种实施方式相匹配的,data_ram同样可以为双端口ram,两个端口分别用于进行读出和写入。data_ram的位宽可以为line_size。此外,在第一种实施方式中,由于不存在有效标志位,判断是否匹配的方式可以仅为判断访问地址与目标预存地址相同。
[0044]
地址内存中存储有多个预存地址,数量不做限定,例如可以为16个,分别具有从0~15的预存地址序号。在确定访问地址后,利用其与各个预存地址相互匹配检测,判断是否存在与访问地址匹配的目标预存地址。若存在,则说明访问请求想要访问的数据在数据内存中存储,否则说明数据内存中不存在想要访问的数据。
[0045]
对于写入请求来说,若存在目标预存地址,则可以被称为写命中(写hit),若不存在目标预存地址,则可以被称为写不命中(写miss)。对于读出请求来说,无论是否经过合并,其读取数据长度均可能超过读取单位长度,若读取数据长度大于读取单位长度,则称为突发读请求,若读取数据长度不大于读取单位长度,则称为单个读请求。对于单个读请求,若存在目标预存地址,则可以被称为单个读命中(单个读hit),若不存在目标预存地址,则可以被称为单个读不命中(单个读miss)。对于突发读请求,若其对应的所有访问地址均存在目标预存地址,则可以被称为突发读命中(突发读hit),若任一访问地址不存在目标预存
地址,则可以被称为突发读不命中(突发读miss)。需要说明的是,对于突发读请求来说,无论是突发读hit还是突发读miss,其对应的访问地址均分别独立记性后续处理。
[0046]
s103:若检测到目标预存地址与访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作。
[0047]
其中,目标预存地址序号为目标预存地址在地址内存中的序号,通常情况下,地址内存中某一预存地址序号处存储的预存地址,就是数据内存中该预存地址序号对应的预存数据序号处存储的预设数据在存储设备中的地址。在这种情况下,可以对数据内存中的目标预存数据执行访问操作,访问操作根据访问请求的具体类型确定,具体为读取或写入。
[0048]
在一种实施方式中,对数据内存中目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作的过程可以包括:步骤31:若访问请求为读取请求,则对目标预存数据执行读取操作。
[0049]
步骤32:若访问请求为写入请求,则获取写入请求对应的待写入数据,并利用待写入数据对目标预存数据执行覆盖写入操作。
[0050]
步骤33:在覆盖写入操作执行完毕后,将待写入数据封装得到写入数据包,并将写入数据包发送至存储设备。
[0051]
可以理解的是,若访问请求为读取请求,则可以直接将目标预存数据读出。请参考图2,目标预存数据可以通过rd_interface发送至rd_data通道,进而反馈至interconnect。
[0052]
进一步的,在一种优选的实施方式中,还可以设置标识内存,用于存放各个预存数据对应的有效数据单位标识。具体的,对目标预存数据执行读取操作的过程包括:步骤41:获取目标预存数据对应的有效数据单位标识。
[0053]
步骤42:根据有效数据单位标识,从目标预存数据中提取有效数据单位,并向数据总线输出有效数据单位。
[0054]
有效数据单位标识,是指用于表示预存数据中各个数据部分是否有效部分的标识。可以理解的是,一条预存数据(即一个cacheline)虽然是数据读写的最小单位,但并不是数据变化的最小单位,因此在数据读取时,可以仅从中读出有效的部分,减少需要传输的数据量。标识内存,可以用st_ram表示,其中与data_ram和addr_ram相互对应。在一种实施方式中,有效数据单位标识可以利用一个比特位表示对应的预存数据中一个字节,若比特位为1则表示该字节有效,为0是表示无效。
[0055]
根据有效数据单位标识,可以从目标预存数据中提取出有效数据单位(例如比特位为1对应的字节),并向数据总线输出。有效数据单位,是指有效数据单位标识表示有效的数据单位,大小可以为1字节或其他形式。
[0056]
此外,若访问请求为写入请求,则说明需要将新的数据写入到存储设备。在这种情况下首先需要从数据总线获取待写入数据。在一种具体的实施方式中,请参考图2,数据总线中的wr_data通道用于传输待写入数据,获取的待写入数据可以在wd_fifo中暂存。wd_fifo的数据位宽至少为bus_width,此外,若地址内存中具有有效标志位,则wd_fifo的数据位宽可以为bus_width 1,其中 [bus_width-1:0]的比特位为总线发送的待写入数据, [bus_width]比特位用于传输有效标志位。
[0057]
在得到写入请求的待写入数据后,利用其对目标预存数据执行覆盖写入操作,完成对目标预存数据的更新。在覆盖写入完毕后,可以基于存储设备能够兼容的协议(例如
i2c或spi)封装得到写入数据包,并发送至存储设备,以便存储设备更新数据。例如可以参考图2,通过io_interface端口向eeprom发送写入数据包。可以理解的是,写入数据包中至少包括待写入数据和对应的目标预存地址。
[0058]
相应的,若存在有效数据单位标识,则在覆盖写入操作执行完毕后,还可以存储待写入数据对应的有效数据单位标识,该有效数据单位标识可以从访问请求中得到。
[0059]
另外需要说明的是,在写入完毕后,需要进行写入响应,以便通知主设备写入完成。由于写入请求可能为经过合并的访问请求,因此在进行响应时,需要获取写指令计数cnt_cmd_wr,根据其确定响应次数进而进行响应。请参考图2,可以通过wr_resp通道进行写入响应。读取请求类似,区别在于根据读指令计数cnt_cmd_rd进行响应,同样通过wr_resp通道。
[0060]
若不存在任意一个预存地址与访问地址匹配,则可以执行如下步骤:步骤51:获取替换地址序号。
[0061]
步骤52:将访问地址写入地址内存中替换地址序号对应的地址位置。
[0062]
步骤53:获取访问请求对应的访问数据,将访问数据写入数据内存中替换地址序号对应的数据位置,并利用访问数据执行访问请求对应的访问操作。
[0063]
替换地址序号,是指用于在地址内存中指定访问地址存储位置的序号,其可以根据预设的替换策略得到,具体可以参考相关技术。若不存在任意一个预存地址与访问地址匹配,则说明需要在地址内存中写入访问请求对应的访问地址,该访问地址在地址内存中的写入位置的序号即为替换地址序号。可以理解的是,若地址内存并未写满,则替换地址序号则指向地址内存中空白的部分。若地址内存已写满,则替换地址序号可以指向地址内存中的任意一个位置。
[0064]
在确定替换地址序号后,可以将访问地址写入到其执行的地址内存中的地址位置,例如1号位置,然后将访问请求对应的访问数据写入到数据内存中与替换地址序号对应的位置。
[0065]
对于读取请求来说,访问数据需要从存储设备处获取,具体可以为向存储设备发送具有访问地址的信息,以便存储设备响应对应的访问数据,并将访问数据写入数据内存中替换地址序号对应的数据位置。然后,将该访问数据发送至数据总线,例如可以通过图2中的rd_data通道发送访问数据,并通过wr_resp通道进行读取响应。此外,还应当更新st_sam中对应的数据,新写入st_sam的有效数据单位标识全为1。
[0066]
对于写入请求来说,访问数据需要从数据总线获取,例如可以通过图2中的wr_data通道获取访问数据并在wd_fifo存储,在需要时从wd_fifo中获取访问数据并写入到data_ram中与替换地址序号对应的数据位置,进而利用其生成写入数据包并发送至存储设备。同时,通过wr_resp通道进行写入响应。
[0067]
需要说明的是,本技术在与存储设备进行数据交互时,可以根据数据交互的类型改写对应的请求执行信号,以便表示当前正在对存储设备进行怎样的操作。具体的,请求执行信号可以包括读空闲信号re_idle和写空闲信号wr_idle,其中,若从存储设备中读取数据,则将re_idle改写为1,读取完毕后再改写为0。相应的,若向存储设备中写入数据,则将wr_idle改写为1,写入完毕后再改写为0。re_idle和wr_idle无法同时被设置为1,因为存储设备在一个时刻仅能执行一种操作。
[0068]
基于上述实施方式,本技术中的数据总线采用的协议不做限定。在一种可行的实施方式中,其采用ace总线协议。ace总线是在axi总线的基础上,增加了一致性通道和一致性控制策略形成的新一代总线。axi总线协议规定其内部的5个通道为完全独立,ace总线在此基础上增加了3个用于进行监听操作的信道。监听操作的目的是检测一条数据是否被存储于数据内存,具体可以包括如下步骤:步骤61:从数据总线获取监听指令,并解析监听指令得到监听地址。
[0069]
步骤62:将监听地址与各个预存地址进行匹配检测,得到监听结果。
[0070]
步骤63:将监听结果反馈至数据总线。
[0071]
监听指令,是指用于检测某一条数据是否被存储于数据内存的指令,其至少用于指示需要被检测的数据在存储设备中的地址,即监听地址。通过将监听地址与各个预存地址进行匹配,可以判断地址内存中是否存有监听地址,进而判断数据内存中是否存在监听地址对应的数据,得到监听结果。若监听结果为不匹配,则说明未在数据内存中存储。得到的监听结果用于反馈给数据总线,需要说明的是,若监听结果为命中,在反馈监听结果的同时可以反馈监听地址在数据内存中对应的数据。
[0072]
请参考图2,ccu通过ac_interface接口从数据总线的ac通道获取监听指令后,从中得到监听地址,并发送至match(或称为匹配模块),匹配模块从addr_ram中获取预存地址,并与监听地址进行匹配。若监听地址和某个预存地址相同,且该预存地址对应的有效标志位为1。则利用cd_interface接口将data_ram中与该预存地址对应的数据通过cd通道返回至interconnect,并利用cr_interface接口通过cr通道返回监听结果。
[0073]
应用本技术实施例提供的缓存加速方法,在数据总线和存储设备之间,插入了缓存加速设备作为中转。该缓存加速设备能够在数据总线处获取用于进行数据读取或数据写入的访问请求,并判断缓存加速设备内的地址内存中是否存在想要访问的访问地址。地址内存中的各个预存地址具有对应的预存地址序号,利用预存地址序号,可以将地址内存中的预存地址与数据内存中的预存数据相对应。若检测到访问请求指定的访问地址为目标预存地址,则说明该地址对应的目标预存数据在数据内存中存储,因此可以对目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作,例如将其读出或覆盖写入。根据cpu等主设备的特性,在进行数据访问时,通常会对一个较小的地址区间内的数据进行操作,因此利用地址内存和数据内存,有较大的概率缓存加速设备能够确定访问请求想要访问的数据,执行相应的操作并进行响应,使得cpu等主设备和eeprom等存储设备的读写速度相匹配,减少访问请求的时延,提高读写效率。
[0074]
下面对本技术实施例提供的缓存加速装置进行介绍,下文描述的缓存加速装置与上文描述的缓存加速方法可相互对应参照。
[0075]
请参考图4,图4为本技术实施例提供的一种缓存加速装置的结构示意图,包括:获取模块110,用于从数据总线获取访问请求,并解析访问请求得到访问地址;匹配检测模块120,用于将访问地址与地址内存中的各个预存地址进行匹配检测;操作模块130,用于若检测到目标预存地址与访问地址匹配,则对数据内存中目标预存地址序号对应的目标预存数据执行访问请求对应的访问操作;其中,目标预存地址序号为目标预存地址在地址内存中的序号。
[0076]
可选地,操作模块130,包括:
memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0085]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0086]
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本技术的范围。
[0087]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0088]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0089]
本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献