CN112789603A - 用于在重排序期间维持高速缓存一致性的方法 - Google Patents
用于在重排序期间维持高速缓存一致性的方法 Download PDFInfo
- Publication number
- CN112789603A CN112789603A CN201980065151.6A CN201980065151A CN112789603A CN 112789603 A CN112789603 A CN 112789603A CN 201980065151 A CN201980065151 A CN 201980065151A CN 112789603 A CN112789603 A CN 112789603A
- Authority
- CN
- China
- Prior art keywords
- request
- address
- entry
- queue
- indication
- 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.)
- Pending
Links
Images
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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于在计算系统中执行高效数据传送的系统、设备和方法。计算系统包括客户端和组构中的多个组构接口。所述组构接口中的分组发射器包括各自用于存储相应类型的分组的多个队列,以及用于每个队列的对应地址历史高速缓存。所述分组发射器中的队列仲裁器选择要发布的候选分组,并且确定链路两侧的地址历史高速缓存何时存储地址的上部部分。所述分组发射器在所述链路上在分组中发送请求的源标识符和指针,而不是整个请求地址,这减小了所述分组的大小。所述队列仲裁器支持从所述队列进行乱序发布。所述队列仲裁器检测与乱序发布的冲突并且调整出站分组和存储在队列条目中的字段以避免数据损坏。
Description
背景技术
相关技术的描述
在计算系统中,一些类型的应用程序执行相比其他应用程序能够更好地利用并行处理和共享存储器的功能。此类应用程序的实例包括机器学习应用程序、娱乐和实时应用程序以及一些商业、科学、医学和其他应用程序。虽然一些处理器架构包括多于一个处理单元(例如,CPU、GPU等)或处理核心,但在一些情况下,耦接到存储器的另外的处理单元并不提供期望的性能水平。
一般而言,计算系统通过通信组构(或“组构”)传送通信消息。通信消息的实例包括一致性探测、中断以及读取和写入访问命令和对应数据。组构中的互连的实例包括总线架构、基于交叉开关的架构、片上网络(NoC)通信子系统、管芯之间的通信信道、硅中介层以及硅通孔(TSV)。在许多情况下,组构具有多个物理信道,每个物理信道支持相对宽的分组。当在单个组构内传送数据时,可使用大量可用物理线路来减少通过组构的时延。以此方式,通过组构的带宽总体上可能相对大。然而,当通过组构将单独管芯连接在一起时,通常使用单独管芯上较少数量的可用物理线路来传送数据。类似地,当将单独处理节点连接在一起(各自使用相应组构)时,处理节点之间较少数量的可用物理线路限制带宽。因此,在此类计算系统中组构边界处,数据传送效率通常降低。
鉴于以上内容,期望用于在计算系统中执行高效数据传送的高效方法和系统。
附图说明
通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是分组发射器的一个实施方案的框图。
图3是请求队列的一个实施方案的框图。
图4是分组发射器的一个实施方案的框图。
图5是用于在计算系统中执行高效数据传送的方法的另一实施方案的流程图。
图6是用于在计算系统中执行高效数据传送的方法的另一实施方案的流程图。
图7是用于在计算系统中执行高效数据传送的方法的另一实施方案的流程图。
图8是用于在计算系统中执行高效数据传送的方法的另一实施方案的流程图。
图9是分组接收器的一个实施方案的框图。
图10是用于在计算系统中执行高效数据传送的方法的另一实施方案的流程图。
虽然本发明容易有各种修改和替代形式,但是特定的实施方案通过举例方式在附图中示出并在本文中进行详细描述。然而,应理解,附图及其详细描述并不意图将本发明局限于所公开的特定形式,而相反,本发明将涵盖落入如所附权利要求书限定的本发明的范围内的所有修改、等效形式和替代方案。
具体实施方式
在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,为了说明的简洁和清晰起见,附图所示的元件未必按比例绘制。例如,元件中的一些的尺寸可相对于其他元件被放大。
公开了用于在计算系统中执行高效数据传送的各种系统、设备、方法和计算机可读介质。计算系统中的一个或多个客户端处理应用程序。此类客户端的实例包括通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、输入/输出(I/O)装置等。计算系统至少还包括功率控制器,以及用于在客户端之间传送数据的多个链路接口。此外,一个或多个客户端中的每一个以及客户端之间的通信组构包括与分组发射器和分组接收器的组构接口。在各种实施方案中,分组发射器包括用于存储不同分组类型的请求的多个请求队列。分组发射器中的多个请求队列中的每一个存储相应分组类型的请求。分组类型的实例包括请求类型、响应类型、探测类型、控制类型以及令牌或信用类型。在各种实施方案中,分组发射器将写入请求划分成写入命令和写入数据。分组发射器将写入命令插入命令或控制分组中,并且将写入数据插入对应于写入命令的单独写入数据分组中。分组发射器以类似方式将读取响应划分成读取消息和读取响应数据。分组发射器将读取消息插入命令或控制分组中,并且将读取响应数据插入单独数据分组中。对于不包括响应数据的读取请求,分组发射器不执行划分步骤。而是,分组发射器将读取请求作为读取命令插入命令或控制分组中。
在一些情况下,多个请求队列中的两个或更多个将具有不同大小的分组存储在分组发射器中。此外,分组发射器和分组接收器包括对应于一个或多个请求队列的一个或多个地址历史高速缓存。地址历史高速缓存存储请求地址的至少一部分。由于来自不同物理装置的请求流可具有地址局部性,因此地址历史高速缓存将地址的上部部分存储在链路的两侧。地址局部性也称为“空间局部性”,并且是指彼此相对靠近的多个存储器访问请求。例如,在一些情况下,请求地址是连续的(例如,连续的存储器访问请求中的每一个访问与紧接的前一所访问高速缓存行相邻的高速缓存行、字节等)。在其他实例中,访问模式具有特定的恒定偏移,使得请求地址在每个存储器访问请求之间递增固定量。在又一些其他实例中,与紧接的前一请求地址相比,每个请求地址具有增加的偏移量。
分组发射器确定何时将特定地址存储在其本地地址历史高速缓存中。分组发射器还在相关联请求分组中存储标识分组接收器将存储特定地址的至少一部分的存储位置的指示(或“标识符”)。在一些实施方案中,对于与特定地址在相同地址范围内的后续请求,分组发射器发送没有与这些后续请求相对应的地址的至少一部分的分组。分组发射器不是包括地址的省略的部分,而是发送存储位置的标识符。避免在分组中包括地址的部分减少了分组中的数据量。因此,与存储整个请求地址的分组相比,分组在大小上进行压缩。在一些实施方案中,分组发射器和分组接收器中的每一者将相同的存储位置标识用于它们相应的地址历史高速缓存。分组接收器使用所接收存储位置标识来确定整个请求地址,并且使用请求地址来服务于所接收请求。
分组发射器还包括多个队列仲裁器,每个队列仲裁器用于从多个请求队列中的相应请求队列选择候选分组。此外,分组发射器包括用于存储链路分组的缓冲器。链路分组包括用于存储多个候选分组的数据存储空间。当候选分组由于在地址历史高速缓存中使用存储位置的标识而不是使用整个请求地址而是压缩分组时,链路分组能够存储更多候选分组。因此,一次可传达更多候选分组,并且链路的使用变得更高效。
上述队列仲裁器中的每一个从对应请求队列选择请求,并且打包仲裁器基于一个或多个属性来选择候选分组并将其插入链路缓冲器中。此类属性的实例包括年龄、分组类型的优先级级别、服务质量参数、源标识符、应用程序标识符或类型(例如,诸如实时应用程序)、业务类型的指示(例如,诸如实时业务)、带宽要求或时延公差要求、虚拟信道标识符等。在一些情况下,队列仲裁器从请求队列选择请求进行乱序发布。
在各种实施方案中,在逻辑乱序地取消分配条目或以其他方式使条目无效时,仲裁逻辑更新存储在请求队列的条目中的字段。在一个实例中,仲裁逻辑选择特定请求队列中在较早第一请求之前的较晚第二请求。较早第一请求的请求队列条目存储用于在接收器处存储地址的一部分的指示。较晚第二请求依赖于第一请求要存储在接收器处的地址的至少一部分。当第二请求在乱序发布期间绕过第一请求并且地址的至少一部分在接收器处不可用时,发生数据损坏。在各种实施方案中,仲裁逻辑确定何时发生这种情况,并且将较晚第二请求从压缩格式改变为非压缩格式。压缩格式将存储位置的标识存储在地址历史高速缓存中,所述地址历史高速缓存继而存储地址的一部分,而非压缩格式存储地址的一部分。因此,仲裁逻辑检测在发布期间何时存在乱序冲突,并且调整出站分组以避免数据损坏。
参考图1,示出计算系统100的一个实施方案的一般化框图。如图所示,计算系统100包括客户端110、存储器控制器130、功率控制器170和链路接口180各自之间的通信组构120。在一些实施方案中,计算系统100的部件是集成电路(IC)上的单独管芯,诸如片上系统(SOC)。在其他实施方案中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单独管芯。如图所示,客户端110包括中央处理单元(CPU)112、图形处理单元(GPU)114、集线器116和多媒体引擎118。CPU 112、GPU 114和多媒体引擎118是能够处理应用程序的计算资源的实例。虽然未示出,但在其他实施方案中,在客户端110中包括其他类型的计算资源。
一般而言,CPU 112包括用于根据给定指令集架构(ISA)执行指令的一个或多个处理器核心。处理器核心中的一个或多个使用超标量和多线程微架构来处理指令。GPU 114使用包括多个并行执行通道的并行数据微架构(例如,单指令多数据或“SIMD”)。多媒体引擎118包括用于处理多媒体应用程序的音频数据和视频数据的处理器。集线器116包括用于在多媒体引擎118与外部组件(诸如视频端口、音频端口等)之间进行通信的接口逻辑。此外,集线器116包括用于在计算系统100中的多媒体引擎118与多个本地计算资源之间进行通信的接口逻辑。
功率控制器170在给定采样间隔期间从客户端110收集数据(诸如预定采样信号)。管芯上电流传感器和温度传感器(未示出)也将信息发送到功率控制器170。功率控制器170为客户端110和存储器控制器130中的计算资源中的至少一者或多者选择相应功率-性能状态(P-state)。P-state至少包括操作电压和操作时钟频率。
虽然示出了单个存储器控制器130,但在其他实施方案中,计算系统100使用另一数量的存储器控制器。存储器控制器130通过组构120从客户端110接收存储器请求,调度存储器请求,并且将所调度存储器请求发送到系统存储器和主存储器中的一者或多者。存储器控制器130还从系统存储器和主存储器接收响应,并且将响应发送到请求在客户端110中的对应源。系统存储器通过I/O控制器和总线160以及存储器总线150用数据来填充系统存储器。主存储器将具有所请求块的高速缓存填充行发送到客户端110中的高速缓存存储器子系统中的对应高速缓存存储器子系统,以便完成原始存储器请求。客户端110中的高速缓存存储器子系统中的对应高速缓存存储器子系统将高速缓存填充行放置在一级或多级高速缓存中。
计算系统100的地址空间至少在CPU 112、GPU 114和多媒体引擎118以及一个或多个其他部件(诸如输入/输出I/O)外围装置(未示出)和其他类型的计算资源)之间划分。维持存储器映射以用于确定将哪些地址映射到哪个部件,并因此确定应当将对特定地址的存储器请求路由到CPU 112、GPU 114和多媒体引擎118中的哪一者。系统存储器是多种动态随机存取存储器(DRAM)中的一种,并且存储器控制器130支持对应协议。协议确定用于信息传送的值,诸如每时钟周期的数据传送次数、信号电压电平、信号定时、信号和时钟相位以及时钟频率。主存储器是多种类型的非易失性随机存取二级数据存储装置中的一种。主存储器的实例是硬盘驱动器(HDD)和固态盘(SSD)。
通信组构120(或组构120)在客户端110与存储器控制器130之间来回传送业务,并且包括用于支持相应通信协议的接口。“业务”包括诸如命令、消息、探测、中断的数据,以及与命令和消息相对应的数据。组构120包括用于存储请求和响应的队列。组构120还包括用于在跨内部网络发送请求之前在所接收请求之间进行仲裁的选择逻辑。组构120中的另外的逻辑构建并解码分组以及为分组选择路由。
组构传输接口(FTI)180通过在链路上传送业务来支持计算系统100与其他计算系统或处理节点之间的通信。跨链路发送的业务包括一个或多个处理节点的操作状态的指示、下电请求、对请求的响应、中断以及其他信息。如图所示,客户端110包括用于CPU 112的FTI 113、用于GPU 114的FTI 115和用于集线器116的FTI 117。另外,存储器控制器130包括FTI 132,而功率控制器170包括FTI 172。组构传输接口113、115、117、132、172和180中的每一个包括分组发射器和分组接收器。组构120包括为了便于说明而未示出的多个组构传输接口。在一些实施方案中,连接到组构传输接口的每个链路是点对点通信信道。在其他实施方案中,连接到组构传输接口的一个或多个链路是端对端通信信道。
组构传输接口包括控制逻辑以及用于通信的缓冲器或队列。在物理层处,链路包括一个或多个通道。组构传输接口和对应链路包括诸如PCIe(外围部件互连高速)、InfiniBand、RapidIO、HyperTransport、高级可扩展接口(AXI)等的通信协议连接。组构传输接口113、115、117、132、172和180中的每一个包括多个请求队列,每个请求队列用于存储相应类型的请求。另外,组构传输接口113、115、117、132、172和180中的每一个包括与一个或多个请求队列相对应的一个或多个地址历史高速缓存。地址历史高速缓存存储请求地址的至少一部分。由于来自不同物理装置的请求流具有地址局部性,因此地址历史高速缓存将请求地址的上部部分存储在链路的两侧。
组构传输接口113、115、117、132、172和180中的每一个包括用于各种目的的控制逻辑。例如,当接收到请求并分配请求队列中的条目时,控制逻辑访问地址历史高速缓存以确定地址历史高速缓存是否已经存储了请求地址的部分。在分配请求队列中的条目期间,控制逻辑更新队列条目中的字段以指示出站分组是使用地址历史高速缓存中的存储位置的标识还是使用请求地址。另外,分组发射器还包括多个队列仲裁器,每个队列仲裁器用于从多个请求队列中的相应请求队列选择请求。队列仲裁器从请求队列选择请求以进行乱序发布。队列仲裁器确定何时存在乱序冲突,并且调整出站分组和队列条目中所存储的字段,以避免数据损坏。
在一个实例中,队列仲裁器通过选择要发布的较晚第二请求来绕过请求队列中的较早第一请求。用于第一请求的队列条目存储用于在接收器处存储请求地址的一部分的指示。因此,请求地址的此部分尚未存储在接收器处。第二请求的队列条目存储用于从接收器处的远程地址历史高速缓存检索请求地址的一部分的指示。第二请求的此队列条目还在接收器处的远程地址历史高速缓存中存储存储位置的标识。队列仲裁器确定何时发生这种情况,并且将较晚第二请求从使用存储位置的标识的压缩格式改变为使用请求地址的一部分的非压缩格式。通过将第二请求从预期压缩格式改变为非压缩格式,发射器中的队列仲裁器避免了接收器处的数据损坏。
计算系统100中的组构传输接口113、115、117、132、172和180中的一个或多个还包括用于存储链路分组的缓冲器,所述缓冲器包括用于存储多个候选分组的数据存储空间。在一些实施方案中,多个请求队列中的两个或更多个存储具有不同大小的候选分组。组构传输接口中的打包仲裁器从多个请求队列选择合格的候选分组,并且将这些候选分组插入链路分组中。当候选分组是在接收器处的远程地址历史高速缓存中存储存储位置的标识的压缩分组时,打包仲裁器能够将更多候选分组插入链路分组中。打包仲裁器还确定链路分组是否具有在给定边界上针对给定候选分组对齐的剩余可用数据存储空间。组构传输接口中的分组接收器包括用于接收由分组发射器发送的链路分组的接收队列。
参考图2,示出分组发射器200的一个实施方案的一般化框图。分组发射器200包括请求队列230和对应地址历史高速缓存220。虽然分组发射器200包括单个请求队列和单个对应地址历史高速缓存,但在其他实施方案中,分组发射器200使用另一数量的这些部件。分组发射器200从片上网络或组构接收请求210以发送到出站片外链路。请求210至少包括源标识符(ID)和地址216。如图所示,源标识符包括处理器标识符(PID)212和线程标识符(TID)214。在其他实施方案中,源标识符另外包括进程ID和应用程序ID中的一者或多者。请求210中的其他信息(未示出)包括用于指示请求210是读取操作还是写入操作的请求类型。
为了便于说明而未示出的控制逻辑利用源标识符索引到地址历史高速缓存220中。在一些设计中,地址历史高速缓存220是直接映射高速缓存。在其他设计中,地址历史高速缓存220具有任何组关联性。当用作索引时,源标识符标识地址历史高速缓存220中的特定组。控制逻辑将地址216的一部分用作用于确定所标识组中的通道中的任一个通道是否生成高速缓存命中的标签。由于来自不同物理装置的请求流具有地址局部性,因此地址历史高速缓存220存储地址216的用于请求的一部分。在一个实例中,地址历史高速缓存220存储地址216的上部部分。因此,如本文所用,地址历史高速缓存220的“通道”也被称为“流”。如果对地址历史高速缓存220的查找生成高速缓存命中,则用于地址历史高速缓存220的控制逻辑将生成命中的特定通道的通道标识符(ID)发送到用于请求队列230的控制逻辑。在所示的实施方案中,从地址历史高速缓存220发送到请求队列230的队列更新222至少包括通道ID。
如果对地址历史高速缓存220的查找生成高速缓存未命中,则用于地址历史高速缓存220的控制逻辑选择组内的特定通道。在一些情况下,控制逻辑使用最近最少使用(LRU)方案来选择组内的特定通道。在其他情况下,控制逻辑使用多种其他方案中的任一种来选择组内的特定通道。之后,控制逻辑将地址216的至少一部分(诸如上部部分)存储在地址历史高速缓存220的所选择组内的特定通道中。如图所示,从地址历史高速缓存220发送到请求队列230的队列更新222至少包括对高速缓存命中/未命中结果的指示。如图所示,队列更新222还包括当前存储地址216的至少一部分的通道ID。
请求队列230包括用于存储信息的多个条目232a-232g。在各种实施方案中,条目232a-232g中的每一个至少存储字段240-254。字段240和242存储诸如处理器ID和线程ID的源标识符信息。在其他实施方案中,源标识符另外包括诸如进程ID和应用程序ID的其他信息。如图所示,字段244存储虚拟信道ID。来自多个不同物理装置的请求流流动通过同一物理链路上的虚拟信道(VC)。仲裁逻辑在选择要发布的请求时使用至少虚拟信道的优先级级别和条目232a-232g中的所存储虚拟信道ID。
字段246存储地址216的至少一部分。字段248存储对高速缓存加载的指示。例如,如果对地址历史高速缓存220的查找产生高速缓存未命中并且所接收地址216的至少一部分被存储或加载在地址历史高速缓存220中,则字段248存储断言值。在一个实例中,断言值是二进制‘1’,其用于指示针对所接收请求210发生了高速缓存加载。在另一实例中,二进制值‘0’用于指示断言值。字段250存储指定地址历史高速缓存220的较早搜索找到了对应于所接收请求210的地址的指示。换句话说,高速缓存命中字段250存储对在地址历史高速缓存220针对所接收请求210的较早查找期间是否发生了高速缓存命中的指示。如果对地址历史高速缓存220的查找产生高速缓存命中,则字段250存储断言值。
字段252存储对地址历史高速缓存220中所选择组内的当前存储所接收地址216的至少一部分的通道的指示。如果发生了高速缓存命中,则由字段252标识的特定通道已经存储了所接收地址216的至少一部分。然而,如果发生了高速缓存未命中,则替换方案选择由字段252标识的特定通道,并且此特定通道在高速缓存未命中之后将所接收地址216的至少一部分加载到其中。条目232a-232g中所包括但未示出的其他字段包括指示条目是否存储所分配条目的信息的状态字段。这种指示包括有效位。另一字段存储对请求类型的指示。在一些实施方案中,当条目位置不指示年龄时,另外的字段存储年龄。
在一些实施方案中,当队列仲裁器260选择在字段250中存储断言值的条目时,分组发射器200将FTI候选分组270作为压缩分组发送。例如,分组发射器200在出站压缩分组中发送源标识符和通道ID,而不是整个请求地址。在接收器处,控制逻辑使用源标识符和通道ID(诸如字段240-242和字段252)来访问接收器处的地址历史高速缓存。类似于分组发射器200中的本地地址历史高速缓存220,接收器处的此远程地址历史高速缓存存储请求地址的至少一部分。因此,当跨链路发送出站压缩分组时,分组发射器200不将请求地址的至少一部分跨链路传输到接收器。
在一些实施方案中,控制逻辑以有序方式在请求队列230中分配条目232a-232g,因此条目232a-232g的条目位置指示年龄。如果控制逻辑以乱序方式在请求队列230中分配条目232a-232g,则条目232a-232g存储另外的年龄字段。在各种实施方案中,控制逻辑以乱序方式在请求队列230中取消分配条目232a-232g。如前所述,来自多个不同物理装置的请求流流动通过同一物理链路上的虚拟信道(VC)。有时,客户端以与分组发射器200接收请求的顺序不同的顺序从出站链路上的不同VC发送请求。例如,队列仲裁器260基于一个或多个属性来选择条目232a-232g中的一个以用于创建FTI候选分组270。一种或多种属性的实例是请求类型的优先级级别、服务质量参数、源标识符、应用程序标识符或类型(诸如实时应用程序)、业务类型的指示(诸如实时业务)、带宽要求或时延公差要求、虚拟信道标识符等。不同的顺序可避免系统级死锁。
字段254存储对高速缓存加载匹配的指示。第二请求的缓存加载匹配指示请求队列230中来自存储高速缓存加载字段248的断言值的相同源的第一请求,所述第一请求早于第二请求。因此,此较早第一请求应将其地址的至少一部分加载到接收器处的远程地址历史高速缓存中。换句话说,高速缓存加载匹配字段254指定请求队列230是否具有用于第一请求的有效第二条目,所述第二条目将在接收器处存储与较晚第二请求相对应的地址。第一请求和第二请求中的每一者来自相同源。换句话说,请求队列230中针对第一请求和第二请求中的每一者的条目在字段240、242和252中存储相同值。当控制逻辑确定第一请求是比存储在请求队列230中的第二请求早的请求中的最晚请求时,高速缓存加载匹配字段254存储断言值,其中指定地址的指示将要存储在接收器处。因此,第二请求依赖于较早第一请求,因为较早第一请求应在接收器处存储请求地址的至少一部分。当请求地址的至少一部分存储在接收器处时,控制逻辑将较晚第二请求作为压缩分组发送。
在队列仲裁器260乱序地取消分配条目时,队列仲裁器260或其他控制逻辑更新存储在请求队列230的条目232a-232g中的字段240-254中的一个或多个。在一个实例中,队列仲裁器260选择较晚第二请求进行取消分配,这绕过请求队列230中的较早第一请求。请求队列230中存储较早第一请求的条目包括用于将地址的一部分存储在接收器处的指示。较晚第二请求依赖于已经存储在接收器处的地址的一部分。队列仲裁器260确定何时发生这种情况,并且将较晚第二请求从压缩格式改变为非压缩格式。压缩格式存储存储位置的标识,诸如至少存储在字段240、242和252中的值。非压缩格式存储地址的一部分,诸如存储在字段246中的值。通过检测由来自请求队列230的乱序发布引起的上述情况,队列仲裁器260避免了在接收器处发生数据损坏。
参考图3,示出请求队列300的一个实施方案的一般化框图。先前描述的电路和逻辑以相同方式进行编号。如图所示,请求队列300包括队列310和控制逻辑320。请求队列310将信息存储在具有至少字段240-254的条目中。队列310的条目存储未示出的其他字段,诸如状态字段。状态字段存储对是否分配条目的指示。在一个实例中,这种指示包括有效位。另一字段存储对请求类型的指示。在一些实施方案中,请求队列300还包括表330,所述表330跟踪具有存储断言值的高速缓存加载字段248的特定条目,以及队列310中具有存储断言值的高速缓存命中字段250的对应数量的所分配条目,所述所分配条目依赖于所述特定条目。例如,表330中的第一条目存储对条目8的指示。队列310的条目8将断言值存储在高速缓存加载字段248中。此外,表330的此第一条目针对队列310中的多个所分配条目存储计数一,所分配条目具有与条目8相对应的断言高速缓存命中字段250。这里,计数一是指条目7。
当控制逻辑320不使用条目位置来指示年龄时,队列310的条目中的另外的字段(未示出)存储年龄。如图所示,控制逻辑320按年龄以有序方式分配队列310,并且将较晚请求存储在队列310的顶部,而控制逻辑320将较早请求存储在队列310的底部。在其他实施方案中,控制逻辑320使用反年龄顺序来将请求存储在队列310中。队列310的条目7-8、15、20、32和43-44中的每一个存储来自相同源(诸如具有ID 2的处理器、具有ID 6的线程和具有ID3的通道)的信息。存储在条目44中的请求是此群组中的最早请求,而存储在条目7中的请求是此群组中的最晚请求。
分配在条目8、32和44中的请求将断言值存储在高速缓存加载字段248中。如前所述,在一些情况下,二进制值‘1’指示断言值。因此,在对发射器处本地地址历史高速缓存的查找期间,对应于条目8、32和44的请求生成高速缓存未命中,并且其相应地址或其地址的部分被加载到发射器处的本地地址历史高速缓存中。分配在条目44中的请求由于高速缓存未命中而将其请求地址0x670加载到发射器处的本地地址历史高速缓存中。这里,指示“0x”是指十六进制数字格式。分配在条目32中的请求由于高速缓存未命中而将其请求地址0x100加载到发射器处的本地地址历史高速缓存中。分配在条目8中的请求由于高速缓存未命中而将其请求地址0x330加载到发射器处的本地地址历史高速缓存中。
分配在条目7、15、20和43中的请求中的每一个将断言值存储在高速缓存命中字段250中。因此,在对发射器处的本地地址历史高速缓存的查找期间,对应请求生成高速缓存命中。如果外部发布逻辑并未将其相应地址或其地址的部分插入对应分组中,则这些分组是压缩分组并且改进链路的效率。对于压缩分组,接收器使用字段240-242和252来访问接收器处的远程地址历史高速缓存,以检索先前存储在接收器处的请求地址。
如图所示,仅分配在条目44中的请求将清除(否定)值存储在字段254(高速缓存加载匹配字段)中。如前所述,第二请求的高速缓存加载匹配指示队列310中来自相同源的较早第一请求针对高速缓存加载字段248存储断言值。因此,就在控制逻辑320将此较早第一请求发送到接收器之后,此较早第一请求应将其地址的至少一部分加载到发射器处的本地地址历史高速缓存和接收器处的远程地址历史高速缓存中的每一者中。在所示的实例中,仅分配在条目44中的请求不具有来自相同源的较早请求,所述较早请求也将其请求地址存储在至少发射器处的本地地址历史高速缓存中。
如前所述,在一些实施方案中,控制逻辑320以乱序方式取消分配队列310中的条目。在一些情况下,控制逻辑320以乱序方式选择队列310中的条目进行取消分配,但实际取消分配在稍后的时间点发生。在一些设计中,仲裁逻辑被包括在控制逻辑320中,但在其他设计中,仲裁逻辑与控制逻辑320分开定位。在队列310下方,示出了在发布请求时取消分配队列310中的条目(使其无效)的四种情况。
情况1:在条目32之前选择条目20进行发布
对于情况1,控制逻辑320选择分配在条目20中的较晚请求,以便在分配在条目32中的较早请求之前取消分配。在这种情况下,控制逻辑320将针对分配在条目20中的较晚请求的所得分组作为非压缩分组而不是预期压缩分组发送。控制逻辑320在非压缩分组中发送地址字段246中的请求地址(例如,0x100),因为接收器尚未具有来自分配在条目32中的较早请求的请求地址。
在所示的实施方案中,高速缓存加载匹配字段254中的断言值指示控制逻辑320应将分配在条目20中的所选择较晚请求从预期压缩分组转换为未压缩分组。以与分配在条目20和32中的请求类似的方式,分配在条目15和32中的请求也发生情况1,诸如当控制逻辑320在条目32之前选择条目15进行发布时。类似地,对于分配在条目7-8中的请求也发生情况1,诸如当控制逻辑320在条目8之前选择条目7进行发布时。同样,对于分配在条目7-8和43-44中的请求情况也发生情况1,诸如当控制逻辑320在条目44之前选择条目43进行发布时。在其他情况下,控制逻辑320在分配在条目32中的较早请求之后选择分配在条目20中的较晚请求。在这些情况下,字段254中的清除或否定值指示分配在条目20中的所选择较晚请求仍作为预期压缩分组。
情况2:在条目15、20、32和43-44之前选择条目8进行发布
对于情况2,控制逻辑320在分配在条目15、20、32和43-44中的较早请求中一个或多个之前选择分配在条目8中的较晚请求进行取消分配。在这种情况下,控制逻辑320将针对分配在条目8中的较晚请求生成的分组作为预期非压缩分组发送。如前所述,分配在条目8中的请求将断言值存储在高速缓存加载字段248中。因此,在对发射器处本地地址历史高速缓存的查找期间,请求生成高速缓存未命中,并且其相应地址或其地址的部分被加载到本地地址历史高速缓存中。虽然控制逻辑320为分配在条目8中的所选择请求创建了预期非压缩分组,但控制逻辑320针对分配在条目15、20、32和43-44中的一个或多个仍在分配的较早请求执行更新。由于乱序发布和在接收器处存储地址0x330而不是存储由分配在条目15和20中的请求所使用的地址0x100和由分配在条目43中的请求所使用的地址是0x670,控制逻辑320无法将针对这些较早请求生成的分组作为压缩分组发送。因此,为了执行更新,控制逻辑320从与分配在条目8中的请求相同的源中搜索所有较早请求,并且针对从此搜索找到的任何请求更新特定字段。
如前所述,控制逻辑320用字段240-242和252(例如,PID 2、TID 6和Way 3)来标识源。存储来自与分配在条目8中的请求相同源的请求的条目包括分配在条目15、20、32和43-44中的较早请求。对于所标识条目15、20、32和43-44,控制逻辑320清除高速缓存加载字段248和缓存命中字段250中的每一者。因此,对于分配在条目15、20、32和43-44中的请求,接收器不将其远程地址历史高速缓存用于对应所接收分组。
除了如上所述更新存储在请求队列300中的较早请求之外,当高速缓存加载字段248将断言值存储在条目8中时,控制逻辑320还更新比分配在条目8中的请求晚的任何请求。在所示的实例中,控制逻辑320搜索队列310中来自相同源具有存储在高速缓存加载字段248的断言值的较晚条目。不存在此类条目。因此,控制逻辑320按年龄从最早到最晚在条目8与条目1之间执行搜索,以标识针对来自相同源的请求分配的条目。在这种特定情况下,搜索找到将断言值存储在高速缓存命中字段250中的条目7。控制逻辑320针对条目7清除高速缓存加载匹配字段254。因此,在当控制逻辑320选择分配在条目7中的请求时的稍后时间点,控制逻辑320创建压缩分组。控制逻辑320创建压缩分组,因为由于控制逻辑320已经发布较早条目8,因此请求地址或请求地址的一部分存储在接收器处的远程地址历史高速缓存中。
情况3:首先选择条目32进行发布
对于情况3,控制逻辑320在分配在条目43-44中的较早请求中的一个或多个之前并且在分配在条目7-8、15和20中的较晚请求中的一个或多个之前选择分配在条目32中的较晚请求进行取消分配。情况3类似于情况2,但存在来自相同源的多个较晚请求,并且存在具有存储在高速缓存加载字段248中的断言值的较晚请求。对于情况3,控制逻辑320将针对分配在条目32中的请求生成的分组作为预期非压缩分组发送。如前所述,分配在条目32中的请求将断言值存储在高速缓存加载字段248中。因此,在对发射器处本地地址历史高速缓存的查找期间,请求生成高速缓存未命中,并且其相应地址或其地址的部分被加载到本地地址历史高速缓存中。
虽然控制逻辑320为分配在条目32中的所选择请求创建了预期非压缩分组,但控制逻辑320针对分配在条目43-44中的一个或多个仍在分配的较早请求以及分配在条目7-8、15和20中的一个或多个仍在分配的较晚请求执行更新。控制逻辑320无法将针对分配在条目43中的较早请求生成的分组作为压缩分组发送。如图所示,分配在条目43中的请求将断言值存储在高速缓存命中字段250中。如果控制逻辑320将分组作为压缩分组发送,则乱序发布以及在接收器处存储地址0x100而不是由分配在条目43中的请求所使用的地址0x670将造成数据损坏。为了避免数据损坏,控制逻辑320搜索队列310中来自与分配在条目32中的请求相同的源的任何较早请求。存储来自与分配在条目32中的请求相同源的较早请求的条目包括分配在条目43-44中的请求。对于所标识条目43-44中的较早请求,控制逻辑320清除高速缓存加载字段248和高速缓存命中字段250中的每一者。因此,对于分配在条目43-44中的请求,接收器不将其远程地址历史高速缓存用于对应所接收分组。
除了如上所述更新存储在队列310中的较早请求之外,当高速缓存加载字段248存储断言值时,控制逻辑320还更新比分配在条目32中的请求晚的任何请求。在所示的实例中,控制逻辑320搜索来自相同源的具有存储在高速缓存加载字段248中的断言值的较晚条目。控制逻辑320找到条目8。因此,控制逻辑320按年龄从最早到最晚在条目8与条目32之间执行搜索,以标识针对来自相同源的请求分配的条目。在这种特定情况下,控制逻辑320找到条目15和20,并且条目15和20中的每一个具有存储在高速缓存命中字段250中的断言值。控制逻辑320针对条目15和20清除字段254。因此,在当控制逻辑320选择分配在条目15和20中的请求时的稍后时间点,控制逻辑320创建压缩分组。控制逻辑320创建压缩分组,因为由于控制逻辑320已经发布较早条目32,因此请求地址或请求地址的一部分存储在接收器处的远程地址历史高速缓存中。
情况4:首先选择条目44进行发布
对于情况4,控制逻辑320在分配在条目7-8、15、20和43中的请求中的一个或多个之前选择分配在条目44中的请求进行取消分配。对于情况4,控制逻辑320将针对分配在条目44中的请求生成的分组作为预期非压缩分组发送。如前所述,分配在条目44中的请求将断言值存储在高速缓存加载字段248中。因此,在对发射器处本地地址历史高速缓存的查找期间,请求生成高速缓存未命中,并且其相应地址或其地址的部分被加载到本地地址历史高速缓存中。请求队列300的控制逻辑320从与分配在条目44中的请求相同的源搜索任何较早请求。如图所示,对于情况4,队列310中未分配来自相同源的较早请求。因此,控制逻辑320不执行任何更新来清除较早请求的高速缓存加载字段248和高速缓存命中字段250。
除了搜索较早请求以用于潜在地更新其存储在队列310中的字段之外,当高速缓存加载字段248存储断言值时,控制逻辑320还搜索比分配在条目44中的请求早的任何请求。在所示的实例中,请求队列300的控制逻辑320搜索来自相同源的具有存储在高速缓存加载字段248中的断言值的较晚条目。控制逻辑320找到条目32。因此,控制逻辑320按年龄从最早到最晚在条目32与条目44之间执行搜索,以标识针对来自相同源的请求分配的条目。在这种特定情况下,控制逻辑320找到具有存储在高速缓存命中字段250中的断言值的条目43。控制逻辑320针对条目43清除高速缓存加载匹配字段254。因此,在当控制逻辑320选择分配在条目43中的请求时的稍后时间点,控制逻辑320创建压缩分组。控制逻辑320创建压缩分组,因为由于控制逻辑320已经发布较早条目44,因此请求地址或请求地址的一部分存储在接收器处的远程地址历史高速缓存中。
跟踪高速缓存命中数
如前所述,控制逻辑320使用表330来跟踪队列310中所分配条目的数量,所述所分配条目具有与具有断言高速缓存加载字段248的特定条目相对应的断言高速缓存命中字段250。如图所示,表330中的第一条目存储对具有断言高速缓存加载字段248的条目8的指示。此外,表330的此第一条目针对队列310中具有对应于条目8的断言高速缓存命中字段250的所分配条目的数量存储计数一。计数一是指条目7。类似地,表330中的第二条目存储对具有断言高速缓存加载字段248的条目32的指示。此外,表330的第二条目针对队列310中具有对应于条目32的断言高速缓存命中字段250的所分配条目15和20存储计数二。第三条目存储对条目44的指示和对应于条目43的计数一。
再次参考前述情况2,当控制逻辑320选择要发布的条目8并确定对应高速缓存加载字段248存储断言值时,控制逻辑320访问表330。控制逻辑320使用对队列310的条目8的指示来搜索表330,找到第一条目,并且确定当前在队列310中分配了一个请求,所述请求依赖于条目8中的请求。在这种情况下,计数一对应于条目7。在一些实施方案中,当控制逻辑320确定表330中的至少一个其他所分配条目存储较高计数(诸如计数为二的第二条目)时,控制逻辑320并不执行搜索其他请求的先前步骤。而是,控制逻辑320发送用于条目8的预期非压缩分组,并且不对其他条目的字段执行更新。此外,控制逻辑320使地址历史高速缓存中的存储位置无效,所述存储位置存储分配在条目8中的请求的请求地址的至少一部分。例如,控制逻辑320使由处理器标识符2和线程标识符6索引的组中的高速缓存通道3无效。因此,来自相同源的具有请求地址的相同部分的稍后请求不在地址历史高速缓存中命中。
存储在队列310的条目7的字段254中的断言值确保稍后针对条目7发布的分组是非压缩分组。在其他实施方案中,当控制逻辑320确定表330中的至少一个其他所分配条目存储较高计数时,控制逻辑320搜索较晚请求(诸如条目7),并且清除或否定高速缓存命中字段250。条目8的非压缩分组不包括对断言高速缓存加载字段的指示,因此在接收器处不存在请求地址的至少一部分(例如,地址0x330)的加载。因此,如果控制逻辑320就在条目8之后选择条目32,则控制逻辑320仍然能够在稍后时间点将条目15和20的两个分组作为压缩分组发送。当控制逻辑320发布队列310的条目8时,控制逻辑320并不清除条目15和20的两个分组的高速缓存命中字段250。
在一些实施方案中,控制逻辑320使用阈值来确定表330中的一个条目是否具有比另一条目高的计数。在以上实例中,控制逻辑320使用阈值零。在其他实施方案中,控制逻辑320使用正的非零整数作为阈值。例如,如果阈值为三,则控制逻辑320认为表330中计数为7的第五条目(未示出)高于计数为3的第九条目(未示出),因为7大于6(计数3+阈值3)。然而,控制逻辑320不认为计数为7的第五条目高于计数为至少4的其他条目,因为不认为7大于7(计数4+阈值3)。
在一些实施方案中,当控制逻辑320向请求分配队列310中的断言高速缓存加载字段248时,控制逻辑320分配表330中的给定条目。当利用断言高速缓存命中字段250的请求与对应于给定条目的请求具有相同的请求地址时,控制逻辑320更新表330中给定条目中的对应计数(使其递增)。例如,当控制逻辑320在队列310中分配条目20时,表330中存储对队列310的条目32的指示的第二条目将其计数递增到一。当控制逻辑320在队列310中分配条目15时,此计数从一递增到二。此外,在控制逻辑320发布对应压缩分组,控制逻辑320更新对应计数(使其递减)。例如,当外部仲裁逻辑选择条目15来发布并跨链路针对条目15发送压缩出站分组时,控制逻辑320将表330的第二条目中的计数从二递减到一。
在一些实施方案中,当控制逻辑320针对队列310的所指示条目发布请求而由于较高计数条件而未更新队列310中的其他条目的字段时,表330中的给定条目取消分配。在一些实施方案中,当控制逻辑320向较晚请求分配队列310中的断言高速缓存加载字段248并且计数针对给定条目到达零时,表330中的给定条目取消分配。在这种情况下,没有更多的压缩分组要发布,因此控制逻辑取消分配给定条目或使其无效。
参考图4,示出分组发射器400的一个实施方案的一般化框图。分组发射器400包括请求队列411、413和415,每个请求队列用于存储相应类型的请求。请求队列411、413和415中的每一个具有对应本地地址历史高速缓存410、412和414。本地地址历史高速缓存410、412和414存储请求地址。在其他实施方案中,请求队列411、413和415中的一个或多个不使用对应本地地址历史高速缓存。
存储在请求队列411、413和415中的请求是被称为流控制单元(“微片(flit)”)的类型的分组。微片是较大分组的子集。微片通常携载数据和控制信息,诸如较大分组的标头和尾部信息。虽然用于传输的数据被描述为在网络中路由的分组,但在一些实施方案中,用于传输的数据是点对点互连中的位流或字节流。请求队列411、413和415存储供控制逻辑在组构链路上发送的控制分组。除了分组发射器400之外的另一源发送对应数据分组,诸如对应于微片的较大分组。
在一些情况下,一个或多个其他源(诸如较大数据分组的源)与分组发射器400共享组构链路。因此,组构链路并不总是可用于发送控制分组。分组发射器400还包括打包缓冲器仲裁器450,用于将候选分组430-434中的一个或多个插入链路分组460中。链路分组460具有足够的数据存储空间以用于存储FTI候选分组430-434中的两个或更多个。当控制逻辑确定满足两个要求时,分组发射器400在组构链路上发送链路分组460。第一要求是组构传输接口向分组发射器400发送指示组构链路可用的信号。第二要求是分组发射器400确定链路分组460不为空。
存储在队列411-415中的控制分组类型的实例包括请求类型、响应类型、探测类型以及令牌或信用类型。分组类型的其他实例也是可能且可以设想的。如图所示,在一个实例中,队列411存储作为控制请求类型的“类型1”的分组。队列413存储在一些情况下是控制响应类型的“类型2”的分组,并且队列415存储在一些情况下是控制令牌或信用类型的“类型N”的分组。
队列仲裁器420从队列411选择FTI候选分组430。在一些实施方案中,队列仲裁器420基于一个或多个属性选择FTI候选分组430。属性的实例是年龄、分组类型的优先级级别、分组的优先级级别、服务质量参数、源标识符、应用程序标识符或类型(诸如实时应用程序)、业务类型的指示(诸如实时业务)、带宽要求或时延公差要求等。以类似方式,队列仲裁器422-424从队列413和415选择FTI候选分组432-434。
如图所示,FTI候选分组430-434中的每一个具有不同的数据大小440-444。在一些情况下,FTI候选分组430-434中的两个或更多个具有相同的数据大小。队列411、413和415中的一个或多个能够存储不同大小的FTI分组。因此,当队列仲裁器420-424中的给定队列仲裁器选择FTI候选分组时,所选择FTI候选分组与从同一队列选择的前一所选择FTI候选分组具有不同的大小。在一个实例中,当队列411存储请求类型的分组时,队列411存储大小为128位的非压缩请求分组,并且存储大小为64位的压缩请求分组。因此,队列411的一些条目存储数据大小与数据大小440不同的FTI候选分组。
链路分组460被分割为扇区462-466。在一个实例中,每个扇区为32位。扇区462-466的其他数据大小是可能且可以设想的。在一个实例中,链路分组460包括八个扇区。链路分组460中还可包括任何其他数量的扇区。链路分组460存储在寄存器或其他顺序存储元件中。除了存储诸如控制FTI候选分组的数据之外,链路分组460还存储其他元数据(未示出)。其他元数据的实例是对扇区462-466中的哪个(些)扇区可用的指示。打包缓冲器仲裁器450接收FTI候选分组430-434,并且选择所接收FTI候选分组430-434中的一个或多个,以插入链路分组460中的可用数据存储空间中。
现在参考图5,示出用于在计算系统中执行高效数据传送的方法500的一个实施方案。出于论述的目的,此实施方案中(以及图6至图8和图10中)的步骤以相继顺序示出。然而,应注意,在所描述方法的各种实施方案中,所描述要素中的一个或多个并发执行,以与所示不同的顺序执行,或者完全省略掉。在需要时也执行其他另外的元件。本文所描述的各种系统或设备中的任一种被配置来实现方法500。
分组发射器接收包括地址的请求(框502)。在一些情况下,分组发射器从片上网络或组构接收请求,并且分组发射器使用出站链路将分组发送到片外处理器。分组发射器中的控制逻辑基于请求类型选择多个请求队列中的给定请求队列(框504)。控制逻辑在给定请求队列中分配所接收请求(框506)。在一些情况下,控制逻辑以有序方式分配条目,使得条目位置指示对应请求的年龄。
在对应地址历史高速缓存中搜索地址(框508)。源标识符用于索引到地址历史高速缓存中。在实施方案中,源标识符包括处理器标识符和线程标识符,所述处理器标识符和线程标识符用于标识执行生成请求的线程的处理器。控制逻辑使用源标识符来选择地址历史高速缓存中的索引,并且控制逻辑使用请求地址的一部分作为标记来确定所选择索引中的多个通道中的一个是否存储请求地址。
如果在地址历史高速缓存中存在命中(条件框510的“是”分支),则将对地址历史高速缓存命中的指示存储在给定请求队列的所分配条目中(框512)。在一些情况下,控制逻辑更新高速缓存命中字段以存储断言值。例如,使用(图2和图3的)高速缓存命中字段250。将在地址历史高速缓存中的位置的标识存储在所分配条目中(方框522)。例如,高速缓存命中标识地址历史高速缓存的所选择索引内的多个通道中的特定通道。在实施方案中,标识是在高速缓存命中期间找到的特定通道,并且此特定通道的标识存储在给定请求队列的所分配条目中。例如,如前所述,通道3存储在(图3的)请求队列300中。
将用于执行乱序发布的来自给定请求队列的信息存储在给定请求队列的所分配条目中(框524)。在实施方案中,如果较早请求在具有高速缓存加载的指示的情况下仍分配在给定请求队列中,则将对高速缓存加载匹配的指示存储在给定请求队列的所分配条目中。在一个实例中,控制逻辑用断言值来更新(图2和图3的)高速缓存加载匹配字段254。
如果在地址历史高速缓存中存在未命中(条件框510的“否”分支),则将对地址历史高速缓存未命中的指示存储在给定请求队列的所分配条目中(框516)。在一些情况下,控制逻辑更新高速缓存加载字段以存储断言值。例如,使用(图2和图3的)高速缓存加载字段248。标识地址历史高速缓存中用于存储请求的请求地址的至少一部分的位置(框518)。例如,标识所选择索引内的多个通道中的特定通道。如果无效通道不可用,则选择所分配通道中的一个进行替换。例如,使用最近最少使用(LRU)方案。
将请求地址的至少一部分存储在地址历史高速缓存的所标识位置中(框520)。之后,方法500的控制流程移动到框522,在所述框522中,将在地址历史高速缓存中的存储位置的标识存储在给定请求队列的所分配条目中。存储位置存储请求的地址。将在高速缓存命中期间找到的特定通道的标识符存储在给定请求队列的所分配条目中。之后,方法500的控制流程从框522移动到框524,在所述框524中,将用于执行乱序发布的来自给定请求队列的信息存储在给定请求队列的所分配条目中。在一个实例中,如果较早请求在具有高速缓存加载的指示的情况下仍分配在给定请求队列中,则将对高速缓存加载匹配的指示存储在给定请求队列的所分配条目中。
现在转到图6,示出用于在计算系统中执行高效数据传送的方法600的一个实施方案。接收存储位置的标识,所述标识标识在地址历史高速缓存中存储请求的地址的存储位置(框602)。请求队列的控制逻辑接收存储位置的标识。在一个实施方案中,所接收标识标识在地址历史高速缓存中存储由分组发射器接收的请求的请求地址的至少一部分的特定通道。例如,将通道3发送到(图3的)请求队列300。用存储位置的标识和请求的源的标识符来搜索请求队列(框604)。如前所述,源标识符包括处理器标识符和线程标识符,所述处理器标识符和线程标识符用于标识执行生成请求的线程的处理器。
如果在请求队列中存在未命中(条件框606的“否”分支),则在请求队列中针对指定请求队列中不存在较早请求的请求分配条目(框608)。例如,所分配条目存储对用于请求的地址历史高速缓存的命中/未命中结果的指示,但用清除或否定值来更新(图2和图3的)高速缓存加载匹配字段254。然而,如果在请求队列中存在命中(条件框606的“是”分支),则对命中条目是否存储指定在接收器处存储请求地址的指示进行确定。在一个实施方案中,命中条目将断言值存储在(图2和图3的)高速缓存加载字段248中。
如果命中条目存储了指定在接收器处存储请求地址的指示(条件框610的“是”分支),则在请求队列中针对指定较早请求将在接收器处存储请求地址的请求分配条目(框612)。例如,所分配条目存储对用于请求的地址历史高速缓存的命中/未命中结果的指示,并且用断言值来更新(图2和图3的)高速缓存加载匹配字段254。如果在请求队列中存在命中(条件框606的“是”分支)并且如果命中条目并未存储指定在接收器处存储请求地址的指示(条件框610的“否”分支),则在请求队列中分配条目。所分配条目用于指定没有存储在请求队列中的较早请求将在接收器处存储请求地址的请求(框614)。例如,命中条目将清除值存储在(图2和图3的)高速缓存加载字段248中。所分配条目存储对用于请求的地址历史高速缓存的命中/未命中结果的指示,但用清除或否定值来更新(图2和图3的)高速缓存加载匹配字段254。
现在转到图7,示出用于在计算系统中执行高效数据传送的方法700的一个实施方案。从请求队列选择具有早先地址历史高速缓存命中的指示的请求进行发布(框702)。在一个实施方案中,请求队列中的所选择请求将断言值存储在(图2和图3的)高速缓存命中字段250中。确定所选择请求是否包括指定请求队列中来自相同源的较早请求指示将较早请求的地址存储在接收器处的指示(框704)。在一个实例中,指示是存储在(图2和图3的)高速缓存加载匹配字段254中的断言值。
如果所选择请求包括以上指示(条件框706的“是”分支),则针对所选择请求创建具有地址的非压缩候选分组,以打包成出站链路分组(框708)。虽然在地址历史高速缓存中具有早先命中,但选择所选择请求在较早请求之前进行发布,所述较早请求将请求地址存储在接收器处。由于此较早请求尚未发布,因此请求地址尚未存储在接收器处。
如果所选择请求不包括以上指示(条件框706的“否”分支),则针对所选择请求创建不具有地址的一部分的压缩候选分组,以打包成出站链路分组(框710)。由于所选择请求在地址历史高速缓存中已具有早先命中,并且选择所选择请求在较早请求之后进行发布,所述较早请求将请求地址存储在接收器处,因此将不具有请求地址的至少一部分的压缩分组发送到接收器。
现在转到图8,示出在计算系统中执行高效数据传送的方法800的一个实施方案。从请求队列选择具有指定存储请求的地址的指示的请求进行发布(框802)。在一个实施方案中,请求队列中的所选择请求将断言值存储在(图2和图3的)高速缓存加载字段248中。虽然此处未描述对表(诸如先前针对请求队列300所述的表330)的使用,但在一些情况下,所选择请求在执行其他步骤之前是合格的。例如,如果发现所选择请求相比具有计数的其他未处理请求具有更高对应请求(具有断言高速缓存命中字段,并且使用与所选择请求相同的请求地址)计数,则认为所选择请求合格。控制逻辑针对来自相同源标识符并使用相同的在地址历史高速缓存中的存储位置的标识的请求搜索比所选择请求早的请求(框804)。例如,控制逻辑针对与所选择请求具有相同的源标识符和相同的存储位置(高速缓存通道)标识的请求搜索较早请求。
如果以上搜索找到匹配(条件框806的“是”分支),则清除匹配请求中地址历史高速缓存命中的任何指示(框808)。此外,在一些实施方案中,分组接收器中的控制逻辑清除匹配请求中接收器处的地址存储的任何指示(框810)。再次参考(图3的)请求队列300的情况的实例,方法800的框806-810类似于在针对来自相同源并且使用在地址历史高速缓存中的相同存储位置的较早请求进行搜索期间(图3的)情况2-4的步骤。
如果控制逻辑未从以上搜索找到匹配(条件框806的“否”分支),或者控制逻辑完成了对一个或多个较早请求的指示的清除(框808和框810),则控制逻辑执行另一搜索。例如,控制逻辑针对来自相同源标识符并使用相同的在地址历史高速缓存中的存储位置的标识的请求搜索比所选择请求晚的请求(框816)。在一个实施方案中,控制逻辑针对使用与所选择请求相同的源标识符和相同的存储位置(高速缓存通道)标识的请求搜索较晚请求。如果从此搜索找到匹配(条件框818的“是”分支),则在所选择请求与下一较早请求之间按年龄标识匹配请求中具有接收器处的地址存储的指示的请求(框820)。再次简要地参考图3中的实例和情况3,针对所选择条目32,控制逻辑在仍在分配的条目8与所选择条目32之间标识了仍在分配的较晚条目15和20。
如果存在任何所标识请求(条件框822的“是”分支),则清除针对所标识请求的指示它们与所选择请求共享相同源信息的任何指示(框824)。源信息包括源标识符和在地址历史高速缓存中的存储位置的标识。在一个实施方案中,源标识符至少包括处理器标识符和线程标识符。在一些情况下,针对这些所标识请求清除或否定高速缓存加载匹配字段。因此,在稍后的时间点,当仲裁逻辑选择一个或多个要发布的所标识请求时,控制逻辑创建压缩分组。压缩分组在此时创建,因为由于当前(和较早)所选择请求正在发布,因此请求地址或请求地址的一部分存储在接收器处的远程地址历史高速缓存中。
如果不存在所标识请求(条件框822的“否”分支),则方法800的控制流程移动到826,在所述框826中,针对所选择请求创建具有地址的非压缩候选分组,以打包成出站链路分组。再次参考(图3的)请求队列300中的情况的实例,方法800的框816-824类似于在针对来自相同源并且使用在地址历史高速缓存中的相同存储位置的较晚请求进行搜索期间情况2-4的步骤。如前所述,控制逻辑针对具有相同源标识符并使用相同的在地址历史高速缓存中的存储位置的标识的请求搜索比所选则请求晚的请求(框816)。如果未从此搜索找到匹配(条件框818的“否”分支),则方法800的控制流程移动到826,在所述框826中,针对所选择请求创建具有地址的非压缩候选分组,以打包成出站链路分组。
参考图9,示出分组接收器900的一个实施方案的一般化框图。在所示的实施方案中,分组接收器900包括队列911、913和915,每个队列用于存储相应类型的分组。如图所示,请求队列911、913和915中的每一个具有对应地址历史高速缓存910、912和914。地址历史高速缓存910、912和914存储用于所接收压缩分组的请求地址。
如图所示,分组接收器900从组构链路接收链路分组960。链路分组960具有足够的数据存储空间以用于存储两个或更多个FTI分组。分布多路分配逻辑950(或逻辑950)分析链路分组900中的扇区962-966,确定链路分组960中有多少个FTI控制分组以及它们在链路分组960中的位置,并且将FTI控制分组发送到队列911、913和915以便存储。存储在队列910-914中的控制分组类型的实例包括请求类型、响应类型、探测类型以及令牌或信用类型。在其他实施方案中也包括分组类型的其他实例。如图所示,队列911存储“类型1”的分组,队列913存储“类型2”的分组,并且队列915存储“类型N”的分组。
链路分组960被分割为扇区962-966。在一个实例中,每个扇区为32位。扇区962-966的其他数据大小是可能且可以设想的。除了存储诸如控制FTI分组的数据之外,还存储其他元数据(未示出)。其他元数据的实例是在扇区962-966当中的所分配扇区的指示以及控制FTI分组在何处开始的指示,因为在一些实施方案中控制FTI分组具有变化的数据大小。在各种实施方案中,逻辑950包括组合逻辑和顺序元件的组合。逻辑950以硬件、软件或它们的组合来实现。逻辑950从链路分组960移除一个或多个控制FTI分组,并将其发送到队列911、913和915。
如图所示,FTI候选分组930-934中的每一个具有不同的数据大小940-944。在其他情况下,FTI候选分组930-934中的两个或更多个具有相同的数据大小。在实施方案中,队列911-915中的一个或多个存储不同大小的FTI分组。因此,当逻辑950将FTI分组(诸如FTI分组930)发送到队列911时,FTI分组与发送到同一队列的前一FTI分组具有不同的大小。在一个实例中,当队列911存储请求类型的分组时,队列911存储大小为128位的非压缩请求分组,并且存储大小为64位的压缩请求分组。因此,队列911的一些条目存储数据大小与数据大小940不同的FTI候选分组。
在各种实施方案中,FTI候选分组930-934中的一个或多个是压缩分组,其不存储请求地址的至少一部分。对于压缩分组,逻辑950访问地址历史高速缓存910-914中的对应地址历史高速缓存,以检索通过链路发送的压缩分组中不存在的请求地址的一部分。在一些情况下,压缩分组包括指定它是压缩分组的指示。如前所述,高速缓存命中字段250的断言值指示请求地址的至少一部分存储在地址历史高速缓存910-914中的对应地址历史高速缓存中,而不是存储在压缩分组中。通过传输不具有请求地址的至少一部分的压缩分组,链路效率提高。
在一些实施方案中,FTI候选分组930-934中的非压缩分组包括用于将非压缩分组内的请求地址的至少一部分存储在地址历史高速缓存910-914中的对应地址历史高速缓存中的指示。如前所述,高速缓存加载字段248向逻辑950指示,逻辑950将请求地址的至少一部分存储在地址历史高速缓存910-914中的对应地址历史高速缓存中。逻辑950将请求地址的存储部分用于在稍后时间点接收的压缩分组。
在各种实施方案中,队列911-915中的每一个包括用于维持多个可用条目以便分配的控制逻辑(未示出)。队列911-915的条目包括指示可用条目的有效位。在一些情况下,存储在有效字段中的否定值指示可用条目,而存储在有效字段中的断言值指示所分配条目。在一些实施方案中,队列911-915中的控制逻辑基于可用条目的数量来确定令牌或信用952的数量。控制逻辑将令牌952的值发送到一个或多个链路的另一侧上的分组发射器。例如,分组接收器900使用边带来将令牌952发送到分组发射器。
现在参考图10,示出用于在计算系统中执行高效数据传送的方法1000的一个实施方案。从入站链路接收请求(框1002)。分组接收器在链路上从分组发射器接收请求。分组接收器确定请求是否包括指定地址历史高速缓存存储请求的地址的指示(框1004)。所接收请求存储指定请求是否在压缩分组中的指示,所述压缩分组不包括请求地址的至少一部分。如前所述,在一些情况下,高速缓存命中字段250存储此指示。如果在请求中包括这样的指示(条件框1006的“是”分支),则分组接收器检索地址历史高速缓存中存储请求地址的存储位置的标识(框1008)。在一个实施方案中,请求包括高速缓存通道。当与源标识符组合时,高速缓存通道在分组接收器中标识在地址历史高速缓存中的特定存储位置。
分组接收器中的控制逻辑使用至少在地址历史高速缓存中的存储位置的标识从地址历史高速缓存检索地址(框1010)。例如,控制逻辑使用源标识符来选择地址历史高速缓存中的特定索引,并且使用包括在请求中的高速缓存通道选择特定索引内的特定通道。之后,分组接收器使用检索到的地址来处理请求(框1022)。
如果请求中未包括指定地址历史高速缓存存储请求的地址的指示(条件框1006的“否”分支),则分组接收器确定请求中是否存在存储稍后请求的地址的指示。如前所述,在一个实施方案中,分组接收器使用高速缓存加载字段248来进行确定。如果存在这样的指示(条件框1012的“是”分支),则分组接收器从请求检索在地址历史高速缓存中的存储位置的标识(框1014)。分组接收器从请求检索地址(框1016),并且使用存储位置的标识将地址存储在地址历史高速缓存中(框1018)。如前所述,还使用源标识符。例如,分组接收器使用源标识符来选择地址历史高速缓存中的特定索引,并且使用包括在请求中的高速缓存通道选择特定索引内的特定通道。之后,分组接收器使用检索到的地址来处理请求(框1022)。
如果不存在指定地址将被存储在对应地址历史高速缓存中的指示(条件框1012的“否”分支),则分组接收器从请求检索地址,而不将地址存储在任何地址历史高速缓存中(框1020)。在一个实施方案中,分组接收器检查早先描述的高速缓存加载字段248和高速缓存命中字段250中的每一者,并且确定每个字段存储否定或清除值。在此类情况下,分组接收器不使用地址历史高速缓存来处理请求(框1022)。
在各种实施方案中,使用软件应用程序的程序指令来实现先前所述的方法和/或机制。程序指令以高级编程语言(诸如C)描述硬件的行为。替代地,使用硬件设计语言(HDL),诸如Verilog。程序指令存储在非暂时性计机算可读存储介质上。众多类型的存储介质可用。在使用期间,计算系统可访问存储介质,以将程序指令和附带数据提供给计算系统以执行程序。计算系统包括至少一个或多个存储器和执行程序指令的一个或多个处理器。
应强调,上述实施方案仅是实现方式的非限制性实例。一旦充分了解上述公开内容,许多变型和修改将对本领域技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变型和修改。
Claims (20)
1.一种设备,其包括:
多个队列,每个队列被配置来存储相应类型的请求;
一个或多个地址历史高速缓存,每个地址历史高速缓存被配置来存储请求地址;
控制逻辑,所述控制逻辑被配置来:
针对包括地址的所接收第一请求选择所述多个队列中的一个队列;
针对所述第一请求在所选择队列中分配第一条目;
将以下项存储在所述第一条目中:
第一指示,所述第一指示即在所述一个或多个地址历史高速缓存中的一个地址历史高速缓存中找到所述地址;以及
第二指示,所述第二指示指示所述所选择队列具有分配用于由第二请求存储所述地址的第二条目,所述存储响应于确定以下项而发生:
所述第二请求与所述第一请求具有相同的源;
所述第二请求存储在所述所选择队列的包括将在接收器处存储地址的指示的条目中;并且
所述第二请求是比所述第一请求早的一个或多个请求中的最晚请求。
2.如权利要求1所述的设备,其中所述控制逻辑进一步被配置来响应于确定以下项而创建与所述第一请求相对应的包括所述地址在所述地址历史高速缓存中的位置的标识以及小于整个所述地址的所述地址的一部分的压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且不再存储所述第二指示。
3.如权利要求1所述的设备,其中所述控制逻辑进一步被配置来响应于确定以下项而创建与所述第一请求相对应的包括所述地址的非压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且仍然存储所述第二指示。
4.如权利要求1所述的设备,其中响应于在与所述所选择队列相对应的所述地址历史高速缓存中未找到与所述第一请求相对应的所述地址,所述控制逻辑进一步被配置来:
将在所述地址历史高速缓存中未找到所述地址的指示存储在所述第一条目中;
标识所述地址历史高速缓存中用于存储所述地址的至少一部分的位置;
将所述地址的所述一部分存储在所述位置中;并且
将所述位置的标识存储在所述第一条目中。
5.如权利要求1所述的设备,其中响应于确定所述第二请求被选择来发布,所述控制逻辑进一步被配置来搜索具有所述所选择队列中的所分配条目的比所述第二请求早的一个或多个匹配的较早请求,其中所述一个或多个匹配的较早请求与所述第二请求具有相同的源和相同的在所述地址历史高速缓存中的位置的标识。
6.如权利要求5所述的设备,其中响应于找到所述一个或多个匹配的较早请求,所述控制逻辑进一步被配置来:
清除所述一个或多个匹配的较早请求的所述所分配条目中的地址历史高速缓存命中的任何指示;并且
清除所述一个或多个匹配的较早请求的所述所分配条目中的在所述接收器处存储地址的任何指示。
7.如权利要求5所述的设备,其中响应于确定所述第二请求被选择来发布,所述控制逻辑进一步被配置来搜索具有所述所选择队列中的所分配条目的比所述第二请求晚的多个匹配的较晚请求,其中所述多个匹配的较晚请求与所述第二请求具有相同的源和相同的在所述地址历史高速缓存中的位置的标识。
8.如权利要求7所述的设备,其中响应于找到所述一个或多个匹配的较晚请求,所述控制逻辑进一步被配置来:
在所述第二请求与比第三请求早的第四请求之间按年龄标识所述第三请求,其中所述所选择队列中用于所述第四请求的条目存储指示,所述指示指定将会将所述第四请求的地址存储在所述接收器处的地址历史高速缓存中;并且
清除存储在所述所选择队列中的针对所标识第三请求的任何指示,所述指示指定所述第三请求依赖于所述第二请求来将所述第三请求的地址存储在所述接收器处的地址历史高速缓存中。
9.一种方法,其包括:
将请求存储在多个队列中,每个队列被配置来存储相应类型的请求;
将请求地址存储在一个或多个地址历史高速缓存中;
针对包括地址的所接收第一请求选择所述多个队列中的一个队列;
针对所述第一请求在所选择队列中分配第一条目;
将以下项存储在所述第一条目中:
第一指示,所述第一指示即在所述一个或多个地址历史高速缓存中的一个地址历史高速缓存中找到所述地址;以及
第二指示,所述第二指示指示所述所选择队列具有分配用于由第二请求存储所述地址的第二条目,所述存储响应于确定以下项而发生:
所述第二请求与所述第一请求具有相同的源;
所述第二请求存储在所述所选择队列的包括将在接收器处存储地址的指示的条目中;并且
所述第二请求是比所述第一请求早的一个或多个请求中的最晚请求。
10.如权利要求9所述的方法,其还包括:
响应于确定以下项而创建与所述第一请求相对应的包括所述地址在所述地址历史高速缓存中的位置的标识以及小于整个所述地址的所述地址的一部分的压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且不再存储所述第二指示。
11.如权利要求9所述的方法,其还包括:
响应于确定以下项而创建与所述第一请求相对应的包括所述地址的非压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且仍然存储所述第二指示。
12.如权利要求9所述的方法,其中响应于在与所述所选择队列相对应的所述地址历史高速缓存中未找到与所述第一请求相对应的所述地址,所述方法还包括:
将在所述地址历史高速缓存中未找到所述地址的指示存储在所述第一条目中;
标识所述地址历史高速缓存中用于存储所述地址的至少一部分的位置;
将所述地址的所述一部分存储在所述位置中;以及
将所述位置的标识存储在所述第一条目中。
13.如权利要求9所述的方法,其中响应于确定所述第二请求被选择来发布,所述方法还包括:搜索具有所述所选择队列中的所分配条目的比所述第二请求早的一个或多个匹配的较早请求,其中所述一个或多个匹配的较早请求与所述第二请求具有相同的源和相同的在所述地址历史高速缓存中的位置的标识。
14.如权利要求13所述的方法,其中响应于找到所述一个或多个匹配的较早请求,所述方法还包括:
清除所述一个或多个匹配的较早请求的所述所分配条目中的地址历史高速缓存命中的任何指示;以及
清除所述一个或多个匹配的较早请求的所述所分配条目中的在所述接收器处存储地址的任何指示。
15.如权利要求13所述的方法,其其中响应于确定所述第二请求被选择来发布,所述方法还包括:搜索具有所述队列中的所分配条目的比所述第二请求晚的多个匹配的较晚请求,其中所述多个匹配的较晚请求与所述第二请求具有相同的源和相同的在所述地址历史高速缓存中的位置的标识。
16.一种存储程序指令的非暂时性计算机可读存储介质,其中所述程序指令能够由处理器执行以:
将请求存储在多个队列中,每个队列被配置来存储相应类型的请求;
将请求地址存储在一个或多个地址历史高速缓存中;
针对包括地址的所接收第一请求选择所述多个队列中的一个队列;
针对所述第一请求在所选择队列中分配第一条目;
将以下项存储在所述第一条目中:
第一指示,所述第一指示即在所述一个或多个地址历史高速缓存中的一个地址历史高速缓存中找到所述地址;以及
第二指示,所述第二指示指示所述所选择队列具有分配用于由第二请求存储所述地址的第二条目,所述存储响应于确定以下项而发生:
所述第二请求与所述第一请求具有相同的源;
所述第二请求存储在所述所选择队列的包括将在接收器处存储地址的指示的条目中;并且
所述第二请求是比所述第一请求早的一个或多个请求中的最晚请求。
17.如权利要求16所述的非暂时性计算机可读存储介质,其中所述程序指令能够由处理器执行以响应于确定以下项而创建与所述第一请求相对应的包括所述地址在所述地址历史高速缓存中的位置的标识以及小于整个所述地址的所述地址的一部分的压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且不再存储所述第二指示。
18.如权利要求16所述的非暂时性计算机可读存储介质,其中所述程序指令能够由处理器执行以响应于确定以下项而创建与所述第一请求相对应的包括所述地址的非压缩分组:
所述第一请求被选择来发布;并且
所述所选择队列的用于所述第一请求的所述第一条目仍然存储所述第一指示并且仍然存储所述第二指示。
19.如权利要求16所述的非暂时性计算机可读存储介质,其中响应于在与所述队列相对应的所述地址历史高速缓存中未找到与所述第一请求相对应的所述地址,所述程序指令能够由处理器执行以:
将在所述地址历史高速缓存中未找到所述地址的指示存储在所述第一条目中;
标识所述地址历史高速缓存中用于存储所述地址的至少一部分的位置;
将所述地址的所述一部分存储在所述位置中;并且
将所述位置的标识存储在所述第一条目中。
20.如权利要求16所述的非暂时性计算机可读存储介质,其中响应于确定所述第二请求被选择来发布,所述程序指令能够由处理器执行以搜索具有所述所选择队列中的所分配条目的比所述第二请求早的一个或多个匹配的较早请求,其中所述一个或多个匹配的较早请求与所述第二请求具有相同的源和相同的在所述地址历史高速缓存中的位置的标识。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/150,520 | 2018-10-03 | ||
US16/150,520 US11831565B2 (en) | 2018-10-03 | 2018-10-03 | Method for maintaining cache consistency during reordering |
PCT/US2019/039919 WO2020072112A1 (en) | 2018-10-03 | 2019-06-28 | Method for maintaining cache consistency during reordering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112789603A true CN112789603A (zh) | 2021-05-11 |
Family
ID=67439386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980065151.6A Pending CN112789603A (zh) | 2018-10-03 | 2019-06-28 | 用于在重排序期间维持高速缓存一致性的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11831565B2 (zh) |
EP (1) | EP3861450A1 (zh) |
JP (1) | JP7108135B2 (zh) |
KR (1) | KR20210064377A (zh) |
CN (1) | CN112789603A (zh) |
WO (1) | WO2020072112A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138328B2 (en) * | 2019-05-30 | 2021-10-05 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11153315B2 (en) | 2019-05-30 | 2021-10-19 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11165777B2 (en) | 2019-05-30 | 2021-11-02 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11199992B2 (en) * | 2019-07-15 | 2021-12-14 | Western Digital Technologies, Inc. | Automatic host buffer pointer pattern detection |
US11500581B2 (en) | 2020-09-25 | 2022-11-15 | Western Digital Technologies, Inc. | Efficient TLP fragmentations in extended LBA environment |
US11853218B2 (en) | 2020-11-20 | 2023-12-26 | Western Digital Technologies, Inc. | Semi and cached TLP coalescing |
US11537524B2 (en) | 2020-11-20 | 2022-12-27 | Western Digital Technologies, Inc. | Effective PCIe utilization by PCIe TLP coalescing |
US20220171717A1 (en) * | 2020-12-01 | 2022-06-02 | Advanced Micro Devices, Inc. | Adaptive out of order arbitration for numerous virtual queues |
US11983164B1 (en) | 2022-11-17 | 2024-05-14 | Bank Of America Corporation | System and method for data community detection via data network telemetry |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01208934A (ja) | 1988-02-16 | 1989-08-22 | Sumitomo Electric Ind Ltd | ノード装置 |
US20030041138A1 (en) | 2000-05-02 | 2003-02-27 | Sun Microsystems, Inc. | Cluster membership monitor |
US7224840B2 (en) * | 2000-10-26 | 2007-05-29 | International Business Machines Corporation | Method, system, and program for error recovery while decoding compressed data |
US7356026B2 (en) | 2000-12-14 | 2008-04-08 | Silicon Graphics, Inc. | Node translation and protection in a clustered multiprocessor system |
AU2003251492A1 (en) | 2002-06-11 | 2003-12-22 | Ashish A. Pandya | High performance ip processor for tcp/ip, rdma and ip storage applications |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US7151544B2 (en) * | 2003-05-16 | 2006-12-19 | Sun Microsystems, Inc. | Method for improving texture cache access by removing redundant requests |
US7526607B1 (en) * | 2004-09-23 | 2009-04-28 | Juniper Networks, Inc. | Network acceleration and long-distance pattern detection using improved caching and disk mapping |
US7383423B1 (en) | 2004-10-01 | 2008-06-03 | Advanced Micro Devices, Inc. | Shared resources in a chip multiprocessor |
US8037281B2 (en) | 2005-04-07 | 2011-10-11 | Advanced Micro Devices, Inc. | Miss-under-miss processing and cache flushing |
US8804765B2 (en) * | 2005-06-21 | 2014-08-12 | Optis Wireless Technology, Llc | Dynamic robust header compression |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US20080024489A1 (en) | 2006-07-28 | 2008-01-31 | Robert Allen Shearer | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
WO2009004631A1 (en) * | 2007-07-05 | 2009-01-08 | Ceragon Networks Ltd. | Data packet header compression |
US7519777B1 (en) * | 2008-06-11 | 2009-04-14 | International Business Machines Corporation | Methods, systems and computer program products for concomitant pair prefetching |
US20110055838A1 (en) | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
EP2724505B1 (en) * | 2011-06-22 | 2015-08-12 | Telefonaktiebolaget LM Ericsson (PUBL) | Header compression with a code book |
US8996840B2 (en) | 2011-12-23 | 2015-03-31 | International Business Machines Corporation | I/O controller and method for operating an I/O controller |
US9424228B2 (en) | 2012-11-01 | 2016-08-23 | Ezchip Technologies Ltd. | High performance, scalable multi chip interconnect |
US9146877B2 (en) * | 2012-11-29 | 2015-09-29 | Infinidat Ltd. | Storage system capable of managing a plurality of snapshot families and method of snapshot family based read |
US9210072B2 (en) | 2013-03-08 | 2015-12-08 | Dell Products L.P. | Processing of multicast traffic in computer networks |
JP6194875B2 (ja) * | 2014-12-11 | 2017-09-13 | 日本電気株式会社 | キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム |
US10320695B2 (en) | 2015-05-29 | 2019-06-11 | Advanced Micro Devices, Inc. | Message aggregation, combining and compression for efficient data communications in GPU-based clusters |
US10079916B2 (en) | 2015-08-13 | 2018-09-18 | Advanced Micro Devices, Inc. | Register files for I/O packet compression |
US9767028B2 (en) | 2015-10-30 | 2017-09-19 | Advanced Micro Devices, Inc. | In-memory interconnect protocol configuration registers |
US10397377B2 (en) * | 2016-03-27 | 2019-08-27 | Qualcomm Incorporated | Data compression for cellular internet of things (CIoT) |
US10042576B2 (en) | 2016-08-17 | 2018-08-07 | Advanced Micro Devices, Inc. | Method and apparatus for compressing addresses |
US9793919B1 (en) | 2016-12-08 | 2017-10-17 | Advanced Micro Devices, Inc. | Compression of frequent data values across narrow links |
US10565122B2 (en) * | 2017-05-30 | 2020-02-18 | Microsoft Technology Licensing, Llc | Serial tag lookup with way-prediction |
-
2018
- 2018-10-03 US US16/150,520 patent/US11831565B2/en active Active
-
2019
- 2019-06-28 JP JP2021517642A patent/JP7108135B2/ja active Active
- 2019-06-28 CN CN201980065151.6A patent/CN112789603A/zh active Pending
- 2019-06-28 EP EP19744975.4A patent/EP3861450A1/en active Pending
- 2019-06-28 WO PCT/US2019/039919 patent/WO2020072112A1/en unknown
- 2019-06-28 KR KR1020217013439A patent/KR20210064377A/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US11831565B2 (en) | 2023-11-28 |
JP7108135B2 (ja) | 2022-07-27 |
EP3861450A1 (en) | 2021-08-11 |
KR20210064377A (ko) | 2021-06-02 |
US20200112525A1 (en) | 2020-04-09 |
JP2022511377A (ja) | 2022-01-31 |
WO2020072112A1 (en) | 2020-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7108135B2 (ja) | 並び替えの間のキャッシュ一貫性を維持する方法 | |
US8489794B2 (en) | Processor bus bridge for network processors or the like | |
KR102402630B1 (ko) | 캐시 제어 인지 메모리 컨트롤러 | |
US10152434B2 (en) | Efficient arbitration for memory accesses | |
US8447897B2 (en) | Bandwidth control for a direct memory access unit within a data processing system | |
EP3335124B1 (en) | Register files for i/o packet compression | |
TWI469048B (zh) | 緩衝器、運算系統、電腦可讀取的媒體以及媒體及管線式處理元件中的緩衝方法 | |
US11403221B2 (en) | Memory access response merging in a memory hierarchy | |
US11994996B2 (en) | Transmission of address translation type packets | |
US20090006777A1 (en) | Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor | |
US20140089587A1 (en) | Processor, information processing apparatus and control method of processor | |
US10540304B2 (en) | Power-oriented bus encoding for data transmission | |
EP3841484B1 (en) | Link layer data packing and packet flow control scheme | |
KR20240034258A (ko) | Ram으로서의 캐시 메모리의 동적 할당 |
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 |