CN103077133A - 提供可变长度高速缓存线的高速缓存器控制器及方法 - Google Patents
提供可变长度高速缓存线的高速缓存器控制器及方法 Download PDFInfo
- Publication number
- CN103077133A CN103077133A CN2013100295268A CN201310029526A CN103077133A CN 103077133 A CN103077133 A CN 103077133A CN 2013100295268 A CN2013100295268 A CN 2013100295268A CN 201310029526 A CN201310029526 A CN 201310029526A CN 103077133 A CN103077133 A CN 103077133A
- Authority
- CN
- China
- Prior art keywords
- data piece
- cache
- mapping
- enum
- cache line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明提供了一种提供可变长度高速缓存线的高速缓存器控制器及方法,该控制器包括:高速缓存行偏移设定模块,用于确定系统存储器中通道映射数据块所占的行宽度,作为高速缓存行偏移,通道映射数据块内包括列数据块;有效高速缓存行尺寸设定模块,用于确定列数据块内每一行数据的数据长度,作为有效高速缓存行尺寸;行内地址偏移设定模块,用于确定列数据块在通道映射数据块内行方向的偏移位置,作为行内地址偏移;数据映射模块,以高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移为映射参数,将列数据块映射至高速缓存器的存储部件。本发明能够提高高速缓存器的访问速度,尤其有利于提高存取列数据块时的数据吞吐效率。
Description
技术领域
本发明涉及处理器高速缓存器设计,尤其涉及一种提供可变长度高速缓存线的高速缓存器控制器及方法。
背景技术
处理器高速缓存器(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,LeastRecently Used)。
综上,采用本实施例的方法,可以根据实际读写数据的需求,对列数据块开辟特有的通道,经过配置后,高速缓存器对于列数据块可以实现非常高效的读写。
此外,本实施例还提供了一种高速缓存器控制器,能够提供可变长度高速缓存线。参考图3,该高速缓存器控制器31包括:高速缓存行偏移设定模块311、有效高速缓存行尺寸设定模块312、行内地址偏移设定模块313、空间基地址和空间范围设定模块314、数据映射模块315。其中,高速缓存器控制器31和存储部件32可以集成在同一高速缓存器中。
进一步而言,高速缓存行偏移设定模块311用于确定系统存储器30中通道映射数据块所占的行宽度,作为高速缓存行偏移pitch。有效高速缓存行尺寸设定模块312用于确定该列数据块内每一行数据的数据长度,作为有效高速缓存行尺寸cache_line。行内地址偏移设定模块313用于确定该列数据块在通道映射数据块内行方向的偏移位置,作为行内地址偏移。空间基地址和空间范围设定模块314用于确定通道映射数据块在系统存储器30中的空间基地址和空间范围。数据映射模块315以高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移、空间基地址和空间范围为映射参数,将列数据块映射至高速缓存器的存储部件32。
关于该高速缓存器控制器31的更多详细信息,请参考前述提供可变长度高速缓存线的方法的相关描述,这里不再赘述。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
Claims (8)
1.一种提供可变长度高速缓存线的高速缓存器控制器,其特征在于,包括:
高速缓存行偏移设定模块,用于确定系统存储器中通道映射数据块所占的行宽度,作为高速缓存行偏移,所述通道映射数据块内包括列数据块;
有效高速缓存行尺寸设定模块,用于确定所述列数据块内每一行数据的数据长度,作为有效高速缓存行尺寸;
行内地址偏移设定模块,用于确定所述列数据块在所述通道映射数据块内行方向的偏移位置,作为行内地址偏移;
数据映射模块,以所述高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移为映射参数,将所述列数据块映射至高速缓存器的存储部件,从而为所述列数据块创建可变长度高速缓存线。
2.根据权利要求1所述的高速缓存器控制器,其特征在于,还包括:
空间基地址和空间范围设定模块,用于确定所述通道映射数据块在所述系统存储器中的空间基地址和空间范围,所述数据映射模块采用的映射参数还包括所述空间基地址和空间范围。
3.根据权利要求2所述的高速缓存器控制器,其特征在于,所述系统存储器中包括多个通道映射数据块,所述高速缓存行偏移设定模块、有效高速缓存行尺寸设定模块、行内地址偏移设定模块、空间基地址和空间范围设定模块和数据映射模块对于每一通道映射数据块分别执行相应的操作。
4.根据权利要求2所述的高速缓存器控制器,其特征在于,所述空间基地址和空间范围对第一个通道映射数据块无效。
5.一种提供可变长度高速缓存线的方法,其特征在于,包括:
步骤a,确定系统存储器中通道映射数据块所占的行宽度,作为高速缓存行偏移,所述通道映射数据块内包括列数据块;
步骤b,确定所述列数据块内每一行数据的数据长度,作为有效高速缓存行尺寸;
步骤c,确定所述列数据块在所述通道映射数据块内行方向的偏移位置,作为行内地址偏移;
步骤d,以所述高速缓存行偏移、有效高速缓存行尺寸和行内地址偏移为映射参数,将所述列数据块映射至高速缓存器的存储部件,从而为所述列数据块创建可变长度高速缓存线。
6.根据权利要求5所述的方法,其特征在于,还包括:
确定所述通道映射数据块在所述系统存储器中的空间基地址和空间范围,所述映射参数还包括所述空间基地址和空间范围。
7.根据权利要求6所述的方法,其特征在于,所述系统存储器中包括多个通道映射数据块,所述方法还包括:对每一通道映射数据块分别执行所述步骤a至步骤d。
8.根据权利要求6所述的方法,其特征在于,所述空间基地址和空间范围对第一个通道映射数据块无效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310029526.8A CN103077133B (zh) | 2013-01-23 | 2013-01-23 | 提供可变长度高速缓存线的高速缓存器控制器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310029526.8A CN103077133B (zh) | 2013-01-23 | 2013-01-23 | 提供可变长度高速缓存线的高速缓存器控制器及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077133A true CN103077133A (zh) | 2013-05-01 |
CN103077133B CN103077133B (zh) | 2016-01-13 |
Family
ID=48153665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310029526.8A Active CN103077133B (zh) | 2013-01-23 | 2013-01-23 | 提供可变长度高速缓存线的高速缓存器控制器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077133B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240944A (zh) * | 2018-08-16 | 2019-01-18 | 南京天数智芯科技有限公司 | 一种基于可变长缓存行的数据读写方法 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1706869A1 (en) * | 2004-01-19 | 2006-10-04 | Trek 2000 International Ltd | Portable data storage device using a memory address mapping table |
CN101211315A (zh) * | 2006-12-28 | 2008-07-02 | 英特尔公司 | 利用多区块访问存储器 |
CN101398784A (zh) * | 2007-09-26 | 2009-04-01 | 大唐移动通信设备有限公司 | 一种二维寻址方法及装置 |
US20100153645A1 (en) * | 2008-12-16 | 2010-06-17 | Samsung Electronics Co., Ltd. | Cache control apparatus and method |
CN102483718A (zh) * | 2009-08-25 | 2012-05-30 | 国际商业机器公司 | 虚拟化环境中的高速缓存分区 |
-
2013
- 2013-01-23 CN CN201310029526.8A patent/CN103077133B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1706869A1 (en) * | 2004-01-19 | 2006-10-04 | Trek 2000 International Ltd | Portable data storage device using a memory address mapping table |
CN101211315A (zh) * | 2006-12-28 | 2008-07-02 | 英特尔公司 | 利用多区块访问存储器 |
WO2008083364A1 (en) * | 2006-12-28 | 2008-07-10 | Intel Corporation | Accessing memory using multi-tiling |
CN101398784A (zh) * | 2007-09-26 | 2009-04-01 | 大唐移动通信设备有限公司 | 一种二维寻址方法及装置 |
US20100153645A1 (en) * | 2008-12-16 | 2010-06-17 | Samsung Electronics Co., Ltd. | Cache control apparatus and method |
CN101751993A (zh) * | 2008-12-16 | 2010-06-23 | 三星电子株式会社 | 缓存控制设备和方法 |
CN102483718A (zh) * | 2009-08-25 | 2012-05-30 | 国际商业机器公司 | 虚拟化环境中的高速缓存分区 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240944A (zh) * | 2018-08-16 | 2019-01-18 | 南京天数智芯科技有限公司 | 一种基于可变长缓存行的数据读写方法 |
CN109240944B (zh) * | 2018-08-16 | 2021-02-19 | 上海天数智芯半导体有限公司 | 一种基于可变长缓存行的数据读写方法 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
CN110018811B (zh) * | 2019-04-15 | 2021-06-15 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
Also Published As
Publication number | Publication date |
---|---|
CN103077133B (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9081661B2 (en) | Memory management device and method for managing access to a nonvolatile semiconductor memory | |
CN107656878B (zh) | 具有内存高速缓存管理器的高带宽存储器 | |
US7552292B2 (en) | Method of memory space configuration | |
US20150095610A1 (en) | Multi-stage address translation for a computing device | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
WO2015075673A4 (en) | Systems and methods for reducing first level cache energy by eliminating cache address tags | |
US20120159040A1 (en) | Auxiliary Interface for Non-Volatile Memory System | |
US20090094435A1 (en) | System and method for cache access prediction | |
US6745291B1 (en) | High speed LRU line replacement system for cache memories | |
US20100153645A1 (en) | Cache control apparatus and method | |
US10585803B2 (en) | Systems and methods for addressing a cache with split-indexes | |
US20170185294A1 (en) | Memory system and operating method thereof | |
CN109416656A (zh) | 混合存储器模块 | |
CN102110073A (zh) | 一种片上共享高速缓存的替换装置和方法以及相应处理器 | |
KR101801901B1 (ko) | 데이터 구역성을 고려하여 액세스되는 메모리 장치 및 이를 포함하는 전자 시스템 | |
CN115035128A (zh) | 基于fpga的图像重叠滑窗分割方法及系统 | |
JP2005531847A (ja) | キャッシュメモリへのプリフェッチを制御するための方法ならびに装置 | |
CN103077133B (zh) | 提供可变长度高速缓存线的高速缓存器控制器及方法 | |
CN102024490B (zh) | 伪静态存储器及其读操作与刷新操作的控制方法 | |
US20140122807A1 (en) | Memory address translations | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
CN104375955A (zh) | 高速缓冲存储器设备及其控制方法 | |
US9001138B2 (en) | 2-D gather instruction and a 2-D cache | |
US20220398198A1 (en) | Tags and data for caches | |
CN104346295A (zh) | 一种缓存刷新方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |