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

文档序号:11774405 阅读:399 来源:国知局
归属代理数据和存储器管理的制作方法与工艺

一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及归属代理数据(homeagentdata)和存储器管理。



背景技术:

可使用监听总线或者基于目录的协议来使计算机系统中的高速缓存存储器保持为一致(coherent)。在任一种情况下,存储器地址与系统中的特定位置关联。这个位置一般称作存储器地址的“归属节点”。

在基于目录的协议中,处理/高速缓存代理可向归属节点发送访问对应“归属代理”与其关联的存储器地址的请求。相应地,这类计算机系统的性能可直接取决于管理归属代理数据和/或存储器的有效程度。



技术实现要素:

本发明提供了一种设备,包括:从第二代理接收与目标地址对应的请求的第一代理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及擦除器逻辑,校正与所述目标地址对应的所述存储器中的位置的错误。

本发明还提供了一种设备,包括:从第二代理接收与目标地址对应的请求的第一代理;目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代理对应的数据;存储器,耦合到所述第一代理,存储与所述请求对应的数据;以及规划逻辑,响应与所述目录高速缓存对应的多个错误超过阈值而规划所述目录高速缓存的索引或路。

本发明还提供了一种方法,包括:在第一代理接收与目标地址对应的请求;以及将对应于耦合到所述第一代理的多个高速缓存代理的数据存储在目录高速缓存中;将对应于所述请求的数据存储在存储器中;以及根据所述第一代理将对应于所述请求的所述数据的校正形式写到对应于所述目标地址的所述存储器的位置,来校正与所述目标地址对应的所述存储器的位置的错误。

本发明还提供了一种系统,包括:存储目录的存储器;接收与所述存储器中的目标地址对应的请求的第一代理,其中所述存储器存储与所述请求对应的数据;以及目录高速缓存,耦合到所述第一代理,存储与耦合到所述第一代理的多个高速缓存代理对应的数据,其中,所述目录高速缓存中的已存储数据指明所述多个高速缓存代理的哪一个具有与所述目标地址对应的所述数据的副本,其中所述第一代理包括下列至少一个:校正与所述目标地址对应的所述存储器中的位置的错误的擦除器逻辑,或者响应与所述目录高速缓存对应的多个错误超过阈值而规划所述目录高速缓存的索引或路的规划逻辑。

附图说明

参照附图来提供具体实施方式。附图中,参考标号最左边的数字标识首次出现该参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。

图1-2和图8-9示出可用来实现本文所述的各个实施例的计算系统的实施例的框图。

图3-7示出根据一些实施例的流程图。

具体实施方式

在以下描述中,提出许多具体细节,以便提供对各个实施例的透彻了解。但是,即使没有具体细节也可实施一些实施例。在其它情况下,没有详细描述众所周知的方法、过程、组件和电路,以免影响对具体实施例的理解。

本文所述的一些实施例一般涉及在归属代理例如通过使用系统地址来擦除(scrubbing)存储器。存储器擦除可涉及存储器装置中错误的检测和/或校正。正如本文将例如参照图3和图4进一步论述,擦除可作为需求擦除(demandscrub)或巡查擦除(patrolscrub)来执行。

另外,在一些实施例中,一个或多个毒性状态位(poisonstatusbit)可用于避免或者至少降低在首次遇到不可校正错误时发信号通知关于致命错误的可能性。此外,一个实施例确保不存在存储器数据的静寂破坏,和/或不会将已破坏数据递交(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可提供遵守一个或多个高速缓存一致协议的通信。

此外,如图1中的箭头方向所示,代理102可经由网络结构104传送和/或接收数据。因此,对于通信,一些代理可利用单向链路,而其它代理可利用双向链路。例如,一个或多个代理(例如代理102-m)可传送数据(例如经由单向链路106),其它代理(例如代理102-2)可接收数据(例如经由单向链路108),而某些(某个)代理(例如代理102-1)可传送和接收数据(例如经由双向链路110)。

另外,代理102的至少一个可以是归属代理,而代理102的一个或多个可以是请求或高速缓存代理,正如本文将会进一步论述。如图所示,至少一个代理(仅示出一个代理102-1)可包括或者有权访问擦除器(scrubber)或规划逻辑(mapoutlogic)(或引擎)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)。存储控制器可耦合到对应的本地存储器(标记为mem0至mem3),它们可以是系统存储器(例如图9的存储器912)的一部分。在一些实施例中,存储控制器(mc)/归属代理(ha)(例如mc0/ha0至mc3/ha3)可与图1的代理102-1(例如包括逻辑111等)相同或相似,并且标记为mem0至mem3的存储器可与图1的存储器120相同或相似。另外,在一个实施例中,mem0至mem3可配置成将数据镜像(mirror)为例如主(master)和从(slave)。另外,在一些实施例中,系统200的一个或多个组件可包含在同一个集成电路管芯上。

因此,例如图2所示的实现可用于具有镜像的插槽无粘接配置(asocketgluelessconfigurationwithmirroring)。例如,可通过ptp链路将分配给存储控制器(例如mc0/ha0)的数据镜像到另一个存储控制器(例如mc3/ha3)。另外,与存储控制器mc3/ha3关联的目录可在镜像副本时(uponacopytomirror)以未知(u)状态来初始化。在故障转移(failover)到这个控制器(例如由于对这个存储控制器的在线服务调用)时,可从u状态重构目录。

图3示出根据一个实施例的需求擦除操作的流程图。一般来说,需求擦除涉及主动清理正常操作期间所遇到的可校正软存储器(例如dram或dimm)错误。例如,在遇到关于读操作的可校正错误时,存储控制器可向归属代理发信号通知关于可校正响应。归属代理又可确保将经校正的数据(例如存储在其缓冲器中,它可存储在归属代理中或者另外由归属代理可访问)写回到存储器(例如图1的存储器120和/或图3的mem0-mem3)。

参照图3,“ca0”表示高速缓存代理(它可以是图1的代理之一和/或图2中例如插槽202-208或mc0-mc3等组件之一,取决于实现),以及“ha”表示归属代理(它可以是图1的代理之一和/或图2中例如mc0-mc3等组件之一,取决于实现)。

如图所示,来自ca0的(例如读取数据的)rddata请求引起对存储控制器(ha)的读操作,以便从存储器读取数据。这种读取引起corr(或者经校正的)响应(例如指明存储控制器ecc(错误校正码)逻辑成功地校正存储器中、如dimm中的瞬态错误)。ha将经校正的数据返回给请求方ca0(标记为“datae_cmp”,指明数据错误校正完成)。另外,单独地或者在后台,ha可发起对存储器的写操作(标记为“scrub/dirwrite”),其中写操作可更新目录(例如图1的目录122)以及将经校正的数据写回到存储器,这允许数据的后续读操作没有招致(incur)一遍ecc校正(anecccorrectionpass)的等待时间。

图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标记所示经过校正),接收corrack,将经校正的数据写到存储器,以及接收确认(ack)(例如,指明擦除写入(write)已经完成)。

在一个实施例中,巡查和需求擦除逻辑对系统地址(例如,诸如快速路径接口(qpi)地址等)而不是压缩“装置级”地址进行操作。这意味着,巡查和需求擦除引擎可利用在归属代理中实现的前向推进算法(forwardprogressalgorithm)。对于巡查擦除器,需要被擦除的适当系统地址范围、基于系统交织的地址递增或步幅以及擦除间隔可在归属代理寄存器(例如,控制和状态寄存器(csr))中编程。

在巡查擦除器已经完成擦除或者检查地址范围之后,它可执行下列步骤:(1)触发中断(例如平台管理中断(pmi)),例如以便通知(alert)软件抽象层(例如bios(基本输入/输出系统)),使得bios可对ha寄存器重新编程,以便发起下一个地址范围的巡查擦除;或者(2)设置完成位,bios可对它进行轮询以了解发起下一个地址范围的巡查擦除的时间。

如上所示,巡查擦除器可对于由软件(例如bios)所编程的地址范围进行操作。对于这个范围内的各行(例如高速缓存行),擦除器发起(launch)对存储控制器的读取。如果巡查擦除器接收到对读操作的校正响应,它则向同一个地址发出写入。当执行写操作时,可使用高速缓存目录和毒性位的用户编程值,正如本文中例如参照图5或图6进一步论述。这个特征可用于有效地清除存储器中的中毒数据(poisoneddata)(包括例如数据行)。

根据一个实施例,擦除器可按照下列伪代码进行操作:

hiaddr-擦除范围的高地址

loaddr-擦除范围的低地址

curraddr-擦除器正对curraddr进行操作

stride-在各擦除操作之后将curraddr递增这个量(例如8路128b交织将要求这个值设置在8×128,这还要求两遍(128b高速缓存行一半的每个64b一遍)

scrub_enable_pmi-当编程范围的擦除完成时发起(fire)pmi

scrub_range_done-当前编程范围的擦除已经完成

scrub_ctr-每隔2**cpu时钟发起擦除操作

scrub_en-启用巡查擦除器

scrub_withuser_poison-在擦除写入时,使用用户定义的毒性值

scrub_user_poison_val-对擦除写操作使用的毒性值

scrub_with_user_dirbits-在擦除写入时,使用用户定义的dirbits值

scrub_user_dkbits_val-对擦除写操作使用的dirbits值

在一个实施例中,scrub_ctr缺省为0xffff。另外,curraddr可设置成loaddr,除非请求从除了范围的底部之外的位置进行擦除。

相应地,在一些实施例中,需求或巡查擦除主动清理存储器中的软错误。这又减少对存储器的相同位置的后续访问的ecc尝试的等待时间处罚。它还防止多个软错误随时间积累。多个软错误可能会使数据变成不可校正。另外,巡查擦除器逻辑可在系统地址空间中操作,因此,配置该逻辑将是固件建立系统地址映射所采用的算法的自然扩展。此外,ha可再使用前向推进算法来确保擦除与结构请求之间的公平性。另一方面,如果擦除器逻辑使用压缩(装置级)地址来实现,则确保前向推进变得更难且不太有效。这是因为存储控制器可能必须为巡查擦除器请求和ha请求提供唯一前向机制(forwardmechanism)。由于擦除器由ha控制,所以它可为擦除和结构请求提供相似的服务质量保证。此外,在一个实施例中,巡查擦除器日志(patrolscrubberlog)可包括允许系统固件从存储器清理毒性数据的特征,正如下面进一步论述。这防止在使用中毒数据时的致命错误。

图5和图6示出根据一些实施例、在归属代理存储和传播中毒数据的流程图。在一个实施例中,归属代理保持存储器的一部分的毒性状态位、如存储器的一个或多个位(包括例如对于64b行边界)。毒性状态保持和更新可经由下列之一来引入:

(1)高速缓存代理对归属代理的写回设置了毒性位。在一个实施例中,毒性位设置在例如数据有效载荷换位(flit)的位52中。存储器的对应行或部分使用特殊目录编码递交给存储器。这种编码可利用待设置的目录编码的位12(第13位),指明数据中毒。注意,目录编码的较低12位(0-11)可包含标准mesi/所有权列表信息(其中mesi分别表示修改、独占、共享、无效存储器状态)。目录/毒性可保存在存储器的备用ecc位中。

(2)从存储器的读取产生未校正错误-在这种情况下,归属代理将向请求方发送中毒数据(假定要求归属代理发送数据,并且没有接收到对那个地址的写回)。相应地,如果请求要求目录更新,则归属代理将采用所设置的中毒位向存储器写回存储器的部分(例如行)。注意,在产生不可校正错误的读取时,目录编码(除了数据之外)可能不可靠。因此,目录控制器逻辑需要向系统中的所有高速缓存代理广播监听(snoop)。但是,在镜像期间,归属代理将把未校正读取透明地故障转移到镜像归属代理,与返回中毒的数据相反。

(3)从存储器的读取返回中毒目录编码(并且没有不可校正错误产生)。注意,在这种情况下,目录编码本身是正确的,但是数据可能不可靠。在这种情况下,目录控制器可使用目录编码来选择性地发送监听。例如,归属代理将向请求方发送中毒数据(假定要求归属代理发送数据,并且没有接收到对那个地址的写回)。但是,在镜像期间,归属代理将把中毒读取透明地故障转移到镜像归属代理,与在一个实施例中返回中毒的数据相反。此外,有可能的是,从存储器不正确地取出的行由于对相同地址的清扫写回(cleanwriteback)(隐式或显式)而使其毒性位重置。但是,部分写回将继续使毒性位保持被设置。存储器中标记为中毒的一致行将要求全行写入,以便清除毒性位(例如,使用invitoe/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(它可配置为节点控制器或委托代理(proxyagent))向ha发出wbm2e/wbedata(保留所有权e的高速缓存行写回)。在一个实施例中,这个数据包括设置的毒性位。ha将数据写到存储器,并且目录继续指向作为独占拥有者的ca1。设置毒性位。ca0执行相同地址的rdinvown(例如获取独占所有权的读操作)。由于目录指向作为拥有者的ca1,所以ha向ca1发送snpinvown(它发送监听以废除(invalid)其它高速缓存代理、本例中为ca1中的所有权)。ca1静寂地驱逐(castout)该行,因此它采用rspi(指明响应是无效的)来响应snpinvown。

在接收到监听响应时,ha将数据从存储器发送给ca0。由于毒性位被设置,所以ha向ca0发送中毒数据。此外,由于行的新拥有者为ca0,所以ha将目录更新到e@ca0。它继续使数据的毒性位保持被设置。ca0将检查它是否消耗(consume)数据。

参照图6,存在与图5的如下变化:

(1)在接收到snpinvown时,ca1采用全行写回进行响应。写回数据不再中毒。当ha接收到非中毒数据时,它继续将其写到存储器。将目录更新到e@ca0,在存储器中进一步清除毒性位。

(2)ha向ca0发送数据,数据不再中毒。

相应地,一个实施例允许系统在首次遇到不可校正错误时没有发信号通知关于致命错误。而是只有消耗中毒数据的过程才需要被终止/删除(terminated/killed)。此外,一个实施例确保不存在存储器数据的静寂破坏,和/或不会将已破坏数据递交给非易失性存储器(例如参照图8或图9所述的非易失性存储器)。

图7示出根据一个实施例、动态规划来自目录高速缓存的索引/路的方法700的流程图。在一个实施例中,参照图1-2和图8-9所述的各种组件可用来执行参照图7所述操作的一个或多个。例如,归属代理(或者归属代理内的逻辑,例如图1的代理102-1、图2的归属代理、图8或图9的组件等等中的规划逻辑)可在各个实施例中执行方法700的操作。

如图1所示,归属代理可包括用于高速缓存频繁使用的目录标签(例如,各目录标签以64b高速缓存行粒度来跟踪所有权)的目录高速缓存(例如高速缓存122)。在一个实施例中,目录可跟踪包括ioh高速缓存代理(如参照图8的芯片组806或者图9的芯片组920所述的输入/输出集线器高速缓存代理,或者它可另外耦合到插槽或处理器以提供i/o功能性)的高达64个高速缓存代理和节点控制器/委托代理的所有权。目录高速缓存可以是存储在由ha控制或者是由ha可访问的存储器(例如图1的存储器120或者图3的mem0-mem3)中的全目录的(全部或部分的)备份。例如,对ha的高速缓存行请求可在目录高速缓存中生成并行查找表来获得所有权信息。

在一些实施例中,目录对于存储器的一部分(例如高速缓存行)跟踪下列一个或多个:无效行,独占所有权,正好一个共享者,和/或经由粗略共享列表(coarsesharinglist)的多个共享者。经由目录来跟踪高速缓存行(或者存储器的其它部分)的所有权允许对高速缓存代理的子集的定向监听;因而降低对系统结构的监听带宽需求。

在一个实施例中,耦合到目录高速缓存(未示出)的逻辑提供动态禁用例如因潜在缺陷而已经成为硬错误源的高速缓存条目(或其它部分)的机制。目录高速缓存存储字段可经过奇偶校验保护,并且可检测单个比特错误。通过主动禁用遇到持续奇偶校验错误的高速缓存条目,静寂数据破坏的可能性可显著降低。目录高速缓存逻辑例如可禁用多路(例如高达16路),而与目录高速缓存索引无关。在一个实施例中,可编程错误阈值可确定需要发生以引起来自目录高速缓存的特定索引和/或路的规划的奇偶校验错误的数量。目录高速缓存逻辑还可防止一次性软错误不必要地占用(例如16个)寄存器跟踪条目其中之一。在一些实施例中,将高速缓存阵列组织成8k集合(在两个物理组(physicalbank)上划分),其中每个集合16路。各路可具有三个字段:一个30位标签字段以及保存128字节核心高速缓存行的两个64字节伙伴(buddy)的mesi和所有权信息的两个12位字段。在一个实施例中,各字段可经过奇偶校验保护。

在一个实施例中,字段(可实现为cam(内容可寻址存储器)可包括下列项:

参照图7,在接收到对目录高速缓存的地址查找702时,可确定目录高速缓存中的奇偶校验错误是否在查找期间已经发生704。如果没有发生奇偶校验错误,则命中/未命中信令在操作706发生(例如以标准方式指明命中/未命中)。否则,在操作708,可访问已登记的(registered)cam以查找命中,然后可将error_count[2:0]递增,例如递增到在操作710所确定的可编程阈值。

在操作708,在一个实施例,如果条目在cam寄存器中不存在,则记录新条目。如果所有条目全满,则可断言目录高速缓存溢出位。如果在一路以上指明奇偶校验错误,则可仅使一个错误计数递增。但是,目录高速缓存可调度所检测的各奇偶校验错误的擦除。这确保一次性软错误不会对后续访问引起奇偶校验错误。在cam具有命中、但目录高速缓存指明没有奇偶校验错误(即,原始记录条目为软错误)的情况下,将错误计数递减一。此外,零的错误计数又将作废对应cam寄存器条目。在一个实施例中,在条目命中编程错误阈值之后没有错误计数递增或递减可发生。在一些实施例中,阈值可缺省为二。

在一个实施例中,cam操作与每一个目录高速缓存查找并行执行。目录高速缓存索引和组信息可用于cam操作。在cam命中时,将对条目的错误计数与编程错误阈值进行比较。如果计数在操作时等于阈值,则cam条目中保存的路被看作禁用。禁用信息可用于掩蔽对那一路的命中或分配。已经命中阈值的条目将被看作禁周,直到cam寄存器在系统状态重置时被重置。这些日志可在系统状态重置之后被读出和重新编程,以便避免重新发现潜在缺陷的惩罚。

参照图7,如果错误的数量高于极限(或阈值),则可发信号通知关于可恢复错误,并且可规划组/路(set/way)。否则,在操作714,经校正的错误可以是具有未命中的信号(correctederrormaybesignalswithamissatoperation714)。相应地,一些实施例动态规划目录高速缓存的索引/路。规划索引/路可防止部分由于来自查找索引/路的潜在缺陷的奇偶校验错误而与为目录标签访问存储器关联的附加等待时间。这类实施例还可降低目录高速缓存中的任何索引/路的静寂数据破坏的可能性。

图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级(l1)高速缓存、第2级(l2)高速缓存、第3级(l3)、中间级高速缓存、最后一级高速缓存(llc)等等。另外,这种(这类)高速缓存可位于各个位置(例如,在本文所述的包括图1、图2、图8或图9的系统的计算系统的其它组件的内部)。

芯片组806还可耦合到互连网络804。此外,芯片组806可包括图形存储控制集线器(gmch)808。gmch808可包括耦合到存储器812的存储控制器810。存储器812可存储数据,例如包括由处理器802或者与计算系统800的组件进行通信的任何其它装置运行的指令序列。另外,在本发明的一个实施例中,存储器812可包括一个或多个易失性存储(或存储器)装置,例如随机存取存储器(ram)、动态ram(dram)、同步dram(sdram)、静态ram(sram)等。还可使用非易失性存储器、如硬盘。附加装置可耦合到互连网络804,例如多个处理器和/或多个系统存储器。

gmch808还可包括(例如在一个实施例中经由图形加速器)与显示装置816耦合的图形接口814。在一个实施例中,图形接口814可经由加速图形端口(agp)耦合到显示装置816。在本发明的一个实施例中,显示装置816(例如平板显示器)可通过例如信号转换器耦合到图形接口814,其中信号转换器将存储装置、如2020欧洲杯投注官网 存储器或系统存储器(例如存储器812)中存储的图像的数字表示转换成由显示器816解释和显示的显示信号。

如图8所示,集线器接口818可将gmch808耦合到输入/输出控制集线器(ich)820。ich820可提供到与计算系统800耦合的输入/输出(i/o)装置的接口。ich820可通过例如可符合pcie规范的外设部件互连(pci)桥、通用串行总线(usb)控制器等外设桥(或控制器)824耦合到总线822。桥824可提供处理器802与外围装置之间的数据通路。可使用其它类型的拓扑结构。多个总线也可例如通过多个桥或控制器耦合到ich820。此外,总线822可包括总线系统的其它类型和配置。此外,在本发明的各个实施例中,耦合到ich820的其它外设可包括集成驱动电子器件(ide)或小型计算机系统接口(scsi)硬盘驱动、usb端口、键盘、鼠标、并行端口、串行端口、软盘驱动、数字输出支持(例如数字2020欧洲杯投注官网 接口(dvi))等等。

总线822可耦合到音频装置826、一个或多个磁盘驱动828和网络适配器830(它在一个实施例中可以是nic)。在一个实施例中,耦合到总线822的网络适配器830或其它装置可与芯片组806进行通信。另外,在本发明的一些实施例中,各种组件(例如网络适配器830)可耦合到gmch808。此外,可组合处理器802和gmch808以形成单个芯片。在一个实施例中,存储控制器810可设置在cpu802的一个或多个中。此外,在一个实施例中,gmch808和ich820可组合到外设控制集线器(pch)中。

另外,计算系统800可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(rom),可编程rom(prom),可擦prom(eprom),电eprom(eeprom),磁盘驱动(例如828),软盘,光盘rom(cd-rom),数字多功能光盘(dvd),闪速存储器,磁-光盘,或者能够存储电子数据(例如包括指令)的其它类型的非易失性机器可读介质。

在一个实施例中,存储器812可包括下列一个或多个:操作系统(o/s)832、应用834、目录801和/或装置驱动器836。存储器812还可包括专用于存储器映射i/o(mmio)操作的区域。作为存储器管理操作的一部分,可将存储器812中存储的程序和/或数据交换到磁盘驱动828。应用834可运行(例如在处理器802上),以便与耦合到网络805的一个或多个计算装置传递一个或多个分组。在一个实施例中,分组可以是可通过(例如经由诸如网络805等网络)从至少一个发送器传送到至少一个接收器的一个或多个电信号来编码的一个或多个符号和/或值的序列。例如,各分组可具有报头,报头包括可用于路由和/或处理分组的各种信息,例如源地址、目标地址、分组类型等等。各分组还可具有有效载荷,它包括该分组通过计算机网络(例如网络805)正在各种计算装置之间转移的原始数据(或内容)。

在一个实施例中,应用834可利用o/s832、例如通过装置驱动器836来与系统800的各种组件进行通信。因此,装置驱动器836可包括网络适配器830特定命令,以便提供o/s832与网络适配器830或者例如经由芯片组806耦合到系统800的其它i/o装置之间的通信接口。

在一个实施例中,o/s832可包括网络协议栈。协议栈一般表示可运行以处理通过网络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均可使用点对点接口电路926、928、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页 1 2
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1