公开/公告号CN103077133A
专利类型发明专利
公开/公告日2013-05-01
原文格式PDF
申请/专利权人 杭州士兰微电子股份有限公司;
申请/专利号CN201310029526.8
申请日2013-01-23
分类号G06F12/08(20060101);
代理机构31100 上海专利商标事务所有限公司;
代理人陆嘉
地址 310012 浙江省杭州市黄姑山路4号
入库时间 2024-02-19 18:33:18
法律状态公告日
法律状态信息
法律状态
2016-01-13
授权
授权
2013-06-05
实质审查的生效 IPC(主分类):G06F12/08 申请日:20130123
实质审查的生效
2013-05-01
公开
公开
技术领域
本发明涉及处理器高速缓存器设计,尤其涉及一种提供可变长度高速缓存 线的高速缓存器控制器及方法。
背景技术
处理器高速缓存器(Cache)通常由相联存储器实现。相联存储器的每一 个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将 地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。在全相 联Cache中,存储的块与块之间,以及存储顺序或保存的存储器地址之间没有 直接的关系。程序可以访问很多的子程序、堆栈和段,而这些子程序、堆栈和 段可位于主存储器的不同部位上。因此,Cache保存着很多互不相关的数据块, Cache必须对每个块和块自身的地址加以存储。当请求数据时,Cache控制器 要把请求地址同所有地址加以比较进行确认。
上述这种Cache结构的主要优点是,它能够在给定的时间内去存储主存器 中的不同的块,命中率高;缺点是每一次请求数据同Cache中的多个块中的地 址进行比较需要相当长的时间,速度较慢。
发明内容
本发明要解决的技术问题是提供一种提供可变长度高速缓存线的高速缓 存器控制器及方法,能够提高高速缓存器的访问速度,尤其有利于提高存取列 数据块时的数据吞吐效率。
为解决上述技术问题,本发明提供了一种提供可变长度高速缓存线的高速 缓存器控制器,包括:
高速缓存行偏移设定模块,用于确定系统存储器中通道映射数据块所占的 行宽度,作为高速缓存行偏移,所述通道映射数据块内包括列数据块;
有效高速缓存行尺寸设定模块,用于确定所述列数据块内每一行数据的数 据长度,作为有效高速缓存行尺寸;
行内地址偏移设定模块,用于确定所述列数据块在所述通道映射数据块内 行方向的偏移位置,作为行内地址偏移;
数据映射模块,以所述高速缓存行偏移、有效高速缓存行尺寸和行内地址 偏移为映射参数,将所述列数据块映射至高速缓存器的存储部件,从而为所述 列数据块创建可变长度高速缓存线。
根据本发明的一个实施例,所述高速缓存器控制器还包括:空间基地址和 空间范围设定模块,用于确定所述通道映射数据块在所述系统存储器中的空间 基地址和空间范围,所述数据映射模块采用的映射参数还包括所述空间基地址 和空间范围。
根据本发明的一个实施例,所述系统存储器中包括多个通道映射数据块, 所述高速缓存行偏移设定模块、有效高速缓存行尺寸设定模块、行内地址偏移 设定模块、空间基地址和空间范围设定模块和数据映射模块对于每一通道映射 数据块分别执行相应的操作。
根据本发明的一个实施例,所述空间基地址和空间范围对第一个通道映射 数据块无效。
本发明还提供了一种提供可变长度高速缓存线的方法,包括:
步骤a,确定系统存储器中通道映射数据块所占的行宽度,作为高速缓存 行偏移,所述通道映射数据块内包括列数据块;
步骤b,确定所述列数据块内每一行数据的数据长度,作为有效高速缓存 行尺寸;
步骤c,确定所述列数据块在所述通道映射数据块内行方向的偏移位置, 作为行内地址偏移;
步骤d,以所述高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移为 映射参数,将所述列数据块映射至高速缓存器的存储部件,从而为所述列数据 块创建可变长度高速缓存线。
根据本发明的一个实施例,所述方法还包括:确定所述通道映射数据块在 所述系统存储器中的空间基地址和空间范围,所述映射参数还包括所述空间基 地址和空间范围。
根据本发明的一个实施例,所述系统存储器中包括多个通道映射数据块, 所述方法还包括:对每一通道映射数据块分别执行所述步骤a至步骤d。
根据本发明的一个实施例,所述空间基地址和空间范围对第一个通道映射 数据块无效。
与现有技术相比,本发明具有以下优点:
本发明实施例的高速缓存器控制器及方法中,在保留原有高速缓存器的功 能的同时,能够为列数据块提供可变长度高速缓存线,使得高速缓存操作与实 际的数据需求相匹配,有利于提高高速缓存器的命中率。
附图说明
图1是本发明实施例中通道映射数据块和列数据块的分布结构示意图;
图2是本发明实施例的提供可变长度高速缓存线的方法的流程示意图;
图3是本发明实施例的高速缓存器控制器的结构框图。
具体实施方式
下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制 本发明的保护范围。
参考图1,假设有一项程序,需要顺序地取用图1所示的数据阵列10(本 文称为通道映射数据块10)中灰色区域内的数据11,该灰色区域的数据11沿 列方向排布,本文称为列数据块11。可以看到,像图1中灰色区域这样的列 数据块11,传统的高速缓存器很难去处理。如果像传统高速缓存器那样,将 整个高速缓存器空间映射到同样的4k(0x1000)空间上,会导致经常性的不命中 (Cache miss),带来很多开销。
在本实施例中,引入新的方案来处理列数据块11,能够提供可变长度高 速缓存线(Cache line)充分利用Cache空间以提高Cache效率。
参考图2,在本实施例中,在高速缓存器中提供可变长度高速缓存线的方 法包括以下步骤:
步骤a,确定系统存储器中通道映射数据块所占的行宽度,作为高速缓存 行偏移,所述通道映射数据块内包括列数据块;
步骤b,确定所述列数据块内每一行数据的数据长度,作为有效高速缓存 行尺寸;
步骤c,确定所述列数据块在所述通道映射数据块内行方向的偏移位置, 作为行内地址偏移;
步骤d,以所述高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移为 映射参数,将所述列数据块映射至高速缓存器的存储部件,从而为所述列数据 块创建可变长度高速缓存线。
其中,高速缓存行偏移(本文中记为pitch)用于标识列数据块所处的通 道映射数据块的行宽度,从而可以有针对性的做换行处理。仍然参考图1中的 示例,对于列数据块11,其所处的通道映射数据块10的宽度为0x1000,即: pitch=0x1000。
有效高速缓存行尺寸(本文中记为cache_line)用于标识通道映射数据块 有效部分的宽度,即列数据块的实际宽度。由于通道映射数据块每一行的宽度 较大,而实际使用的列数据块的宽度仅占其中一部分,因而引入有效高速缓存 行尺寸的参数,有利于充分节约高速缓存器的空间,同样也能节省加载 (loading)时间。仍然参考图1中的示例,对于列数块11,其在通道映射数 据块10内所占的宽度为0x40,即cache_line=0x40。
行内地址偏移(address_shift)用于标识列数据块在行内的具体位置。仍 然参考图1中的示例,对于列数据块11,其在通道映射数据块10中的偏移位 置为0x800,即address_shift=0x800。
之后,将先前确定的高速缓存行偏移、有效高速缓存行尺寸和行内地址偏 移作为映射参数,根据该映射参数将列数据块11映射至高速缓存器的存储部 件,从而在高速缓存器中为列数据块11开辟一个通道。由此,映射至高速缓 存器中的数据将仅是实际需要的列数据块11,列数据块11之外的其他数据将 并不会被映射,从而显著提高了高速缓存器的命中率。
另外,在处理器工作时,可能需要取用来自不同区域的多个列数据块,因 此可以针对不同的地址空间定义多组不同的映射参数,即多通道。换言之,在 实际应用中,需要取用的多个列数据块可以位于多个不同的通道映射数据块 内,因而需要对于各个通道映射数据块分别确定相应的映射参数。
对于每一个通道,或者换言之对于每一个通道映射数据块,还需要确定各 通道映射数据块在系统存储器中的空间基地址(本文中记为base_address)和 空间范围(本文记为cache_range),其中,空间基地址标识当前通道映射数 据块对应存储空间的基地址;通道映射数据块标识当前通道映射数据块所占用 的空间范围。
之后,对于每一通道映射数据块,将对应的空间基地址、空间范围、高速 缓存行偏移、有效高速缓存行尺寸、行内地址偏移作为映射参数,将各个通道 映射数据块内的列数据块映射至高速缓存器的存储部件内。
需要说明的是,对于第一个通道映射数据块,空间基地址和空间范围这两 个参数是无效的。第一通道映射数据块的pitch、cache_line以及address_shift 参数将作用于其他通道映射数据块所占的空间外的所有地址空间。
由此,本实施例的高速缓存器完成了映射,而该高速缓存器的其他功能与 通用的高速缓存器一致,例如可以包括标签(Tag)存储,多个空间块(bank) 区域,另外也可以有明确的空间替换规则,比如最近最少使用(LRU,Least Recently Used)。
综上,采用本实施例的方法,可以根据实际读写数据的需求,对列数据块 开辟特有的通道,经过配置后,高速缓存器对于列数据块可以实现非常高效的 读写。
此外,本实施例还提供了一种高速缓存器控制器,能够提供可变长度高速 缓存线。参考图3,该高速缓存器控制器31包括:高速缓存行偏移设定模块 311、有效高速缓存行尺寸设定模块312、行内地址偏移设定模块313、空间基 地址和空间范围设定模块314、数据映射模块315。其中,高速缓存器控制器 31和存储部件32可以集成在同一高速缓存器中。
进一步而言,高速缓存行偏移设定模块311用于确定系统存储器30中通 道映射数据块所占的行宽度,作为高速缓存行偏移pitch。有效高速缓存行尺 寸设定模块312用于确定该列数据块内每一行数据的数据长度,作为有效高速 缓存行尺寸cache_line。行内地址偏移设定模块313用于确定该列数据块在通 道映射数据块内行方向的偏移位置,作为行内地址偏移。空间基地址和空间范 围设定模块314用于确定通道映射数据块在系统存储器30中的空间基地址和 空间范围。数据映射模块315以高速缓存行偏移、有效高速缓存行尺寸和行内 地址偏移、空间基地址和空间范围为映射参数,将列数据块映射至高速缓存器 的存储部件32。
关于该高速缓存器控制器31的更多详细信息,请参考前述提供可变长度 高速缓存线的方法的相关描述,这里不再赘述。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任 何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变 动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为 准。
机译: 在某些条件下掩盖由高速缓存脏存储器提供的脏状态指示的电路,以便高速缓存存储器控制器适当地控制高速缓存标签存储器
机译: 高速缓存控制器,用于控制高速缓存控制器的方法以及包括该高速缓存控制器的计算系统
机译: 包括高速缓存控制器的微处理器系统,该高速缓存控制器重新映射高速缓存地址位以将页面数据限制在特定的高速缓存块中