一种数据缓存系统和方法

文档序号:8339532阅读:275来源:国知局
一种数据缓存系统和方法
【技术领域】
[0001] 本发明涉及计算机,通讯及集成电路领域。
【背景技术】
[0002] 通常而言,缓存的作用是将内存中的一部分内容复制在其中,使这些内容能在短 时间内由处理器核快速存取,以保证流水线的持续运行。
[0003] 现行缓存的寻址都基于以下方式,首先用地址中的索引段寻址读出标签存储器中 的标签。同时用地址中索引段与块内位移段共同寻址读出缓存中的内容。此外,将标签存 储器中读出的标签与地址中的标签段进行匹配。如果从标签存储器中读出的标签与地址中 的标签段相同,那么从缓存中读出的内容有效,称为缓存命中。否则,如果从标签存储器中 读出的标签与地址中的标签段不相同,成为缓存缺失,从缓存中读出的内容无效。对于多路 组相联的缓存,同时对各个路组并行进行上述操作,以检测哪个路组缓存命中。命中路组对 应的读出内容为有效内容。若所有路组都为缺失,则所有读出内容都无效。缓存缺失之后, 缓存控制逻辑将低级存储媒介中的内容填充到缓存中。
[0004] 在现有缓存结构中,各种各样的缓存预取技术被用来减少缓存缺失的发生。对于 指令缓存而言,预取技术能带来一定的性能提升。但是对于数据缓存,由于数据地址的不确 定性,很难有效地对数据地址进行预测。因此,随着日渐扩大的处理器/存储器速度鸿沟, 数据缓存缺失仍是制约现代处理器性能提升的最严重瓶颈。
[0005] 此外,在现代处理器中最常用的组相联缓存结构中,通常路组数越多,缓存的性能 越好,但需要同时读出、比较的标签也越多,导致功耗越高。如何能在增加路组的同时,减少 标签比较的次数,是数据缓存改进中的难点之一。
[0006] 本发明提出的方法与系统装置能直接解决上述或其他的一个或多个困难。

【发明内容】

[0007] 本发明提出了一种数据缓存方法,其特征在于对缓存中的数据存储器进行配置, 其中一部分存储块实现传统的组相联结构,另一部分存储块实现按组分配的结构;所述按 组分配的缓存由多个组构成,每个组中存储对应同一个起始数据块地址的若干数据块,且 组内各个相邻的存储块对应的数据地址之差为相同值。
[0008] 可选的,每个组中的数据块对应的数据地址具有相同部分;所述相同部分由数据 地址中的标签构成,或由数据地址中的标签的一部分和索引号的一部分构成;地址相邻或 相近的数据块存储在同一个组中。
[0009] 可选的,当一个组中的各个相邻的存储块对应的数据地址之差等于数据块长度 时,该组中的所有存储块中的数据块地址连续;当一个组中的各个相邻的存储块对应的数 据地址之差等于数据块长度的整数倍时,该组中的所有存储块中的数据块地址的间隔相 等;可以根据当前数据在该组中对应的位置以及数据步长,直接确定下一数据是否也位于 该组中,以及当该下一数据位于该组中时的所在位置。
[0010] 可选的,提供一个顺序表;所述顺序表的行与数据存储器中的组一一对应;且所 述顺序表的每一行中包含了一个压缩比例;所述压缩比例表示了相应组中各个相邻存储块 对应的数据块地址的间隔值。
[0011] 可选的,所述顺序表的每一行中包含了与相应组中数据块相邻的数据块所在的组 的位置;可以根据当前数据在该组中对应的位置以及数据步长,直接确定下一数据所在的 组及组中的位置。
[0012] 可选的,所述顺序表的每一行中包含了与相应组中第一个数据块相邻的连续若干 个数据块所在的组的位置。
[0013] 可选的,所述顺序表的每一行中包含了与相应组中最后一个数据块相邻的连续若 干个数据块所在的组的位置。
[0014] 可选的,将数据地址转换为缓存地址;所述缓存地址由组号、组内块号和块内偏移 量构成;其中块内偏移量与数据地址中的块内偏移量相同;所述缓存地址可以直接用于对 数据缓存中的数据存储器寻址。
[0015] 可选的,将循环代码中数据访问指令对应的数据存储在按组分配的结构中,其他 数据访问指令对应的数据存储在组相联的结构中。
[0016] 可选的,对第一次执行到的数据访问指令,当其数据地址产生后被转换为缓存地 址。
[0017] 可选的,对第二次执行到的数据访问指令,当其数据地址产生后被转换为缓存地 址,且计算得到数据步长;所述数据步长就是两次数据地址之差;根据本次缓存地址和数 据步长计算出下次执行该数据访问指令时可能的下次缓存地址,供下次执行该数据访问指 令是对数据存储器寻址;且当所述下次缓存地址对应的数据存储器中的数据无效时,将下 次缓存地址转换为相应的数据地址,并将对应的数据填充到数据存储器中。
[0018] 可选的,对第三次及以后执行到的数据访问指令,根据本次缓存地址和数据步长 计算出下次缓存地址,供下次执行该数据访问指令是对数据存储器寻址;且当所述下次缓 存地址对应的数据存储器中的数据无效时,将下次缓存地址转换为相应的数据地址,并将 对应的数据填充到数据存储器中。
[0019] 本发明还提出一种数据缓存系统,其特征在于,所述数据缓存系统中的数据存储 器可以根据配置,将其中一部分存储块作为传统的组相联结构运行,另一部分存储块作为 按组分配的结构运行;所述按组分配的结构包含多个组,每个组包含若干个存储块及一个 数据块地址存储单元,且该组中所有存储块都对应该数据块地址存储单元中的数据块地 址;每个组内各个相邻的存储块对应的数据地址之差为相同值。
[0020] 可选的,所述数据缓存系统还包含带掩码的比较器,所述比较器用于将数据地址 中的一部分块地址与所述数据块地址存储单元中的数据块地址的相应位进行匹配,以确定 该数据地址对应的数据是否存储在该组中。
[0021] 可选的,当一个组中的各个相邻的存储块对应的数据地址之差等于数据块长度 时,该组中的所有存储块中的数据块地址连续;且当所述数据地址对应的数据存储在该组 中时,由所述被掩码的位对该组中的存储块寻址,即可找到所述数据地址对应的数据。
[0022] 可选的,所述数据缓存系统还包括移位器;当一个组中的各个相邻的存储块对应 的数据地址之差等于数据块长度的整数倍时,该组中的所有存储块中的数据块地址的间隔 相等;且当所述数据地址对应的数据存储在该组中时,由所述移位器对所述被掩码的位移 位后得到的值对该组中的存储块寻址,即可找到所述数据地址对应的数据。
[0023] 可选的,所述数据缓存系统还包括顺序表存储器;所述顺序表存储器中的行与数 据存储器中的组一一对应;且所述顺序表存储器的每一行中包含了一个用于存储压缩比例 的存储单元;所述存储单元中存储的值表示了相应组中各个相邻存储块对应的数据块地址 的间隔值。
[0024] 可选的,所述顺序表存储器的每一行中包含了指向相应组中数据块相邻的数据块 所在的组的位置的指针;可以根据当前数据在该组中对应的位置以及数据步长,直接确定 下一数据所在的组及组中的位置。
[0025] 可选的,所述指针指向相应组中第一个数据块相邻的连续若干个数据块所在的组 的位置。
[0026] 可选的,所述指针指向相应组中最后一个数据块相邻的连续若干个数据块所在的 组的位置。
[0027] 可选的,由所述比较器对数据地址和数据块地址存储单元中的数据块地址匹配, 并由移位器根据压缩比例存储单元中的值对数据地址中的索引号进行相应移位,可以将数 据地址转换为缓存地址;所述缓存地址由组号、组内块号和块内偏移量构成;其中块内偏 移量与数据地址中的块内偏移量相同;所述缓存地址可以直接用于对数据缓存中的数据存 储器寻址。
[0028] 可选的,根据缓存地址对应的数据块地址存储单元中的数据块地址值,并由移位 器根据压缩比例存储单元中的值对缓存地址中的组内块号进行相应移位,可以将缓存地址 转换为数据地址。
[0029] 对于本领域专业人士,还可以在本发明的说明、权利要求和附图的启发下,理解、 领会本发明所包含其他方面内容。
[0030] 有益效果
[0031] 本发明所述系统和方法可以为数字系统使用的数据缓存结构提供基本的解决方 案。与传统数据缓存系统仅在缓存缺失后才填充的机制不同,本发明所述的系统和方法在 处理器访问一个数据之前就对数据缓存进行填充,可以避免或充分地隐藏强制缺失。这就 是说,本发明所述缓存系统集成了预取过程。
[0032] 本发明所述的系统和方法还将数据缓存中的数据存储器分为组相联部分和按组 分配部分。其中,按组分配部分中的每个组包含数据地址相邻或相近的数据块。这样,对于 数据地址相邻或相近的数据访问指令(如循环代码中的数据访问指令)对应的数据被存储 在所述按组分配的部分中,其他数据被存储在组相联部分中。同时,采用本发明技术方案在 向数据缓存填充数据的同时,将传统的包含标签、索引号和块内偏移量的数据地址转换为 组号、组内块号和块内偏移量,实现了地址空间的转换,使得数据缓存系统能直接根据该新 的地址寻址方式,不必进行标签匹配,直接可以从数据存储器中找到相应数据,特别在对数 据地址相邻或相近的数据进行访问时,可以对缓存地址和数据步长进行简单计算即可得到 下一数据的数据地址,不必进行标签匹配和地址转换,大大降低功耗。
[0033] 此外,本发明所述的系统和方法还可以在处理器核即将执行到数据读取指令之 前,提前从数据存储器中读出该数据并送往处理器核供使用,使得处理器核在需要读取该 数据时能直接取用,掩盖了访问数据存储器的时间。
[0034] 对于本领域专业人士而言,本发明的其他优点和应用是显见的。
【附图说明】
[0035] 图1是本发明所述的缓存系统的一个实施例;
[0036] 图2是本发明所述轨迹点格式的一个示意图;
[0037] 图3A是本发明所述的缓存系统的另一个实施例;
[0038] 图3B是本发明所述轨迹点格式的另一个示意图;
[0039] 图3C是本发明所述的缓存系统的另一个实施例;
[0040] 图4A是本发明所述改进的组相联缓存的一个实施例;
[0041] 图4B是本发明所述改进的组相联缓存的另一个实施例;
[0042] 图5是本发明所述分组的数据缓存的一个实施例;
[0043] 图6是本发明所述数据访问引擎的一个实施例;
[0044] 图7A是本发明所述顺序表和数据缓存的一个实施例;
[0
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1