共享存储控制器及使用共享存储控制器的方法与流程

文档序号:14010987阅读:303来源:国知局
共享存储控制器及使用共享存储控制器的方法与流程

相关申请的交叉引用

本申请要求于2015年7月13日提交的、申请号为14/797,620、名称为“共享存储控制器及使用共享存储控制器的方法”的美国非临时专利申请的优先权,其全部内容通过引用并入本文。



背景技术:

多核片上系统(system-on-a-chip,soc)的普遍性正在增加。典型的多核soc包括多个主设备(master),如共享存储器空间的处理内核。主设备可以是多种处理设备,如为微处理器内核、数字信号处理器(digitalsignalprocessor,dsp)、硬件加速器(hardwareaccelerator,hac)等等。共享存储器也可以采取各种形式,如闪存或动态随机访问存储器(dynamicrandomaccessmemory,dram)等等。共享存储器通常被划分为多个物理存储块。多个处理内核的每个通过共享存储控制器访问共享存储器。共享存储控制器调节各种主设备和多个存储器物理块间的数据流。共享存储控制器往往是soc性能的瓶颈。



技术实现要素:

公开的实施例在此提供了一种共享存储控制器和控制共享存储器的方法。

控制共享存储器的实施例方法包括以下内容。从主设备接收访问共享存储器的事务。将该事务为各自的事务划分为节拍级存储器访问命令。每个事务被划分为至少一个节拍级存储器访问命令,并且至少一个该事物被划分为多个节拍级存储器访问命令。为每个事务访问服务质量。基于各自的事务的服务质量,仲裁与事务相关联的节拍级存储器访问命令。基于仲裁节拍级存储器访问命令的结果,调度该节拍级存储器接入命令至共享存储器。

实施例包括用于共享存储器的控制器。该控制器包括事务扫描器,事务扫描器被配置用于扫入事务以访问共享存储器并且将该事务划分为节拍级存储器访问命令。每个事务被划分为至少一个节拍级存储器访问命令,并且至少一个该事务被划分为多个节拍级存储器访问命令。该控制器还包括命令超级仲裁,该超级命令超级仲裁包括对应共享存储器中的多个共享存储块的多个命令仲裁。该命令超级仲裁被配置用于为每个事务访问服务质量,基于多个事务中的每个的服务质量,仲裁与该事务相关联的节拍级存储器访问命令,以及基于仲裁节拍级存储器访问命令的结果,将节拍级存储器访问命令调度至共享存储块。

实施例包括片上系统(systemonachip,soc),该soc包括被配置用于生成各自的读/写事务以访问共享存储块的主设备的共享存储块,以及耦合在共享存储块和主设备之间的共享存储控制器。共享存储控制器包括事务扫描器和与共享存储块的对应的命令仲裁。该事务扫描器被配置用于扫入并且将读/写事务划分为节拍级读/写命令。该事务扫描器被配置用于将读/写事务中至少一个划分为多节拍级读/写命令。该命令仲裁器被配置用于为每个读/写事务访问服务质量以及基于每个读/写事务的服务质量仲裁与读/写事务相关联的节拍级读/写命令,产生与各自的共享存储块对应的节拍级读/写命令序列。该命令仲裁被进一步配置用于将节拍级读/写命令序列调度至各自的共享存储块。

提供的本发明内容用于介绍将在下文的具体实施方式进行进一步地详细描述的简化形式的概念的选择。本发明内容不旨在确定本发明的主要特征或基本特征,也不意旨用来作为确定本发明的范围的辅助。本发明不限于解决在此背景中指出的任何或所有不足的实施方式。

附图说明

本公开的多个方面通过示例示出并且不受附图的限制,对于附图,相同的附图标记指代相同的元件。

图1为soc的一个实施例的框图,其中共享存储控制器或控制共享存储器的方法可以被体现或实施。

图2为图1共享存储控制器的一个实施例的框图。

图3为三个共享存储器事务的图解。

图4为图3共享存储器的控制器的实施例流程的共享存储器事务的图解。

图5为命令仲裁器的一个实施例的图。

图6为命令仲裁器的另一个实施例的图。

图7为控制共享存储器的方法的一个实施例的流程图。

图8为基于为各自的事务的qos仲裁节拍级存储器访问命令的方法的一个实施例的流程图。

图9为对事务访问qos以及基于qos仲裁与事务相关联的的节拍级存储器访问命令的过程的一个实施例的流程图。

图10为对事务访问qos的过程以及基于qos仲裁与事务相关联的的节拍级存储器访问命令的过程的另一个实施例的流程图。

图11a为命令仲裁器以及块控制器耦合到物理存储块的一个实施例的图。

图11b为命令仲裁器以及块控制器耦合到物理存储子块的的另一个实施例的图。

具体实施方式

本公开,概括地叙述了,涉及访问共享存储器的技术。在拥有至少一个主设备(如处理器)、共享存储器和共享存储控制器的典型的soc,主设备通过事务访问共享存储器。该事务可以是存储器访问命令,如读命令或写命令。主设备生成读命令或写命令并将其发送至共享存储控制器。术语读/写命令将被用于此处指代命令,该命令要么是读命令要么是写命令。如果限于单个处理内核,简单地执行读/写命令并访问存储器。在多核soc中,每个内核可以同时生成读/写命令,每个命令对应于事务。仲裁多个读/写命令被以确定哪个命令被实施以及何时被实施。

一个事务旨在读取或写入共享存储器一定量的数据。在给定的时钟周期中,在给定的存储器的物理块中读取或写入的数据量一般受限于将共享存储器耦合到soc的总线大小。如果总线是八位宽,那么八位(1字节)的最大可以被写入每时钟周期的给定的存储器的物理块。同样,如果总线是32位宽,那么最大为32位(4字节)。每个事务可以被分成更小的部分以适合总线宽度。这些更小的部分的每个被指代为节拍,其可以具有与总线宽度匹配的大小。例如,为共享存储器拥有八位总线宽度的soc上,为共享存储器读或写64位数据的事务被划分为八个节拍,每个节拍具有八位的大小。事务的每个节拍可以独立寻址,这意味着给定的事务可以引起一个或多个存储器的物理块读取或写入数据。存储器的块可以绝对寻址,或者可以通过存储块号和块内的偏移量来寻址。此外,某些类型的存储器可以处理多个同时读和写命令,而其他的可以处理仅一个读或写命令,并且其他的可以处理仅一个读和一个写。

典型的共享存储控制器依据交换结构来调节多个主设备、共享存储控制器和共享存储器间的读/写命令和数据流。一些传统的交换结构仲裁事务级粒度中由多个主设备产生的流量,降低了多核soc的性能,特别是读和写访问延迟。首先允许一个事务访问共享存储器,然后通过交换结构允许另一个事务访问共享存储器。如上所述,在多核soc上,多个事务可以同时到达交换结构。例如,假设另一个32位的事务和上述64位事务同时到达。还假设64位事务是更高优先权。在这种情况下,在32位事务被调度到共享存储器之前,32位事务要等待64位事务去完成。

一些传统的多核soc利用交换结构限制事务的限制仲裁粒度大小以减少存储器访问延迟。例如,一个大的高优先权事务可以占用共享存储控制器大量的时间,导致所有其他事务的高延迟。

公开的实施例在此提供了一种共享存储控制器,该共享存储控制器被配置用于同时从一个或多个主设备(例如,处理内核)扫入主动命令,并执行并行节拍级仲裁。此外,共享存储控制器可以采用交叉存储器,该交叉存储器允许节拍级读/写命令的并行调度至存储器的各种物理块中。在可选的实施例中,存储器可以被线性组织。

在一些实施例中,共享存储控制器是服务质量(qualityofservice,qos)感知的。一个实施例的共享存储控制器基于与节拍级存储器访问命令相关联的事务的qos仲裁节拍级存储器访问命令。这提供了进一步的性能改进。例如,对于一个主设备而言,可能更重要的是,该事务的某部分尽可能快的完成,甚至以该事务的其他部分较慢完成为代价。对于另一主设备而言,整个事务尽快完程可能是更重要的。某些实施例的共享存储控制器选择针对主设备需要的节拍级仲裁方案。

在一个实施例中,共享存储控制器是延迟感知的。响应于节拍级存储器访问命令等待被调度至共享存储器的时间的增加,共享存储控制器增加了节拍级存储器访问命令的调度权重。这可以缓解存储器访问互斥等待。

在一个实施例中,共享存储控制器是关键的节拍感知的。共享存储控制器可以将更高的调度权重分配给对事务更加关键的节拍级存储器访问命令。这使得共享存储控制器能够更快地向主控制器返回更多关键的数据。

还有更多关于共享存储器如何是qos感知的示例。例如,由主设备发送给共享存储控制器的每个事务可能有时间预算。某些实施例的共享存储控制器升级节拍级命令的调度以帮助满足事务的时间预算。

在某些实施例中,共享存储控制器是带宽感知的。例如,共享存储控制器感知被分配至各种类型事务的带宽。共享存储控制器可以节流节拍级存储器访问命令以帮助执行带宽分配。

图1是soc100的一个实施例的框图,soc100中的共享存储控制器或控制共享存储控制器的方法可以被体现或实施。soc100包括由互联140如总线、网络(例如,分组网络)等耦合到共享存储控制器120的共享存储器110。soc100还包括dsp130-1、dsp130-2、dsp130-3、cpu132-1、cpu132-2和硬件加速器(hardwareaccelerator,hac)134-1,这里将被指代为“主设备”。其他的实施例可以包含任意数量和类型的主设备(如处理器、处理器内核、cpu、dsp和hac)。

主设备与共享存储控制器120在互联135上进行通信。互联135可以通过一个或多个总线、一个或多个网络(如分组交换网络)或者总线和网络的一些组合实现。在互联135中的各种总线的总线宽度可能会或可能不会和其他总线一样。例如,一些互联中的总线可能是32位宽,而其他的是64位宽。因此,作为一个示例,一个主设备可以在32位总线上通信,而另一个主设备可以在64位总线上通信。作为一种可能性,注意,共享存储控制器120可以直接连接到一个或多个主设备。互联140可以具有与互联135的总线宽度相同或不同的总线。同样,在互联130和140中的各种总线和网络可以遵守相同或不同的协议。在一个实施例中,一个或多个主设备被配置通过点对点直接连接到共享存储控制器120。当使用节拍级仲裁的实施例时,这可以帮助去实现高性能。

在图1的实施例中,共享存储器110、共享存储控制器120、dsp130-1到130-3、cpu132-1、cpu132-2以及hac134-1可以在一个共同的频率下定时,或可以独立地定时。同样,共享存储器110、共享存储控制器120、dsp130-1到130-3、cpu132-1、cpu132-2和hac134-1可以被同步地或异步地定时。如果同步定时,共享存储器110和共享存储控制器120的时钟速度与dsp130-1到130-3、cpu132-1、cpu132-2和hac134-1的时钟速度成比例。此外,每个可以在不同的频率下定时,并且如果异步定时,具有不同的时钟相位。例如,在一个实施例中,假设dsp130-1到130-3在频率f处被定时。共享存储器110和共享存储控制器120可以在1/2f处被定时。在另一个实施例中,共享存储器110可以在1/2f处被定时,而共享存储控制器120在1/4f处被定时。特定实施例的时钟速度可以被确定以平衡功率的性能,如超频设备往往浪费功率并且低频引起延迟。

dsp130-1到130-3、cpu132-1、cpu132-2和hac134-1中每个可以生成发送到共享存储控制器120的读/写命令。每个命令对应于通过互联140读取或写入共享存储器110的事务。在一个实施例中,共享存储控制器120被配置用于同时扫入所有主动读/写事务并将它们划分为节拍级存储器访问命令。每个读/写事务可以被划分为一个或多个节拍级存储器访问命令。例如,读事务可以被分成八个节拍级读命令。共享存储控制器120被进一步配置用于在节拍级命令执行节拍级仲裁。节拍级仲裁减轻了具有任何一个事务经历大延迟的机会。在共享存储器110包括物理存储器库的实施例中,节拍级仲裁进一步允许节拍级存储器访问命令并行调度至各种物理存储器库。

一些实施例的共享存储控制器120是质量服务(qualityofservice,qos)感知的。例如,共享存储控制器120感知主设备和/或来自主设备的事务的一个或多个qos参数。qos参数可以包括,但不限于,优先权、时间预算和带宽分配。

在一个实施例中,共享存储控制器120被配置用于将不同的调度权重分配给与相同事务关联的不同节拍级存储器访问命令。例如,节拍级存储器访问命令中的一个可以比给定的事务中的其他的命令更重要。分配给节拍级存储器访问命令更高或更大的调度权重允许它比该事务中的其他的命令完成的更快。此外,在事务中分配较低的调度权重给其他节拍级存储器访问命令可以防止或至少减少来自不同事务的阻碍节拍级存储器访问命令的不太关键的节拍级存储器访问命令的机会。

作为另一个示例,共享存储控制器120被配置用于基于节拍级存储器访问命令被调度至共享存储器110前等待的时钟周期,为节拍级存储器访问命令分配调度权重。在一个实施例中,节拍级存储器访问命令已经等待的时间越长,调度权重越高。这确保了较低优先权的节拍级存储器访问命令将不必为被发送至共享存储器110中等待过多的时间。

在一些实施例中,共享存储控制器120还为每个事务将来自共享存储器110的节拍级响应组合一个或多个响应。例如,鉴于共享存储控制器120被划分为八个节拍的读事务,读数据在共享存储器110中的各种物理存储块中检索八次。共享存储控制器120可以收集这些八节拍读取数据响应的每个,并将它们组合成读事务的单个读数据响应。共享存储控制器120可以随后将读取数据返回给命令事务的任一个主设备。

然而,注意,共享存储控制器120不需要连续发回所有的读数据。在一些情况下,对于给定的事务的读数据的关键部分可能从共享存储器110返回,而该事务读数据的不关键部分尚未被共享存储器110检索到。在这种情况下,共享存储控制器120可以为事务将从少于所有节拍级响应的将读数据包起来并将数据发送给主设备,以使得主设备更快的接收最关键的数据。响应于从共享存储器110中被检索的数据,共享存储控制器120可以随后发送与事务相关联的不关键的读数据。

在另一个示例中,给定共享存储控制器中断至八次的写事务,可以在共享存储器110的八个各种目的的物理存储块中接收到确认。在一些实施例中,共享存储控制器120收集八节拍写响应中的每个并将它们组成写事务的单个写响应。

图2为图1共享存储控制器120的一个实施例的框图。共享存储控制器120包括事务扫描器120、命令超级仲裁器220、组合器240和管理器260。共享存储控制器120被耦合至n个物理存储块250-1到250-n。同样的,命令超级仲裁器220包括对应于n个物理存储块的n个命令仲裁器230-1到230-n。在某些实施例中,n个命令仲裁器230-1到230-n中的每个包括单独的读仲裁器和单独的写仲裁器。在一个实施例中,命令仲裁器230将读和写仲裁一起执行。在一个实施例中,事务扫描器210、命令超级仲裁器220、组合器240和管理器260通过寄存器和/或组合逻辑实现。然而,可以使用其他实现方式。

事务扫描器210被配置用于从耦合到共享存储控制器120的各种主设备(如,处理内核、处理器、cpu、dsp、hac等)同时扫入所有活动事务。活动事务可以包括读事务(readtransaction,rt)和写事务(writetransaction,wt)。事务扫描器210扫入存储器访问事务并将它们并行处理。并行处理存储器访问事务与串行处理相比,其中每个存储器访问事务在被调度至共享存储器的下一个存储器访问事务之前完成。并行处理存储器访问事务意味着两个或更多存储器访问事务的多个部分可以同时被调度到共享存储器。也就是说,即尽管第一存储器访问事务仍未完成,第二存储器访问事务的部分可以被调度至共享存储器110。

在处理存储器访问事务时,事务扫描器210将每个存储器访问事务划分或中断至它的各自的节拍级存储器访问命令中。然后,节拍级命令(beat-levelcommands,req)根据物理存储块250-1到250-n的地址,传递至命令超级仲裁器220中的合适的命令仲裁器230。因此,每个存储器访问事务(如,读或写)被事务扫描器210接收,事务扫描器210可以输出超过一个节拍级存储器访问命令(beat-levelmemoryaccesscommand,req)。同样,注意,与给定的存储器访问事务相关联的节拍级存储器访问命令可以被传递至不同的命令仲裁器230。例如,读事务的节拍级读命令中的一个可以被发送到命令仲裁器230-1,另一个被发送到命令仲裁器230-2,等等。

如上所述,每个命令仲裁器230可以对应于物理存储块中的一个。例如,每个命令仲裁器230可以控制共享存储块250中的一个的仲裁。物理存储块250-1到250-n是共享存储器110的一个实施例。在一个实施例中,物理存储块250-1到250-n是物理存储器库。在一个实施例中,物理存储块250是交错的物理存储器库。在一个实施例中,物理存储块250是线性寻址存储器库。物理存储块250-1到250-n可以有相同的数据宽度或不同的数据宽度。数据宽度指的是接口(如,数据总线)到物理存储块250的宽度。在一个实施例中,物理存储块的数据宽度对应于物理存储块的节拍大小。这意味着不同的存储块250可以有不同的节拍大小。因此,当事务扫描器210将每个存储访问事务划分成各自的节拍级存储器访问命令时,它依据命令仲裁器230对应的物理存储块250将存储器访问事务分成合适大小的节拍。

命令仲裁230-1到230-n的每个耦合至事务扫描器210并且被配置用于根据一个或多个标准仲裁节拍级存储器访问命令。示例的标准包括,但不限于,将优先权分配到与节拍级存储器访问命令相关联的事务中,节拍级存储器访问命令被调度至共享存储器已经等待的时钟周期数,节拍级存储器访问命令是关键性,对于事物的时间预算,对于与事务关联的模式的共享存储器带宽分配。这些标准的任何组合或其他标准可以被使用。

每个命令仲裁器230可以将调度权重分配给它所处理的每个节拍级存储器访问命令。具有较高调度权重的节拍级存储器访问命令可以在他们拥有较低的调度权重之前被调度至共享存储器110。每个命令仲裁器230可以为它的物理存储块250命令它处理的节拍级存储器读取命令至一个节拍级存储读取命令的序列(sequence,seq)。例如,命令仲裁器230-1可以为它的物理存储块250-1命令它所处理的节拍级存储器访问命令至一个节拍级存储器读取命令序列。每个命令仲裁器230可以发序列(sequence,seq)至组合器240,其可以处理合适的节拍级存储器访问命令到物理存储块250的实际调度。仲裁可以在命令仲裁230-1到230-n并行执行。

读数据/写响应组合器240被耦合到物理存储块250-1到250-n以及命令超级仲裁器220和事务扫描器210中。在执行节拍级写命令时,写地址(writeaddress,wa)和写数据(writedata,wad)被调度至合适的物理存储块。该物理存储块将节拍级写响应(beat-levelwriteresponse,bwr)返回至写响应组合器240以确认节拍级写命令被服务。而不是将每个节拍级响应返回至写事务响应(writetransactionresponse,wtr)上的始发处理器,读数据/写响应组合器240可以收集节拍级写响应并将它们组合至对于该事务的单读的写响应(writeresponse,wresp),它可以被发送至事务扫描器210。单独的写响应可以被送回处理器,该处理器在写事务响应(writetransactionresponse,wtr)中命令该事务。在执行节拍级读命令时,读地址(readaddress,ra)被调度至合适的物理存储块并且对于该节拍的读数据(readaddress,brd)被返回。读数据/写响应组合器240可以从物理存储块中收集各种读数据(readaddress,brd)并为事务将其组合成读数据响应(dataresponse,rd),这可以被发送到事务扫描器210。读数据响应(dataresponse,rd)然后可以发送回处理器,其在读事务响应(readtransactionresponse,rtr)中命令事务。

在一个实施例中,对于给定的事务去优先于在一个rtr中将rd发送回事务扫描器210完成来说,读数据/写响应组合器240不等待所有节拍级读数据命令。这允许共享存储控制器120在所有与事务相关联的节拍级读数据完成之前向主设备发送读响应。因此,主设备可以更快地接受更多(或最多)关键的读数据。

管理器260接收与特定的主设备有关的配置信息并用其去配置主设备的事务将如何被共享存储控制器120仲裁。配置信息可以在配置接口中提供。例如,在soc上处理器执行的软件可以为监管器260提供配置信息。监管器260耦合到事务扫描器210、命令超级仲裁器220和组合器240,以便配置这些元件如何处理来自每个主设备的事务。注意,对于给定的主设备的配置信息可以使动态的。例如,随着时间的推移,配置信息可以通过配置接口更新。同样,主设备可以基于操作条件更新配置信息。因此,对于与相同的主设备关联的不同事务,配置信息可以是不同。

配置信息可能与主设备的qos相关。例如,配置信息可以指定主设备的存储器访问事务是否应该被视为时间敏感或带宽敏感。时间敏感示例是被要求的数据的一部分比其他部分更为重要。例如,cpu可以首先为一个数据字执行l1缓存查找,从而导致缓存缺失。cpu可以随后发送事物请求来自共享存储器110的八个数据字,以填充整个缓存线。在这个示例中,cpu实际上可以不立马需要其他数据的七个字,但cpu对八个字做出请求以服从cpu缓存填充策略。在这个示例中,与缓存缺失相关联的词可以被指代为“最关键的字”。在一个实施例中,共享存储控制器120以在事务中提供最关键词比其他词更快的方式仲裁节拍级读命令。例如,在所有与该事务关联的数据都已从共享存储器110中被访问之前,共享存储控制器120可以将最关键字发送回cpu。带宽敏感的示例是主设备仅仅想尽快获得所有与事务相关联的数据。

另一个与qos有关的配置信息的示例是对事务的时间预算。在一个实施例中,共享存储控制器120升级节拍级存储器访问命令的优先权以帮助事务满足时间预算。

另一个与qos有关的配置信息的示例是带宽分配信息。每个主设备可以被分配不同的模式。例如,在无线领域,可以有通用移动通信系统(universalmobiletelecommunicationssystem,umts)模式、长期演进(long-termevolution,lte)模式和全球移动通信系统(globalsystemformobilecommunications,gsm)模式等等。每个模式可以被分配关于访问共享存储器110的特定带宽。例如,模式a可以被分配带宽的百分之62,模式b可以被分配带宽的百分之31,以及模式c可以被分配带宽的百分之7。在一个实施例中,共享存储控制器120基于发送与节拍级存储器访问命令相关联的事务的主设备模式调节节拍级存储器访问命令。

注意,qos信息也可以通过在与事务相关的边带信息内的共享存储控制器120来访问。例如,主设备的边带信可以息提供优先权、时间预算、带宽分配、表明带宽分配的模式等等。再参考图1,边带信息可以通过互联135发送。边带信息可以从事务中单独被发送。

qos信息也可以作为事务的一部分被发送。例如,事务中可能有指定此特定事务的优先权的字段。这可能是两位或三位,例如,其表明这项事务的重要性。

在一个实施例中,命令超级仲裁器220依据配置信息使用不同的调度权重方案。例如,一个方案可以将事务的优先权以及节拍级存储器访问命令已经等待的时间考虑在内。另一个方案可以将事务的优先权、节拍级访问命令已经等待的时间,以及在事务中每个节拍级存储器访问命令的重要性考虑在内。还可以使用其他方案。此外,处理器的调度权重方案可以被动态计算和调整。

图3是三个共享存储器事务,事务300、事务320和事务340的图解。事务300包括四个节拍,节拍310-1到节拍310-4。事务320包括两个节拍,节拍330-1和节拍330-2。节拍340包括三个节拍节拍350-1、节拍350-2和节拍350-3。

图4是图3共享存储器事务的图解,其通过用于共享存储器的控制器400的实施例。控制器400包括图2中的事务扫描器210和命令超级仲裁器220。事务300、事务320和事务340可以以三种对应的读/写事务的形式:事务410-1、事务410-2和事务410-3同时到达事务扫描器210。在本示例中,三个存储器访问事务通过三个不同的主设备发送。事务扫描器210同时扫入三个读/写事务并将每个划分成它的各自的节拍级存储器访问命令。事务扫描器210将事务300划分成节拍310-1到节拍310-4,将事务320划分为节拍330-1和节拍330-2,以及将事务340划分为节拍350-1、节拍350-2和节拍350-3。

节拍级命令随后被传递给命令仲裁器220。在一些实施例中,事务扫描器210通过直接连接和命令超级仲裁器220连接,而在其他实施例中,它们通过相互连接如交换结构、分组网络等连接。每个节拍级存储器访问命令根据它的目的存储地址传递给命令仲裁器。命令仲裁器随后确定序列,在该序列中节拍级存储器访问命令被调度至与控制器400连接的各种物理存储块。在一个实施例中,根据每个事务300、320和340的仲裁方案确定序列。

图5是图2的命令仲裁器230的一个实施例图。命令仲裁器230可以为一个物理存储块250调度节拍级存储器访问命令。在这个示例中,该命令仲裁器230调度节拍级存储器访问命令502-1到502-4。四个节拍存储器访问命令502-1到502-4代表已经被调度至共享存储器110中的节拍级存储器访问命令。这是可能的,虽然不是必须的,每个节拍级存储器访问命令502-1到502-4和不同的事务相关联。在任何时间点,可能有多于或少于四个节拍存储器访问命令正在被命令仲裁器230调度。

命令仲裁器230包括延迟管理器504-1到504-4、优先计算506-1到506-4、要求调度程序510和序列520。延迟管理器504-1到504-4,优先计算506-1到506-4,并且要求调度程序510可以通过逻辑被完成,该逻辑包括但不限于寄存器和/或组合逻辑。

在本实施例中,命令仲裁器230基于延迟和优先权将调度权重分配给每个节拍级存储器访问命令。例如,延迟管理器504-1和优先权计算506-1为节拍级存储器访问命令502-1确定调度权重。其他延迟管理器504-2到504-4以及优先计算506-2到506-4为节拍级存储器访问命令502-2到502-4分配调度权重。在一个实施例中,命令仲裁器230将每个时钟周期的新调度权重分配给任何已被调度制存储器的节拍级存储器访问命令。

在一个实施例中,延迟是命令仲裁器230中的节拍级存储器访问命令被调度至共享存储器前已等待的时钟周期数。在一个实施例中,优先权是与节拍级存储器访问命令相关联的事务的优先权。在许多方法中,其中命令仲裁器230可以包括这两个因素。一个示例在方程式1中示出。

(1)在方程式1中,“w”是节拍级存储器访问命令的调度权重,“d”是时钟周期内节拍级访问存储器命令所经历的延迟,并且“p”是与节拍级存储器访问命令相关联的事物的优先权。该优先权可以作为事务中的几个字节的信息提供。优先权可以是1到16之间的值,使用四位的示例。在方程式1中,较高的值表示较高的优先权。在一个实施例中,“p”是基于与节拍级存储器访问命令相关联的事物的优先权,但可以随着时间改变。下面是关于方程式2的示例。

在方程式1中,延迟除以比例因子“b”,“b”是一个常数。缩放因子可以是二的幂,其为高效的计算形成,由于除法可以通过移位来执行。例如,“b”可以是4、8、16、32等。其他的二的幂也可以使用。然而,其并不要求时钟周期的延迟除以二的幂。此外,延迟可以用时钟周期以外的方式表示。在方程式1中,“a”也是常量。例如,“a”是2。然而“a”可以有其他值。

在一个实施例中,延迟管理器504和优先权计算506执行方程式1的计算。为此,延迟管理器504可以保持追踪它正在处理的节拍级存储器访问命令已等待被发送到共享存储器的时钟周期数。优先权计算506-1到506-4输入优先权p1到p4,这可以是与各自的节拍级存储器访问命令相关联的事物的优先权。

基于每个节拍级访问命令502的调度权重,要求调度器510形成序列520。该序列520代表将节拍级存储器访问命令调度至与该命令仲裁器230相关联的物理存储块250中的命令。注意,例如,由方程式1表示的延迟感知因素防止节拍级存储器访问命令被序列520卡住。例如,即使节拍级存储器访问命令的关联事务有被放在序列中的更高优先权,节拍级存储器访问命令的关联事务有较低的优先权,其实际上可能被提升到序列中更高的位置来响应被发送到共享存储器的等待的增加。

注意,随着时间的推移,由于延迟值的改变,节拍级存储器访问命令502的调度权重可以改变。要求的调度器510将信息反馈给延迟管理器504,以使得延迟管程序知道它的节拍级存储器访问命令是否已被调度。因此,只要它的节拍级存储器访问命令已经被调度,延迟管理器504可以增加延迟的每个时钟周期,并将新的延迟值输出到优先权计算506。有时,调度权重可以到达最大值。在这种情况下,可以基于节拍级存储器访问命令到达最大值的命令,调度优先权。

在一个实施例中,节拍级访问命令的优先权可以随着节拍级存储器访问命令等待被调度至共享存储器110改变。作为一个示例,这可以为了帮助满足事务的时间预算而完成的。方程式2提供了有节拍级存储器访问命令的优先权是延迟函数的示例。

(2)p=f(t-d)

在方程式2中,“t”代表与节拍级存储器访问命令关联的事务的时间预算的参数。再次,“d”代表在,例如,时钟周期中的节拍级存储器访问命令的延迟。在方程式2中,“f”代表一些适用于参数t和d的函数。方程式2的解释是,“t-d”越小,“p”越大。这表明随着延迟到增加,优先权(p)增加。这可以帮助事务中的所有节拍级访问命令满足该事务的时间预算。

在一个实施例中,p1到p4的值被反馈到优先权计算506-1到506-4中,其通过基于方程式2的各自的延迟管理器504-1到504-4计算。其他实现方式可以用于调整基于时间预算的事务的优先权。

图6为图2的命令仲裁器230的另一实施例的图。本实施例类似于图5命令仲裁器230的一个实施例,但增加了节拍级优先权信息。例如,优先权计算506-1到506-4输入节拍级优先权信息b1到b4。这使得命令仲裁器230对事务关键部分延迟敏感。例如,命令仲裁器230可以是关键节拍延迟敏感的。

在一个实施例中,命令仲裁器230基于每个节拍级存储器访问命令的延迟、与节拍级存储器访问命令相关联的事务的优先权,以及节拍级存储器访问命令对该事务的关键性来为每个节拍级存储器访问命令调度权重。

如图5中的示例所示,在一个实施例中,延迟可以是节拍级存储器访问命令在命令仲裁器230被调度至共享存储器的前已经等待的时钟周期数。

有许多方式,其中命令仲裁器230可以包括这三个因素。一个示例已在方程式3中示出。

(3)在方程式3中,“w”是节拍级存储器访问命令的调度权重,“d”是时钟周期中由节拍级存储器访问命令所经历的延迟,并且“p”是与节拍级存储器访问命令相关联的事务的优先权。如上所述关于方程式2,该优先权可以是静态值或动态地调整为节拍级存储器访问命令等待被调度。在方程式3中,“c”是比例因子,它是常数。这与方程式1中的比例因子“b”的作用类似。

在一个实施例中,节拍优先权取决于该节拍对事务的关键性程度。最关键的节拍收到方程式3中节拍优先权的最高值。这是可能的,尽管不是必须的,事务中的每个节拍有不同的节拍优先权。

为帮助分配节拍优先权,事务中的每个节拍可以被分配一个节拍标识符(节拍id)。例如,如果事务中有16个节拍,它们可以从节拍id0到15排序。作为一个示例,根据最关键的节拍的节拍id可以被分配节拍id0,节拍可以在临界状态命令。在一个实施例中,节拍优先权是二的幂,以便简化方程式3中的计算逻辑。例如,节拍id0可以被分配节拍优先权8,节拍id1到3可以被分配节拍优先权4,节拍id4到7可以被分配节拍优先权2,并且节拍id8或者更高的节拍id可以被分配节拍优先权1。

在一个实施例中,共享存储控制器120基于事务确定最关键的节拍。例如,该事务可以是l1缓存缺失的结果。在这种情况下,主设备可以不需要该事务中被请求的所有数据。共享存储控制器120可以将节拍id0分配给与缓存缺失相关联的节拍。其他节拍可以基于它们在共享存储器中的地址分配节拍id。例如,随着地址的增加,节拍id增加。然而,注意,最关键的节拍不一定是拥有最低的地址。因此,当节拍拥有最高地址后,具有最低地址的节拍可以被分配到下一个节拍id。逐渐增加的更高地址的更高节拍id的模式可以在所有节拍已被设定节拍id后重新开始。

主设备可以通过在事务中提供信息来表示哪个节拍是最关键的节拍。例如,主设备可以指示事务的哪部分与缓存缺失相关联。然而,其他技术可以用于共享存储器120,以确定最关键的节拍。

注意,正如关于方程式2的讨论,方程式3的优先权可以被调整以满足时间预算。回想方程式2表明随着延迟的增加,优先权(p)增加。这可以帮助事务的所有节拍级存储器访问命令来满足该事物的时间预算。

图7为控制共享存储器的过程700的一个实施例的流程图。该方法由共享存储控制器120的一个实施例执行。该方法的各种步骤通过图1或图2的共享存储控制器120以及图5和图6的命令仲裁器230来执行。因此,在讨论图7时,将参考这些图中的元素。然而,图7的方法不限于图1或图2中的共享存储控制器120,或者也不限于图5或图6中的命令仲裁器230。

步骤710包括接收来自主设备的存储器访问事务以访问共享存储器110。在一个实施例中,这些事务通过事务扫描器210接收。在一个实施例中,存储器访问事务同时通过事务扫描器210扫入。多个存储器访问事务可以来自一个或多个主设备,例如,处理器内核、处理器、cpu、dsp、hac等。每个存储器访问事务分割成一个或多个节拍,节拍大小取决于互联140的总线宽度,共享存储控制器通过互联140访问共享存储器110。

步骤720包括将存储器访问事务划分为事务的节拍级存储器访问命令。每个事务被划分为至少一个节拍级存储器访问命令,并且至少一个事务被分为多个节拍级存储器访问命令。可能地,所有事物可以被分为多个节拍级存储器访访问命令。在一个实施例中,事务扫描器210执行步骤720。每个节拍级存储器访问命令在共享存储器110中注定属于某个特定的地址。对于给定的事务,每个节拍级共享存储器命令的共享存储地址可以变化。给定的事务可以引起从共享存储器的多个物理块写入或读取数据。

步骤730包括访问每个事务的qos。步骤730包括,但不限于,命令超级仲裁器220接收、确定或读事务的qos。注意,在一些情况下,这可以意味着为主设备访问发送到该事务的qos。例如,有时主设备的qos不改变或者不经常改变。然而,在一些情况下,对于给定的主设备,qos可以基于一个事务到另一个事务的不同而不同。

可以从事务中的配置信息、边带信息或其他方面访问qos。步骤730可以包括管理器260为事务扫描器210、命令超级仲裁器220或组合器240中任何提供存储器配置信息。步骤730可以包括从事物本身访问信息。例如,事务可以包含优先权位。步骤730可以包括从主设备中访问带外信息。该带外信息可以通过来自主设备的互联135-1到135-6中的一个被接收。

步骤740包括基于各自的事务的qos仲裁与每个事务相关联的节拍级存储器访问命令。在一个实施例中,步骤740包括基于每个事务的qos选择仲裁方案。步骤740导致以一种方式仲裁节拍级存储器访问命令,该方式意识到发送事务的主设备的qos和/或事务本身的qos。也就是说,给定的主设备的不同事务可以有相同或不同的qos。

节拍级存储器访问命令可以在仲裁步骤740中同时被仲裁。通过与共享存储器110的物理块250对应的命令仲裁器230,仲裁可以为共享存储器的每个物理块并行执行。命令仲裁器230可以有读仲裁器和写仲裁器,其允许节拍级读命令和节拍级写命令的独立仲裁。每个共享存储器110的物理块250的仲裁可以被同时执行以基于它们各自事务的仲裁策略确定节拍级存储器访问命令序列。

步骤750包括基于仲裁步骤740的结果将节拍级存储器访问命令调度至共享存储器110。注意,对于给定事务的节拍级存储器访问命令可以被调度至不同物理存储块250中。因此,给定事务的节拍级存储器访问命令可以在不同的调度序列上。这允许,但不要求,给定事务的节拍级存储器访问命令的并行调度(以及并行执行)。

在步骤760中,共享存储控制器120可以将事务的响应返回到主设备。这可以包括组合步骤。该组合步骤可以为读事务组合数据和响应。同样,组合步骤可以为各自的写事务组合响应。

在读事务期间,在组合步骤中,节拍级读数据可以从共享存储器110中的不同物理块250中收集。一旦收集到相应事务中的的所有读数据,单个的读数据响应可以被传递回主设备。在一个实施例中,共享存储控制器120不等待来自不同节拍级存储器访问命令的所有读数取据完成,就可以开始向主设备发送响应。例如,更(或最)关键节拍的读数据可以被发送至主设备,其在其他节拍完成。

在写事务期间,共享存储器110的各种物理块250生成节拍级写响应以确认节拍级写命令已被送达。在组合步骤中,节拍级写响应从共享存储器110的不同物理块250中收集,并且单个写响应可以被返回主设备。

图8为基于各自的事务的qos仲裁节拍级存储器访问命令的过程800的一个实施例的流程图。该过程被共享存储控制器120的一个实施例执行。这是图7中步骤740的一个实施例。在步骤810中,共享存储控制器120确定事务是时间敏感或是带宽敏感。时间敏感意味着事务中的某部分应该更快地由共享存储器处理,甚至以牺牲由共享存储器更慢处理的事务的其他部分为代价。带宽敏感意味着整个事务应该由共享存储器快速处理,而不必考虑事务的一部分的优先权。

例如,cpu可以是时间敏感,因为它最关心尽快从事务中接收读数据的特定部分。cpu可能不关心接收给定事务的所有读数据的延迟。这可能是当cpu要求来自响应于l1缓存缺失的l2共享存储器的缓存线的情况。带宽敏感的示例是,处理器只想尽快获得与事务相关联的所有数据。这可能是执行重建应用的处理器的情况,但许多其他的例子存在。步骤810的确定可以依据于由管理器260存储的各自的主设备的配置信息。

基于步骤810的确定,共享存储控制器120要么执行喜好时间(步骤820)的节拍级仲裁,要么执行喜好带宽(步骤830)的节拍级仲裁。一个喜好时间的节拍级仲裁的示例在方程式3中提供。注意,方程式3是关键的节拍敏感的。因此,步骤820可以包括在为事务调度所有节拍级存储器访问命令上,使用喜好为事务调度最关键的节拍级存储器访问命令的调度权重方案。步骤820可以包括使用调度权重方案,其提供的较高的调度权重,节拍级存储器命令对事务越关键。这可以包括给予最关键的节拍级存储器访问命令最高的调度权重。

在一个实施例中,步骤820包括将不同的调度权重分配给与相同事物相关联的两个节拍级存储器访问命令。这可以允许在给定事务中的不同节拍级存储器访问命令被以比其他命令更快或更慢地调度至共享存储器。作为一个示例,步骤820包括基于两个节拍级存储器访问命令对事物的关键性,将不同的调度权重分配给与相同事物相关联的两个节拍级存储器访问命令。换句话说,共享存储控制器基于各自的两个节拍级存储器访问命令对主设备的关键性,将不同的调度权重分配给与相同事务关联的两个节拍级存储器访问命令。

方程式1中提供了喜好带宽的节拍级仲裁的一个示例。因此,在步骤830中,节拍级仲裁可以基于方程式1。注意,方程式1是延迟敏感的,因为它包括给定的节拍级存储器访问命令被调度至共享存储器已等待的时间。因此,该技术帮助避免互斥等待。它也有助于增加带宽。因此,步骤830可以包括使用调度权重的方案,该方案喜好为事务快速调度所有的节拍级访问命令。步骤830可以包括使用使用调度权重方案,该方案给事务中的所有节拍级存储器访问命令相同的调度权重。在一个实施例中,步骤830包括使用调度权重方案,该方案同等处理事务中的所有节拍级存储器访问命令。

图9为访问事务的qos并仲裁基于qos去仲裁与每个事务相关联的节拍级存储器访问命令的过程900的一个是实施例的流程图。这是图7中步骤730和740的一个实施例。

在步骤910中,共享存储器120访问事务的时间预算。该时间预算由通过管理器260被存储的主设备的配置信息规定。时间预算也可以提供从主设备到共享存储控制器120的边带信息。

在步骤920中,正在为事务处理节拍级存储器访问命令的命令仲裁器230升级节拍级存储器访问命令的调度优先权以满足时间预算。方程式2示出了一个调度权重如何计算以满足时间预算的示例。回想方程式2,节拍级存储器访问命令的优先权增加,节拍级存储器访问命令等待被调度至共享存储器的时间越长。因此,升级调度优先权可以包括动态改变节拍级存储器访问命令的优先权。

图10为访问事务的qos并仲裁基于qos仲裁与每个事务相关联的节拍级存储器访问命令的过程1000的一个是实施例的流程图。这是来自图7中的步骤730和740的一个实施例。

在步骤1010中,共享存储控制器120访问事务的模式的带宽分配。例如,在无线领域,可以有通用移动通讯系统(universalmobiletelecommunicationssystem,umts)模式、长期演进(long-termevolution,lte)模式、全球移动通新系统(globalsystemformobilecommunications,gsm)模式等。每个模式可以有特定的带宽分配。该模式和/或它对于主设备的带宽分配可以在提供给管理器260的配置信息中指定。一旦服务区域被确定,它可以为区域配置,因此此信息可以比其他qos信息更静态。例如,在北美洲的基站部署的soc将在lte模式下有更高的带宽。注意,该模式不限于此无线区域的示例。分配给主设备的带宽也可以动态改变。

在步骤1012中,共享存储控制器120节流节拍级存储器访问命令以服从与事务相关联的模式的带宽分配。例如,当事务中与该模式相关联的节拍级存储器访问命令已经超出事务中该模式的分配带宽时,共享存储控制器120阻止节拍级存储器访问命令被调度至共享存储器。注意,这有助于与另一模式相关的节拍级存储器访问命令接收它们的分配带宽。

在一个实施例中,步骤1012包括基于配置信息,事务扫描器210对命令超级仲裁220节流请求。例如,如果与事务相关的模式的带宽分配完成,那么请求不会被事务扫描器210发送到命令超级仲裁器220。管理带宽分配的一个示例如下:对于每13个时钟周期,8个时钟周期将给模式1,4个时钟周期将给模式2并且1个时钟周期将给模式3。因此,模式1将有8/13带宽分配,模式2将有4/13带宽分配以及模式3仅有1/13带宽。如果一个模式在它的插槽里没有任何请求,这个插槽可以配分配到与其他模式相关的其他请求中。

带宽分配信息也可以被传递到命令超级仲裁器220,因为这可以实现节拍级的带宽分配。该命令超级仲裁器220可以使用事务扫描器210使用的相同的带宽分配。命令超级仲裁器220可以仲裁与上述讨论形式相同模式下所有未完成的请求。因此,最后的效果可以是二级仲裁过程。首先,可以进行测试,以确定节拍级存储器访问命令满足带宽分配。那些未通过带宽分配测试的节拍级存储器访问命令被节流。命令超级仲裁器220通过不将节拍级存储器访问命令放到它的被调度至共享存储器的命令序列,其可以节流节拍级存储器访问命令。因此,基于上述对所有为被截留的所有节拍级存储器访问命令的调度权重的讨论,节拍级存储器访问命令的仲裁可以被执行。

图11a为命令仲裁器和与物理存储块连接到块控制器的一个实施例的图。读仲裁器230a和写仲裁器230b是图2存储控制器的命令仲裁器230的一个实施例。块控制器1102位于组合器240的一个实施例中。组合器240的其他元件不在图11a中描述。

读仲裁器230a为多路器(multiplexer,mux)1104的一个输入提供一个节拍级读命令。写仲裁器230b为另一个mux1104的另一个输入提供一个节拍级写命令。块控制器1102控制mux选择调度至物理存储块250中的节拍级读命令或节拍级写命令。在一个实施例中,物理存储块250是物理存储器库。

因此,在图11a的实施例中,在一个时间点,物理存储块250可以被读取或者被写入。然而,在这个实施例中,物理存储块250不能同时被读取或被写入。

图11b是命令仲裁器和连接到物理存储子块的块控制器的一个实施例图。在这个实施例中,有两个物理存储子块250a和250b。在一个实施例中,这些子块250a和250b是图11a的物理存储块250的两个不同区域。例如,在一个实施例中,子块250a、250b是相同物理存储器库的不同物理部分。两个字块250a和250b与不同存储地址相关联。

在这个实施例中,一个节拍级存储器访问命令可以在物理存储子块250a中执行,然而另一个节拍级存储器访问命令在物理存储子块250b中执行。例如,节拍级读命令可以在物理存储子块250a中执行,而节拍级写命令在物理存储子块250b中执行。或者,节拍级写命令可以在物理存储子块250a中执行,而节拍级读命令在物理存储子块250b中执行。

读仲裁器230a为mux1104a提供节拍级读命令,并基于与节拍级读命令相关的存储地址,可以为mux1104b提供不同的节拍级读命令。写仲裁器230b为mux1104a提供节拍级写命令,并基于与节拍级写命令相关的存储地址,可以为mux1104b提供不同的节拍级写命令。块控制器1102选择一个节拍级存储器访问命令提供被调度至物理存储子块250a的mux1104a。块控制器1102选择一个节拍级存储器访问命令提供被调度至物理存储字块250b的mux1104b。

因此,共享存储控制器的一个实施例被配置用于从读仲裁器230a中选择节拍级读命令并从写仲裁器230b中选择节拍级写命令,并将其分别在第一物理存储块250a和第二物理存储块250b中的并行执行。即,节拍级读命令在第一物理存储块250a中执行,而节拍级写命令在第二物理存储块250b中执行。

因此,图11b的实施例提供细粒度存储器库。此外,被调度至物理存储子块250a和250b的存储器访问命令在节拍级中。这可以提供进一步的性能改善。

细粒度库不限于两个子块。在一个实施例中,物理存储块被分为四个子块。在一个实施例中,物理存储块被分为八个子块。物理存储块可以分成若干个子块。

在示例性实施例中,共享存储控制器用来仲裁节拍级存储器访问命令。共享存储器包括接收单元,该接收单元从对应的多个主设备中接收多个事务以访问共享存储器,并且将多个事务划分为各自的事务的节拍级存储器访问命令。共享存储控制器包括为多个事务中的每个访问服务质量的仲裁单元,其基于对各自的事务的服务质量,仲裁与事务相关的节拍级存储器访问命令并基于仲裁节拍级存储器访问命令的结果,向共享存储器调度节拍级存储器访问命令。在一些示例性实施例中,该共享存储控制器还可以包括一个或多个单元,用于执行在实施例中描述的任一个或多个步骤的组合。

已经出于说明和描述的目的给出了本公开的描述,但是其并不旨在穷举或限于以所公开的形式的公开内容。在不脱离本公开的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。为了最好地解释本公开的原理和实际应用,并且为了使本领域其他普通技术人员理解具有适合于特定预期使用的各种修改的本公开,选择并描述了本文中公开的方面。

出于本文档的目的,与所公开的技术相关联的每个过程可以连续地并且由一个或更多个单元执行。过程中的每个步骤可以由在其他步骤中使用的相同或不同单元执行,并且每个步骤不必有单个单元执行。

虽然已经以对结构特征和/或方法行为专用的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上面描述的具体特征和动作作为实现权利要求的示例性形式被公开。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1