CN107003962A - 高速缓存一致代理到一致结构的低开销分层连接 - Google Patents
高速缓存一致代理到一致结构的低开销分层连接 Download PDFInfo
- Publication number
- CN107003962A CN107003962A CN201580064473.0A CN201580064473A CN107003962A CN 107003962 A CN107003962 A CN 107003962A CN 201580064473 A CN201580064473 A CN 201580064473A CN 107003962 A CN107003962 A CN 107003962A
- Authority
- CN
- China
- Prior art keywords
- request
- memory
- agency
- input
- bus
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/287—Multiplexed DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
在一个示例中,一种片上系统包括多个多核处理器,诸如总共八个核的四个双核处理器。处理器中的每个经由共享非核结构连接到共享资源(诸如存储器和外围设备)。因为用于每个核的每个输入总线可以包括数百个数据线,到所述共享非核结构中的线的数目可能变得过高。因此,来自每个核的输入被多路复用,诸如以二到一的配置。所述多路复用可以是非阻塞的、排队的(诸如FIFO)多路复用,以确保来自所有核的所有分组被递送到所述非核结构。在某些实施例中,一些更小的输入线可被提供给非多路复用的非核结构,并且从非核结构到各核的返回(输出)也可以是非多路复用的。
Description
相关申请的交叉引用
本申请要求2014年12月27日提交的题为“LOW OVERHEAD HIERARCHICAL CONNECTIVITYOF CACHE COHERENT AGENTS TO A COHERENT FABRIC”的美国非临时专利申请No. 14/583,611的权益和优先权,通过引用将其整体并入本文。
技术领域
本公开涉及计算系统,并且特别地(但非排他性地)涉及共享非核(uncore)结构。
背景技术
在具有多个设备的许多计算机系统中,执行仲裁来提供对诸如共享存储器之类的共享资源的访问。不同类型的仲裁机制被提供为使能能够实现不同代理或请求方之间的仲裁。一些系统使用固定优先级仲裁系统,在其中不同代理被分配特定的优先级。然而,这可能导致在一个或多个代理获得对共享资源的访问的能力的使用和饥饿(starvation)方面的不公平。其他仲裁系统提供基于循环反复(round robin-based)的方法来分配对共享资源的访问。
在某些实施例中,仲裁并不计及诸如功率状态之类的共享资源因素。因此,在一个示例中,准予对访问共享资源的请求并且该请求使该资源离开低功率状态,尽管该设备不需要立即访问该共享资源。
附图说明
图1是根据本说明书的一个或多个示例的共享存储器结构的一部分的框图。
图2是根据本说明书的一个或多个示例的准许仲裁器的进一步细节的框图。
图3是根据本说明书的一个或多个示例的在确定仲裁获胜方时用于更新代理的年龄(age)值的方法的流程图。
图4是根据本说明书的一个或多个示例的准许仲裁器状态机的框图。
图5是根据本说明书的一个或多个示例的用于在准许仲裁器中执行第一级别仲裁的方法的流程图。
图6是根据本说明书的一个或多个示例的资源分配逻辑的一部分的框图。
图7是根据本说明书的一个或多个示例的记分板索引生成逻辑的框图。
图8是根据本说明书的一个或多个示例的用于调度器仲裁器的状态机的框图。
图9是根据本说明书的一个或多个示例的用于执行存储器调度的方法的流程图。
图10是根据本说明书的一个或多个示例的SoC的框图。
图11是根据本说明书的一个或多个示例的存在于计算机系统中的部件的框图。
图12是根据本说明书的一个或多个示例的供控制系统中使用的现场使用(insitu)的SoC的框图。
图13是根据本说明书的一个或多个示例的SoC的所选择元件的框图。
图14和14A是根据本说明书的一个或多个示例的选择器的框图。
具体实施方式
在下面的描述中,阐述了许多具体细节(诸如特定类型的处理器和系统配置、具体硬件构造、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统部件、具体测量结果/高度、具体处理器流水线级和操作等等的示例),以便提供对本发明的透彻理解。然而,对本领域技术人员来说显而易见的是不需要采用这些具体细节来实践本发明。在其他情况下,尚未详细描述公知部件或方法(诸如具体和替代处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现方式、以代码形式的算法具体表达、具体功率下降和选通技术/逻辑以及计算机系统的其他具体操作细节),以便避免非必要地使本发明变晦涩。
在一个示例中,控制系统可包括片上系统(SoC),其包括用于实时操作以管理控制系统中的设备的一个处理器,和被配置成执行辅助功能(诸如用于控制系统的用户接口)的另一处理器。第一核和第二核可共享诸如动态随机存取存储器(DRAM)之类的存储器,并且还可共享被配置成将处理器通信耦合至一个或多个外围设备的非核结构。第一核可要求对存储器和/或外围设备的有保证的服务质量(QoS)。非核结构可被划分成被指定用于来自第一处理器的业务的第一“实时”虚拟信道以及被指定用于来自第二处理器的业务的第二“辅助”虚拟信道。非核结构可将适当的选择或加权算法应用于虚拟信道以保证QoS。
在各种实施例中,共享结构将多个独立设备(在本文中也称为“代理”)耦合至共享存储器或输入/输出(I/O)设备。在一个实施例中,共享结构包括单个管芯半导体器件的互连构造,其包括不同类型的知识产权(IP)逻辑块。在高级别处,共享结构可包括共享存储器结构以用于访问系统存储器、共享I/O互连结构和向全体共享结构提供智能(intelligence)的系统代理。共享结构可被配置成使得能够符合时间关键等时设备的服务质量(QoS)要求,同时还为非等时设备(在本文中也称为“尽力而为”设备)提供存储器带宽比例划分。
该结构可被称为“非核”,指示在该结构中提供的互连、寄存器和其他资源不是包括“代理”的处理核的一部分。非核结构可包括上述存储器结构、将“代理”连接至存储器的部分、以及还有将代理彼此连接以及特别地将处理器核连接至其他“代理”的部分。
进行存储器带宽的可靠且可预测分配和调度来支持连接至共享存储器结构的多个设备和设备类型。通过将QoS功能包括在公共共享存储器结构中(而不是包括在存储器控制器或其他非结构电路中),该设计可跨越多个半导体器件(诸如片上系统(SOC))而被更容易地重新使用,因为该设计独立于存储器技术。
因此实施例在共享存储器结构中执行资源分配、带宽分派和时间感知QoS属性来提供可预测且可靠的存储器带宽和延时,以满足连接至该结构的设备的要求。
服务类种类被指派给耦合至共享存储器结构的每个设备。在一个实施例中,可以使用该结构的配置寄存器来标识这种指派。该结构可支持多个服务类。在一个非限制性示例中,可存在两个服务类种类的设备,包括用于延时敏感设备的等时服务类种类和用于可以忍受较长延时以服务于它们对存储器的请求的设备的尽力而为服务类种类。在一些实施例中,延时敏感设备包括内容呈递设备(诸如作为非限制示例的音频或视频播放器、相机设备等等),而较低优先级设备包括处理器核、图形处理单元等等。
将以请求最后期限形式的时间从等时设备传达给结构,以向该结构指示完成对存储器的请求所需的延时。为了使得能够实现同步,该结构向所有等时请求代理广播全局定时器。对来自结构的输出连续驱动该全局定时器,因此它可用于通过等时设备进行采样。响应于该时间值,代理确定用于完成请求的延时要求并将该延时值添加至全局定时器值以形成针对该请求的最后期限。作为示例,可以由代理通过缓冲器的流失率和代理的数据缓冲器中的数据量来确定对于读取的延时。如果代理每250纳秒(ns)消耗1个高速缓存数据线并且在缓冲器中具有8个高速缓存数据线,则在缓冲器变空之前对于新请求所需的最后期限将是8×250ns或2微秒(μs)。基于该传达的延时或最后期限值,该结构可基于存储器的当前功率状态的知识和对于结构中未决的其他未调度存储器请求所需的延时来做出更好的调度决定。该最后期限通信可改善存储器带宽并且还节省系统功率。
请求最后期限的使用向结构提供了针对来自等时设备的每个请求的延时信息。在结构内编程的配置寄存器向该结构提供了关于存储器配置的信息(诸如存储器离开低功率(例如自刷新和状态)所需的延时)。该结构还通过向存储器控制器(例如以状态信道的形式)发送指示来控制存储器控制器何时促使所附接的存储器进入和离开自刷新状态。该结构通过评估对于所有未决存储器请求的延时需求来确定何时存储器应该进入和离开自刷新。因为该结构了解对于所有未决存储器请求所需的延时和离开自刷新所需的延时,所以存储器的功率状态转变的更大管理可以导致附加的功率节省。
实施例还可以通过允许存储器请求被无序调度来提供存储器带宽中的效率,然而,这可能导致对于某些请求的长调度延时。为了解决此顾虑,结构向每个等时存储器请求指派优先级级别,例如高优先级或低优先级。当调度高优先级等时请求时,所允许的无序调度的量小于当调度尽力而为或低优先级等时请求时可接受的量。限制对于高优先级请求的无序调度的量确保了满足请求延时要求。因为根据请求的最后期限来确定请求优先级,所以该结构可以在请求被调度之后立即确定对于等时设备来说其他未决请求的优先级级别是什么。通过使用最后期限方法,所有未决请求的优先级级别仅在全局定时器递增时进行改变。
实施例还可以改善跨越多个SoC实现方式的复杂QoS存储器调度算法的便携性和重用,因为智能存储器调度逻辑被结合到该结构中,同时可以在存储器控制器中实施技术特定的存储器控制器逻辑。
实施例还可以将抗饥饿算法结合到结构的多个仲裁点中。在一个实施例中,这些抗饥饿算法包括由准许仲裁器使用的加权的基于年龄的仲裁方法以及在存储器调度器和请求跟踪器中使用的可用调度队列中的最旧一个。此外,相比于其中来自高优先级等时设备的请求总是胜出的固定优先级仲裁,请求权重可被用于在结构中的仲裁点处的不同优先级级别之间进行切换以及用于从调度读取请求切换至写入请求。
在一个实施例中,共享存储器结构包括用于调度被发送至存储器控制器的请求的两个仲裁点。第一仲裁点被用来准许来自设备的请求进入共享存储器结构中并且被称为“准许仲裁器”。第二仲裁点被用来调度从共享存储器结构发送至存储器控制器的请求并且被称为“调度器仲裁器”。
被连接至共享存储器结构的每个设备都具有连接在设备和结构之间的请求接口。该请求接口供应可以被用于QoS存储器调度的关于请求的信息。在一个实施例中,该信息包括存储器地址、顺序ID字段和操作码字段。对于等时设备,提供被称为请求最后期限字段的附加字段,以指示完成该请求需要的所需延时。要指出,在SoC的一些实现方式中,存储器结构接口可被连接至允许多个设备共享公共请求接口的其他结构或切换设备(switch)。
在SoC的一个实施例中,一个或多个请求代理被指定为“实时”核,而一个或多个请求代理被指定为“辅助”核,它们是基于尽力而为来提供的。作为一个示例,SoC可被提供用来控制工业机械、提供寿命支持功能、控制自主或半自主车辆(诸如避免碰撞系统)、或以其他方式执行使命关键或安全关键功能。在该示例中,SoC包括双核处理器,其中第一核充当实时代理,并且第二核充当辅助(尽力而为)代理。设计考虑可以驱动实时代理以有保证的QoS来执行的要求以使得它不会在其控制功能中出现故障。辅助代理可以执行不要求有保证的QoS的其他任务,诸如提供用户接口、报告功能或不具有关键时序的其他支持功能。
在某些应用中,辅助代理可提供暂时“满溢”或以其他方式淹没非核结构的过量业务,以使得实时代理暂时不能在其所要求的有保证的QoS上操作。例如,如果辅助代理提供用户接口,则用户与该接口的交互可提供淹没非核结构的数据流,使得实时业务暂时受阻。这可能导致实时代理遇到故障状况的情况。
为了避免此类受阻,非核结构可被划分成两个或更多分离的虚拟信道。分离成虚拟信道可通过附加至流过非核结构报头信息的每个数据分组来完成,包括所起源于的或要接收数据的代理,并且在一些情况下包括所起源于的或要接收数据的设备或外围设备。例如,报头信息可将特定分组指定为源自于“核0”(在该示例中实时代理)并被路由至DRAM。另一分组可被指定为源自于“核1”(在该示例中辅助代理)并被路由至用户显示器。在这种情况下,本文所述的仲裁器可向第一分组提供相比于第二分组的抢先优先级。在另一示例中,从核0至某一外围设备的业务可被给予增加的优先级,但是可能不至于关键到保证抢先优先级。有利地,将业务划分成多个虚拟信道使得能够实现根据特定应用的需求和设计参数的任何适当优先级方案。
在下面的图中,图1-9描述包括优先级和QoS方案的存储器结构的操作的所选部分。图10和11提供SoC以及其应用的示例框图。图12提供包括共享非核结构、实时代理和尽力而为代理的现场使用的SoC的示例框图。图13、14和14A提供了多路复用的框图。
图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和对应的地址标签储存器145、控制队列146和其他资源(诸如各种缓冲器、诸如资源分配逻辑148的逻辑、等等)。在一些实现方式中,标签阵列和数据缓冲器可被定位在除跟踪器外的别处。应该指出,图1的框图意图是非限制性的,并且其他元件可存在于各种实施例中。
共享存储器结构可包括在由准许仲裁器可以对来自请求代理的请求准予之前被首先分配的某些有限资源。这些资源包括内部数据缓冲器和地址标签储存器中的可用条目。其他有限资源包括存储器调度器和请求跟踪器记分板中的可用条目。在对于结构的内部数据缓冲器、标签阵列和存储器调度器记分板的资源中存在一对一对应性。在一个实施例中,这些资源被分配给存储器的预定区域(例如诸如64字节的高速缓存线带宽)。每个有效请求也在请求和一致性跟踪器中被分配其自己的条目,但是对存储器中同一区域的多个请求共享数据缓冲器、标签阵列和存储器调度器记分板中的同一条目。尽管对于要被分配给同一数据缓冲器、标签阵列和调度器记分板条目的多于一个请求来说这是可能的,但是对于请求和一致性跟踪器中的所有未完成读取请求来说仅一个读取请求被调度至存储器控制器。
用于所有设备的请求接口连接至结构的准许仲裁器。等时设备使用请求总线的最后期限字段来向结构指示完成该请求所需的延时。结构向被附接至该结构的所有等时设备发送全局定时器值。对于要被发送至结构的每个请求,等时设备(例如在最后期限逻辑中)确定完成请求需要的所需延时并且将该值添加至全局定时器的当前值,以便创建请求最后期限。不同方法可被不同等时设备用来确定对于请求所需的延时,但是在一个实施例中,所有等时设备使用请求接口的最后期限字段向结构指示请求延时。在其他实施例中,非核结构可代表要求实时QoS的代理指派最后期限。具体方法可能不同,但是一个示例可以是,在默认情况下,非核结构对来自实时核的所有请求指派自当前时间起的x微秒的固定最后期限。在该示例中,x可以是从配置寄存器导出的值。
在一个实施例中,准许仲裁器具有两个级别的优先级。在用于紧急等时请求的仲裁器中存在高优先级路径。如果请求代理被配置为等时代理且请求的最后期限字段小于存储在指定了阈值(被称为“紧急阈值”)的配置寄存器中的值,则请求被视为紧急。准许仲裁器还具有用于尽力而为请求和用于不被视为紧急的等时请求的低优先级路径。使用在高优先级仲裁的获胜方和低优先级仲裁的获胜方之间进行选择的优先级选择器来完成最终级别的仲裁。
在一个实施例中,准许仲裁器最终选择器具有可以使用配置寄存器选择的两个模式。第一模式是固定优先级模式,在其中假设在准许仲裁器的输入端处存在至少一个高优先级请求,选择器在选取低优先级仲裁路径的获胜方之前选取高优先级仲裁路径的获胜方。最终选择器的第二模式是加权轮询模式,在其中最终选择器在对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的框图意图是非限制性的,并且其他元件可存在于各种实施例中。
加权的基于年龄的仲裁细节
由准许仲裁器实现的基于年龄的算法是这样的,以使得自从由仲裁器上一次准予以来已等待最长时间的请求代理将被给予最高优先级级别。一旦已经接收到最高优先级级别,针对该代理的优先级级别将不会改变,除非该代理已经被仲裁器准予。以这种方式,通过确保针对请求代理的优先级级别可以直到请求代理已经被仲裁器准予才在优先级级别中增加,可以避免在轮询仲裁的某些实施例中可能发生的饥饿问题。
准许仲裁器还允许向所有请求代理指派代理权重。权重被用来为每个请求代理分配请求带宽的百分比。在一个实施例中,经由存储在代理权重配置寄存器中的值来为每个代理指定权重值。在一个非限制性示例中,被分配给代理的请求带宽的百分比等于代理权重除以所述代理的权重和。在另一示例中,对于实时核的权重可以比其他核更高以给予实时核更好的QoS。
加权的基于年龄的算法
准许仲裁器加权的基于年龄的算法是基于由仲裁器上一次对请求代理准予时的相对年龄。对于连接至准许仲裁器的每个请求代理,存在实例化的一个年龄计数器和实例化的一个权重计数器。
准许仲裁器中的高优先级仲裁路径和低优先级仲裁路径二者共享用于连接至该准许仲裁器的代理的公共年龄和权重计数器。由最终选择器(即优先级仲裁器选择器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。在一个实施例中,这些共享资源是结构的内部数据缓冲器、地址标签储存器和请求跟踪器记分板。因为不存在用于请求代理中的任一个的专用资源,所以机制可以限制在结构中对于每个代理而言未决的未完成请求的数目,同时还例如通过将虚拟条目预留在这些共享资源中来允许针对代理预留条目。该结构虑及代理限制的规定以防止任一个请求代理用光结构的所有可用共享资源。
存储器调度算法的一部分处理最小化读取到写入周转时间对存储器技术的性能影响。为了最小化次数,存储器调度器在调度读取请求至调度写入请求之间进行切换,冲刷池(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,以便支持它们对存储器技术或配置的独特要求。
在其他实施例中,图7-9中描述的方法可以在存储器控制器中被整体或部分地重复或者排他性地由存储器控制器实施。
除了改进存储器调度逻辑的便携性之外,实施例还提供存储器请求延时的可预测性,因为高级无序调度算法和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中。控制接下来传递到自刷新状态机510,其包括“进入”自刷新状态512、“请求”自刷新状态513和“离开”自刷新状态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-1—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耦合至一个或多个内部代理750(诸如各种外围设备)。在一个实施例中,互连744可包括优先级信道互连、边带信道互连和存储器信道互连。类似配置的互连74提供系统代理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还可耦合至处理器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。在一些实施例中,触摸板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图示了SoC(诸如图12的SoC 1200)的附加选择的元件的示例。在这个示例中,提供了多个代理115,具体是在四个双核CPU中的八个总代理。每个CPU包括高速缓存1310(在两个核之间共享),并且提供输出总线1370。可能需要在所有核115之间保持高速缓存一致性。因此,共享非核结构100可以提供高速缓存一致性跟踪器,如本文所描述的。
在一个示例中,输出总线1370可以具有用于载送各种信号的大致600到700条线。因此,在某些实施例中将每条线单独地路由至共享非核结构100是不实际的。相反,提供了四个选择器1320。选择器1320多路复用来自核115的业务。在一般意义上来说,对于p个核,仅n个输入总线需要被提供到共享非核结构100中。在此特定情况下,p=8,并且n=2。
然而,在某些实施例中,对选择器1320来说作为简单的多路复用器是不够的。例如,传统多路复用器可以根据选择信号来阻塞某些输入。对于SoC 1200来说这可能是不可接受的,因为来自代理115的每个分组需要最终被递送到共享非核结构100。因此,在一个示例中,选择器1320是非阻塞多路复用器。例如这可以通过提供以先进先出(FIFO)缓冲器形式的队列来完成。利用FIFO缓冲器,所有分组以它们被接收到的顺序被递送到共享非核结构100。
图14和14A是根据本说明书的一个或多个示例的选择器1320的实施例的框图。在此示例中,许多信号或者是“核到非核”(C2U)或“非核到核”(U2C)。通过例证的方式,每个总线包括数据宽度,但应该理解的是这些数据宽度被提供为非限制性示例。如可看到的,许多必要的总线非常大,诸如U2C数据,其为128位宽。因此,多路复用这些信号是有利的。然而,其他信号要窄得多,并且在一些实施例中不需要被多路复用。例如“C2U REPLY”仅为15位宽。
因此,在某些实施例中,可以在不多路复用的情况下提供窄总线,而不管其方向如何。这有助于加速某些关键数据事务。
注意到遍及选择器1320提供了许多队列。通过示例的方式提供以下内容。
U2C请求队列1410可以包括IDI气泡生成器FIFO(BGF)信用计数器,其处理从逻辑块时钟比和电压到系统接口时钟比和电压以及相反的转换。从IDI视角,这样的FIFO是运输协议层消息的链路层构造,并且每个BGF写入器本地跟踪获得构造条目的使用所需的可用BGF信用。
C2U请求仲裁器1420包括薄片散列(slice hash)和加权年龄仲裁。其也可以包括B准许C2U请求FIFO信用计数器。
U2C数据FIFO 1430可以包括IDI BGF信用计数器。
C2U数据仲裁器1440可以包括加权年龄四计数仲裁写入数据FIFO信用计数器。
U2C响应FIFO 1450包括IDI BGF信用计数器。
在图14A中,卫星C2U请求仲裁器1460包括加权循环反复B准许C2U请求FIFO信用计数器。
卫星U2C数据队列1462包括BGF信用计数器。
卫星U2C响应队列1470包括BGF信用计数器。
卫星C2U数据仲裁器1480包括加权循环反复优先级C2U数据FIFO信用计数器。
卫星C2U数据队列1490包括BGF信用计数器。
本说明书的实施例提供超过仅为下行业务提供单个VC的某些实施例(它们中的一些不会为实时应用提供端对端QoS)的优点。
本文通过示例的方式公开了一种互连装置,其包括:高速缓存一致性跟踪器;数据接口,其将所述高速缓存一致性跟踪器通信地耦合到p个高速缓存一致代理,所述数据接口包括n个输入总线,其中n<p;以及至少一个多路复用器,其选择性地从所述高速缓存一致代理中的至少两个向所述输入总线中的一个提供输入。
进一步公开了一个示例,其中所述多路复用器是非阻塞多路复用器。
进一步公开了一个示例,其中所述多路复用器是排队多路复用器。
进一步公开了一个示例,其中所述排队多路复用器包括先进先出队列。
进一步公开了一个示例,其中所述n个输入总线要接收第一信号,并且还包括p个非多路复用的输入总线以接收第二信号。
进一步公开了一个示例,其中要接收所述第二信号的所述p个输入总线比要接收所述第一信号的所述n个输入总线具有基本上更小的数据宽度。
进一步公开了一个示例,进一步包括p个非多路复用的输出总线来提供返回信号。
进一步公开了一个示例,其中所述p个非多路复用输出总线比所述n个输入总线具有基本上更小的数据宽度。
通过示例的方式进一步公开了一种计算系统,其包括:p个高速缓存一致代理;至少一个共享资源;以及共享结构,其将所述p个高速缓存一致代理通信地耦合到所述至少一个共享资源,所述共享结构包括:高速缓存一致性跟踪器;数据接口,其将所述高速缓存一致性跟踪器通信地耦合到所述p个高速缓存一致代理,所述数据接口包括n个输入总线,其中n<p;以及至少一个多路复用器,其选择性地从所述高速缓存一致代理中的至少两个向所述输入总线中的一个提供输入。
进一步公开了一个示例,其中所述多路复用器是非阻塞多路复用器。
进一步公开了一个示例,其中所述多路复用器是排队多路复用器。
进一步公开了一个示例,其中所述排队多路复用器包括先进先出队列。
进一步公开了一个示例,其中所述n个输入总线要接收第一信号,并且还包括p个非多路复用的输入总线以接收第二信号。
进一步公开了一个示例,其中要接收所述第二信号的所述p个输入总线比要接收所述第一信号的所述n个输入总线具有基本上更小的数据宽度。
进一步公开了一个示例,进一步包括p个非多路复用的输出总线来提供返回信号。
进一步公开了一个示例,其中所述p个非多路复用输出总线比所述n个输入总线具有基本上更小的数据宽度。
通过示例的方式进一步公开了一种保持计算系统中的高速缓存一致性的方法,其包括:接收来自p个高速缓存一致代理的输入;将所述p个输入多路复用到n个输入总线中,其中p<n;以及将所述p个输入提供给共享结构。
进一步公开了一个示例,其中多路复用所述p个输入包括非阻塞多路复用。
进一步公开了一个示例,其中多路复用所述p个输入包括对所述输入进行排队。
进一步公开了一个示例,其中所述排队包括先进先出排队。
进一步公开了一个示例,其中所述p个输入包括第一信号,并且所述示例进一步包括接收包括第二信号的p个非多路复用的输入。
进一步公开了一个示例,还包括提供p个非多路复用的输出。
尽管已经关于有限数目的实施例描述了本发明,但是本领域技术人员将会从其认识到许多修改和变化。所意图的是,所附权利要求覆盖如落入该本发明的真实精神和范围内的所有此类修改和变化。
设计可经历各个阶段,从创建到模拟到制造。表示设计的数据可表示处于许多方式的设计。首先,如在模拟中有用的,可使用硬件描述语言或另一功能描述语言来表示硬件。另外地,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某些阶段大多数设计达到表示硬件模型中的各种设备的物理放置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定各种特征在针对用于产生集成电路的掩模的不同掩模层上的存在或不存在的数据。在设计的任何表示中,可以以任何形式的机器可读介质来存储数据。诸如盘之类的存储器或者磁性或光学存储可以是机器可读介质,以存储经由光波或电波传送的信息,该光波或电波被调制或以其他方式被生成以传送此类信息。当指示或载送代码或设计的电学载波被传送时,在电信号的拷贝、缓冲或重传被执行的程度上,制作新的拷贝。因此,通信提供商或网络提供商可将物品(诸如被编码成载波的信息)至少暂时存储在有形的机器可读介质上,从而体现本发明的实施例的技术。
如本文所使用的模块指的是硬件、软件和/或固件的任何组合。作为一个示例,模块包括与非瞬时介质相关联的硬件(诸如微控制器),以存储被适配成要由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是具体被配置成识别和/或执行要被保持在非瞬时介质上的代码的硬件。此外,在另一实施例中,模块的使用指的是包括代码的非瞬时介质,其被具体适配成要由微控制器来实行以执行预定操作。并且如可以被推断的,在又一实施例中,术语模块(在该示例中)可指的是微控制器和非瞬时介质的组合。通常,被图示为分离的模块边界一般会变化并且潜在地重叠。例如,第一和第二模块可在潜在地保留某些独立硬件、软件或固件的同时共享硬件、软件、固件或其组合。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其他硬件(诸如可编程逻辑设备)。
在一个实施例中,短语“用以”或“被配置成”的使用指的是布置、放在一起、制造、供应来销售、引进和/或设计一种装置、硬件、逻辑或元件来执行指定任务或确定任务。在该示例中,如果未正在操作的装置或其元件被设计、耦合和/或互连以执行所述指定任务,则该装置或其元件仍“被配置成”执行所述指定任务。作为纯粹例证性的示例,逻辑门可在操作期间提供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)、磁卡或光卡、闪速存储器、或在通过因特网经由电、光、声或其他形式的传播信号(例如载波、红外线信号、数字信号等等)的信息传输中使用的有形机器可读存储。因此,计算机可读介质包括适于存储或传送以由机器(例如计算机)可读的形式的信息或电子指令的任何类型的有形机器可读介质。
遍及该说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及本说明书的各个位置中的出现不一定都指的是同一实施例。此外,在一个或多个实施例中可以以任何适当方式来组合特定特征、结构或特性。
在前述说明书中,已经参考具体示例性实施例而给出详细描述。然而,将明显的是,可以在不偏离如所附权利要求中阐述的本发明的较广阔精神和范围的情况下对实施例做出各种修改和改变。相应地,要以例证性意义而非限制性意义来考虑说明书和附图。此外,实施例以及其他示例性语言的前述使用不一定指的是相同的实施例或相同的示例,而是可指代不同且有区别的实施例,以及潜在相同的实施例。
Claims (21)
1.一种互连装置,其包括:
高速缓存一致性跟踪器;
数据接口,其将所述高速缓存一致性跟踪器通信地耦合到p个高速缓存一致代理,所述数据接口包括n个输入总线,其中n<p;以及
至少一个多路复用器,其选择性地从所述高速缓存一致代理中的至少两个向所述输入总线中的一个提供输入。
2.根据权利要求1所述的互连装置,其中所述多路复用器是非阻塞多路复用器。
3.根据权利要求1所述的互连装置,其中所述多路复用器是排队多路复用器。
4.根据权利要求3所述的互连装置,其中所述排队多路复用器包括先进先出队列。
5.根据权利要求1-4中任一项所述的互连装置,其中所述n个输入总线要接收第一信号,并且还包括p个非多路复用的输入总线以接收第二信号。
6.根据权利要求5所述的互连装置,要接收所述第二信号的所述p个输入总线比要接收所述第一信号的所述n个输入总线具有基本上更小的数据宽度。
7.根据权利要求1-4中任一项所述的互连装置,进一步包括p个非多路复用的输出总线来提供返回信号。
8.根据权利要求7所述的互连装置,其中所述p个非多路复用的输出总线比所述n个输入总线具有基本上更小的数据宽度。
9.一种计算系统,其包括:
p个高速缓存一致代理;
至少一个共享资源;以及
共享结构,其将所述p个高速缓存一致代理通信地耦合到所述至少一个共享资源,所述共享结构包括:
高速缓存一致性跟踪器;
数据接口,其将所述高速缓存一致性跟踪器通信地耦合到所述p个高速缓存一致代理,所述数据接口包括n个输入总线,其中n<p;以及
至少一个多路复用器,其选择性地从所述高速缓存一致代理中的至少两个向所述输入总线中的一个提供输入。
10.根据权利要求9所述的计算系统,其中所述多路复用器是非阻塞多路复用器。
11.根据权利要求9所述的计算系统,其中所述多路复用器是排队多路复用器。
12.根据权利要求11所述的计算系统,其中所述排队多路复用器包括先进先出队列。
13.根据权利要求9-12中任一项所述的计算系统,其中所述n个输入总线要接收第一信号,并且还包括p个非多路复用的输入总线以接收第二信号。
14.根据权利要求13所述的计算系统,要接收所述第二信号的所述p个输入总线比要接收所述第一信号的所述n个输入总线具有基本上更小的数据宽度。
15.根据权利要求9-12中任一项所述的计算系统,进一步包括p个非多路复用的输出总线来提供返回信号。
16.根据权利要求15所述的计算系统,其中所述p个非多路复用的输出总线比所述n个输入总线具有基本上更小的数据宽度。
17.一种保持计算系统中的高速缓存一致性的方法,其包括:
接收来自p个高速缓存一致代理的输入;
将所述p个输入多路复用到n个输入总线中,其中p<n;以及
将所述p个输入提供给共享结构。
18.根据权利要求17所述的方法,其中多路复用所述p个输入包括非阻塞多路复用。
19.根据权利要求17所述的方法,其中多路复用所述p个输入包括对所述输入进行排队。
20.根据权利要求19所述的方法,其中所述排队包括先进先出排队。
21.根据权利要求17所述的方法,其中所述p个输入包括第一信号,并且所述方法进一步包括接收包括第二信号的p个非多路复用的输入。
根据权利要求17所述的方法,还包括提供p个非多路复用的输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/583,611 US10133670B2 (en) | 2014-12-27 | 2014-12-27 | Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric |
US14/583611 | 2014-12-27 | ||
PCT/US2015/064856 WO2016105952A1 (en) | 2014-12-27 | 2015-12-10 | Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003962A true CN107003962A (zh) | 2017-08-01 |
CN107003962B CN107003962B (zh) | 2021-07-13 |
Family
ID=56151407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580064473.0A Active CN107003962B (zh) | 2014-12-27 | 2015-12-10 | 保持计算系统中高速缓存一致性的方法、装置和计算系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10133670B2 (zh) |
EP (1) | EP3238082A4 (zh) |
CN (1) | CN107003962B (zh) |
WO (1) | WO2016105952A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10133670B2 (en) | 2014-12-27 | 2018-11-20 | Intel Corporation | Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric |
US10242141B2 (en) * | 2016-09-27 | 2019-03-26 | Altera Corporation | Reset sequencing for reducing noise on a power distribution network |
US10721185B2 (en) | 2016-12-06 | 2020-07-21 | Hewlett Packard Enterprise Development Lp | Age-based arbitration circuit |
US10237198B2 (en) * | 2016-12-06 | 2019-03-19 | Hewlett Packard Enterprise Development Lp | Shared-credit arbitration circuit |
US10452573B2 (en) | 2016-12-06 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Scripted arbitration circuit |
US10944694B2 (en) | 2016-12-06 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Predictive arbitration circuit |
US10693811B2 (en) | 2018-09-28 | 2020-06-23 | Hewlett Packard Enterprise Development Lp | Age class based arbitration |
US20230251993A1 (en) * | 2022-02-10 | 2023-08-10 | SambaNova Systems, Inc. | Two-Level Arbitration in a Reconfigurable Processor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030152114A1 (en) * | 2001-08-24 | 2003-08-14 | Sandstrom Mark Henrik | Input-controllable dynamic cross-connect |
CN101008921A (zh) * | 2007-01-26 | 2007-08-01 | 浙江大学 | 基于总线侦听的嵌入式异构多核缓存一致性方法 |
US20080162661A1 (en) * | 2006-12-29 | 2008-07-03 | Intel Corporation | System and method for a 3-hop cache coherency protocol |
CN101425042A (zh) * | 2004-09-09 | 2009-05-06 | 英特尔公司 | 解决高速缓存冲突 |
US20140108744A1 (en) * | 2012-09-28 | 2014-04-17 | Arteris SAS | Simplified controller with partial coherency |
US20140289435A1 (en) * | 2011-09-29 | 2014-09-25 | Sridhar Lakshmanamurthy | Issuing Requests To A Fabric |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266751B1 (en) * | 1997-11-14 | 2001-07-24 | Agere Systems Guardin Corp. | Continuously sliding window method and apparatus for sharing single-ported memory banks between two agents |
US6237064B1 (en) * | 1998-02-23 | 2001-05-22 | Intel Corporation | Cache memory with reduced latency |
US6628662B1 (en) * | 1999-11-29 | 2003-09-30 | International Business Machines Corporation | Method and system for multilevel arbitration in a non-blocking crossbar switch |
US20050228952A1 (en) * | 2004-04-13 | 2005-10-13 | David Mayhew | Cache coherency mechanism |
US20080320236A1 (en) * | 2007-06-25 | 2008-12-25 | Makoto Ueda | System having cache snoop interface independent of system bus interface |
US8131944B2 (en) * | 2008-05-30 | 2012-03-06 | Intel Corporation | Using criticality information to route cache coherency communications |
US8169850B2 (en) * | 2009-04-27 | 2012-05-01 | Intel Corporation | Forming multiprocessor systems using dual processors |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US9141388B2 (en) * | 2009-12-25 | 2015-09-22 | Shanghai Xin Hao Micro Electronics Co., Ltd. | High-performance cache system and method |
US8443148B2 (en) * | 2009-12-26 | 2013-05-14 | Intel Corporation | System-wide quiescence and per-thread transaction fence in a distributed caching agent |
US7982497B1 (en) * | 2010-06-21 | 2011-07-19 | Xilinx, Inc. | Multiplexer-based interconnection network |
US8856456B2 (en) * | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
US8984228B2 (en) * | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
US9081891B2 (en) * | 2012-07-31 | 2015-07-14 | Hewlett-Packard Development Company, L.P. | Reconfigurable crossbar networks |
US9229895B2 (en) * | 2012-09-13 | 2016-01-05 | Intel Corporation | Multi-core integrated circuit configurable to provide multiple logical domains |
US9317102B2 (en) * | 2013-01-03 | 2016-04-19 | Apple Inc. | Power control for cache structures |
US9405688B2 (en) * | 2013-03-05 | 2016-08-02 | Intel Corporation | Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture |
US9448937B1 (en) * | 2014-08-18 | 2016-09-20 | Xilinx, Inc. | Cache coherency |
US9448741B2 (en) * | 2014-09-24 | 2016-09-20 | Freescale Semiconductor, Inc. | Piggy-back snoops for non-coherent memory transactions within distributed processing systems |
US9785223B2 (en) | 2014-12-25 | 2017-10-10 | Intel Corporation | Power management in an uncore fabric |
US10133670B2 (en) | 2014-12-27 | 2018-11-20 | Intel Corporation | Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric |
-
2014
- 2014-12-27 US US14/583,611 patent/US10133670B2/en active Active
-
2015
- 2015-12-10 CN CN201580064473.0A patent/CN107003962B/zh active Active
- 2015-12-10 EP EP15874110.8A patent/EP3238082A4/en not_active Withdrawn
- 2015-12-10 WO PCT/US2015/064856 patent/WO2016105952A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030152114A1 (en) * | 2001-08-24 | 2003-08-14 | Sandstrom Mark Henrik | Input-controllable dynamic cross-connect |
CN101425042A (zh) * | 2004-09-09 | 2009-05-06 | 英特尔公司 | 解决高速缓存冲突 |
US20080162661A1 (en) * | 2006-12-29 | 2008-07-03 | Intel Corporation | System and method for a 3-hop cache coherency protocol |
CN101008921A (zh) * | 2007-01-26 | 2007-08-01 | 浙江大学 | 基于总线侦听的嵌入式异构多核缓存一致性方法 |
US20140289435A1 (en) * | 2011-09-29 | 2014-09-25 | Sridhar Lakshmanamurthy | Issuing Requests To A Fabric |
US20140108744A1 (en) * | 2012-09-28 | 2014-04-17 | Arteris SAS | Simplified controller with partial coherency |
Non-Patent Citations (1)
Title |
---|
BARROSO L A ET AL: "Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing", 《ACM SIGARCH COMPUTER ARCHITECTURE NEWS - SPECIAL ISSUE: PROCEEDINGS OF THE 27TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 * |
Also Published As
Publication number | Publication date |
---|---|
CN107003962B (zh) | 2021-07-13 |
US10133670B2 (en) | 2018-11-20 |
EP3238082A1 (en) | 2017-11-01 |
WO2016105952A1 (en) | 2016-06-30 |
US20160188469A1 (en) | 2016-06-30 |
EP3238082A4 (en) | 2018-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107078959A (zh) | 减轻分布式非核结构中的业务量引导低效 | |
CN104321758B (zh) | 经由共享存储器结构的仲裁存储器访问 | |
CN107003956A (zh) | 片上系统非核结构中的保证服务质量 | |
CN107077190A (zh) | 非核结构中的功率管理 | |
CN107003962A (zh) | 高速缓存一致代理到一致结构的低开销分层连接 | |
CN107077440A (zh) | 紧密耦合的分布式非核一致结构 | |
TWI522792B (zh) | 用以產生要求之設備、用於記憶體要求之方法、及運算系統 | |
CN104885070B (zh) | 控制片上系统(SoC)中的带宽分配 | |
CN105247825A (zh) | 基于信用的仲裁的服务率重新分配 | |
US8589551B2 (en) | Multiprocessor computer and network computing system processing use and provision of hardware resource via a network | |
CN103069401B (zh) | 维持多数据总线平台中事务连贯性的方法、装置以及系统 | |
CN107003959A (zh) | 虚拟遗留线 | |
US8954635B2 (en) | Buffer management using freelist buffers |
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 |