掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Buffer的Cache控制器及工作方法

文献发布时间:2023-06-19 18:37:28


一种基于Buffer的Cache控制器及工作方法

技术领域

本发明涉及存储器领域,尤其是指一种基于Buffer的Cache控制器及工作方法。

背景技术

在微控制器中,处理器的时钟频率相对于存储器来说比较快,一般有数倍到数十倍的差距。为了减少处理器读取数据的等待,提高系统执行效率,可在处理器和存储器之间增加一级Cache。Cache是基于Sram实现的存储器,容量相对于系统存储器小但是速度高很多,可以与处理器的频率相同。

当处理器读取数据时,如果在Cache中可以找到需要的数据,我们称之为命中(Hit)。反之没有找到数据,我们称之为缺失(Miss),这时候就需要控制器从外部存储器加载一小块数据(包含但不限于本次传输需要的数据),并且存放在Sram中,以便于处理器将来可以及时访问到。

对于现有的Cache控制器,处理器得到当前访问地址的数据以后,Cache控制器可能处于数据加载阶段,此时Sram的端口被写入操作占用,处理器需要等到所有的数据全部加载完成以后才能继续下一个地址的访问。

发明内容

为解决上述技术问题,本发明的一种基于Buffer的Cache控制器,其中的一级Cache控制器设于处理器以及存储器中间,包括有Sram、Buffer,Cache控制器在存储器和Sram中间增加了一级Buffer用于缓存当前正在载入的数据;Cache控制器在从存储器载入数据的同时可以继续匹配内核的读操作地址,其中命中Sram或者命中Buffer或者命中正在传输的总线则可以立即反馈数据;Cache控制器中的Sram和Buffer的宽度是总线宽度的2

在本发明的一个实施例中,所述Sram包括TagSram和DataSram,其中的TagSram用于存储标志位,V=1表示该条缓存是有效的,V=0则表示该条缓存是无效的,T的值取自地址的高位,用来匹配以后的读地址;DataSram用于存储数据。

在本发明的一个实施例中,所述Buffer包括TagBuffer、DataBuffer,TagBuffer用于存储当前正在从存储器读取数据的标志位,其中V有2

另外,本发明还提供一个实施例,Cache控制器的工作方法,基于所述的Cache控制器设计,包括如下步骤:

步骤S1:处理器在总线上发起一次读传输,Cache控制器接收该请求,跳转到S7;

步骤S2:处理器可直接获取Sram里的数据并且跳转到S1执行下一次读传输;

步骤S3:处理器可直接获取Buffer里的数据并且跳转到S1执行下一次读传输;

步骤S4:处理器可直接获取Bus上的数据并且跳转到S1执行下一次读传输;

步骤S5:等待加载工作完成;

步骤S6:Cache控制器开始本次数据加载,并且把总线上获取的第一个数据反馈给处理器,并且跳转到S1执行下一次都传输

步骤S7:Cache控制器通过地址位高位来搜索TagSram,如果Sram中已经存在该地址对应的数据,则数据命中并跳转到S2;如果未命中则跳转到S8;

步骤S8:Cache控制器通过地址位高位来搜索TagBuffer,如果Buffer中已经存在该地址对应的数据,则数据命中并跳转到S3;如果未命中则跳转到S9;

步骤S9:Cache控制器匹配当前处理器的读地址以及当前正在加载的都地址,如果两者地址相同、则数据命中并跳转到S4;如果未命中则跳转到S10;

步骤S10:处理器当前的读数据不存在Cache控制器中,控制器需要从存储器加载数据;若当前已经有加载的操作正在执行中,则跳转到S5,如果没有则跳转到S6;

步骤S11:等待加载工作完成并且跳转到S6。

本发明的上述技术方案相比现有技术具有以下优点:本发明所述的Cache控制器及工作方法,通过在Sram和外部存储之间再加入一级Buffer用于保存加载过程中数据,并且在这一小块数据全部加载完成以后一次性写入Sram来更新数据。这样一来,更新操作只需要占用一个时钟周期,其余的时间都可以被处理器访问。

附图说明

为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明。

图1是本发明Cache控制器在系统中的拓扑示意图;

图2是本发明所述Cache控制器中Sram和Buffer的存储示意图;

图3是本发明所述Cache控制器的工作流程图;

图4是本发明所述Cache控制器的一种时序图;

图5是本发明所述Cache控制器的另一时序图。

具体实施方式

如图1所示,本实施例提供一种基于Buffer的Cache控制器,在处理器以及存储器中间增加一级Cache控制器,Cache控制器有Sram、Buffer,用于加速处理器的读取速度。

如图2所示,为Cache控制器中Sram和Buffer的存储示意图。TagSram用于存储标志位,V=1表示该条缓存是有效的,V=0则表示该条缓存是无效的。T的值取自地址的高位,用来匹配以后的读地址。DataSram用于存储数据,其Cache宽度可以是Bus宽度的2

其中的TagBuffer中使用2

如图3所示,为Cache控制器的工作流程图。

Cache控制器的工作方法,基于所述的Cache控制器设计,包括如下步骤:

步骤S1:处理器在总线上发起一次读传输,Cache控制器接收该请求,跳转到S7;

步骤S2:处理器可直接获取Sram里的数据并且跳转到S1执行下一次读传输;

步骤S3:处理器可直接获取Buffer里的数据并且跳转到S1执行下一次读传输;

步骤S4:处理器可直接获取Bus上的数据并且跳转到S1执行下一次读传输;

步骤S5:等待加载工作完成;

步骤S6:Cache控制器开始本次数据加载,并且把总线上获取的第一个数据反馈给处理器,并且跳转到S1执行下一次都传输

步骤S7:Cache控制器通过地址位高位来搜索TagSram,如果Sram中已经存在该地址对应的数据,则数据命中并跳转到S2;如果未命中则跳转到S8;

步骤S8:Cache控制器通过地址位高位来搜索TagBuffer,如果Buffer中已经存在该地址对应的数据,则数据命中并跳转到S3;如果未命中则跳转到S9;

步骤S9:Cache控制器匹配当前处理器的读地址以及当前正在加载的都地址,如果两者地址相同、则数据命中并跳转到S4;如果未命中则跳转到S10;

步骤S10:处理器当前的读数据不存在Cache控制器中,控制器需要从存储器加载数据;若当前已经有加载的操作正在执行中,则跳转到S5,如果没有则跳转到S6;

步骤S11:等待加载工作完成并且跳转到S6。

图4、图5为Cache控制器的时序图,图中的信号说明如下。Clk:全局时钟信号。CoreAddr:处理器读地址信号Ax(y),x表示第几次传输,y表示偏移地址。CoreRdata:处理器读取的数据信号。

HitSram:表示当前传输命中Sram,处理器从Sram中获取数据。TagSramAddr:TagSram的读地址信号;TagSramDout:TagSram中读到的标签值。TagSramWe:TagSram的写入使能信号,1表示写操作,0表示读操作。TagSramDin:TagSram写入的标签值。DataSram的信号意义与TagSram类似。

HitBuffer:表示当前传输命中Buffer,处理器从Buffer中获取数据。TagBuffer:TagBuffer寄存器里的标签值;TagBufferWe:TagBuffer的写入使能信号,1表示写操作,0表示读操作;TagBufferDin:TagBuffer写入的标签值。DataBuffer的信号意义与TagBuffer类似。

HitBus:表示当前传输命中Bus,处理器从Bus上获取数据。BusAddr:当前加载操作的地址;BusRdata:当前加载操作的读数据。

如图4所示:

T1时刻,处理器发起A1(1)地址的读传输请求,同时从TagSram和DataSram中搜索A1地址对应的标志ST1和数据SD1。

T2时刻,比较A1地址的高位和ST1,发现标志匹配并且有效值为1,表示本次传输的数据存在于Sram中,HitSram有效并且直接把SD1(1)反馈给处理器。

T4时刻,处理器发起A2(2)地址的读传输请求,同时从TagSram和DataSram中搜索A2地址对应的标志ST2和数据SD2。

T5时刻,比较A2地址高位和ST2,发现标志不匹配或者有效值为0,表示本次传输的数据不在Sram中;比较A2地址高位和TagBuffer的值FT2,发现标志不匹配或者有效值为0,表示本次传输的数据不在Buffer中;总线也没有数据传输。本次传输未命中,Cache控制器需要从存储器中加载包含A2(2)地址数据的一块数据。

T6时刻,TagBuffer写入标志FT2并且把有效位清零;Bus发起地址A2(2)的读传输操作。

T9时刻,Bus得到数据BD(2),HitBus有效并且直接把BD2(2)反馈给处理器。同时向TagBuffer写入有效位V2(2),向DataBuffer写入数据BD(2),在Bus上发起地址A2(0)的读传输操作。

T10、T11时刻的操作与T9时刻类似。

T13时刻,当Bus上读到最后一次数据BD2(3)后,把该块数据全部写入DataSram,并且向TagSram写入标志ST2。此时,Buffer中的内容已经更新到Sram中,因此要把TagBuffer的标志清0,表示此时Buffer中的数据已经是无效的。

如图5所示:

T1时刻-T5时刻与图4示例的T4时刻-T9时刻相同。

T6时刻,处理器发起A3(0)地址的读传输请求,同时从TagSram和DataSram中搜索A3地址对应的标志ST3和数据SD3。

T7时刻,比较A3地址的高位和ST3,发现标志匹配并且有效值为1,表示本次传输的数据存在于Sram中,HitSram有效并且直接把SD3(0)反馈给处理器。同时,控制器正在从存储器读取数据中。

T8时刻,控制器从总线上获取BD2(0),同时向TagBuffer写入有效位V2(0),向DataBuffer写入数据BD2(0)。

T10时刻,处理器发起A2(0)地址的读传输请求,同时从TagSram和DataSram中搜索A2地址对应的标志ST2和数据SD2。

T11时刻,比较A2地址高位和ST2,发现标志不匹配或者有效值为0,表示本次传输的数据不在Sram中;比较A2地址高位和TagBuffer的值FT2,发现标志匹配并且有效值为1,表示本次传输的数据在Buffer中。HitBuffer有效并且直接把FD2(0)反馈给处理器。

T14时刻的操作与T8时刻类似。

T16时刻,当Bus上读到最后一次数据BD2(3)后,把该块数据全部写入DataSram,并且向TagSram写入标志ST2。此时,Buffer中的内容已经更新到Sram中,因此要把TagBuffer的标志清0,表示此时Buffer中的数据已经是无效的。

显然,上述实施例仅仅是为清楚地说明所作的举例,并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

技术分类

06120115629427