发明名称 一种CC-NUMA系统中结点控制芯片目录Cache的方法
摘要 本发明提供一种CC‑NUMA系统中结点控制芯片目录Cache的方法,设计实现一个目录Cache模块,完成并优化对存储器的访问控制。在计算机体系结构的研究与设计中,经常会考虑到应用程序访存的局部性。其中,最近访问的数据会在不久后再次被访问这被称为时间局部性,基于这个特性,在基于目录的CC‑NUMA系统中引入Cache来缓存目录项,并采用最近最少使用(Least Recently Used,LRU)替换算法,可以很好地降低目录访问的压力,缓解存储器访问的瓶颈效应。
申请公布号 CN102708190B 申请公布日期 2016.09.28
申请号 CN201210149227.3 申请日期 2012.05.15
申请人 浪潮电子信息产业股份有限公司 发明人 李拓;李仁刚;王恩东;胡雷钧;秦济龙
分类号 G06F17/30(2006.01)I;G06F12/0873(2016.01)I 主分类号 G06F17/30(2006.01)I
代理机构 代理人
主权项 一种CC‑NUMA系统中结点控制芯片目录Cache的方法,其特征在于在CC‑NUMA系统中的结点控制芯片中引入Cache模块来实现和优化Cache一致性协议,不仅降低了存储器的访问压力,而且提高了结点控制器的处理效率,降低Cache一致性协议处理的开销,具体内容如下:设计一个目录Cache模块,完成并优化对存储器的访问控制:在计算机体系结构的研究与设计中,经常会考虑到应用程序访存的局部性,其中,最近访问的数据会在不久后再次被访问,这种情况被称为时间局部性,基于这个特性,在基于目录的CC‑NUMA系统中引入Cache来缓存目录项,并采用最近最少使用替换算法,来降低目录访问的压力,缓解存储器访问的瓶颈效应,目录Cache用于缓存最近经常使用的目录条目,目的是减小目录的访问延迟,减少CC报文的协议处理时间,提高结点控制器对报文处理的吞吐量,所有进入结点控制器的CC一致性报文,都必须访问目录Cache,以获得数据对应的目录,以便进行后续的协议处理,由于目录Cache的容量有限,不可能保存所有的目录条目,因此,当CC报文需要的目录条目在目录Cache中没有命中时,则需要访问外部存储器以获得目录,同时,为了提高并行访问的效率,采用非阻塞工作方式,即前一个未完成的访问操作不会阻塞后续访问的执行;而在目录Cache与存储体的映射方面,采用8路组相联的方式,从实际应用的角度来看,8路组相联在降低失效率方面的作用已经和全相联一样有效,能更好地减少系统的开销,实施步骤如下:目录Cache模块由4个目录Cache体、1个数据旁路模块以及1个控制与状态寄存器模块构成,其中:1) 4个目录Cache体是相互独立,对应4块存储地址,其中每个目录Cache体的设计都是完全相同的,容量为128KB,映射方式为8路组相联,每个Cache行大小为64B,即512b,这是由与存储控制器接口的宽度所决定的,共计256行,目录Cache体采用最近最少使用替换算法,提高芯片性能,并采用非阻塞工作方式,即前一个未完成的访问操作不会阻塞后续访问的执行;为了增加系统的容错性,整个模块中还包含一个目录数据旁路模块,处于调试状态时,通过目录数据旁路模块的数据通路来传送数据,为了简化实现,减少逻辑资源的占用,采用阻塞工作方式,即所有的访问操作顺序执行,在前一个操作未完成之前,后面的操作不会流入,等待前面的操作完成;为了增加可控性与可观察性,模块中包含一个控制与状态寄存器模块CSR,保存用户设置的控制信息与每个目录Cache体的错误状态信息;在此基础上,目录Cache的操作包括两种:一种是读目录,二种是存目录,下面分别介绍这两种操作的详细过程:对于一个读目录操作,根据是否命中,分为下面两种情况来处理:1)若命中,则直接从返回对应的4字节(32b)的数据;2)若没有命中,则发出一个访存的读请求,载入一个Cache行的数据,创建一个Cache行的目录项,而后根据请求报文的地址的最低位,确定相应的32位目录项,返回数据;对于一个存目录操作,根据是否命中,以及是否需要替换的因素,分为下面三种情况来处理:1)若命中,则直接将请求报文中的32位目录数据写入,等待以后替换时才真正写入外部存储器;2)若未命中,但Cache行中有空余项,则向存储控制器发出一个读命令,载入一个Cache行的数据,创建一个Cache的目录项,而后根据请求报文的地址的最低位,将报文中的32位目录项写入Cache行的相应位置,等待以后替换时才能够真正写入外部存储器;3)若未命中,且Cache行已满,则根据最近最少使用算法,选择一个存储中的Cache行替换出阵列,并将替换出的Cache行的数据写入对应的外部存储器;而后向存储控制器发出一个读命令,载入一个Cache line的数据,创建一个Cache的目录项;而后根据请求报文的地址的最低位,将报文中的32位目录项写入Cache行的相应位置;需要指出的是,对于目录Cache体和数据旁路模块,上述所有操作的不同之处在于:首先,在数据旁路模块中,采用先来先服务FCFS的策略,严格地按照顺序执行,不允许乱序,后面的操作要等待前面的操作完成后,才能被处理;其次,数据旁路模块中不存在多个目录Cache行,每次读写都必须从存储器中读取相对应的一个Cache行。
地址 250014 山东省济南市高新区舜雅路1036号