法律状态公告日
法律状态信息
法律状态
2017-12-29
授权
授权
2016-01-20
实质审查的生效 IPC(主分类):G06F12/08 申请日:20150730
实质审查的生效
2015-12-23
公开
公开
技术领域
本发明属于处理器技术领域,具体涉及一种无cache一致性协议的分布式共享片上存储结构。
背景技术
近年来,多核处理器由于其内在的并行性和优良的能量效率而受到业界广泛青睐。多核处理器一般采用共享存储架构设计,低延迟、高带宽、大容量的存储架构是设计的关键目标。
为了兼具主存的大容量和片上存储器的高速度优点,普遍引入存储器层次结构,利用访存数据的局部性原理,将主存数据映射到cache(超高速缓存)中,处理器直接对其高速读写。
现有多核处理器的存储层次结构中,每个核通过自身的cache访问主存数据,需要保证每个cache的数据都是主存的最新副本,带来cache一致性问题,需要引入复杂的硬件协议来维护cache一致。
主流解决方式有如下几种。
一是基于总线互连的多核处理器:监听协议(snoopyprotocol)。对某个cache的修改通过总线广播到其它cache中,作出相应的动作。有写-无效和写-更新两种基本方法。其优点是总线作为广播媒介通信效率高。但缺点也很明显:可拓展性差,并且导致额外的硬件和功耗开销。
另一种是基于片上网络互连的多核处理器:目录协议(directoryprotocol)。其采用分布式共享存储(DSM)。目录中,记录cache每个数据块的访问状态、在其它cache中的共享状态以及是否修改过等信息。优点是可拓展性好。缺点是判断复杂、通信开销大。
发明内容
本发明的目的在于提出一种可拓展性好、通信效率高的无cache一致性协议的分布式共享片上存储架构。
本发明提出的无cache一致性协议的分布式共享片上存储架构,基于簇状结构,cache仅映射本地主存块,同时可被其它核共享访存,从而避免cache一致性协议;本地核L1存储器一分为二:非缓存的存储器+cache,可以降低cache缺失率。此外,还支持直接存储访问(DMA)操作:在流应用中支持DMA直接对主存进行簇间大块数据搬移,适用于规模的拓展性。具体内容进一步介绍如下:
一、基于cache的本地映射,取消cache一致性协议:
对于包含N个处理器的簇,N个主存块#0,#1,#2,…#N分别分布在N个处理器#0,#1,#2,…#N的私有区域(簇内其他处理器无法直接通过访存得到),由此形成一个分布式存储架构。参见图1所示,图1中N为4;
簇内每个处理器还配有一个本地共享cache。在图中本地共享cache#x只映射主存块#x(即本地),且在簇内可被所有簇内其他处理器共享访问。参见图2所示;
当处理器通过访问本地共享cache来访问本地主存块,若地址落入其它主存块,则通过硬连线的方式通过访问cache#x来访问对应的主存块#x。有可能发生同一时间,不同核对同一个cache的竞争读写的情况,这时,采用以本核为起点,顺时针方向降低优先级的方法,来解决读写竞争;
当处理器访问非本地主存块:对于cache#x,接受来自本地核及其他核的地址请求,经过仲裁后将地址发给cache#存储体,cache返回数据后根据先前的仲裁结果返回给对应处理器。图2中,以#1核为例,接受来自本地核及其他核的地址请求,经过仲裁后将地址发给cache#1存储体,cache返回数据后根据先前的仲裁结果返回给对应处理器;
二、本地核L1存储器一分为二,降低cache缺失率:
L1存储器空间一分为二:一部分为非缓存的数据块(简称非缓存块,即程序一次写入,直到程序结束前,都不会被擦除),另一部分为上述所提的本地共享cache。两者都是簇内其他处理器通过访存便可读取的。参见图3所示;
这其中,非缓存块用来保存软件程序编译产生的静态初始化数据,和程序运行过程中栈空间的动态数据,以及多核之间需要快速共享的数据,有利于降低整体访存的cache缺失率;
编程上,本地的非缓存块和主存块地址编码连续,简化编程模型;
三、支持簇间直接存储访问(DMA)操作:
为了提高簇间主存之间大块数据传输的速率,提出了簇间直接存储访问(DMA)操作。DMA控制器和cache控制器对主存块竞争访问,DMA用于簇间主存之间大块数据传输。其优点是缓解大块数据传输对cache和处理器的压力。具体来说就是,当处理器译码出来是DMA操作,即将主存读取选择通道通过选择器切换到片上网络端口,同时发送配置包通知目标核停止并等待接收数据,从而跨簇调用存储。
附图说明
图1为带二级存储的处理器架构图。
图2为非本地主存块读取仲裁块。
图3为本地核L1存储器结构图。
图4为簇间直接存储访问(DMA)操作图。
具体实施方式
首先,程序会通过编译器编译成机器码。这其中生成的静态初始化数据等共享数据会被放置在如图3所示的L1存储器中的非缓存块。其他的放置在相应的主存块中,两者的地址编码是连续,方便编程模型。
如图1所示,以一个包含4个处理器的簇为例,4个主存块#0,#1,#2,#3分别分布在4个处理器#0,#1,#2,#3的私有区域(簇内其他处理器无法直接通过访存得到),由此形成一个分布式存储架构。
如图2所示,簇内每个处理器还配有一个本地共享cache。在图中本地共享cache#x只映射主存块#x(即本地),且在簇内可被所有簇内其他处理器共享访问。
当处理器通过访问本地共享cache来访问本地主存块,若地址落入其它主存块,则通过硬连线的方式通过访问cache#x来访问对应的主存块#x。有可能发生同一时间,不同核对同一个cache的竞争读写的情况,将采用以本核为起点,顺时针方向降低优先级的方法,来解决读写竞争。
当处理器访问非本地主存块:如图2所示,以#1核为例,接受来自本地核及其他核的地址请求,经过仲裁后将地址发给cache#1存储体,cache返回数据后根据先前的仲裁结果返回给对应处理器。
在图2中,当处理器1要访问其自己的主存块#1时,当译码出的地址落在主存块#1的地址空间内,并且cache#1上无有效数据,主存块#1调出相应数据块到cache#1上,供处理器读取。但若此时,处理器#0,#1,#2,#3都读写cache#1上的数据,优先让标号最小的处理器(#0)读写,然后依次是较小的#1,#2,#3。具体上实现是由一个优先编码选择器MUX实现(优先级依次从0降至3),当判断地址总线P0-P3有有效信号,便响应最高级处理器,并将数据读给对应处理器,当完成相应操作,释放对应地址总线信号,让下一个较低处理器来读写对应cache。
如图3所示,L1存储器空间一分为二:一部分为非缓存的数据块(简称非缓存块,即程序一次写入,直到程序结束前,都不会被擦除),另一部分为上述所提的本地共享cache。两者都是簇内其他处理器通过访存便可读取的。
这其中,非缓存块用来保存软件程序编译产生的静态初始化数据,和程序运行过程中栈空间的动态数据,以及多核之间需要快速共享的数据,有利于降低整体访存的cache缺失率。
编程上,本地的非缓存块和主存块地址编码连续,简化编程模型。
为了提高簇间主存之间大块数据传输的速率,提出了簇间直接存储访问(DMA)操作。DMA控制器和cache控制器对主存块竞争访问,DMA用于簇间主存之间大块数据传输。其优点是缓解大块数据传输对cache和处理器的压力。具体来说就是,当处理器译码出来是DMA操作,即将主存读取选择通道通过选择器切换到片上网络端口,同时发送配置包通知目标核停止并等待接收数据,从而跨簇调用存储。
如图4所示,当簇0的处理器#0需要读取簇1中的处理器#2的内存主内存块#2时,簇0的处理器#0会译码出来相应的地址,图中的数据通路选择MUX会根据相应的地址,配置簇0的主存块#0到簇1的主存块#2的路径。具体来说是,簇0的处理器#0会通过片上网络路由器发送配置电路包给簇1的处理器#2,让其主存块的数据通路MUX选择连接DMA控制器,与此同时簇0的处理器#0也将其其主存块的数据通路MUX选择连接DMA控制器。当双方都配置完毕,会通知簇1的处理器#2,让其将主存块#2中相应的数据,通过片上网络发送至主存块#0中,从而完成跨簇的内存直接调用。
机译: CACHE存储器一致性协议的非SPEC分布式冲突解决方案
机译: CACHE一致性协议的非规划分布式冲突解决方案
机译: CACHE一致性协议的非规划分布式冲突解决方案