CN106815176B - 用于经由柔性寄存器访问总线传输访问请求的系统和方法 - Google Patents

用于经由柔性寄存器访问总线传输访问请求的系统和方法 Download PDF

Info

Publication number
CN106815176B
CN106815176B CN201611091645.6A CN201611091645A CN106815176B CN 106815176 B CN106815176 B CN 106815176B CN 201611091645 A CN201611091645 A CN 201611091645A CN 106815176 B CN106815176 B CN 106815176B
Authority
CN
China
Prior art keywords
request
access
completion
register
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611091645.6A
Other languages
English (en)
Other versions
CN106815176A (zh
Inventor
X·宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Marvell Asia Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Publication of CN106815176A publication Critical patent/CN106815176A/zh
Application granted granted Critical
Publication of CN106815176B publication Critical patent/CN106815176B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及用于经由柔性寄存器访问总线传输访问请求的系统和方法。这里所描述的一些实施例提供了一种用于经由柔性寄存器访问总线传输访问请求的方法。可以接收用以访问集成电路上的资源的访问请求。可以将访问请求转译为具有符合柔性寄存器访问总线的数据格式的请求分组。可以基于与请求分组相关联的目标寄存器,确定用于请求分组的路由路径。可以经由路由路径将请求分组传输至目标寄存器。可以将请求分组内的信息转译为用于目标寄存器的本地访问协议。然后,可以基于本地访问协议,经由目标寄存器来获得对资源的访问。

Description

用于经由柔性寄存器访问总线传输访问请求的系统和方法
相关申请的交叉引用
本公开要求2015年12月1日提交的美国临时专利申请No. 62/261,640的权益,其通过引用整体合并于此。
技术领域
本公开涉及片上系统(SOC)芯片上的数据传输总线,更具体地涉及柔性寄存器访问总线。
背景技术
这里提供的背景描述用于总体上呈现本公开的上下文。本发明人的工作,在本背景技术部分所描述的工作的程度上,以及在提交时不能以任何方式作为现有技术的描述的方面,不被明确地或隐含地承认是针对本公开的现有技术。
片上系统(SOC)是将计算机或其他电子系统的所有部件集成到单个芯片中的集成电路。例如,SOC包括在同一单个芯片上的数字、模拟、混合信号和射频功能。SOC通常将具有不同数据类型的不同的网络协议(IP)部件集成,并且每个IP部件通常具有其自己的寄存器模块,该寄存器模块用于配置和监测IP部件自身。在这种情况下,当SOC托管(host)大量的IP部件并且每个IP部件需要单独的寄存器模块时,SOC可能不具有足够的物理空间来经由常规总线布置所有的部件及其相应寄存器模块,因为连接到常规总线的设备的数目受限。因此,尺寸挑战可能限制SOC可以托管的部件的数目,并且因此SOC的功能性能受约束。此外,后端处的时序收敛可以难以实现,因为在总线和SOC上的IP部件之间的路径可能很长。当大量的IP 部件被连接到串行总线时,可能经历显著的时延,这对SOC的性能造成损害。
发明内容
这里所描述的一些实施例提供了一种用于经由柔性寄存器访问总线传输访问请求的方法。访问请求可以被接收以访问集成电路上的资源。访问请求可以被转译为具有符合柔性寄存器访问总线的数据格式的请求分组。可以基于与请求分组相关联的目标寄存器来确定用于请求分组的路由路径。请求分组可以经由路由路径传输至目标寄存器。请求分组内的信息可以被转译为用于目标寄存器的本地访问协议。然后,基于本地访问协议经由目标寄存器可以获得对资源的访问。
在一些实现方式中,请求分组包括标识目标寄存器的标识符和具有与本地访问协议有关的数据的应用分组。
在一些实现方式中,路由路径包括请求分组所通过的多个互连的请求单元,并且多个互连的请求单元中的至少一个被连接到目标寄存器。
在一些实现方式中,来自多个请求单元中的每个请求单元具有用于传输请求分组的第一通信端口和用于传输清除信号的第二通信端口。
在一些实现方式中,每个请求单元包括标识相应请求单元在多个请求单元的拓扑中的位置的标识编号。
在一些实现方式中,请求分组包括标识编号的信息,并且路由路径基于标识编号来确定。
在一些实现方式中,可以经由目标寄存器来生成请求清除信号,以指示目标寄存器准备好接收下一请求分组。
在一些实现方式中,经由目标寄存器来生成完成分组,并且完成分组经由完成节点被路由至完成缓冲器以指示访问请求完成。
在一些实现方式中,完成分组包括标识与访问请求相关联的完成分组的编号。
在一些实现方式中,柔性寄存器访问总线连接到多个寄存器,多个寄存器中的每一个具有相应的本地访问协议。可以接收经由集成电路上的不同的目标寄存器来访问不同的资源的下一访问请求,并且可以经由柔性寄存器访问总线将下一访问请求转换为符合与不同的目标寄存器相关联的不同的本地访问协议。
这里所描述的一些实施例进一步提供了一种用于经由柔性寄存器访问总线来传输访问请求的装置。该装置包括桥部件和请求节点。桥部件被配置为接收用以访问集成电路上的资源的访问请求,将访问请求转译为具有符合柔性寄存器访问总线的数据格式的请求分组,以及基于与请求分组相关联的目标寄存器来确定用于请求分组的路由路径。请求节点被配置为将请求分组路由到目标寄存器。目标寄存器被配置为:将请求分组内的信息转译为本地访问协议,并且基于本地访问协议来提供对资源的访问。
附图说明
在与附图相结合考虑以下详细描述时,本公开的另外的特征、其本质和各种优点将变得明显,在附图中同样的附图标记通篇指代同样的部分,并且其中:
图1是具有现有内部控制总线的示例SOC系统100的框图;
图2提供了根据这里所描述的一些实施例的具有柔性寄存器访问总线(FRAB)的示例SOC系统100的框图;
图3提供了图示根据这里所描述的一些实施例的FRAB 205的示例结构300的框图;
图4是图示根据这里所描述的一些实施例的FRAB 205的节点400的示例结构的框图;
图5是图示根据这里所描述的一些实施例的请求节点401的示例结构的框图;
图6是图示根据这里所描述的一些实施例的完成节点403的示例结构的框图;
图7提供了图示根据这里的一些实施例的经由FRAB将访问请求路由到目标IP寄存器的方面的示例逻辑流程图;以及
图8提供了图示根据这里的一些实施例的完成来自FRAB的访问请求的方面的示例逻辑流程图。
具体实施方式
本公开描述用于片上系统(SOC)上的柔性寄存器访问总线 (FRAB)的方法和系统。在一些实施例中,FRAB可以构建于包括多个单元模块的可扩展结构上,如图3-图4进一步图示的。FRAB架构中的每个单元(例如,请求单元或完成单元)可以被连接到三个其他块,即,另一请求单元、另一完成单元或IP寄存器模块。互连的结构可以减少用于时序收敛的后端努力。以这种方式,FRAB可以提供对位于相当大的芯片中的不同IP寄存器块的寄存器访问的可行性。
在一个实施例中,标识符(ID)被分配给请求单元和完成单元中的每一个,以促进访问请求通过FRAB的路由。FRAB拓扑以及如何将ID分配给不同的请求单元或完成单元可以通过IP寄存器的数目和分布(例如,平面布置图)来确定。如图3-图4所示,请求链和完成链两者分离并且去耦合,使得FRAB可以减小慢的IP寄存器模块的影响。请求/完成分组通过主链和子链传送。这可以减小针对请求和完成两者的时延。在一些实现方式中,可以扩展子链,以具有附加的子链,并因而可以扩展链层级的数目。链层级的数目可以对应于ID字段中的ID部分的数目。
在一些实现方式中,可以扩展相同链层级中的请求单元/完成单元的数目,其确定用于该链层级的对应的ID部分的宽度,如图3所进一步图示的。所有链基于通用请求单元或完成单元模块。以这种方式, FRAB的实现和扩展可以仅仅通过添加或移除请求单元或完成单元而是柔性的。柔性寄存器访问基于寄存器地址、ID和TAG的组合。例如,请求分组中的应用分组可以基于用于特定IP的寄存器访问协议而被柔性指定。以这种方式,不同的IP寄存器模块可以被连接至相同的FRAB。
在一个实现方式中,IP寄存器模块可以使其自身的请求单元作为缓冲器,以便存储请求分组。这样的请求单元的数目可以被扩展以改善性能。以这种方式,可以改进流水线操作,并且在主链或子链中减小阻断概率。对于两个请求单元(或两个完成单元)之间的时序关键路径,任意数目的请求单元(或完成单元)可以作为缓冲器添加到相应的路径以放松时序,而不显著影响连接质量。
图1是具有现有内部控制总线的示例SOC系统100的框图。如图1所示,SOC主机系统101采用内部控制总线105(诸如先进可扩展接口(AXI)总线、外围部件互连(PCI)总线102等)来提供使 SOC上的各种部件访问来自主机系统101的软件或者访问来自嵌入式中央处理单元103(CPU)或编程加载器104的固件的访问途径。
在一个实施例中,各种IP寄存器模块110a-110n可以被连接至单个芯片中的这种内部控制总线105。然而,当SOC集成大量的IP部件时,内部总线105的容量可能限制增加的大量的集成部件。例如,内部总线105可以仅能够托管有效数目的IP部件,即,IP寄存器部件。此外,当并行总线用于内部控制总线105时,对于后端系统而言,可能难以实现时序收敛。此外,当串行总线用于内部控制总线105时,可能经历长的时延。
图2提供了根据这里所描述的一些实施例的具有柔性寄存器访问总线(FRAB)的示例SOC系统100的框图。如图2所示,FRAB被用作SOC内部控制总线105的一部分,并且IP寄存器模块110a-110n 被连接至FRAB架构205。以这种方式,IP寄存器模块110a-110n可以经由FRAB 205与嵌入式CPU 103或编程加载器104通信。
图3提供了图示根据这里所描述的一些实施例的FRAB 205的示例结构300的框图。在一些实施例中,如图2所示,用作内部控制总线105的AXI控制总线可以用于连接主机PCIe102、嵌入式CPU 103 和加载器104。连接至AXI控制总线105的FRAB 205可以操作为 AXI从接口301。FRAB也可以连接至任何其他控制总线。
来自AXI控制总线105的寄存器访问请求可以由主机系统101、嵌入式CPU 103或加载器104等来发出。如图3所示,寄存器访问请求首先发送到AXI至FRAB桥330。AXI至FRAB桥330可以具有三个主模块:请求形成模块303、查找表302和完成缓冲器316。
请求形成模块303可以从访问请求获取请求信息,并且将寄存器访问请求映射到FRAB请求中。例如,只有在所有请求分组字段可用时,字段“reqvalid”才被确立。请求节点311a中的请求单元是连接到请求形成模块303的主链中的第一请求单元。当请求单元为空并且请求分组可用时,确立“reqclr”信号。然后,请求分组被移动到FRAB 链的下一循环中。用于该请求的跟踪信息可以被生成并转发至查找表块302。
可以针对每个新的FRAB请求生成TAG,例如,分配给给定FRAB 请求以将针对该请求的完成与其他请求区分的编号。只有在存在空闲的TAG可用的情况下,才可以生成新的FRAB请求。针对读请求和写请求两者,可以共享TAG条目。
查找表302连接在请求信息模块303和完成缓冲器316之间,并且保持访问请求的跟踪信息。查找表302可以监测与先前发出的 FRAB请求对应的FRAB完成。在一些实现方式中,查找表302可以具有有限数目的条目。每个条目可以对应于TAG编号。当在查找表中没有剩下空闲的条目时,FRAB架构可以停止接受任何另外的请求。所占据的条目在其请求已经在AXI从接口301中完成时被释放。
针对完成读取状态和来自FRAB链(例如,见完成节点315a-315n) 的完成状态,共享完成缓冲器316。完成缓冲器316具有等于查找表条目的数目的深度。每个完成缓冲器条目可以对应于TAG编号和查找表条目。
当在完成缓冲器316中接收到与FRAB请求相关的所有完成数据时,生成对应的AXI从响应301。在完成AXI响应之后,TAG、查找表条目和完成缓冲器资源可以被释放。来自FRAB的完成状态被映射到AXI控制总线300的响应状态。
在一个实现方式中,当寄存器访问请求被映射到FRAB请求时,请求分组然后通过包括请求节点311a-311n的请求节点链被传输到其目标IP寄存器模块。例如,请求节点311a可以传输请求分组到相应 IP寄存器模块312a-312n。当请求已经在IP寄存器模块312a-312n处完成时,完成分组被生成并通过包括完成节点315a-315n的完成节点链被传送到完成缓冲器316,该完成缓冲器316被连接到AXI从接口 301。
FRAB请求分组通过包括在该分组中的“reqid”字段而被路由至目标IP寄存器模块。每个请求分组可以包含应用分组,该应用分组包括用于相应目标IP寄存器模块的专用寄存器访问协议。以这种方式,不同寄存器接口协议可以利用相同的FRAB操作。注意,在图3中,如果不同模块和/或单元之间的连接总线用于发送请求/完成分组,则连接总线用实线341来示出;或者如果连接总线用于传输清除信号,则连接总线用虚线342来示出。
在一个实现方式中,请求节点链311a-311n和完成节点链 315a-315n可以与内部控制总线运行在相同的时钟域,即,AXI时钟 318。IP寄存器312a-312n可以运行在SOC系统的本地时钟319。
图4是图示根据这里所描述的一些实施例的FRAB 205的节点 400的示例结构的框图。例如,节点400具有主链和子链。FRAB节点400可以包括三个部分:请求节点401(由RN[i]表示)、完成节点403(由CN[i]表示)和数目Mi个IP寄存器模块402(例如,类似于图3中的IP寄存器模块312a-312n)。这里,索引i表示相应FRAB 节点在FRAB架构上的节点的层级结构中的位置。
请求节点401可以由请求单元411、412a-412c、413a-413c和 414a-414c来构建。完成节点可以由完成单元416a-416n和417组成。请求单元(RC)和完成单元(CC)都具有单级的寄存器缓冲,并且被设计为通用模块且用于RN或CN。每个请求单元或完成单元连接至多达3个其他模块,即,另一请求单元、另一完成单元或IP寄存器模块。因此,在SOC芯片的平面布置图上,FRAB架构可以促进对大尺寸的硅芯片上的不同IP寄存器模块402的寄存器访问,因为请求节点和完成节点可以通过添加新的节点而被扩展。也可以减少时序收敛努力,因为请求节点401和完成节点402使用相同的AXI时钟。
如图4所示,请求节点401包含位于主链421中的一个请求单元 (RC[i,-]411),以及在子链422中的Mi个请求单元(RC[i,0]412a, RC[i,1]413a,…,RC[i,Mi-1]414a)。这里,Mi表示节点i的子链中的请求单元的数目。索引阵列[x,y]指示请求单元在作为二维坐标系统的FRAB层级结构中的位置,其中索引x代表主链421中的请求单元位置,索引y代表子链422中的请求单元位置。请求分组可以经由主链421和子链422结构而被路由,这可以显著降低路由时延。请求单元的结构的另外的方面在图5中讨论。
如图3中的一个示例中所示,如果存在N个FRAB节点并且如果每个FRAB节点在子链中具有M个请求单元和M个完成单元,则多达N×M个IP寄存器模块可以被连接到FRAB 300。在图4中,子链 422中的请求单元412a、413a或414a可以通过两个请求单元412b-412c、413b-413c或414b-414c而被连接到IP寄存器模块402,该两个请求单元412b-412c、413b-413c或414b-414c被用作存储两个寄存器访问的缓冲器。可以增加这种请求单元412b-412c、413b-413c 或414b-414c的数目,例如代替使用两个请求单元作为缓冲,可以使用不同数目的(诸如三、四、五等)请求单元来消除主链421和子链 422中的背压(backpressure)并且实现更好的性能。当性能要求不那么苛刻时,这种请求单元也可以被移除以节省资源和空间。
继续图4,完成节点403(CN[i,-])包含位于节点i的子链中的Mi个完成单元(CC[i,0]416a,CC[i,1]416b,…,CC[i,Mi-1]416n)和主链中的一个完成单元(CC[i,-]417)。类似于针对请求节点401所使用的标记,Mi表示子链中的完成单元的数目;索引阵列[x,y]指示完成单元在FRAB层级结构中的位置;索引x代表完成单元在主链中的位置,并且索引y表示完成单元在子链中的位置。通过使用主链和子链来路由完成分组,可以显著减少路由时延。
在一些实现方式中,子链中的每个完成单元416a-416n可以直接连接至402中的相应IP寄存器模块。完成分组通过IP寄存器模块402 来生成。当子链中的完成单元可用时,完成应用分组从IP寄存器模块402通过X接口发送,如图6进一步图示。
在一个实施例中,IP寄存器模块402可以用作包装器,包装器包含本地IP寄存器402a-402n和到相应的请求单元(例如,412c、413c、 414c等)和完成单元416a-416n的特定接口。当IP寄存器(例如, 402a)接收来自请求单元412c的请求分组时,一旦IP寄存器402a接受该请求,IP寄存器402a就可以确立用于一个本地时钟循环的“reqclr”信号。然后,请求分组将被映射到本地寄存器访问协议中,以访问本地IP寄存器。
FRAB架构可以使用标识符(ID)路由机制来传送请求分组。ID 可以是分配给请求分组或完成分组以标识其在FRAB拓扑中的位置 (例如,主链421和子链422)的编号。例如,每个完成分组可以包含唯一ID来标识其在子链中的对应请求单元。TAG编号(例如,分配给给定FRAB请求以将针对该请求的完成与其他请求区分的编号) 可以从其请求分组提取并用于标识针对对应请求的完成。FRAB路由机制的进一步细节结合图7进行讨论。
图5是图示根据这里所描述的一些实施例的请求节点401的示例结构的框图。请求单元401是基础模块,其包括一个输入接口502和两个输出请求接口503a-503b。请求单元401对于整个请求分组具有单级的寄存器缓冲。如图5所示,请求分组被表示为针对输入接口502 的“req”511,以及针对输出接口X或Y 503a或503b的“reqX”512a 或“reqY”512b。这里,“X”代表子链方向,而“Y”代表主链方向。每个请求接口502或503a-503b可以包括FRAB请求分组(“req” 511)或清除信号(“clr”513),其中清除信号513发送请求单元被清除并且准备好接收请求分组的指示。
FRAB可以使用ID路由机制来传送请求分组。每个请求单元与其自身的ID相关联。当FRAB具有主链421和子链422时,那么请求单元ID字段可以被分裂为两个部分,即{reqidm,reqids}。部分 {reqidm}用于在主链中路由,而{reqids}用于在子链中路由。在一些实现方式中,可以添加附加的子链层级,并且ID字段中的ID部分的编号可以被配置为等价于链层级的编号。
在主链中的每个请求单元401在相应链层级处具有唯一ID部分 (例如,reqidm)。当接收到请求分组511时,请求单元401可以将其自己的ID与请求分组511的ID字段中的对应的较高位比较,然后决定向何处路由请求分组。当ID匹配时,请求分组511首先被路由到X接口,例如,从主链到子链。当没有标识出匹配时,请求分组然后被转发到Y接口,即请求分组被保持在同一主链层级。
子链中的每个请求单元在该子链层级中具有其唯一ID{reqids}。在子链层级处的路由基于{reqids}与请求分组511的ID字段中的较低位的比较。请求单元在子链中的整个ID包括两个部分{reqidm}和 {reqids},其在完成分组中被返回。
当请求分组511用于多播访问时,可以忽略子链层级的ID比较。请求分组511可以首先被路由到同一子链层级中的Y接口(例如,参见输出接口503b),然后到X接口(例如,参见接口503a),即定向至IP寄存器模块。但是仍然可以执行主链中的ID比较。
当请求单元用作缓冲器(例如,参见图4中的412b-412c、 413b-413c或414b-414c)时,那么仅使用X接口503a,即,请求分组511被路由至X接口。那么在这种情况下,ID比较是不必要的。
示例请求分组511可以包括三个字段:reqvalid字段、路由ID字段和应用分组字段。请求分组511的示例数据结构可以采取类似于以下的形式:
Figure BDA0001168776680000101
Figure BDA0001168776680000111
“reqvalid”字段指示请求分组可用。路由ID字段包括{reqid, reqtag,reqmulti}。当FRAB具有两个链层级(例如,主链和子链)时, {reqid}字段被分割为两个部分,例如{reqidm,reqids},其中{reqidm} 是用于主链中的路由的ID部分,而{reqids}用于子链中的路由。每个 ID部分是FRAB层级结构中的相同链层级中的唯一标识符,并且用于路由请求分组。TAG是用于跟踪请求分组和完成分组的序列号。字段{reqmulti}指示请求分组是否是多播访问。应用分组字段包括寄存器访问协议,其可以包括寄存器地址、写日期、写使能、读或写访问等。应用分组可以在路由和传播通过FRAB层级结构期间不被触及。因此,应用分组字段包括IP和软件之间的特定协议。协议可以彼此不同,这允许不同的寄存器接口经由其相应协议而被连接到相同 FRAB。
在一些实现方式中,请求单元生成清除信号513到先前的所连接的请求单元。当清除信号被确立时,这意味着当前的请求单元是空的并且可用于新的请求分组。而且,先前的请求单元中的请求分组是有效的,并且可以在下面的时钟信号边缘处被传送到当前的请求单元。请求分组可以经由通信(输入或输出)接口被接收或发送。通信接口可以被定义为通用接口,其中示例接口信号如表1所示。
表1请求单元的示例请求接口配置
Figure BDA0001168776680000121
图6是图示根据这里所描述的一些实施例的完成节点403的示例结构的框图。完成单元可以是包括两个输入接口(X输入接口601、 Y输入接口602)和一个输出完成接口603的基本模块。完成单元具有用于整个完成分组的单级的寄存器缓冲。如图6所示,信号“cpl”615代表输出完成分组,而“cplX”613或“cplY”614是用于输入接口X或Y的相应的完成分组。Y接口602可以比X接口601具有更高的优先级。
当完成单元被配置为缓冲时,那么仅使用X接口601。完成接口可以接收或发送完成分组(“cpl”615)和清除信号(“clr”616)。完成分组可以包括三个字段,cplvalid字段、ID-TAG字段和应用分组字段。完成分组615的示例数据结构可以采取类似于如下的形式:
Figure BDA0001168776680000131
“cplvalid”字段指示完成分组是否可用。ID-TAG字段可以包括 ID字段和TAG字段,其中ID是相同FRAB层级结构中的完成单元的唯一标识符。连接到相同IP寄存器模块的子链中的请求单元和完成单元可以具有相同ID,例如,参见图4中的请求单元412a、完成单元416a和IP[i,0]。TAG字段是用于区分用于对应请求的完成分组的序列号。应用分组字段可以包括完成状态和完成读数据。
完成单元403可以生成清除信号,到先前的所连接的完成单元。当清除信号被确立时,这意味着当前的完成单元是空的并且可用于接受新的完成分组。此外,先前的完成单元之一中的完成分组是有效的,并且将在下面的时钟边缘处被传送到当前的完成单元。Y接口602的输入可以比X接口601的输入具有更高的优先级。完成单元的输入或输出接口可以被定义为通用接口,其中示例接口信号如表2所示。
表2 .完成单元的示例完成接口配置
Figure BDA0001168776680000132
Figure BDA0001168776680000141
图7提供了图示根据这里的一些实施例的经由FRAB将访问请求路由至目标IP寄存器的方面的示例逻辑流程图。在701,可以从主机系统或加载器、嵌入式CPU等来接收访问请求。加载器或嵌入式CPU,类似于主机系统,可以作为主设备来操作,并且发起对作为从设备的 IP寄存器(或嵌入式存储器)的访问。在702,AXI桥(例如,参见图3中的框330)可以将访问请求映射到FRAB请求,该FRAB请求可以包括特定于结合图3所讨论的FRAB操作的数据字段。例如, FRAB请求分组包括“reqid”字段以将分组路由至目标IP寄存器。每个请求分组可以包含应用分组,应用分组包含用于相应的目标IP 寄存器模块的专用寄存器访问协议。在703,可以基于目标IP寄存器和接口协议针对FRAB请求分组确定路由路径。在704,FRAB请求分组可以基于路由路径被传输至请求节点(例如,参见图3中的节点 311a)。在705,当IP寄存器接收并接受FRAB请求分组时,IP寄存器可以向请求节点(例如,参见图3中的框330)发送清除信号。由每个单元生成的清除信号可以向先前的请求/完成单元给出请求/完成分组来自何处的指示。协议可以在每个请求/完成接口中完成。例如,当在AXI桥(例如,参见图3中的框330)和IP寄存器之间存在若干单元时,从IP寄存器生成的清除信号可以终止于邻居请求单元,并且不能朝向主链或AXI总线被转发到任何其他请求单元。在706, IP寄存器可以将FRAB请求分组映射至本地访问协议,以便访问目的地,例如IP寄存器或存储器。IP寄存器然后可以继续在图8中的801 处理FRAB请求。
图8提供了根据这里的一些实施例的完成来自FRAB的访问请求的方面的示例逻辑流程图。在801,IP寄存器可以处理FRAB请求。例如,在802,当在IP寄存器处经由请求分组接收到写请求时,一旦写请求由IP寄存器接受,就可以在803生成完成状态,因为不期望完成数据。此外,在804,可以基于请求执行写数据操作。当在802 在IP寄存器处接收到读请求时,当完成状态和完成读数据在805可用时,可以在806生成完成分组。否则,在805,IP寄存器可以等待直到完成状态和完成读取数据准备好。在808,完成分组然后被路由到完成节点。例如,完成状态和完成读取数据然后被传送到子链中的完成单元中。在809,完成分组被进一步发送通过主链到AXI至FRAB 桥(例如,参见图3中的桥330)中的完成缓冲器(例如,参见图3 中的完成缓冲器316)中。在810,如结合图3所讨论的,TAG、查找表条目和完成缓冲器资源被释放以标记访问请求的完成。
允许对不同的IP寄存器模块的柔性访问的FRAB架构可以改善 SOC系统的数据性能。例如,考虑具有连接到FRAB架构的256个相同IP寄存器模块的SOC,其具有类似于图3-图4所示的网格拓扑: FRAB架构具有主链,该主链具有16个节点,并且每个主链具有子链,该子链具有16个请求单元;两个请求单元被用作子链中的请求单元与对应的IP寄存器模块之间的缓冲器;每个IP寄存器模块被假定具有用于完成读或写请求的六个FRAB架构时钟;FRAB架构运行在250MHz;以及循环时间是4ns。初始时延(Tinit),定义为发出 FRAB请求和接收到其完成之间的时间间隔,可以如下计算:
Tinit=[(16+16+4)+6]×4ns=(36+6)×4ns=42×4ns=168ns。
这里,36是请求及其完成可能通过的请求单元和完成单元的数目。对于到与FRAB连接的任何IP寄存器模块的请求而言,初始时间可以是相同的。
当没有背压发生时,FRAB架构可以每两个循环接受一请求。如果FRAB架构支持16个流水线请求,那么在该示例中平均时延(Tav) 可以被计算为:
Tav=42/16×4ns=10.5ns
如果FRAB架构支持多于21个流水线请求,则平均时延可以是:
Tav=2.02×4ns=8.02ns
当所有的流水线请求瞄准在相同的IP寄存器模块时,那么平均时延通过IP寄存器模块的完成时间来确定,在该示例中即6个循环。
对于这一示例,FRB也可以被构造为具有一个主链层级和两个子链层级。每个层级对于请求单元或完成单元可以具有七个、七个和六个节点。然后,ID字段被分割为三个部分,每个部分具有3位的宽度。这一拓扑可以支持IP寄存器模块的最大数目是7×7×6=294,这足够用于具有256个IP寄存器模块的相应示例。然后,初始时延可以被计算为:
Tinit=[(7+7+6+5)+6]×4ns=(25+6)×4ns=31×4ns=124 ns。
这里25是请求及其完成所通过的请求单元和完成单元的数目。
当请求/完成数据总线具有32位的宽度时,示例净性能估计可以在表3中示出。
表3.示例FRAB性能
Figure BDA0001168776680000161
虽然本说明书包含很多细节,但是这些不应当被理解为限制可以要求保护的内容的范围,而是反而被理解为对主题的特定实现方式的描述。在分开的实现方式的上下文中在本说明书中描述的某些特征也可以组合实现在单个实现方式中。相反,在单个实现方式的上下文中所描述的各种特征也可以在多个实现方式中或者在任何合适的子组合中分别实现。此外,虽然特征可以在上面被描述为在某些组合中起作用并且甚至最初要求如此保护,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从该组合删除,并且要求保护的组合可以针对子组合或子组合的变形。
虽然在附图中以特定顺序描绘了操作,但是这不应当被理解为需要以示出的特定顺序或以顺次顺序来执行这样的操作或者执行所有图示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,在上面所描述的方面中的各种系统部件的分离不应当被理解为在所有的方面中需要这种分离,应当理解,所描述的程序部件和系统可以一般地一起集成在单个软件产品或被封装成多个软件产品。
可以提供驻留在计算机可读介质上的合适的计算机程序代码以执行关于这里所描述的过程的执行的一个或多个功能。如这里所使用的术语“计算机可读介质”指代向计算设备的处理器(例如,图2中的主机系统101,或这里所描述的设备的任何其他处理器)提供或参与提供指令以用于执行的任何非暂态或暂态介质。这样的介质可以采取很多形式,包括但不限于非易失性介质和易失性介质。非易失性介质包括例如光盘、磁盘或光磁盘,或者集成电路存储器,诸如闪存。易失性介质包括动态随机存取存储器(DRAM),其通常构成主存储器。计算机可读介质的常见形式包括,例如,软盘、柔性盘、硬盘、磁带、任何其他磁介质、CD-ROM、DVD、任何其他光学介质、穿孔卡片、纸带、具有孔的图案的任何其他物理介质、RAM、ROM、EPROM 或EEPROM(电可擦可编程只读存储器)、FLASH-EEPROM、任何其他存储器芯片或卡盘或计算机可以读取的任何其他非暂态介质。
已经就特定方面描述了本说明书的主题,但是其他方面也可以被实现并且其它方面在以下权利要求的范围内。例如,在权利要求中所记载的动作可以以不同的顺序来执行,并且仍然实现期望的结果。作为一个示例,在附图中所描绘的处理不一定需要示出的特定顺序或者顺次顺序来实现期望的结果。在某些实现方式中,多任务和并行处理可以是有利的。其他变体在以下权利要求的范围内。

Claims (18)

1.一种用于经由柔性寄存器访问总线传输访问请求的方法,所述方法包括:
接收用以访问集成电路上的资源的访问请求;
将所述访问请求转译为具有符合所述柔性寄存器访问总线的数据格式的请求分组;
基于与所述请求分组相关联的目标寄存器,确定用于所述请求分组的路由路径;
经由所述路由路径将所述请求分组传输至所述目标寄存器;
将所述请求分组内的信息转译为用于所述目标寄存器的本地访问协议;
基于所述本地访问协议,经由所述目标寄存器来获得对所述资源的访问;
经由所述目标寄存器,生成完成分组;以及
经由完成节点链的一个或多个完成节点,将所述完成分组路由至桥的完成缓冲器以指示所述访问请求完成,所述一个或多个完成节点包括所述完成节点链的最后一个完成节点。
2.根据权利要求1所述的方法,其中所述请求分组包括标识所述目标寄存器的标识符和具有与所述本地访问协议有关的数据的应用分组。
3.根据权利要求1所述的方法,其中所述路由路径包括所述请求分组所通过的多个互连的请求单元,并且其中所述多个互连的请求单元中的至少一个被连接到所述目标寄存器。
4.根据权利要求3所述的方法,其中来自所述多个请求单元中的每个请求单元具有用于传输所述请求分组的第一通信端口和用于传输清除信号的第二通信端口。
5.根据权利要求3所述的方法,其中每个请求单元包括标识相应的请求单元在所述多个请求单元的拓扑中的位置的标识编号。
6.根据权利要求5所述的方法,其中所述请求分组包括所述标识编号的信息,并且所述路由路径基于所述标识编号来确定。
7.根据权利要求1所述的方法,进一步包括:
经由所述目标寄存器来生成请求清除信号,以指示所述目标寄存器准备好接收下一请求分组。
8.根据权利要求1所述的方法,其中所述完成分组包括标识与所述访问请求相关联的所述完成分组的编号。
9.根据权利要求1所述的方法,其中所述柔性寄存器访问总线连接到多个寄存器,所述多个寄存器中的每一个具有相应的本地访问协议,并且所述方法进一步包括:
接收用以经由所述集成电路上的不同的目标寄存器来访问不同的资源的下一访问请求,以及
经由所述柔性寄存器访问总线将所述下一访问请求转换为符合与所述不同的目标寄存器相关联的不同的本地访问协议。
10.一种用于经由柔性寄存器访问总线来传输访问请求的装置,所述装置包括:
桥部件,被配置为:
接收用以访问集成电路上的资源的访问请求,
将所述访问请求转译为具有符合所述柔性寄存器访问总线的数据格式的请求分组,以及
基于与所述请求分组相关联的目标寄存器,确定用于所述请求分组的路由路径;
请求节点,被配置为将所述请求分组路由至所述目标寄存器,
其中所述目标寄存器被配置为:
将所述请求分组内的信息转译为本地访问协议;
基于所述本地访问协议,提供对所述资源的访问;以及
生成完成分组;以及
完成节点链,具有多个完成节点,其中所述完成节点链的完成节点被配置为经由所述完成节点链的最后一个完成节点,将所述完成分组路由至所述桥部件的完成缓冲器以指示所述访问请求完成。
11.根据权利要求10所述的装置,其中所述请求分组包括标识所述目标寄存器的标识符和具有与所述本地访问协议有关的数据的应用分组。
12.根据权利要求10所述的装置,其中所述路由路径包括所述请求分组所通过的多个互连的请求单元,并且其中所述多个互连的请求单元中的至少一个被连接到所述目标寄存器。
13.根据权利要求12所述的装置,其中来自所述多个请求单元中的每个请求单元具有用于传输所述请求分组的第一通信端口和用于传输清除信号的第二通信端口。
14.根据权利要求12所述的装置,其中每个请求单元包括标识相应的请求单元在所述多个请求单元的拓扑中的位置的标识编号。
15.根据权利要求14所述的装置,其中所述请求分组包括所述标识编号的信息,并且所述路由路径基于所述标识编号来确定。
16.根据权利要求10所述的装置,其中所述目标寄存器被进一步配置为:
生成请求清除信号,以指示所述目标寄存器准备好接收下一请求分组。
17.根据权利要求10所述的装置,其中所述完成分组包括标识与所述访问请求相关联的所述完成分组的编号。
18.根据权利要求10所述的装置,其中所述柔性寄存器访问总线连接到多个寄存器,所述多个寄存器中的每一个具有相应的本地访问协议,并且所述桥部件被进一步配置为:
接收用以经由所述集成电路上的不同的目标寄存器来访问不同的资源的下一访问请求,以及
经由所述柔性寄存器访问总线将所述下一访问请求转换为符合与所述不同的目标寄存器相关联的不同的本地访问协议。
CN201611091645.6A 2015-12-01 2016-12-01 用于经由柔性寄存器访问总线传输访问请求的系统和方法 Active CN106815176B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562261640P 2015-12-01 2015-12-01
US62/261,640 2015-12-01

Publications (2)

Publication Number Publication Date
CN106815176A CN106815176A (zh) 2017-06-09
CN106815176B true CN106815176B (zh) 2022-09-16

Family

ID=57708276

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611091645.6A Active CN106815176B (zh) 2015-12-01 2016-12-01 用于经由柔性寄存器访问总线传输访问请求的系统和方法

Country Status (3)

Country Link
US (1) US10628373B2 (zh)
EP (1) EP3176701B1 (zh)
CN (1) CN106815176B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654645B1 (en) * 2014-09-04 2017-05-16 Google Inc. Selection of networks for voice call transmission
CN108256209A (zh) * 2018-01-15 2018-07-06 郑州云海信息技术有限公司 一种菊花链布线时钟信号传输路径电路
CN113014606B (zh) * 2021-05-25 2021-07-23 中国人民解放军国防科技大学 一种网络芯片中硬件模块的访问装置及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1543618A (zh) * 2000-10-20 2004-11-03 快速转动设计系统公司 使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统
CN1758208A (zh) * 2005-10-28 2006-04-12 中国人民解放军国防科学技术大学 对挂接在片外单总线上的多种存储器进行访问的方法
CN101933005A (zh) * 2008-02-15 2010-12-29 飞思卡尔半导体公司 外围模块寄存器访问方法和装置
US20140082238A1 (en) * 2012-09-14 2014-03-20 Nvidia Corporation Method and system for implementing a control register access bus
US8719517B2 (en) * 2009-02-27 2014-05-06 Hangzhou Synochip Technologies Co. Ltd Method and apparatus for executing a program by an SPI interface memory
CN104834621A (zh) * 2014-02-10 2015-08-12 英特尔公司 嵌入式通用串行总线解决方案

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073233A (en) 1997-10-08 2000-06-06 Cisco Technology, Inc. Method and apparatus for distributing and accessing configuration registers
US8407451B2 (en) * 2007-02-06 2013-03-26 International Business Machines Corporation Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US8789170B2 (en) * 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
US20140173160A1 (en) 2011-06-07 2014-06-19 Telefonaktiebolaget L M Ericsson (Publ) Innovative Structure for the Register Group
US9183147B2 (en) * 2012-08-20 2015-11-10 Apple Inc. Programmable resources to track multiple buses
US9858222B2 (en) * 2014-11-13 2018-01-02 Cavium, Inc. Register access control among multiple devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1543618A (zh) * 2000-10-20 2004-11-03 快速转动设计系统公司 使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统
CN1758208A (zh) * 2005-10-28 2006-04-12 中国人民解放军国防科学技术大学 对挂接在片外单总线上的多种存储器进行访问的方法
CN101933005A (zh) * 2008-02-15 2010-12-29 飞思卡尔半导体公司 外围模块寄存器访问方法和装置
US8719517B2 (en) * 2009-02-27 2014-05-06 Hangzhou Synochip Technologies Co. Ltd Method and apparatus for executing a program by an SPI interface memory
US20140082238A1 (en) * 2012-09-14 2014-03-20 Nvidia Corporation Method and system for implementing a control register access bus
CN104834621A (zh) * 2014-02-10 2015-08-12 英特尔公司 嵌入式通用串行总线解决方案

Also Published As

Publication number Publication date
EP3176701A1 (en) 2017-06-07
EP3176701B1 (en) 2020-04-29
US10628373B2 (en) 2020-04-21
CN106815176A (zh) 2017-06-09
US20170154010A1 (en) 2017-06-01

Similar Documents

Publication Publication Date Title
JP6082752B2 (ja) メモリ応答の順序付けのためのメモリ装置、コンピュータシステムおよび方法
US7958298B2 (en) System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment
US20050091432A1 (en) Flexible matrix fabric design framework for multiple requestors and targets in system-on-chip designs
JP5546635B2 (ja) データ転送装置およびその制御方法
US7251698B2 (en) Address space management in systems having multiple multi-processor clusters
JP6880402B2 (ja) メモリアクセス制御装置及びその制御方法
EP1730643A2 (en) Pvdm (packet voice data module) generic bus protocol
JP2005235197A (ja) 複数のマスタを含むサブシステムをオープンコアプロトコルを基盤とするバスに連結するためのバスシステム
CN106815176B (zh) 用于经由柔性寄存器访问总线传输访问请求的系统和方法
WO2016078307A1 (zh) 可配置片上互联系统及其实现方法、装置和存储介质
WO2016074619A1 (zh) 基于PCIe总线的数据传输方法和装置
US8533377B2 (en) System and method for allocating transaction ID in a system with a plurality of processing modules
JP2003296267A (ja) バスシステム及びバスシステムを含む情報処理システム
GR20180100189A (el) Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US20200192842A1 (en) Memory request chaining on bus
JP5664187B2 (ja) 相互接続装置、および、その制御方法
US20160217094A1 (en) Input/output control device, input/output control system, and input/output control method
TWI791134B (zh) 通信裝置、資訊處理系統及通信方法
WO2024174121A1 (zh) 一种写数据通路结构和芯片
TWI245222B (en) Accessing configuration registers by automatically changing an index
TW201916644A (zh) 匯流排系統
JP2014167818A (ja) データ転送装置およびデータ転送方法
CN115964982A (zh) 加速器的拓扑结构
US12111719B2 (en) Remote scalable machine check architecture
US12072756B2 (en) Scalable machine check architecture

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200427

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Applicant before: Marvell International Ltd.

Effective date of registration: 20200427

Address after: Hamilton, Bermuda

Applicant after: Marvell International Ltd.

Address before: Saint Michael

Applicant before: MARVELL WORLD TRADE Ltd.

GR01 Patent grant
GR01 Patent grant