[发明专利]一种缓存系统和方法有效
申请号: | 201310681833.4 | 申请日: | 2013-12-06 |
公开(公告)号: | CN104699627B | 公开(公告)日: | 2019-05-07 |
发明(设计)人: | 林正浩 | 申请(专利权)人: | 上海芯豪微电子有限公司 |
主分类号: | G06F12/0897 | 分类号: | G06F12/0897 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 200092 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓存 系统 方法 | ||
1.一种缓存方法,所述方法将缓存分为:
栈缓存,用于存储程序运行时存储在栈区域中的数据;和
非栈缓存,用于存储程序运行时的其他数据;
当处理器核执行的数据访问指令对应的数据位于栈区域中时,直接访问栈缓存;
其特征在于,记录最高层次栈缓存的栈指针指向的数据地址;根据每层栈缓存可以容纳的数据量确定各个层次的栈缓存中栈指针指向的数据地址,从而实现一个跨越不同的缓存层次的栈缓存;
所述栈指针为栈顶指针或栈底指针;
由多个所述栈缓存结构组成多层的栈缓存;其中:
最高层次的栈缓存的栈顶指针值由处理器核产生的栈顶值决定;
其他层次的栈缓存的栈顶指针值由更高一层次的栈缓存的栈底指针值决定。
2.根据权利要求1所述方法,其特征在于,根据所述数据访问指令数据地址判断对应的数据位于栈区域中,还是位于非栈区域中;或
根据所述数据访问指令中的基地址寄存器号判断对应的数据位于栈区域中,还是位于非栈区域中。
3.根据权利要求2所述方法,其特征在于,大于或等于栈寄存器值的数据地址位于栈区域中。
4.根据权利要求2所述方法,其特征在于,用栈缓存中地址连续的存储空间存储栈区域中数据地址连续的数据。
5.根据权利要求4所述方法,其特征在于,用循环缓冲实现所述栈缓存。
6.根据权利要求5所述方法,其特征在于,还包括:
栈顶指针,指向所述栈缓存中位于栈顶位置的数据;
栈底指针,所述栈底指针与所述栈顶指针保持一定距离,且两者之间的数据就是存储在所述栈缓存中的有效数据。
7.根据权利要求6所述方法,其特征在于,当栈顶值改变时,通过对原栈顶值和新栈顶值相减,判断出栈顶指针移动方向。
8.根据权利要求7所述方法,其特征在于,各个层次的栈缓存中的循环缓冲共同组成一个大的循环缓冲,所述循环缓冲跨越了不同的缓存层次。
9.根据权利要求7所述方法,其特征在于,当较高层次栈缓存已满或接近满时,将其栈底指针指向的至少一个数据存储到更低层次栈缓存中栈顶指针指向位置相邻的尚未存储有效数据的存储位置,并相应移动所述较高层次栈缓存的栈底指针及所述更低层次栈缓存的栈顶指针。
10.根据权利要求9所述方法,其特征在于,当较高层次栈缓存已空或接近空,且在更低层次栈缓存中有数据时,将所述更低层次栈缓存中栈顶指针指向的至少一个数据取回存储到所述较高层次栈缓存中栈底指针指向位置相邻的尚未存储有效数据的存储位置,并相应移动所述较高层次栈缓存的栈底指针及所述更低层次栈缓存的栈顶指针。
11.根据权利要求10所述方法,其特征在于,在栈缓存中预留若干个存储单元作为预留部分;
当 新的数据被写入栈缓存的预留部分时 ,必须保证预留部分大于等于预设的最小容量;所述最小容量值为零或正数;
若因新数据的写入导致预留部分小于所述最小容量,则将其栈底指针指向的至少一个数据存储到更低层次栈缓存中栈顶指针指向位置相邻的尚未存储有效数据的存储位置,并相应移动所述栈缓存的栈底指针及所述更低层次栈缓存的栈顶指针。
12.根据权利要求11所述方法,其特征在于,当支持多个线程同时运行时,将所述预留部分对应的存储单元的号码存储在保留池中;
若有新数据写入,则由保留池分配一个存储单元号码供存储数据;
若有数据被从栈中取出不再存储,则将对应的存储单元号码送回保留池。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海芯豪微电子有限公司,未经上海芯豪微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310681833.4/1.html,转载请声明来源钻瓜专利网。