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

一种快速实现可变cacheline切换的方法与流程

2023-01-15 07:25:40 来源:中国专利 TAG:


1.本发明涉及cache设计技术领域,尤其涉及一种快速实现可变cacheline切换的方法。


背景技术:

2.cache设计用于改善提高数据访存效率,其理论基础是数据空间(刚使用过的数据附近连续数据近期可能被使用)、时间连续性(刚使用过的数据近期可能再次使用),在请求端和存储间插入cache设计,根据局部性设计算法从大容量存储中(访问速度慢,数十到数百周期响应一次请求,常见如ddr)选择复制一部分数据到cache中的小容量存储中(访问速度快,数个周期响应一次请求,如sram),某次请求数据如果正好cache中有则可以快速响应,反之再从大存储中取,理论上请求局部性越好数据响应速率越接cache小存储的响应效率,从而获得访存效率的极大提升。
3.cache设计大致原理说明:首先将整个ddr按更小的连续数据单位(记作cacheline)分块,每个cacheline保存对应地址的特定有效部分作为cacheline区别其它cacheline的唯一标识(记作tag),整个cache由若干cacheline组合形成;当cache收到读写请求时,根据tag判别请求数据是否处在某一cacheline中(在记作命中/hit,没在记作未命中/miss),hit则执行相应读写请求,miss则向ddr请求包含未命中请求对应数据的cacheline,用于替换算法所确定的某个cacheline;这样在请求和替换算法的共同控制下cache中始终保留最近请求相关的若干cacheline,从局部性原理可知,未来访问大概率存在与cache中某一cacheline,这些请求的响应速率从ddr响应级别加速到cache响应级别,由此实现访存加速意图。
4.cacheline由连续若干数据(记作data)组成,cacheline的大小和局部性息息相关,局部性越好需要越大的cacheline,反之需要小的cacheline,例如连续地址访问,cacheline中data连续被使用,大cacheline会获得较高的命中率;循环逻辑中若干数据被反复使用,跳转逻辑地址大幅度跳跃后再小范围连续,如此适合小cacheline,避免大cacheline中存在过多无用data而导致命中率降低;
5.实际设计中控制逻辑请求多变,局部性弱适合小cacheline,数据处理逻辑请求规律,局部性强适合大cacheline,有设计会采取分别处理方式,但仍有不少设计受限于实现资源、功耗和控制数据流拆分困难等原因需要单一cache应对局部性强弱混合的访问请求。


技术实现要素:

6.本发明提出了一种可变cacheline切换技术,可在工作中动态切换cacheline大小,由此提高不同局部性请求下的命中率,使得更多请求响应周期提高到cache响应级别,从而达到局部性强弱混合请求访问效率提高的目的。
7.为解决上述技术问题,本发明采用的技术方案是:一种快速实现可变cacheline切换的方法,其特征在于包括如下步骤:
8.s1、以cache原有cacheline大小为基准单位,合并连续基准cacheline形成新的cacheline,大小记作xn档,表示该档cacheline为n个基准cacheline大小,n最小为1,最大至包括cache中所有基准cacheline;
9.s2、cache内以基准cacheline大小对应的tag标志均保留,原cache处理请求等同为工作在x1档,在cache请求命中时,x1与xn档保持一致,未命中时x1档只更新替换一个基准cacheline,xn档的切换通过沿用放大原有替换逻辑处理单位,从替换1个变为替换n个基准cacheline;
10.s3、xn档切换通过配置接口设置切换控制寄存器,内部切换选择逻辑均受该寄存器控制动作,整个切换过程处于任意cache请求处理间隙。
11.进一步的,所述步骤s1中基准cacheline按照连续2的指数个进行分割。
12.进一步的,所述步骤s2中tag标识为cacheline唯一有效信息的标志并且不会新增。
13.进一步的,所述步骤s2中保留原有命中判断逻辑,以及命中后的后续处理逻辑;未命中时,沿用放大原有替换逻辑处理单位,从替换1个变为替换n个基准cacheline。
14.与现有技术相比,本发明的有益效果包括:通过完成内部标志和替换请求发送逻辑2个节点的修改后,再加上控制切换逻辑即可实现cacheline的动态切换,实现了原有cache访问效率的提升,整体具有实现代价小、复杂度低和不错的提升效果等特点。
附图说明
15.参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:
16.图1为本发明一较佳实施例的常规cache原理流程图;
17.图2为本发明一较佳实施例的常规cache内部判断流程原理图;
18.图3为本发明一较佳实施例的常规cache内部判断简易图;
19.图4为本发明一较佳实施例的cache设计与常规设计对比图;
20.图5为本发明一较佳实施例的cache设计内部判断流程图;
21.图6为本发明一较佳实施例的cache设计替换逻辑扩展流程图;
22.图7为本发明一较佳实施例的cache设计替换逻辑校正过程流程图
23.图8为本发明一较佳实施例的cache设计替换逻辑简易流程图;
24.图9为本发明一较佳实施例的cache设计替换逻辑同步处理流程图;
25.图10为本发明一较佳实施例的cache设计整体流程图。
具体实施方式
26.容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
27.根据本发明的一实施方式结合图1-图10示出。
28.如图1-图2所示,在常见cache设计中,包括如下几个部分:
29.存储mem(sram):用于存放从主存储复制得到的数据,内部等分为若干存储空间,每个空间大小记作一个cacheline;
30.内部标志:记录mem中每个cacheline位置的相关信息;
31.其中,vld:cacheline位置有效性标志,和cacheline一一对应,当某个cacheline位置被放入数据后即有效(1有效,0无效);
32.tag:cacheline位置所存数据在主存储中的位置信息,具体内容来自对应请求地址中部分比特位;
33.lru:cacheline位置读写访问记录,每被读/写一次记录一次;
34.hit/miss判定:取请求地址部分比特位(和保存tag时取相同位置)和所有有效cacheline位置所对应的tag进行比较,有一致的即为命中,否则均为未命中;
35.替换请求发送逻辑:当请求未命中时,将当前请求按照cacheline大小对齐调整后发送给主存储,用于请求包含未命中请求数据的cacheline数据块;
36.mem读写请求:汇总生成不同情况下对cache内部mem的读写请求,包括命中时读/写、未命中时替换写入、未命中替换完成后写/读等情况。
37.由此可见,如图3所示(三角数字标号与图2中指示一致),整个cache的工作包含命中和未命中两种处理流程:
38.对于命中流程,首先比较请求地址和内部标志判断命中与否,命中则通过mem读写请求逻辑产生的mem读写请求,mem再执行读写请求(读请求返回读数据,写请求只写mem),以上流程执行过程同时更新内部标志。
39.对于未命中流程,首先比较请求地址和内部标志判断命中与否,未命中则通过替换请求发送逻辑请求包含未命中数据的cacheline数据块,cacheline数据块返回结束产生mem写请求,写完成后再产生读取未命中数据的mem读请求,mem执行读写请求,以上流程执行同时更新内部标志。
40.上述介绍中替换体现了cache工作中存在的局部性规律,包括时间局部性(刚使用过的数据近期大概率还会再用)和空间局部性(刚使用过的数据的相邻数据近期大概率会被用到);首次cache访问一定是未命中,选取包含该请求数据的cacheline数据块,即选中了该数据相邻的若干数据,同时保留了请求数据本身,利用了两种局部性,后续访问数据恰好是之前搬过的cacheline数据的概率大小与局部性的强弱成正比,越强则cacheline中数据被访问的越多,无效的越少。
41.设计中局部性越好应当选用越大的cacheline,降低从主存储中复制搬运的次数(主存储访问除每周期一个的数据传送时间外还有解读处理请求的时间,后者在主存储整个的请求响应时间中占主要部分),反之需要小的cacheline,该规律在实践中体现很普遍,例如连续地址访问,cacheline中data连续被使用,局部性好,大cacheline会获得较高的hit rate;循环逻辑中若干数据被反复使用,跳转逻辑地址大幅度跳跃后再小范围连续,数据局部性弱适合小cacheline,避免大cacheline中存在过多无用data,占用宝贵小存储空间,降低命中率。
42.对此,本技术是在常规固定cacheline cache设计基础上通过识别修改关键节点来实现可切换cacheline功能,从而提升cache在面对局部性变化类请求时的访存效率。
43.如图4所示,核心原理是以常规cache的cacheline大小为基准,计作x1档;合并2个
x1档cacheline作为一个cacheline,即发生替换时请求2倍x1 cacheline大小的数据块更新合并后的2个cacheline位置,记作x2档,依次类推有x4、x8..直到xn档,n以2的指数倍递增最大到整个mem大小;这样切换不同档位意味着cacheline的大小在1~n倍x1档cacheline的大小范围内活动,当局部性好时切n为较大值,充分利用局部性减少多次请求的相应开销,反之局部性差时切n为较小值,避免取回过多无效数据所带来的开销。
44.如图5-图6所示,修改为cacheline可切换的实现细节如下:cache设计中cacheline和对应标志信号总会存在一一对应关系,x1档中每个cacheline对应的标志信号为基本单位,xn档就是同时对n个cacheline对应的标志信号同时更新,从而达到n个x1 cacheline等同于一个xn cacheline在更新。
45.对于替换逻辑:用于在未命中发生时产生要替换的cacheline对象(x1档指向某一个cacheline,xn版扩展指n个cache);具体实现是记录cacheline的读写顺序历史,然后依据一些算法决定替换对象,这里算法有多样性,以常见的最近最少使用算法(least recently used,缩写lru)为例说明,设x1档cache中共有8个cacheline,编号依次记作0~7,再假设访问顺序按0~7依次访问,那么0号是最早被使用的cacheline,也称为最近最少使用的cacheline,从局部性原则看它被再访问的概率最低,因而作为要被替换的对象;具体实现是赋予每个cacheline一个权重值,按照越近访问权重越高调整权重,同一时刻权重最低的cacheline即为将来要替换的对象。
46.对于cacheline有效标志(vld):假设x1档cache中共有8个cacheline位置,更新时机到来时会从8个中选1个置1表示有效,切换到xn档时会在切换控制命令(来自切换控制逻辑)指挥下将原始控制信号从1扩展到n个同时进行;扩展方法举例说明:假设x1档8个cacheline依次编号0~8,要切换到x2档,即合并{0,1},{2,3},{4,5},{6,7}得到4个x2cacheline,合并时遵循连续对其原则,即不能出现{1,2}或{3,5}这样的组合;原始控制信号生成逻辑依然沿用x1档设计,即固定指向0~7中某1个编号,简单观察分组即可知对应的x2 cacheline编号,如原始信号指向6表示对应x2 cacheline{6,7},表示更新时机到来时,x2档需要同时对6,7cacheline对应vld置1以表示对应cacheline的数据有效。
47.对应分组的具体实现方法举例说明,原始指向编号3,切换x2档时将其二进制11最低1位置0得10(十进制2),即为x2档对应组合{2,3}的首位编号,从2开始的连续2个编号即为它所属组合的全部编号;切换x4档时将其二进制11最低2位置0得00(十进制0),即为x4档对应组合{0,1,2,3}的首位编号,从0开始的连续4个编号即为它所属组合的全部编号;推广总结就是切换xn档位就是将原始信号指向cacheline编号二进制的低x=log2(n)位置0获得xn档cacheline组合的首位编号,其后连续n-1个编号即为余下编号。
48.cacheline在主存储中标签(tag):x1档时,更新时机到来时会保留cacheline对应地址的部分比特位存入对应某一个tag位置中,切换xn档表示要同时更新n个tag位置,从1到n扩展对应方法和vld处理一致,tag保存数值则需要对齐校正和递增扩展;
49.对齐校正,设切换到x2档,按先后顺序把2个x1 cacheline对应tag记作tag_a,tag_b,实际中受到请求对应tag值可能为tag_b,此时需要校正tag_b为tag_a(因为替换请求逻辑会按顺序先请求tag_a对应cacheline),对齐方法因为扩展遵循顺序连续对齐原则,参考前述低位置0方法处理实现;
50.递增扩展,对齐扩展校正首位更新tag,多tag更新时从首位tag基础上顺序加1得
到后续cacheline对应tag值;
51.如图7所示,替换请求发送逻辑:当内部切换命令有效,根据lru输出扩展替换对象对原始读写请求校正得到替换请求发送给主存储,校正方法参考前述原理阐述。
52.切换控制逻辑:首先对输入切换控制信号进行同步处理避免可能出现的异步采样情况发生提高设计兼容性,具体实现通过切换有效信号和切换码2个信号,前者为单比特信号标记切换码的有效性,该信号有效后需要等cache接收并反馈后才能结束,由此保证cache接收的切换码可靠,切换码为数字编码分别对应不同cacheline大小档位;
53.同步处理后再进行切换保护,是因为在cache进行读写处理中,其内部标志信号直接影响执行动作,因此需要等待cache处于执行完请求后的间歇期再进行切换动作,且切换结束前不能接收新的请求;经过切换保护后产生用于指挥切换逻辑的内部切换命令;
54.综上,完成内部标志和替换请求发送逻辑2个节点的修改后,再加上控制切换逻辑即可实现cacheline可切换功能。
55.通过拼接小cacheline实现大cacheline的思路是的切换cacheline中避免了由于繁琐的对齐而产生的问题,据此原理仅基于2个控制节点修正的实现方法体现设计简洁、易实现的特点,同时需要付出的逻辑代价为1个和tag等位宽的加法器、不超过20个的寄存器和若干组合逻辑单元;
56.2cacheline大小在相近局部性特征的连续访问中会趋向一个最优值,本反案可以较灵活提供多档切换,使得cacheline设定值尽量向最有值趋近,从而获得更优的切换效率;详细推导过程如下。
57.已读操作作为分析对象,如下图所示将请求响应分为3个阶段:cache返回到请求端、cache替换写入和存储返回到cache;
58.cache返回到请求端-表示请求直接命中或请求未命中后已完成替换操作,该时间通常比较固定1-2周期,这里记作a;
59.cache替换写入-表示替换过程中数据写入cache时间,每返回一个数据需要1周期,总时间等于cacheline中容纳请求数据个数,例如请求数据32b,cacheline 256b则cacheline中可容纳256/32=8个请求数据;
60.存储返回到cache-表示存储接收请求到数据返回时间,该时间通常为几十到几百周期变化,这里记作b;
61.据此整理cache请求响应情况如下表所示:
[0062][0063]
从中分析可知,hit命中情况下没有替换操作,请求相应周期始终为a,与cacheline大小无关;miss未命中时平均请求响应周期请求响应周期为a b m,其中a、b恒定;
[0064]
假设请求总数有x个,平均每个cacheline有n数据被使用(请求端应用或程序决定了要使用数据在主存中的分布,主存按照cheline拆分后,平均每个cacheline中被使用个数),则平均请求响应周期可表示为(x/n*(a b m) (x-x/n)*a)/x=a b/n m/n,其中a、b恒定n随请求端数据局部性决定,当m/n趋近为1时可以获得最优结果,本方案在切换档位上的灵活性允许选择接近n的m值,从而获得更优的平均请求响应。
[0065]
本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献