CN107078959B - 用于减轻分布式非核结构中的业务量引导低效的系统和方法 - Google Patents

用于减轻分布式非核结构中的业务量引导低效的系统和方法 Download PDF

Info

Publication number
CN107078959B
CN107078959B CN201580064562.5A CN201580064562A CN107078959B CN 107078959 B CN107078959 B CN 107078959B CN 201580064562 A CN201580064562 A CN 201580064562A CN 107078959 B CN107078959 B CN 107078959B
Authority
CN
China
Prior art keywords
request
memory
requests
agent
fabric
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580064562.5A
Other languages
English (en)
Other versions
CN107078959A (zh
Inventor
R.纳加拉詹
M.T.弗里德里克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107078959A publication Critical patent/CN107078959A/zh
Application granted granted Critical
Publication of CN107078959B publication Critical patent/CN107078959B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

在示例中,片上系统(SoC)或其它嵌入式系统的非核结构的所选部分被划分成两个独立的流水线。每个流水线独立于另一流水线进行操作,并且每一个流水线仅访问系统存储器的一半,诸如交错式存储器中的奇数或偶数地址。两个流水线不重新汇聚,直到已经返回存储器值之后为止。然而,非核结构可能仍向请求设备呈现单个、单片接口。这允许系统设计者将非核结构看作“黑盒”而无需修改现有设计。每个进入的地址可以由确定性散列来处理,被分配给所述流水线中的一个,通过存储器进行处理,并然后传递至信用返回。

Description

用于减轻分布式非核结构中的业务量引导低效的系统和方法
相关申请的交叉引用
本申请主张对提交于2014年12月27日、题为“MITIGATING TRAFFIC STEERINGINEFFICIENCIES IN DISTRIBUTED UNCORE FABRIC”的美国非临时专利申请No. 14/583,613的优先权和其利益,通过引用将该申请整体地并入本文中。
技术领域
本申请涉及计算机架构的领域,并且更特别地涉及用于减轻分布式非核结构中的业务量引导低效的系统和方法。
背景技术
在具有多个设备的许多计算机系统中,执行仲裁来提供对诸如共享存储器之类的共享资源的访问。不同类型的仲裁机制被提供为使得能够实现不同代理或请求方之间的仲裁。一些系统使用固定优先级仲裁系统,在其中不同代理被分配特定的优先级。然而,这可能导致在一个或多个代理获得对共享资源的访问的能力的使用和饥饿(starvation)方面的不公平。其他仲裁系统提供基于轮询(round robin-based)的方法来分配对共享资源的访问。
在某些实施例中,仲裁并不计及诸如功率状态之类的共享资源因素。因此,在一个示例中,对访问共享资源的请求准予并且该请求使该资源离开低功率状态,尽管该设备不需要立即访问该共享资源。
附图说明
当与附图一起阅读时,从以下详细描述最佳地理解本公开。要强调的是,根据行业中的标准实践,没有按比例绘制各种特征并且各种特征仅用于说明目的。事实上,为了讨论的清楚性,可以任意地增加或减小各种特征的尺寸。
图1是根据本说明书的一个或多个示例的共享非核存储器结构的一部分的框图。
图2是根据本说明书的一个或多个示例的准许仲裁器的进一步细节的框图。
图3是根据本说明书的一个或多个示例的在确定仲裁获胜方时用于更新代理的年龄值的方法的流程图。
图4是根据本说明书的一个或多个示例的准许仲裁器状态机的框图。
图5是根据本说明书的一个或多个示例的用于在准许仲裁器中执行第一级别仲裁的方法的流程图。
图6是根据本说明书的一个或多个示例的资源分配逻辑的一部分的框图。
图7是根据本说明书的一个或多个示例的记分板索引生成逻辑的框图。
图8是根据本说明书的一个或多个示例的用于调度器仲裁器的状态机的框图。
图9是根据本说明书的一个或多个示例的用于执行存储器调度的方法的流程图。
图10是根据本说明书的一个或多个示例的SoC的框图。
图11是根据本说明书的一个或多个示例的存在于计算机系统中的部件的框图。
图12是根据本说明书的一个或多个示例的用于控制受控系统的现场使用(in situ)的SoC的框图。
图13是根据本说明书的一个或多个示例的在非核结构内提供多个虚拟信道的方法的流程图。
具体实施方式
综述
在示例中,片上系统(SoC)或其它嵌入式系统的非核结构的所选部分被划分成两个独立的流水线。每个流水线独立于另一流水线进行操作,并且每个流水线仅访问系统存储器的一半,诸如交错式存储器(interleaved memory)中的奇数或偶数地址。两个流水线并不重新汇聚,直到已经返回存储器值之后为止。然而,非核结构可能仍向请求设备呈现单个、单片接口。这允许系统设计者将非核结构看作“黑盒”而无需修改现有设计。每个进入的地址可以由确定性散列来处理、被分配给流水线中的一个、通过存储器进行处理、以及然后传递至聚集器。
本公开的示例实施例
以下公开内容提供了许多不同的实施例或示例,以用于实现本公开的不同特征。下面描述部件和布置的具体示例以简化本公开。当然,这些仅是示例并且不意图是限制性的。此外,本公开可能在各种示例中重复引用数字和/或字母。该重复是为了简单性和清楚性的目的,并且其本身不指定所讨论的各种实施例和/或配置之间的关系。
不同的实施例可以具有不同的优点,并且任何实施例都不一定需要特定优点。
在各种实施例中,共享存储器结构将多个独立设备(在本文中也被称为“代理”)耦合至共享存储器(例如,经由介于中间的存储器控制器)。在一些实施例中,共享存储器结构是单个管芯半导体设备的互连构造,其包括不同类型的知识产权(IP)逻辑块。共享存储器结构可被配置成使得能够符合时间关键等时设备的服务质量(QoS)要求,同时还为非等时设备(在本文中也被称为“尽力而为”设备)提供存储器带宽比例划分。
发生存储器带宽的可靠且可预测分配和调度来支持连接至共享存储器结构的多个设备和设备类型。通过将QoS功能包括在公共共享存储器结构中(而不是包括在存储器控制器或其他非结构电路中),该设计可跨越多个半导体器件(诸如片上系统(SOC))而被更容易地重用,因为该设计独立于存储器技术。
因此实施例在共享存储器结构中执行资源分配、带宽分派和时间感知QoS属性来提供可预测且可靠的存储器带宽和延时,以满足连接至该结构的设备的要求。
服务类种类被指派给耦合至共享存储器结构的每个设备。在一个实施例中,可以使用该结构的配置寄存器来标识这种指派。该结构可支持多个服务类。在一个非限制性示例中,可存在两个服务类种类的设备,包括用于延时敏感设备的等时服务类种类和用于可以忍受较长延时以服务于它们对存储器的请求的设备的尽力而为服务类种类。在一些实施例中,延时敏感设备包括内容呈递设备(诸如作为非限制示例的音频或视频播放器、相机设备等等),而较低优先级设备包括处理器核心、图形处理单元等等。
将以请求最后期限形式的时间从等时设备传达给结构,以向该结构指示完成对存储器的请求所需的延时。为了使得能够实现同步,该结构向所有等时请求代理广播全局定时器。对来自结构的输出连续驱动该全局定时器,因此它可用于通过等时设备进行采样。响应于该时间值,代理确定用于完成请求的延时要求并将该延时值添加至全局定时器值以形成针对该请求的最后期限。作为示例,可以由代理通过缓冲器的流失率和代理的数据缓冲器中的数据量来确定对于读取的延时。如果代理每250纳秒(ns)消耗1个高速缓存数据线并且在缓冲器中具有8个高速缓存数据线,则在缓冲器变空之前对于新请求所需的最后期限将是8×250ns或2微秒(μs)。基于该传达的延时或最后期限值,该结构可基于存储器的当前功率状态的知识和对于结构中未决的其他未调度存储器请求所需的延时来做出更好的调度决定。该最后期限通信可改善存储器带宽并且还节省系统功率。
请求最后期限的使用向结构提供了针对来自等时设备的每个请求的延时信息。在结构内编程的配置寄存器向该结构提供了关于存储器配置的信息(诸如存储器离开低功率(例如自刷新和状态)所需的延时)。该结构还通过向存储器控制器(例如以状态信道的形式)发送指示来控制存储器控制器何时促使所附接的存储器进入和离开自刷新状态。该结构通过评估对于所有未决存储器请求的延时需求来确定何时存储器应该进入和离开自刷新。因为该结构了解对于所有未决存储器请求所需的延时和离开自刷新所需的延时,所以存储器的功率状态转变的更大管理可以导致附加的功率节省。
实施例还可以通过允许存储器请求被无序调度来提供存储器带宽中的效率,然而,这可能导致对于某些请求的长调度延时。为了解决此顾虑,结构向每个等时存储器请求指派优先级级别,例如高优先级或低优先级。当调度高优先级等时请求时,所允许的无序调度的量小于当调度尽力而为或低优先级等时请求时可接受的量。限制对于高优先级请求的无序调度的量确保了满足请求延时要求。因为根据请求的最后期限来确定请求优先级,所以该结构可以在请求被调度之后立即确定对于等时设备来说其他未决请求的优先级级别是什么。通过使用最后期限方法,所有未决请求的优先级级别仅在全局定时器递增时进行改变。
实施例还可以改善跨越多个SoC实现方式的复杂QoS存储器调度算法的可移植性和重用,因为智能存储器调度逻辑被结合到该结构中,同时可以在存储器控制器中实施技术特定的存储器控制器逻辑。
实施例还可以将抗饥饿算法结合到结构的多个仲裁点中。在一个实施例中,这些抗饥饿算法包括由准许仲裁器使用的加权的基于年龄的仲裁方法以及在存储器调度器和请求跟踪器中使用的可用调度队列中的最旧一个。此外,相比于其中来自高优先级等时设备的请求自动胜出的固定优先级仲裁,请求权重可被用于在结构中的仲裁点处的不同优先级级别之间进行切换以及用于从调度读取请求切换至写入请求。
在一个实施例中,共享存储器结构包括用于调度被发送至存储器控制器的请求的两个仲裁点。第一仲裁点被用来准许来自设备的请求进入共享存储器结构中并且被称为“准许仲裁器”。第二仲裁点被用来调度从共享存储器结构发送至存储器控制器的请求并且被称为“调度器仲裁器”。
被连接至共享存储器结构的每个设备都具有连接在设备和结构之间的请求接口。该请求接口供应可以被用于QoS存储器调度的关于请求的信息。在一个实施例中,该信息包括存储器地址、顺序ID字段和操作码字段。对于等时设备,提供被称为请求最后期限字段的附加字段,以指示完成该请求需要的所需延时。要指出,在SoC的一些实现方式中,存储器结构接口可被连接至允许多个设备共享公共请求接口的其他结构或切换设备(switch)。
图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个低优先级请求准予。在一个实施例中,NM的值是使用配置寄存器来指定的。
图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的状态机的状态和描述包括以下内容:
Figure DEST_PATH_IMAGE001
图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。在一个实施例中,这些共享资源是结构的内部数据缓冲器、地址标签存储装置和请求跟踪器记分板。因为不存在用于请求代理中的任一个的专用资源,所以机制可以限制在结构中对于每个代理而言未决的未完成请求的数目,同时还例如通过在这些共享资源中预留虚拟条目来允许针对代理预留条目。该结构虑及代理限制的规定以防止任一个请求代理用光结构的所有可用共享资源。
存储器调度算法的一部分处理最小化读取到写入周转时间对存储器技术的性能影响。为了最小化存储器调度器在调度读取请求至调度写入请求之间进行切换的次数,冲刷池(flush pool)被用于对写入请求排队。冲刷池允许以存储器为目标的写入请求在存储器结构中被累加,直到已经接收到足够的写入请求以允许结构的存储器调度器将写入请求作为背靠背(back-to-back)请求的突发发送至存储器控制器。为了防止结构中的所有可用资源被冲刷池用光,可以指定冲刷限制。当被指定时,冲刷限制使结构在准许仲裁器处阻止来自所有代理的新写入请求,直到冲刷池中条目的数目小于为该冲刷池所编程的值。
用于写入请求的存储器结构冲刷池
当从请求代理接收到写入请求时,结构将写入数据从请求代理传送至内部数据缓冲器。一旦新的数据被写入到结构的内部数据缓冲器并且从代理的视角来看该请求被引退,缓冲器条目就被视为处于“冲刷池”中。对于一致存储器业务,结构可从请求代理接收探听(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调度算法的组合导致了最大请求延时的改善的可预测性,因为存储器控制器具有对于重新排序存储器请求的少得多的灵活性。
一旦请求被准许仲裁器准予,它就被排队到调度器记分板中。调度器记分板存储关于该请求的信息,调度器记分板使用该信息来将请求转发至存储器控制器以便执行对存储器的读取或写入。在一个实施例中,该信息包括请求地址、请求长度、命令类型(读取或写入)、服务类种类、存储器信道、存储器库、存储器等级和页面命中/未命中状态。
存储器调度器最旧可用队列
实施例提供基于发送至存储器控制器的请求历史的无序页面感知调度,尽管该结构并不直接了解存储器库的真实状态。更具体地,结构的存储器调度器将调度器记分板用作已经被发送至存储器的请求的历史缓冲器。因为调度器记分板被用来反映请求的历史,所以它试图将针对请求的状态信息尽可能长地保持在记分板中。存储器调度器使用被称为最旧可用队列(the oldest of available queue)的构造来确定可用于被再分配的最旧记分板条目。
最旧可用队列也被存储器调度器用来避免可能由于对存储器的请求的无序调度而引起的饥饿问题。结构的存储器调度器使用最旧可用队列来确定有多少个同一服务类种类和类型、读取或写入的请求已经绕过对存储器的最旧未决请求。一旦已绕过最旧请求的请求数目达到预编程的限制(例如由软件设置),结构的存储器调度器就禁用请求的无序调度并且对最旧未决请求准予。
如上文所提到的,调度器使用最旧可用队列来对其记分板中的所有请求的相对年龄保持跟踪。当由准许仲裁器对以新存储器地址为目标的请求准予时,到调度器记分板中的索引指针被排队到最旧可用队列的尾条目中,该尾条目然后被视为最新请求。当所有未决请求已完成将数据从请求代理传送至存储器控制器/将数据从存储器控制器传送至请求代理时,记分板条目可用于被再分配并且可以被再分配用于由准许仲裁器准予的新请求。由于无序调度,最旧可用队列中的最旧条目可能不可用于再分配。
为了选择要被再分配给新请求的记分板条目,调度器检测对于记分板条目的所有未完成请求是否已经完成。在一个实施例中,该调度器使用具有与记分板条目的数目相等的长度的请求位向量来指示哪些条目可用于再分配。在请求位向量中设置为1的位指示与该位位置相对应的条目可用于再分配。然后将请求位向量发送至最旧可用队列。最旧可用队列使用存储在队列中的索引来选择与针对队列的该条目的请求相对应的请求向量中的位。队列的每个条目都与请求向量中的唯一位相关联并且从队列中的最旧条目开始执行“找到第一个(find first)”函数,以确定要被再分配的最旧可用请求。在确定要被再分配的最旧可用条目之后,从该最旧可用队列输出针对该条目的记分板索引。
图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热(one hot)”多路复用。应该指出,图7的框图意图是非限制性的,并且其他元件可存在于各种实施例中。
共享存储器结构存储器调度细节
在一个示例中,结构存储器调度器包含三个状态机,它们一起工作来调度发送至存储器控制器的请求。
图8是根据本说明书的一个或多个示例的用于调度器仲裁器的状态机的框图。如图8中所示,状态机500(其可以以硬件、软件和/或固件来执行,诸如图1的调度器仲裁器130)可以开始于在系统的重置时进入初始化状态INIT 505中。控制接下来传递到自刷新状态机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 准予代理1
3 4 1 1 准予代理2
4 4 1 0 准予代理0
5 3 1 0 准予代理0
6 2 1 0 准予代理1
7 2 0 0 准予代理0
8 1 0 0 准予代理0
9 4 2 1 准予代理0
10 3 2 1 准予代理0
11 2 2 1 准予代理1
12 2 1 1 准予代理2
13 2 1 0 准予代理0
14 1 1 0 准予代理0
15 0 1 0 准予代理1
16 4 2 1 准予代理0
17 3 2 1 准予代理1
18 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中所示,SoC 700是包括多个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接口耦合至EC 835。此外,诸如根据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协议(诸如USB 2.0或3.0链路)或UART或I2C协议来通信。再次地,这些单元的实际物理连接可以经由将NGFF添加卡适配至配置在母板上的NGFF连接器。
为了提供音频输入和输出,可以经由数字信号处理器(DSP)860来实现音频处理器,该数字信号处理器(DSP)860可经由高清晰度音频(HAD)链路耦合至处理器810。类似地,DSP 860可与集成编码器/解码器(CODEC)和放大器862通信,该放大器862进而可耦合至输出扬声器863,其可被实现于机壳内。类似地,放大器和CODEC 862可以被耦合以从麦克风865接收音频输入,在一个实施例中该麦克风865可以经由双阵列麦克风来实现,以提供高质量音频输入来使得能够实现对系统内各种操作的语音激活控制。还要指出,可以将音频输出从放大器/CODEC 862提供至耳机插孔864。
图12是在示例控制系统中现场使用的SoC的框图。然而,应该指出,仅作为非限制性示例来提供控制系统以及该特定控制系统。
在图12的示例中,SoC 1200包括多核心处理器,包括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_AUX 1240和虚拟信道VC_RT1242。VC_AUX 1240可被提供用于尽力而为事务,而VC_RT 1242被专用于实时或等时事务。业务模式可包括代理至外围设备(经由共享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应该回应(echo back)与其所响应于的分组相附接的业务量类字段。因此,旧有外围设备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提供给缓冲器0 1322-0或缓冲器1 1322-1中的一个。值得注意的是,在一个示例中,缓冲器0 1322-0和缓冲器1 1322-1在物理上分离并且在逻辑上不彼此耦合。换言之,当且仅当分组指向偶数存储器位置时缓冲器0 1322-0才将接收该分组,而当且仅当分组指向奇数存储器地址时缓冲器1才将接收该分组。在该示例中,缓冲器0 1322-0及其接着发生的流水线不具有处理奇数编号的地址的能力,而缓冲器1 1322-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作为示例,缓冲器0 1322-0接收到散列化为“偶数”的存储器访问请求。这被提供给流水线0,包括请求跟踪器0 140-0和仲裁器0 130-0。这些执行它们的预期功能,并最终将请求提供给存储器控制器0 170-0,其通信地耦合至存储器库0 1340-0 。在该示例中,库0 1340-0精确地包含SOC 1200的可用存储器的一半。存储器可以是交错式的,使得在逻辑上库0 1340-0包含全部偶数存储器地址。
包括请求跟踪器1 140-1、仲裁器1 130-1和被耦合到库1 1340-1的存储器控制器1 170-1的流水线1可以针对奇数地址执行本质上相同的操作。
值得注意的是,流水线0和流水线1在到达存储器控制器170之前不会汇聚。而是,流水线0控制库0 1340-0,而完全独立于控制库1 1340-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。
作为示例,公开了一种装置,包括:非核结构,其包括:请求接口,用以从请求代理接收寻址数据访问请求,其中数据接口用以向所述请求代理呈现单片访问请求接口;以及选择逻辑,用以散列化所述寻址数据访问请求的目标地址,并且用以根据散列将所述寻址数据访问请求指派给n个信道中的确切一个。
还公开了一个示例,其中所述非核结构还包括:多个n个先入先出缓冲器,其中,每个缓冲器要通信耦合到确切一个信道。
还公开了一个示例,其中n=2,并且所述散列是奇/偶散列。
还公开了一个示例,其中所述非核结构还包括:共享资源介质,其包括n个流水线,其中每个流水线要通信耦合到确切一个缓冲器并且通信耦合到确切一个寻址数据区域,其中,每个流水线与每个其它流水线互不包括。
还公开了一个示例,还包括聚集器,其用以聚集数据返回并且将数据返回至所述请求代理。
还公开了一个示例,还包括排序逻辑,其用以将对于所述非核结构的多个数据访问请求进行排序。
还公开了一个示例,其中所述排序逻辑还包括信用返回机制。
还公开了一个示例,其中所述信用返回机制用以仅在其具有来自全部n个流水线的保证返回值时才通告一个信用。
还公开了一个示例,其中所述信用返回机制可操作为针对下述流水线返回信用:所述流水线具有比每个其它流水线更多的未决请求并且弹出请求。
还公开了一个示例,其中所述信用返回机制用以针对下述流水线返回信用:所述流水线具有比任何其它流水线更少的未决请求并且推送请求。
还公开了一种片上系统的示例,包括:请求代理;寻址数据资源;以及非核结构,用以将所述请求代理通信地耦合到所述寻址数据资源,所述非核结构包括:请求接口,用以从请求代理接收寻址数据访问请求,其中数据接口用以向所述请求代理呈现单片访问请求接口;以及选择逻辑,用以散列化所述寻址数据访问请求的目标地址,并且用以根据散列将所述寻址数据访问请求指派给n个信道中的确切一个。
还公开了一个示例,其中所述非核结构还包括:多个n个先入先出缓冲器,其中,每个缓冲器要通信耦合到确切一个信道。
还公开了一个示例,其中n=2,并且所述散列是奇/偶散列。
还公开了一个示例,其中所述非核结构还包括:共享资源介质,其包括n个流水线,其中每个流水线要通信耦合到确切一个缓冲器并且通信耦合到确切一个寻址数据区域,其中,每个流水线与每个其它流水线互不包括。
还公开了一个示例,还包括聚集器,其用以聚集数据返回并且将数据返回至所述请求代理。
还公开了一个示例,还包括排序逻辑,其用以将对于所述非核结构的多个数据访问请求进行排序。
还公开了一个示例,其中所述排序逻辑还包括信用返回机制。
还公开了一个示例,其中所述信用返回机制用以仅在其具有来自全部n个流水线的保证返回值时才通告一个信用。
还公开了一种方法的示例,包括:向请求代理提供单片访问请求接口;从所述请求代理接收对于寻址数据资源的寻址数据访问请求;以及散列化所述寻址数据访问请求的目标地址;根据散列将所述寻址数据访问请求指派给非核结构的n个信道中的确切一个。
还公开了一个示例,其中n=2,并且其中,所述散列是奇/偶散列。
前文概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应认识到,他们可以容易地使用本公开作为设计或修改其它过程和结构以便实现本文中介绍的实施例的相同目的和/或达成本文中介绍的实施例的相同优点的基础。本领域技术人员还将认识到的是,此类等价构造不脱离本发明的精神和范围,并且它们可以进行本文中的各种改变、替代和更改而不脱离本公开的精神和范围。
本公开的特定实施例可以容易地包括SoC CPU封装。SoC表示将计算机或其它电子系统的部件集成到单个芯片中的IC。其可以包含数字、模拟、混合信号以及射频功能:其全部可以被提供在单个芯片基板上。其它实施例可以包括多片模块(MCM),其具有位于单个电子封装内的多个芯片,并且被配置成通过该电子封装而彼此紧密交互。在各种其它实施例中,可以在专用集成电路(ASIC)、现场可编程门阵列(FPGA)以及其它半导体芯片中的一个或多个硅核心中实现数字信号处理功能。
在示例实现方式中,本文中概述的处理活动中的至少一些部分也可以以软件、固件或微代码来实现。在一些实施例中,可以在所公开的附图中的元件外部提供的硬件中实现这些特征中的一个或多个,或者以任何适当的方式联合这些特征中的一个或多个来实现预期功能。各种部件可以包括可以进行协作以便实现如本文中概述的操作的软件(或往复式软件)。在另外其它实施例中,这些元件可以包括促进其操作的任何适当的算法、硬件、软件、部件、模块、接口或对象。
附加地,可以移除或以其它方式联合与所描述的微处理器相关联的部件中的某些。广义来说,附图中描绘的布置可以在其再现时更具逻辑性,而物理架构可以包括这些元件的各种排列、组合和/或混合。有必要指出的是,可以使用数不尽的可能设计配置来实现本文中概述的操作目标。因此,相关联的基础设施具有无数的替代布置、设计选择、设备可能性、硬件配置、软件实现、设备选项等等。
任何适当配置的处理器部件都可以执行与数据相关联的任何类型的指令来实现本文中详述的操作。本文中公开的任何处理器可以将元素或项目(例如,数据)从一种状态或事物变换成另一种状态或事物。在另一示例中,本文中概述的一些活动可以利用以下来实现:固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令),以及本文中标识的元件可以是某一类型的可编程处理器、可编程数字逻辑(例如,FPGA、可擦除可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM))、包括数字逻辑的ASIC、软件、代码、电子指令、闪速存储器、光盘、CD-ROM、DVD ROM、磁卡或光卡、适用于存储电子指令的其它类型的机器可读介质、或者其任何适当组合。在操作中,处理器可以将信息存储在任何适当类型的非暂时性存储介质(例如,RAM、ROM、FPGA、ROM、EPROM或EEPROM)、软件、硬件中,或者在适当的情况下且基于特定需要存储在任何其它适当的部件、设备、元件或对象中。此外,在处理器中跟踪、发送、接收或存储的信息可以基于特定需要和实现方式而被提供于任何数据库、寄存器、表格、高速缓存、队列、控制列表或存储结构中,其全部可以在任何适当的时间框架中进行引用。本文中讨论的任何存储器项应解释为被涵盖于宽泛术语“存储器”内。类似地,本文中描述的潜在的处理元件、模块和机器中的任意应被解释为被涵盖于宽泛术语“微处理器”或“处理器”内。另外,在各种实施例中,本文中描述的处理器、存储器、网卡、总线、存储设备、相关外围设备和其它硬件元件可以通过由软件或固件配置成仿真或虚拟化那些硬件元件的功能的处理器、存储器和其它相关设备来实现。
在上面对实施例的讨论中,可以容易地置换、替代或以其它方式修改任何电容器、缓冲器、图形元件、互连板、时钟、DDR、相机传感器、除法器、电感器、电阻器、放大器、开关、数字核心、晶体管和/或其它部件,以便适应特定电路需求。此外,应指出的是,补充电子设备、硬件、非暂时性软件等的使用提供了用于实现本公开的教导的等同可行的选项。
在一个示例实施例中,附图的任何数量的电路可以被实现在相关联的电子设备的板上。该板可以是可以保持电子设备的内部电子系统的各种部件并且进一步提供用于其它外围设备的连接的一般电路板。更具体来说,该板可以提供电气连接,系统的其它部件可以通过该电气连接来进行电气通信。任何适当的处理器(包括数字信号处理器、微处理器、支持性芯片集等)、存储器元件等可以基于特定配置需要、处理需求、计算机设计等而被适当地耦合到该板。其它部件(诸如外部存储装置、附加传感器、用于音频/视频显示的控制器以及外围设备)可以作为插入式卡经由线缆被附连到该板或者被集成到板本身中。在另一示例实施例中,附图的电路可以被实现为独立式模块(例如,具有相关联的部件的设备和被配置成执行特定应用或功能的电路)或者被实现为插入到电子设备的专用硬件中的插入式模块。
要指出的是,在本文中提供了众多示例的情况下,可以按照两个、三个、四个或更多个电气部件来描述互连。然而,这仅是为了清楚和示例的目的而已经进行的。应领会到,可以以任何适当的方式联合所述系统。连同类似的设计替换方案,附图的所图示的部件、模块和元件中的任意可以被组合在各种可能配置中,其全部清楚地在本说明书的宽广范围内。在某些情况下,通过仅引用有限数目的电学元件来描述给定的一组流程的功能中的一个或多个可能更加容易。应领会到,附图的电路及其教导是容易地可缩放的,并且可以适应大量的部件,以及更复杂/精致的布置和配置。因此,所提供的示例不应限制范围或禁止如潜在地适用于无数的其它架构的电路的宽泛教导。
众多其它改变、替代、变化、变更和修改对于本领域技术人员来说可能是明了的,并且意图的是,本公开涵盖如落在随附权利要求的范围内的所有此类改变、替代、变化、变更和修改。为了在解释随附于本申请的权利要求时帮助美国专利商标局(USPTO)以及附加地关于本申请发布的任何专利的任何读者,申请人希望指出的是,申请人:(a)不意图随附权利要求中的任意援引 35 U.S.C. 章节112的第六(6)款(由于该条款在本申请的提交日时存在),除非在特定权利要求中明确使用了词语“用于……的装置”或“用于……的步骤”;以及(b)不意图通过说明书中的任何陈述来以未以其它方式在随附权利要求中反映出的任何方式限制本公开。

Claims (21)

1.一种用于进行寻址数据访问的装置,包括:
结构,包括:
请求接口,用以从请求代理接收寻址数据访问请求;
选择逻辑,用以散列化所述寻址数据访问请求的目标地址,并且用以根据散列将所述寻址数据访问请求指派给n个信道中的确切一个;以及
聚集器,用以聚集数据返回并且将所聚集的数据返回返回至所述请求代理,其中所述n个信道中的每一个均在所述选择逻辑处开始,前进到相应的寻址数据区域并前进到所述聚集器,在所述聚集器处所述n个信道汇聚。
2.根据权利要求1所述的装置,其中所述结构还包括:
多个n个先入先出缓冲器,其中,每个缓冲器要通信耦合到确切一个信道。
3.根据权利要求2所述的装置,其中n=2,并且所述散列是奇/偶散列。
4.根据权利要求2所述的装置,其中所述结构还包括:
共享资源介质,包括n个流水线,其中每个流水线要通信耦合到确切一个缓冲器并且通信耦合到确切一个寻址数据区域,其中,每个流水线与每个其它流水线互不包括。
5.根据权利要求1-4中的任一项所述的装置,还包括:排序逻辑,用以将对于所述结构的多个数据访问请求进行排序。
6.根据权利要求5所述的装置,其中所述排序逻辑还包括信用返回机制。
7.根据权利要求6所述的装置,其中所述信用返回机制用以仅在其具有来自全部n个流水线的保证返回值时才公布一个信用。
8.根据权利要求6所述的装置,其中所述信用返回机制可操作为针对下述流水线返回信用:所述流水线具有比每个其它流水线更多的未决请求并且弹出请求。
9.根据权利要求6所述的装置,其中所述信用返回机制用以针对下述流水线返回信用:所述流水线具有比任何其它流水线更少的未决请求并且推送请求。
10.一种片上系统,包括:
请求代理;
寻址数据资源;以及
用以将所述请求代理通信耦合到所述寻址数据资源的结构,所述结构包括:
请求接口,用以从请求代理接收寻址数据访问请求;以及
选择逻辑,用以散列化所述寻址数据访问请求的目标地址,并且用以根据散列将所述寻址数据访问请求指派给n个信道中的确切一个;以及
聚集器,用以聚集数据返回并且将数据返回至所述请求代理,其中所述n个信道中的每一个均在所述选择逻辑处开始,前进到相应的寻址数据区域并前进到所述聚集器,在所述聚集器处所述n个信道汇聚。
11.根据权利要求10所述的片上系统,其中,所述结构还包括:
多个n个先入先出缓冲器,其中,每个缓冲器要通信耦合到确切一个信道。
12.根据权利要求11所述的片上系统,其中n=2,并且所述散列是奇/偶散列。
13.根据权利要求11所述的片上系统,其中,所述结构还包括:
共享资源介质,包括n个流水线,其中每个流水线要通信耦合到确切一个缓冲器并且通信耦合到确切一个寻址数据区域,其中,每个流水线与每个其它流水线互不包括。
14.根据权利要求10-13中的任一项所述的片上系统,还包括:排序逻辑,用以将对于所述结构的多个数据访问请求进行排序。
15.根据权利要求14所述的片上系统,其中所述排序逻辑还包括信用返回机制。
16.根据权利要求15所述的片上系统,其中所述信用返回机制用以仅在其具有来自全部n个流水线的保证返回值时才通告一个信用。
17.一种用于进行寻址数据访问的方法,包括:
向请求代理提供单片访问请求接口;
由选择逻辑从所述请求代理接收对于寻址数据资源的寻址数据访问请求;以及
由所述选择逻辑散列化所述寻址数据访问请求的目标地址;
由所述选择逻辑根据散列将所述寻址数据访问请求指派给结构的n个信道中的确切一个;以及
由聚集器聚集数据返回并且将所聚集的数据返回返回至所述请求代理,其中所述n个信道中的每一个均在所述选择逻辑处开始,前进到所述寻址数据资源并前进到所述聚集器,在所述聚集器处所述n个信道汇聚。
18.根据权利要求17所述的方法,其中n=2,并且其中所述散列是奇/偶散列。
19.一种用于进行寻址数据访问的装置,包括用于执行根据权利要求17-18中的任一项所述的方法的部件。
20.根据权利要求19所述的装置,其中,所述部件包括处理器和存储器。
21.一种计算机可读介质,具有存储于其上的指令,所述指令在被执行时使计算设备执行根据权利要求17至18中任一项的方法。
CN201580064562.5A 2014-12-27 2015-12-11 用于减轻分布式非核结构中的业务量引导低效的系统和方法 Active CN107078959B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/583,613 US20160191420A1 (en) 2014-12-27 2014-12-27 Mitigating traffic steering inefficiencies in distributed uncore fabric
US14/583613 2014-12-27
PCT/US2015/065138 WO2016105967A1 (en) 2014-12-27 2015-12-11 Mitigating traffic steering inefficiencies in distributed uncore fabric

Publications (2)

Publication Number Publication Date
CN107078959A CN107078959A (zh) 2017-08-18
CN107078959B true CN107078959B (zh) 2020-11-20

Family

ID=56151413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580064562.5A Active CN107078959B (zh) 2014-12-27 2015-12-11 用于减轻分布式非核结构中的业务量引导低效的系统和方法

Country Status (4)

Country Link
US (1) US20160191420A1 (zh)
EP (1) EP3238083B1 (zh)
CN (1) CN107078959B (zh)
WO (1) WO2016105967A1 (zh)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9781027B1 (en) * 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10747445B2 (en) * 2015-09-22 2020-08-18 Toshiba Memory Corporation Memory system that selects data to be transmitted from a data buffer through a port
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10521368B2 (en) * 2015-12-24 2019-12-31 Arm Limited Arbitration of requests requiring a variable number of resources
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10282229B2 (en) * 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US20180007226A1 (en) * 2016-07-01 2018-01-04 Wesley J. Holland Define a priority of memory traffic based on image sensor metadata
US10733478B2 (en) * 2016-08-31 2020-08-04 Facebook, Inc. Systems and methods for processing media content that depict objects
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10242141B2 (en) * 2016-09-27 2019-03-26 Altera Corporation Reset sequencing for reducing noise on a power distribution network
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10237198B2 (en) * 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10944694B2 (en) 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
EP4120070B1 (en) * 2016-12-31 2024-05-01 INTEL Corporation Systems, methods, and apparatuses for heterogeneous computing
US10861504B2 (en) 2017-10-05 2020-12-08 Advanced Micro Devices, Inc. Dynamic control of multi-region fabric
US10558591B2 (en) * 2017-10-09 2020-02-11 Advanced Micro Devices, Inc. Method and apparatus for in-band priority adjustment forwarding in a communication fabric
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US11196657B2 (en) 2017-12-21 2021-12-07 Advanced Micro Devices, Inc. Self identifying interconnect topology
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10453540B2 (en) * 2018-04-23 2019-10-22 Intel Corporation Method and apparatus to prioritize read response time in a power-limited storage device
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US10545701B1 (en) * 2018-08-17 2020-01-28 Apple Inc. Memory arbitration techniques based on latency tolerance
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10802882B2 (en) 2018-12-13 2020-10-13 International Business Machines Corporation Accelerating memory access in a network using thread progress based arbitration
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11675715B2 (en) * 2019-03-27 2023-06-13 Intel Corporation Low pin-count architecture with prioritized message arbitration and delivery
AU2020202306A1 (en) * 2019-04-02 2020-10-22 The Raymond Corporation Systems and methods for an arbitration controller to arbitrate multiple automation requests on a material handling device
CN110275882A (zh) * 2019-05-08 2019-09-24 平安科技(深圳)有限公司 基于hbase的数据写入方法、系统、装置及可读存储介质
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11481342B2 (en) * 2019-06-25 2022-10-25 Seagate Technology Llc Data storage system data access arbitration
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11507522B2 (en) 2019-12-06 2022-11-22 Advanced Micro Devices, Inc. Memory request priority assignment techniques for parallel processors
US11223575B2 (en) 2019-12-23 2022-01-11 Advanced Micro Devices, Inc. Re-purposing byte enables as clock enables for power savings
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
FR3121315B1 (fr) * 2021-03-26 2024-03-29 Schneider Electric Ind Sas Module fonctionnel pour armoire électrique de raccordement et armoire électrique de raccordement comprenant un tel module fonctionnel
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886899B1 (en) * 2009-09-21 2014-11-11 Tilera Corporation Managing memory requests based on priority

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213148B2 (en) * 2001-06-13 2007-05-01 Corrent Corporation Apparatus and method for a hash processing system using integrated message digest and secure hash architectures
US20030026267A1 (en) * 2001-07-31 2003-02-06 Oberman Stuart F. Virtual channels in a network switch
US7194598B2 (en) * 2004-01-26 2007-03-20 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7213092B2 (en) * 2004-06-08 2007-05-01 Arm Limited Write response signalling within a communication bus
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
KR100922732B1 (ko) * 2007-12-10 2009-10-22 한국전자통신연구원 메모리 액세스 충돌 감소 장치 및 방법
US8533399B2 (en) * 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US8554851B2 (en) * 2010-09-24 2013-10-08 Intel Corporation Apparatus, system, and methods for facilitating one-way ordering of messages
US20120137090A1 (en) * 2010-11-29 2012-05-31 Sukalpa Biswas Programmable Interleave Select in Memory Controller
US8775700B2 (en) * 2011-09-29 2014-07-08 Intel Corporation Issuing requests to a fabric
US9098353B2 (en) * 2012-11-13 2015-08-04 Netronome Systems, Inc. Transactional memory that performs a split 32-bit lookup operation
US9405688B2 (en) * 2013-03-05 2016-08-02 Intel Corporation Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture
US9276846B2 (en) * 2013-03-15 2016-03-01 Cavium, Inc. Packet extraction optimization in a network processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886899B1 (en) * 2009-09-21 2014-11-11 Tilera Corporation Managing memory requests based on priority

Also Published As

Publication number Publication date
US20160191420A1 (en) 2016-06-30
CN107078959A (zh) 2017-08-18
EP3238083B1 (en) 2020-10-21
EP3238083A1 (en) 2017-11-01
EP3238083A4 (en) 2018-08-15
WO2016105967A1 (en) 2016-06-30

Similar Documents

Publication Publication Date Title
CN107078959B (zh) 用于减轻分布式非核结构中的业务量引导低效的系统和方法
US9535860B2 (en) Arbitrating memory accesses via a shared memory fabric
EP3238080B1 (en) Guaranteed quality of service in system-on-a-chip uncore fabric
CN107003962B (zh) 保持计算系统中高速缓存一致性的方法、装置和计算系统
CN107077190B (zh) 非核结构中的功率管理
KR101814412B1 (ko) 데이터 버퍼와 연관된 스누프 필터링의 제공
TWI522792B (zh) 用以產生要求之設備、用於記憶體要求之方法、及運算系統
US8667197B2 (en) Providing a fine-grained arbitration system
US9971711B2 (en) Tightly-coupled distributed uncore coherent fabric
CN107003959B (zh) 虚拟遗留线

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant