归属代理数据和存储器管理的制作方法

文档序号:6333523阅读:197来源:国知局
专利名称:归属代理数据和存储器管理的制作方法
归属代理数据和存储器管理技术领域
一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及归属代理 数据(home agent data)和存储器管理。
背景技术
可使用监听总线或者基于目录的协议来使计算机系统中的高速缓存存储器保持 为一致(coherent)。在任一种情况下,存储器地址与系统中的特定位置关联。这个位置一 般称作存储器地址的“归属节点”。
在基于目录的协议中,处理/高速缓存代理可向归属节点发送访问对应“归属代 理”与其关联的存储器地址的请求。相应地,这类计算机系统的性能可直接取决于管理归属 代理数据和/或存储器的有效程度。发明内容
本发明提供了一种设备,包括从第二代理接收与目标地址对应的请求的第一代 理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代 理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及擦除器逻 辑,校正与所述目标地址对应的所述存储器中的位置的错误。
本发明还提供了一种设备,包括从第二代理接收与目标地址对应的请求的第一 代理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代 理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及规划逻辑, 响应与所述目录高速缓存对应的多个错误超过阈值而规划所述目录高速缓存的索引或路。
本发明还提供了一种方法,包括在第一代理接收与目标地址对应的请求;以及 将对应于耦合到所述第一代理的多个高速缓存代理的数据存储在目录高速缓存中;将对应 于所述请求的数据存储在存储器中;以及根据所述第一代理将对应于所述请求的所述数据 的校正形式写到对应于所述目标地址的所述存储器的位置,来校正与所述目标地址对应的 所述存储器的位置的错误。
本发明还提供了一种系统,包括存储目录的存储器;接收与所述存储器中的目 标地址对应的请求的第一代理,其中所述存储器存储与所述请求对应的数据;以及目录高 速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代理对应的数 据,其中,所述目录高速缓存中的已存储数据指明所述多个高速缓存代理的哪一个具有与 所述目标地址对应的所述数据的副本,其中所述第一代理包括下列至少一个校正与所述 目标地址对应的所述存储器中的位置的错误的擦除器逻辑,或者响应与所述目录高速缓存 对应的多个错误超过阈值而规划所述目录高速缓存的索引或路的规划逻辑。


参照附图来提供具体实施方式
。附图中,参考标号最左边的数字标识首次出现该参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。
图1-2和图8-9示出可用来实现本文所述的各个实施例的计算系统的实施例的框 图。
图3-7示出根据一些实施例的流程图。
具体实施方式
在以下描述中,提出许多具体细节,以便提供对各个实施例的透彻了解。但是,即 使没有具体细节也可实施一些实施例。在其它情况下,没有详细描述众所周知的方法、过 程、组件和电路,以免影响对具体实施例的理解。
本文所述的一些实施例一般涉及在归属代理例如通过使用系统地址来擦除 (scrubbing)存储器。存储器擦除可涉及存储器装置中错误的检测和/或校正。正如本文将 例如参照图3和图4进一步论述,擦除可作为需求擦除(demand scrub)或巡查擦除(patrol scrub)来执行。
另外,在一些实施例中,一个或多个毒性状态位(poison status bit)可用于避免 或者至少降低在首次遇到不可校正错误时发信号通知关于致命错误的可能性。此外,一个 实施例确保不存在存储器数据的静寂破坏,和/或不会将已破坏数据递交(commit)给非易 失性存储器。
此外,在一个实施例中,动态规划来自目录高速缓存的索引/路(index/way)。一 般来说,目录高速缓存(本文中又称作“Dir$”,在一个实施例中,它可在与归属代理相同的 集成电路管芯上)存储可由系统中的一个或多个代理来存储的与地址和对应拥有者有关 的信息。例如,高速缓存可指明哪些代理可能正存储与给定地址关联的所请求数据并且因 此是在那个地址的数据的拥有者。相应地,假定目录包含与系统的高速缓存代理中的一致 性单元(例如存储器或高速缓存的高速缓存行或高速缓存块或者另一个部分)的高速缓存 状态有关的信息,例如为了减少监听业务,诸如减少或避免监听广播。另外,由于有效地保 持目录高速缓存,所以设计预算可通过更小的目录高速缓存来降低。
一般来说,可使用监听总线或者基于目录的协议来使计算系统中的高速缓存存储 器保持为一致。在任一种情况下,系统存储器地址可与系统中的特定位置关联。这个位置 一般称作存储器地址的“归属节点”。在基于目录的协议中,处理/高速缓存代理可向归属 节点发送访问“归属代理”与其关联的存储器地址的请求。此外,在分布式高速缓存一致性 协议中,高速缓存代理可向控制对相应存储器空间的一致访问的归属代理发送请求。归属 代理又负责确保从拥有所请求数据的存储器或者高速缓存代理向请求方返回所请求数据 的最新副本。例如,归属代理还可负责在请求是针对独占副本时作废(invalidate)其它高 速缓存代理处的数据的副本。为此,归属代理一般可监听每一个高速缓存代理或者依靠目 录来跟踪其中数据可存在的一组高速缓存代理。
各种计算系统可用于实现本文所述的实施例,例如参照图1和图8-9所述的系统。 更具体来说,图1示出根据本发明的一个实施例的计算系统100的框图。系统100可包括 一个或多个代理102-1至102-M(本文中统称为“多个代理102”或者更一般地称为“代理 102”)。在一个实施例中,代理102的一个或多个可以是例如参照图8-9所述的计算系统等 计算系统的组件的任一个。
如图1所示,代理102可经由网络结构104进行通信。在一个实施例中,网络结构 104可包括计算机网络,它允许各个代理(例如计算装置)传递数据。在一个实施例中,网 络结构104可包括一个或多个互连(或者互连网络),它们经由串行(例如点对点)链路 和/或共享通信网络进行通信。例如,一些实施例可便于允许与全缓冲双列直插存储器模 块(FBD)的通信的链路上的组件调试或验证,例如,其中FBD链路是用于将存储器模块耦合 到主控制器装置(例如处理器或存储集线器)的串行链路。调试信息可从FBD信道主机传 送,使得可通过信道业务轨迹捕捉工具(例如一个或多个逻辑分析器)沿信道观测调试信 肩、ο
在一个实施例中,系统100可支持分层协议方案,它可包括物理层、链路层、路由 选择层、传输层和/或协议层。结构104还可便于对于点对点或共享网络从一个协议(例如 高速缓存处理器或高速缓存感知存储控制器)到另一个协议的数据(例如采取分组形式) 的传输。另外,在一些实施例中,网络结构104可提供遵守一个或多个高速缓存一致协议的ififn。
此外,如图1中的箭头方向所示,代理102可经由网络结构104传送和/或接收数 据。因此,对于通信,一些代理可利用单向链路,而其它代理可利用双向链路。例如,一个或 多个代理(例如代理102-M)可传送数据(例如经由单向链路106),其它代理(例如代理 102-2)可接收数据(例如经由单向链路108),而某些(某个)代理(例如代理102-1)可 传送和接收数据(例如经由双向链路110)。
另外,代理102的至少一个可以是归属代理,而代理102的一个或多个可以是请 求或高速缓存代理,正如本文将会进一步论述。如图所示,至少一个代理(仅示出一个代 理102-1)可包括或者有权访问擦除器(scrubber)或规划逻辑(map out logic)(或引 擎)111,以便分别根据需求或巡查擦除来擦除存储器中的错误(本文中将会例如参照图 2-3进一步论述)或者规划存储器的部分(例如,诸如目录高速缓存122的行或条目等部 分,正如本文将会例如参照图7进一步论述)。此外,在一个实施例中,代理102的一个或多 个(仅示出一个代理102-1)可有权访问存储器(它可以是代理专用的或者与其它代理共 享的)、如存储器120。另外,代理102的一个或多个(仅示出一个代理102-1)可将条目保 存在一个或多个存储装置(仅对代理102-1示出一个,例如目录高速缓存122,例如实现为 表、队列、缓冲器、链接列表等等)中,以便跟踪与代理102-1 (作为归属代理)所存储/保 存的项有关的信息。在一些实施例中,代理102的每个或者至少一个可耦合到存储器120 和/或对应目录高速缓存122,它们是在与代理相同的管芯(die)上或者是另外由代理可访 问的。
图2是根据一个实施例的计算系统的框图。系统200可包括多个插槽 (socket) 202-208 (示出四个,但一些实施例可具有更多或更少的插槽)。在一个实施例中, 各插槽可包括处理器。另外,各插槽可经由例如参照图9所述的点对点(PtP)链路耦合到 其它插槽。如针对图1参照网络结构104所述,各插槽可耦合到例如由可包括动态随机存 取存储器(DRAM)的多个双列直插存储器模块(DIMM)所形成的系统存储器的本地部分。
如图2所示,各插槽可耦合到存储控制器(MC)/归属代理(HA)(例如MC0/HA0至 MC3/HA3)。存储控制器可耦合到对应的本地存储器(标记为MEMO至MEM3),它们可以是系 统存储器(例如图9的存储器912)的一部分。在一些实施例中,存储控制器(MC)/归属代理(HA)(例如MC0/HA0至MC3/HA3)可与图1的代理102-1 (例如包括逻辑111等)相同或 相似,并且标记为MEMO至MEM3的存储器可与图1的存储器120相同或相似。另外,在一个 实施例中,MEMO至MEM3可配置成将数据镜像(mirror)为例如主(master)和从(slave)。 另外,在一些实施例中,系统200的一个或多个组件可包含在同一个集成电路管芯上。
因此,例如图2所示的实现可用于具有镜像的插槽无粘接配置(a socket glueless configuration with mirroring)。例如,可通过PtP链路将分配给存储控制器 (例如MC0/HA0)的数据镜像到另一个存储控制器(例如MC3/HA3)。另外,与存储控制器 MC3/HA3关联的目录可在镜像副本时(upon a copy to mirror)以未知(U)状态来初始化。 在故障转移(failover)到这个控制器(例如由于对这个存储控制器的在线服务调用)时, 可从U状态重构目录。
图3示出根据一个实施例的需求擦除操作的流程图。一般来说,需求擦除涉及主 动清理正常操作期间所遇到的可校正软存储器(例如DRAM或DIMM)错误。例如,在遇到关 于读操作的可校正错误时,存储控制器可向归属代理发信号通知关于可校正响应。归属代 理又可确保将经校正的数据(例如存储在其缓冲器中,它可存储在归属代理中或者另外由 归属代理可访问)写回到存储器(例如图1的存储器120和/或图3的MEM0-MEM3)。
参照图3,“CA0”表示高速缓存代理(它可以是图1的代理之一和/或图2中例如 插槽202-208或MC0-MC3等组件之一,取决于实现),以及“HA”表示归属代理(它可以是图 1的代理之一和/或图2中例如MC0-MC3等组件之一,取决于实现)。
如图所示,来自CAO的(例如读取数据的)RdData请求引起对存储控制器(HA)的 读操作,以便从存储器读取数据。这种读取引起CORR(或者经校正的)响应(例如指明存 储控制器ECC(错误校正码)逻辑成功地校正存储器中、如DIMM中的瞬态错误)。HA将经 校正的数据返回给请求方CAO (标记为“DataE_Cmp”,指明数据错误校正完成)。另外,单独 地或者在后台,HA可发起对存储器的写操作(标记*“krUb/dir write”),其中写操作可 更新目录(例如图1的目录12 以及将经校正的数据写回到存储器,这允许数据的后续读 操作没有招致(incur) —遍ECC校正(an ECC correction pass)的等待时间。
图4示出根据一个实施例的巡查擦除的流程图。一般来说,巡查擦除器主动清理 可校正软存储器(例如DRAM或DIMM)错误。在一个实施例中,遇到可校正错误的巡查擦除 器发起的存储器读取将导致采用经校正的数据的存储器写入。
参照图4,“HA”表示归属代理(它可以是图1的代理之一和/或图2中例如 MC0-MC3等组件之一,取决于实现),以及“存储器”表示本地存储器或者耦合到HA并且由 HA管理的存储器(例如图1的存储器120和/或图3的MEM0-MEM3)。
在一个实施例中,HA的逻辑111可采用下列一个或多个来编程地址范围(例如, 对其将执行擦除或者错误检测/校正),步幅(例如,指明在执行擦除操作之后如何递增地 址),以及间隔(例如,指明必须执行擦除操作的频度)。
如图4所示,HA向存储器发送读操作(例如,读操作源自HA而不是高速缓存代 理)。对读操作的标准响应由存储器来确认(如图4中由“Ack”标记表示)。另外,HA巡 查地址范围(由Addr++标记表示),读取数据,并且将由存储控制器校正的任何数据(例 如,由CORR表示)主动写到存储器。因此,经校正的数据的未来读操作不会招致ECC尝试 的等待时间。更具体来说,如图4所示,HA向存储器发出读取,接收Ack,这次向下一个地址发送另一个读取(如“Addr++”所示),接收对应Ack,向存储器发送下一个读取(它如CORR 标记所示经过校正),接收CORR Ack,将经校正的数据写到存储器,以及接收确认(Ack)(例 如,指明擦除写入(Write)已经完成)。
在一个实施例中,巡查和需求擦除逻辑对系统地址(例如,诸如快速路径接口 (QPI)地址等)而不是压缩“装置级”地址进行操作。这意味着,巡查和需求擦除引擎可利 用在归属代理中实现的前向推进算法(forward progress algorithm)。对于巡查擦除器, 需要被擦除的适当系统地址范围、基于系统交织的地址递增或步幅以及擦除间隔可在归属 代理寄存器(例如,控制和状态寄存器(CSR))中编程。
在巡查擦除器已经完成擦除或者检查地址范围之后,它可执行下列步骤(1)触 发中断(例如平台管理中断(PMI)),例如以便通知(alert)软件抽象层(例如BIOS(基本 输入/输出系统)),使得BIOS可对HA寄存器重新编程,以便发起下一个地址范围的巡查擦 除;或者( 设置完成位,BIOS可对它进行轮询以了解发起下一个地址范围的巡查擦除的 时间。
如上所示,巡查擦除器可对于由软件(例如BIOS)所编程的地址范围进行操作。对 于这个范围内的各行(例如高速缓存行),擦除器发起(launch)对存储控制器的读取。如 果巡查擦除器接收到对读操作的校正响应,它则向同一个地址发出写入。当执行写操作时, 可使用高速缓存目录和毒性位的用户编程值,正如本文中例如参照图5或图6进一步论述。 这个特征可用于有效地清除存储器中的中毒数据(poisoned data)(包括例如数据行)。
根据一个实施例,擦除器可按照下列伪代码进行操作
hiAddr-擦除范围的高地址
IoAddr-擦除范围的低地址
currAddr-擦除器正对currAddr进行操作
stride-在各擦除操作之后将currAddr递增这个量(例如8路128B交织将要求 这个值设置在8 X 128,这还要求两遍(128B高速缓存行一半的每个64B —遍)
sCrub_enable_pmi-当编程范围的擦除完成时发起(fire)pmi
scrub_range_done-当前编程范围的擦除已经完成
scrub_ctr-每隔2**CPU时钟发起擦除操作
scrub_en-启用巡查擦除器
scrub_with_user_poison-在擦除写入时,使用用户定义的毒性值
scrub_user_poison_val-对擦除写操作使用的毒性值
scrub_with_user_dirbits-在擦除写入时,使用用户定义的dirbits值
scrub_user_dirbits_va 1 -对擦除写操作使用的 dirbits 值
在一个实施例中,scrub_ctr缺省为Oxffff。另外,currAddr可设置成IoAddr,除 非请求从除了范围的底部之外的位置进行擦除。
相应地,在一些实施例中,需求或巡查擦除主动清理存储器中的软错误。这又减少 对存储器的相同位置的后续访问的ECC尝试的等待时间处罚。它还防止多个软错误随时间 积累。多个软错误可能会使数据变成不可校正。另外,巡查擦除器逻辑可在系统地址空间 中操作,因此,配置该逻辑将是固件建立系统地址映射所采用的算法的自然扩展。此外,HA 可再使用前向推进算法来确保擦除与结构请求之间的公平性。另一方面,如果擦除器逻辑使用压缩(装置级)地址来实现,则确保前向推进变得更难且不太有效。这是因为存储控 制器可能必须为巡查擦除器请求和HA请求提供唯一前向机制(forward mechanism)。由于 擦除器由HA控制,所以它可为擦除和结构请求提供相似的服务质量保证。此外,在一个实 施例中,巡查擦除器日志(patrol scrubber log)可包括允许系统固件从存储器清理毒性 数据的特征,正如下面进一步论述。这防止在使用中毒数据时的致命错误。
图5和图6示出根据一些实施例、在归属代理存储和传播中毒数据的流程图。在一 个实施例中,归属代理保持存储器的一部分的毒性状态位、如存储器的一个或多个位(包 括例如对于64B行边界)。毒性状态保持和更新可经由下列之一来引入
(1)高速缓存代理对归属代理的写回设置了毒性位。在一个实施例中,毒性位设 置在例如数据有效载荷换位(flit)的位52中。存储器的对应行或部分使用特殊目录编码 递交给存储器。这种编码可利用待设置的目录编码的位12(第13位),指明数据中毒。注 意,目录编码的较低12位(0-11)可包含标准MESI/所有权列表信息(其中MESI分别表示 修改、独占、共享、无效存储器状态)。目录/毒性可保存在存储器的备用ECC位中。
(2)从存储器的读取产生未校正错误-在这种情况下,归属代理将向请求方发送 中毒数据(假定要求归属代理发送数据,并且没有接收到对那个地址的写回)。相应地,如 果请求要求目录更新,则归属代理将采用所设置的中毒位向存储器写回存储器的部分(例 如行)。注意,在产生不可校正错误的读取时,目录编码(除了数据之外)可能不可靠。因 此,目录控制器逻辑需要向系统中的所有高速缓存代理广播监听(snoop)。但是,在镜像期 间,归属代理将把未校正读取透明地故障转移到镜像归属代理,与返回中毒的数据相反。
(3)从存储器的读取返回中毒目录编码(并且没有不可校正错误产生)。注意,在 这种情况下,目录编码本身是正确的,但是数据可能不可靠。在这种情况下,目录控制器可 使用目录编码来选择性地发送监听。例如,归属代理将向请求方发送中毒数据(假定要求 归属代理发送数据,并且没有接收到对那个地址的写回)。但是,在镜像期间,归属代理将把 中毒读取透明地故障转移到镜像归属代理,与在一个实施例中返回中毒的数据相反。此外, 有可能的是,从存储器不正确地取出的行由于对相同地址的清扫写回(clean writeback) (隐式或显式)而使其毒性位重置。但是,部分写回将继续使毒性位保持被设置。存储器 中标记为中毒的一致行将要求全行写入,以便清除毒性位(例如,使用irwitoe/wbmtoi组 合,它们指明CPU已经进行对全高速缓存行的存储而没有首先对它进行读取)。另外,在一 些实施例中,能够使用巡查擦除器逻辑来选择性地清除存储器中的毒性位。
参照图5,“CA0”和“CA1”表示高速缓存代理(它们可以是图1的代理之一和/或 图2中例如插槽202-208或MC0-MC3等组件之一,取决于实现),“HA”表示归属代理(它可 以是图1的代理之一和/或图2中例如MC0-MC3等组件之一,取决于实现),以及“存储器” 表示本地存储器或者耦合到HA并且由HA管理的存储器(例如图1的存储器120和/或图 3 的 MEM0-MEM3)。
如图5所示,CAl (它可配置为节点控制器或委托代理(proxy agent))向HA发出 ffbm2E/WbEdata (保留所有权E的高速缓存行写回)。在一个实施例中,这个数据包括设置 的毒性位。HA将数据写到存储器,并且目录继续指向作为独占拥有者的CA1。设置毒性位。 CAO执行相同地址的RdlnvOwn(例如获取独占所有权的读操作)。由于目录指向作为拥有 者的CA1,所以HA向CAl发送SnpInvOwn(它发送监听以废除(invalid)其它高速缓存代理、本例中为CAl中的所有权)。CAl静寂地驱逐(cast out)该行,因此它采用RspI (指明 响应是无效的)来响应SnpInvOwn。
在接收到监听响应时,HA将数据从存储器发送给CA0。由于毒性位被设置,所以HA 向CAO发送中毒数据。此外,由于行的新拥有者为CA0,所以HA将目录更新到E0CA0。它继 续使数据的毒性位保持被设置。CAO将检查它是否消耗(consume)数据。
参照图6,存在与图5的如下变化
(1)在接收到SnpInvOwn时,CAl采用全行写回进行响应。写回数据不再中毒。当 HA接收到非中毒数据时,它继续将其写到存储器。将目录更新到E0CA0,在存储器中进一步 清除毒性位。
(2)HA向CAO发送数据,数据不再中毒。
相应地,一个实施例允许系统在首次遇到不可校正错误时没有发信号通知关于致 命错误。而是只有消耗中毒数据的过程才需要被终止/删除(terminated/killed)。此外, 一个实施例确保不存在存储器数据的静寂破坏,和/或不会将已破坏数据递交给非易失性 存储器(例如参照图8或图9所述的非易失性存储器)。
图7示出根据一个实施例、动态规划来自目录高速缓存的索引/路的方法700的 流程图。在一个实施例中,参照图1-2和图8-9所述的各种组件可用来执行参照图7所述 操作的一个或多个。例如,归属代理(或者归属代理内的逻辑,例如图1的代理102-1、图2 的归属代理、图8或图9的组件等等中的规划逻辑)可在各个实施例中执行方法700的操作。
如图1所示,归属代理可包括用于高速缓存频繁使用的目录标签(例如,各目录标 签以64B高速缓存行粒度来跟踪所有权)的目录高速缓存(例如高速缓存12 。在一个 实施例中,目录可跟踪包括IOH高速缓存代理(如参照图8的芯片组806或者图9的芯片 组920所述的输入/输出集线器高速缓存代理,或者它可另外耦合到插槽或处理器以提供 I/O功能性)的高达64个高速缓存代理和节点控制器/委托代理的所有权。目录高速缓 存可以是存储在由HA控制或者是由HA可访问的存储器(例如图1的存储器120或者图3 的MEM0-MEM3)中的全目录的(全部或部分的)备份。例如,对HA的高速缓存行请求可在 目录高速缓存中生成并行查找表来获得所有权信息。
在一些实施例中,目录对于存储器的一部分(例如高速缓存行)跟踪下列一个或 多个无效行,独占所有权,正好一个共享者,和/或经由粗略共享列表(coarse sharing list)的多个共享者。经由目录来跟踪高速缓存行(或者存储器的其它部分)的所有权允 许对高速缓存代理的子集的定向监听;因而降低对系统结构的监听带宽需求。
在一个实施例中,耦合到目录高速缓存(未示出)的逻辑提供动态禁用例如因潜 在缺陷而已经成为硬错误源的高速缓存条目(或其它部分)的机制。目录高速缓存存储字 段可经过奇偶校验保护,并且可检测单个比特错误。通过主动禁用遇到持续奇偶校验错误 的高速缓存条目,静寂数据破坏的可能性可显著降低。目录高速缓存逻辑例如可禁用多路 (例如高达16路),而与目录高速缓存索引无关。在一个实施例中,可编程错误阈值可确定 需要发生以引起来自目录高速缓存的特定索引和/或路的规划的奇偶校验错误的数量。目 录高速缓存逻辑还可防止一次性软错误不必要地占用(例如16个)寄存器跟踪条目其中 之一。在一些实施例中,将高速缓存阵列组织成池集合(在两个物理组(physical bank)上划分),其中每个集合16路。各路可具有三个字段一个30位标签字段以及保存1 字 节核心高速缓存行的两个64字节伙伴(buddy)的MESI和所有权信息的两个12位字段。在 一个实施例中,各字段可经过奇偶校验保护。
在一个实施例中,字段(可实现为CAM(内容可寻址存储器)可包括下列项
字段描述Valid指明条目是活动的lndex[ll:0]指向具有奇偶校验错误的索引Bank—bit指向具有奇偶校验错误的物理组Way[3:0]指向具有奇偶校验错误的索引中的 路Error_Count[2:0]指明对于索引/路组合所遇到的奇偶 校验错误的数量
参照图7,在接收到对目录高速缓存的地址查找702时,可确定目录高速缓存中的 奇偶校验错误是否在查找期间已经发生704。如果没有发生奇偶校验错误,则命中/未命中 信令在操作706发生(例如以标准方式指明命中/未命中)。否则,在操作708,可访问已 登记的(registered)CAM以查找命中,然后可将Error_Count[20]递增,例如递增到在操 作710所确定的可编程阈值。
在操作708,在一个实施例,如果条目在CAM寄存器中不存在,则记录新条目。如果 所有条目全满,则可断言目录高速缓存溢出位。如果在一路以上指明奇偶校验错误,则可仅 使一个错误计数递增。但是,目录高速缓存可调度所检测的各奇偶校验错误的擦除。这确 保一次性软错误不会对后续访问引起奇偶校验错误。在CAM具有命中、但目录高速缓存指 明没有奇偶校验错误(即,原始记录条目为软错误)的情况下,将错误计数递减一。此外, 零的错误计数又将作废对应CAM寄存器条目。在一个实施例中,在条目命中编程错误阈值 之后没有错误计数递增或递减可发生。在一些实施例中,阈值可缺省为二。
在一个实施例中,CAM操作与每一个目录高速缓存查找并行执行。目录高速缓存 索引和组信息可用于CAM操作。在CAM命中时,将对条目的错误计数与编程错误阈值进行 比较。如果计数在操作时等于阈值,则CAM条目中保存的路被看作禁用。禁用信息可用于 掩蔽对那一路的命中或分配。已经命中阈值的条目将被看作禁用,直到CAM寄存器在系统 状态重置时被重置。这些日志可在系统状态重置之后被读出和重新编程,以便避免重新发 现潜在缺陷的惩罚。
参照图7,如果错误的数量高于极限(或阈值),则可发信号通知关于可恢复错误, 并且可规划组/路(set/way)。否则,在操作714,经校正的错误可以是具有未命中的信号 (corrected error may be signals with a miss at operation 714)。相应地,一些实施 例动态规划目录高速缓存的索引/路。规划索引/路可防止部分由于来自查找索引/路的 潜在缺陷的奇偶校验错误而与为目录标签访问存储器关联的附加等待时间。这类实施例还 可降低目录高速缓存中的任何索引/路的静寂数据破坏的可能性。
图8示出计算系统800的一个实施例的框图。图1的代理102的一个或多个可包 括计算系统800的一个或多个组件。另外,系统800的各种组件可包括目录高速缓存(例 如,诸如图1的目录高速缓存122等)和/或擦除器或规划逻辑(例如图1的逻辑111), 如图8所示。但是,目录高速缓存和/或擦除器逻辑可设置在整个系统800的各个位置,包 括或排除所示的位置。计算系统800可包括耦合到互连网络(或总线)804的一个或多个 中央处理单元(CPU)802(它在本文中统称为“多个处理器802”或者更一般地称为“处理器 802”)。处理器802可以是任何类型的处理器,例如通用处理器、网络处理器(它可处理通 过计算机网络805所传递的数据)等,(包括精简指令集计算机(RISC)处理器或复杂指令 集计算机(CISC))。此外,处理器802可具有单核或多核设计。多核设计的处理器802可将 不同类型的处理器核心集成到同一个集成电路(IC)管芯上。多核设计的处理器802还可 实现为对称或不对称多处理器。
处理器802可包括一个或多个高速缓存(例如不同于所示目录高速缓存122),它 /它们在各个实施例中可以是专用和/或共享的。一般来说,高速缓存存储与存储在其它 位置或者先前计算的原始数据对应的数据。为了减少存储器访问等待时间,一旦数据存储 在高速缓存中,则可通过访问经高速缓存的副本而不是重取或重新计算原始数据来进行将 来的使用。高速缓存可以是存储由系统800的一个或多个组件使用的电子数据(例如包括 指令)的任何类型的高速缓存,例如第1级(Li)高速缓存、第2级(U)高速缓存、第3级 (L3)、中间级高速缓存、最后一级高速缓存(LLC)等等。另外,这种(这类)高速缓存可位 于各个位置(例如,在本文所述的包括图1、图2、图8或图9的系统的计算系统的其它组件 的内部)。
芯片组806还可耦合到互连网络804。此外,芯片组806可包括图形存储控制集 线器(GMCH)808。GMCH 808可包括耦合到存储器812的存储控制器810。存储器812可存 储数据,例如包括由处理器802或者与计算系统800的组件进行通信的任何其它装置运行 的指令序列。另外,在本发明的一个实施例中,存储器812可包括一个或多个易失性存储 (或存储器)装置,例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM (SDRAM)、静态 RAM(SRAM)等。还可使用非易失性存储器、如硬盘。附加装置可耦合到互连网络804,例如 多个处理器和/或多个系统存储器。
GMCH 808还可包括(例如在一个实施例中经由图形加速器)与显示装置816耦合 的图形接口 814。在一个实施例中,图形接口 814可经由加速图形端口(AGP)耦合到显示装 置816。在本发明的一个实施例中,显示装置816(例如平板显示器)可通过例如信号转换 器耦合到图形接口 814,其中信号转换器将存储装置、如视频存储器或系统存储器(例如存 储器81 中存储的图像的数字表示转换成由显示器816解释和显示的显示信号。
如图8所示,集线器接口 818可将GMCH 808耦合到输入/输出控制集线器 (ICH)8200 ICH 820可提供到与计算系统800耦合的输入/输出(I/O)装置的接口。ICH 820可通过例如可符合PCIe规范的外设部件互连(PCI)桥、通用串行总线(USB)控制器等 外设桥(或控制器)拟4耦合到总线822。桥拟4可提供处理器802与外围装置之间的数 据通路。可使用其它类型的拓扑结构。多个总线也可例如通过多个桥或控制器耦合到ICH 820。此外,总线822可包括总线系统的其它类型和配置。此外,在本发明的各个实施例中, 耦合到ICH 820的其它外设可包括集成驱动电子器件(IDE)或小型计算机系统接口(SCSI) 硬盘驱动、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动、数字输出支持(例如数字 视频接口 (DVI))等等。
总线822可耦合到音频装置826、一个或多个磁盘驱动828和网络适配器830 (它 在一个实施例中可以是NIC)。在一个实施例中,耦合到总线822的网络适配器830或其它 装置可与芯片组806进行通信。另外,在本发明的一些实施例中,各种组件(例如网络适配 器830)可耦合到GMCH 808。此外,可组合处理器802和GMCH 808以形成单个芯片。在一 个实施例中,存储控制器810可设置在CPU 802的一个或多个中。此外,在一个实施例中, GMCH 808和ICH 820可组合到外设控制集线器(PCH)中。
另外,计算系统800可包括易失性和/或非易失性存储器(或存储装置)。例 如,非易失性存储器可包括下列一个或多个只读存储器(ROM),可编程ROM(PROM),可擦 PROM (EPROM),电EPROM (EEPROM),磁盘驱动(例如828),软盘,光盘ROM (CD-ROM),数字多功 能光盘(DVD),闪速存储器,磁-光盘,或者能够存储电子数据(例如包括指令)的其它类型 的非易失性机器可读介质。
在一个实施例中,存储器812可包括下列一个或多个操作系统(0/S)832、应用 834、目录801和/或装置驱动器836。存储器812还可包括专用于存储器映射Ι/0(ΜΜΙ0) 操作的区域。作为存储器管理操作的一部分,可将存储器812中存储的程序和/或数据交换 到磁盘驱动828。应用834可运行(例如在处理器802上),以便与耦合到网络805的一个 或多个计算装置传递一个或多个分组。在一个实施例中,分组可以是可通过(例如经由诸 如网络805等网络)从至少一个发送器传送到至少一个接收器的一个或多个电信号来编码 的一个或多个符号和/或值的序列。例如,各分组可具有报头,报头包括可用于路由和/或 处理分组的各种信息,例如源地址、目标地址、分组类型等等。各分组还可具有有效载荷,它 包括该分组通过计算机网络(例如网络80 正在各种计算装置之间转移的原始数据(或 内容)。
在一个实施例中,应用834可利用0/S 832、例如通过装置驱动器836来与系统 800的各种组件进行通信。因此,装置驱动器836可包括网络适配器830特定命令,以便提 供0/S 832与网络适配器830或者例如经由芯片组806耦合到系统800的其它I/O装置之 间的通信接口。
在一个实施例中,0/S 832可包括网络协议栈。协议栈一般表示可运行以处理通 过网络805所发送的分组的一组过程或程序,其中分组可符合指定协议。例如,TCP/IP(传 输控制协议/因特网协议)分组可使用TCP/IP栈来处理。装置驱动器836可指明例如经 由协议栈将要处理的存储器812中的缓冲器。
网络805可包括任何类型的计算机网络。网络适配器830还可包括直接存储器存 取(DMA)引擎,它将分组写入分配给可用描述符(例如存储在存储器812中)的缓冲器(例 如存储在存储器812中),以便通过网络805传送和/或接收数据。另外,网络适配器830 可包括网络适配器控制器,它可包括执行适配器相关操作的逻辑(例如一个或多个可编程 处理器)。在一个实施例中,适配器控制器可以是MAC(媒体存取控制)组件。网络适配器 830还可包括存储器,例如任何类型的易失性/非易失性存储器(例如包括一个或多个高速 缓存和/或参照存储器812所述的其它存储器类型)。
图9示出根据本发明的一个实施例、设置成点对点(PtP)配置的计算系统900。具 体来说,图9示出其中处理器、存储器和输入/输出装置通过多个点对点接口进行互连的系 统。参照图1-8所述的操作可由系统900的一个或多个组件来执行。
如图9所示,系统900可包括若干处理器,为了清楚起见仅示出其中两个处理器, 即处理器902和904。处理器902、904均可包括实现与存储器910、912的通信的本地存储 控制器集线器(GMCH)906、908。存储器910和/或912可存储例如参照图9的存储器912 所述的各种数据。如图9所示,处理器902和904(或者系统900的其它组件,例如芯片组 920、I/O装置943等等)还可包括例如参照图1-8所述的一个或多个高速缓存。
在一个实施例中,处理器902和904可以是参照图9所述的处理器902其中之一。 处理器902和904可分别使用点对点(PtP)接口电路916、918经由PtP接口 914来交换数 据。另外,处理器902、904均可使用点对点接口电路拟6、拟8、930、932经由各个PtP接口 922,924来与芯片组920交换数据。芯片组920还可例如使用PtP接口电路937经由高性 能图形接口 936来与高性能图形电路934交换数据。
在至少一个实施例中,目录高速缓存和/或擦除器逻辑可设置在处理器902、904 和/或芯片组920的一个或多个中。但是,本发明的其它实施例可存在于图9的系统900 内的其它电路、逻辑单元或装置中。此外,本发明的其它实施例可分布于图9所示的若干电 路、逻辑单元或装置上。例如,系统900的各种组件可包括目录高速缓存(例如,诸如图1 的目录高速缓存122等)和/或擦除器或规划逻辑(例如图1的逻辑111)。但是,目录高 速缓存和/或擦除器逻辑可设置在整个系统900的各个位置,包括或排除所示的位置。
芯片组920可使用PtP接口电路941与总线940进行通信。总线940可具有与其 通信的一个或多个装置,例如总线桥942和I/O装置943。经由总线944,总线桥942可与 例如键盘/鼠标945、通信装置946 (例如调制解调器、网络接口装置或者可与计算机网络 905进行通信的其它通信装置)、音频I/O装置和/或数据存储装置948等其它装置进行通 信。数据存储装置948可存储可由处理器902和/或904运行的代码949。
在本发明的各个实施例中,本文中例如参照图1-9所述的操作可实现为硬件(例 如电路)、软件、固件、微码或者它们的组合,它们可作为计算机程序产品来提供,例如包括 机器可读或计算机可读介质,其上存储了用于对计算机进行编程以执行本文所述过程的指 令(或软件过程)。术语“逻辑”作为举例还可包括软件、硬件或者软件和硬件的组合。机器可读介质可包括例如针对图1-9所述的存储装置。另外,这类计算机可读介质可作为计 算机程序产品来下载,其中,程序可通过载波或其它传播介质中所提供的数据信号、经由通 信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)转移到请求计 算机(例如客户机)。
说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结 构或特性可包含在至少一个实现中。词语“在一个实施例中”在本说明书的各个位置的出 现可能或者可能不是全部指同一个实施例。
在描述和权利要求书中,还可使用术语“耦合”和“连接”及其派生。在本发明的 一些实施例中,“连接”可用来指明两个或更多元件相互直接物理或电接触。“耦合”可表示 两个或更多元件直接物理或电接触。但是,“耦合”也可表示两个或更多元件可能不是相互 直接接触,但可仍然相互配合或交互。
因此,虽然已经通过结构特征和/或方法动作特定的语言来描述本发明的实施 例,但是要理解,要求权益的主题可以并不局限于所述的特定特征或动作。特定特征和动作 而是作为实现要求权益的主题的示例形式来公开。
权利要求
1.一种设备,包括从第二代理接收与目标地址对应的请求的第一代理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代 理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及擦除器逻辑,校正与所述目标地址对应的所述存储器中的位置的错误。
2.如权利要求1所述的设备,其中,所述第一代理将与所述请求对应的所述数据的校 正形式写到与所述目标地址对应的所述存储器的位置。
3.如权利要求1所述的设备,其中,错误校正码在对所述存储器访问期间校正所述错误。
4.如权利要求1所述的设备,其中,所述请求对应于多个目标地址,并且所述擦除器逻 辑访问与所述多个目标地址对应的所述存储器的多个位置。
5.如权利要求1所述的设备,其中,所述第一代理包括擦除器逻辑。
6.如权利要求1所述的设备,其中,所述第一代理响应从所述多个高速缓存代理的一 个或多个所接收的一个或多个监听响应而更新所述目录高速缓存。
7.如权利要求1所述的设备,其中,所述第一代理将一个或多个监听发送到由所述目 录高速缓存识别为具有与所述目标地址对应的所述数据的副本的所述多个高速缓存代理 的一个或多个。
8.如权利要求1所述的设备,其中,所述第一代理是所述目标地址的归属代理。
9.如权利要求1所述的设备,还包括耦合所述第一代理和第二代理的串行链路。
10.如权利要求1所述的设备,其中,所述第一代理和所述第二代理处于同一个集成电 路管芯上。
11.如权利要求1所述的设备,其中,所述存储器存储一个或多个毒性位,以便指明所 述存储器的一个或多个对应部分是否存储具有不可校正错误的数据。
12.—种设备,包括从第二代理接收与目标地址对应的请求的第一代理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代 理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及规划逻辑,响应与所述目录高速缓存对应的多个错误超过阈值而规划所述目录高速缓 存的索引或路。
13.如权利要求12所述的设备,还包括内容可寻址存储器,对于所述目录高速缓存的 各条目存储下列一个或多个有效性字段、索引字段、组字段、路字段和错误计数字段。
14.如权利要求12所述的设备,其中,所述第一代理响应从所述多个高速缓存代理的 一个或多个所接收的一个或多个监听响应而更新所述目录高速缓存。
15.如权利要求12所述的设备,其中,所述第一代理包括规划逻辑。
16.如权利要求12所述的设备,其中,所述第一代理将一个或多个监听发送到由所述 目录高速缓存识别为具有与所述目标地址对应的所述数据的副本的所述多个高速缓存代 理的一个或多个。
17.如权利要求12所述的设备,其中,所述第一代理是所述目标地址的归属代理。
18.如权利要求12所述的设备,还包括耦合所述第一代理和第二代理的串行链路。
19.如权利要求12所述的设备,其中,所述第一代理和所述第二代理处于同一个集成 电路管芯上。
20.如权利要求12所述的设备,其中,所述存储器存储一个或多个毒性位,以便指明所 述存储器的一个或多个对应部分是否存储具有不可校正错误的数据。
21.一种方法,包括在第一代理接收与目标地址对应的请求;以及将对应于耦合到所述第一代理的多个高速缓存代理的数据存储在目录高速缓存中;将对应于所述请求的数据存储在存储器中;以及根据所述第一代理将对应于所述请求的所述数据的校正形式写到对应于所述目标地 址的所述存储器的位置,来校正与所述目标地址对应的所述存储器的位置的错误。
22.如权利要求21所述的方法,其中,所述请求对应于多个目标地址,并且校正所述错 误包括访问与所述多个目标地址对应的所述存储器的多个位置。
23.如权利要求21所述的方法,其中,校正所述错误包括错误校正码在对所述存储器 访问期间校正所述错误。
24.如权利要求21所述的方法,还包括将数据存储在所述目录高速缓存中,以便指明 所述多个高速缓存代理的哪一个具有与所述目标地址对应的所述数据的副本。
25.如权利要求21所述的方法,还包括响应从所述多个高速缓存代理的一个或多个 所接收的一个或多个监听响应而更新所述目录高速缓存。
26.一种系统,包括存储目录的存储器;接收与所述存储器中的目标地址对应的请求的第一代理,其中所述存储器存储与所述 请求对应的数据;以及目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代 理对应的数据,其中,所述目录高速缓存中的已存储数据指明所述多个高速缓存代理的哪 一个具有与所述目标地址对应的所述数据的副本,其中所述第一代理包括下列至少一个校正与所述目标地址对应的所述存储器中的位置的错误的擦除器逻辑,或者响应与所述目录高速缓存对应的多个错误超过阈值而规划所述目录高速缓存的索引 或路的规划逻辑。
27.如权利要求沈所述的系统,其中,所述第一代理将与所述请求对应的所述数据的 校正形式写到与所述目标地址对应的所述存储器的位置。
28.如权利要求沈所述的系统,还包括内容可寻址存储器,对于所述目录高速缓存的 各条目存储下列一个或多个有效性字段、索引字段、组字段、路字段和错误计数字段。
29.如权利要求沈所述的系统,其中,错误校正码在对所述存储器访问期间校正所述 错误。
30.如权利要求沈所述的系统,其中,所述存储器存储一个或多个毒性位,以便指明所 述存储器的一个或多个对应部分是否存储具有不可校正错误的数据。
全文摘要
本发明的名称为归属代理数据和存储器管理。描述与归属代理数据和存储器管理相关的方法和设备。在一个实施例中,擦除器逻辑通过将数据的校正形式写回到目标位置,来校正与目标地址对应的存储器的位置的错误。在一个实施例中,规划逻辑响应与目录高速缓存对应的多个错误超过阈值而规划目录高速缓存的索引或路。还公开其它实施例。
文档编号G06F12/08GK102033817SQ201010503919
公开日2011年4月27日 申请日期2010年9月26日 优先权日2009年9月30日
发明者D·纳加拉, E·德拉诺, G·S·埃夫里尔, G·库马尔, V·R·弗雷塔格 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1