首页> 中国专利> 一种高速缓冲存储器的数据块长度自适应读取方法及装置

一种高速缓冲存储器的数据块长度自适应读取方法及装置

摘要

本发明提供了一种Cache的数据块长度自适应读取方法及装置;方法包括:当处理器最后一级Cache未命中时,获取该Cache的缓存数据信息;根据所述缓存数据信息,判断该未命中的访存地址与Cache中缓存数据的地址是否集中;如果集中,则确定与数据分布集中度相适应的数据读取长度,单位为Cache行数;处理器以所述未命中的访存地址为中心,按照所确定的数据读取长度将数据从内存读取至该Cache中。本发明要解决的技术问题是如何提高CPU处理速度。

著录项

  • 公开/公告号CN104156323A

    专利类型发明专利

  • 公开/公告日2014-11-19

    原文格式PDF

  • 申请/专利权人 浪潮(北京)电子信息产业有限公司;

    申请/专利号CN201410386627.5

  • 发明设计人 陈继承;王洪伟;倪璠;

    申请日2014-08-07

  • 分类号G06F12/08(20060101);

  • 代理机构11262 北京安信方达知识产权代理有限公司;

  • 代理人王丹;李丹

  • 地址 100085 北京市海淀区上地信息路2号2-1号C栋1层

  • 入库时间 2023-12-17 03:09:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-20

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20140807

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

本发明涉及电子领域,具体涉及一种高速缓冲存储器的数据块长度自适 应读取方法及装置。

背景技术

随着半导体工艺与计算机技术的飞速发展,处理器主频与存储器频率之 间的差距越来越大,导致内存墙问题也愈加严重,成为计算机系统中性能提 升的重大阻碍之一。其中内存墙是指,内存读写性能严重限制处理器性能充 分发挥的现象。

为了降低处理器(CPU)与内存之间的速度差距产生的不利影响,现代 计算机体系结构广泛釆用在CPU与内存之间设置高速缓冲存储器(Cache) 的方式,将一些短时间内可能会被重复使用的指令代码或者数据Cache中。 计算机系统可以配置有二级、三级缓存,每级缓存比前一级缓存容量大且速 度慢,此处是指将先前已保存的数据从一级缓存中替换到二级、甚至三级缓 存中。

高速缓冲存储器(Cache)主要由三大部分组成:Cache存储体存放由主 存调入的指令与数据块;地址转换部件建立目录表以实现主存地址到缓存地 址的转换;替换部件在缓存已满时按一定策略进行数据块替换,并修改地址 转换部件。数据被存入Cache中,在需要时被CPU调用进行解析和处理操作, 一般情况下,处理器以Cache行(一般为数十到数百字节)为基本单位进行 数据读取和替换。

在CPU需要对指令代码或数据进行访问时,首先查看所需内容是否在 缓存在Cache中,如果在Cache中,则称为“命中”,此时,Cache将直接 所需内容提供给处理器;如果不在Cache中,则被称为“未命中”,处理器 需要在内存中读取所要访问的内容,并将该数据缓存至Cache中。因为Cache 集成与处理器内部并且多采用SDRAM(Synchronous Dynamic Random  Access Memory,同步动态随机存储器)技术,其存取速率远远高于内存, 这种方式提高了CPU的利用率,进而也使整个计算机系统的性能得以提升。

处理器之所以是以Cache行作为读取和替换数据块的基本单位,是因为 某些应用的内存存储数据空间局部性可以体现在一个Cache行之内,这样也 使得相对于内存具有较小容量的Cache存储体能够缓存更大地址范围的可能 重复使用的数据。而随着半导体工艺的发展,处理器上能够集成越来越大的 最后一级Cache,具体应用中又不乏出现访问连续或密集的内存空间地址, 使得在此种情况下,单个Cache行的容量出现了不能充分利用所要访问的数 据空间局部性特征的现象,以至于频繁的需要从内存读取数据至Cache中, 增加CPU停顿次数,降低CPU的处理速度,导致计算机整体性能不佳。

发明内容

本发明要解决的技术问题是如何提高CPU处理速度。

为了解决上述问题,本发明提供了一种Cache的数据块长度自适应读取 方法,包括:

当处理器最后一级Cache未命中时,获取该Cache的缓存数据信息;

根据所述缓存数据信息,判断该未命中的访存地址与Cache中缓存数据 的地址是否集中;

如果集中,则确定与数据分布集中度相适应的数据读取长度,单位为 Cache行数;

处理器以所述未命中的访存地址为中心,按照所确定的数据读取长度将 数据从内存读取至该Cache中。

可选地,所述缓存数据信息包括缓存数据的地址信息及访问次数的计 数。

可选地,未命中的访存地址与Cache中缓存数据的地址集中是指:

在所述Cache的存储体中,所述未命中的访存地址的前后n个Cache行 地址范围内已经缓存的Cache行数、加上对该前后n个的Cache行的访问次 数的结果超过预定阈值。

可选地,所述确定与数据分布集中度相适应的数据读取长度的步骤包 括:

根据所述Cache的存储体中,所述未命中的访存地址前后各n个Cache 行中已缓存数据的行数及访问次数的计数确定所述数据读取长度。

可选地,所述确定与数据分布集中度相适应的数据读取长度的步骤包 括:

根据所述Cache的存储体中,所述未命中的访存地址前后各n个Cache 行中已缓存数据的行数及访问次数的计数确定最初的数据读取长度,加上或 减去预定的随机数后,得到最终的数据读取长度。

本发明还提供了一种Cache的数据块长度自适应读取装置,包括:

缓存数据信息获取单元,用于当处理器最后一级Cache未命中时,获取 该Cache的缓存数据信息;

判断单元,用于根据所述缓存数据信息,判断该未命中的访存地址与 Cache中缓存数据的地址是否集中;

长度确定单元,用于当集中时,确定与数据分布集中度相适应的数据读 取长度,单位为Cache行数;

读取单元,用于以所述未命中的访存地址为中心,按照所确定的数据读 取长度将数据从内存读取至该Cache中。

可选地,所述缓存数据信息包括缓存数据的地址信息及访问次数的计 数。

可选地,未命中的访存地址与Cache中缓存数据的地址集中是指:

在所述Cache的存储体中,所述未命中的访存地址的前后n个Cache行 地址范围内已经缓存的Cache行数、加上对该前后n个的Cache行的访问次 数的结果超过预定阈值。

可选地,所述长度确定单元确定与数据分布集中度相适应的数据读取长 度是指:

所述长度确定单元根据所述Cache的存储体中,所述未命中的访存地址 前后各n个Cache行中已缓存数据的行数及访问次数的计数确定所述数据读 取长度。

可选地,所述长度确定单元确定与数据分布集中度相适应的数据读取长 度是指:

所述长度确定单元根据所述Cache的存储体中,所述未命中的访存地址 前后各n个Cache行中已缓存数据的行数及访问次数的计数确定最初的数据 读取长度,加上或减去预定的随机数后,得到最终的数据读取长度。

本发明的技术方案可以避免在处理器访问内存数据地址出现连续或者 集中情况时,因为每次Cache缺失导致需要到内存中读取一个Cache行的数 据到Cache存储体中,导致读取次数过多而产生处理器多次等待的缺陷;使 处理器在相对集中的访问某段内存地址时提高Cache内缓存数据的命中率, 降低处理器从内存读取数据次数,减少CPU停顿次数,提高CPU的处理速 度,从而提高计算机系统整体性能。

附图说明

为了更清楚地说明本发明申请或现有技术中的技术方案,下面将对实施 或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本申请中记载的一些实施,对于本领域普通技术人员来讲, 还可以根据这些附图获得其他的附图。

图1是实施例一的Cache的数据块长度自适应读取方法的总体流程图;

图2为判断处理器访问内存范围相对集中的流程示意图;

图3为判断处理器访问内存范围相对集中的内存相对地址关系示意图; 图4为根据计算的数据读取长度,进行内存读取的流程示意图。

具体实施方式

下面将结合附图及实施例对本发明的技术方案进行更详细的说明。

需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可 以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻 辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的 步骤。

实施例一、一种Cache的数据块长度自适应读取方法,包括:

当处理器最后一级Cache未命中时,获取该Cache的缓存数据信息;

根据所述缓存数据信息,判断该未命中的访存地址与Cache中缓存数据 的地址是否集中;

如果集中,则确定与数据分布集中度相适应的数据读取长度,单位为 Cache行数;

处理器以所述未命中的访存地址为中心,按照所确定的数据读取长度将 数据从内存读取至该Cache中。

本实施例中,如果未命中的访存地址与Cache中缓存数据的地址相对集 中,则说明当前Cache缺失的内存地址是处理器访问的内存热点地址区域; 如果出现该情况,则按照本实施例的方案来降低计算机处理器等待的次数, 即访问内存地址相对集中是触发本实施例读取数据方法的条件;如果未出现 该情况,则只需读取缺失对应的内存地址数据到Cache存储体中。

本实施例通过确定与当前发生的访存未命中操作中所需数据瞬时相对 集中程度相适应的数据长度读取方式,在出现内存数据访问地址瞬时集中情 况时,通过确定将读取数据块的合理长度,实现一次读取多个连续或可能相 关的Cache行,使处理器在相对集中的访问某段内存地址时提高Cache内缓 存数据的命中率,降低处理器从内存读取数据次数,减少CPU停顿次数, 提高CPU的处理速度,从而提高计算机系统整体性能。

本实施例的一种实施方式中,所述缓存数据信息包括缓存数据的地址信 息及访问次数的计数。

本实施例的一种实施方式中,未命中的访存地址与Cache中缓存数据的 地址集中可以是指:在所述Cache的存储体中,所述未命中的访存地址的前 后n个Cache行地址范围内已经缓存的Cache行数、加上对这前后n个Cache 行的访问次数的结果超过预定阈值。

本实施例的一种实施方式中,所述确定与数据分布集中度相适应的数据 读取长度的步骤具体可以包括:

根据所述Cache的存储体中,所述未命中的访存地址前后各n个Cache 行中已缓存数据的行数及访问次数的计数确定所述数据读取长度。

本实施方式采用确定性算法确定数据读取长度,以此次数据读取长度为 一函数,自变量分别为:此次缺失的内存地址前n个Cache行是否缓存及其 最近一段时间内访问的计数信息,后n个Cache行是否缓存及其最近一段时 间内访问的计数信息。如下为计算数据读取长度F的具体函数:

F=f(x,y,z,w)

x:前n个cache行是否缓存;

y:前n个cache行最近一段时间内访问的计数信息;

z:后n个cache行是否缓存;

w:后n个cache行最近一段时间内访问的计数信息。

本实施方式实现简洁,相同输入条件下得到的数据读取长度的结果一 致;其中函数f可以根据实验数据进行选择。

本实施例的另一种实施方式中,所述确定与数据分布集中度相适应的数 据读取长度的步骤具体可以包括:

根据所述Cache的存储体中,所述未命中的访存地址前后各n个Cache 行中是否已缓存数据及访问次数的计数确定所述数据读取长度,具体方法为 根据上一实施方式中得到的数据读取长度加上或减去一预定的随机数,随机 数的分布可依据实验结果进行确定。

该方法用概率方法产生的随机数对该数值进行二次修正,得到最终的数 据读取长度。

本实施方式中采用非确定性方法,相同条件下得到的长度结果可能不一 致,从内存读取数据块有可能只包含唯一缺失的数据块,也可能包含少数几 个相邻数据块,具有节省Cache存储空间的优点,一定程度上避免了Cache 浪费。

本实施例中,如果所述Cache存储体已满,则执行替换操作。换算法可 以采用现有的Cache替换算法,包括伪随机替换算法、最近最少使用算法、 伪最近最少使用算法等。

本实施例的一个例子如图1所示,包括步骤101~103:

步骤101,获取Cache存储体中缓存数据的地址信息以及被访问的计数 信息,判断当前Cache缺失的内存地址是否是处理器访问较为相对集中的内 存地址区域。

步骤102,如果出现相对集中的情况,则按照自适应计算方法(前文的 两种实施方式中的计算方法均可)确定此次读取内存数据的数据读取长度, 其单位为Cache行数,以使读取内存操作按照该Cache行数执行。

步骤103,查看所述Cache的存储体中是否已经缓存了部分块数据,除 去该部分块数据,根据所确定的数据读取长度从内存中逐行读取未缓存相应 地址数据,如果Cache存储体已满,则进行相应替换操作。

本例子中,判断处理器访问内存范围是否相对集中的步骤如图2所示, 包括步骤201~203:

201、统计未命中的访存地址之前n个Cache行地址范围内,已缓存至 Cache存储体的Cache行数,以及最近一个时间窗口内对该前n个Cache行 的访问次数;

202、统计未命中的访存地址之后n个Cache行地址范围内,已缓存至 Cache存储体的Cache行数,以及最近一个时间窗口内对该后n个Cache行 的访问次数;

203、将上述步骤中的个数和访问次数相加,如果超过预定阈值,则判 断当前Cache缺失的内存地址是处理器访问较为相对集中的内存地址区域。

从图3可以看出,以未命中的访存地址对应的内存数据块31为中心, 前n个Cache行地址范围内均存在已缓存的Cache行对应的内存数据块32, 和未缓存的Cache行对应的内存数据块33。

读取时以未命中的访存地址为中心进行读取;假设数据读取长度为M, 如果M为奇数,则读取内存数据块未命中的访存地址前后各读取(M-1) /2个Cache行;如果M为偶数,则读取未命中的访存地址前M/2个Cache 行,及后M/2-1个Cache行,或读取未命中的访存地址后M/2个Cache行, 及前M/2-1个Cache行。

本例子中,当确定了数据读取长度后,步骤103如图4所示,包括步骤 401~403:

401、查看Cache存储体中是否已经缓存了部分块数据;

402、如果不存在数据重叠部分,则从内存中逐Cache行读取所述数据 读取长度的数据;如果存在数据重叠部分,从内存中逐Cache行读取所述数 据读取长度范围内未缓存的数据;

403、如果Cache存储体已满,则进行相应替换操作。

实施例二、一种Cache的数据块长度自适应读取装置,包括:

缓存数据信息获取单元,用于当处理器最后一级Cache未命中时,获取 该Cache的缓存数据信息;

判断单元,用于根据所述缓存数据信息,判断该未命中的访存地址与 Cache中缓存数据的地址是否集中;

长度确定单元,用于当集中时,确定与数据分布集中度相适应的数据读 取长度,单位为Cache行数;

读取单元,用于以所述未命中的访存地址为中心,按照所确定的数据读 取长度将数据从内存读取至该Cache中。

本实施例的一种实施方式中,所述缓存数据信息可以包括缓存数据的地 址信息及访问次数的计数。

本实施例的一种实施方式中,未命中的访存地址与Cache中缓存数据的 地址集中具体可以是指:

在所述Cache的存储体中,所述未命中的访存地址的前后n个Cache行 地址范围内已经缓存的Cache行数、加上对这前后n个Cache行的访问次数 的结果超过预定阈值。

本实施例的一种实施方式中,所述长度确定单元确定与数据分布集中度 相适应的数据读取长度具体是指:

所述长度确定单元根据所述Cache的存储体中,所述未命中的访存地址 前后各n个Cache行中已缓存数据的行数及访问次数的计数确定所述数据读 取长度。

本实施例的一种实施方式中,所述长度确定单元确定与数据分布集中度 相适应的数据读取长度具体是指:

所述长度确定单元根据所述Cache的存储体中,所述未命中的访存地址 前后各n个Cache行中已缓存数据的行数及访问次数的计数确定最初的数据 读取长度,加上或减去预定的随机数后,得到最终的数据读取长度。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程 序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只 读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使 用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采 用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于 任何特定形式的硬件和软件的结合。

当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的 情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变 形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号