一种计算机数据的缓存方法

文档序号:6584418阅读:207来源:国知局
专利名称:一种计算机数据的缓存方法
技术领域
本发明涉及一种计算机数据的缓存方法,属于计算机系统结构技术领域。
背景技术
根据摩尔定律,计算机处理器的性能每18至24个月增加一倍,然而,内存的访问 速度仅以每年7% _10%的速度增长,远远落后于处理器的增长速度。相对于处理器来说, 内存访问延迟以每十年5倍的速度增长,处理器与存储器的差距不断增加,造成了系统结 构的失衡,形成了阻碍性能提升的"存储墙",从而使得内存访问成为整个计算机系统的性 能瓶颈。 为了缓解"存储墙"对计算机系统性能的影B向,需要对内存访问进行优化。降低内 存的访问次数是访存优化的一种方法。L印ak等人通过研究,观察到由于许多写指令写入 内存的值都与内存中原有的值相同,因此这些写指令都没有产生实际效果。基于这一观察, L印ak等人提出了沉默存储(silent store)结构。在这种结构中, 一个写操作被转换为三 个操作,即读操作、比较操作和实际的写操作(如果这个写操作不是沉默的),这样系统就 可能减少内存的写操作,但是这种结构同时可能会增加读操作的次数。

发明内容
本发明的目的是提出一种计算机数据的缓存方法,以克服已有数据缓存方法中可 能进行无意义的内存写操作的缺点。本发明提出的数据缓存方法降低了内存的访问次数, 缓解了处理器和内存之间的速度差距。
本发明提出的计算机数据的缓存方法,包括以下步骤 (1-1)定义从对计算机内存地址的写操作至对该内存地址的下一次写操作之前 的对该地址的最后一次读指令为数据存活区间,从对计算机内存地址的最后一次读操作到 对该内侧地址的下一次写操作为数据消亡区间; (1-2)计算机的一个缓存行中的数据被修改过,若在该缓存行被替换时,修改的数 据所在的内存地址处于上述数据存活区间中,则将修改的数据写回内存中,若在缓存行被 替换时,修改的数据所在的内存地址处于上述数据消亡区间中,则修改的数据保持在缓存 中; (1-3)在数据存活区间结束和数据消亡区间开始的位置,插入一条最后一次读操 作指令M,在数据消亡区间中读操作指令已经进行后插入一条该数据的存活区间结束消亡 区间从此开始的标识指令N ; (1-4)当处理器执行读指令M或标识指令N时,对计算机缓存行的状态进行修改。
上述缓存方法中,步骤(1-2)计算机的一个缓存行中的数据被修改过,若在该缓 存行被替换时,修改的数据所在的内存地址处于上述数据存活区间中,则将修改的数据写 回内存中,若在缓存行被替换时,修改的数据所在的内存地址处于上述数据消亡区间中,则 修改的数据保持在缓存中,其过程如下
(2-1)计算机的缓存为一级,若缓存行被替换时被修改的数据所在的内存地址处
于所述的数据存活区间中,则将被修改的数据写回内存中,若在缓存行被替换时被修改的
数据所在的内存地址处于所述的数据消亡区间中,则被修改的数据保持在缓存中; (2-2)计算机的缓存为两级,其中一级为写直达方式,二级为写回方式,且二级缓
存的缓存行中的数据被修改过,若二级缓存行被替换时缓存行中被修改的数据所在的内存
地址处于所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时
缓存行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓
存中; (2-3)计算机的缓存有两级,其中一级和二级同时为写回方式,若一级缓存的缓 存行中的数据被修改过,则当该一级缓存行被替换时,若一级缓存行被替换时缓存行中被 修改的数据所在的内存地址处于所述的数据存活区间中,则将被修改的数据写回内存中, 若一级缓存行被替换时缓存行中被修改的数据所在的内存地址处于所述的消亡区间中,则 被修改的数据保持在缓存中;若二级缓存行被替换时缓存行中被修改的数据所在的内存地 址处于所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时缓 存行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓存 中。 上述缓存方法中,步骤(1-4)当处理器执行读指令M或标识指令N时,对计算机缓 存行的状态进行修改的方法,包括以下步骤 (3-1)计算机的缓存为一级,计算机处理器执行最后一次读操作指令M或数据的 存活区间结束消亡区间从此开始的标识指令N时,若与指令的内存地址相对应的缓存行 的状态为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改 过",若与指令的内存地址相对应的缓存行的状态为"缓存行中的数据未被修改过",则不作 修改; (3-2)计算机的缓存为两级,其中一级为写直达方式,二级为写回方式,计算机处 理器执行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N 时,若与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据被修改过",则将 该缓存行状态修改为"缓存行中的数据未修改过",若与指令的内存地址相对应的二级缓存 行的状态为"缓存行中的数据未被修改过",则不作修改; (3-3)计算机的缓存为两级,其中一级和二级同时为写回方式,计算机处理器执 行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N时,若与 指令的内存地址相对应的一级缓存行的状态为"缓存行中的数据被修改过",则将该缓存行 状态修改为"缓存行中的数据未修改过",若与指令的内存地址相对应的一级缓存行的状态 为"缓存行中的数据未被修改过",则不作修改;若与指令的内存地址相对应的二级缓存行 的状态为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改 过",若与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据未被修改过",则 不作修改。 本发明提出的计算机数据的缓存方法,其优点是减少了写内存的次数,缓解了处 理器与内存之间的速度差距。


图1本发明方法中定义的数据存活区间和消亡区间的定义示意图。
具体实施例方式本发明提出的计算机数据的缓存方法,包括以下步骤 (1-1)定义从对计算机内存地址的写操作至对该内存地址的下一次写操作之前 的对该地址的最后一次读指令为数据存活区间,从对计算机内存地址的最后一次读操作到 对该内侧地址的下一次写操作为数据消亡区间,如图1所示; (1-2)计算机的一个缓存行中的数据被修改过,若在该缓存行被替换时,修改的数 据所在的内存地址处于上述数据存活区间中,则将修改的数据写回内存中,若在缓存行被 替换时,修改的数据所在的内存地址处于上述数据消亡区间中,则修改的数据保持在缓存 中; (1-3)在数据存活区间结束和数据消亡区间开始的位置,插入一条最后一次读操 作指令M,在数据消亡区间中读操作指令已经进行后插入一条该数据的存活区间结束消亡 区间从此开始的标识指令N ; (1-4)当处理器执行读指令M或标识指令N时,对计算机缓存行的状态进行修改。
上述缓存方法中,步骤(1-2)计算机的一个缓存行中的数据被修改过,若在该缓 存行被替换时,修改的数据所在的内存地址处于上述数据存活区间中,则将修改的数据写 回内存中,若在缓存行被替换时,修改的数据所在的内存地址处于上述数据消亡区间中,则 修改的数据保持在缓存中,其过程如下 (2-1)计算机的缓存为一级,若缓存行被替换时被修改的数据所在的内存地址处 于所述的数据存活区间中,则将被修改的数据写回内存中,若在缓存行被替换时被修改的 数据所在的内存地址处于所述的数据消亡区间中,则被修改的数据保持在缓存中;
(2-2)计算机的缓存为两级,其中一级为写直达方式,二级为写回方式,且二级缓 存的缓存行中的数据被修改过,若二级缓存行被替换时缓存行中被修改的数据所在的内存 地址处于所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时 缓存行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓 存中; (2-3)计算机的缓存有两级,其中一级和二级同时为写回方式,若一级缓存的缓 存行中的数据被修改过,则当该一级缓存行被替换时,若一级缓存行被替换时缓存行中被 修改的数据所在的内存地址处于所述的数据存活区间中,则将被修改的数据写回内存中, 若一级缓存行被替换时缓存行中被修改的数据所在的内存地址处于所述的消亡区间中,则 被修改的数据保持在缓存中;若二级缓存行被替换时缓存行中被修改的数据所在的内存地 址处于所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时缓 存行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓存 中。 上述缓存方法中,步骤(1-4)当处理器执行读指令M或标识指令N时,对计算机缓 存行的状态进行修改的方法,包括以下步骤 (3-1)计算机的缓存为一级,计算机处理器执行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N时,若与指令的内存地址相对应的缓存行 的状态为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改 过",若与指令的内存地址相对应的缓存行的状态为"缓存行中的数据未被修改过",则不作 修改; (3-2)计算机的缓存未两级,其中一级为写直达方式,二级为写回方式,计算机处 理器执行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N 时,若与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据被修改过",则将 该缓存行状态修改为"缓存行中的数据未修改过",若与指令的内存地址相对应的二级缓存 行的状态为"缓存行中的数据未被修改过",则不作修改; (3-3)计算机的缓存为两级,其中一级和二级同时为写回方式,计算机处理器执 行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N时,若与 指令的内存地址相对应的一级缓存行的状态为"缓存行中的数据被修改过",则将该缓存行 状态修改为"缓存行中的数据未修改过",若与指令的内存地址相对应的一级缓存行的状态 为"缓存行中的数据未被修改过",则不作修改;若与指令的内存地址相对应的二级缓存行 的状态为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改 过",若与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据未被修改过",则 不作修改。
权利要求
一种计算机数据的缓存方法,其特征在于该方法包括以下步骤(1-1)定义从对计算机内存地址的写操作至对该内存地址的下一次写操作之前的对该地址的最后一次读指令为数据存活区间,从对计算机内存地址的最后一次读操作到对该内侧地址的下一次写操作为数据消亡区间;(1-2)计算机的一个缓存行中的数据被修改过,若在该缓存行被替换时,修改的数据所在的内存地址处于上述数据存活区间中,则将修改的数据写回内存中,若在缓存行被替换时,修改的数据所在的内存地址处于上述数据消亡区间中,则修改的数据保持在缓存中;(1-3)在数据存活区间结束和数据消亡区间开始的位置,插入一条最后一次读操作指令M,在数据消亡区间中读操作指令已经进行后插入一条该数据的存活区间结束消亡区间从此开始的标识指令N;(1-4)当处理器执行读指令M或标识指令N时,对计算机缓存行的状态进行修改。
2. 如权利要求l所述的方法,其特征在于其中所述的步骤(1-2)计算机的一个缓存行 中的数据被修改过,若在该缓存行被替换时,修改的数据所在的内存地址处于上述数据存 活区间中,则将修改的数据写回内存中,若在缓存行被替换时,修改的数据所在的内存地址 处于上述数据消亡区间中,则修改的数据保持在缓存中,其过程如下(2-1)计算机的缓存为一级,若缓存行被替换时被修改的数据所在的内存地址处于所 述的数据存活区间中,则将被修改的数据写回内存中,若在缓存行被替换时被修改的数据 所在的内存地址处于所述的数据消亡区间中,则被修改的数据保持在缓存中;(2-2)计算机的缓存为两级,其中一级为写直达方式,二级为写回方式,且二级缓存的 缓存行中的数据被修改过,若二级缓存行被替换时缓存行中被修改的数据所在的内存地址 处于所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时缓存 行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓存 中;(2-3)计算机的缓存有两级,其中一级和二级同时为写回方式,若一级缓存的缓存行中 的数据被修改过,则当该一级缓存行被替换时,若一级缓存行被替换时缓存行中被修改的 数据所在的内存地址处于所述的数据存活区间中,则将被修改的数据写回内存中,若一级 缓存行被替换时缓存行中被修改的数据所在的内存地址处于所述的消亡区间中,则被修改 的数据保持在缓存中;若二级缓存行被替换时缓存行中被修改的数据所在的内存地址处于 所述的数据存活区间中,则将被修改的数据写回内存中,若二级缓存行被替换时缓存行中 被修改的数据所在的内存地址处于所述的消亡区间中,则被修改的数据保持在缓存中。
3. 如权利要求l所述的方法,其特征在于其中所述的步骤(1-4)当处理器执行读指令 M或标识指令N时,对计算机缓存行的状态进行修改的方法,包括以下步骤(3-1)计算机的缓存为一级,计算机处理器执行最后一次读操作指令M或数据的存活 区间结束消亡区间从此开始的标识指令N时,若与指令的内存地址相对应的缓存行的状态 为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改过",若 与指令的内存地址相对应的缓存行的状态为"缓存行中的数据未被修改过",则不作修改;(3-2)计算机的缓存未两级,其中一级为写直达方式,二级为写回方式,计算机处理器 执行最后一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N时,若 与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改过",若与指令的内存地址相对应的二级缓存行的状 态为"缓存行中的数据未被修改过",则不作修改;(3-3)计算机的缓存为两级,其中一级和二级同时为写回方式,计算机处理器执行最后 一次读操作指令M或数据的存活区间结束消亡区间从此开始的标识指令N时,若与指令的 内存地址相对应的一级缓存行的状态为"缓存行中的数据被修改过",则将该缓存行状态修 改为"缓存行中的数据未修改过",若与指令的内存地址相对应的一级缓存行的状态为"缓 存行中的数据未被修改过",则不作修改;若与指令的内存地址相对应的二级缓存行的状态 为"缓存行中的数据被修改过",则将该缓存行状态修改为"缓存行中的数据未修改过",若 与指令的内存地址相对应的二级缓存行的状态为"缓存行中的数据未被修改过",则不作修 改。
全文摘要
本发明涉及一种计算机数据的缓存方法,属于计算机系统结构技术领域。本发明方法中,首先定义数据存活区间和消亡区间。通过增加指令,标识出数据存活区间和数据消亡区间的位置。当数据从缓存中被替换出时,如果处于数据消亡区间,即使数据被修改过,也不再将其写回内存,从而有效降低了写内存的次数,缓解了处理器与内存之间的速度差距。
文档编号G06F12/08GK101694639SQ20091023572
公开日2010年4月14日 申请日期2009年10月15日 优先权日2009年10月15日
发明者汪东升, 王海霞, 郭三川 申请人:清华大学;
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1