首页> 中国专利> 将经修改的高速缓存数据写入后备存储器同时保留写权限的方法及装置

将经修改的高速缓存数据写入后备存储器同时保留写权限的方法及装置

摘要

描述了一种方法,该方法包括响应于来自处理单元的被指引到高速缓存的标识高速缓存行的请求为事务性操作执行以下内容。读取该高速缓存行,并且如果该高速缓存行处于经修改高速缓存一致性协议状态下,将该高速缓存行转发到将致使将该高速缓存行写入更深的存储设备的电路,以及将该高速缓存行的可由该处理单元用于该事务性操作的另一个实例改变到专用高速缓存一致性状态。

著录项

  • 公开/公告号CN105408877A

    专利类型发明专利

  • 公开/公告日2016-03-16

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201380062539.3

  • 申请日2013-06-20

  • 分类号G06F12/0815;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人姬利永

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 14:59:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-07

    未缴年费专利权终止 IPC(主分类):G06F12/0815 专利号:ZL2013800625393 申请日:20130620 授权公告日:20180911

    专利权的终止

  • 2018-09-11

    授权

    授权

  • 2016-04-13

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

    实质审查的生效

  • 2016-03-16

    公开

    公开

说明书

发明领域

本发明的领域总体上涉及计算系统并且更确切地涉及用于将经修改的 高速缓存数据写入后备存储器(backingstore)同时保留写权限的方法和装 置。

背景

图1示出具有多个处理单元101_1至101_N的计算系统100。处理单 元101_1至101_N可对应于其中系统100对应于处理器的指令执行流水线, 或者处理单元101_1至101_N可对应于其中系统100对应于多处理器计算 系统的处理器。

这些处理单元各自具有其自身的对应的内部一个或多个高速缓存级别 102_1至102_N。这些处理单元还共享一个或多个公用高速缓存级别103 和更深的系统存储器104。高速缓存级别102_1至102_N、103的总体目标 是通过将倾向于由处理单元101_1至101_N调用的数据项和指令保持在高 速缓存内来最小化对共享存储器104的访问。然而,因为非常可能的是在 不同的处理单元101_1至101_N上运行的对应的程序代码可能希望同时使 用同一个数据项,实现“一致性”协议以便确保该数据项在计算处理器/系统 100内作为整体保持“一致”。

常用的一致性协议是MESI协议。MESI协议向任何高速缓存数据项分 配四种不同状态中的一种:1)修改(M);2)专用(E);3)共享(S);以 及4)无效。处于M状态下的高速缓存行对应于具有尚未被更新到更深的高 速缓存级别(即,朝向共享存储器104)或直接更新到存储器104的最近更 新的数据的“脏”高速缓存行。在此,值得指出的是在典型的实现方式中, 每个高速缓存级别可支持针对特定高速缓存行地址的M状态。也就是,相 同的高速缓存行地址可在每个高速缓存级别下处于M状态下。在这种情况 下,每个更高的级别(即,朝向处理单元)表示对高速缓存行的数据的更 新近改变。

处于E状态下的高速缓存行对应于“干净的”数据。也就是,其数据内 容与共享存储器104内的其相应的条目(即,相同的地址)相同。当将新 数据写入处于E状态下的高速缓存行(例如,通过处理器器直接在最高的 高速缓存级别,或者当在中间高速缓存级别接收到从下一更高的级别逐出 的高速缓存时)时,高速缓存行的状态改变为M状态。

当高速缓存行处于M状态下并且该高速缓存行被逐出时,该高速缓存 行的数据必须被写回下一更深的高速缓存级别或写回共享存储器104。如果 被写回下一更深的高速缓存级别,其在下一更深的高速缓存级别保持在M 状态下。如果被写回共享存储器,其可转变到E状态。当高速缓存行处于 M状态下时,处理单元被允许访问该高速缓存行(例如,通过高速缓存监 听)并且甚至更新它(将新值写入该高速缓存行)。根据一种MESI实现 方式,处于M状态下的高速缓存行对简单读取的监听致使高速缓存行状态 从M状态转变到S状态。以对其进行写回(“读拥有”)为目的的对该高速 缓存行的读取致使该高速缓存行从M状态转变到I状态。

处于S状态下的高速缓存行通常对应于具有跨各个高速缓存102_1至 102_N、103的多个副本的高速缓存行。在典型的情况下,高速缓存行的单 个实例在特定处理器的高速缓存中驻留在E状态下。如果另一个处理器期 望相同的高速缓存行,该高速缓存行的第二副本被发送到请求处理器。该 高速缓存行的状态因此从E改变到S,因为现在在系统中存在该高速缓存 行的两个副本,每个副本针对相关联的地址具有与共享系统存储器104内 驻留的数据相同的数据。然而,存在MESI协议的其他方面,这种特征是 公知的并且无需在此讨论。

图2示出访问来自(例如,最高级别的)共享高速缓存203的经修改 高速缓存行的处理单元201_1的示例。如图2所示,在第一周期内,该处 理单元向共享高速缓存203发布1对该高速缓存行的请求。在第二周期期 间,作为响应,高速缓存203从高速缓存203读取2该高速缓存行。在第 三周期内,该高速缓存行被呈现3给请求处理单元201_1。值得注意的是, 该高速缓存行保持在M状态下。

附图

通过举例而非通过限制在附图的图示中展示本发明,在附图中,类似 的参考标记表示类似的元素,并且在附图中:

图1示出多个处理单元和共享高速缓存;

图2示出访问高速缓存行的处理单元的示例;

图3示出用于执行加载操作的改进方法;

图4示出用于执行存储操作的改进方法;

图5a、图5b示出涉及图3和图4的改进方法的流程图;

图6示出另一种改进方法;

图7示出示例性处理器。

详细描述

设计人员日益寻求扩展特定处理器或系统内的处理单元的能力。这样, 设计人员经常向处理单元添加“推测”。因为处理单元包括可执行一个或多 个程序代码线程的逻辑电路,推测对应于处理单元“猜测”程序代码将采取 哪个方向(例如,在条件分支指令时)的能力。在处理单元猜测到程序代 码将采取哪个方向之后,处理单元继续沿着“猜测”路径执行指令。最终, 处理单元确定猜测是否正确。如果猜测正确,处理单元继续沿着猜测路径 执行程序代码。如果猜测不正确,处理单元将其内部状态信息“回退”到猜 测点。处理单元继续从不正确的猜测点沿着正确的路径执行程序代码。

图3示出用于推测性地执行代码的改进进程。如图3所示,改进进程 将两个进程集成到在读(也称为“加载”)情况下处于M状态下的高速缓存 行的访问中。当从高速缓存303读取2该高速缓存行并且识别到该高速缓 存行处于M状态下时,存在逻辑电路310:i)在将其提供给请求处理单元 3a之前将该高速缓存行从M状态转变到E状态;以及ii)自动地将该高速 缓存行输入3b到写缓冲器305中。

在此,值得注意的是一旦进入推测范围的执行已经开始并且推测性代 码访问处于M状态下的高速缓存行且可能改变该高速缓存行的数据,必须 保存该高速缓存行的数据。如果该高速缓存行的数据未被保存并且推测性 代码改变了该高速缓存行内的数据,机器将不能在猜测点回退到其内部状 态(因为在那点处该数据的针对高速缓存行的地址的唯一副本(如由其处 于M状态下所指示的)稍后由推测性代码修改)。

在实施例中,将该高速缓存行输入3a到写缓冲器305中致使将该高速 缓存行保存在更深的高速缓存级别306或系统存储器304中。以此方式保 存该高速缓存行本质上在非推测性操作结束的时刻为该高速缓存行的相关 联系统存储器地址保存该数据的状态。如果机器稍后确定其猜测错误,机 器可通过引用已经刚刚被保存的数据返回在针对该系统存储器地址的不正 确猜测点处的其状态。

值得注意的是,认为图3的方法在可并发(同时)执行将该高速缓存 行的数据输入3b到写缓冲器305中并且将其保存到更深的存储设备 306/304的过程的意义上增强性能,其中将该高速缓存行提供3a给请求处 理单元301_1和/或处理单元使用该高速缓存行内的数据。例如,在一个实 施例中,该数据在与该数据被输入写缓冲器305内的相同周期内呈现给请 求处理单元301_1。该数据随后可由请求处理单元301_1操作,包括由请求 处理单元(或者甚至随后可访问该高速缓存行的其他处理单元)改变同时 该高速缓存行的原始数据处于迁移通过写缓冲器305到其在更深高速缓存 306或系统存储器304内的存储位置的过程中。

这样,从请求处理单元301_1的角度而言,高速缓存行访问进程内部 不存在明显延迟,即使该高速缓存行内的数据需要被保存到更深存储 306/304,因为处理单元301_1正在执行推测性代码。推测性代码因此可在 访问时间方面与非推测性代码基本上相同地从高速缓存命中受益。因为所 请求的高速缓存行实际上被提供给请求处理单元301_1,本质上允许完成从 高速缓存读取推测性代码并且该读取可因此被认为是“非阻塞的”。

图4示出由推测性代码对处于M状态下的高速缓存行内的数据进行的 写或“存储”新信息的相应进程。如图4所示,处理单元401_1通过将新数 据写入相应的高速缓存行的请求来对特定的系统存储器地址呈现该新数 据,如果高速缓存行在高速缓存403中被发现的话。如果该高速缓存行被 在高速缓存内发现,从高速缓存2对其进行读取,并且如果其处于M状态 下,逻辑电路410将其指引3a到写缓冲器405。逻辑电路410还致使将新 数据写入3b高速缓存403内的高速缓存行。在这种情况下,高速缓存行可 保持在M状态下。再次,存储进程是非阻塞的,因为允许完成写操作。在 实施例中,新数据在与有待保存的数据被输入写缓冲器405相同的机器周 期内被写入高速缓存3b。

在进一步的实现方式中,上述加载和存储进程的性能本质上是可选择 的。也就是,名义上,除非被明确地请求,否则不自动地触发用于将处于 M状态下的所访问的高速缓存行存储在更深的存储设备中(以及将该高速 缓存行转换为E状态)的进程。在实施例中,处理单元具有用于无论何时 处理单元执行推测性代码时明确地请求这些进程(例如,作为高速缓存内 的监听请求的一部分,或者用信号向电路310/340通知启用特殊进程)的逻 辑电路。也就是,例如,处理单元被设计成用于响应于机器猜测程序代码 将采取哪个方向,请求这些特殊进程。

这样,在各实施例中,无论何时机器识别到其正在推测性地预取出数 据或指令或执行推测性地执行导致“提交”点(在该点,决定是否应当“提交” 事务性任务所创建的机器的状态(即,被认为是正确的并且最终的操作)) 的特定任务的任何“事务性”操作时,机器将请求图3的特殊存储进程。

在实施例中,在“基本”M状态和所创建的M状态之间没有划分区别, 从而使得其可被丢弃(例如,作为事务的一部分)。在此,这种状态可被 称为“E+W”以便表明该行从一致性立场而言是专有的但是包含对其他代理 不可见的推测性数据。当“提交”发生时,与该事务有关的所有这种行的状 态从E+W转换为M。

注意,为了说明简单,已经用访问共享高速缓存级别303的处理单元 301_1、401_1描绘上述进程。如果处理单元301_1、401_1正在或者通过加 载或者存储方式访问处理单元301_1、401_1的内部高速缓存级别(诸如其 最高级别(LI)高速缓存),也可容易地执行这些相同的进程。

图5a和图5b示出说明以上参照图3和图4描述的加载和存储进程的 流程图。如图5a的加载进程所示,接收或以其他方式识别用于为特定加载 操作实现特殊自动写回进程的指示501。然后针对所请求的高速缓存行监听 高速缓存502。如果结果是高速缓存未命中(miss),进程结束(例如,但 是在下一更深的高速缓存级别重启)。

如果结果是高速缓存命中,查询高速缓存行的状态503。如果高速缓 存行处于E、S或I状态下(或者可能针对不是严格的MESI协议的一致性 协议的某种其他状态),不触发特殊的写回进程。如果高速缓存行处于M 状态下,可用于处理单元的高速缓存行的状态被转换为E,高速缓存行的 第一副本被转发到写回缓冲器并且高速缓存行的第二副本被转发到请求处 理单元504。高速缓存行的第一副本被存储在更深的高速缓存或系统存储器 中505,和/或请求处理单元接收高速缓存行的第二副本和/或在其上操作 506,这可包括改变高速缓存行的数据。可至少部分地、彼此并发地(例如, 同时)执行进程505、506。

如图5b的存储进程所示,接收或以其他方式识别用于为特定加载操作 实现特殊自动写回进程的指示511。然后针对所请求的高速缓存行监听高速 缓存512。如果结果是高速缓存未命中,进程结束(例如,但是在下一更深 的高速缓存重启)。如果结果是高速缓存命中,查询高速缓存行的状态513。 如果高速缓存行处于E、S或I状态下(或者可能针对不是严格的MESI协 议的一致性协议的某种其他状态),不触发特殊的写回进程。如果高速缓 存行处于M状态下,刚刚从高速缓存读取的高速缓存行的副本被转发到写 回缓冲器并且从请求处理单元接收的具有新数据的高速缓存行的第二副本 被写入高速缓存514。在实施例中,该高速缓存行保持在M状态下。该高 速缓存行的第一(原始)副本被存储在更深的高速缓存或系统存储器515 中。可想象地,相同的或其他处理单元可从高速缓存请求具有新数据的高 速缓存行并且与将高速缓存的第一原始副本保存在更深的存储中并发地在 其上操作(包括改变它)。

当处理单元执行推测性代码时,或者出于任何原因,决定不应当提交 刚刚执行的事务性操作,机器需要转换回其先前状态。在此,返回参照图3 和图4,逻辑电路310/410具有在机器正在推测性/事务性模式下操作时跟 踪被访问的高速缓存行的附加逻辑电路。当需要返回其先前状态时,附加 逻辑电路知道在推测性/事务性模式期间在M状态下访问的任何高速缓存 行已经被保存到更深的存储设备。任何未访问的高速缓存行(包括但不限 于处于M状态下的高速缓存行)可保留在高速缓存中。所有其他高速缓存 行(例如,在推测性/事务性模式下访问的在推测性/事务性执行开始时处于 E、S或I状态下的所有高速缓存行)可被置于无效状态I下。

图6涉及可与上述方法结合或替代使用的另一种方法。如图6所示, 滚动逻辑620自身滚动通过高速缓存603而无需对来自处理单元的对任何 特定高速缓存行的任何特定请求或高速缓存监听。例如,滚动逻辑可简单 地从高速缓存603读取(例如,周期性地、间歇性地、机会性地)高速缓 存行,直到已经从高速缓存读取所有高速缓存行。处于M状态下的那些高 速缓存行被转发到写回缓冲器605并且副本被改变到E状态并且被重新写 回高速缓存。被转发到写回缓冲器605的高速缓存行最终被写入更深的高 速缓存存储设备606或系统存储器604。

在一个实施例中,滚动逻辑作为后台进程与以上在图3至图5a、图5b 中讨论的方法组合地操作。在另一个实施例中,滚动逻辑602是用于推测 性代码开始时保存处于M状态下的高速缓存行的唯一机制。在这种情况下, 直到滚动逻辑已经有机会访问它,高速缓存行才可由推测性代码自由使用。 这样,如果推测性代码致使处理单元请求尚未由滚动逻辑访问的高速缓存 行,请求将保持未被服务,直到滚动逻辑已经有机会访问它并将它写回处 于E状态下的高速缓存,如果其曾经处于M状态下的话。在这种情况下, 推测性代码执行的开始可更慢,因为对高速缓存行请求的响应未被应答, 直到滚动逻辑能够滚动通过特定所请求的高速缓存行位置。一旦滚动逻辑 能够完整地滚动通过高速缓存,所有这种延迟被直接清除。在实施例中, 滚动逻辑名义上被禁用并且仅当进入推测性代码区域时才唤醒并且进行操 作。

上述特殊进程的另一个实现特征是高速缓存级别可被设计成如果其知 道在更高的高速缓存级别和相同的系统存储器地址处存在处于M状态下的 高速缓存行的实例,不将其高速缓存行之一输入写缓冲器。在这种情况下, 将数据保存到更深的存储设备将是浪费的,因为最近的数据存在于在其之 上的高速缓存层级中。

注意,上述特殊加载和存储技术还可在推测性执行上下文之外使用(也 就是,作为非推测性代码的处理的一部分)。一个这种实例是用于降低软 错误率。软错误是由从高速缓存级别/向高速缓存级别加载/存储故障数据所 导致的错误。当检测到“坏数据”时,程序代码通常跳转到确定操作应当接 下来流到何处的某种形式的错误处理器程序代码。错误处理程序的执行本 质上对应于总体程序执行的性能降低。

在非推测性执行代码的情况下,如果在程序执行期间拍摄程序状态的 一系列“快照”,可极大地增强从软错误的恢复进程。如果出现软错误,程 序状态需要仅跳回其最近的快照。在此,上述进程可用于本质上拍摄程序 状态的快照,唯一的修改是在特殊进程通过程序代码执行的开始而激活并 且通过推测性执行的结束而去激活之前,在这种情况下,处理器包括识别 特殊进程在将拍摄下一快照时开始并且当该快照完成时结束的逻辑电路。 确定快照尺寸的时间/代码量实际上是设计人员选择问题。

上述进程的另一个应用是“涡轮模式”或其他更高的性能模式,其中, 附加的功耗被认为是可接受的,因为期望附加的处理器性能。在此,在后 台执行特殊进程,其形式为从处理单元的角度呈现原本在特殊进程未被激 活的情况下看到的处于E状态下的更多的高速缓存行的“高速缓存清理”。 实际上向处理单元呈现处于E状态下的更多的高速缓存行允许处理器用更 少的限制或者在整个系统上施加更少的限制效果而写新数据。在处理器包 含响应于处理器的功率配置设置激活特殊进程的逻辑电路。

在实施例中,单个处理器被设计成用于支持这些技术中的多于一种技 术作为不同的配置设置。例如,在模型特定寄存器(MSR)空间中,不同 的设置可用于确立应用特殊进程的目的(例如,推测性执行、软错误率降 低、高性能高速缓存清理中的任一种)。

图7示出在被增强以便包括上述特殊进程的半导体芯片中实现的标准 多核处理器设计700的架构。如图7所示,该处理器包括:1)多个处理核 701_1至701_N;2)互连网络702;3)末级高速缓存系统703;4)存储器控制 器704和I/O中枢705。处理核701_1至701_N各自包含用于执行程序代码 指令的一个或多个指令执行流水线。互连网络702用于将这些核701_1至 701_N中的每一个互连到彼此以及其他组件703、704、705、706。

末级高速缓存系统703用作在将指令和/或数据逐出到系统存储器708 之前的处理器内的末层高速缓存。存储器控制器704从/向系统存储器706 读/写数据和指令。I/O中枢105管理处理器和“I/O”设备(例如,非易失性 存储设备和/或网络接口)之间的通信。端口706源自互连网络702以便链 接多个处理器,从而使得可实现具有多于N个核的系统。图形处理器707 执行图形计算。为了方便,未在图1中描述明显的其他功能块(锁相环 (PLL)、功率管理电路等等)。逻辑电路710可被视为上述逻辑电路310、 410、610的任何组合。写缓冲器(未描绘)可被集成到末级高速缓存或系 统存储器控制器704的逻辑电路中。在图7的特定配置中,用于保存高速 缓存行的更深的存储设备对应于系统存储器708。具有更多共享高速缓存级 别的处理器可将逻辑710的功能移动到共享高速缓存而不是末级高速缓存, 从而使得更深的存储设备可以是高速缓存而不是系统存储器。

在前述说明书中,上述组件和/或进程中的任何一个可用电子电路(诸 如设置在可包括执行用于实现所执行的特定功能的小足迹程序代码的微控 制器电路的半导体芯片上的逻辑电路)实现。在前述说明书中,已经参照 其特定示例性实施例描述了本发明。然而,将明显的是可对其作出各种修 改和改变而不背离在所附权利要求书中陈述的本发明的更宽泛的精神和范 围。因此,将以说明性而不是限制性的意义对待说明书和附图。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号