CN111506534B - 具有非阻塞高性能事务信用系统的多核总线架构 - Google Patents
具有非阻塞高性能事务信用系统的多核总线架构 Download PDFInfo
- Publication number
- CN111506534B CN111506534B CN202010315539.1A CN202010315539A CN111506534B CN 111506534 B CN111506534 B CN 111506534B CN 202010315539 A CN202010315539 A CN 202010315539A CN 111506534 B CN111506534 B CN 111506534B
- Authority
- CN
- China
- Prior art keywords
- transaction
- credit
- data
- bus
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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
-
- 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/39—Credit based
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及具有非阻塞高性能事务信用系统的多核总线架构。在所描述示例的总线通信协议中,主设备存储总线信用(2402)。主设备(2410)只有在其持有足够数量和类型的总线信用的情况下,才可以传输总线事务(2414、2415、2415)。在传输后,主设备(2410)减少存储的总线信用的数量。总线信用对应于从设备上用于接收总线事务的资源。如果伴随着适当的信用,从设备(2420)必须接收总线事务(2224、2425、2426)。从设备(2420)服务事务。从设备(2420)然后传输信用返回。主设备(2410)将对应的信用的数量和类型添加到存储的量。从设备(2420)准备接受另一总线事务,并且主设备(2410)重新能够发起总线事务。在许多类型的交互中,根据处理的状态,总线代理可以充当主控器和从控器。
Description
本申请是2015年11月2日提交的名称为“具有非阻塞高性能事务信用系统的多核总线架构”的中国专利申请No.201580058126.7的分案申请。
技术领域
本发明涉及数字数据处理,并且更具体地涉及多个CPU核之间的数据总线。
背景技术
传统的总线协议依赖于通信握手在主控器和从控器之间传输事务。典型的握手采取以下形式。主控器将事务置于总线上,并且主控器断言命令请求信号。该事务保持在总线上,防止传输其他事务,直到从控器断言指示已经接收到事务的命令确认信号。处理完成后,从控器可以可选地将响应置于单独的总线上并且断言响应请求。响应保持在总线上,防止传输其他响应,直到主控器断言指示已经接收到响应的响应确认信号。
该传统的总线通信握手由于以下因素而遭受性能损失。在请求信号被断言等待确认信号时,事务诸如命令或响应可以在总线上持续多个周期。该等待防止其他事务利用总线。这减少了在该时间段期间传输的事务的数量并降低了通信性能。该握手需要双向通信以便传输事务:来自事务发送器的请求信号;和来自事务接收器的确认信号。这两个信号通常处于不同的周期,增加了单个事务处理的延迟。
典型的通信协议在单独的物理信道上传输读取、写入和一致性(coherence)事务。命令和响应也通常在单独的信道上传输。随着地址和数据宽度的增加,这导致在物理设计期间必须路由的非常大量的物理线路。所产生的线路拥塞可以导致面积增加、功耗增加和延长设计进度。如果面积增加导致额外的流水线级的插入,则该布线拥塞也可以导致性能下降。
发明内容
在所描述示例的总线通信协议中,主设备可以发起通信。每个主设备存储若干总线信用(credit)。主设备只有在其存储对应于事务的若干数量和类型的总线信用时,才可以传输总线事务。如果主设备持有足够的总线信用,则它可以传输总线事务和信用信号。在传输后,主设备将存储的总线信用的数量减少对应于总线事务的量。
总线信用对应于用于接收总线事务的从设备上的资源。如果主设备持有适当的信用,则从设备具有接收总线事务的能力。因此,如果伴随着适当的信用,则从设备必须接收总线事务。
在接受总线事务之后,从设备服务该事务。这样的服务可以包括执行命令、响应于读取而调用数据或响应于写入而存储数据。在服务总线事务并恢复从设备可以接受另一个事务的状态之后,从设备在总线上传输信用返回。当主设备接收到信用返回时,它将对应的信用的数量和类型添加到存储的量。在传输信用返回后,从设备准备接受另一个总线事务。在接收到信用返回后,主设备重新能够发起总线事务。
在许多类型的交互中,根据处理的状态,总线代理可以充当主控器和从控器两者。在普通的读取操作中,第一总线代理在充当主设备时传输读取并指示读取地址。第二总线代理在充当从设备时接收并接受读取。第二总线代理在充当从设备时通过访问存储器并调用指定的数据来服务读取。在一个优选实施例中,第二总线代理通过独立的总线事务将调用的数据传输到第一代理。在该示例中,第二总线代理必须以一定数量和类型存储总线信用以支持向第一总线代理的数据传输。如果第二代理存储适当的信用,则第一总线代理能够接收并服务总线事务。在该示例中,第二总线代理持有足够的总线信用,发起读取数据的数据传送。第一总线代理接受总线事务和读取数据。第一总线代理通过存储读取数据来服务总线事务。在服务总线事务和清理资源以接收进一步的总线事务后,第一总线代理将对应的信用返回传输到第二总线代理。然后,第二总线代理增加存储的信用,确定第一总线代理再次能够接收总线事务。
在优选实施例中,多于一个这样的总线交换可以重叠。为了使这样的重叠的总线事务保持分开,第一总线代理优选地将第一事务标识与事务一起传输。第二总线代理传输在总线事务响应中的对应于第一事务标识的第二事务标识。这允许第一总线代理区分响应。
附图说明
图1示出根据一个实施例的单核标量处理器。
图2示出根据另一实施例的双核标量处理器。
图3示出根据进一步的实施例的单核向量处理器。
图4示出根据进一步的实施例的双核向量处理器。
图5示出CPU的一个实施例的构造。
图6示出全局标量寄存器文件。
图7示出全局向量寄存器文件。
图8示出由乘法和相关功能单元共享的局部向量寄存器文件。
图9示出加载/存储单元的局部寄存器文件。
图10示出断定(predicate)寄存器文件。
图11示出根据一个优选实施例的中央处理单元的流水线阶段。
图12示出单个取回分组(fetch packet)的十六个指令。
图13示出由示例实施例使用的指令的指令编码的示例。
图14示出根据示例实施例的用于SIMD操作的进位控制。
图15示出本发明可应用的计算机集群1500。
图16示出用于单个多核总线架构接口的每个信道的信号方向。
图17示出一个示例配对接口拓扑中的每个信道。
图18示出另一示例配对接口拓扑中的每个信道。
图19示出用于dedc信号的编码的逻辑。
图20示出用于事务属性信道的简单的信用握手。
图21示出在相同信道上的交错信用握手。
图22示出信用非写入序列中的步骤。
图23示出信用写入命令序列的一般形式。
图24示出诸如在示例实施例中采用的代理的框图。
具体实施方式
图1示出根据一个实施例的单核标量处理器。单核处理器100包括耦合到分离的一级指令高速缓存(L1I)111和一级数据高速缓存(L1D)112的标量中央处理单元(CPU)110。可以如本领域已知的那样构造中央处理单元核110,并且中央处理单元核110通常包括寄存器文件、整数算术逻辑单元、整数乘法器和程序流控制单元。单核处理器100包括持有指令和数据两者的二级组合指令/数据高速缓存(L2)113。在优选实施例中,在单个集成电路上形成标量中央处理单元(CPU)110、一级指令高速缓存(L1I)111、一级数据高速缓存(L1D)112和二级组合指令/数据高速缓存(L2)113。
在一个优选实施例中,该单个集成电路还包括辅助电路,诸如功率控制电路121、仿真/追踪电路122、用于测试的设计(DST)可编程内置自测试(PBIST)电路123和时钟电路124。存储器控制器131在CPU 110外部并且可以集成在单个集成电路100上。
CPU 110在程序控制下操作以对定义的数据执行数据处理操作。程序控制CPU 110由在解码和执行之前必须被取回的多个指令组成。单核处理器100包括若干高速缓存存储器。图1示出一对一级高速缓存。一级指令高速缓存(L1I)111存储CPU 110使用的指令。CPU110首先尝试访问来自一级指令高速缓存121的任何指令。一级数据高速缓存(L1D)112存储CPU 110使用的数据。CPU 110首先尝试访问来自一级数据高速缓存112的任何所需的数据。两个一级高速缓存(L1I 111和L1D 112)由二级统一高速缓存(L2)113支持。如果高速缓存未命中到一级指令高速缓存111或一级数据高速缓存112,则从二级统一高速缓存113中寻求所请求的指令或数据。如果所请求的指令或数据存储在二级统一高速缓存113中,则将其供应给请求的一级高速缓存以用于供应给中央处理单元核110。如本领域已知的,可以将所请求的指令或数据同时供应给请求的高速缓存和CPU 110两者以加速使用。
二级统一高速缓存113进一步经由存储器控制器131耦合到较高级存储器系统。存储器控制器131通过访问外部存储器(图1中未示出)来处理二级统一高速缓存113中的高速缓存未命中。存储器控制器131处理所有存储器中心功能,诸如可缓存性确定、错误检测和校正、地址转换等。单核处理器100可以是多处理器系统的一部分。在这种情况下,存储器控制器131处理处理器之间的数据传送并且维持处理器之间的高速缓存一致性。
图2示出根据另一实施例的双核处理器。双核处理器200包括第一CPU 210和第二CPU 220,第一CPU 210耦合到分离的一级指令高速缓存(L1I)211和一级数据高速缓存(L1D)212,第二CPU 220耦合到分离的一级指令高速缓存(L1I)221和一级数据高速缓存(L1D)212。中央处理单元即CPU 210和220优选地构造为类似于图1所示的CPU 110。双核处理器200包括支持所有四个一级高速缓存(L1I 211、L1D 212、L1I 221和L1D 222)的单个共享二级组合指令/数据高速缓存(L2)231。在优选实施例中,在单个集成电路上形成CPU210、一级指令高速缓存(L1I)211、一级数据高速缓存(L1D)212、CPU220、一级指令高速缓存(L1I)221、一级数据高速缓存(L1D)222和二级组合指令/数据高速缓存(L2)231。该单个集成电路优选地还包括辅助电路,诸如功率控制电路245、仿真/追踪电路116、用于测试的设计(DST)可编程内置自测试(PBIST)电路117和时钟电路118。该单个集成电路还可以包括存储器控制器251。
图3和图4示出与图1和图2中分别示出的单核和双核处理器类似的单核和双核处理器。图3和图4不同于图1和图2在于其示出向量中央处理单元。如下面进一步描述的,单核向量处理器300包括向量CPU 310。双核向量处理器400包括两个向量CPU 410和420。向量CPU 310、410和420包括比对应的标量CPU 110、210和220更宽的数据路径操作单元和更宽的数据寄存器。
向量CPU 310、410和420进一步不同于对应的标量CPU 110、210和220在于其包括流式引擎313(图3)与流式引擎413和423(图5)。流式引擎313、413和423是类似的。流式引擎313将数据从二级统一高速缓存313(L2)传送到向量CPU 310。流式引擎413将数据从二级统一高速缓存431传送到向量CPU 410。流式引擎423将数据从二级统一高速缓存431传送到向量CPU 420。根据优选实施例,每个流式引擎313、413和423管理多达两个数据流。
每个流式引擎313、413和423在某些受约束的情况下传送数据。流由具体类型的元素序列组成。在流上操作的程序循序地读取数据,依次对每个元素进行操作。每个流都具有以下基本特性。流数据在时间上具有明确的开始和结束。流数据在整个流中具有固定的元素大小和类型。流数据具有固定的元素序列。因此,程序不可以在流内随机寻找。流数据在活动时是只读的。程序在从流读取的同时不可以写入流。一旦打开流,则流式引擎:计算地址;从二级统一高速缓存中取回定义的数据类型;执行数据类型操纵,诸如零扩展、符号扩展、数据元素排序/交换诸如矩阵转置;以及将数据直接传递到CPU内的编程执行单元。因此,流式引擎对于对表现良好的数据进行实时数字过滤操作是有用的。流式引擎从对应的CPU释放这些存储器取回任务,从而实现其他处理功能。
流式引擎提供以下益处。它们允许多维存储器访问。它们增加到功能单元的可用带宽。它们最小化高速缓存未命中停顿的数量,因为流缓冲器可以绕过L1D高速缓存和L2高速缓存。它们减少了环路中维持所需的标量运算的数量。它们管理地址指针。它们处理地址生成,自动释放地址生成指令时隙和用于其他计算的.D单元。
图5示出CPU的一个实施例的构造。除非另有说明,该描述涵盖标量CPU和向量CPU。CPU包括多个执行单元:乘法单元511(.M)、相关单元512(.C)、算术单元513(.L)、算术单元514(.S)、加载/存储单元515(.D)、分支单元516(.B)和断定单元517(.P)。在下面详细描述这些执行单元的操作和关系。
乘法单元511主要执行乘法。乘法单元511接受多达两个双向量操作数,并产生多达一个双向量结果。乘法单元511是可配置以执行以下运算的指令:各种整数乘法运算,其中精度范围从8位至64位乘法运算;各种常规和复数点积运算;和各种浮点乘法运算;逐位逻辑运算,移动以及加法和减法。如图5所示,乘法单元511包括用于四个同时16位×16位乘法的硬件。乘法单元511可以以下面描述的方式访问全局标量寄存器文件521、全局向量寄存器文件522和共享的.M和C.局部向量寄存器文件523。转发多路复用器530中介全局标量寄存器文件521、全局向量寄存器文件522、对应的流式引擎和乘法单元511之间的数据传送。
相关单元512(.C)接受多达两个双向量操作数,并产生多达一个双向量结果。相关单元512支持这些主要运算。为了支持WCDMA“Rake”和“Search”指令,相关单元512每个时钟周期执行多达512个2位PN*8位I/Q复数乘法。相关单元512执行8位和16位绝对差值的和(SAD)计算,每个时钟周期执行多达512个SAD。相关单元512执行水平加和水平最小/最大指令。相关单元512执行向量置换指令。相关单元512包括8个256位宽的控制寄存器。这些控制寄存器用于控制某些相关单元指令的操作。相关单元512可以以下面描述的方式访问全局标量寄存器文件521、全局向量寄存器文件522与共享的.M和C.局部向量寄存器文件523。转发多路复用器530中介全局标量寄存器文件521、全局向量寄存器文件522、对应的流式引擎和相关单元512之间的数据传送。
CPU 500包括两个算术单元:算术单元513(.L)和算术单元514(.S)。每个算术单元513和算术单元514接受多达两个向量操作数并产生一个向量结果。计算单元支持这些主要运算。算术单元513和算术单元514执行各种单指令多数据(SIMD)固定点算术运算,其中精度范围从8位到64位。算术单元513和算术单元514执行将结果直接写入断定寄存器文件526(下面进一步描述)的各种向量比较和最小/最大指令。这些比较包括A=B、A>B、A≥B、A<B和A≤B。如果比较是正确的,则在断定寄存器内对应的位位置中存储1位。如果比较失败,则在断定寄存器内的对应的位位置中存储0。向量比较指令假定字节(8位)数据,并且从而生成32个单个位结果。如下所述,算术单元513和算术单元514使用指定的断定寄存器执行各种向量运算。算术单元513和算术单元514执行各种SIMD浮点算术运算,其中精度范围从半精度(16位)、单精度(32位)到双精度(64位)。算术单元513和算术单元514执行专用的指令以加速各种算法和功能。算术单元513和算术单元514可以访问全局标量寄存器文件521、全局向量寄存器文件522、共享的.L和.S局部向量寄存器文件524与断定寄存器文件526。转发多路复用器530中介全局标量寄存器文件521、全局向量寄存器文件522、对应的流式引擎和算术单元513和514之间的数据传送。
加载/存储单元515(.D)主要用于地址计算。扩展加载/存储单元515以接受多达64位的标量操作数,并产生多达64位的标量结果。加载/存储单元515包括附加硬件以执行数据操纵诸如对加载和存储数据进行交换、打包和解包,以减少其他单元上的工作负载。加载/存储单元515可以在每个时钟周期将一个加载或存储请求与44位物理地址一起发送到一级数据高速缓存(L1D)。加载或存储数据宽度可以是32位、64位、256位或512位。加载/存储单元515支持这些主要运算:64位SIMD算术运算;64位逐位逻辑运算;以及标量和向量加载和存储数据操纵。加载/存储单元515优选地包括微型TLB(表格后援缓冲器)块以执行从48位虚拟地址到44位物理地址的地址转换。加载/存储单元515可以以下面描述的方式访问全局标量寄存器文件521、全局向量寄存器文件522和.D局部寄存器文件525。转发多路复用器530中介全局标量寄存器文件521、全局向量寄存器文件522、对应的流式引擎和加载/存储单元515之间的数据传送。
分支单元516(.B)计算分支地址、执行分支预测以及根据预测结果改变控制流。
断定单元517(.P)是对向量断定寄存器执行基本操作的小控制单元。断定单元517直接访问向量断定寄存器。断定单元517对断定寄存器执行不同的位运算,诸如AND(与)、ANDN(与非)、OR(或)、XOR(异或)、NOR(或非)、BITR(位右移)、NEG(求补码)、SET(设置)、BITCNT(位计数)、RMBD(最右位检测)、BIT抽取和扩展等。
图6示出全局标量寄存器文件521。存在16个独立的64位宽标量寄存器。全局标量寄存器文件521的每个寄存器可以被读取为32位标量数据(指定的寄存器A0至A15 601)或64位标量数据(指定的寄存器EA0至EA15 611)。然而,写入总是64位,如果需要,其是零扩展的以填充到达64位。所有功能单元的所有标量指令都可以读取或写入全局标量寄存器文件521。指令类型确定数据大小。全局标量寄存器文件521支持大小范围从8位至64位的数据类型。向量指令也可以写入64位全局标量寄存器文件521,其中丢弃向量的较高192位数据。向量指令还可以从全局标量寄存器文件521中读取64位数据。在该情况下,操作数在较高192位中是零扩展的以形成输入向量。
图7示出全局向量寄存器文件522。存在16个独立的256位宽向量寄存器。全局向量寄存器文件522的每个寄存器可以被读取为32位标量数据(指定的寄存器X0至X15 701)、64位标量数据(指定的寄存器EX0至EX15 711)、256位向量数据(指定的寄存器VX0至VX15721)或512位双向量数据(指定DVX0至DVX12,未示出)。在当前实施例中,只有乘法单元511和相关单元512可以执行双向量指令。所有功能单元的所有向量指令都可以读取或写入全局向量寄存器文件522。任何功能单元的任何标量指令还可以访问全局向量寄存器文件522寄存器的低32位或64位用于读取或写入。指令类型确定数据大小。
图8示出局部向量寄存器文件523。存在16个独立的256位宽向量寄存器。局部向量寄存器文件523的每个寄存器可以被读取为32位标量数据(指定的寄存器M0至M15 701)、64位标量数据(指定的寄存器EM0至EM15711)、256位向量数据(指定的寄存器VM0至VM15 721)或512位双向量数据(指定的DVM0至DVM7,未示出)。在当前实施例中,只有乘法单元511和相关单元512可以执行双向量指令。所有功能单元的所有向量指令都可以写入局部向量寄存器文件523。只有乘法单元511和相关单元512的指令可以从局部向量寄存器文件523读取。指令类型确定数据大小。
乘法单元511可以对双向量(512位数据)进行运算。乘法单元511可以从全局向量寄存器文件522和局部向量寄存器文件523读取双向量数据,并且可以将双向量数据写入全局向量寄存器文件522和局部向量寄存器文件523。如下将寄存器指定DVXx和DVMx映射到全局向量寄存器文件522和局部向量寄存器文件523。
表1
指令指定 | 访问的寄存器 |
DVX0 | VX1:VX0 |
DVX1 | VX3:VX2 |
DVX2 | VX5:VX4 |
DVX3 | VX7:VX6 |
DVX4 | VX9:VX8 |
DVX5 | VX11:VX10 |
DVX6 | VX13:VX12 |
DVX7 | VX15:VX14 |
DVM0 | VM1:VM0 |
DVM1 | VM3:VM2 |
DVM2 | VM5:VM4 |
DVM3 | VM7:VM6 |
DVM4 | VM9:VM8 |
DVM5 | VM11:VM10 |
DVM6 | VM13:VM12 |
DVM7 | VM15:VM14 |
每个双向量指定映射到全局向量寄存器文件522或局部向量寄存器文件523中对应的一对相邻向量寄存器。指定DVX0至DVX7映射到全局向量寄存器文件522。指定DVM0至DVM7映射到局部向量寄存器文件523。
局部向量寄存器文件524类似于局部向量寄存器文件523。存在16个独立的256位宽向量寄存器。局部向量寄存器文件524的每个寄存器可以被读取为32位标量数据(指定的寄存器L0至L15 701)、64位标量数据(指定的寄存器EL0至EL15 711)或256位向量数据(指定的寄存器VL0至VL15 721)。所有功能单元的所有向量指令可以写入局部向量寄存器文件524。只有算术单元513和算术单元514的指令可以从局部向量寄存器文件524中读取。
图9示出局部寄存器文件525。存在16个独立的64位宽寄存器。局部寄存器文件525的每个寄存器可以被读取为32位标量数据(指定的寄存器D0至D15 701)或64位标量数据(指定的寄存器ED0至ED15 711)。所有功能单元的所有标量和向量指令可以写入局部寄存器文件525。只有加载/存储单元515的指令可以从局部寄存器文件525中读取。任何向量指令还可以将64位数据写入局部寄存器文件525,其中丢弃结果向量的较高192位数据。任何向量指令还可以从64位局部寄存器文件525寄存器中读取64位数据。返回数据在较高192位中是零扩展的以形成输入向量。局部寄存器文件525的寄存器仅可以用作加载/存储指令中的地址,不可以用作存储数据或用作加载/存储单元515的64位算术和逻辑指令的源。
图10示出断定寄存器文件526。断定寄存器文件526中存在16个寄存器32位寄存器。断定寄存器文件526包含来自由任一算术执行的向量比较运算的结果,并由向量选择指令和向量断定存储指令使用。特殊指令的小子集还可以直接从断定寄存器中读取、执行操作并直接写回断定寄存器。还存在可以在全局寄存器文件(全局标量寄存器文件521和全局向量寄存器文件522)和断定寄存器文件526之间传送值的指令。不支持断定寄存器文件526和局部寄存器文件(局部向量寄存器文件523,局部向量寄存器文件524和局部寄存器文件525)之间的传送。断定寄存器(指定的P0至P15)的每个位控制向量数据的字节。由于向量是256位,断定寄存器的宽度等于256/8=32位。断定寄存器文件可以通过向量比较操作被写入,以存储向量比较的结果。
CPU诸如CPU 110、210、220、310、410或420在指令流水线上操作。该指令流水线每个周期可以分派多达九个并行的32位时隙,以将指令提供给七个执行单元(乘法单元511、相关单元512、算术单元513、算术单元514、加载/存储单元515、分支单元516和断定单元517)。指令是固定长度打包的取回指令,进一步在下面描述。所有指令都需要相同数量的流水线阶段用于取回和解码,但需要不同数量的执行阶段。
图11示出以下流水线阶段:程序取回阶段1110、分派和解码阶段1110以及执行阶段1130。程序取回阶段1110包括用于所有指令的三个阶段。分派和解码阶段包括用于所有指令的三个阶段。根据指令,执行阶段1130包括一至四个阶段。
取回阶段1110包括程序地址生成阶段1111(PG)、程序访问阶段1112(PA)和程序接收阶段1113(PR)。在程序地址生成阶段1111(PG)期间,在CPU中生成程序地址,并且将读取请求发送到用于一级指令高速缓存L1I的存储器控制器。在程序访问阶段1112(PA)期间,一级指令高速缓存L1I处理请求,访问其存储器中的数据,并将取回分组发送到CPU边界。在程序接收阶段1113(PR)期间,CPU将取回分组寄存。
指令总是一次被取回十六个字。图12示出该取回分组。图12示出单个取回分组的16个指令1201至1216。取回分组在512位(16字)边界上对齐。由每个指令中的p位部分地控制各个指令的执行。该p位优选地是指令的位0。p位确定指令是否与另一个指令并行执行。从较低地址到较高地址扫描p位。如果指令的p位为1,则下一个指令与指令I并行执行(与指令I在相同周期)。如果指令的p位为0,则在指令后的周期中执行下一个指令。并行执行的所有指令构成执行分组。执行分组可以包含多达九个指令。执行分组中的每个指令必须使用不同的功能单元。执行分组可以包含多达九个32位宽时隙。时隙可以是独立(self-contained)指令或可以扩展由前一条指令指定的常量字段。可以将时隙用作条件代码以应用于同一个取回分组内的指令。取回分组可以包含多达2个常量扩展时隙和一个条件代码扩展时隙。
存在多达11个不同的指令时隙,但是调度约束限制并行时隙的最大数量为9。最大九个时隙共享如下:
乘法单元511;相关单元512;算术单元513;算术单元514;加载/存储单元515;与断定单元517共享的分支单元516;第一常量扩展;第二常量扩展;以及与条件代码扩展共享的无单元指令。执行分组中的最后的指令的p位等于0。
CPU和一级指令高速缓存L1I流水线彼此去耦合。根据外部情况诸如在一级指令高速缓存L1I中是否存在命中,来自一级指令高速缓存L1I的取回分组返回可以采取不同数量的时钟周期。因此,程序访问阶段1112(PA)可以采取若干时钟周期,而不是如其他阶段中的1个时钟周期。
分派和解码阶段1110包括指令分派至适当的执行单元阶段1121(DS),指令预解码阶段1122(D1);和指令解码、操作数读取阶段1222(D2)。在指令分派至适当的执行单元阶段1121(DS)期间,取回分组被分成执行分组并分配给适当的功能单元。在指令预解码阶段1122(D1)期间,解码源寄存器、目的地寄存器和相关联的路径以用于执行功能单元中的指令。在指令解码、操作数读取阶段1222(D2)期间,完成更详细的单元解码,以及从寄存器文件读取操作数。
执行阶段1130包括执行阶段1131至1135(E1至E5)。不同类型的指令需要不同数量的这些阶段以完成它们的执行。流水线的这些阶段在理解CPU周期边界的设备状态方面起着重要的作用。
在执行1阶段1131(E1)期间,评估指令的条件并对操作数进行操作。如图11所示,执行1阶段1131可以从流缓冲器1141和示意性地示出为1142的寄存器文件中的一个接收操作数。对于加载和存储指令,执行地址生成,并且将地址修改写入寄存器文件。对于分支指令,在PG阶段中的分支取回分组受到影响。如图11所示,加载和存储指令访问这里示意性地示出为存储器1151的存储器。对于单周期指令,将结果写入目的地寄存器文件。这假设指令的任何条件都被评估为真。如果条件被评估为假,则在执行1阶段1131之后,指令不会写入任何结果或进行任何流水线操作。
在执行2阶段1132(E2)期间,加载指令将地址发送到存储器。存储指令将地址和数据发送到存储器。如果发生饱和,则使结果饱和的单周期指令设置控制状态寄存器(CSR)中的SAT位。对于2周期指令,将结果写入目的地寄存器文件。
在执行3阶段1133(E3)期间,执行数据存储器访问。如果发生饱和,则使结果饱和的任何乘法指令设置控制状态寄存器(CSR)中的SAT位。对于3周期指令,将结果写入目的地寄存器文件。
在执行4阶段1134(E4)期间,加载指令将数据带到CPU边界。对于4周期指令,将结果写入目的地寄存器文件。
在执行5阶段1135(E5)期间,加载指令将数据写入寄存器。这在图11中示意性地示出,其中来自存储器1151的输入执行5阶段1135。
图13示出由示例实施例使用的指令的指令编码的示例。每个指令由32位组成,并且控制单独可控制的功能单元(乘法单元511、相关单元512、算术单元513、算术单元514、加载/存储单元515)中的一个的操作。位字段定义如下。creg字段和z位是条件指令中使用的可选字段。这些位用于条件指令以识别断定寄存器和条件。z位(位28)指示在断定寄存器中断定是基于零还是非零。如果z=1,则测试为等于零。如果z=0,则测试为非零。creg=0和z=0的情况被视为始终为真,以允许无条件指令执行。如表2中所示,在指令中编码creg字段和z字段。
表2
注意,z位列中的“z”是指上述的零/非零比较选择,并且“x”是无关状态。该编码仅可以将16个全局标量寄存器的子集指定为断定寄存器。该选择用于保存指令编码中的位。注意,无条件指令不具有这些可选位。对于无条件指令,这些位(28至31)优选地用作附加操作码位。然而,如果需要,执行分组可以包含唯一的32位条件代码扩展时隙,该32位条件代码扩展时隙包含用于相同执行分组中的指令的4位creg/z字段。表3示出这样的条件代码扩展时隙的编码。
表3
位 | 功能单元 |
3:0 | .L |
7:4 | .S |
11:5 | .D |
15:12 | .M |
19:16 | .C |
23:20 | .B |
28:24 | 保留的 |
31:29 | 保留的 |
因此,条件代码扩展时隙以与creg/z位分配给在相同执行分组中的具体功能单元相同的方式指定解码的位。
特殊向量断定指令使用指定的断定寄存器控制向量运算。在当前的实施例中,所有这些向量断定指令对字节(8位)数据进行操作。断定寄存器的每个位控制是否对数据的对应字节执行SIMD操作。断定单元517的操作允许基于多于一个向量比较的各种复合向量SIMD操作。例如,可以使用两个比较进行范围确定。将候选向量与具有在第一数据寄存器内打包的最小范围的第一向量参考进行比较。候选向量的第二比较与具有在第二数据寄存器内打包的最大范围的第二参考向量进行。两个产生的断定寄存器的逻辑组合将允许向量条件操作以确定候选向量的每个数据部分是在范围内还是在范围之外。
dst字段将对应的寄存器文件中的寄存器指定为指令结果的目的地。
src2字段将对应的寄存器文件中的寄存器指定为第二源操作数。
根据指令操作码字段(位2至位12,和附加地,用于无条件指令的位28至位31),src1/cst字段有若干含义。第一含义将对应的寄存器文件的寄存器指定为第一操作数。第二含义是立即常量。根据指令类型,这被视为无符号整数和扩展到指定的数据长度的零,或被视为有符号整数和扩展到指定的数据长度的符号。
操作码字段(用于所有指令的位2至位12,和附加地,用于无条件指令的位28至位31)指定指令的类型并指定适当的指令选项。这包括功能单元和执行的操作的指定。操作码的详细解释超出了本说明书的范围,除了以下详细描述的指令选项之外。
p位(位0)标记执行分组。p位确定指令是否与接下来的指令并行执行。从较低地址到较高地址扫描p位。对于当前指令,如果p=1,则下一个指令与当前指令并行执行。对于当前指令,如果p=0,则下一个指令在当前指令之后的周期中执行。并行执行的所有指令构成执行分组。执行分组可以包含多达八个指令。执行分组中的每个指令必须使用不同的功能单元。
相关单元512与算术单元513和514通常以单指令多数据(SIMD)模式操作。在该SIMD模式中,将相同的指令应用于来自两个操作数的打包数据。每个操作数持有设置在预定时隙中的多个数据元素。通过数据边界的进位控制实现SIMD操作。这样的进位控制使得能够在变化的数据宽度上进行操作。
图14示出进位控制。与门1401在操作数宽的算术逻辑单元(用于算术单元513和514的256位,用于相关单元512的512位)内接收位N的进位输出。与门1401还接收进位控制信号,这将在下面进一步解释。将与门1401的输出供应给操作数宽的算术逻辑单元的位N+1的进位输入。与门诸如与门1401设置在可能的数据边界处的每对位之间。例如,对于8位数据,这样的与门将在位7和位8、位15和位16、位23和位24等之间。每个这样的与门接收对应的进位控制信号。如果数据大小是最小的,则每个进位控制信号为0,有效地阻塞相邻位之间的进位传输。如果选择的数据大小需要两个算术逻辑单元部分,则对应的进位控制信号为1。下面的表4示出针对诸如在算术单元513和514中使用的可以划分为8位、16位、32位、64位或128位的部分的256位宽操作数的情况的示例进位控制信号。不需要控制最高有效位的进位输出,因此只需要31个进位控制信号。
表4
数据大小 | 进位控制信号 |
8位 | -000 0000 0000 0000 0000 0000 0000 0000 |
16位 | -101 0101 0101 0101 0101 0101 0101 0101 |
32位 | -111 0111 0111 0111 0111 0111 0111 0111 |
64位 | -111 1111 0111 1111 0111 1111 0111 1111 |
128位 | -111 1111 1111 1111 0111 1111 1111 1111 |
256位 | -111 1111 1111 1111 1111 1111 1111 1111 |
对是2的整数幂(2N)的数据大小进行操作在本领域中是典型的。然而,该进位控制技术不限于2的整数幂。本领域技术人员将理解如何将该技术应用于其他数据大小和其他操作数宽度。
图15示出本发明可应用的计算集群1500。计算集群1500优选地包含在单个集成电路中。计算集群1500包括6个双核单元1510、1520、1530、1540、1550和1560。每个双核单元1510、1520、1530、1540、1550和1560可以是诸如示出在图2中的200的标量双核单元或诸如图4示出的400的向量双核单元。代表性的双核单元1510包括第一CPU0 1511、第二CPU11512,其中每一个包括分离的L1I和L1D高速缓存、共享的2级(L2)高速缓存1513、功率控制电路1514和杂项支持电路1515。6个双核单元1510、1520、1530、1540、1550和1560连接到多核共享存储器控制器1570。多核共享存储器控制器1570包括MSMC核1571、片上系统(SOC)接口1572、功率电路1573和各种未标记的支持电路。多核共享存储器控制器1570用作计算集群1500和系统存储器之间的接口(其可以包括3级(L3)高速缓存)、外部接口等。多核共享存储器控制器1570将计算集群1500的各个部分与L3 SRAM/高速缓存相互连接。未标记的支持电路集成必要的每一SOC的L3 SRAM、时钟、用于测试的设计(DFT)、电源管理和与SOC模块相连的必要的集成逻辑。
双核单元1510、1520、1530、1540、1550和1560经由多核总线架构(MBA)与MSMC1570相互连接。MBA协议用信用系统取代传统的通信握手。MBA信用系统为主控器提供机制,以通过跟踪可用的信用的数量来准确跟踪从控器接受事务的能力。
从主控器发送到从控器的每个事务要求主控器花费至少一个信用。信用是授权主控器发送特定类型的事务的有限资源。一般来说,信用将代表从控器中的物理存储位置,在从控器收到事务后,事务将驻留在该物理存储位置。
主控器需要准确地跟踪其拥有的总信用的数量。对于每个事务,主控器花费至少一个信用,导致可用的信用的数量减少。对于给定的信用类型,如果主控器已经花费了所有可用的信用,它将不可以再发送需要该信用类型的事务。主控器还可以持有比事务所要求的信用更少的信用。具体类型的可用的信用可以跟踪从控器中可用的数据缓冲器的数量。主控器不可以发起对于其主控器缺少所需的类型和数量的信用的事务。代理可以限制事务,诸如将写入量限制为对应于保证的从控器容量的可用的信用类型和数量。
一旦已经释放对应于信用类型的物理资源,从控器必须将信用返回给主控器。因此,主控器花费信用,并且从控器返回信用。系统中的信用总数是固定的,并且它是封闭的系统。事务类型到信用类型的映射是依赖于实施方案而不是由MBA协议指定的。
在MBA协议中创建的信用系统改变主控器与从控器之间的协商,以创建更高性能、更高利用率的接口。因为传统的握手要求从控器在接受和处理事务之前确认事务,所以这样的事务可能在等待确认时阻塞总线。在传统的通信握手中,主控器既不知道也不需要知道从控器是否能够接受事务。主控器将事务置于总线上并断言请求。从控器可以在其准备好时在任何点通过断言确认来接受命令。
信用系统允许主控器跟踪从控器接受事务的能力,因此从握手中移除确认。由于主控器跟踪每个信用类型的可用的信用的数量,主控器将只传输保证被从控器接受的事务。
信用是代表从控器中的物理资源的有限资源。主控器为每个事务花费信用。一旦从控器处理事务足够释放与信用类型相关联的物理资源,则必须将信用从从控器返回给主控器。在从控器中进行事务处理,从关键路径中移除该动作之后,信用的返回发生。相比之下,传统的握手将从控器确认置于处理事务的关键路径中。
与传统的通信握手相比,MBA信用系统有两个重要优点。第一个优点是事务确切地占用通信信道一个周期。这防止在等待来自从控器的确认的同时单个事务阻塞信道。这实现更高的吞吐量通信信道,特别是当多个虚拟或物理主控器共享相同的物理信道时。第二个优点是通过移除作为传输事务所需的确认信号缩短从主控器向从控器传输事务所需的通信握手。这减少了将事务从主控器通信到从控器的总体延迟,从而实现更高性能的通信。
多核总线架构(MBA)是为多处理器平台中的设备之间的内部连接而设计的高性能点对点单向总线协议。MBA协议具有以下特性。MBA协议是点对点的。两个代理确切地通过离散事务进行通信。一个代理充当主控器,并且另一个代理充当从控器。不支持在单个主控器和多个从控器之间进行广播。MBA协议是单向的。仅可以由主控器发起命令事务。从控器不可以发起命令事务。在第二镜像接口上发起响应事务。MBA协议是非阻塞的。由主控器引发的事务必须在单个周期中由从控器接受。不规定在总线上的停顿事务。MBA协议是基于信用的。每个事务具有相关联的信用和信用类型。在发起事务之前,主控器必须具有适当的信用。拥有适当的信用类型的信用保证从控器将接受事务。
在本说明书中使用以下术语以精确地识别设备及其在协议中的表现。
代理:使用本说明书定义的MBA协议进行通信的单个设备或逻辑控制器。
代理对:使用MBA协议进行通信的两个代理。
事务:两个代理、主控器和从控器之间的读取、写入或消息通信,其可以涉及或可以不涉及从主控器到从控器的数据传送。
主控器:发起事务的代理。
从控器:接收由主控器发起的事务的代理。
核侧:在两个代理可以具有硬件高速缓存(例如,在高速缓存层级中)之间的事务中更靠近CPU核的代理。
远侧:在两个代理可以具有诸如在高速缓存层级中的硬件高速缓存的事务中距CPU核更远的代理。
数据阶段:在事务数据信道(TDC)上单个周期中传送的单个节拍数据。
数据传送:对于单个did[11:0]的数据阶段的完整集合,其中最终数据阶段由dlast信号的断言表示。
数据窗口:由ddata[CFG:0]信号的宽度确定的数据传送的最大大小。默认宽度为512位。
命令事务:在两个代理之间开始序列的事务类型。命令事务由唯一的cid[11:0]区分,并且可以涉及或可以不涉及数据传送。
响应事务:完成两个代理之间的序列的事务类型。响应事务通过命令ID(cid[11:0])匹配到先前发起的命令事务,并且可以涉及或可以不涉及数据传送。
写入响应:在写入响应信道(WRC)上的完成用于写入命令事务的序列的专用响应。
事务序列:使用配对接口拓扑的两个代理之间的完整协议级通信。序列以由一个代理发起的命令事务开始,并以来自其他代理的响应事务或写入响应完成。
信用:单个原子单元,其授权主控器引发单个事务,在单个周期中从控器保证接受该单个事务,而不需要确认接受。由信用类型对信用进行分类。主控器拥有和花费信用。在发生足够的处理之后,从控器将信用返回以允许由主控器发起相同信用类型的新事务。
信用类型:通用定义而特定实施的由主控器使用以识别花费或返回的信用的种类的信用分类。信用类型通常与从代理中的特定物理资源相关联。主控器可用的资源的可单独分配的时隙的数量确切地与该信用类型的可用信用的数量相等。主控器和从控器必须就每种通用信用类型的确切定义达成一致。
信用计数:主控器可用以花费的给定信用类型的信用当前数量。
信用花费:经由断言识别TAC上的有效事务的cvalid信号以及断言关于ccredit[CFG:0]信号的一个或更多个有效信用类型,在事务属性信道(TAC)上发起事务的动作。在允许信用花费之前,主控器必须具有用于每个相关联的信用类型的至少一个信用计数。对于每个信用花费,主控器必须将相关联的信用类型减少1。信用花费等同于具有准备好的隐式命令的命令请求。如下所述,可以存在若干不同类型的信用。信用花费必须具有对应于事务的信用类型。另外,信用花费必须包括足以支持事务的信用数量。因此,在数据传送的情况下,由主控器支出的信用的数量可以对应于数据长度和接收从控器的缓冲器容量。
信用返回:响应于先前的信用花费,将信用从控器返回给主控器的动作。响应于信用返回,主控器增加相关联的信用类型。
信用限度:重置后主控器可用的特定信用类型的信用的最大数量。信用限度代表在接收到第一信用返回之前,主控器可以发起的单独的信用花费动作的最大数量。
信道:集中地用于共同目的(诸如描述事务或传送数据)的接口上的信号集合。
信用信道:使用信用并包括用于信用花费和信用返回的信令的信道。
可缓存性域:高速缓存的集合,潜在地在高速缓存层级的不同级,针对其事务可以指示分配是可以的。
可共享域:高速缓存的集合,潜在地在高速缓存层级的不同级,通过其预期一致性事务将遵循一致性协议的规则。
MBA协议优选地为代理提供信令支持以实施MESI硬件高速缓存一致性协议。受支持的事务类型和响应状态信号基于被称为ACE的ARM AXI一致性扩展。一致性协议通过在修改数据之前强制执行高速缓存行粒度的排他所有权,提供相同可共享域中的高速缓存以保持一致性。一致性协议的全面处理超出了本说明书的范围,但是这里呈现了执行概要,为MBA协议中使用的一致性信令提供了情境。
标准MESI高速缓存一致性协议为高速缓存行提供四种状态:修改的;排他的;共享的;和无效的。
修改的:具有修改状态的高速缓存行相对于主存储器进行修改,并且相同可共享域中的任何其他高速缓存中不存在该高速缓存行。
排他的:具有排他状态的高速缓存行不相对于主存储器进行修改,但相同可共享域中的任何其他高速缓存中不存在该高速缓存行。
共享的:具有共享状态的高速缓存行不相对于主存储器进行修改。相同可共享域中的其他高速缓存中可以存在该高速缓存行。
无效的:高速缓存中不存在具有无效状态的高速缓存行。存储在这样的高速缓存行中的任何数据都是无效的,并且不应被访问。
协议中的高速缓存一致性支持需要引入事务之间的若干依赖关系。例如,一致性ReadClean事务可以引起在ReadClean事务合法完成之前必须完成的一个或更多个CleanShared侦听事务的生成。在该情况下,ReadClean取决于CleanShared以便完成。ACE规范详细描述了与AXI协议的一致性扩展相关的若干这样的依赖关系。
依赖关系产生阻塞情形,其中一个事务必须阻塞直到另一个事务完成。一致性事务的顺序也产生阻塞情形。例如,必须以某种方式安排对重叠地址进行两次一致性写入事务。一个写入事务被另一个写入事务阻塞。
死锁是其中存在无法解决的相互依赖关系的情况。这也可以被认为是依赖图中的环路。必须建立阻塞规则以防止系统死锁。MBA协议中的所有事务可分类为阻塞事务或非阻塞事务:
阻塞事务由以下所有事项表征。允许阻塞事务生成一个或更多个侦听命令事务。允许阻塞事务取决于完成侦听命令事务以便完成。允许阻塞事务取决于完成非阻塞事务以便完成。允许阻塞事务取决于完成阻塞事务以便完成。
非阻塞事务的特征在于以下所有事项。不允许非阻塞事务生成侦听命令事务。允许非阻塞事务取决于完成侦听命令事务。不允许非阻塞事务取决于完成阻塞事务。允许非阻塞事务取决于完成非阻塞事务。
下面的表6将MBA协议中的每个事务识别为阻塞或非阻塞。
单个MBA接口被分为一起操作的三个不同的信道,用于具有从主控器到从控器的单向数据流的完整事务。三个MBA接口信道概括如下。事务属性信道(TAC)是指定从主控器到从控器的单个事务的所有属性的信用信道。事务数据信道(TDC)是用于从主控器到从控器的数据传送的非信用信道。每个TDC包括与先前或在TAC上同时发起的事务匹配的ID。写入响应信道(WRC)是主控器用于向从控器发送写入响应的信用信道。每个WRC包括与先前在配对接口拓扑中的相对TAC上发起的事务匹配的ID。
图16示出用于单个MBA接口的每个信道的信号方向。图16包括主代理1610和从代理1620。如数据流1611所示,主代理1610对从代理1620发信号。主代理1610经由TAC 1612、TDC 1613和WRC 1614将信号传输到从代理1620。
图17示出配对接口拓扑(PIT)中的每个信道。为了执行完整的事务序列,代理对必须使用呈镜像对配置的两个单独的MBA接口进行通信。这被称为配对接口。配对接口支持两个代理之间的双向数据传送。图17示出核侧代理1710和远侧代理1720。核侧代理1710是更靠近CPU核的代理。远侧代理1720是距CPU核更远的代理。在配对接口拓扑中,一个代理总是核侧代理,并且另一个代理总是远侧代理。
如数据流1711所示,核侧代理1710使用第一接口发起对远侧代理1720的命令和响应事务。在这些事务中,核侧代理1710是主控器并且远侧代理1720是从控器。核侧代理1710经由TAC 1712、TDC 1713和WRC 1714将信号传输到远侧代理1720。
如数据流1721所示,远侧代理1720使用第二镜像接口发起对核侧代理1710的命令和响应事务。远侧代理1720经由TAC 1722、TDC 1723和WRC 1724将信号传输到核侧代理1710。
图18示出另一示例配对接口拓扑(PIT)中的每个信道。图18示出核侧代理1810和远侧代理1820。下面的图1至图2示出配对的接口拓扑。在该示例中是读取序列。核侧代理1810在充当主控器时发起对接口的读取操作。这样的读取操作不需要从核侧代理1810到远侧代理1820的数据传送。因此,对于该序列,核侧代理1810不使用事务数据信道(TDC)。根据数据流1811,核侧代理1810作为主控器经由TAC 1712将信号传输到远侧代理1820。为了完成事务序列,远侧代理1820作为主控器(每一数据流1821)经由TAC 1822发起读取响应事务,并且在TDC 1823上供应读取数据。
配对接口拓扑允许每个代理发起命令和响应事务两者,根据需要将数据传送给另一个代理。数据流被约束在从主控器到从控器的单一方向。为此,每个代理在一个接口上充当主控器,并且在第二镜像接口上充当从控器。
事务属性信道(TAC)是指定发起单个信用事务所必需的所有属性的信用信道。对于确切的一个周期,形成事务属性的所有TAC信号由主控器断言,并且必须在相同周期中由从控器接受。在TAC上发起事务需要使用信用。使用信用保证从控器在内部物理资源中具有空间来接受事务。因此,要求从控器接受在TAC上断言的每个新的事务。
主控器可以每个周期发起新的事务,只受可用的信用限制。事务可以需要或可以不需要传送数据。如果在TAC上发起的事务需要传送数据,则使用事务数据信道(TDC)。
与断言cvalid一起由主控器花费的每个信用具有由ccredit[CFG:0]信号确定的信用类型。在成功从硬件资源中移除事务后,从控器必须使用creturn[CFG:0]信号将相同类型的信用返回给主控器。并不是每个接口都需要所有的TAC信号。表5列出根据一个优选实施例的事务属性信道信号。
表5
/>
在所有事务中可以使用信号cvalid、ccredit、cid、ctype、cmstid、cdata、cpriority和csband。信号caddress、cmemtype、cpable、ccinner、ccouter、csdomain、cbytecnt、cemudbg和csecure只可以在命令事务中使用。信号ccoh、cdirty、cstatus和ctrace只可以在响应事务中使用。信号creturn只可以在信用返回事务中使用。
以下是事务属性信道上的上述信号的信号描述。如表5所示,一些信号被指定为需要的,并且一些信号被指定为可选的。如果在接口上存在信道,则必须存在需要的信号。如果通过配置移除整个信道,则需要的/可选的指示符不适用。
cvalid信号识别在TAC上存在有效的事务。0指示没有事务。1指示有效的事务在总线上。
ccredit[CFG:0]信号是识别由该事务花费的一个或更多个信用的位向量。可用信用类型的数量,以及因此该信号的宽度是配置选项。在优选实施例中,MBA协议定义通用整数信用类型。信用类型是从零开始递增地编号的无符号整数。creturn[CFG:0]信号的宽度必须与ccredit的宽度匹配。当断言cvalid以指示在事务属性信道(TAC)上存在事务时,ccredit需要进位非零值,其中至少一个位被断言为1。多于一个信用可以随着单个事务花费。这通过在ccredit位向量中断言多于一个位来实现。由主控器和从控器对信用类型到物理资源的解释和映射是实施方案特定的。
caddress[47:0]信号识别当前事务的起始地址。地址可以是虚拟地址、物理地址或任何其他中间地址表示。地址指定用于对齐和非对齐事务的事务的起始字节。在主控器发起命令事务的接口上需要该信号。
cmstid[11:0]信号唯一地识别发起该事务的系统主控器。对于在当前主控器之外引发的事务,应该准确传播cmstid信号以允许准确的安全保护检查。
cid[11:0]信号唯一地识别当前事务。命令事务建立cid。事务数据信道(TDC)上的对应数据传送经由did[11:0]信号镜像cid信号。随后的响应事务和写入响应经由cid和wid[11:0]信号镜像cid。
ctype[5:0]信号识别当前事务的类型。表6列出6位ctype信号的优选解码。用识别事务类别的3个最高有效位以及识别类别内特定类型的3个最低有效位编码事务类型。
表6
/>
所有其他可以的编码是保留的,并且不在优选实施例中使用。
cmemtype[1:0]信号识别如由虚拟存储器转换确定的给定事务地址的存储器类型。三种支持的存储器类型具有不同的行为语义。00的编码表示设备存储器类型。01的编码表示正常的回写(writeback)高速缓冲存储器类型。10的编码表示正常的直写(writethrough)高速缓冲存储器类型。11的编码是保留的并且不在优选实施例中使用。
cpable信号识别如由虚拟存储器转换确定的事务地址是否可预取回。标记为可预取回的存储器区域可以有助于发起硬件预取回流。0表示不可预取回。1表示可预取回。
ccinner[1:0]信号类型识别与用于如由虚拟存储器转换确定的事务地址的内部可缓存域对应的高速缓存分配属性。
ccouter[1:0]信号识别与用于如由虚拟存储器转换确定的事务地址的外部可缓存域对应的高速缓存分配属性。
高速缓存层级(1级、2级、3级高速缓存等)被分为两个互斥的可缓存域,内部域和外部域。高速缓存分配策略针对每个域单独建立,并记录在由虚拟存储器转换存储的存储器属性中。内部可缓存域包括最接近CPU的一个或更多个高速缓存,通常为1级和2级高速缓存。外部可缓存域排除内部域中的一个或更多个高速缓存,并且包括超出内部域的高速缓存,诸如最末级高速缓存。内部和外部高速缓存域的解释依赖于实施方案,并且一些实施方案可以选择将两个域视为相同的。
表7列出相同的ccinner和ccouter的编码。
表7
csdomain信号识别如由虚拟存储器转换确定的事务的内部或外部可共享域。可共享域识别必须为该事务保持一致性的高速缓存。
存在两个可共享域:内部和外部。两个域不是互斥的。外部域包括内部域中的高速缓存。内部共享域包括最接近CPU的一个或更多个高速缓存,通常为1级和2级高速缓存。外部共享域包括内部域中的一个或更多个高速缓存以及超出内部域的一个或更多个高速缓存(例如最末级高速缓存)。内部和外部共享域的解释依赖于实施方案,并且一些实施方案可以选择将两个域视为相同的。0指示内部共享域。1指示外部共享域。csdomain仅对于可共享事务有效。对于ReadNoSnoop和WriteNoSnoop事务类型忽略csdomain信号。
ccoh[1:0]信号识别ReadResponse或SnoopResponse事务的一致性状态信息。一致性状态信息用于通知发起主控器高速缓存行的最终一致性状态。对于读取响应事务,ccoh指示读取完成时分配高速缓存中行的一致性状态。对于侦听响应事务,ccoh指示当侦听完成时侦听高速缓存中的行的一致性状态。表8列出ccoh的有效编码。
表8
cdirty信号识别与该响应事务相关联的高速缓存行数据传送相对于主存储器是脏的还是干净的。cdirty信号用于向侦听主控器指示侦听响应数据是否需要写回主存储器。cdirty信号可选地与读取操作一起使用以实施SharedDirty MESI状态。cdirty信号仅适用于响应事务,并对命令事务没有意义,且对于命令事务必须绑定到0。0cdirty信号指示高速缓存行数据传送相对于主存储器不改变。1cdirty信号指示高速缓存行数据传送与主存储器不同。这指示必须在以后的某一时间将该高速缓存行写回主存储器。
cdata信号识别该事务是否伴随相关联的数据传送。因为没有读取操作包括数据传送,所以读取操作将不断言该信号。随后的Read Response事务将断言cdata信号。0cdata信号指示事务不包括传送数据。1cdat2信号指示事务确实包括相关联的数据。因此,Write命令事务需要断言cdata=1。无论cstatus[1:0]中指示的状态如何,读取响应事务都需要断言cdata=1。
cbytecnt[6:0]信号识别事务的总大小。最大法定大小为128字节。所有零的cbytecnt指示128字节的事务。该cbytecnt的编码是Snoop和Victim事务所需要的。否则,cbytecnt信号的数量等于数据传送字节的数量。不可以由cbytecnt信号指定零大小的事务。然而,写入事务可以将TDC上的dbyten[CFG:0]信号清零,以执行不修改任何字节的写入事务。
cstatus[1:0]信号识别用于响应事务的事务完成状态。该信号仅对响应事务有效,并且对于命令事务被忽略。表9列出有效的编码。
表9
ctrace[3:0]信号识别用于读取响应事务的追踪信息。由仿真/排错架构使用该信息。追踪信息记录服务事务的存储器层级中的级别。无论事务的成功/失败状态如何,都记录追踪信息。在cstatus[1:0]信号中捕获成功/失败状态。信号编码被定义为匹配仿真/排错架构规范所规定的信号编码。表10列出有效的编码。
表10
cemudbg信号将当前事务识别为仿真事务或非仿真事务。0cemudbg信号指示正常的非仿真事务。1cemudbg信号指示仿真事务。
csecure信号识别当前事务的安全级。0csecure信号指示非安全事务。1csecure信号指示安全事务。
cpriv[1:0]信号识别当前事务的特权级。表11列出有效的编码。
表11
cpriority[2:0]信号识别当前事务的优先级。该信号由从控器使用以仲裁事务。较低的数值指示较高的优先级。因此,000的cpriority[2:0]信号指示最高优先级,并且111的cpriority[2:0]信号指示最低优先级。
csband[CFG:0]信号是不在响应上镜像的可选的用户定义的边带信号。该信号是可选的,并且其解释是实施方案特定的。csband信号仅由事务属性信道(TAC)使用,并且不需要作为事务序列操作的一部分进行镜像返回。
cmsband[CFG:0]信号是必须在响应上镜像的可选的用户定义的边带信号。该信号是可选的,并且其解释是实施方案特定的。当响应事务作为事务序列操作的一部分被断言时,用于命令事务的cmsband信号必须以相同的值进行镜像。
creturn[CFG:0]信号识别该周期返回单个信用的一个或更多个信用类型。可用的信用类型的数量是配置选项,因此该信号的宽度是配置选项。MBA协议定义通用整数信用类型。由主控器和从控器对信用类型的解释是实施方案特定的。creturn信号宽度与可以的信用类型的数量确切地匹配。该creturn信号被解释为具有用于在接口上使用的每个信用类型的一个位的位向量。可以由从控器每个周期独立地断言creturn信号的每个位。在creturn信号中的任何位上的值为1指示从控器到主控器返回该类型的单个信用。如果在周期中断言creturn信号中的多于一个位,则对于信号中断言的每个位,一个信用从从控器返回到主控器。对于接口上的每个信用类型,每个周期最多一个信用可以从从控器返回到主控器。
事务数据信道(TDC)是用于对于在事务属性信道(TAC)上发起的事务执行从主控器到从控器的数据传送的非信用信道。TDC独立于TAC管控。两个信道经由TAC中存在的cid[11:0]信号和TDC中存在的did[11:0]信号被链接。数据传送被分为一个或更多个数据阶段。对于用于每个数据阶段的确切的一个周期,由主控器断言TDC上的信号,并且该信号必须在相同的周期中由从控器接受。
TDC上的数据传送内的各个数据阶段需要以严格的线性顺序发生,但不需要在连续的周期中发生(例如,脉冲串)。TDC上允许数据阶段之间的空周期。由断言dlast信号指示单个事务的最终数据阶段。为了改善TDC的总体利用率,只要数据传送内的数据阶段以严格的线性顺序发生,则主控器可以交错来自不同事务的数据阶段。数据窗口的大小以及因此ddata信号可配置为以下宽度:64位、128位、256位、512位。默认值为512位。每个数据阶段可以传送如由dbyten[CFG:0]信号所指示的全部或部分数据窗口。并不是每个接口都需要所有的TDC信号。表12列出事务数据信道的信号。
表12
对于表12的大小列,CFG指示该信号的大小是可配置的。括号中的数字是以位为单位的默认大小。从ddata信号的大小导出dword、dparity和dedc信号的大小。基于配置的数据窗口大小和128字节(1024位)的最大数据传送确定dword信号宽度。无论数据窗口的大小如何,最大数据传送大小固定为128字节。
dvalid信号识别对于在事务属性信道(TAC)上在相同或先前周期中发起的事务的TDC上存在有效数据阶段。dvalid信号为0指示当前周期中没有数据。dvalid信号为1指示当前周期包括有效数据。
did[11:0]信号唯一地识别对应于当前数据传送的TAC事务。虽然不同数据传送的数据阶段可以交错,但是对于数据传送中的每个数据阶段,Did信号必须相同。
dtype信号识别数据传送是对应于命令事务还是响应事务。该信息对于唯一区分共享相同主控器dmstid[11:0]和did[11:0]的命令和响应数据传送是必需的。dtype信号为0指示当前事务是命令事务。dtype信号为1指示当前事务是响应事务。
dlast信号识别当前数据传送是否是当前总线事务的最后数据。当前总线事务的数据可太大而无法在数据总线的可用线路上传输。在该情况下,在若干周期中传送数据。dlast信号为0指示当前事务不是最后数据传送。dlast信号为1指示当前事务是最后数据传送。
dstatus[1:0]识别当前数据传送的数据状态。该信号仅适用于响应事务,并且对于写入命令事务被忽略。对于数据传送中的每个数据阶段,单独断言该信号。对于数据传送中的每个数据阶段,该信号不需要相同。这允许分段读取返回将每个数据阶段的单独状态返回。dstatus信号具有与表9中列出的cstatus信号相同的编码。
dbyten[CFG:0]信号识别当前数据阶段的ddata[CFG:0]窗口中的有效字节通道。由在dbyten位向量的对应位中的1识别ddata[CFG:0]总线上的每个有效字节。所有零的dbyten指示在当前数据阶段中没有有效数据传送。dbyten信号可以用作写入命令事务的写入byten或读取返回/侦听返回事务的读取byten,并且对于其中断言dvalid的每个周期需要是有效的。对于写入命令事务,支持中断的数据阶段,其中dbyten信号在连续信号之间具有零。这旨在用于高速缓存事务的写入缓冲器刷新和部分行写入。dbyten信号是可选的。如果不存在dbyten信号,则对于数据传送中的每个数据阶段假设每个字节通道是有效的。
ddata[CFG:0]信号识别当前数据阶段的数据。数据字节通过地址与固定字节通道对齐,并且由dbyten[CFG:0]位向量限定所有数据。通过设置dbyten[CFG:0]位向量中的必需位来指示非对齐数据或中断的数据(例如写入合并数据)。
dword[CFG:0]信号识别当前数据阶段应用的整体数据传送中的数据窗口。大于数据窗口的大小的数据传送将需要多个数据阶段。dword信号用于识别当前ddata[CFG:0]和dbyten[CFG:0]信号应用的数据窗口。数据传送需要以线性顺序发生。因此,dword信号需要通过数据传送单调增加。在数据传送中连续数据阶段中,dword信号的值不可以减小。跨低宽度下游数据总线的来自主控器的分段读取返回将引起持有多个数据阶段的一致值的dword,直到达到数据窗口的边界。不允许跨越数据窗口的数据阶段,因为dword信号不可以唯一区分当前数据阶段中的哪些数据字节对应于总数据传送中的哪个数据窗口。
dmstid[11:0]信号唯一地识别发起该数据传送所属的事务的主控器。dmstid必须匹配事务属性信道(TAC)上原始事务的cmstid。
dlast信号识别对于给定的did[11:0]的数据传送中的最终数据阶段。
dparity[CFG:0]信号识别当前ddata[CFG:0]窗口的奇偶校验。奇偶校验被计算为每32位子行的ddata的XOR减小。表13列出用于多达512位数据窗口的dparity信号的编码。
表13
分段数据传送可以经由多个数据阶段传送完整数据窗口。对于分段数据传送中的每个数据阶段,dbyten[CFG:0]将指定正在传送的总数据窗口的子集。每个数据阶段必须在完整数据窗口上计算dparity,将对应于调到零位的dbyten位的数据字节清零。这允许从控器通过执行来自每个数据阶段的中间dparity值的连续XOR来重建完整数据窗口的正确dparity值。
dedc[CFG:0]信号识别当前数据阶段的错误检测/校正汉明和奇偶校验信息。dedc信号由两个10位字段组成,每个字段以256位数据粒度计算。每个10位字段由9位汉明校正子和单个全奇偶校验位组成。表14列出dedc信号的编码。
表14
/>
在数据窗口经配置为小于256位的接口上不可以使用dedc信号。
图19示出用于编码dedc信号的逻辑。数据1910被分为两部分:data[511:256];和data[255:0]。根据已知技术,汉明生成器1931接收数据1910的data[511:256],并形成9位汉明数据。这9位变成数据1920的dedc[18:10]。奇偶校验XOR减少1932形成来自汉明生成器1931的数据位数据[511:256]和9位汉明数据的组合异或。该单个XOR位变成数据1920的dedc[19]。根据已知技术,汉明生成器1933接收数据1910的data[255:0]并且形成9位汉明数据。这9位变成数据1920的dedc[8:0]。奇偶校验XOR减少1934形成来自汉明生成器1933的数据位数据[255:0]和9位汉明数据的组合异或。该单个XOR位变成数据1920的dedc[9]。
分段数据传送可以经由多个数据阶段传送完整数据窗口。对于分段数据传送中的每个数据阶段,dbyten[CFG:0]将指定正在传送的总数据窗口的子集。每个数据阶段必须在完整数据窗口上计算dedc,将对应于调到零位的dbyten位的数据字节清零。这允许从控器通过执行来自每个数据阶段的中间dedc值的连续XOR来重建完整数据窗口的正确dedc值。
dsband[CFG:0]信号是用户定义的边带信号。该信号是可选的,并且其解释是实施方案特定的。dsband信号仅由事务数据信道(TDC)使用。
写入响应信道(WRC)是由主控器用于针对在配对的接口拓扑的相对的MBA接口上先前发起的写入命令事务来向从控器返回写入状态的信用信道。在WRC上发起写入响应需要使用信用。对于确切的一个周期,WRC信号由主控器断言并且必须在它们被断言的周期中由从控器接受。由与原始写入命令事务的cid[11:0]匹配的wid[11:0]信号唯一识别每个写入状态。在成功处理写入响应后,必须由从控器使用wreturn信号将写入响应信用返回到主控器。尽管如果不需要写入响应,则可以排除整个信道,但是如果信道存在,则需要WRC上的所有信号。
表15列出写入响应信道信号。
表15
wmstid[11:0]信号是WRC上唯一的可选信号。根据接口是否支持写入命令事务,整个写入响应信道可以经配置为存在或不存在。
wvalid信号指示存在有效写入响应。0指示不存在写入响应。1指示当前周期的有效写入响应。
wid[11:0]信号唯一地识别对于其这是写入响应的原始TAC事务。wid必须匹配原始写入命令事务的cid。
wstatus[1:0]信号识别写入事务的状态。wstatus信号具有与表9中列出的cstatus相同的编码。
wmstid[11:0]信号识别引发对于其这是响应的写入命令事务的系统主控器。wmstid必须与写入命令事务的原始cmstid匹配。
wreturn信号指示写入响应信用的返回。0指示不存在写入响应信用返回。1指示当前周期的有效写入响应信用返回。
MBA协议定义了多种事务类型。将事务分组为两个基本类别,命令和响应。下面描述两种事务类别,其中对协议支持的每个事务进行描述。
命令事务在两个代理之间发起可以涉及或可以不涉及数据的传送的事务序列。以两种方式中的一种完成序列:由相对MBA接口的写入响应信道(WRC)上的另一个代理发起的写入响应;以及由相对MBA接口的事务属性信道(TAC)上的另一个代理发起的响应事务及其在其事务数据信道(TDC)上的相关联数据传送。所有命令事务必须指定唯一的cid[11:0]。cid可以不被相同接口上的相同主控器发起的任何活动序列使用。写入命令事务需要将数据从主控器传送到从控器。除写入命令序列之外的所有序列由相对MBA接口上的另一个代理发起的响应事务完成。
命令事务分成四个类别:需求;侦听;消息;和维护。表16列出需求类别中的命令事务类型。表16中的所有命令对应于ACE等同事务。主控器列指示每个事务类型的预期发起器。序列完成列指示完成由命令事务发起的序列的所需的响应。
表16
/>
ReadNoSnoop命令是非一致性读取操作。该读取操作不参与一致性协议,并且不生成s侦听事务。根据cmemtype[1:0]、ccinner[1:0]和ccouter[1:0]信号的值,ReadNoSnoop事务可以引起或可以不引起高速缓存分配。
ReadOnce命令是不分配到发起主控器中的高速缓存中的一致性读取操作。
ReadClean命令是将分配到发起主控器中的高速缓存中的一致性读取操作。发起主控器正在请求处于共享状态的行,但远侧部件可以许可以排他状态访问。
ReadUnique命令是将分配到发起主控器中的高速缓存中的一致性读取操作。发起主控器正在请求处于排他状态的行,行必须被许可处于排他状态。
WriteNoSnoop命令是非一致性写入操作。该写入操作不参与一致性协议,并且不生成侦听事务。
WriteUnique命令是具有可小于完整高速缓存行的大小的一致性写入操作。事务地址的高速缓存行不能存在于发起主控器的高速缓存中。
WriteLineUnique命令是具有必须等于完整高速缓存行的大小的一致性写入操作。事务地址的高速缓存行不能存在于发起主控器的高速缓存中。
WriteClean命令是可能一致性的受害者写入事务,其中行将以清除状态保留在发起主控器的高速缓存中。
WriteBack命令是可能一致性的受害者写入事务,其中行将不保留在发起主控器中的高速缓存中。
表17列出侦听类别中的命令事务类型。ACE等同事务是:SnoopReadOnce、ReadOnce;SnoopReadShared、ReadShared;SnoopCleanShared、CleanShared;SnoopCleanInvalid、CleanInvalid;和SnoopMakeInvalid、MakeInvalid。
表17
SnoopReadOnce命令是不改变侦听的高速缓存的状态的非高速缓存读取侦听命令。如果侦听高速缓存中存在行,则必须返回数据。
SnoopReadShared命令是在完成后需要侦听的高速缓存行移动到共享状态的高速缓存读取侦听命令。如果在侦听的高速缓存中存在行,则必须使用侦听响应事务返回数据。
SnoopCleanShared命令是在完成后需要侦听的高速缓存行移动到清除状态的高速缓存读取侦听命令。如果在侦听的高速缓存中存在行,则必须使用侦听响应事务返回数据。
SnoopCleanInvalid命令是在完成后需要侦听的高速缓存行移动到无效状态的高速缓存读取侦听命令。如果在侦听的高速缓存中存在行,则必须使用侦听响应事务返回数据。
SnoopMakeInvalid命令是在完成后需要将侦听的高速缓存行移动到无效状态的高速缓存侦听命令。从来没有使用侦听响应事务返回数据。
表18列出消息类别中的命令事务类型。DVMOperatation命令、DVMSync命令和DVMCompleter命令具有ACE等同事务。CacheWarm命令、CacheWarmNotify命令和Evict命令不具有ACE等同事务。消息命令事务从不包括数据传送,并且因此不需要使用事务数据信道(TDC)。
表18
CacheWarm命令是要求从代理发起分配ReadClean操作以将给定的地址分配到其高速缓存中的消息。对应于只可以从MMU确定的存储器类型和存储器属性的事务属性信道(TAC)属性必须从CacheWarm事务镜像到随后的ReadClean操作。CacheWarm事务由系统用于预取回高速缓存行。可以在发起ReadClean操作之后发起消息响应事务。
CacheWarmNotify命令是需要从代理发起分配ReadClean操作以将给定地址分配到其高速缓存中的消息。对应于只可以从MMU确定的存储器类型和存储器属性的事务属性信道(TAC)属性必须从CacheWarm事务镜像到随后的ReadClean操作。当对于ReadClean操作接收到读取响应事务时,从代理必须发起WriteNoSnoop消息命令事务以指示完成高速缓存预热操作。
Evict命令是给定地址已经从发起主控器中的高速缓存中移除(无效化)的可能一致性的高速缓存状态通知。
维护命令事务有由维护域区分的两个特点。两个维护域如下:统一点(POU);和一致性点(POC)。统一点是在其统一指令和数据高速缓存的点。这通常是第二级高速缓存。一致性点是给定一致性域中的所有一致性主控器必须将修改数据写回于其上以便在相同一致性域中由其他一致性主控器观察的点。这通常是最末级高速缓存。
表19
CleanSharedPOU命令是高速缓存维护操作,该操作需要如果其保持在修改状态,从核至从代理的所有高速缓存将给定的高速缓存行写出到统一点。CleanSharedPOU事务必须传播到从代理和核之间的所有缓存,但可以通过SnoopCleanShared命令事务完成这点。
CleanInvalidPOU命令是高速缓存维护操作,该操作需要如果其保持在修改状态,从核至从代理的所有高速缓存将给定的高速缓存行写出到统一点。所有高速缓存也必须使高速缓存行无效。CleanInvalidPOU事务必须传播到更靠近核的高速缓存,但可以通过SnoopCleanInvalid命令事务完成这点。
MakeInvalidPOU命令是高速缓存维护操作,该操作需要从核到从代理的所有高速缓存使给定的高速缓存行无效化至统一点。MakeInvalidPOU事务必须传播到更靠近核的缓存,但可以通过SnoopMakeInvalid命令事务完成这点。
CleanSharedPOC命令是高速缓存维护操作,该操作需要如果其保持在修改状态,从核到从代理的所有高速缓存将给定的高速缓存行写出到一致性点。CleanSharedPOC事务必须传播到从代理和核之间的所有高速缓存,但可以通过SnoopCleanShared命令事务完成这点。
CleanInvalidPOC命令是高速缓存维护操作,该操作需要如果其保持在修改状态,从核到从代理的所有高速缓存将给定的高速缓存行写出到一致性点。所有高速缓存也必须使高速缓存行无效。CleanInvalidPOC事务必须传播到更靠近核的高速缓存,但可以通过SnoopCleanInvalid命令事务完成这点。
MakeInvalidPOC命令是高速缓存维护操作,该操作需要从核到从代理的所有高速缓存使给定的高速缓存行无效化至一致性点。MakeInvalidPOC事务必须传播到更靠近核的高速缓存,但可以通过SnoopMakeInvalid命令事务完成这点。
响应事务用于完成两个代理之间的事务序列。响应事务需要匹配原始命令事务的cid[11:0]。响应事务可以或可以不与数据传送相关联。表20列出响应事务类型。ReadResponse的ACE等同事务是RRESP;SnoopResponse的ACE等同事务是CR、CU;并且不存在MessageResponse和MaintenanceResponse命令的ACE等同事务。主控器列指示每个事务类型的预期发起者。
表20
需要读取响应事务以完成读取序列。读取响应事务将始终包括数据传送。具有指示失败状态的cstatus[1:0]值的读取响应事务必须仍然断言cdata信号并返回调到零位的数据。具有指示成功的cstatus[1:0]值的读取响应事务必须包括在事务数据信道(TDC)上的数据传送。
需要侦听响应事务以完成侦听序列。侦听响应事务可以包括或可以不包括数据传送。具有指示失败状态的cstatus[1:0]值的侦听响应事务可以解除断言cdata信号,并防止使用事务数据信道(TDC)。具有指示成功的cstatus[1:0]值的侦听响应事务必须包括在事务数据信道(TDC)上的数据传送。
需要消息响应事务以完成消息序列。消息响应事务从不包括数据传送。
需要维护响应事务以完成维护序列。维护响应事务从不包括数据传送。
响应事务通过在事务属性信道(TAC)上断言对应的cstatus[1:0]信号指示错误状态。在尝试处理读取操作时,不管是否发生错误,都需要ReadResponse事务断言为1的cdata信号。
通常在从控器执行端点读取访问之前检测地址和保护错误。在该情况下,仍然必须发生ReadResponse事务的数据传送。具有数据传送的完整ReadResponse事务将如以下发生:必须使用事务属性信道(TAC)上的ReadResponse事务断言为1的cdata信号。cstatus[1:0]信号指示发生的错误种类,如果有的话。这可以是地址错误和保护错误。数据传送必须在事务数据信道(TDC)上发生。数据传送的大小必须等于原始读取操作的cbytecnt[6:0]。ddata[CFG:0]信号必须设置为全零,以避免允许关于该信号数据错误诸如不可校正位错误对先前寄存的数据采样的安全漏洞,该漏洞可以发生在读取访问期间,可以在已经发起ReadResponse事务之后。如果在已经传送一个或更多个数据阶段后发生错误,则必须完成数据传送,并且必须通过断言关于dstatus[1:0]信号的对应的错误种类以及针对错误的数据阶段将ddata[CFG:0]设置为全0来表示错误的数据阶段。
通过使用信用操作所有MBA事务。在事务属性信道(TAC)上发起的事务和在写入响应信道(WRC)上发起的写入响应需要使用至少一个信用。信用由主控器拥有并花费,且随后由从控器返回。写入响应信用只具有一个种类,且不需要进一步分类。事务信用被组织成信用类型。示例实施例的大多数实施方案将通过从控器上的物理资源对信用类型进行分类。
对于所有事务。ccredit[CFG:0]信号指示花费的一个或更多个信用的类型。示例实施例不需要固定数量的信用类型,也不需要定义的信用类型的固定含义。特定的实施方案将配置MBA接口上可用的信用类型的数量,以及与每个信用类型相关联的含义。
信用信道的信用握手非常简单,并遵循以下时间形式:信用花费;之后是信用返回。主控器通过断言cvalid和断言在ccredit[CFG:0]位向量中的一个或更多个位花费一个或更多个信用。对应的从控器在相同周期接受事务。这是必须遵循的。如果主控器花费信用,这指示从控器必须接受事务。从控器完成事务,然后释放事务使用的一个或更多个资源。释放资源后,通过断言creturn[CFG:0]位向量中对应的一个或更多个位,从控器将一个或更多个信用返回给主控器。然后,主控器具有信用以在以后使用。
图20示出事务属性信道(TAC)的简单信用握手。在图20中,2001是控制主控器和从控器两者的时钟信号。主控器产生用于一个时钟周期的活动cvalid信号2002以发起事务。主控器在同一个时钟周期期间还产生ccredit信号A 2003。该ccredit信号A 2003指示在当前事务上花费的类型信用。根据示例实施例,如果主控器花费信用,则从控器必须接受事务。因此,从控器接受事务并且操作不确定的时间2010。在接受的事务所需要的处理完成之后,从控器经由creturn信号A 2004返回信用。该creturn信号A 2004优选地具有一个时钟周期的长度。
在示例实施例中,在信用信道上存在信用花费到信用返回动作的一对一映射。在相同信道上可以同时进行多次信用握手。主控器负责保持跟踪其所拥有的信用的数量。每个信用花费动作都将主控器中的信用计数减少一。每个信用返回动作将主控器中的信用计数增加一。
信用花费和信用返回动作可以在相同信用信道上交错,用于相同或不同信用类型的不同握手。
图21示出在相同信道上的交错信用握手。在图21中,2101是控制主控器和从控器两者的时钟信号。主控器产生一个时钟周期2111的活动cvalid信号2102以发起第一事务。主控器还在相同的时钟周期2111期间产生ccredit信号A2103。该ccredit信号A 2003指示在当前事务上花费的类型信用。在两个时钟周期2112期间,主控器传输ccredit信号B2103,随后传输ccredit信号A2103。这些ccredit信号在具有两个时钟周期cvalid信号2102的时间段内。注意,主控器在信用从从控器返回之前传输第二ccredit信号A2103。这只有在主控器最初具有至少两个类型A的信用的情况下才会发生。这继而需要从控器在完成第一此种事务之前,最初具有容量接受类型A的第二请求。因此,从控器接受第一事务类型A。在完成第一接受的事务所需的处理之后,从控器在时间2113期间经由creturn信号A2104返回信用。该creturn信号A 2104优选地具有一个时钟周期的长度。在第二接受事务(类型B)和第三接受事务(类型A)所需的处理完成时,从控器在时间2114期间经由creturn信号A+B2104返回两个信用。在优选实施例中,信用返回被编码为具有用于在信道上使用的每个信用类型的一个位的位向量。用于类型A和类型B的位的设置允许单个信用返回信号返回两种信用类型。
图17示出配对接口拓扑(PIT)中的每个信道。为了执行完整的事务序列,代理对必须使用以镜像对配置的两个单独的MBA接口进行通信。这被称为配对接口。配对接口支持两个代理之间的双向数据传送。代理A和代理B之间的所有信用序列将遵循以下三种形式中的一种:信用非写入序列;信用写入序列;和信用DVM序列。
图22示出信用非写入序列中的步骤。这样的信用非写入序列通过核侧代理1710在TAC 1712上发起类型A0的信用花费(步骤2201)开始。在步骤2202,远侧代理1720在TAC1722上向核侧代理1710传输类型A0的信用返回。一旦远侧代理1720清除由初始命令事务占用的物理资源(步骤2201),就发生这种情况。没有事务ID与信用返回相关联。在步骤2203,远侧代理1720发起新的响应事务,在TAC 1722上花费信用类型B1的单个信用。该响应事务的ID必须与原始ID匹配(步骤2201)。在步骤2204,远侧代理1720在TDC 1723上执行一个或更多个数据阶段的可选数据传送。因为在步骤2203中数据传送属于信用花费,所以该动作不需要信用。因为TAC 1722和TDC 1723是不同的信道,所以TDC 1723上的数据传送的初始阶段可以与步骤2203中的信用花费同时发生。图22示出具有多个数据传送的一个示例。在步骤2205中,核侧代理1710在TAC 1712上将返回信用类型B的单个信用返回到远侧代理1720。一旦核侧代理1710清除由返回事务占用的物理资源(步骤2203),就发生这种情况。没有事务ID与信用返回相关联。
存在五种信用非写入序列类型:读取操作;侦听操作;消息序列;和维护序列。表21列出配对接口拓扑中的图11所示步骤的法定事务类型和数据传送。
表21
图23示出信用写入命令序列的一般形式。通过其中完成序列的方式区分信用写入序列与上述信用非写入序列。通过在写入响应信道(WRC)上的写入状态完成信用写入序列。使用任意符号名称示出事务ID和信用类型,以说明整个序列中的信用和ID流的性质,并且另外在MBA接口或协议内不携带任何重要意义。
在步骤2301,通过核侧代理1710在TAC 1711上花费类型A5的单个信用开始信用写入序列。这与图22的步骤2201的信用类型A0不同,因为核侧代理1710必须确保远侧代理1720可以处理写入的数据。因此需要不同的信用类型。在步骤2301中,核侧代理1710针对写入命令事务在TDC 1712上执行一个或更多个数据阶段的数据传送。该动作不需要信用。在步骤2301中,该数据传送属于信用花费。因为TAC 1711和TDC 1712是不同的信道,所以在TDC 1712上的数据传送的初始阶段可以与步骤2201中的信用花费同时发生。图22示出具有多个数据传送的一个示例。在步骤2303中,远侧代理1720在TAC 1722上将类型A5的单个信用返回到核侧代理1710。一旦远侧代理1720清除由命令事务占用的物理资源(步骤2301),这种情况就会发生。没有事务ID与信用返回相关联。在步骤2304中,远侧代理1720在写入命令事务的处理在WRC 1724上完成时发起写入响应。ID必须与原始ID匹配。写入响应需要花费专用写入响应信用类型。在步骤2304中,核侧代理1710经由WRC 1714将单个写入响应信用返回到远侧代理1720。一旦远侧代理1720发送的写入响应已经由核侧代理1710消耗,这种情况就会发生。没有事务ID或显式信用类型与写入响应信用返回相关联。
以下是一个示例信用DVM序列的步骤。该示例描述了充当互连器的远侧代理和充当高速缓存主控器的核侧代理之间的行为。在该示例中,核侧代理1710/高速缓存主控器响应于DVM操作,该DVM操作对于在表中未描述的系统中的来自另一个高速缓存主控器的互连器发起。DVM序列存在三个部分:DVM操作;DVM同步;和DVM完成。
通过远侧代理1720发起新的DVM操作命令事务序列开始DVM操作。这包括花费适当类型的单个信用。一旦核侧代理1720清除由命令事务占用的物理资源,核侧代理1710将通过将该类型的单个信用返回到远侧代理1720进行响应。没有事务ID与该信用返回相关联。然后,核侧代理1710向远侧代理1720发起作为信用事务的消息响应以确认DVM操作的接收。核侧代理1710使用来自原始DVM操作的ID。远侧代理1710将与消息响应使用的类型匹配的单个信用返回。没有事务ID与信用返回相关联。
然后,远侧代理1720发起新的DVM同步命令事务序列,花费适当的单个信用。在该示例中,来自相同主控器的所有DVM事务使用相同的信用类型。核侧代理1710将对应类型A6的单个信用返回到远侧代理1720。一旦核侧代理1710已经清除了由命令事务占用的物理资源,这种情况就会发生。没有事务ID与信用返回相关联。下一个核侧代理1710在信用事务中向远侧代理1720发起消息响应以确认DVM同步的接收。核侧代理1710使用来自原始DVM同步事务的ID。远侧代理1720返回与消息响应使用的类型匹配的单个信用类型。没有事务ID与该信用返回相关联。
核侧代理1710发起新的DVM完成命令事务序列,花费适当类型的单个信用。远侧代理1720将该类型的单个信用返回给核侧代理1710。一旦远侧代理1720清除了由命令事务占用的物理资源,这种情况就会发生。没有事务ID与信用返回相关联。远侧代理1720向代理B发起消息响应信用事务,以确认DVM完成的接收。使用来自原始DVM同步的ID。核侧代理1710返回与消息响应使用的类型匹配的单个信用。没有事务ID与该信用返回相关联。
在重置后,接口上每个信用类型的信用计数被重置为由静态接口配置确定的信用限制约束值(tieoff)。对于每个信用类型,该限制对应于服务对应的事务的从控器资源。
事务基于以下事务特性在MBA协议中排序:caddress[47:0];cmstid[11:0];和cid[11:0]。对于排除可选cmstid信号的MBA接口,为了排序规则,假设用于所有事务的常量cmstid。如由caddress和cbytecnt确定的,如果两个事务对相同字节中的一个或更多个进行操作,则事务被定义为具有重叠的地址。如图22所示对两个代理之间的信用非写入序列进行排序。如图23所示对两个代理之间的信用写入序列进行排序。
多个序列可以在相同的MBA配对接口(图17)上交错。单个序列的排序规则保持生效,并且单独序列的序列步骤可以以任何顺序交错。如果主控器正在发送全部包括数据传送的多个事务,则只要遵循单个序列规则,主控器就可以以任何顺序在不同事务之间的TDC上交错数据阶段。
主代理的排序规则总结如下。对于包括数据传送的任何事务,尽管可以在相同周期中发起,但是第一TDC数据阶段不能先于TAC。数据传送中的所有数据阶段必须基于地址以单调递增的顺序发生。只要基于地址以单调递增的顺序发起任何单个数据传送内的数据阶段,主控器就可以以对于在事务属性信道(TAC)上发出的事务的任何顺序对事务数据信道(TDC)数据阶段进行交错。主控器不能在具有相同cmstid[11:0]和cid[11:0]组合的相同MBA接口上发起多于一个命令事务,直到对于先前的cmstid/cid对已经接收响应事务或写入状态。
从代理的排序规则总结如下。不管ccredit或cid如何,从控器必须以接收事务的顺序完成至具有相同的cmstid的重叠地址的所有阻塞事务。不管ccredit或cid如何,从控器必须以接收事务的顺序完成至具有相同的cmstid的重叠地址的所有非阻塞事务。如果从控器在接收至具有相同cmstid的重叠地址的非阻塞事务之后接收阻塞事务,则不管ccredit或cid如何,从控器必须以接收事务的顺序完成两个事务。阻塞事务不能绕过至具有相同cmstid的重叠地址的非阻塞事务。如果在接收至具有相同cmstid的重叠地址的阻塞事务后,从控器接收到非阻塞事务,则从控器不需要以接收事务的顺序完成事务。允许非阻塞事务绕过至具有相同cmstid的重叠地址的阻塞事务。不管ccredit、cmstid或cid如何,从控器可以以任何顺序完成具有不重叠地址的事务。
核侧代理必须遵循以下规则以保证至存储器可共享区域的事务的正确性。不管ccredit、cmstid或cid如何,核侧代理必须维持至重叠地址的侦听命令事务和读取响应事务的顺序。
远侧代理必须遵循以下规则以保证至存储器可共享区域的事务的正确性。如果远侧代理向核侧代理发起侦听命令事务,并且随后接收具有重叠地址的阻塞命令事务,则远侧代理不能处理阻塞命令事务,直到它接收并处理来自核侧代理的侦听响应事务。
主控器不能在具有相同cmstid[11:0]和cid[11:0]组合的相同MBA接口上发起多于一个命令事务,直到对于cmstid/cid对已经接收响应事务或写入状态。
多核总线架构(MBA)协议的引入包括为所有事务类型共享相同物理信道的新技术,包括所有命令特点(读取、写入、一致性、消息)以及响应。无论事务类型如何,事务属性信道(TAC)和事务数据信道(TDC)的两个信道用于传输所有事务属性和数据。无论是对于写入命令、读取响应、一致性响应等,不管单个方向上的数据流的宽度如何,都仅需要单个数据总线。
图24示出诸如图17所示的核侧代理1710或远侧代理1720的代理2400的框图。图24示出在MBA中使用最小信号线。后端处理2401代表代理的所有电路和系统。这可以包括具有内部高速缓存的CPU、存储器、可控外围设备等。在该示例中,后端处理2401处理总线协议,包括跟踪存储在信用计数器2402中的用于传出事务和信用返回所花费的(增加的和减少的)总线信用。
图24还示出连接到后端处理2401的读取/写入存储器2403。读取/写入存储器2403代表示例实施例中所设想的受控操作的类型。在图24所示的示例中,后端处理2401可以根据总线事务从读取/写入存储器2403读取或写入读取/写入存储器2403。后端处理2401可以控制单向数据流,诸如至输出设备或来自输入设备。
在该示例中,后端处理2401经由包括主控器侧2410和从控器侧2420的前述MBA进行通信。下面进一步描述其他可行的配置。
主控器侧2410包括主控器属性信道2411、主控器数据信道2412和主控器写入响应信道2413。代理2400在经由总线2414进行通信的诸如上表5中列出的cvalid、ccredit、cid、ctype和cdata的所有信号上使用主控器属性信道2411。代理2400在经由总线2415通信的诸如上表12中列出的dvalid、did、dtype、dlast和ddata的所有信号上使用主控器数据信道2412。代理2400在经由总线2416通信的诸如上表15中列出的wvalid、wid和wstatus的所有信号上使用主控器写入响应信道2413。
从控器侧2420包括从控器属性信道2421、从控器数据信道2422和从控器写入响应信道2423。代理2400在经由总线2424通信的如在上表5中列出的creturn信号上使用从控器属性信道2421。代理2400在经由总线2425进行通信的诸如上表12中列出的dvalid、did、dtype、dlast和ddata的所有信号上使用从控器数据信道2412。代理2400在经由总线2426进行通信的如上表15中列出的wreturn信号上使用从控器写入响应信道2423。
图24示出包括作为主设备和从设备两者操作所需的所有部件的代理2400。在MBA中,代理通常将以两个角色进行操作。例如,与外部存储器代理通信的代理将需要充当主控器和从控器两者。作为主控器,这样的代理需要花费信用以开始读取或写入,供应读取或写入开始地址和数据长度,如果事务是写入则供应数据,并接收信用返回。作为从控器,这样的代理需要接受信用,接受存储器响应于读取事务供应的数据并返回信用。该示例假定双向数据流。该示例通常需要图24中所示的所有部件。
存在需要少于图24的全部部件的其他示例。考虑耦合到只写外围设备诸如输出设备的代理。这样的代理需要花费信用以开始写入,如果需要,则供应写入开始地址和数据长度,供应写入数据并接收信用返回。这样的代理还可以产生对只写外围设备的写入响应。这样的代理将不需要是从设备,因为只写外围设备将不返回数据,并且因此将不需要控制总线事务。这样的代理将需要主控器属性信道2411、主控器数据信道2412和主控器写入响应信道2423。
考虑耦合到只读外围设备诸如输入设备的代理的另一示例。这样的代理需要花费信用以开始读取和接收信用返回。这样的代理需要作为从控器操作以接受信用、接受由存储器响应于读取事务供应的数据并返回信用。这样的代理将需要主控器属性信道2412、从控器属性信道2421、从控器数据信道2422和从控器写入响应信道2423。该代理将不需要主控器数据信道2412或主控器写入响应信道2413。
其他解决方案可以共享不同命令类型之间的若干信号(例如,读取和写入可以共享地址引脚)。通常这些其他解决方案分离读取和写入数据。这是在大数据宽度诸如512位和更大的数据宽度的线路拥塞的最大来源。不管事务类型如何,MBA协议跨相同引脚传输所有事务,引起最大的线路共享和最小的物理开销。
MBA协议仅需要两个信道从主控器向从控器发送事务。这些是:事务属性信道(TAC);和事务数据信道(TDC)。TAC传输所有事务属性,包括地址、存储器属性和事务类型。TDC在一个或更多个阶段中传输数据。因为所有事务类型使用相同的两个信道,所以示例实施例需要最少数量的物理线路传输全范围的不同事务类型。
由MBA协议提供的信道共享引起对于具有多个主控器的大互连器和从设备的物理线路拥塞显著减小。这引起更小的面积和更低的功率、更高的性能和更短的物理封闭设计周期。
Claims (21)
1.一种数据处理系统,包括:
总线接口,其包括多个事务属性信道即多个TAC以及多个事务数据信道即多个TDC,所述TAC是信用信道,所述TDC是非信用信道;
第一逻辑单元,其耦合到所述总线接口并且包括第一信用计数器以指示多个信用类型中每一个的相应计数,其中每个信用类型对应于所述第一逻辑单元被配置以通过所述总线接口启动的多个事务类型中的相应一个,并且其中所述多个事务类型包括至少第一事务类型,其包括来自所述第一逻辑单元的数据传输;
耦合到所述总线接口的第二逻辑单元;
其中所述第一逻辑单元被配置成操作为主代理,以通过在所述多个TAC的第一TAC上发送对应于第一事务的事务属性信息,使得所述第一信用计数器将对应于所述第一事务类型的信用类型的计数递减,并且在所述多个TDC的第一TDC上发送对应于第一事务的数据信息来启动所述第一事务类型的第一事务;以及
其中所述第二逻辑单元被配置成操作为从代理,以通过在所述第一TAC上接收对应于所述第一事务的事务属性信息并且在所述第一TDC上接收对应于所述第一事务的数据信息来接受所述第一事务。
2.根据权利要求1所述的数据处理系统,其中所述事务属性信息包括指示与所述第一事务关联的信用类型的信用类型信号。
3.根据权利要求2所述的数据处理系统,其中所述信用类型信号是带宽等于所述多个信用类型的总数量的多位信号。
4.根据权利要求1所述的数据处理系统,其中在对应于所述第一事务的信用类型的计数大于0时,所述第二逻辑单元在操作为所述从代理时无条件地接受所述第一事务。
5.根据权利要求1所述的数据处理系统,其中对应于所述第一事务的所述事务属性信息包括指示所述第一事务的标识符的事务标识信号即事务ID信号。
6.根据权利要求5所述的数据处理系统,其中对应于所述第一事务的所述数据信息包括数据ID信号,其具有等于所述第一事务的标识符的值。
7.根据权利要求1所述的数据处理系统,其中所述第一事务类型是写操作。
8.根据权利要求7所述的数据处理系统,其中所述总线接口包括多个写响应信道,所述写响应信道是信用信道,并且其中所述第二逻辑单元被配置成,响应于完成所述第一事务的处理,利用所述多个写响应信道的第一写响应信道发送第一写响应到所述第一逻辑单元。
9.根据权利要求8所述的数据处理系统,其中所述第一逻辑单元被配置为,响应于在所述第一写响应信道上接收所述第一写响应,使得所述第一信用计数器将对应于所述第一事务类型的信用类型的计数递增。
10.根据权利要求1所述的数据处理系统,其中所述第一逻辑单元是所述数据处理系统的第一处理单元并且所述第二逻辑单元是所述数据处理系统的第二处理单元。
11.根据权利要求1所述的数据处理系统,其中所述总线接口、所述第一逻辑单元和所述第二逻辑单元布置在单个集成电路管芯上。
12.一种数据处理系统,其包括:
总线接口,其包括多个事务属性信道即多个TAC,所述TAC是信用信道;
第一逻辑单元,其耦合到所述总线接口并且包括第一信用计数器以指示多个信用类型中每一个的相应计数,其中每个信用类型对应于所述第一逻辑单元被配置以通过所述总线接口启动的多个事务类型中的相应一个,并且其中所述第一逻辑单元被配置成操作为主代理,以通过下列步骤来启动所述多个事务类型的第一事务类型的第一事务:
在所述多个TAC的第一TAC上发送对应于所述第一事务的事务属性信息,所述事务属性信息包括指示与所述第一事务关联的信用类型的信用类型信号,其中所述信用类型信号具有等于所述多个信用类型的总数量的多个位;以及
将对应于所述第一事务类型的信用类型的计数递减以反映与所述第一事务关联的信用类型的一个信用的花费。
13.根据权利要求12所述的数据处理系统,其中:
所述信用类型信号的每个位指示0或1的逻辑值;以及
对应于与所述第一事务关联的信用类型的所述信用类型信号的位指示逻辑值1;以及
所述信用类型信号的所有其他位指示逻辑值0。
14.根据权利要求12所述的数据处理系统,其中对应于所述第一事务的所述事务属性信息还包括事务类型信号,其将所述第一事务类型指示为读取事务、写入事务、侦听事务、维护事务、消息事务以及响应事务中的一个。
15.根据权利要求14所述的数据处理系统,其中所述总线接口包括多个事务数据信道即多个TDC,所述TDC是非信用信道,并且当第一事务类型是写入事务时,所述第一逻辑单元在所述多个TDC的第一TDC上将对应于所述第一事务的数据信息发送为所述第一事务的部分。
16.根据权利要求15所述的数据处理系统,其中在所述第一事务类型是写入事务时,对应于所述第一事务的所述事务属性信息包括事务标识符并且对应于所述第一事务的所述数据信息包括数据标识符,所述数据标识符匹配所述事务标识符以将所述数据信息与所述事务属性信息关联。
17.一种数据处理系统,其包括:
第一总线代理;
第二总线代理:以及
耦合在所述第一总线代理和所述第二总线代理之间的总线接口,其包括从所述第一总线代理到所述第二总线代理的信用属性信道以及从所述第一总线代理到所述总线代理的非信用数据信道,其中:
所述第一总线代理包括可操作用于跟踪所述信用属性信道的信用的计数器,其中所述信用与多个信用类型关联;以及
所述第一总线代理可操作用于:
利用所述计数器确定所述信用属性信道是否具有足够的与第一事务类型对应的多个信用类型中的第一信用类型的信用来执行事务;以及
响应于所述信用属性信道具有足够的信用,通过在所述信用属性信道上将所述事务的属性传送到所述第二总线代理;以及在所述非信用数据信道上将所述事务的数据传送到所述第二总线代理来执行所述事务。
18.根据权利要求17所述的数据处理系统,其中
所述事务是第一事务;以及
所述第一总线代理可操作用于:
利用所述计数器确定所述信用属性信道是否具有足够的第二信用类型的信用以执行第二事务,所述第二信用类型不同于所述第一信用类型;以及
响应于所述信用属性信道具有足够的所述第二信用类型的信用,通过在所述信用属性信道上将所述属性传送到所述第二总线代理来执行所述第二事务,使得所述属性对应于所述第一事务和所述第二事务。
19.根据权利要求18所述的数据处理系统,其中所述属性包括位向量,所述位向量包括与所述第一事务的所述第一信用类型关联的第一位以及与所述第二事务的所述第二信用类型关联的第二位。
20.根据权利要求17所述的数据处理系统,其中:
所述信用属性信道是第一信用属性信道;
所述总线接口包括从所述第二总线代理到所述第一总线代理的第二信用属性信道;以及
所述第二总线代理可操作用于在执行所述事务之后将所述第一信用类型的信用返回到所述第一总线代理。
21.根据权利要求17所述的数据处理系统,其中:
所述总线接口包括从所述第二总线代理至所述第一总线代理的写返回信道;
所述第二总线代理可操作用于在所述写返回信道上将对所述事务的响应传输到所述第一总线代理;以及
对所述事务的所述响应包括到所述第一总线代理的所述第一信用类型的信用的返回。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/530,203 | 2014-10-31 | ||
US14/530,203 US9904645B2 (en) | 2014-10-31 | 2014-10-31 | Multicore bus architecture with non-blocking high performance transaction credit system |
PCT/US2015/058688 WO2016070197A1 (en) | 2014-10-31 | 2015-11-02 | Multicore bus architecture with non-blocking high performance transaction credit system |
CN201580058126.7A CN107111582B (zh) | 2014-10-31 | 2015-11-02 | 具有非阻塞高性能事务信用系统的多核总线架构 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058126.7A Division CN107111582B (zh) | 2014-10-31 | 2015-11-02 | 具有非阻塞高性能事务信用系统的多核总线架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506534A CN111506534A (zh) | 2020-08-07 |
CN111506534B true CN111506534B (zh) | 2023-09-26 |
Family
ID=55852813
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010315539.1A Active CN111506534B (zh) | 2014-10-31 | 2015-11-02 | 具有非阻塞高性能事务信用系统的多核总线架构 |
CN201580058126.7A Active CN107111582B (zh) | 2014-10-31 | 2015-11-02 | 具有非阻塞高性能事务信用系统的多核总线架构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058126.7A Active CN107111582B (zh) | 2014-10-31 | 2015-11-02 | 具有非阻塞高性能事务信用系统的多核总线架构 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9904645B2 (zh) |
EP (1) | EP3213219A4 (zh) |
JP (3) | JP6746572B2 (zh) |
CN (2) | CN111506534B (zh) |
WO (1) | WO2016070197A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606596B2 (en) | 2013-07-15 | 2020-03-31 | Texas Instruments Incorporated | Cache preload operations using streaming engine |
US11249759B2 (en) | 2013-07-15 | 2022-02-15 | Texas Instruments Incorporated | Two-dimensional zero padding in a stream of matrix elements |
US10649775B2 (en) | 2013-07-15 | 2020-05-12 | Texas Instrum Ents Incorporated | Converting a stream of data using a lookaside buffer |
US11256508B2 (en) | 2013-07-15 | 2022-02-22 | Texas Instruments Incorporated | Inserting null vectors into a stream of vectors |
US10949206B2 (en) | 2013-07-15 | 2021-03-16 | Texas Instruments Incorporated | Transposing a matrix using a streaming engine |
US10942741B2 (en) | 2013-07-15 | 2021-03-09 | Texas Instruments Incorporated | Storage organization for transposing a matrix using a streaming engine |
US11231929B2 (en) | 2013-07-15 | 2022-01-25 | Texas Instruments Incorporated | One-dimensional zero padding in a stream of matrix elements |
US11113062B2 (en) | 2013-07-15 | 2021-09-07 | Texas Instruments Incorporated | Inserting predefined pad values into a stream of vectors |
US10963254B2 (en) | 2013-07-15 | 2021-03-30 | Texas Instruments Incorporated | Mechanism to queue multiple streams to run on streaming engine |
US10599433B2 (en) | 2013-07-15 | 2020-03-24 | Texas Instruments Incorported | Cache management operations using streaming engine |
US11461096B2 (en) | 2019-05-24 | 2022-10-04 | Texas Instruments Incorporated | Method and apparatus for vector sorting using vector permutation logic |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9904645B2 (en) * | 2014-10-31 | 2018-02-27 | Texas Instruments Incorporated | Multicore bus architecture with non-blocking high performance transaction credit system |
US9934184B1 (en) * | 2015-09-25 | 2018-04-03 | Amazon Technologies, Inc. | Distributed ordering system |
US10255210B1 (en) | 2016-03-01 | 2019-04-09 | Amazon Technologies, Inc. | Adjusting order of execution of a target device |
US10530959B2 (en) * | 2018-04-12 | 2020-01-07 | Lexmark International, Inc. | Communication between an image forming device and a replaceable supply item |
US10649702B2 (en) | 2018-04-12 | 2020-05-12 | Lexmark International, Inc. | Communication between an image forming device and a replaceable supply item |
US11042468B2 (en) | 2018-11-06 | 2021-06-22 | Texas Instruments Incorporated | Tracking debug events from an autonomous module through a data pipeline |
CN109783423B (zh) * | 2019-01-25 | 2021-05-28 | 上海兆芯集成电路有限公司 | 环形总线以及额度分配方法 |
US11113208B2 (en) | 2019-05-22 | 2021-09-07 | Texas Instruments Incorporated | Pseudo-first in, first out (FIFO) tag line replacement |
US11171804B2 (en) | 2019-05-23 | 2021-11-09 | Texas Instruments Incorporated | Common bus data flow for serially chained devices |
US11329844B2 (en) | 2019-05-23 | 2022-05-10 | Texas Instruments Incorporated | Selected mode signal forwarding between serially chained devices |
US10904478B2 (en) | 2019-05-23 | 2021-01-26 | Texas Instruments Incorporated | Selected forwarding between serially chained devices |
US11252108B2 (en) * | 2019-06-19 | 2022-02-15 | Nxp Usa, Inc. | Controller for ordering out-of-order transactions in SoC |
KR102208497B1 (ko) * | 2020-07-01 | 2021-01-27 | 주식회사 파두 | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
US20230030679A1 (en) * | 2021-07-27 | 2023-02-02 | Advanced Micro Devices, Inc. | Dispatch bandwidth of memory-centric requests by bypassing storage array address checking |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603081A (en) * | 1993-11-01 | 1997-02-11 | Telefonaktiebolaget Lm Ericsson | Method for communicating in a wireless communication system |
US5633867A (en) * | 1994-07-01 | 1997-05-27 | Digital Equipment Corporation | Local memory buffers management for an ATM adapter implementing credit based flow control |
US5432824A (en) * | 1994-07-06 | 1995-07-11 | Mitsubishi Electric Research Laboratories, Inc. | Credit/rate-based system for controlling traffic in a digital communication network |
US5483526A (en) * | 1994-07-20 | 1996-01-09 | Digital Equipment Corporation | Resynchronization method and apparatus for local memory buffers management for an ATM adapter implementing credit based flow control |
US5515359A (en) * | 1994-08-26 | 1996-05-07 | Mitsubishi Electric Research Laboratories, Inc. | Credit enhanced proportional rate control system |
US5453982A (en) * | 1994-08-29 | 1995-09-26 | Hewlett-Packard Company | Packet control procedure between a host processor and a peripheral unit |
US5511076A (en) * | 1994-11-07 | 1996-04-23 | Digital Equipment Corporation | Method and apparatus to efficiently reuse virtual connections by means of chaser packets |
DE69614291T2 (de) * | 1995-03-17 | 2001-12-06 | Lsi Logic Corp | (n+i) Ein/Ausgabekanälesteuerung, mit (n) Datenverwaltern, in einer homogenen Software-Programmierbetriebsumgebung |
US5737535A (en) * | 1995-06-07 | 1998-04-07 | Emc Corporation | Flow control circuit for networked communications system including arrangement for reducing overhead at the beginning of a communications session by enabling message transmission before receiving flow control information |
US5825748A (en) * | 1997-04-08 | 1998-10-20 | International Business Machines Corporation | Credit-based flow control checking and correction system |
US6044406A (en) * | 1997-04-08 | 2000-03-28 | International Business Machines Corporation | Credit-based flow control checking and correction method |
JPH11168524A (ja) * | 1997-12-05 | 1999-06-22 | Canon Inc | 通信制御装置および通信制御装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 |
US6594701B1 (en) * | 1998-08-04 | 2003-07-15 | Microsoft Corporation | Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data |
US7103672B1 (en) | 2000-05-01 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method and apparatus for improving system performance through remote credit management |
US7453878B1 (en) * | 2000-07-21 | 2008-11-18 | Silicon Graphics, Inc. | System and method for ordering of data transferred over multiple channels |
US7165094B2 (en) * | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
DE60226627D1 (de) * | 2001-08-24 | 2008-06-26 | Intel Corp | Ehörige verfahren um datenintegrität zu verwalten |
US20030133463A1 (en) * | 2001-12-31 | 2003-07-17 | Globespanvirata Incorporated | System and method for scheduling transmit messages using credit-based flow control |
US7911952B1 (en) | 2002-07-12 | 2011-03-22 | Mips Technologies, Inc. | Interface with credit-based flow control and sustained bus signals |
US7310309B1 (en) * | 2002-07-17 | 2007-12-18 | Foundry Networks, Inc. | Dynamic rate limiting adjustment |
US6760793B2 (en) * | 2002-07-29 | 2004-07-06 | Isys Technologies, Inc. | Transaction credit control for serial I/O systems |
US20050063308A1 (en) * | 2003-09-24 | 2005-03-24 | Wise Jeffrey L. | Method of transmitter oriented link flow control |
US20050063305A1 (en) * | 2003-09-24 | 2005-03-24 | Wise Jeffrey L. | Method of updating flow control while reverse link is idle |
JP5218377B2 (ja) * | 2003-11-10 | 2013-06-26 | 株式会社リコー | 画像形成システム |
US7480730B2 (en) * | 2004-04-08 | 2009-01-20 | Nortel Networks Limited | Credit recovery in a credit based flow control system |
US20060053258A1 (en) | 2004-09-08 | 2006-03-09 | Yen-Cheng Liu | Cache filtering using core indicators |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7493426B2 (en) * | 2005-01-31 | 2009-02-17 | International Business Machines Corporation | Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control |
US7136954B2 (en) * | 2005-01-31 | 2006-11-14 | International Business Machines Corporation | Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism |
US7461190B2 (en) * | 2005-08-11 | 2008-12-02 | P.A. Semi, Inc. | Non-blocking address switch with shallow per agent queues |
US7675929B1 (en) * | 2006-01-03 | 2010-03-09 | Emc Corporation | Method and system for managing data flow in a data transmission system |
US7643504B2 (en) * | 2006-11-29 | 2010-01-05 | Applied Micro Circuits Corporation | Credit based flow control in an asymmetric channel environment |
KR100848326B1 (ko) * | 2006-12-19 | 2008-07-24 | 한국전자통신연구원 | 지상파 dmb 제한수신 시스템에서의 송수신장치 및 방법 |
US7912003B2 (en) * | 2007-06-27 | 2011-03-22 | Microsoft Corporation | Multipath forwarding algorithms using network coding |
JP2009075942A (ja) * | 2007-09-21 | 2009-04-09 | Fujifilm Corp | Dmaコントローラ |
CN101753388B (zh) * | 2008-11-28 | 2011-08-31 | 中国科学院微电子研究所 | 适用于多核处理器片上和片间扩展的路由及接口装置 |
US8205111B2 (en) * | 2009-01-02 | 2012-06-19 | Intel Corporation | Communicating via an in-die interconnect |
JP5212196B2 (ja) * | 2009-03-13 | 2013-06-19 | 株式会社リコー | データ送信装置、情報処理装置、及び動作周波数制御方法 |
US8195858B1 (en) * | 2009-07-28 | 2012-06-05 | Nvidia Corporation | Managing conflicts on shared L2 bus |
US8321618B1 (en) * | 2009-07-28 | 2012-11-27 | Nvidia Corporation | Managing conflicts on shared L2 bus |
US8307136B2 (en) * | 2009-08-03 | 2012-11-06 | National Instruments Corporation | Data movement system and method |
US8391302B1 (en) * | 2009-12-03 | 2013-03-05 | Integrated Device Technology, Inc. | High-performance ingress buffer for a packet switch |
US8295293B1 (en) * | 2009-12-16 | 2012-10-23 | Integrated Device Technology, Inc. | Predictive flow control for a packet switch |
US20120150615A1 (en) * | 2010-12-14 | 2012-06-14 | Isaacson Thomas M | System and method for an application programming interface for processing gifts |
US8775700B2 (en) * | 2011-09-29 | 2014-07-08 | Intel Corporation | Issuing requests to a fabric |
FR2982049B1 (fr) * | 2011-10-28 | 2014-02-28 | Kalray | Gestion de flux dans un reseau sur puce |
US8924612B2 (en) * | 2012-04-04 | 2014-12-30 | Arm Limited | Apparatus and method for providing a bidirectional communications link between a master device and a slave device |
WO2014065873A1 (en) * | 2012-10-22 | 2014-05-01 | Jeff Willey | Control messaging in multislot link layer flit |
US20160139807A1 (en) * | 2013-07-09 | 2016-05-19 | Hewlett-Packard Development Company, L.P. | Write flow control for memory modules that include or interface with non-compliant memory technologies |
US9880961B2 (en) * | 2013-11-27 | 2018-01-30 | Arm Limited | Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry |
US9477631B2 (en) * | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
US9755983B1 (en) * | 2014-10-22 | 2017-09-05 | Netronome Systems, Inc. | Minipacket flow control |
US9904645B2 (en) * | 2014-10-31 | 2018-02-27 | Texas Instruments Incorporated | Multicore bus architecture with non-blocking high performance transaction credit system |
US9954792B2 (en) * | 2014-12-20 | 2018-04-24 | Intel Corporation | Shared flow control credits |
US9785359B2 (en) * | 2016-02-26 | 2017-10-10 | Intel Corporation | Sending packets using optimized PIO write sequences without sfences and out of order credit returns |
US20200076742A1 (en) * | 2018-08-28 | 2020-03-05 | Hewlett Packard Enterprise Development Lp | Sending data using a plurality of credit pools at the receivers |
-
2014
- 2014-10-31 US US14/530,203 patent/US9904645B2/en active Active
-
2015
- 2015-11-02 CN CN202010315539.1A patent/CN111506534B/zh active Active
- 2015-11-02 JP JP2017523883A patent/JP6746572B2/ja active Active
- 2015-11-02 CN CN201580058126.7A patent/CN107111582B/zh active Active
- 2015-11-02 EP EP15856111.8A patent/EP3213219A4/en not_active Ceased
- 2015-11-02 WO PCT/US2015/058688 patent/WO2016070197A1/en active Application Filing
-
2018
- 2018-02-23 US US15/903,183 patent/US10311007B2/en active Active
-
2019
- 2019-06-04 US US16/430,748 patent/US10795844B2/en active Active
-
2020
- 2020-08-04 JP JP2020132675A patent/JP6969853B2/ja active Active
- 2020-09-24 US US17/030,518 patent/US20210011872A1/en active Pending
-
2021
- 2021-10-26 JP JP2021175061A patent/JP7227680B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US10311007B2 (en) | 2019-06-04 |
JP6969853B2 (ja) | 2021-11-24 |
JP2020191122A (ja) | 2020-11-26 |
US20160124883A1 (en) | 2016-05-05 |
JP2022017393A (ja) | 2022-01-25 |
US20190354500A1 (en) | 2019-11-21 |
US9904645B2 (en) | 2018-02-27 |
US10795844B2 (en) | 2020-10-06 |
JP2018502362A (ja) | 2018-01-25 |
EP3213219A4 (en) | 2018-06-20 |
CN111506534A (zh) | 2020-08-07 |
EP3213219A1 (en) | 2017-09-06 |
JP6746572B2 (ja) | 2020-08-26 |
US20210011872A1 (en) | 2021-01-14 |
WO2016070197A1 (en) | 2016-05-06 |
CN107111582B (zh) | 2020-04-28 |
JP7227680B2 (ja) | 2023-02-22 |
US20180293199A1 (en) | 2018-10-11 |
CN107111582A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506534B (zh) | 具有非阻塞高性能事务信用系统的多核总线架构 | |
US11803505B2 (en) | Multicore bus architecture with wire reduction and physical congestion minimization via shared transaction channels | |
US11663135B2 (en) | Bias-based coherency in an interconnect fabric | |
US10437739B2 (en) | Low-latency accelerator | |
US8732416B2 (en) | Requester based transaction status reporting in a system with multi-level memory | |
US9372808B2 (en) | Deadlock-avoiding coherent system on chip interconnect | |
US11204867B2 (en) | PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory | |
JP4106016B2 (ja) | 入出力(i/o)通信のハードウェア・アクセラレーションを実現するデータ処理システム | |
JP5706588B2 (ja) | メモリ要求を行う方法、装置、およびコンピュータ・プログラム製品(システム・メモリへの効率的なメタビットの記憶) | |
US11537520B2 (en) | Remote atomic operations in multi-socket systems | |
CN106716949B (zh) | 用于管理高速缓存的方法和装置 | |
US6622218B2 (en) | Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system | |
WO2017112192A1 (en) | Minimizing snoop traffic locally and across cores on a chip multi-core fabric | |
WO2019067115A1 (en) | APPARATUS AND METHOD FOR MONITORING MULTI-LEVEL CALL MEMORY REQUEST |
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 |