紧密耦合的分布式非核一致结构的制作方法

文档序号:11530713阅读:187来源:国知局
紧密耦合的分布式非核一致结构的制造方法与工艺
相关申请的交叉引用本申请主张对提交于2014年12月25日、题为“tightly-coupleddistributeduncorecoherentfabric”的美国非临时专利申请no.14/583,156的优先权及其权益,通过引用将该申请整体地并入本文中。本公开涉及计算系统,并且特别地(而非排他性地)涉及紧密耦合的分布式非核一致结构。
背景技术
:在具有多个设备的许多计算机系统中,执行仲裁来提供对诸如共享存储器之类的共享资源的访问。不同类型的仲裁机制被提供为使得能够实现不同代理或请求方之间的仲裁。一些系统使用固定优先级仲裁系统,在其中不同代理被分配特定的优先级。然而,这可能导致在一个或多个代理获得对共享资源的访问的能力的使用和饥饿(starvation)方面的不公平。其他仲裁系统提供基于轮询(roundrobin-based)的方法来分配对共享资源的访问。在某些实施例中,仲裁并不计及诸如功率状态之类的共享资源因素。因此,在一个示例中,对访问共享资源的请求准予并且该请求使该资源离开低功率状态,尽管该设备不需要立即访问该共享资源。附图说明图1是根据本说明书的一个或多个示例的共享非核存储器结构的一部分的框图。图2是根据本说明书的一个或多个示例的准许仲裁器的进一步细节的框图。图3是根据本说明书的一个或多个示例的在确定仲裁获胜方时用于更新代理的年龄值的方法的流程图。图4是根据本说明书的一个或多个示例的准许仲裁器状态机的框图。图5是根据本说明书的一个或多个示例的用于在准许仲裁器中执行第一级别仲裁的方法的流程图。图6是根据本说明书的一个或多个示例的资源分配逻辑的一部分的框图。图7是根据本说明书的一个或多个示例的记分板索引生成逻辑的框图。图8是根据本说明书的一个或多个示例的用于调度器仲裁器的状态机的框图。图9是根据本说明书的一个或多个示例的用于执行存储器调度的方法的流程图。图10是根据本说明书的一个或多个示例的soc的框图。图11是根据本说明书的一个或多个示例的存在于计算机系统中的部件的框图。图12是根据本说明书的一个或多个示例的用于控制受控系统的现场使用(insitu)的soc的框图。图13是根据本说明书的一个或多个示例的在非核结构内提供多个虚拟信道的方法的流程图。具体实施方式在下面的描述中,阐述了许多具体细节(诸如特定类型的处理器和系统配置、具体硬件构造、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统部件、具体测量结果/高度、具体处理器流水线级和操作等等的示例),以便提供对本发明的透彻理解。然而,对本领域技术人员来说显而易见的是不需要采用这些具体细节来实践本发明。在其他情况下,尚未详细描述公知部件或方法(诸如具体和替代处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现方式、以代码形式的算法具体表达、具体功率下降和选通技术/逻辑以及计算机系统的其他具体操作细节),以便避免非必要地使本发明变晦涩。在示例中,片上系统(soc)或其它嵌入式系统的非核结构的所选部分被划分成两个独立的流水线。该结构可被称为“非核”,其表明在结构中提供的互连、寄存器和其他资源不是包括“代理”的处理核心的一部分。非核结构可包括以上描述的存储器结构、将“代理”连接至存储器的各部分、以及还有将代理彼此连接以及特别地将处理器核心连接至其他“代理”的各部分。在一些实现方式中,每个流水线独立于另一流水线进行操作,并且每个流水线仅访问系统存储器的一半,诸如交错式存储器(interleavedmemory)中的奇数或偶数地址。两个流水线并不重新汇聚,直到已经返回存储器值之后为止。然而,非核结构可能仍向请求设备呈现单个、单片接口。这允许系统设计者将非核结构看作“黑盒”而无需修改现有设计。每个进入的地址可以由确定性散列来处理、被分配给流水线中的一个、通过存储器进行处理、以及然后传递至信用返回。在各种实施例中,共享存储器结构将多个独立设备(在本文中也被称为“代理”)耦合至共享存储器(例如,经由介于中间的存储器控制器)。在一些实施例中,共享存储器结构是单个管芯半导体设备的互连构造,其包括不同类型的知识产权(ip)逻辑块。共享存储器结构可被配置成使得能够符合时间关键等时设备的服务质量(qos)要求,同时还为非等时设备(在本文中也被称为“尽力而为”设备)提供存储器带宽比例划分。发生存储器带宽的可靠且可预测分配和调度来支持连接至共享存储器结构的多个设备和设备类型。通过将qos功能包括在公共共享存储器结构中(而不是包括在存储器控制器或其他非结构电路中),该设计可跨越多个半导体器件(诸如片上系统(soc))而被更容易地重用,因为该设计独立于存储器技术。因此实施例在共享存储器结构中执行资源分配、带宽分派和时间感知qos属性来提供可预测且可靠的存储器带宽和延时,以满足连接至该结构的设备的要求。服务类种类被指派给耦合至共享存储器结构的每个设备。在一个实施例中,可以使用该结构的配置寄存器来标识这种指派。该结构可支持多个服务类。在一个非限制性示例中,可存在两个服务类种类的设备,包括用于延时敏感设备的等时服务类种类和用于可以忍受较长延时以服务于它们对存储器的请求的设备的尽力而为服务类种类。在一些实施例中,延时敏感设备包括内容呈递设备(诸如作为非限制示例的音频或视频播放器、相机设备等等),而较低优先级设备包括处理器核心、图形处理单元等等。将以请求最后期限形式的时间从等时设备传达给结构,以向该结构指示完成对存储器的请求所需的延时。为了使得能够实现同步,该结构向所有等时请求代理广播全局定时器。对来自结构的输出连续驱动该全局定时器,因此它可用于通过等时设备进行采样。响应于该时间值,代理确定用于完成请求的延时要求并将该延时值添加至全局定时器值以形成针对该请求的最后期限。作为示例,可以由代理通过缓冲器的流失率和代理的数据缓冲器中的数据量来确定对于读取的延时。如果代理每250纳秒(ns)消耗1个高速缓存数据线并且在缓冲器中具有8个高速缓存数据线,则在缓冲器变空之前对于新请求所需的最后期限将是8×250ns或2微秒(μs)。基于该传达的延时或最后期限值,该结构可基于存储器的当前功率状态的知识和对于结构中未决的其他未调度存储器请求所需的延时来做出更好的调度决定。该最后期限通信可改善存储器带宽并且还节省系统功率。请求最后期限的使用向结构提供了针对来自等时设备的每个请求的延时信息。在结构内编程的配置寄存器向该结构提供了关于存储器配置的信息(诸如存储器离开低功率(例如自刷新和状态)所需的延时)。该结构还通过向存储器控制器(例如以状态信道的形式)发送指示来控制存储器控制器何时促使所附接的存储器进入和离开自刷新状态。该结构通过评估对于所有未决存储器请求的延时需求来确定何时存储器应该进入和离开自刷新。因为该结构了解对于所有未决存储器请求所需的延时和离开自刷新所需的延时,所以存储器的功率状态转变的更大管理可以导致附加的功率节省。实施例还可以通过允许存储器请求被无序调度来提供存储器带宽中的效率,然而,这可能导致对于某些请求的长调度延时。为了解决此顾虑,结构向每个等时存储器请求指派优先级级别,例如高优先级或低优先级。当调度高优先级等时请求时,所允许的无序调度的量小于当调度尽力而为或低优先级等时请求时可接受的量。限制对于高优先级请求的无序调度的量确保了满足请求延时要求。因为根据请求的最后期限来确定请求优先级,所以该结构可以在请求被调度之后立即确定对于等时设备来说其他未决请求的优先级级别是什么。通过使用最后期限方法,所有未决请求的优先级级别仅在全局定时器递增时进行改变。实施例还可以改善跨越多个soc实现方式的复杂qos存储器调度算法的可移植性和重用,因为智能存储器调度逻辑被结合到该结构中,同时可以在存储器控制器中实施技术特定的存储器控制器逻辑。实施例还可以将抗饥饿算法结合到结构的多个仲裁点中。在一个实施例中,这些抗饥饿算法包括由准许仲裁器使用的加权的基于年龄的仲裁方法以及在存储器调度器和请求跟踪器中使用的可用调度队列中的最旧一个。此外,相比于其中来自高优先级等时设备的请求自动胜出的固定优先级仲裁,请求权重可被用于在结构中的仲裁点处的不同优先级级别之间进行切换以及用于从调度读取请求切换至写入请求。在一个实施例中,共享存储器结构包括用于调度被发送至存储器控制器的请求的两个仲裁点。第一仲裁点被用来准许来自设备的请求进入共享存储器结构中并且被称为“准许仲裁器”。第二仲裁点被用来调度从共享存储器结构发送至存储器控制器的请求并且被称为“调度器仲裁器”。被连接至共享存储器结构的每个设备都具有连接在设备和结构之间的请求接口。该请求接口供应可以被用于qos存储器调度的关于请求的信息。在一个实施例中,该信息包括存储器地址、顺序id字段和操作码字段。对于等时设备,提供被称为请求最后期限字段的附加字段,以指示完成该请求需要的所需延时。要指出,在soc的一些实现方式中,存储器结构接口可被连接至允许多个设备共享公共请求接口的其他结构或切换设备(switch)。在一个示例中,如果共享存储器结构被分割成彼此紧密耦合的n个并行流水线,那么共享存储器结构可以更高效。每个并行流水线可以包括一个或多个功能块,诸如请求跟踪器或仲裁器,其独立于每个其它流水线而运转,但是虽然如此,其仍紧密耦合到每个其它流水线。例如,共享存储器结构可以包括地址散列化和选择逻辑,其向请求代理呈现单个、单片接口。这有利地保持了旧有接口,并且使请求代理摆脱需要使其自身涉及到“如何”处理存储器请求,并且还使代理摆脱必须了解结构中存在“n”个流水线。还使用紧密耦合来保持用于代理的某些排序期望。在其中n=2的情况下,进入的存储器访问请求可以首先指向地址选择和散列化块。该块将地址散列化以确定其是奇数还是偶数。如果地址是偶数,则其指向偶数流水线,而如果地址是奇数,则其指向奇数流水线。每个流水线然后独立地处理存储器访问请求,直到且包括提供访问单独的存储器库的单独的存储器控制器。这在其中存储器是“交错式”的情况中可以是非常有效的,使得在与彼此分离的库中找出奇数和偶数地址。一旦存储器值从适当的存储器库返回到共享结构流水线,聚集器(诸如数据返回仲裁机制)在流水线之间进行仲裁并将数据返回至请求代理。为了确保不使一个流水线饥饿,可以将适当尺寸的队列或缓冲器放置在流水线选择和散列块前面,使得每个流水线持续接收分组。在一个示例中,通过以流水线的时钟频率的两倍进行操作的共享功能块来紧密耦合两个流水线。在两个流水线并行工作的情况下,可以在两个时钟周期中成功地处理两个存储器访问。为了允许请求代理继续发送请求,共享功能块可以聚集每个流水线的请求队列的排队和离队操作并将信用返回至请求代理。图1是根据本说明书的一个或多个示例的共享存储器结构的一部分的框图。如图1中所示,共享存储器结构100被耦合在多个代理115-0—115-3(统称为代理115)和存储器控制器170之间。要指出,在一些实施例中,存在多于一个存储器控制器。尽管为了便于图示没有示出,但是存储器控制器可被耦合至系统存储器,诸如动态随机存取存储器(drom)或其他系统存储器。在图1中所示的实施例中,不同类型的代理被耦合至共享存储器结构110。具体来说,不同代理包括第一服务类(cos)代理类型(即所谓的等时代理)和第二服务类代理类型(即所谓的尽力而为cos代理)。如所看到的,代理115中的每一个都可以将请求信息传达至准许仲裁器120。进而,准许仲裁器120可将对应控制类型信息传达回至代理。此外,等时代理(即在图1的实施例中代理115-1和115-3)进一步包括附加链路来将请求最后期限信息传达至准许仲裁器120。为此,这些代理可进一步被配置成从也耦合至准许仲裁器120和调度器仲裁器130二者的全局定时器150接收全局定时信息。在图1的实施例中,准许仲裁器120可被配置成接收来自代理115的进入请求(以及来自等时代理的请求最后期限信息)并且选择适当请求来准许去往调度器仲裁器130。为了帮助其仲裁过程,准许仲裁器120从进一步耦合至调度器仲裁器130的一组配置寄存器160接收配置信息。此外,请求和一致性跟踪器140可被耦合至仲裁器120和130。一般来说,跟踪器140可包括多个记分板142、数据缓冲器144和对应的地址标签存储装置143、控制队列146和其他资源(诸如各种缓冲器、诸如资源分配逻辑148的逻辑、等等)。在一些实现方式中,标签阵列和数据缓冲器可被定位在除跟踪器外的别处。应该指出,图1的框图意图是非限制性的,并且其他元件可存在于各种实施例中。共享存储器结构可包括在由准许仲裁器可以对来自请求代理的请求准予之前被首先分配的某些有限资源。这些资源包括内部数据缓冲器和地址标签存储装置中的可用条目。其他有限资源包括存储器调度器和请求跟踪器记分板中的可用条目。在对于结构的内部数据缓冲器、标签阵列和存储器调度器记分板的资源中存在一对一对应性。在一个实施例中,这些资源被分配给存储器的预定区域(例如诸如64字节的高速缓存线宽度)。每个有效请求也在请求和一致性跟踪器中被分配其自己的条目,但是对存储器中同一区域的多个请求共享数据缓冲器、标签阵列和存储器调度器记分板中的同一条目。尽管对于多于一个请求来说被分配给同一数据缓冲器、标签阵列和调度器记分板条目是可能的,但是对于请求和一致性跟踪器中的所有未完成读取请求来说仅一个读取请求被调度至存储器控制器。用于所有设备的请求接口连接至结构的准许仲裁器。等时设备使用请求总线的最后期限字段来向结构指示完成该请求所需的延时。结构向被附接至该结构的所有等时设备发送全局定时器值。对于要被发送至结构的每个请求,等时设备(例如在最后期限逻辑中)确定完成请求需要的所需延时并且将该值添加至全局定时器的当前值,以便创建请求最后期限。不同方法可被不同等时设备用来确定对于请求所需的延时,但是所有等时设备使用请求接口的最后期限字段向结构指示请求延时。在一个实施例中,准许仲裁器具有两个级别的优先级。在仲裁器中存在用于紧急等时请求的高优先级路径。如果请求代理被配置为等时代理且请求的最后期限字段小于存储在指定了阈值(被称为“紧急阈值”)的配置寄存器中的值,则请求被视为紧急。准许仲裁器还具有用于尽力而为请求和用于不被视为紧急的等时请求的低优先级路径。使用在高优先级仲裁的获胜方和低优先级仲裁的获胜方之间进行选择的优先级选择器来完成最终级别的仲裁。在一个实施例中,准许仲裁器最终选择器具有可以使用配置寄存器选择的两个模式。第一模式是固定优先级模式,在其中假设在准许仲裁器的输入端处存在至少一个高优先级请求,选择器在选取低优先级仲裁路径的获胜方之前选取高优先级仲裁路径的获胜方。最终选择器的第二模式是加权轮询模式,在其中最终选择器在对n个高优先级请求准予之后在对高优先级路径准予到对低优先级路径准予之间进行切换。选择器然后在切换回到对来自高优先级路径的请求准予之前对来自低优先级路径的获胜方的m个低优先级请求准予。在一个实施例中,n和m的值是使用配置寄存器来指定的。图2是公开了根据本说明书的一个或多个示例的准许仲裁器的进一步细节的框图。如图2中所示,仲裁器120从请求代理接收进入请求。在该示图中,请求代理115-0和115-1是非等时代理或尽力而为代理,而代理115-2和115-3是等时代理。要指出,等时代理可包括或被耦合至用来计算对于请求所需的延时的最后期限确定逻辑118。在其中代理中的至少一些是第三方ip块的实施例中,该逻辑可以在将代理耦合至共享存储器结构的包装器或接口逻辑中实现。在所示的实施例中,准许仲裁器120包括第一基于年龄的仲裁器122和第二基于年龄的仲裁器124,其分别对应于低和高优先级基于年龄的仲裁器。因此如所看到的,来自所有代理115的请求被首先提供给仲裁器122,而仅来自等时代理115-2和115-3的请求被提供给第二基于年龄的仲裁器124。为了确定来自等时代理之一的特定请求是否具有紧急状态,一对最后期限检查器逻辑120-1和120-n均被耦合以从等时代理中的对应一个接收请求,以及从全局定时器150接收全局定时信息。基于由代理提供的最后期限信息与全局定时信息的比较,可以将针对对应请求的紧急状态的指示提供给第二基于年龄的仲裁器124。在操作中,基于年龄的仲裁器122和124操作为从一组进入请求选择仲裁获胜方。在所示的示例中,该确定部分基于来自存储针对每个代理的年龄值的年龄存储装置126的信息。来自每个仲裁器的对应获胜方可被耦合至优先级仲裁器选择器125,其基于操作模式选择对应请求以提供给调度器仲裁器130(图1)。为此,优先级仲裁器选择器125可至少部分基于优先级权重存储装置129中的信息来选择针对对于调度器仲裁器的准许的请求。应该指出,图2的框图意图是非限制性的,并且其他元件可存在于各种实施例中。加权的基于年龄的仲裁细节由准许仲裁器实现的基于年龄的算法是这样的,以使得自从由仲裁器上一次准予以来已等待最长时间的请求代理将被给予最高优先级级别。一旦代理已经接收到最高优先级级别,针对该代理的优先级级别将不会改变,除非该代理已经被仲裁器准予。以这种方式,通过确保针对请求代理的优先级级别可以直到请求代理已经被仲裁器准予才在优先级级别中增加,可以避免在轮询仲裁的某些实施例中可能发生的饥饿问题。准许仲裁器还允许向所有请求代理指派代理权重。权重被用来为每个请求代理分配请求带宽的百分比。在一个实施例中,经由存储在代理权重配置寄存器中的值来为每个代理指定权重值。在一个非限制性示例中,被分配给代理的请求带宽的百分比等于代理权重除以所有代理的权重和。加权的基于年龄的算法准许仲裁器加权的基于年龄的算法是基于由仲裁器上一次对请求代理准予时的相对年龄。对于连接至准许仲裁器的每个请求代理,存在实例化的一个年龄计数器和实例化的一个权重计数器。准许仲裁器中的高优先级仲裁路径和低优先级仲裁路径二者共享用于连接至该准许仲裁器的代理的公共年龄和权重计数器。由最终选择器(即优先级仲裁器选择器125)在选取最终仲裁获胜方之后确定对请求代理的年龄和权重寄存器的更新。在一个示例中,响应于接收到对准许仲裁器的重置输入来首先初始化用于所有请求代理的年龄寄存器(例如年龄存储装置126的年龄寄存器)。当重置断言(assert)时,年龄寄存器被初始化为在0处开始且在值n-1处结束的范围中的唯一值,其中值n等于连接至准许仲裁器的请求接口的数目。在通过请求代理来断言任何请求之前,根据结构的代理权重配置寄存器中的编程值来初始化代理权重计数器(例如权重存储装置128的代理权重计数器)。一旦权重计数器初始化,对于针对代理所准予的每个请求,使用于该代理的计数器递减1。一旦代理的权重计数器到达零并且如果由准许仲裁器再次对该代理准予,则利用配置寄存器中针对该代理的权重所编程的值来重新加载计数器。在一个实施例中,在第一和第二基于年龄的仲裁器122和124中执行的基于年龄的仲裁方法使用请求位向量(每个仲裁器具有其自己的向量)来确定仲裁的获胜方。当针对代理断言请求时,仲裁器使用针对请求代理的年龄值作为该请求的优先级级别。针对仲裁器的优先级级别以及因此的位向量宽度的范围是从0至n-1。在一个实施例中,基于年龄的算法保证针对所有请求代理的年龄值是唯一的并且每个仲裁存在仅一个获胜方。当用于请求仲裁的获胜方的权重计数器已到达零时仲裁器更新用于所有代理的年龄寄存器。在一个实施例中,根据保证针对代理的年龄值是唯一的以下规则来更新用于所有代理的年龄寄存器:a.规则1:当代理的年龄等于仲裁的获胜方的年龄时,用于该代理的年龄寄存器被设置成零以指示最年轻的请求年龄或最低优先级。b.规则2:当代理的年龄小于仲裁的获胜方时,代理的年龄寄存器递增1。c.规则3:当代理的年龄大于仲裁的获胜方时,代理的年龄寄存器不改变。图3是根据本说明书的一个或多个示例的用于在确定仲裁获胜方时更新针对代理的年龄值的方法的流程图。该方法可在一个示例中被执行,以在获胜方的权重值等于零时更新年龄值。如所看到的,可由优先级仲裁器选择器执行的方法200开始于确定代理的年龄值是否等于获胜方值(判定块210)。如果是这样的话,控制传递到块215,在那里针对该获胜代理的年龄值可以被更新为最低优先级级别,其在一个实施例中可等于零。根据块215和判定块210二者,控制传递到判定块220,在那里可以确定年龄值是否小于获胜方值(即对应于代理的年龄)。如果是这样的话,控制传递到块225,在那里代理的年龄值可以被更新,例如被递增。如果这些状况都没有发生,则代理的年龄大于仲裁的获胜方,并且照此针对该特定代理的年龄值不改变。要指出,当获胜方被选择时可以在每个仲裁回合的结论下针对每个代理执行方法200。应该指出,图3的流程图意图是非限制性的,并且其他操作可存在于各种实施例中。图4是根据本说明书的一个或多个示例的准许仲裁器状态机的框图。如图4中所示,可存在于图1的准许仲裁器120内的状态机250首先从重置断言进入到初始化(init)状态255中。根据该状态,控制传递到活动状态260,其中只要没有接收到请求就对其进行保持。当接收到请求并且经准予代理具有零的权重时,控制传递到更新年龄状态270,其中年龄存储装置被更新并且用于仲裁获胜方的权重计数器被重新加载为预定值(例如从配置寄存器获得)。控制然后根据是否存在附加请求和经准予代理的权重的值而传递到活动状态260、递减代理权重状态280中的一个,或者保持在更新年龄状态270。类似地,在递减代理权重状态280处,获胜方仲裁权重计数器被递减。但是在这里不执行权重计数器重新加载。应该指出,图4的流程图意图是非限制性的,并且其他状态和操作可存在于各种实施例中。图4的状态机的状态和描述包括以下内容:图5是根据本说明书的一个或多个示例的用于在准许仲裁器中执行第一级别仲裁的方法300的流程图。如图5中所示,方法300可在准许仲裁器内被执行,其是出于执行进入存储器请求之间的仲裁以及基于仲裁来更新各种年龄和权重值这两方面的目的。如图5中所看到的,方法300可以开始于从耦合至结构的设备接收存储器请求(块310)。更具体地,为了说明与来自延时敏感设备的基于最后期限的请求有关的操作,我们可以在一个示例中假设该存储器请求包括最后期限值或与最后期限值相关联,并因此从等时或延时敏感设备来提供该存储器请求。作为一个此类示例,该延时敏感设备是媒体播放器。如看到的,控制传递到判定块315,在那里可以确定最后期限值是否大于延时阈值。在一个示例中,该延时阈值是从请求被接收到的时间一直到其被完成为止的最小延时(例如通过将所请求的数据提供回至针对写入请求提供写入完成的请求设备)。要指出,在一个实施例中最后期限值是请求设备对于处理存储器请求而言可以容忍的最大延时。如果确定最后期限值大于延时阈值,则控制传递到块320b,在那里存储器请求被转发至低优先级仲裁器。否则,控制传递到块320a,在那里存储器请求被转发至高优先级仲裁器。要指出,存在并行路径以使得在块325(块325a和325b)处在对应仲裁器中执行仲裁,其是基于与针对向对应仲裁器提供请求的设备的年龄值相关联的位向量。接下来,在块330(块330a和330b)处,获胜存储器请求被转发至最终仲裁器。在块335处,执行最终仲裁以选择获胜方存储器请求。取决于用于该最终仲裁器的配置的模式,可以仅从高优先级仲裁器选择获胜方请求,或者可发生高优先级路径和低优先级路径之间的加权。因此,在该点处,获胜存储器请求被转发至存储器调度器记分板,在那里该存储器请求可被存储在条目中以由此使存储器调度器仲裁器中的仲裁能够考虑该存储器请求。此外,可响应于由最终仲裁器对获胜方的选择来执行各种更新操作。具体来说,在判定块340处,可以确定获胜方代理的权重值是否等于零。如果是这样的话,控制传递到块345,在那里该权重值可以被更新为其配置值,例如被存储在共享存储器结构的配置寄存器中。控制接下来传递到块350,在那里针对所有代理的年龄值可以被更新(块350)。为此,所有非获胜代理可使它们的年龄值递增,同时获胜代理可使其年龄值被设置成最低优先级值(例如零)。如果作为代替在判定块340处确定获胜方代理的权重值不为零,则控制传递到块355,在那里获胜方代理的权重值被递减。应该指出,图5的流程图意图是非限制性的,并且其他操作可存在于各种实施例中。共享存储器结构共享资源分配存储器结构包括允许结构内共享资源的公平分配的逻辑,例如图1的资源分配逻辑148。在一个实施例中,这些共享资源是结构的内部数据缓冲器、地址标签存储装置和请求跟踪器记分板。因为不存在用于请求代理中的任一个的专用资源,所以机制可以限制在结构中对于每个代理而言未决的未完成请求的数目,同时还例如通过在这些共享资源中预留虚拟条目来允许针对代理预留条目。该结构虑及代理限制的规定以防止任一个请求代理用光结构的所有可用共享资源。存储器调度算法的一部分处理最小化读取到写入周转时间对存储器技术的性能影响。为了最小化存储器调度器在调度读取请求至调度写入请求之间进行切换的次数,冲刷池(flushpool)被用于对写入请求排队。冲刷池允许以存储器为目标的写入请求在存储器结构中被累加,直到已经接收到足够的写入请求以允许结构的存储器调度器将写入请求作为背靠背(back-to-back)请求的突发(burst)发送至存储器控制器。为了防止结构中的所有可用资源被冲刷池用光,可以指定冲刷限制。当被指定时,冲刷限制使结构在准许仲裁器处阻止来自所有代理的新写入请求,直到冲刷池中条目的数目小于为该冲刷池所编程的值。用于写入请求的存储器结构冲刷池当从请求代理接收到写入请求时,结构将写入数据从请求代理传送至内部数据缓冲器。一旦新的数据被写入到结构的内部数据缓冲器并且从代理的视角来看该请求被引退,缓冲器条目就被视为处于“冲刷池”中。对于一致存储器业务,结构可从请求代理接收探听(snoop)请求。探听请求可以是对于存储器的读取请求或将请求写入。当结构从请求代理接收探听读取或写入请求时,它将探听请求发送给耦合至结构的所有高速缓存代理。该高速缓存代理将对命中它们的高速缓存的探听请求做出响应,并且将针对已经被高速缓存代理修改的高速缓存线返回写回(wb)数据。wb数据然后被写入到结构的内部数据缓冲器中并且然后被视为包括在以存储器为目标的写入请求的冲刷池中。当冲刷池中的条目的数目达到针对冲刷限制所编程的值时,在准许仲裁器处阻止例如如通过对请求操作码字段的解码所确定的新写入请求。存储器结构预留和限制存储器结构允许使用代理预留配置寄存器针对任何代理指定预留。通过使用这些配置寄存器,用户可以针对每个代理指定要预留的存储器结构中条目的数目。针对代理预留的条目是分配给代理的第一条目和针对代理要被引退的最后条目。为了确定代理的预留条目是将被分配还是引退,每个代理具有与配置寄存器中指定的值进行比较的请求计数器。如果请求计数器中的值小于或等于配置寄存器中的值,则代理的预留条目将被使用。用于为代理提供预留条目的机制会随着满阈值限制而变化,因为针对请求代理而分配或释放所预留的条目。最初,通过从记分板中的条目总数减去针对所有代理预留的条目的总数(例如,如由配置寄存器指定的)来计算针对所有代理的满阈值。当预留条目被分配给代理时,累加器被用来基于已经被使用的预留条目的总数来调整满阈值。当存储器结构中未决请求的总数达到该经调整的满阈值时,已使用它们的预留条目或没有指定预留条目的代理被阻止。尚未使用它们的预留条目的代理不被准许仲裁器阻止,直到它们已经使用所有它们的预留条目并且未决请求的总数达到经调整的满阈值限制。还可以在存储器结构的配置寄存器中指定代理限制。在一个实施例中,可通过将用于代理的请求限制设置成零来禁用这些代理限制。当代理限制被禁用时,可向任何代理分配请求跟踪器的所有现有条目。为了防止单个代理使用所有请求跟踪器条目,可以针对代理指定请求限制。当代理的请求计数器达到针对代理所指定的请求限制时,禁用针对该代理输入至准许仲裁器的请求。当请求跟踪器引退针对代理的请求并且该代理的请求计数器变得小于代理的请求限制时,启用针对该代理输入至准许仲裁器的请求。图6是根据本说明书的一个或多个示例的资源分配逻辑的一部分的框图。如图6中所示,逻辑360可被用于控制在所有代理之间共享的各种资源的分配。如所看到的,加法器368基于从配置存储装置365接收到的代理预留值来确定预留条目的总数。在减法器370处从该总预留条目值减去标签条目的数目。通过触发器372将结果得到的值提供给加法器375,该加法器375将该值与从触发器374接收到的所使用的预留条目的数目进行组合,如下面进一步所述的基于递增和递减预留计数值来交替地递增和递减该预留条目的数目。照此,由加法器375生成的和对应于提供给比较器382的一个输入端的经调整的满阈值,该比较器382进一步接收来自触发器376的所分配的标签条目的数目。如果确定经调整的满阈值小于或等于所分配的标签条目的该数目,则满标志被生成并用于掩蔽不具有预留条目或已使用它们的预留条目的代理的请求。如进一步所看到的,另一比较器380被配置成接收给定请求器的预留配置值和针对该请求器的请求计数器值(来自触发器378)。比较器因此生成关于请求器是否具有任何自由预留条目的指示,其作为输入被提供给进一步接收针对该信道的条目的信道准予和引退的指示的一对与(and)门384和385。照此,这些与门因此分别生成针对对应请求器的递增值和递减值。对其他请求器执行相似的逻辑和操作,其中所有递增和递减预留值被提供给分别生成递增预留计数值和递减预留计数值的对应或(or)门386和387。最后,将针对请求器的请求计数值连同针对该请求器的经配置的限制值一起提供给另一比较器390,以由此确定该请求器是否已达到其限制。如果是这样的话,该限制的指示被用来掩蔽掉用于进一步仲裁的来自该代理的请求。应该指出,图6的框图意图是非限制性的,并且其他操作可存在于各种实施例中。共享存储器结构调度器仲裁细节实施例可结合多个调度算法以增强跨越支持不同存储器技术的多个soc的重用。结构的存储器调度器逻辑包含高级qos调度算法,并且还被优化以最小化通常在大多数存储器技术中发现的性能瓶颈。使用例如dram存储器而发生的典型性能瓶颈包括低功率存储器状态的进入和离开、读取-写入周转时间、对同一dram库但对存储器的不同行的连续存储器访问、以及对不同dram存储器库的连续存储器访问。通过将复杂无序调度算法包括在共享存储器结构调度逻辑中,可以通过将简化的技术特定约束求解器附接于结构来使该结构适于许多不同soc,以便支持它们对存储器技术或配置的独特要求。除了改进存储器调度逻辑的可移植性之外,实施例还提供存储器请求延时的可预测性,因为高级无序调度算法和qos调度算法的组合导致了最大请求延时的改善的可预测性,因为存储器控制器具有对于重新排序存储器请求的少得多的灵活性。一旦请求被准许仲裁器准予,它就被排队到调度器记分板中。调度器记分板存储关于该请求的信息,调度器记分板使用该信息来将请求转发至存储器控制器以便执行对存储器的读取或写入。在一个实施例中,该信息包括请求地址、请求长度、命令类型(读取或写入)、服务类种类、存储器信道、存储器库、存储器等级和页面命中/未命中状态。存储器调度器最旧可用队列实施例提供基于发送至存储器控制器的请求历史的无序页面感知调度,尽管该结构并不直接了解存储器库的真实状态。更具体地,结构的存储器调度器将调度器记分板用作已经被发送至存储器的请求的历史缓冲器。因为调度器记分板被用来反映请求的历史,所以它试图将针对请求的状态信息尽可能长地保持在记分板中。存储器调度器使用被称为最旧可用队列(theoldestofavailablequeue)的构造来确定可用于被再分配的最旧记分板条目。最旧可用队列也被存储器调度器用来避免可能由于对存储器的请求的无序调度而引起的饥饿问题。结构的存储器调度器使用最旧可用队列来确定有多少个同一服务类种类和类型、读取或写入的请求已经绕过对存储器的最旧未决请求。一旦已绕过最旧请求的请求数目达到预编程的限制(例如由软件设置),结构的存储器调度器就禁用请求的无序调度并且对最旧未决请求准予。如上文所提到的,调度器使用最旧可用队列来对其记分板中的所有请求的相对年龄保持跟踪。当由准许仲裁器对以新存储器地址为目标的请求准予时,到调度器记分板中的索引指针被排队到最旧可用队列的尾条目中,该尾条目然后被视为最新请求。当所有未决请求已完成将数据从请求代理传送至存储器控制器/将数据从存储器控制器传送至请求代理时,记分板条目可用于被再分配并且可以被再分配用于由准许仲裁器准予的新请求。由于无序调度,最旧可用队列中的最旧条目可能不可用于再分配。为了选择要被再分配给新请求的记分板条目,调度器检测对于记分板条目的所有未完成请求是否已经完成。在一个实施例中,该调度器使用具有与记分板条目的数目相等的长度的请求位向量来指示哪些条目可用于再分配。在请求位向量中设置为1的位指示与该位位置相对应的条目可用于再分配。然后将请求位向量发送至最旧可用队列。最旧可用队列使用存储在队列中的索引来选择与针对队列的该条目的请求相对应的请求向量中的位。队列的每个条目都与请求向量中的唯一位相关联并且从队列中的最旧条目开始执行“找到第一个(findfirst)”函数,以确定要被再分配的最旧可用请求。在确定要被再分配的最旧可用条目之后,从该最旧可用队列输出针对该条目的记分板索引。图7是根据本说明书的一个或多个示例的记分板索引生成逻辑的框图。如图7中所示,逻辑400包括多个触发器410-0—410-n,其以串行配置耦合来存储对应记分板索引。如所看到的,触发器410被配置成接收与到调度器的记分板中的索引指针相对应的记分板索引,其也是对于标签阵列和数据缓冲器的索引。触发器410可被配置在从最新(即触发器410-0)到最旧(即触发器410-n)的顺序中。在非限制示例中,每个触发器都可以是d型触发器。在其他实施例中,可使用任何适当的存储元件。如所看到的,每个触发器410的输出端都被耦合至对应的多个多路复用器420-0—420-n中的一个,该多个多路复用器420-0—420-n中的每一个都进一步被配置成接收记分板请求向量的位。照此,该位向量例如经由已设置位提供指示来指示对应的记分板条目可用于再分配。使用来自多路复用器420的输出,可以从比较器输出端(诸如从比较器420-n)直接地生成或者经由逻辑门430-0—430-n(在所示的实施例中其被配置为具有从对应的多路复用器420接收的第一输入和与对应的或门425-0—425-(n-2)的逆输出端相对应的第二输入的与门)中的对应一个来生成准予信号。以这种方式,每次仅准予信号中的单个信号可以是有效的。如在图7中进一步看到的,准予输出信号可被耦合至多个与门435-0—435-n中的对应一个,该与门435-0—435-n还被配置成接收进入索引信号。进而,来自与门435的输出可以被耦合至或门440以由此输出与最旧可用条目相对应的记分板索引,以使得执行“1热(1-hot)”多路复用器功能来提供经准予请求的记分板索引的“1热(onehot)”多路复用。应该指出,图7的框图意图是非限制性的,并且其他元件可存在于各种实施例中。共享存储器结构存储器调度细节在一个示例中,结构存储器调度器包含三个状态机,它们一起工作来调度发送至存储器控制器的请求。图8是根据本说明书的一个或多个示例的用于调度器仲裁器的状态机的框图。如图8中所示,状态机500(其可以以硬件、软件和/或固件来执行,诸如图1的调度器仲裁器130)可以开始于在系统的重置时进入初始化状态init505中。控制接下来传递到自刷新状态机510,其包括“进入”自刷新状态512、“请求”自刷新状态514和“离开”自刷新状态516。如在图8中看到的,控制从离开自刷新状态516传递到“读取/写入”准予状态机520,其进而包括“准予读取请求”状态522和“准予写入请求”状态524。控制从这些状态进而传递到“读取”状态机530,其包括多个状态,即“绕过准予”状态532、“高优先级读取请求”准予状态534、“尽力而为”准予读取请求状态536和“低优先级”等时准予读取请求状态538。应该指出,图8的框图意图是非限制性的,并且其他元件和修改可存在于各种实施例中。自刷新状态机。实施例可控制何时允许存储器进入和离开低功率存储器状态,也被称为自刷新状态。自刷新状态机负责控制何时将指示发送给存储器控制器以进入或离开自刷新。对于尽力而为读取请求,自刷新状态机立即转变至离开自刷新状态。对于等时读取请求,存储器调度器检查请求最后期限来确定是否要离开自刷新,以便满足对于该请求所需的读取延时。为了确定是否需要离开自刷新以便满足等时请求要求,存储器调度器从全局定时器的当前值减去请求的最后期限。针对结构中被编程为反映对于存储器控制器离开自刷新且结构将数据返回至请求代理而言所需要的最差情况延时的配置寄存器来检查减法的结果。对于写入请求,结构对冲刷池中的脏(dirty)条目的数目计数并且针对可编程阈值(被称为冲刷高水标)来检查结果。如果脏条目的数目超过冲刷高水标的值,则自刷新状态机将控制传递到离开自刷新状态。此外,结构检查对其中由准予仲裁器阻止请求的同一标签地址的读取/写入冲突。当结构确定请求被地址冲突、代理限制阻止时或者如果请求跟踪器或存储器调度器记分板为满时,控制从自刷新状态机传递到离开自刷新状态。在一个实施例中,结构还包含可以被编程为使进入自刷新禁用的配置寄存器。当存储器寄存器将指示发送至存储器控制器以离开自刷新时,请求可开始被发送至存储器控制器。该存储器调度器继续将指示发送至存储器控制器以在它主动将存储器请求发送至存储器控制器的同时保持离开自刷新。当存储器调度器完成将所有读取请求发送至存储器控制器并且冲刷池中的写入请求的数目低于临时高水标限制时,存储器调度器转变至请求自刷新状态。在请求自刷新状态中,如果准许仲裁器没有对新的请求准予,则在被称为“进入自刷新延迟”的可编程延迟值被满足之后状态机转变至“进入自刷新”状态。在一个实施例中,该延迟被编程于结构中的配置寄存器中。如果由准许仲裁器对新的请求准予,则在某些情况下自刷新状态机可转变至“离开自刷新”状态。如果接收到新的尽力而为读取请求或者如果接收到导致冲刷池中条目的数目超过在冲刷高水标配置寄存器中编程的数目的写入请求,则自刷新状态机从请求自刷新状态转变回至离开自刷新状态。如果在状态机处于请求自刷新状态时接收到等时读取请求,则针对被称为“进入自刷新”阈值的编程值来检查请求的最后期限值。如果最后期限延时大于进入自刷新阈值,则状态机继续在请求自刷新状态中。如果针对请求的最后期限延时小于进入自刷新阈值,则该状态机将转变至离开自刷新状态。自刷新状态机将状态驱动至存储器控制器以保持离开自刷新,直到状态机转变至进入自刷新状态。一旦在进入自刷新状态中,状态机就将指示发送给存储器控制器以进入自刷新。下面的表2是根据本说明书的实施例的自刷新状态机的描述。当前状态条件描述下一状态输出未知重置重置引脚被断言进入自刷新结构将指示驱动至存储器控制器以进入自刷新进入自刷新存储器调度器ldl冲刷条目的数目小于冲刷hwm且没有尽力而为读取请求且没有最后期限时间小于离开自刷新阈值的isoc读取请求进入自刷新结构将指示驱动至存储器控制器以进入自刷新进入自刷新离开自刷新1冲刷条目的数目大于冲刷hwm或尽力而为读取请求或最后期限时间小于离开自刷新阈值的isoc读取请求或isoc读取请求被代理限制或结构记分板全指示阻止离开自刷新结构将指示驱动至存储器控制器以进入自刷新离开自刷新存储器调度器有效等时或尽力而为读取请求未决或冲刷池条目的数目高于临时hwm离开自刷新结构将指示驱动至存储器控制器以离开自刷新离开自刷新请求自刷新没有等时或尽力而为读取请求未决且冲刷池条目的数目低于临时hwm请求自刷新结构将指示驱动至存储器控制器以离开自刷新请求自刷新离开自刷新2接收到最后期限小于进入自刷新阈值的等时读取请求或接收到尽力而为读取请求未决,冲刷池条目的数目现在高于冲刷hwm离开自刷新结构将指示驱动至存储器控制器以离开自刷新请求自刷新请求自刷新没有接收到尽力而为读取请求且冲刷池条目的数目低于冲刷hwm且进入自刷新定时器大于进入自刷新延迟值进入自刷新结构将指示驱动至存储器控制器以进入自刷新读取/写入准予状态机在一个实施例中,存储器调度器使用可配置的阈值来指定何时开始和停止将一连串写入请求传送至存储器控制器。存储器调度器可执行不同类型的写入数据向存储器的传送,例如高优先级传送和低优先级传送(在本文中也分别被称为对存储器的写入请求的高优先级冲刷和对存储器的写入请求的临时冲刷)。当冲刷池中条目的数目达到或超过阈值(冲刷高水标)时,存储器调度器开始调度对存储器的高优先级写入冲刷并开始将写入请求发送至存储器控制器。存储器控制器继续使用高优先级冲刷机制调度写入请求,直到冲刷池中条目的数目达到或小于阈值(冲刷低水标)为止。临时冲刷还可由结构存储器调度器来执行。当存储器调度器已完成将所有读取请求发送至存储器控制器并且冲刷池中条目的数目超过阈值(临时冲刷限制)时,触发临时冲刷。在一个实施例中,因为性能原因,临时冲刷限制可以通常被设置成低于高水标,但是大于或等于低水标。在一些情况下,该临时冲刷限制可以被设置成0,以将所有写入数据冲刷到存储器。一旦最后的读取请求被发送至存储器控制器,如果冲刷池中条目的数目高于临时冲刷限制,被称为临时冲刷定时器的计数器每个时钟周期开始递增。如果结构没有接收到对存储器的新读取请求并且临时冲刷定时器达到由临时冲刷延迟指定的值(其是存储在配置寄存器中的阈值),则存储器调度器开始将写入请求发送至存储器控制器。该临时冲刷继续,直到冲刷池中条目的数目小于临时冲刷限制为止或者直到结构接收到新读取请求为止。读取/写入准予状态机负责从准予读取请求切换至准予写入请求。在一个实施例中,存储器调度器可被配置成允许写入请求具有超过读取请求的优先级或者当在读取请求和写入请求之间进行切换时使用权重(以便防止当系统被写入请求饱和时读取的饥饿)。当权重被启用时,存储器结构使用配置寄存器来独立地指定读取和写入权重。下面的表3是根据本说明书的实施例的读取/写入准予状态机的描述。当前状态条件描述下一状态输出未知重置重置引脚被断言准予读取请求存储器调度器向存储器控制器发送读取请求准予读取请求准予读取请求冲刷条目的数目小于冲刷hwm且读取/写入权重被禁用或冲刷条目的数目大于hwm且读取/写入权重被启用且读取权重计数大于0准予读取请求存储器调度器向存储器控制器发送读取请求准予读取请求准予写入请求冲刷条目的数目大于冲刷hwm且读取/写入权重被禁用或冲刷条目的数目大于hwm且读取/写入权重被启用且读取权重计数等于0或没有读取请求未决且冲刷条目的数目大于临时hwm且临时定时器已到期准予写入请求存储器调度器向存储器控制器发送写入请求准予写入请求准予写入请求冲刷条目的数目大于冲刷hwm且读取/写入权重被禁用或冲刷条目的数目大于lwm且读取/写入权重被启用且写入计数大于0准予写入请求存储器调度器向存储器控制器发送写入请求准予写入请求准予读取请求未决读取请求且冲刷条目的数目小于冲刷lwm或未决读取请求且冲刷条目的数目大于lwm且读取/写入权重被启用且写入权重计数等于0准予读取请求存储器调度器向存储器控制器发送读取请求读取状态机读取状态机负责在高优先级等时读取请求、尽力而为读取请求和低优先级等时读取请求之间进行切换。读取状态机可以被配置成以多个模式之一来操作。在一个实施例中,提供两个这样的模式。第一模式是固定优先级模式,在其中读取状态机向高优先级等时读取给予最高优先级、向尽力而为读取请求给予中优先级,并且向低优先级等时读取请求给予最低优先级。第二模式是启用用于在高优先级等时读取和尽力而为读取请求之间进行切换的权重的使用。在该模式中,低优先级等时请求仅在不再存在任何高优先级等时或尽力而为读取请求时被准予。表4是根据本说明书的读取状态机的描述。当前状态条件描述下一状态输出未知重置重置引脚被断言绕过准予启用从准许仲裁器的输出端至存储器控制器的绕过路径绕过准予没有读取请求在调度器中没有读取请求未决绕过准予启用从准许仲裁器的输出端至存储器控制器的绕过路径绕过准予高优先级isoc请求无序自刷新且高优先级isoc请求未决准予高优先级isoc请求存储器调度器向存储器控制器发送高优先级读取请求绕过准予尽力而为请求无序自刷新且没有高优先级isoc请求且尽力而为请求未决准予尽力而为请求存储器调度器向存储器控制器发送尽力而为读取请求绕过准予低优先级isoc请求无序自刷新且没有高优先级isoc请求且没有尽力而为请求且低优先级isoc请求未决准予低优先级isoc请求存储器调度器向存储器控制器发送低优先级读取请求准予高优先级isoc请求高优先级isoc请求无序自刷新且高优先级isoc请求未决且isoc权重不等于0准予高优先级isoc请求存储器调度器向存储器控制器发送高优先级读取请求准予高优先级isoc请求尽力而为请求无序自刷新且没有高优先级isoc请求未决且isoc权重等于0且尽力而为请求未决准予尽力而为请求存储器调度器向存储器控制器发送尽力而为读取请求准予高优先级isoc请求低优先级isoc请求无序自刷新且没有高优先级isoc请求且没有尽力而为请求且低优先级isoc请求未决准予低优先级isoc请求存储器调度器向存储器控制器发送低优先级读取请求准予高优先级isoc请求没有读取请求未决无序自刷新且没有高优先级isoc请求且没有尽力而为请求且没有低优先级isoc请求绕过准予启用从准许仲裁器的输出端至存储器控制器的绕过路径准予尽力而为请求尽力而为请求无序自刷新且没有高优先级isoc请求或者isoc权重等于0且尽力而为请求未决准予尽力而为请求存储器调度器向存储器控制器发送尽力而为读取请求准予尽力而为请求高优先级isoc请求无序自刷新且高优先级isoc请求未决且isoc权重不等于0或be权重等于0准予高优先级isoc请求存储器调度器向存储器控制器发送高优先级读取请求准予尽力而为请求低优先级isoc请求无序自刷新且没有高优先级isoc请求且没有尽力而为请求且低优先级isoc请求未决准予低优先级isoc请求存储器调度器向存储器控制器发送低优先级读取请求准予尽力而为请求没有读取请求未决无序自刷新且没有高优先级isoc请求且没有尽力而为请求且没有低优先级isoc请求绕过准予启用从准许仲裁器的输出端至存储器控制器的绕过路径准予低优先级isoc请求高优先级isoc请求无序自刷新且高优先级isoc请求未决准予高优先级isoc请求存储器调度器向存储器控制器发送高优先级读取请求准予低优先级isoc请求尽力而为请求无序自刷新且没有高优先级isoc请求且尽力而为请求未决准予尽力而为请求存储器调度器向存储器控制器发送尽力而为读取请求准予低优先级isoc请求低优先级isoc请求无序自刷新且没有高优先级isoc请求且没有尽力而为请求且低优先级isoc请求未决准予低优先级isoc请求存储器调度器向存储器控制器发送低优先级读取请求准予低优先级isoc请求没有读取请求未决无序自刷新且没有高优先级isoc请求且没有尽力而为请求且没有低优先级isoc请求绕过准予启用从准许仲裁器的输出端至存储器控制器的绕过路径调度器代理权重存储器调度器将代理权重用于在同一服务类种类内的代理之间按比例划分存储器带宽。在一个实施例中,配置寄存器针对每个请求代理指定权重值,并且针对每个代理提供权重计数器。代理权重配置寄存器在准许仲裁器和存储器调度器之间是公共的。当在用于连接至结构的代理中的任一个的存储器调度器中不存在请求未决时,利用在代理权重配置寄存器中指定的值来加载代理权重计数器。当由准许仲裁器准予请求并且该请求排队到存储器调度器记分板中时,代理id字段连同请求信息一起被存储在存储器调度记分板中。当存储器调度器准予其记分板中的请求时,代理id字段被用来确定请求的源并且用于该代理的权重计数器被递减1。一旦代理的权重计数器已达到零,针对该代理的剩余请求被掩蔽且不再参与调度器仲裁。当由于代理的权重计数器达到零而掩蔽代理以免于仲裁时,存储器调度器继续调度来自剩余代理的请求。一旦用于所有代理的权重计数器已达到零或者如果代理的权重计数器是非零的但不存在针对该代理的剩余请求,则利用来自代理权重配置寄存器的值重新加载所有代理权重计数器。图9是根据本说明书的一个或多个示例的用于执行存储器调度的方法的框图。如图9中所示,方法600可以由共享存储器结构的调度器仲裁器来执行。如所看到的,方法600可以开始于从存储器调度器记分板选择存储器请求以用于递送到存储器控制器(块610)。在确定适当条目时可以考虑到各种因素,包括存储器的状态、各种请求的状态、未决请求的地址位置之间的关系,等等。接下来,在块620处,更新针对所选代理的权重值。在一个实施例中,执行权重值的递减。要指出,尽管针对代理的初始权重值与从也被准许仲裁器使用的配置寄存器获得的权重值相同,但是要理解的是,针对每个仲裁器提供不同的权重计数器以使得能够实现对这些权重值的独立控制。仍参考图9,接下来在判定块630处,可以确定所选代理的权重值是否等于零。要指出,在一个非限制性示例中,该确定在一个实施例中可以是其中零是最低优先级值。如果确定权重值是零,则控制传递到块640,在那里掩蔽该所选代理以免于存储器调度器内的进一步仲裁。控制从判定块630和640二者传递到判定块650,在那里可以确定所有代理的权重值是否等于零。如果是这样的话,控制传递到块660,在那里针对所有代理的权重值可以被更新为例如从结构的配置寄存器获得的它们的配置值。否则,控制从判定块650传递到判定块670以确定在用于具有非零权重值的代理的存储器调度器中是否存在任何剩余的请求。如果是这样的话,这些请求可以被处理(例如经由方法600的另一次迭代)。否则,如果没有附加请求留下,则控制传递到块660,在那里可以如所描述那样更新权重值。应该指出,图9的流程图意图是非限制性的,并且其他元件和修改可存在于各种实施例中。下面的表5提供基于如下针对三个代理的初始权重值而针对多个时钟周期进行存储器调度的示例操作:代理0权重=4代理1权重=2代理2权重=1。表5时钟周期代理0请求代理0请求掩蔽代理0权重计数器代理1请求代理1请求掩蔽代理1权重计数器代理2请求代理2请求掩蔽代理2权重计数器重新加载代理权重代理准予1假假4假假2假假1真没有准予2真假4真假2真假1假准予代理13真假4真假1真假1假准予代理24真假4真假1真真0假准予代理05真假3真假1真真0假准予代理06真假2真假1真真0假准予代理17真假2真真0真真0假准予代理08真假1真真0真真0真准予代理09真假4真假2真假1假准予代理010真假3真假2真假1假准予代理011真假2真假2真假1假准予代理112真假2真假1真假1假准予代理213真假2真假1真真0假准予代理014真假1真假1真真0假准予代理015真真0真假1真真0真准予代理116真假4真假2真假1假准予代理017真假3真假2真假1假准予代理118真假3真假2真假1假准予代理0无序页面感知调度存储器调度器对发送至存储器控制器的请求重新排序并且寻求针对最大存储器可能带宽使优化请求流。存储器调度器包含被编程为向调度器提供关于其附接到的存储器控制器的信息的配置寄存器。在一个实施例中,这些配置寄存器包括关于什么地址位被用于存储器信道、库、等级和行地址的信息。通过使用编程于配置寄存器中的存储器配置信息,存储器调度器确定调度器记分板中的每个请求的库、等级、行和信道。存储器调度器记分板还包含针对每个请求的页面命中状态位,其被用于优化发送至存储器控制器的请求,以使得在将请求发送至不同页面之前将对存储器中同一页面的请求发送至存储器控制器。在初始化之后且在任何请求被发送至存储器控制器之前,存储器调度器清除其记分板中的所有页面命中状态位。当请求被发送至存储器控制器时,存储器调度器更新记分板中的页面命中状态位以指示其他请求是针对存储器中的同一页面还是针对存储器中的不同页面。尽管调度器并不知晓给定存储器库中的页面的实际状态,但是这些页面命中状态位可被用作关于哪些请求是针对最优存储器带宽而要被发送至存储器控制器的最佳候选的提示。当请求被发送至存储器控制器时,存储器调度器将比较针对记分板中未决的所有其他请求的信道、等级和库信息。如果记分板条目的信道、等级和库信息与发送至存储器控制器的请求相匹配,则将该条目的行地址与发送至存储器控制器的请求的行地址进行比较。如果记分板条目的行地址与请求相匹配,则页面命中状态位被设置成1;如果行地址与请求不匹配则页面命中状态位被设置成0,从而指示页面未命中。对于其中信道、等级或库位不同于发送至存储器控制器的请求的记分板条目而言,不发生对页面命中状态的更新。当由准许仲裁器准予新请求并且该新请求排队到调度器记分板中时,将行地址信息与当前处于记分板中的所有条目进行比较。如果新请求的行地址与调度器记分板中的一个或多个条目相匹配,且任何匹配条目的页面命中状态位被设置,则针对新请求的页面命中状态也被设置。如果行地址与记分板中的任何条目都不匹配或者与它相匹配的所有条目都具有设置成零的页面命中状态,则针对新请求的页面命中状态也被设置成零。使用存储在调度器记分板中的页面命中和等级状态信息,存储器调度器基于已经被确定为针对大部分基于dram的存储器技术提供最优带宽的优先级编码调度方案来对发送至存储器控制器的请求重新排序。存储器控制器在准予具有较低优先级级别的请求之前准予较高优先级请求。下面的表6示出根据本说明书的一个实施例的被存储器调度器使用的不同优先级级别。存储器调度器页面感知调度优先级页面命中状态等级状态优先级级别页面命中同一等级优先级级别3(最高)页面命中不同等级优先级级别2页面未命中同一等级优先级级别1页面未命中不同等级优先级级别0(最低)基于年龄的存储器调度和饥饿预防为了防止由于无序页面感知调度算法而引起的请求饥饿,至少部分地将年龄概念用于调度请求。对于每个服务类(cos)种类,存储器调度器包含指定无序(ooo)调度限制的配置寄存器。为了针对等时cos种类提供较短的最大读取延时,ooo调度限制通常被设置成比尽力而为cos种类的ooo调度限制更小的值。存储器调度器针对尽力而为和等时cos种类创建针对其记分板中的所有未决请求的请求命中向量。这些请求命中向量被发送至最旧可用队列,这会确定仍未决的最旧请求。最旧可用队列输出一个热编码的位向量,其具有被设置成1来指示最旧请求的位。当存储器调度器基于其页面感知调度算法来准予请求ooo时,存储器调度器对有多少个不是针对每个cos种类的最旧未决请求的请求被准予进行计数。一旦计数器达到针对cos种类的ooo调度限制(这可通过针对cos种类的最差情况可接受延时而完成的性能分析来确定),页面感知调度逻辑被禁用并且由存储器调度器准予针对cos种类的最旧请求。在针对cos种类的最旧请求被准予的任何时间,针对该cos种类的计数器被重置成零。为了提供针对cos种类的最低可能延时,ooo调度限制可以被编程为零,本质上禁用了针对该cos种类的页面感知调度逻辑。当针对cos种类将ooo调度限制设置成零时,可使用请求年龄来调度对存储器的请求,该请求年龄通过最旧可用队列来确定。尽力而为最大延时饥饿预防对于尽力而为读取请求而言,该结构利用调度器记分板中的最后期限存储信息来存储一个值,其被用于指定针对调度尽力而为请求的最大延时值。记分板是条目池并且存储在记分板中的请求可以是通过也被存储在用于每个请求的记分板中的请求的服务类种类所确定的尽力而为或等时请求。在记分板中的请求是尽力而为读取请求的情况下,最大可允许延时(例如存储在配置寄存器中的编程值)被用于调度该请求。当该请求在记分板中排队并且是尽力而为读取请求时,最大延时值被添加至全局定时器的当前值。一旦全局定时器达到针对尽力而为请求的最大延时所存储的值,就针对该请求忽略页面感知调度,并且导致当该请求是未决的最旧请求时(例如如通过最旧可用队列确定)调度该请求。请求跟踪器写入优先级和权重请求跟踪器负责将数据从请求代理传送至结构的内部存储器缓冲器。被共享存储器结构使用的写入协议使所有写入数据以请求顺序从请求代理传送至结构中的内部存储器缓冲器。在一个实施例中,请求跟踪器使用每个代理的单独链表来保持写入请求的排序。请求跟踪器可在将数据从请求代理传送至内部数据缓冲器之前执行针对写入请求的一致性检查。对于写入请求,请求跟踪器可被配置成支持一个或多个优先级级别。当请求被准许仲裁器准予时,针对该请求的最后期限信息被存储在具有与请求跟踪器中的条目数目相对应的长度的阵列中。该结构使用例如存储在配置寄存器中的阈值来指定何时将请求最后期限值视为高优先级。将针对请求的每个最后期限值与配置寄存器中编程的阈值进行比较。当最后期限延时小于配置寄存器中的值时,针对请求在跟踪器的记分板条目中设置一个位,从而指示该请求是高优先级。当被启用用于两个优先级级别操作时,如果针对代理的写入请求达到链表的首部并且针对请求设置高优先级位,则该写入请求被视为高优先级。如果在代理链表中的任一个的首部处的任何写入请求指示写入请求是高优先级请求,则在被输入至写入请求仲裁器之前,针对其他代理的其他链表的首部处的所有低优先级写入请求被掩蔽。如果在代理链表的首部处存在同一优先级级别的多个请求,则执行仲裁来选择选取哪个代理来传送写入数据。请求跟踪器写入请求仲裁器写入请求仲裁器使用基于加权优先级的公平仲裁器来选择哪个代理传送写入数据。用于写入请求仲裁器的权重被编程于请求跟踪器中的配置寄存器中。写入仲裁器在重置时向每个代理指派唯一的优先级。在每个周期上,仲裁器仅考虑具有准备好传递的数据的请求候选,并且准予请求器具有最高优先级。当被准予时,使请求候选的权重递减1.如果被准予的候选已经具有为零的权重,则仲裁器还如下更新请求候选优先级:被准予的候选的优先级被设置成最低优先级(例如零):具有比被准予的候选更低的优先级的所有候选递增其优先级,并且具有比被准予的候选更高的优先级的所有候选保留其优先级不变。请求跟踪器读取数据返回请求代理支持有序数据返回或者无序数据返回。为了支持无序数据返回,使用顺序id字段。从具有每个请求的代理发送顺序id并且将该顺序id存储在请求跟踪记分板中。按请求顺序返回来自同一代理的具有同一顺序id的请求。针对来自同一代理的具有不同顺序id的请求的数据不需要按请求顺序返回。在一个实施例中,请求跟踪器使用用于确保当读取数据被返回至请求代理时被正确排序的链表。在请求被准许仲裁器准予之前,选取数据要被写入其中的内部数据缓冲器的条目。当请求被准许仲裁器准予时,包括到内部数据缓冲器中的索引的请求信息被转发至请求跟踪器。当数据从存储器控制器返回时,存储器调度器向请求跟踪器转发读取完成指示,其包括到数据正被写入其中的内部数据缓冲器中的索引字段和存储器地址的哪些数据块(chunk)已经完成存储器读取的指示。当请求跟踪器接收到读取完成时,它将索引字段与用于存储在请求跟踪器记分板中的所有请求的索引字段进行比较。如果记分板条目的索引字段与针对请求的读取完成相匹配并且针对读取完成设置用于请求的所有数据块位,则在请求跟踪器记分板中设置一个位,从而指示已完成读取请求。如果读取请求已达到链表的首部并且设置请求跟踪器中的读取完成状态位并且已完成针对请求的所有一致性检查,则该请求可用于将读取数据返回至代理。类似于写入请求,请求跟踪器使用用于记分板条目的请求最后期限信息来指示请求优先级。在一个实施例中,请求跟踪器针对具有准备好返回至请求代理的数据的记分板条目创建两个请求位向量。一个位向量用于低优先级读取请求并且另一个位向量用于高优先级读取请求。请求位向量被输入至请求跟踪器最旧可用队列。最旧可用队列确定对于两个请求命中向量来说哪个请求是最旧的。请求跟踪器具有一个配置模式,当启用该配置模式时将促使在返回用于任何低优先级请求的数据之前从由最旧可用队列选择的最旧高优先级请求返回数据。当不启用高优先级数据返回的支持时,请求跟踪器处理准备好返回具有同一优先级级别的读取数据的所有记分板条目。在该模式中,仅低优先级位向量被用作对最旧可用队列的输入,该输入进而在记分板中确定最旧读取请求。然后将用于被确定为最旧的记分板条目的读取数据返回至请求代理。可在在将各种ip集成到单个管芯上以经由存储器结构将这些ip连接至存储器的许多不同soc或者其他半导体器件中使用实施例。更进一步,根据本说明书的实施例的存储器结构可被用来提供用于满足这些ip中的至少一些的等时要求的qos级别。图10是根据本说明书的一个或多个示例的soc的框图。如图10中所示,soc700是包括多个ip块以及如上所述的共享存储器仲裁器的单个管芯半导体器件。在图10的实施例中,提供多个核心710-0—710-n,它们中的每一个都可以独立地执行指令。在一个实施例中,所有这些核心都具有单个设计(诸如有序核心设计),例如具有英特尔架构tm(诸如基于coretm的设计)。在其他实施例中,核心可以是无序处理器,诸如英特尔架构tm(ia)32核心,诸如英特尔基于coretm的设计。在其他实施例中,可提供异构核心的混合。此外,可提供多个图形引擎(即独立的图形单元720-0—720-n),它们中的每一个独立地执行图形操作。如所看到的,多个核心被耦合至共享高速缓存存储器715(诸如2级(l2)高速缓存),并且类似地,图形引擎被耦合至另一共享高速缓存存储器725。系统代理730经由对应的管芯内互连728和729耦合至这些核心和图形引擎。如所看到的,系统代理730包括共享存储器结构735,其可如本文所描述的那样来配置。各种其他逻辑、控制器和其他单元(诸如功率管理单元)也可存在于系统代理730内。如所看到的,共享存储器结构735与存储器控制器740通信,该存储器控制器740进而耦合至片外存储器(诸如被配置为dram的系统存储器)。此外,系统代理730经由一组互连744耦合至一个或多个内部代理780(诸如各种外围设备)。在一个实施例中,互连744可包括优先级信道互连、边带信道互连和存储器信道互连。类似配置的互连746提供系统代理730和一个或多个片外代理(在图10的实施例中为了易于说明而没有被示出)之间的通信。应该指出,图10的框图意图是非限制性的,并且其他元件和修改可存在于各种实施例中。图11是根据本说明书的一个或多个示例的存在于计算机系统中的部件的框图。如图11中所示,系统800可以包括许多不同部件。这些部件可以被实施为ic、其部分、分立电子设备、或适用于电路板(诸如计算机系统的母板或添加卡)的其他模块,或者被实施为以其他方式并入计算机系统的机壳内的部件。还要指出,图11的框图意图示出计算机系统的许多部件的高级视图,然而,要理解的是,可在某些实现方式中存在附加部件并且此外可在其他示例实现方式中出现所示部件的不同布置。如图11中所示,处理器810(其可以是低功率多核心处理器插座(诸如超低电压处理器))可充当用于与系统的各种部件通信的主处理单元和中央中枢。此类处理器可以被实施为如本文所述的soc。在一个实施例中,处理器810可以是英特尔®架构基于coretm的处理器(诸如i3、i5、i7)或者可从加利福尼亚州圣克拉拉市英特尔公司得到的另一种此类处理器(诸如将一个或多个基于coretm的核心与一个或多个英特尔®基于atom™的核心组合以由此在单个soc中实现高功率和低功率核心的处理器)。然而,要理解,其他低功率处理器(诸如可从以下得到:加利福尼亚州森尼韦尔的高级微设备公司(amd)和来自arm控股有限公司的基于arm的设计或来自加利福尼亚州森尼韦尔的mips技术公司的基于mips的设计或其他被许可方或采用方)作为替代可存在于其他实施例中,诸如苹果(apple)a5或a6处理器。在又一其他实施例中,处理器810可以是在虚拟机中实现为硬件和/或软件的组合的虚拟处理器。处理器810可与系统存储器815通信,该系统存储器815在一个实施例中可以经由多个存储器设备来实施以便提供给定量的系统存储器。为了提供诸如数据、应用、一个或多个操作系统等等之类的信息的持久存储,大容量存储装置820还可经由串行ata(sata)协议耦合至处理器810。在图11中还示出,闪存设备822可例如经由串行外围接口(spi)耦合至处理器810。该闪存设备可提供对系统软件(包括基本输入/输出软件(bios))以及系统的其他固件的非易失性存储。各种输入/输出(对设备的各种输入/输出)设备可存在于系统800内。在图11的实施例中具体示出显示器824,其可以是在机壳的盖部分内配置的高清晰度lcd或led面板。该显示器面板还可提供触摸屏825,例如在显示器面板上外部适配以使得经由用户与该触摸屏的交互,用户输入可以被提供给系统以启用例如关于信息的显示、信息的访问等等的期望操作。在一个实施例中,显示器824可以经由显示器互连被耦合至处理器810,该显示器互连可以被实施为高性能图形互连。触摸屏825可经由另一互连被耦合至处理器810,在一个实施例中该另一互连可以是i2c互连。如图11中进一步所示的,除了触摸屏825结构,借助于触摸,用户输入还可以经由触摸板830来发生,该触摸板830可被配置在机壳内并且还可被耦合至与触摸屏825相同的i2c互连。为了感知计算和其他目的,各种传感器可存在于系统中并且可以以不同方式被耦合至处理器810。某些惯性和环境传感器可通过传感器中枢840(例如经由i2c互连)耦合至处理器810。在图11中示出的实施例中,这些传感器可包括加速度计841、环境光传感器(als)842、指南针843和陀螺仪844。其他环境传感器可包括一个或多个热传感器846,其在一个实施例中可经由系统管理总线(smbus)总线耦合至处理器810。还在图11中看到,各种外围设备可经由低引脚数(lpc)互连耦合至处理器810。在所示的实施例中,各种部件可以通过嵌入式控制器835被耦合。此类部件可以包括(例如经由ps2接口耦合的)键盘836、风扇837、和热传感器839(例如,经由smbus接口耦合)。在一些实施例中,触摸板830还可经由ps2接口耦合至ec835。此外,诸如根据2003年10月2日发布的可信计算组(tcg)tpm规范版本1.2的可信平台模块(tpm)838的安全性处理器也可经由该lpc互连耦合至处理器810。系统800可以以各种各样的方式(包括无线地)与外部设备通信。在图11中所示的实施例中,存在各种无线模块,其中的每一个都可以对应于针对特定无线通信协议所配置的无线电设备。用于短程(诸如近场)中的无线通信的一种方式可以是经由近场通信(nfc)单元845,在一个实施例中其可经由smbus与处理器810通信。要指出,经由该nfc单元845,彼此紧密接近的设备可以通信。例如,用户可以使系统800能够通过将两个设备紧密相关地适配在一起并且使得能够实现诸如标识信息支付信息之类的信息、诸如图像数据之类的数据等等的传送来与另一(例如)便携式设备(诸如用户的智能电话)进行通信。还可使用nfc系统来执行无线功率传送。如在图11中进一步看到的,附加无线单元可以包括其他短程无线引擎,包括wlan单元850和蓝牙单元852。通过使用wlan单元850,可以实现根据给定电气与电子工程师协会(ieee)802.11标准的wi-fitm通信,同时经由蓝牙单元852,可以发生经由蓝牙协议的短程通信。这些单元可经由例如usb链路或通用异步接收器发送器(uart)链路与处理器810通信。或者其他单元可经由互连经由根据(2007年1月17日公布的)pci快速规范基础规范版本3.0的外围部件互连快速tm(pcietm)协议、或另一此类协议(诸如串行数据输入/输出(sdio)标准)耦合至处理器810。当然,这些外围设备之间的实际物理连接(其可被配置在一个或多个附加卡上)可以借助于适合于母板的下一代形状因子(ngff)连接器。此外,无线广域通信(例如根据蜂窝协议或其他无线广域协议)可以经由无线广域网络(wwan)单元856来发生,该无线广域网络(wwan)单元856进而可耦合至订户身份模块(sim)857。此外,为了能够实现位置信息的接收和使用,还可存在gps模块855。要指出,在图11中示出的实施例中,wwan单元856和诸如相机模块854的集成捕获设备可经由给定usb协议(诸如usb2.0或3.0链路)或uart或i2c协议来通信。再次地,这些单元的实际物理连接可以经由将ngff添加卡适配至配置在母板上的ngff连接器。为了提供音频输入和输出,可以经由数字信号处理器(dsp)860来实现音频处理器,该数字信号处理器(dsp)860可经由高清晰度音频(had)链路耦合至处理器810。类似地,dsp860可与集成编码器/解码器(codec)和放大器862通信,该放大器862进而可耦合至输出扬声器863,其可被实现于机壳内。类似地,放大器和codec862可以被耦合以从麦克风865接收音频输入,在一个实施例中该麦克风865可以经由双阵列麦克风来实现,以提供高质量音频输入来使得能够实现对系统内各种操作的语音激活控制。还要指出,可以将音频输出从放大器/codec862提供至耳机插孔864。图12是在示例控制系统中现场使用的soc的框图。然而,应该指出,仅作为非限制性示例来提供控制系统以及该特定控制系统。在图12的示例中,soc1200包括多核心处理器,包括rt代理115-0和辅助代理115-1。rt代理115-0充当实时(等时)代理,而辅助代理115-1充当尽力而为代理。rt代理115-0和辅助代理115-1共享存储器控制器170-0和存储器控制器170-1,它们分别控制存储器库1220-0和1220-1。在某些示例中,存储器库1220-0和存储器库1220-1彼此完全独立,并且可被交错以使得偶数编号的存储器地址通过存储器控制器170-0到达库1220-0,而奇数编号的存储器位置被通过存储器控制器170-1路由至存储器库1220-1。这仅作为示例来提供,并且其他存储器配置和交错方法是可用的。还应该指出,在该示例中,存储器控制器170和存储器库1220被示为在单独的存储器总线上。这也作为非限制性示例来公开。在其他示例中,可使用其他存储器架构,诸如共享总线或片上网络。rt代理115-0可被配置成与用于控制被控设备1292的控制子系统1290接口连接。在一个实施例中,被控设备1292可以是任务关键或安全关键设备,作为非限制性示例诸如是制造机器人、寿命支持系统、环境控制系统、交通控制系统或线控(drive-by-wire)系统。控制子系统1290向rt代理115-0提供控制被控设备1292所必要的所有软件、固件和硬件。受控系统1290的要求可以是使得所保证的qos对于保持实时操作是必要的。然而,还可能期望的是提供辅助功能(诸如用户接口),以使得用户可以提供必要的输入。辅助代理115-1还可提供诸如监视和用户反馈之类的功能。因此,期望设计soc1200以使得向rt代理115-0保证其对于实时功能而言的必要qos,但是不会完全独占系统资源以使得辅助代理115-1不能执行其功能,或反之亦然。为此,可提供具有使实时和辅助业务量分开的多个虚拟信道和相关联优先级方案的共享非核结构1230,以对实时业务量准予较高优先级,同时为辅助代理115-1留下充足的带宽以正确地起作用。在该示例中,rt代理115-0经由适当的装置(诸如网络接口、专用总线或其他链接)通信耦合至受控系统1290。在该图中,rt代理115-0还经由共享非核结构1230通信耦合至rt外围设备1210-0。在某些实施例中,为了简化设计,共享非核结构1230可被提供为单个或多个模块化ip块。为了简化附图,以及为了说明许多不同样式的互连是可能的,在这里没有图示rt外围设备1210-0和控制子系统1290之间的物理或逻辑连接。但是这不意图排除此类连接。在一些示例中,rt外围设备1210-1可以是形成控制子系统1290的一部分的控制接口,或去往被控设备1292的物理和逻辑接口(在这种情况下可提供逻辑和/或物理连接)。在其他实施例中,rt外围设备1210-0可提供其他实时功能,其可以或者可以不与被控设备1292直接逻辑相关。类似地,辅助代理115-1作为示例通信耦合至用户接口1270或任何其他适当的辅助系统或子系统。类似于控制子系统1290,用户接口1270可提供任何适当的软件、固件和硬件的集合以用于提供用户接口。辅助代理1150-1还经由共享非核结构1230通信耦合至辅助外围设备1210-1。与实时外围设备1210-0一样,辅助外围设备1210-1可以或不可以通信耦合至用户接口1270。为了简化绘图,以及为了说明许多不同的连接选项是可能的,在该图中没有示出辅助外围设备1210-1和用户接口1270之间的物理或逻辑连接,但是在一些实施例中,可提供此类连接。在一个非限制性示例中,共享非核结构1230的所选元件包括共享i/o结构1232、共享存储器结构100和系统代理730。共享i/o结构1232向外围设备1210提供互连、调度和其他通信服务。在一个示例中,共享i/o结构1232基本上类似于共享存储器结构100,包括实现与本说明书中描述的那些类似的优先级方案。结合图1-9更详细地描述共享存储器结构100。系统代理730包括控制器以向共享非核结构100提供智能,包括本文中所述的方法。在一个示例中,附加硬件、固件或软件可包括为系统代理730提供指令以执行本文所公开的功能的可执行指令或微代码。外围设备1210、存储器库1220和经由非核结构1230连接至请求代理的任何类似设备可统称为“数据终端”,从而指示它们最终将数据发送至代理115或从代理115接收数据。在一个示例中,共享非核结构1230仅包括一组物理总线、互连、寄存器和其他资源,其可以被实时代理115-0和辅助代理115-1(连同任何其他代理)用来通信耦合至外围设备1210以及耦合至存储器控制器170。因此,为了确保针对实时代理115-0的所保证的qos,可能需要共享互连资源1230来提供代理115、外围设备1210和存储器控制器170之间的优先级方案。共享非核结构的某些实施例可采用在所有代理之间共享的仅一个虚拟信道。然而,本说明书还描述了一种提供多个虚拟信道以使得共享非核结构1230可以在用于实时代理115-0的业务量和用于辅助代理115-1的业务量之间进行辨别、分离和优先化的方法。该分离可能是期望的,以使得在其必需的情况下来自实时代理115-0的业务量可接收优先级(包括超过来自辅助代理115-1的业务量的抢先优先级)。在一个示例中,定义两个虚拟信道:即虚拟信道vc_aux1240和虚拟信道vc_rt1242。vc_aux1240可被提供用于尽力而为事务,而vc_rt1242被专用于实时或等时事务。业务模式可包括代理至外围设备(经由共享i/o结构1232)、代理至存储器(经由共享存储器结构100)、外围设备至代理(经由共享i/o结构1232)、外围设备至存储器(经由共享i/o结构1232和共享存储器结构100)、以及存储器至外围设备(经由共享i/o结构1232和共享存储器结构100)。可在一个示例中通过对用于源自于代理115的分组的资源代理进行解码来完成划分成虚拟信道。应该指出,在某些已知实施例中,为了路由目的,对每个分组的目的地进行解码,并且每个分组的目的地可基于分组的属性(诸如存储器地址和/或操作码)。在该示例中,仍可提供目的地解码,并且目的地解码可以是对源代理的解码的附加。一旦源代理被解码,就可向分组指派“业务量类”,其可具有对虚拟信道的一对一对应性。例如,业务量类0可对应于vc_aux,而业务量类1可对应于vc_rt。有利地,业务量类可被编码为报头中的字段或用于分组的元数据以使得诸如外围设备1210之类的端点不需要知晓虚拟信道架构来保持端对端虚拟信道功能。这可保持旧有互操作性。在一个示例中,系统代理730可以向每个分组预加(prepend)报头数据,从而标识分组要被在其上载送的虚拟信道或业务量类。根据本文所述的qos方案,某些虚拟信道可被给予某些优先级权重。优先级方案可包括为高优先级业务量提供高“准予计数”数目和/或向vc_rt上的业务量指派到期的最后期限以加快该业务量。在源自于外围设备1210的分组(诸如响应分组)的情况下,外围设备1210可能不知晓虚拟信道结构。然而,良好配置的外围设备1210应该回应(echoback)与其所响应于的分组相附接的业务量类字段。因此,旧有外围设备1210可以能够成功地将分组指引至其合适的虚拟信道,尽管在共享非核结构1230内多个虚拟信道的存在是不可知的。在源自于外围设备1210并被指引至存储器1220(而不是对代理115的响应)的分组的情况下,可基于外围设备1210自身的性质来指派业务量类。例如,如果已知rt外围设备1210通常被用于实时事务,则从rt外围设备1210至存储器1220的分组可被指引至vc_rt。类似地,源自于辅助外围设备1210-1并被指引至存储器1220的分组可被指引至vc_aux。在一个示例中,还可以例如根据每个分组的目的地将虚拟信道进一步细分。因此,例如,从实时代理115-0至任何存储器控制器170的业务量可被给予非常高的优先级或甚至抢先优先级以保证qos。然而,从实时代理115-0至实时外围设备1210-0的业务量可能是较不时间关键的。因此,该业务量可被指派稍稍更低(尽管可能仍被加快)的优先级。在一个示例中,可基于哪个共享资源正被考虑来对vc_rt和vc_aux不同地进行优先化。例如,从外围设备至存储器的vc_rt和vc_aux路径可使用针对不同优先化的最后期限,而核心和外围设备之间的vc_rt和vc_aux路径可使用准予计数。当然,这些配置仅作为非限制性示例来提供。本领域技术人员将根据特定实施例的设计约束来选择合适的优先级方案。图13是根据本说明书的一个或多个示例的非核结构100的所选元件的框图。在图13的示例中,非核结构将某些功能划分到多个流水线中,其中某些功能被划分到针对每个流水线的“片段(slice)”中。作为图示和示例,所公开的实施例具有两个单独的流水线,其中每个流水线包含请求跟踪器(“t单元”)和调度器仲裁器(“b单元”)。在更一般的情况中,非核结构可以包含n个流水线,并且每个流水线可以包含任何适当功能块的分立的片段。在一个示例中,为了保持旧有的互操作性并且使得系统设计者能够使用“现成的”现有ip块,非核结构100呈现出到请求代理115的仅单个单片电路接口。因此,设计者无需知晓或设计非核结构100的流水线。这可以简化芯片设计,从而允许系统设计者将非核结构100看作“黑盒”。在图13的示例中,请求方(其为代理115的示例)向非核结构100提供请求1302。请求1302可以例如是针对到存储器位置或到存储器映射的设备(诸如外围设备)的读取或写入访问的请求。非核结构100接收请求1302,并将请求1302提供给地址散列和选择逻辑1320。在其中请求1302是存储器请求的示例中,地址散列和选择逻辑1320将地址散列化,例如以确定其是奇数还是偶数。在本文中,奇偶散列化被示为非限制性示例,而在一般情况中,可以使用确定性地导致将每个分组指派到n个流水线中的一个的任何适当的散列化算法。在一个实施例中散列化算法的确定性是重要的,因为流水线完全独立于彼此进行操作,而不会进一步沿着流水线向下重新汇聚。而是,流水线0并且仅有流水线0能够访问(例如)偶数存储器地址,而流水线1并且仅有流水线1能够访问奇数存储器地址。因此,流水线不重新汇聚,直到存储器访问事件完成之后为止。在该示例中,它们在聚集器1350处重新汇聚。取决于地址散列和选择逻辑1320的散列结果,选择逻辑1320将请求1302提供给缓冲器01322-0或缓冲器11322-1中的一个。值得注意的是,在一个示例中,缓冲器01322-0和缓冲器11322-1在物理上分离并且在逻辑上不彼此耦合。换言之,当且仅当分组指向偶数存储器位置时缓冲器01322-0才将接收该分组,而当且仅当分组指向奇数存储器地址时缓冲器1才将接收该分组。在该示例中,缓冲器01322-0及其接着发生的流水线不具有处理奇数编号的地址的能力,而缓冲器11322-1及其接着发生的流水线不具有处理偶数编号的地址的能力。缓冲器1322和聚集器1350可以一起被配置成提供先入先出(fifo)存储器队列。在该情况下,信用返回可以组织来自两个流水线的返回以确保它们以正确的顺序出现。这给出了在存储器结构中的单个接收fifo的显现,其保持了存储器结构的不同实现方式(其可以或可以不实现多个流水线)中的相同ip块的“即插即用”能力。在一个示例中,请求跟踪器1370、调度器仲裁器130、存储器控制器170和存储器库1340从时钟分频器1380接收时钟信号。时钟分频器1380可以例如接收用于非核结构100的子系统时钟信号,并将频率除以2以计及两个流水线。在更一般的情况中,非核结构可以具有一种时钟,该时钟具有频率f和周期t。从时钟分频器1380接收其时钟的每个流水线化功能块具有频率f/n和周期nt。地址散列和选择逻辑1320、缓冲器1322和准许仲裁器120全部都接收(频率f的)未分频的时钟。聚集器/解聚集器1350和排序逻辑1330接收已分频时钟和未分频时钟两者。在图示出的实施例中,时钟分频器1380将一半的时钟提供给每个流水线,使得每个流水线以用于非核结构100的基准时钟信号的频率的精确的1/2来操作。在该示例中,有效地对操作进行并行化,使得在理论上,可以在非核结构100的两个时钟周期中并行地处理两个单独的存储器请求(一个偶数、一个奇数)。有利地,并行的请求处理可以有助于避免以全时钟速度串行处理请求时可能出现的设计挑战。然而,作为实际问题,存储器访问请求可能不以有序的奇偶序列到达。例如,在某些大型阵列运算中,阵列可能被构造成使得每个连续的存储器访问落在奇数或者偶数边界上。因此,一个流水线可能被淹没而另一个完全闲置。大型缓冲器减小了该顾虑。另一方面,大型缓冲器占据了附加的芯片有效面积(realestate)。因此,缓冲器1322的尺寸应被选为提供下述竞争目标之间的适当折衷:最小化由缓冲器1322所消耗的芯片有效面积,以及使得缓冲器1322足够大以避免缓冲器中的一个或另一个频繁被“榨干”(从而导致非核结构100时常在其最佳速度的仅一半下进行操作)的情况。使用流水线0作为示例,缓冲器01322-0接收到散列化为“偶数”的存储器访问请求。这被提供给流水线0,包括请求跟踪器0140-0和仲裁器0130-0。这些执行它们的预期功能,并最终将请求提供给存储器控制器0170-0,其通信地耦合至存储器库01340-0。在该示例中,库01340-0精确地包含soc1200的可用存储器的一半。存储器可以是交错式的,使得在逻辑上库01340-0包含全部偶数存储器地址。包括请求跟踪器1140-1、仲裁器1130-1和被耦合到库11340-1的存储器控制器1170-1的流水线1可以针对奇数地址执行本质上相同的操作。值得注意的是,流水线0和流水线1在到达存储器控制器170之前不会汇聚。而是,流水线0控制库01340-0,而完全独立于控制库11340-1的流水线1。流水线在聚集器1350之前并不汇聚。聚集器1350对来自两个流水线的存储器值进行仲裁并将它们返回至请求核心。因此,地址散列和选择逻辑1320和聚集器1350一起允许代理115将非核结构100视为具有单片数据接口的单片块。在一个实施例中,每个流水线提供fifo,并且排序逻辑1330提供如下进行操作的信用返回机制:a.根据c2u请求,信用针对代理115的角度返回。b.仲裁器130可以仅在其在用于代理115的两个每片段的fifo中都具有保证点时才通告一个信用。如下实现针对代理115的信用返回:i.在从片段fifo弹出之后,如果其具有最大的占用度(预弹出):如果弹出fifo比另一fifo具有更多的请求,那么其具有覆盖信用环路的最小能力,因此必须返回信用。c.在推送到片段fifo中之后,如果其具有小于最大片段fifo占用度的占用度的话(预推送)。如果推送fifo具有比另一fifo更小的占用度,那么另一fifo具有覆盖信用环路的最小能力,并且推送fifo可以立即将其信用返回至代理115。尽管已经关于有限数目的实施例描述了本发明,但是本领域技术人员将会从其认识到许多修改和变化。所意图的是,所附权利要求覆盖如落入该本发明的真实精神和范围内的所有此类修改和变化。设计可经历各个阶段,从创建到模拟到制造。表示设计的数据可表示处于许多方式的设计。首先,如在模拟中有用的,可使用硬件描述语言(hdl)或另一功能描述语言来表示硬件。另外地,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某些阶段大多数设计达到表示硬件模型中的各种设备的物理放置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定各种特征在针对用于产生集成电路的掩模的不同掩模层上的存在或不存在的数据。在一些实现中,基于软件的硬件模型以及hdl和其他功能描述语言对象除了其他示例之外可包括寄存器传递语言(rtl)文件。此类对象可以是机器可解析的,以使得设计工具可以接受hdl对象(或模型),针对所描述硬件的属性解析hdl对象,以及从对象确定物理电路和/或片上布局。设计工具的输出可以被用来制造物理设备。例如,设计工具可以根据hdl对象确定各种硬件和/或固件元件的配置,除了将被实施以便实现以hdl对象建模的系统的其他属性之外,hdl对象诸如是总线宽度、寄存器(包括尺寸和类型)、存储器块、物理链路路径、结构拓扑。设计工具可以包括用于确定片上系统(soc)的拓扑和结构配置以及其他硬件设备的工具。在一些实例中,hdl对象可以被用作用于开发可以被制造设备用来制造所描述的硬件的模型和设计文件的基础。的确,hdl对象自身可以被提供为对制造系统软件的输入以导致所描述的硬件。在设计的任何表示中,可以以任何形式的机器可读介质来存储数据。诸如盘之类的存储器或者磁性或光学存储装置可以是机器可读介质,以存储经由光波或电波传送的信息,该光波或电波被调制或以其他方式被生成以传送此类信息。当指示或载送代码或设计的电学载波被传送时,在电信号的拷贝、缓冲或重传被执行的程度上,制作新的拷贝。因此,通信提供商或网络提供商可将物品(诸如被编码成载波的信息)至少暂时存储在有形的机器可读介质上,从而体现本公开的实施例的技术。如本文所使用的模块指的是硬件、软件和/或固件的任何组合。作为一个示例,模块包括与非瞬时介质相关联的硬件(诸如微控制器),以存储被适配成要由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是具体被配置成识别和/或执行要被保持在非瞬时介质上的代码的硬件。此外,在另一实施例中,模块的使用指的是包括代码的非瞬时介质,其被具体适配成要由微控制器来实行以执行预定操作。并且如可以被推断的,在又一实施例中,术语模块(在该示例中)可指的是微控制器和非瞬时介质的组合。通常,被图示为分离的模块边界一般会变化并且潜在地重叠。例如,第一和第二模块可在潜在地保留某些独立硬件、软件或固件的同时共享硬件、软件、固件或其组合。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其他硬件(诸如可编程逻辑设备)。在一个实施例中,短语“用以”或“被配置成”的使用指的是布置、放在一起、制造、供应来销售、引进和/或设计一种装置、硬件、逻辑或元件来执行指定任务或确定任务。在该示例中,如果未正在操作的装置或其元件被设计、耦合和/或互连以执行所述指定任务,则该装置或其元件仍“被配置成”执行所述指定任务。作为纯粹说明性的示例,逻辑门可在操作期间提供0或1。但是“被配置成”向时钟提供使能信号的逻辑门不包括可提供1或0的每个潜在逻辑门。而是,逻辑门是以在操作期间1或0输出要启用时钟的某一方式耦合的一种逻辑门。再一次要指出,术语“被配置成”的使用不需要操作,而是作为代替着重于装置、硬件和/或元件的潜在状态,在这种情况下在该潜在状态中装置、硬件和/或元件被设计成当该装置、硬件和/或元件正在操作时执行特定任务。此外,在一个实施例中,短语‘能够/能够用以’、和或‘可操作为’的使用指的是某种装置、逻辑、硬件和/或元件以能够实现该装置、逻辑、硬件和/或元件以具体方式的使用的这种方式被设计。如上文指出的,在一个实施例中,“用以”、“能够用以”或“可操作为”的使用指的是装置、逻辑、硬件和/或元件的潜在状态,在这种情况下该装置、逻辑、硬件和/或元件并没有正在操作,而是以能够实现装置以具体方式的使用的这种方式被设计。如本文所使用的,值包括数字、状态、逻辑型状态或二进制逻辑型状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑学值的使用也指的是1和0,其仅表示二进制逻辑状态。例如,1指的是高逻辑电平并且0指的是低逻辑电平。在一个实施例中,存储单元(诸如晶体管或闪存单元)可以能够保持单个逻辑值或多个逻辑值。然而,已经使用计算机系统中的值的其他表示。例如,十进制数10也可被表示为1010的二进制值以及十六进制字母a。因此,值包括能够在计算机系统中保持的信息的任何表示。此外,状态可以由值或值的部分来表示。作为一个示例,第一值(诸如逻辑一)可表示默认或初始状态,而第二值(诸如逻辑零)可表示非默认状态。另外,在一个实施例中,术语重置和设置分别指的是默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值(即重置),而经更新的值潜在包括低逻辑值(即设置)。要指出,值的任何组合可被用来表示任何数目的状态。上面阐述的方法、硬件、软件、固件或代码的实施例可经由存储在可由处理元件执行的机器可访问介质、机器可读介质、计算机可访问介质或计算机可读介质上的指令或代码来实施。非瞬时机器可访问/可读介质包括提供(即存储和/或传送)处于由机器(诸如计算机或电子系统)可读的形式的信息的任何机构。例如,非瞬时机器可访问介质包括随机存取存储器(ram)(诸如静态ram(sram)或动态ram(dram));rom;磁或光学存储介质;闪速存储器设备;电存储设备;光学存储设备;声学存储设备;用于保持从瞬时(传播的)信号(例如载波、红外线信号、数字信号)接收的信息的其他形式的存储设备;等等,它们将与可从其接收信息的非瞬时介质相区分。用于对逻辑编程以执行本发明的实施例的指令可被存储在系统的存储器(诸如dram、高速缓存、闪速存储器或其他存储装置)内。此外,可以经由网络或借助于其他计算机可读介质来分配该指令。因此,机器可读介质可包括用于存储或传送以由机器(例如计算机)可读的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(cd-rom)、以及磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器、或在通过因特网经由电、光、声或其他形式的传播信号(例如载波、红外线信号、数字信号等等)的信息传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适于存储或传送以由机器(例如计算机)可读的形式的信息或电子指令的任何类型的有形机器可读介质。以下示例涉及根据本说明书的实施例。一个或多个实施例可以提供方法、装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑,其用以提供一种结构,所述结构用以向请求代理提供资源访问。所述结构包括n个并行流水线以及一个或多个功能块。所述功能块中的至少一个被划分成n个流水线化的块,并且所述流水线化的块要独立于彼此进行操作并且彼此被紧密地耦合。在至少一个示例中,n=2。在至少一个示例中,所述结构包括n个存储器控制接口,其用以控制n个独立的存储器块,其中每个存储器控制接口要通信耦合到确切一个并行流水线。在至少一个示例中,提供多路分用器以从请求代理接收请求并且使其指向流水线。在至少一个示例中,提供聚集器来从每个流水线接收资源,并且使所述资源指向请求代理。在至少一个示例中,提供流水线跟踪器来指示哪个流水线向请求代理提供资源。在至少一个示例中,所述流水线跟踪器用以指示哪个流水线要从请求代理接收请求。在至少一个示例中,提供选择逻辑来从请求代理接收存储器访问请求并且将所述请求确定性地指派到一个并行流水线。在至少一个示例中,所述结构要接收频率f的时钟,并且所述多个流水线化块中的至少一个接收频率f/n的时钟。在至少一个示例中,所述结构包括非核结构。一个或多个实施例可以提供装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑以及方法以从请求代理接收存储器访问请求,并且使所述存储器访问请求指向共享存储器结构的n个并行流水线中的一个的功能块,所述n个并行流水线独立于彼此且彼此紧密耦合。遍及该说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及本说明书的各个位置中的出现不一定都指的是同一实施例。此外,在一个或多个实施例中可以以任何适当方式来组合特定特征、结构或特性。在前述说明书中,已经参考具体示例性实施例而给出详细描述。然而,将明显的是,可以在不偏离如所附权利要求中阐述的本发明的较广阔精神和范围的情况下对实施例做出各种修改和改变。相应地,要以说明性意义而非限制性意义来考虑说明书和附图。此外,实施例以及其他示例性语言的前述使用不一定指的是相同的实施例或相同的示例,而是可指代不同且有区别的实施例,以及潜在相同的实施例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1