将写入数据注入到高速缓存的方法和设备的制作方法

文档序号:6377266阅读:220来源:国知局
专利名称:将写入数据注入到高速缓存的方法和设备的制作方法
技术领域
本发明涉及一种数据处理系统,尤其是涉及具有高速缓存的数据处理系统。
背景技术
众所周知的用以提高计算机系统效能的方法是在其中加入称作高速缓存(cache)的本地局部的、高速的存储器。高速缓存之所以能提高系统效能是因为一旦中央处理单元在特定地址存取数据元时,下一个存取是相邻的地址的数据。该高速缓存提取(fetch)并储存来自较慢速度的主存储器或低级高速缓存中相邻于该请求的数据块(piece ofdata)的数据。在超高效能计算机系统中,多个高速缓存可被分级组织起来。最接近中央处理单元中的高速缓存是所知的称为较高级或一级(Level 1,L1)缓存,是级别中最高且速度通常是最快的。其他的,级别中通常较慢的高速缓存是按照二级(Level 2,L2)缓存开始依次降低顺序排列直到连接到主存储器的最低级的缓存为止。
高速缓储存或释放数据时需遵循某些规则,例如,许多的处理器遵循“写入分配(allocate-on-write)规则”,与那些被中央处理单元所写入的存储器位置相对应的缓存行(cache line)将被存在该高速缓存中。特别是,高速缓存遵循大家知道的规则如最近最少使用算法(least-recently-used,LRU),当高速缓存中所有位置均被写入数据时,判断哪一个位置的数据应被淘汰并腾出空间以放置新的数据元。
高速缓存典型的包含多个状态位,指示该缓存行的状态来维持贯穿该系统的数据一致性。一种常见的一致性协议是为大家知道的MOESI(Modified Owned Exclusive Shared Invalid)协议。依据此种协议每一个缓存行包括指示缓存行所处于哪一种MOESI状态的状态位,包括用以指示缓存行是已修改的(Modified,M)的位,包括指示缓存行是排它的(Exclusive,E)或共享的(Shared,S)、或缓存行是无效的(Invalid,I)位。而拥有者(Owned,O)状态指示在一个高速缓存中的缓存行是已修改过,在其它高速缓存的可以有共享的拷贝且在存储器中的数据是旧的数据。
在一个特别的设定中,所有的高速缓存是与中央处理单元集于相同的集成电路中且主存储器是是位于芯片外的。主存储器是系统中速度最慢和最低价的存储器,而且可由低价但速度相对慢的动态随机存取存储器(DRAM)芯片构成。这样的特性导致存取CPU芯片外的DRAM主存储器时产生了瓶颈,且尽可能的避免此种瓶颈的发生是很必要的。此外,近年来微处理器的速度已经上升到比DRAM的存取速度快,再加上所谓的“存储器障碍(memory-wall)”的瓶颈问题,这样就需要一种可减少主存储器存取需求以提升系统效能的方法以及数据处理器。本发明可提供此种方法和数据处理器,本发明的特性与优势可以结合附图进行更详细的说明,从而能更明确的了解本发明。

发明内容
本发明以一种形式提供一种用于数据处理系统的方法,其中该数据处理具有存储器分级结构,即包括一个高速缓存与一个低级存储器系统。从数据处理器所接收到的数据元(data element)是具有注入属性(inject attribute)的特殊写入(special write)。该数据元被直接发送到高速缓存中而不用访问该低级存储器系统。随后,该高速缓存中至少一个包含有该数据元的缓存行被更新。
本发明以另一形式提供一种用于数据处理系统的方法,该数据处理系统具有很多的节点,每一个节点包括一个中央处理单元以及一个相连的高速缓存。从数据产生器接收与数据元相关的具有注入数据包的写入。检查目录以查看该数据元是否已经以预定的状态存在于该目录中。如果该数据元没有以预定的状态存在于目录中,则为该数据元生成目录入口并将该数据元写入低级的存储器系统。若该数据元已经以预定的状态存在于该目录中,将该数据元直接发送到接收该数据元的高速缓存而不用访问该低级存储器系统。
本发明还以另一种形式提供一种数据处理器,包括具有高速缓存的中央处理器、主桥电路(host bridge)以及存储器控制器。该中央处理单元启动预提取(prefetch)读取来响应所接收的试探预提取(probe prefetch)。该主桥电路被连接到该中央处理单元并适于接收来自于数据产生器的数据元的具有注入包的写入。该内存控制器连接中央处理单元和主桥电路,并连接到低级存储器系统,此外还具有一个连接到该中央处理单元的输出端。该存储器控制器包括缓冲器并储存来自该主桥电路的数据元到该缓冲器中。该存储器控制器提供该试探预取给中央处理单元以响应该数据元的接收,并提供来自该缓冲器的数据元以响应来自该中央处理单元的预取读取。
本发明又以另一形式提供一种数据处理器,包括具有高速缓存的中央处理器、主桥接电路以及目录/存储器控制器。该主桥接电路被连接到该中央处理单元并用以接收来自数据产生器的数据元的具有注入包的写入。该目录/存储器控制器被连接到该中央处理单元与该主桥电路,并连接到低级存储器,此外具有一个连接到该中央处理单元的输出端。该目录/存储器控制器响应于具有注入包的写入以检查自身的目录,查看与该数据元相关的缓存行的状态是否处于预定的状态。如果是,该目录/存储器控制器发送该数据元到该中央处理单元以便将其储存到该高速缓存中而不用访问该低级存储器。
本发明又以另一形式提供一种数据处理器,包括具有高速缓存的中央处理器、主桥电路以及发送装置。该主桥电路连接到中央处理单元并用来为来自数据产生器的数据元接收具有注入包的写入。该发送装置连接到中央处理单元、主桥接电路以及低级存储器系统,且发送该数据元到中央处理单元,并将其储存到该高速缓存中而不用访问该低级存储器系统。


本发明的内容借助于附图在下文中进行说明,其中相同的数字表示相同的元素。
图1例示了先前的技术中,与基于试探的数据处理系统中的数据流和控制信号相关的时序图;图2例示了依据本发明与基于试探的数据处理系统中的数据流和控制信号相关的时序图;
图3例示了依据本发明具有多个处理器的基于试探的数据处理系统的方块图;图4例示了依据本发明具有单处理器的基于试探的数据处理系统的方块图;图5例示了图4所述的数据处理系统在执行具有注入写入操作时的数据流的方块图;图6例示了图4所述的包括存储器控制器的部分数据处理系统的方块图;图7例示了图4所述的包括高速缓存的部分中央处理单元的方块图;图8例示了用以形成具有注入写入包的超传输(Hyper-Transport)包的编码数据表;图9例示了依据本发明与基于目录的数据处理系统中的数据流与控制信号相关的时序图;图10例示了依据本发明运用基于目录的数据处理系统的方块图;以及图11例示了图10的目录/存储器控制器中的入口。
具体实施例方式
图1例示了现有技术中,与基于试探的数据处理系统中的数据流和控制信号相关的时序图10。如图1所示,垂直轴为表示时间从顶端到底端流动的时间轴。图1将三个装置(节点node)用按照水平方向分布的垂直线来表示。标示为节点C的第一节点为数据产生器。例如,节点C可相当于一个输入/输出装置,如数据通讯通路的接收器等,以此为例,节点C可具有一个相关的直接存储器存取(direct memoryaccess,DMA)控制器以辅助该数据流。标示为节点B的第二节点为低级存储器系统且包括主存储器或可能会有的一个或多个低级高速缓存。标示为节点A的第三节点为具有高速缓存的数据使用者(dataconsumer),例如执行应用程序的中央处理单元。在该数据通讯情况下,节点C可以以帧的方式接收数据并将该数据储存在节点B的存储器中,从而使得该数据被用作应用程序的指令时对于在节点A的处理器是有效的。
该数据流以及控制信号的描述如下,首先在节点C,该输入/输出装置通过其本身的通讯链路接收数据帧。在节点C相关的DMA控制器通过执行DMA写入操作将该数据帧的数据写入存储器位置,如箭头12所示。在时间周期14中,节点B的存储器控制器将该数据写入该存储器,同时发送无效试探给该节点A,如箭头16所示。此无效试探通知位于节点A的高速缓存该数据将已修改,并且如果节点A具有一个或多个相关的缓存行的拷贝,则拷贝被置于无效状态。如箭头18所示,节点A以试探响应作为响应。接着,在节点A上所执行的应用程序软件将开始读取该数据的请求,如线20所示。在节点B的存储器控制器在时间周期22中读取该数据,在该时间周期22后,该存储器控制器提供数据给该节点A,如箭头24所示。最后节点A在时间周期26中完成该缓存行的填充。
需要注意的是,传统的操作需要对主存储器的一个写入和一个读取动作,因此在时间周期14与22期间分别占用该主存储器总线。对于执行高带宽通讯协议的系统而言,此种操作将频繁的重复并消耗相当大部分的可用带宽。近年来,主存储器的速度已有所提升,但却不比处理器的速度快,而且对于此种操作的主存储器总线所需带宽的缩减是需要的。
为减少主存储器总线带宽需求,发明人意识到通讯操作处于一种特殊的情况,即可在处理器的高速缓存中单独的操作该数据,而完全避免储存数据对主存储器的请求。特别是,数据通讯接收缓冲器是典型的存储器中的循环缓冲器,数据产生器向该缓冲器写入数据以及输入/输出驱动器从该缓冲器读取协议标头信息(使用者1),以及应用程序从该缓冲器读取有效负载数据(使用者2)。为了避免将数据储存到该主存储器中,发明人研发出一种方法以及相应的数据处理系统以表示此种状况并防止对主存储器存取情况的发生。本发明仅通过简单修改数据处理器来识别在接收的数据包中具有注入属性的特别的写入,并通过抑制该主存储器的存取来进行响应,直接将该数据发送到该中央处理单元的高速缓存,并将该缓存行置于某一状态来实现。此种方法可以借助于图2来了解,图2中例示了依据本发明于试探数据处理系统中的数据流和控制信号相关的时序图50。与图1相关,该垂直轴为表示时间自顶端至底端的流动的时间轴,而该水平轴与前述图1三个节点完全相同。
该操作由在称作“注入写入”包的特别DMA写入请求52开始,该DMA写入请求52介于节点C上的输入/输出装置以及节点B上存储器控制器之间。为响应此种特殊写入请求,在节点B上的存储器控制器在时间周期54期间执行目录读取,接着如箭头56所示发送称为“监控预提取”的广播试探预提取给节点A和系统中所有其它的处理器,来通知节点A以及系统中所有其它的处理器有将要注入到该节点A上的高速缓存中的数据存在。节点A在完成分配该存储器地址到其本身的本地高速缓存后,以试探响应进行响应,如箭头58所示。数据被保存到存储器控制器的储存缓冲器中并延迟写入到低级存储器系统。随后,在节点A的数据处理器发送预提取读取到节点B,如箭头60所示。在时间周期62期间,节点B存储器控制器通过从储存缓冲器中读取数据元进行响应,并发送该数据到节点A,如箭头64所示。如果在节点A上的数据处理器可以正常的发送预提取读取,则在节点B上的存储器控制器将可以在不访问主存储器的情况下发送数据。然而,如果在节点B上的存储器控制器需要再次使用该储存缓冲器作为其它用途,例如当所有其它的缓冲器在处理器发送该预提取读取前已满,为了满足正常写入请求时,该存储器控制器则替代的将该数据写入存储器。最后节点A在时间周期66期间中完成该缓存行的填充。当该数据随后在节点A上被使用,该缓存行将利用如最近最少使用算法的高速缓存的解除分配(de-allocation)规则在正常处理流程期间进行解除分配,缓存行将可用。由于该数据元仅被该处理器使用一次,该缓存行将不会在高速缓存中已修改而且不需要将该缓存行写回主存储器。因此此种方法通常可以消除任何到主存储器的写入,而且仅使用小量的带宽即可供在节点B的存储器控制器执行目录读取和缓冲器读取。
图3例示了依据本发明具有多处理器的基于试探的数据处理系统80的方块图。数据处理系统80包括分别被标记为为“A”、“B”、“C”以及“D”的单处理器81-84,该些处理器是以采用称为超传输通讯协议的一致形式以环形方式连接。如图3所示,处理器81-84具有相对应的以输入/输出控制器85-88形式实现的数据产生器,该数据产生器分别被标示为“I/O A”、“I/O B”、“I/O C”以及“I/O D”并以称为超传输协议的非一致的形式分别各自直接连接到处理器81-84。此外,与每一个处理器81-84相连的是本地存储器91-94。该超传输协议允许进程分散在环绕该环型的不同的点上。例如,输入/输出控制器87可以开始一个“具有注入的写入”操作到与其本身相关联的本地处理器83,且在处理器83的起始节点(home node)上的存储器控制器不仅为了本地高速缓存的数据发送试探,而且为了系统中所有的高速缓存,利用一致的超传输协议发送试探。在另一例中,该输入/输出驱动器或应用程序可在另一处理器81上执行,而该数据的起始节点可为如处理器82一样的另一处理器。如图3所示,输入/输出控制器87可为实际发送具有注入的写入包到处理器83的控制器。
图4例示了依据本发明具有单处理器的基于试探的数据处理系统100的方块图。数据处理系统100通常包括以单片微机120形式存在的数据处理器、一个输入/输出装置160以及动态随机存取存储器(DRAM)170。微处理器120通常包括中央处理单元(CPU)122、存储器控制器126、标示为“XBAR”的纵横式交换机(crossbar switch)128以及三个标示为“HT”以表示超传输的主桥电路130、140与150,下面将进行详述。CPU 122是用以执行通称为x86指令集的指令的处理器。x86指令集是以美国加州圣克拉拉市英特尔公司首先制造的8086处理器的指令集为基础。然而CPU 122包括执行x86程序的许多复杂的高性能功能,其中x86程序包括管线与超标量设计程序。CPU 122包括至少一个用以储存频繁使用的数据的高速缓存124。在首选的形式中,CPU实际上包括两个一级高速缓存,其中一个用于储存指令而另一个用于储存数据,还包括一个由指令和数据流所共享的二级高速缓存。以这种形式,共享的二级高速缓存将储存具有注入属性的写入数据。然而,本发明应用于任何一个至少包含一个高速缓存的中央处理单元。
存储器控制器126是在微处理器120与DRAM 170之间进行数据传输的机构。存储器控制器126卸载来自CPU 122存储器存取的开始与中止的任务。存储器控制器126包括内部队列以允许外部总线到DRAM170的有效使用。在其他的实施例中,DRAM 170可由包括一个或多个附加高速缓存与主存储器的低级存储器系统、静态随机存取存储器(RAM)、非易失存储器等等所替代。
纵横式交换机128是为设计用以连接到微处理器120的内部总线的交换/多任务电路。
主桥电路130、140与150是通过输出通道132、142与152以及输入通道134、144与154分别独自连接微处理器120的外部装置。每一个主桥电路130、140与150是符合1.03版的超传输输入/输出链接规范(其著作权由超传输技术协会在2001年取得),且当使用1600MHz数据率的时候,其吞吐量可达到3.2GB/S。超传输技术是运用在两个独立单向的组线的基于包的链接技术。因此,例如,主桥电路130通过输出连接132和输入连接134与输入/输出装置160进行通讯。超传输连接名义上是点对点的连接两个装置。超传输链接也可以作为输入/输出通道,连接输入/输出装置和到主系统的桥。
超传输链接设计是用来在CPU、存储器以及输入/输出装置之间进行高效能传输和可延展的相互连接。超传输链接利用具有片内差分终结器(on-die differential termination)的低小幅度摆动差分信号技术以达到很高的数据率。超传输链接利用可延展频率以及数据宽度来实现可延展带宽。
输入/输出装置160是具有数据产生器功能的输入/输出装置。在本实施例中,输入/输出装置160是执行由IEEE 802.3委员会主办的电子和电气工程师协会(Institute of Electrical and ElectronicsEngineers;IEEE)所标准化且通称为“以太网络”的局域网络通讯协议的控制器。然而,本发明也可应用于其它的数据产生器。
在执行以太网络协议时,输入/输出装置160在运作中将周期性的接收帧。当已接收到一个帧时,在输入/输出装置160中的DMA控制器将通过发送特殊的具有注入的写入包将数据写入该高速缓存124中。在这种情况下,该数据帧是由两部分组成,其中一部分具有协议标头信息,而另一部分则具有有效负载数据。在另一实施例中,一个处理器处理该标头信息,而另一处理器可负责使用负载数据。然而在如图4所示的仅有一个处理器的系统中,该输入/输出驱动器和应用程序两者均在CUP 120上执行。
DMA写入是通过输入134利用超传输协议来完成的。主桥电路130负责接收数据并通过纵横式交换机128将该数据提供给存储器控制器126。存储器控制器126识别该包的具有注入的写入属性并将该数据储存到本地缓冲器中。存储器控制器126发送试探到CPU 120来通知CPU120现有的将要写入高速缓存124的数据。响应来自CPU 122随后的预提取读取信号,存储器控制器126将该数据发送到CPU 122,不执行写入数据到DRAM 170以及随后的从DRAM 170读取数据,而将该数据储存到高速缓存124。
借助于图5将更能够了解此种操作方式,图5例示了图4中的数据处理系统100在执行具有注入的写入操作时数据流的方块图180。在图5中用虚线表示数据流。因此该数据流从输入/输出装置160处开始流到主桥电路130,接着通过纵横式交换机128流到存储器控制器126,最后再通过纵横式交换机128从存储器控制器126流到CPU 122。
在存储器控制器126中具有注入的写入操作期间的数据流将被更详细的在图6中进行描述。图6例示了图4中的包括存储器控制器126的部分数据处理系统100的方块图。存储器控制器126通常包括一组读取请求缓冲器222、一组写入请求缓冲器224、多任务器226、DRAM控制器228、驱动器230、写入数据缓冲器242、请求定序缓冲器262、控制块264、驱动器244与246、读取数据缓冲器248以及复用器250。当存储器控制器126接收来自纵横式交换机128的存储器存取请求时,存储器控制器126将请求放于适当的读取请求缓冲器222或写入请求缓冲器224以及请求定序缓冲器262中。这些缓冲器储存地址以及与存取相关的序列信息。接着控制块264控制从缓冲器222与224读取请求顺序和提供给DRAM控制器228的请求顺序。由于这一规则提高了效能,这一机构允许存储器控制器126执行读取传送的旧写入数据的规则。若该存取请求是为写入存取,则在写入数据缓冲器242中相对应的缓冲器储存将被写入存储器的数据。控制块264使用该请求定序缓冲器262对存取进行适当的排列。驱动器230将地址输出给DRAM170。从缓冲器242读取数据并通过驱动器244依据相对应的地址将其驱动到DRAM数据总线上。在读取期间,读取输入数据是通过输入驱动器246从DRAM 170接收并储存到读取数据缓冲器248中。控制块264使被储存的读取数据由选择复用器250的第二输入端穿过纵横式交换机128传送至CPU 122。
为了响应接收具有注入的写入包,存储器控制器126储存写入地址并分别将数据写入缓冲器224和242中。该写入缓冲器结合多个相同地址的写入并监控所有的读取。重要的是,当读取在该写入缓冲器中读取命中(hit)时,该数据通过复用器250回送到纵横式交换机128且解除分配写入缓冲器的入口。如果写入缓冲器填满且该写入操作在该预提取读取到达存储器控制器126之前被执行,那么存储器控制器126直接从DRAM 170中读取数据。然而,实际上当该写入缓冲器被做的充分大时,将数据储存到DRAM 170是不期望常发生的。
图7例示了图4中的包括高速缓存124的CPU 122的部分方块图300。部分图300包括预提取器302、加载/储存单元304、复用器306、试探缓冲器308、未解决请求缓冲器310、牺牲缓冲器(victim buffer)312、试探响应数据缓冲器314、复用器316、读取响应数据缓冲器318、存储数据缓冲器320、复用器322。试探是从纵横式交换机128中接收并储存在缓冲器308中。当处理过后,试探可导致通过复用器306的来自高速缓存124的读取请求。如果该数据存在于高速缓存中,将导致试探命中。除了试探开始的对高速缓存124存取以外,复用器306也将加载/储存单元304所生成的储存请求提供给该高速缓存124的读取请求。在写入的情况下,加载/储存单元304提供地址给高速缓存器124的写入端口并将该数据储存到储存缓冲器320中,在缓冲器320中,该储存数据通过复用器322输入到高速缓存124。由于从低级存储器系统读取,高速缓存124也接收读取响应数据并将该数据储存到读取响应数据缓冲器318中,在缓冲器318中,该数据通过复用器322第一个输入被输入到高速缓存124的写入数据端口中。
响应具有注入的写入包而发送的试探预提取,依照虚线所示的路径,通过试探缓冲器308送到预提取器302。为响应预提取试探,第一CPU 122通过试探响应数据缓冲器314发送试探响应,并接着发送预提取加载到存储器控制器126中。当该预提取读取数据返回时,其被储存到缓冲器318中,随后通过复用器322的第一输入端被写入到高速缓存124中并以已修改的状态安装在适当的缓存行中。随后输入/输出驱动器软件将很快使用该数据。该缓存行是置于M状态来确保当缓存行通过使用如LRU等高速缓存的一般替换规则而被解除分配时,缓存行将被写入存储器中。
表1例示了多种的试探类型以及在微处理器120中相关的有效的响应表1

存储器控制器126发送具有预提取属性的试探来响应具有注入的写入包。高速缓存124动作依据如表1所示的牺牲状态而不同。
图8例示了超传输包200的图表,据此输入/输出装置160可形成具有注入写入包。所采用的包结构是大家知道的地址请求包。该包的长度是四个字节并有附加的四字节地址延伸。依据本发明,输入/输出装置160通过如下所述的添加新的具有注入写入编码到指令字段中,以发送具有注入写入属性信号。
与此包相关的各个字段将作如下说明。SeqID〔30〕(是通过连接位-时间0的位7与6以及位-时间1的位6与5所形成)为标记请求群组,该请求群组通过装置作为定序序列的一部分发送并且必须严格地定序在虚拟信道中。所有的在相同的输入/输出流以及虚拟通道中的请求,具有一致的非零SeqID字段,必须维持所有请求的顺序。0x0的SeqID值是保留以表示处理并非该序列的一部分。尽管该些处理可以被如超传输标准第6章中所述的原因而被定序,然而具有此值的处理并不具有序列定序规则。
Cmd〔50〕字段是用来表示在超传输协议下的不同的指令,2001超传输标准定义多种Cmd〔50〕字段的编码并保留其它编码。表2显示定义并保留的编码。
表2


PassPW表明此包是被允许在相同输入/输出流的发布请求通道中通过。否则,此包必须保持排在这些包的后面。这个位必须清零以维持类似超传输技术的定序的标准个人计算机接口(PCI)。不需要类似个人计算机接口(PCI)的定序系统可以将PassPW设成较高效能。
UnitID〔40〕字段用以识别处理中的参与者。由于所有传输的包不是传送到结构端点的主桥电路就是从结构端点的主桥电路,或者是所包含的源或目标节点传送。该”0”值是为主桥电路的UnitID保留的。更详细的UnitID使用细节请参阅2001超传输标准章节4.2。具有多个逻辑输入/输出流的节点可拥有多个UnitID值。
超传输协议保留两个字节,在位时间2与3期间传送,是指令所特有的。
Addr〔392〕是代表请求所存取的双字符地址。并非所有地址位是包括于所有的请求类型中。在需要较细单位的情况下,可采用字节屏蔽。
输入/输出装置160适宜得通过利用任何一个Cmd〔50〕标示有”保留的输入/输出(Reserved-I/O)”字段定义来发送具有注入写入的请求信号。然而,此外,由于仅有非常少的保留指令编码用于输入/输出装置,新的具有注入写入包通过采用一个保留的输入/输出指令编码与其它新包格式相结合。可通过利用该四位SeqID字段来编译附加的情况,从而在不同的其他新包类型中进行分辨来实现这个目标。
图9例示了依据本发明,基于目录的数据处理系统中的数据流和控制信号相关的时序图500。在本实施例中,在节点B的低级存储器系统维持基于目录的高速缓存一致性协议。如前所述,数据产生器、低级存储器系统以及具有高速缓存的处理器可以占据不同的节点。
为响应在节点C上的提供的具有注入写入包的数据产生器,如箭头502所示,在节点B上的目录/存储器控制器在时间周期504期间内检查其本身的目录以确认相关的一个或多个高速缓存(后面详述)的存址线的存在。若已经分配给前述的一个或多个高速缓存入口,并且其处于特定的状态(如已修改的或独占的状态等)下,如同通讯接收器的循环缓冲器的情况,那么该存储器控制器发送试探预提取到节点A,如箭头506所示,来通知将有数据注入到节点A上的高速缓存中。然而,不同于图2所示的系统,图9的基于目录的系统保持追踪系统中所有处理器中的一个处理器,其中该处理器已经高速储存数据,并代替广播预提取发送定向的预提取到数据拥有者。节点A(该数据拥有者)将试探响应作为响应,如箭头508所示。数据被保存在存储器控制器的储存缓冲器中,且延迟写入低级存储器系统。随后在节点A上的数据处理器发送数据预提取读取到节点B,如箭头510所示。节点B的存储器控制器在时间周期512期间,把从该储存缓冲器读取的数据元作为响应,并发送该数据到节点A,如箭头514所示。若在节点A上的数据处理器可以正常的发送该预提取读取,节点B的存储器控制器可在不存取主存储器的情况下发送数据。然而,如果节点B的存储器控制器需要再利用该储存缓冲器作为其它用途,如当所有其它的写入缓冲器在该处理器发送该预提取之前是满的,为了满足正常写入请求时,该存储器控制器将替代的将该数据写入存储器中。最后节点A在时间周期516期间完成缓存行的填充。当随后数据在节点A被使用时,利用如最近最少使用算法等高速缓存的解除分配规则,在一般处理流程期间可有效的解除该缓存行的分配。因为该数据元仅被处理器使用一次,在该高速缓存中该缓存行将不会已修改,而且并不需要将该缓存行写回主存储器。因此这种方法正常的排除任何写入主存储器,而且仅使用少量的带宽即可供节点B的存储器控制器执行目录读取以及读取缓冲存储器操作。
图10例示了依据本发明基于目录的数据处理系统600的方块图。数据处理系统600包括N个节点通过系统互连602相互连接。图10中所示是包括有分别被标示“节点1”、“节点2”、“节点3”、“节点N-1”以及“节点N”的604、606、608、610以及612示范节点。节点608被较为详细的显示。节点608包括分别具有高速缓存624与628的两个CPU核心即622与626的处理器620、标示为“XBAR”的纵横式交换机630、标示为“HT”的输入/输出控制器632、网络接口634以及目录/存储器控制器636。输入/输出控制器632是通过外部接口连接到相关的输入/输出装置640。输入/输出控制器632执行通称非一致性的超传输协议。网络接口634连接到系统互连602并执行通称一致性的超传输协议。目录/存储器控制器636是连接到以DRAM存储器650形式存在的低级存储器系统。
在操作中,节点608执行高速缓存一致性非均匀存储访问(cachecoherent non-uniform memory access,CC NUMA)结构。在系统中的每一个如节点608的节点包括类似处理器620的输入/输出装置和处理器,其处理器包括具有高速缓存的CPU、DRAM控制器、目录控制器。当高速缓存储存数据处于已修改(M)或独占(E)状态时,节点608可直接注入写入数据到其本身的局部高速缓存,或通过系统互连602间接的注入写入数据到位于其它节点上的高速缓存中。储存该数据的高速缓存负责满足对该缓存行连续的读取或写入。本高速缓存机构的目的是为了减少DRAM带宽请求,如图9所示,并当该缓存行已存在于该高速缓存中时,发送直接存储器存取写入数据到系统中任何的高速缓存,从而更新已存在于高速缓存中的数据。
节点608支持目录中存在的每一个缓存行三个基本状态。无效(Invalid,I)状态用以指示该缓存行没有缓存到系统中任何一个高速缓存中。无效状态的缓存行的读取请求将导致到该低级存储器系统存取。未被高速缓存储存(Uncached,U)的状态用以指示高速缓存代理以只读方式读取该缓存行,并回写到低级存储器系统中,且并没缓存储存到系统中的任何高速缓存。已修改/独占(Modified/Exclusive,ME)状态表示作为读取/写入存取的缓存行已通过高速缓存代理被读取。当用于特定缓存行的目录入口是处于ME状态时,高速缓存器代理在其本地高速缓存中可以具有处于或者E状态或者M状态的数据。如果该高速缓存代理具有处于E状态的缓存行,那么它具有其缓存行拷贝的读取/写入许可,但它还未写入缓存行。如果该高速缓存代理具有处于M状态的缓存行,则其具有缓存行拷贝的读取/写入的许可,而且其已修改了该数据。当该高速缓存代理在其高速缓存中具有处于E状态的缓存行,那么存储器中的数据是旧的。缓存行在高速缓存代理器中首先被置于E状态,随后当其已修改时则被转换成M状态。在该系统中只有一个节点具有对缓存行的读取/写入存取。任何对于在目录中ME状态下的缓存行的读取请求必须首先检查以确认该系统中哪里有最新的拷贝。如果最新的数据是存于该处理器的高速缓存中,该处理器必须提供缓存行。若该处理器具有处于E状态的缓存行,则该处理器高速缓存中的缓存行被无效化(被置于I状态)且由存储器代理来提供。
当读取在ME状态下的缓存行时,该目录入口转换至拥有者(0)的状态,来表示在该存储器中是旧的数据而且有共享者。
当高速缓存具有只读的数据拷贝,且没有分配目录入口。该目录入口的不存在表示缓存行可能是储存在系统中。因此,没有在少数目录高速缓存中命中的储存,则广播试探给所有的高速缓存,将分享的拷贝变为无效。
目录的存在允许处理器620支持更常见的情况,其中在该情况下,图9中的节点A、节点B以及节点C是不同的,它们不需要发送广播试探以请求系统中所有的高速缓存检查该数据的存在。处理器620使用目录/存储器控制器636中的目录来判断缓存行目前被储存在哪里。如果该缓存行被储存而且是处于已修改或独占状态,那么来自输入/输出装置640的数据将存在于适当的高速缓存中。否则将被写入存储器中。
更特别的是,目录/存储器控制器636执行新的目录状态来支持这种机构。为响应输入/输出控制器632接收具有注入写入包到不具有目录入口的缓存行,目录/存储器控制器636将缓存行写入DRAM存储器650。如果而且仅仅如果目录入口能在不淘汰一个高速缓存入口的情况下(例如通过替换U或I入口)而生成,则该目录入口被生成为新的即写入(Written,W)状态。目录入口的”软件分配”(soft allocation)是被利用在此种情况中,来避免因注入写入破坏高速缓存中的操作设定所可能产生出的性能问题。当该CPU随后读取该缓存行时,该缓存行被置于另一新的状态,该新状态为保留(Reservation,R)状态,且该目录入口由写入状态转换到保留状态。后来在R状态的缓存行的写入是被直接注入到该处理器高速缓存中,而且该目录入口不执行主存储器的写入的情况下,转换到另一个新的修改(Modified,M)的状态。每当重写其中的高速缓存中的R入口时,该处理器提供替换通知。
图11例示了图10中目录/存储器控制器634中的入口650。其中每个入口与入口650类似,具有三个区位标记区位652、状态区位654以及一个拥有者区位656。该标记区位将物理地址与目录入口是相联系的。该拥有者区位在该缓存行是处于已修改或独占的或拥有的状态下表明该拥有者。需要三个附加的目录状态来执行此处具有注入写入机构W状态、R状态以及M状态。所有的状态区位所表示的目录状态列于下表表3,其中新的状态是以斜体字表示。
表3

为了支持这种采用目录的机构,引进了另外一个处理器高速缓存的状态,即“保留(Reservation,R)”状态。所有的处理器高速缓存状态设定列于表4中,其中新的状态是由斜体字表示。
表4

很明显的,前述有关具有注入写入发送信号是在符合超传输协议的前提下所作的讨论。然而于本发明的其他实施例中,其他发送具有注入写入条件信号的方法也是可被应用的。例如,区位的特定编码,现存或附加的输入/输出引脚等其他相类似的可以发送具有注入写入条件的信号。该具有注入写入的信号发送可通过在输入/输出DMA读取请求包中保留的或供货商规定的区位在其他的输入/输出总线,如PCI、PCI-X、PCIE上来实现。
当在首选的实施例的文章中描述本发明时,对于本领域技术人员而言,很显然可以进行不同的修改。例如,采用上述揭示方法的数据处理系统可适用于系统直接接口到主存储器以及低级高速缓存。此外,本发明也可适用于具有一个或多个高阶高速缓存的系统。主存储器可由DRAM、SRAM、非易失存储器、或其他类型的存储器。进一步,在等待预提取读取时暂存数据的多种方法也适用。因此,如权利要求所包括的本发明的所有的修改范围,都在本发明的权利保护范围内。
权利要求
1.一种数据处理方法,应用于包括有高速缓存(124,624)与低级存储器系统(170,650)的存储器分级的数据处理系统(100,600)中,包括以下步骤接收(52,502)来自数据产生器(160,640)的数据元,该数据元具有一个与其相关的具有注入的写入属性;发送(54,56,58,60,62,64,504,506,508,510,512,514)所述的数据元到高速缓存(124,624)而不用访问该低级存储器系统(170,650);以及更新(66,516)在所述高速缓存(124,624)中包括该数据元的至少一个缓存行。
2.根据权利要求1所述的数据处理方法,其中,接收(52,502)所述的接收数据元的步骤包括通过与超传输输入/输出链接规范1.03版本实质性兼容的链接来接收(52,502)所述的含有具有注入的写入属性的数据元的步骤。
3.根据权利要求3所述的数据处理方法,其中,接收(52,502)的步骤还包括请求包中从保留的命令区域编码中进行试探具有注入的写入属性的试探步骤。
4.根据权利要求1所述的发送(54,56,58,60,62,64,504,506,508,510,512,514)的步骤包括暂时存储(54,504)所述的数据元到缓冲器(242)中。
5.根据权利要求4所述的方法进一步包括在所述发送(54,56,58,60,62,64,504,506,508,510,512,514)步骤执行前,依据该数据处理系统(100,600)是否为另一用途而请求该缓冲器(242),来执行发送(54,56,58,60,62,64,504,506,508,510,512,514)步骤。
6.根据权利要求4所述的方法,其中所述的发送(54,56,58,60,62,64,504,506,508,510,512,514)步骤还包含如下的步骤发送(56,506)试探预提取到连接至该高速缓存(124,624)的中央处理单元(122,622);通过该中央处理单元(122,622)发出(60,510)读取请求以响应该试探预提取;发送(64,514)所述的数据元到该高速缓存(124,624)以响应该试探预提取;以及从该缓冲器(124,624)中移除(62,512)该数据元。
7.一种数据处理器(120,620),其包含中央处理单元(122,622),其包括高速缓存(124,624);主桥电路(130,632),其连接到该中央处理单元(122)且用来接收从数据产生器(160,640)来的数据元的具有注入的写入包;以及装置(126,636),其连接到所述的中央处理单元(122)、所述的主桥电路(130)以及低级存储器系统(170,650),用以发送所述的数据元到所述的中央处理单元(122,622),并在不访问所述的低级存储器系统(124,624)的情况下,将所述的数据元储存到该高速缓存(170,650)中。
8.根据权利要求7的数据处理器(120),其中所述的中央处理单元(122)适于启动预提取读取以响应正在接收的试探预提取,而且所述的存储器控制器(126)包括缓冲器(242),其中,所述的存储器控制器(126)储存来自所述的主桥电路(122)的数据元到该缓冲器(242)中,并提供该试探预提取到所述的中央处理单元(122)以响应接收所述数据元,以及提供来自该缓冲器(242)的数据元以响应来自该中央处理单元(122)的预提取读取。
9.根据权利要求7的数据处理器(120),其中所述的发送单元(126)包含目录/存储器控制器(636),其中所述目录/存储器控制器(636)响应所述的具有注入的写入包以检查其中目录/存储器控制器中的目录以确认与该数据元相关的缓存行的高速缓存状态是否是在预设的状态中,并为该高速缓存(624)所拥有,以及当确认的结果为“是”时,发送所述的数据元到所述的中央处理单元(622),以便在不访问该低级存储器系统(650)的情况下,将所述的数据元储存到该高速缓存中(624)。
10.如权利要求7的数据处理器(120),其中所述的主桥电路(130)适于通过与超传输输入/输出链接规格1.03版本实质兼容的链接规范与所述的数据产生器(160,640)连接。
全文摘要
一种数据处理系统(100,600),具有包括高速缓存器(124,624)和较低级的存储器系统的存储器分级结构。具有特殊注入写入属性的数据元是从如以太网络控制器的数据产生器(160,640)接收到的。该数据元被直接发送到该高速缓存(124,624)而不对该低级存储器系统(170,650)进行访问。随后该高速缓存(124,624)中至少一个包含有该数据元的缓存行被更新。
文档编号G06F12/08GK1754158SQ200380109292
公开日2006年3月29日 申请日期2003年12月22日 优先权日2003年1月27日
发明者W·A·休斯, P·康韦 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1