CN110309526B - 用于可配置从端点电路的***互连 - Google Patents
用于可配置从端点电路的***互连 Download PDFInfo
- Publication number
- CN110309526B CN110309526B CN201910233085.0A CN201910233085A CN110309526B CN 110309526 B CN110309526 B CN 110309526B CN 201910233085 A CN201910233085 A CN 201910233085A CN 110309526 B CN110309526 B CN 110309526B
- Authority
- CN
- China
- Prior art keywords
- transaction request
- npi
- switch
- root node
- transaction
- 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
- 230000002093 peripheral effect Effects 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims description 94
- 238000000034 method Methods 0.000 claims description 20
- 230000000903 blocking effect Effects 0.000 claims description 16
- 230000006854 communication Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 6
- 239000000872 buffer Substances 0.000 description 38
- 238000010586 diagram Methods 0.000 description 14
- 208000000143 urethritis Diseases 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/06—Clock generators producing several clock signals
-
- 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/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
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)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Multi Processors (AREA)
Abstract
本申请描述了一种用于配置从端点电路的***互连,比如可在可配置网络中、可在片上***(SoC)中。在一个示例中,一种装置包括在芯片上的处理***、在所述芯片上的电路块、以及在所述芯片上的可配置网络。所述处理***和所述电路块连接至所述可配置网络。所述可配置网络包括***互连。所述***互连包括根节点和多个交换机。所述根节点和所述多个交换机在树形拓扑中连接。所述树形拓扑的第一分支连接至所述可配置网络的相应从端点电路。所述可配置网络的从端点电路是可编程的,以配置所述可配置网络。
Description
技术领域
本申请的示例大致涉及电子电路,更具体地,涉及一种用于配置从端点电路的***互连。
背景技术
集成电路技术的进步使得可在单个半导体芯片中嵌入整个***(如包括处理器核、存储器控制器和总线)。这种类型的芯片通常被称为片上***(SoC)。其他SoC可在其中嵌入不同的部件以用于不同的应用。与传统的基于处理器的设计相比,SoC具有许多优势。它是多芯片设计的一种具有吸引力的替代方案,因为将部件集成到单个器件中可在提高整体速度的同时减小尺寸。SoC对于完全定制芯片(比如专用集成电路(ASIC))来说也是一种具有吸引力的替代方案,因为ASIC设计往往具有明显更长的开发时间和更高的开发成本。已开发出一种包括可编程逻辑的可配置SoC(CSoC),以实现可编程半导体芯片,该可编程半导体芯片可同时获得可编程逻辑的优点和SoC的优点。
发明内容
本申请描述了一种用于配置从端点电路的***互连,比如在可配置网络中、在片上***(SoC)中。所述***网络可以是分布式、低开销、高性能和独立的互连。
本申请公开的一个示例是一种装置。所述装置包括在芯片上的处理***、在所述芯片上的电路块、以及在所述芯片上的可配置网络。所述处理***和所述电路块连接至所述可配置网络。所述可配置网络包括***互连。所述***互连包括根节点和多个交换机。所述根节点和所述多个交换机连接为树形拓扑。所述树形拓扑的第一分支连接至所述可配置网络的相应从端点电路。所述可配置网络的所述从端点电路是可编程的,以配置所述可配置网络。
本发明公开的另一个示例是一种用于运行集成电路的方法。在芯片上的根节点处从所述芯片上的主电路接收第一事务请求。将第二事务请求从所述根节点发送至树形拓扑,所述树形拓扑包括在所述芯片上的交换机。所述第二事务请求对应于所述第一事务请求并包括所述第一事务请求指向的从端点电路的目标标识。在所述树形拓扑中的至少一个交换机处接收所述第二事务请求。对于接收所述第二事务请求的所述至少一个交换机中的每个交换机,基于所述目标标识来确定在所述树形拓扑的哪个后续分支上发送所述第二事务请求。对于接收所述第二事务请求的所述至少一个交换机中的每个交换机,在所述树拓扑的所述确定的后续分支上发送所述第二事务请求。所述树形拓扑的每个分支均连接至各自的从端点电路,所述从端点电路中的至少一些从端点电路是在所述芯片上的可配置网络的可配置部件。
本发明公开的另一个示例是一种装置。所述装置包括在芯片上的集成电路。所述集成电路包括在所述芯片上的处理***、在所述芯片上的可编程逻辑区域、在所述芯片上的配置互连、以及在所述芯片上的可配置网络。所述配置互连连接在所述处理***和所述可编程逻辑区域之间。所述处理***被配置为通过所述配置互连对所述可编程逻辑区域进行编程。所述可配置网络连接至所述处理***和所述可编程逻辑区域。所述可配置网络的可编程部件可被编程以通过所述可配置网络提供通信信道。所述可配置网络包括***互连。所述***互连包括根节点和交换机。所述根节点和所述交换机连接为树形拓扑。所述树形拓扑的第一分支连接至所述可配置网络的所述可编程部件。
参考以下详细描述可以理解这些和其他方面。
附图说明
为了能够详细理解上述特征的方式,可以通过参考示例实施方式来获得上面简要概述的更具体的描述,其中一些示例实施方式在附图中示出。然而,应当理解,附图仅示出了典型的示例实施方式,因此不应被认为是对其范围的限制。
图1是描绘根据一个示例的片上***(SoC)的框图。
图2是描绘根据一个示例的片上网络(SoC)的框图。
图3是描绘根据一个示例在端点电路之间通过NoC的连接的框图。
图4是描绘根据一个示例通过NoC***互连(NPI)至寄存器块的连接的框图。
图5是根据一个示例的NPI的简化树型拓扑。
图6示出了根据一个示例的示例性写入和读取请求和响应格式。
图7A和7B是根据一些示例的NPI的根节点的运行流程图。
图8A和8B是根据一些示例的NPI的NPI交换机的运行流程图。
图9是根据一些示例的NPI的协议块的运行流程图。
图10是根据一些示例的SoC的至少一部分的简化示意图。
图11是根据一些示例的SoC的示例性简化布图规划。
为了便于理解,在可能的情况下使用相同的附图标记来表示附图中共有的相同元件。预期一个示例的元件可有利地并入其他示例中。
具体实施方式
本申请描述的示例提供一种用于配置集成电路(IC)中的从端点电路的***互连。在一些示例中,所述从端点电路包括可配置片上网络(NoC)的部件和其他部件,比如存储器控制器、时钟生成器等。所述***互连可以是分布式、低开销、高性能和独立的互连。所述***互连可使用树形拓扑来执行。通过所述***互连执行存储器映射的事务请求,可对所述从端点电路进行写入和读取。
以下参考附图描述了各种特征。应该注意的是,附图可以或可以不按比例绘制,并且整个附图中,类似结构或功能的元件由相同的附图标记表示。应该指出,这些附图只是为了便于描述这些特征。它们不旨在作为对要求保护的发明的详尽描述或作为对要求保护的发明的范围限制。另外,所示示例不需要具有示出的所有方面或优点。结合特定示例描述的方面或优点不必限于该示例,且即使未如此示出或即使没有如此明确地描述,也可在任何其他示例中实践。
图1是描绘根据一个示例的片上***(SoC)102的框图。SoC 102是包括处理***104、片上网络(NoC)106、配置互连108以及一个或多个可编程逻辑区域110的集成电路(IC)。SoC 102可耦合至外部电路,比如非易失性存储器(NVM)112。NVM 112可存储数据,所述存储的数据可被加载至SoC 102以配置SoC 102,比如配置NoC 106和可编程逻辑区域110。通常,处理***104通过NoC 106并通过配置互连108连接至可编程逻辑区域110。
处理***104可包括一个或多个处理器核。例如,处理***104可包括许多基于ARM的嵌入式处理器核。可编程逻辑区域110可包括任何数量的可配置逻辑块(CLB),这些CLB可使用处理***104通过配置互连108进行编程或配置。例如,配置互连108可通过处理***104的处理器核(例如下面进一步描述的平台管理控制器(PMC))来实现例如可编程逻辑区域110的结构的基于帧(frame-based)的编程。
图2是描绘根据一个示例的NoC 106的框图。NoC 106包括NoC主单元(NMU)202、NoC从单元(NSU)204、网络214、NoC***互连(NPI)210和寄存器块212。每个NMU 202都是将主电路连接至NoC 106的入口电路。每个NSU 204都是将NoC 106连接至从端点电路的出口电路。NMU 202通过网络214被连接至NSU 204。在一个示例中,网络214包括NoC数据包交换机(packet switch)206和在NoC数据包交换机206之间的路由208。每个NoC数据包交换机206执行NoC数据包的交换。NoC数据包交换机206通过路由208彼此连接并连接至NMU 202和NSU204,以实现多个物理信道。NoC数据包交换机206还支持每个物理信道的多个虚拟信道。NPI210包括对NMU 202、NSU 204和NoC数据包交换机206进行编程的电路。例如,NMU 202、NSU204和NoC数据包交换机206可包括确定其功能的寄存器块212。NPI 210包括耦合至寄存器块212的***互连,用于对其进行编程以设置功能。NoC 106中的寄存器块212支持中断、QoS、错误处理和报告、事务控制、电源管理以及地址映射控制。寄存器块212可在重新编程之前在可用状态下被初始化,比如通过使用如下所述的写入请求来对寄存器块212进行写入。NoC 106的配置数据可存储在NVM 112中并被提供给NPI 210,用于对NoC 106和/或其他从端点电路进行编程。
图3是描绘根据一个示例的在端点电路之间通过NoC 106的连接的框图。在该示例中,端点电路302通过NoC 106连接至端点电路304。端点电路302是主电路,其耦合至NoC106的NMU 202。端点电路304是从电路,其耦合至NoC 106的NSU 204。每个端点电路302和304都可以是处理***104中的电路、可以是可编程逻辑区域110中的电路或可以是另一子***中的电路。可编程逻辑区域110中的每个端点电路可以是专用电路(例如,硬化电路)或以可编程逻辑配置的电路。
网络214包括多个物理信道306。通过对NoC 106进行编程来实现物理信道306。每个物理信道306包括一个或多个NoC数据包交换机206以及相关的路由208。NMU 202通过至少一个物理信道306与NSU 204连接。物理信道306还可具有一个或多个虚拟信道308。
图4是描绘根据一个示例通过NPI 210至寄存器块212的连接的框图。为了连接至寄存器块212,NPI 210包括根节点404、一个或多个NPI交换机408以及协议块410。在一些示例中,根节点404驻留在平台管理控制器(PMC)402上,PMC 402可进一步驻留在处理***104中,尽管在其他示例中根节点404可以是独立的电路或可驻留在其他***或电路上。通常,根节点404可将事务请求打包成由NPI 210执行的格式,并可将存储器映射的事务请求发送至NPI交换机408,该NPI交换机408可进一步将存储器映射的事务请求发送至其他NPI交换机408或者发送至协议块410。然后,协议块410可将存储器映射的事务请求转换为由寄存器块212执行的格式。寄存器块212在图4中表示为可被NPI 210连接到的从端点电路的示例。NPI 210还可连接至其他从端点电路,比如存储器控制器的可编程组件、温度传感器、时钟发生器等。NPI 210通常是如图5的示例所描述的树形拓扑。
PMC 402进一步连接至配置互连108,该配置互连108又连接至可编程逻辑区域110。PMC 402被配置为通过配置互连108对可编程逻辑区域110的结构进行编程。配置互连108是用于对SoC 102上的可编程单元进行编程的递送机制(delivery mechanism),该递送机制独立于NPI 210的用于对SoC 102上的其他可编程单元(例如从端点电路)进行编程的递送机制。
图5示出了根据一个示例的NPI 210的简化树形拓扑。可在其他示例中执行其他配置。根节点404是SoC 102上的一个或多个主电路与NPI 210之间的接口。NPI 210的树形拓扑的每个分支末端连接至从端点电路,比如该示例中的寄存器块212。
根节点404可执行仲裁算法(arbitration scheme),比如轮询算法(round robinscheme),用于处理从一个或多个主电路接收的事务请求。根节点404可进一步在一个或多个主电路使用的协议和NPI 210使用的协议之间进行转换。例如,一个或多个主电路可执行***高级可扩展接口(Advanced eXtensible Interface fourth generation,AXI4)协议,且NPI 210可执行NPI协议。因此,在这样的示例中,根节点404可在AXI4协议和NPI协议之间转换事务请求和事务响应。
NPI交换机408(单独示出为NPI交换机408a、408b等)包括一个输入端口和一个或多个(例如,四个)输出端口。每个NPI交换机408的相应输入端口连接至树形拓扑中的前一节点(例如,根节点404或NPI交换机408)的输出端口。例如,NPI交换机408a的输入端口连接至根节点404的输出端口;NPI交换机408b的输入端口连接至NPI交换机408a的输出端口;NPI交换机408c的输入端口连接到NPI交换机408b的输出端口;NPI交换机408d的输入端口连接到NPI交换机408b的输出端口;NPI交换机408e的输入端口连接到NPI交换机408b的输出端口。如上所述,NPI交换机408的输出端口可连接至后续NPI交换机408的输入端口或连接至树形拓扑中的后续协议块410。在所示示例中,NPI交换机408a的另一个输出端口连接至协议块410a的输入端口;NPI交换机408b的另一个输出端口连接至协议块410b的输入端口;NPI交换机408c的输出端口连接到协议块410c的输入端口;NPI交换机408d的输出端口连接到协议块410d的输入端口;NPI交换机408e的相应输出端口连接到协议块410e和410f的输入端口。NPI交换机408的每个输出端口可创建NPI 210的树形拓扑的后续或下游分支。
如下面更详细的示例中所述,树形拓扑中的上部NPI交换机408a从根节点404接收事务请求,且上部NPI交换机408a和任何后续NPI交换机408(例如,NPI交换机408b、408c等)根据从端点电路(例如,寄存器块212)的在相应事务请求中示出的目标标识(destinationidentification)将事务请求引导到NPI 210的树形拓扑的后续分支。
如前所述,协议块410具有连接至前一NPI交换机408的输出端口的输入端口,以及连接至后续寄存器块212的输入端口的输出端口。在所示示例中,协议块410a的输出端口连接至寄存器块212a的输入端口;协议块410b的输出端口连接至寄存器块212b的输入端口;协议块410c的输出端口连接至寄存器块212c的输入端口;协议块410d的输出端口连接至寄存器块212d的输入端口;协议块410e的输出端口连接至寄存器块212e的输入端口;协议块410f的输出端口连接至寄存器块212f的输入端口。协议块410可将事务请求从在NPI 210上执行的协议转换为由相应的从端点电路(例如寄存器块212)执行的协议。在一些示例中,协议块410可在NPI协议和高级微控制器总线架构(AMBA)高级外设总线3(APB3)协议之间进行转换。
如下面的示例所示,各个节点之间的连接可描述为输入和输出端口之间;但是,这种连接可实现双向通信。各种输入端口和输出端口的描述为自主电路到从端点电路的事务请求的方向环境下的描述,且诸如输入端口或输出端口的这种指定仅仅是为了方便。如下所述,对事务请求的事务响应可从输入端口发送并在输出端口接收。
在一些示例中,NPI协议由NPI 210执行。图6示出了一些示例中NPI协议的示例性事务请求和响应格式。图6示出了NPI协议写入请求格式602、NPI协议写入响应格式604、NPI协议读取请求格式606和NPI协议读取响应格式608。在所示示例中,事务请求和响应格式执行数据流控制数位(flow-control digit,flit)。事务请求或响应可包括任意数量的数据flit,其中“最终信号指示”可指示是否会有后续的数据flit跟随包含该“最终信号指示”的数据flit,或指示包含该“最终信号指示”的数据flit是事务请求或响应的最后一个数据flit。在所示示例中,格式602、604、606和608中的每个格式执行一个或多个数据flit,每个数据flit的长度为34个比特[33:0],但是其他示例中,可在数据flit中执行任意数量的比特。
NPI协议写入请求格式602包括至少两个数据flit,且如图所示,包括三个数据flit。第一个数据flit是头数据flit,格式如下:
(1)最低有效的两个比特[1:0]–保留或忽视
(2)比特[15:2]–目标地址
(3)比特[24:16]–从目标标识(ID)
(4)比特[28]–保留或忽视
(5)比特[30:27]–包含要写入数据的数据flit的突发长度(BLEN)
(6)比特[31]–读取/写入指示(写入)
(7)比特[32]–保留或忽视
(8)最高有效比特[33]–“最终信号指示”(0表示还有至少一个后续数据flit会跟随)
后续的数据flit的格式如下:
(1)最低有效的32个比特[31:0]–要写入的数据
(2)比特[32]–保留或忽视
(3)最高有效比特[33]–“最终信号指示”(0表示还有至少一个后续数据flit要跟随,或者1表示这是最后一个数据flit)
NPI协议写入响应格式604包括一个格式如下的数据flit:
(1)最低有效的32个比特[31:0]–保留或忽视
(2)比特[32]–响应(1表示成功,0表示错误)
(3)最高有效比特[33]-“最终信号指示”(1表示这是最后一个数据flit)
NPI协议读取请求格式606包括一个格式如下的数据flit:
(1)最低有效的两个比特[1:0]–保留或忽视
(2)比特[15:2]–目标地址
(3)比特[24:16]–从目标ID
(4)比特[28]–保留或忽视
(5)比特[30:27]-包含要写入数据的数据flit的突发长度(BLEN)
(6)比特[31]–读取/写入指示(读取)
(7)比特[32]–保留或忽视
(8)最高有效比特[33]–“最终信号指示”(1表示这是最后一个数据flit)
NPI协议读取响应格式608包括一个或多个数据flit,其中每个数据flit的格式如下:
(1)最低有效的32个比特[31:0]–读取的数据
(2)比特[32]–响应(1表示成功,0表示错误)
(3)最高有效比特[33]–“最终信号指示”(0表示还有至少一个后续数据flit要跟随,或者1表示这是最后一个数据flit)
根据一些示例,在图5的树形拓扑和图6的NPI协议事务请求和响应格式的环境中描述了一些示例性数据流。SoC 102可包括例如512个从端点电路,其中NPI 210可向这512个从端点电路写入和/或从这512个从端点电路读取,且因此NPI 210可连接至512个寄存器块212或其他从端点电路。在该示例中,512个从端点电路(例如,寄存器块212)被NPI协议写入请求格式602和NPI协议读取请求格式606的9个比特[24:16]映射。每个寄存器块212可包括配置地址空间,比如64KB,该空间可被NPI协议写入请求格式602和NPI协议读取请求格式606的目标地址寻址,例如比特[15:2]。对于任何寄存器块212,配置地址空间可以是连续的或不连续的。多个寄存器块212的地址空间可组合在一起。从端点电路可以是例如NoC 106的组件(比如,NoC数据包交换机206、NMU 202和NSU)或SoC 102中的其他组件(比如,存储器控制器中的组件、时钟发生器、温度传感器等)。
每个NPI交换机408可执行自动搜寻算法(autodiscovery scheme)以识别哪个从端点电路低于或连接至相应NPI交换机408的哪个输出端口,且根节点404具有从高位地址比特至从端点电路的目标ID的映射。根节点404被配置为,通过将接收的事务请求的地址的高位比特转换为目标ID,同时针对目标地址保持接收的事务请求的地址的低位16比特,将接收自主电路的事务请求的从端点电路地址转换为目标ID和目标地址。根节点404将接收到的事务请求转换为具有NPI协议写入请求格式602或NPI协议读取请求格式606的NPI协议事务请求。然后,根节点404将NPI协议事务请求发送到树形拓扑中的第一NPI交换机408(例如,NPI交换机408a)。第一NPI交换机408基于NPI协议事务请求的目标ID来确定在哪个输出端口上发送NPI协议事务请求。如果第一NPI交换机408确定具有目标ID的从端点电路在例如第一NPI交换机408的第二输出端口下方而不是在第一输出端口下方,则第一NPI交换机408在第二输出端口上发送NPI协议事务请求。接收NPI协议事务请求的每个后续NPI交换机408基于NPI协议事务请求的目标ID做出类似的确定,并在输出端口上发送NPI协议事务请求(由目标ID指定的从端点电路低于该输出端口),直到对应于该从端点电路的协议块410接收到NPI协议事务请求。然后,协议块410将NPI协议事务请求转换为由从端点电路执行的协议,并将转换的事务请求发送至指定的从端点电路。
一旦从端点电路接收到转换的事务请求,则从端点电路将事务响应发送回根节点404。协议块410被配置为将从端点电路的事务响应转换为具有NPI协议写入响应格式604或NPI协议读取响应格式608的NPI协议事务响应。然后,协议块410将NPI协议事务响应发送至NPI交换机408,其中协议块410的输入端口在树形拓扑中连接至该NPI交换机408。然后,在输出端口接收NPI协议事务响应的每个NPI交换机408通过其输入端口发送NPI协议事务响应而在树形拓扑向上发送NPI协议事务响应。NPI协议事务响应沿树形拓扑向上传播至根节点404,根节点404将NPI协议事务响应转换为转换后的响应,然后将其发送到适当的主电路。
根节点404还被配置为处理从主电路接收的多个事务请求。如果根节点404同时从主电路接收了多个事务请求,则根节点404执行仲裁算法(例如轮询算法),并相应地序列化这些事务请求。如果根节点404同时和/或在短时间内从主电路接收了多个事务请求,则根节点404可在缓冲器中序列化和缓冲这些事务请求,比如在先进先出(FIFO)缓冲器中。例如,根节点404可以以串行方式转换事务请求,并可随后以突发方式发送数据flit。单个数据flit可以是一个NPI协议事务请求,或多个数据flit可组成一个可在突发中发送的NPI协议事务请求。根节点404以流水线方式将数据flit发送至树形拓扑的第一NPI交换机408(例如,NPI交换机408a)。
如上所述,NPI交换机408处理第一个接收的NPI协议事务请求及其n个数据flit。在第一个接收到的NPI协议事务请求的第一个数据flit之后,NPI交换机408将继续传播数据flit(例如,第一和/或后续NPI协议事务请求中的数据flit),直到:(i)NPI交换机408确定将在NPI交换机408的未发送第一个接收到的NPI协议事务请求的输出端口上发送随后接收的NPI协议事务请求;以及(ii)NPI交换机408尚未从从端点电路(第一个接收到的NPI协议事务请求被发送到该从端点电路)接收到NPI协议事务响应。换句话说,NPI交换机408不会沿树形拓扑的一个分支向下发送NPI协议事务请求,该分支不同于另一个先前NPI协议事务请求还未决的一个分支。如果NPI交换机408接收到一个NPI协议事务请求(该NPI协议事务请求会在一个输出端口上被发送,该输出端口不同于在其上发送先前NPI协议事务请求的输出端口)并且NPI交换机408尚未接收到针对先前NPI协议事务请求的NPI协议事务响应,则NPI交换机408会阻挡自该NPI交换机408进一步传播任何数据flit,并在一些示例中,阻挡来自上游节点的任何数据flit的进一步传播,直到NPI交换机408接收到针对所有相应的先前NPI协议事务请求的NPI协议事务响应。NPI交换机408可阻挡由NPI交换机408接收的任何数据flit的传播,且在一些示例中,可阻挡树形拓扑中的任何在先NPI交换机408和根节点404接收的任何数据flit的传播。一旦适当的NPI交换机408接收到针对每个先前的NPI协议事务请求的NPI协议事务响应,则NPI交换机408可终止对任何数据flit的传播阻挡,并可恢复通过NPI交换机408的数据flit的传播。
为了进一步说明该示例,假设第一主电路在位于寄存器块212f中的某个地址处发送了对于一个96比特数据的写入请求,并假设第二主电路在位于寄存器块212a中的某个地址处发送了一个64比特数据的读取请求。此外,假设根节点404在根节点404接收读取请求之前的一个时钟周期接收到写入请求,或假设根节点404同时接收到写入请求和读取请求,并根据仲裁算法确定写入请求优先于读取请求。因此,根节点404在读取请求之前处理并序列化写入请求。
根节点404根据NPI协议写入请求格式602将接收到的写入请求转换为NPI协议写入请求。NPI协议写入请求由四个数据flit组成,其中(i)第一头数据flit包括寄存器块212f的目标ID、要写入的目标地址、三个数据flit的突发长度(例如,三个写入-数据数据flit)、写入请求的指示和数据flit不是最后一个信号的指示;以及(ii)第二到第四个数据flit包括要写入的数据,其中第二和第三数据flit具有相应数据flit不是最后一个信号的指示,第四数据flit具有数据flit是最后一个信号的指示。根节点404在一个时钟周期发送头数据flit,在相应的后续时钟周期发送三个后续的写入-数据数据flit。根节点404将所接收的写入请求置于FIFO缓冲器中,等待对NPI协议写入请求的响应。
然后,根节点404根据NPI协议读取请求格式606将接收到的读取请求转换为NPI协议读取请求。NPI协议读取请求由一个数据flit组成,该数据flit包括寄存器块212a的目标ID、待读取的目标地址、两个数据flit的突发长度(例如,两个读取-数据数据flit)、读取请求的指示以及数据flit是最后一个信号的指示。根节点404在发送NPI协议写入请求的最后一个数据flit之后的时钟周期发送NPI协议读取请求的数据flit。根节点404将所接收的读取请求置于FIFO缓冲器中,等待对NPI协议读取请求的响应。因此,写入请求在FIFO缓冲器中的读取请求之前。
返回参考NPI协议写入请求,NPI交换机408a在第一时钟周期接收头数据flit。NPI交换机408a根据头数据flit确定目标ID对应于第一输出端口下方的从端点电路,因此,NPI交换机408a在下一个时钟周期将头数据flit通过第一输出端口发送至NPI交换机408b。NPI交换机408a继续通过第一输出端口在各个时钟周期发送数据flit,直到发送完其中包括“该数据flit是最后一个信号”的指示的NPI协议写入请求的数据flit。类似地,NPI交换机408b在第二时钟周期接收头数据flit。NPI交换机408b根据头数据flit确定目标ID对应于第三输出端口下方的从端点电路,因此,NPI交换机408b在下一个时钟周期将头数据flit通过第三输出端口发送至NPI交换机408e。NPI交换机408b继续通过第三输出端口在各个时钟周期发送数据flit,直到发送完其中包括“该数据flit是最后一个信号”的指示的NPI协议写入请求的数据flit。进一步地,NPI交换机408e在第三时钟周期接收头数据flit。NPI交换机408e根据头数据flit确定目标ID对应于第二输出端口下方的从端点电路,因此,NPI交换机408e在下一个时钟周期将头数据flit通过第二输出端口发送至协议块410f。NPI交换机408e继续通过第二输出端口在各个时钟周期发送数据flit,直到发送完其中包括“该数据flit是最后一个信号”的指示的NPI协议写入请求的数据flit。在四个时钟周期之后,在协议块410f处接收到NPI协议写入请求的头数据flit(然后协议块410f转换NPI协议写入请求并将转换的写入请求转发至寄存器块212f);已在NPI交换机408e处接收到第一写入-数据数据flit;已在NPI交换机408b处接收到第二写入-数据数据flit;以及已在NPI交换机408a处接收到第三写入-数据数据flit。
NPI交换机408a在第五时钟周期接收到NPI协议读取请求的数据flit,且NPI协议写入请求的数据flit继续在NPI交换机408b、408e的分支向下传播。NPI交换机408a根据NPI协议读取请求的数据flit确定目标ID对应于第二输出端口下方的从端点电路。然而,NPI交换机408a(例如在缓冲器中)保持,NPI协议事务请求(NPI协议写入请求)已通过NPI交换机408a的第一输出端口发送并且NPI交换机408a未收到针对该NPI协议事务请求的NPI协议事务响应。因此,NPI交换机408a对NPI交换机408a处的数据flit的传播执行阻挡(例如,NPI交换机408a不传输NPI协议读取请求的数据flit)。NPI交换机408a(以及在一些示例中,任何上游NPI交换机408和根节点404)保持阻断,直到NPI交换机408a接收到针对NPI协议写入请求的NPI协议写入响应。在该阻断状态期间,NPI交换机408a下游的NPI交换机408(比如,NPI交换机408b,408e)可继续传播数据flit,除非例如在下游NPI交换机408处出现分支和相应的阻断条件。
在七个时钟周期之后,四个数据flit已被发送至协议块410f并被协议块410f接收,协议块410f则将NPI协议写入请求转换为由寄存器块212f执行的格式。寄存器块212f此后处理转换的写入请求并将针对转换的写入请求的写入响应发送至协议块410f,协议块410f则根据NPI协议写入响应格式604将该写入响应转换为NPI协议写入响应。NPI协议写入响应由一个数据flit组成,该数据flit包括关于寄存器块212f中的写入是否成功的指示以及数据flit是最后一个信号的指示。然后,NPI协议写入响应的数据flit可以过NPI交换机408e、408b、408a向上游传输回根节点404,比如,同步地或异步地。
在NPI交换机408a处接收到NPI协议写入响应时,NPI交换机408a不再对来自NPI交换机408a(以及在一些示例中,任何来自上游NPI交换机408a和根节点404)的数据flit传输进行阻断。因此,NPI交换机408a在下一个时钟周期通过第二输出端口将NPI协议读取请求的数据flit发送到协议块410a。协议块410a将NPI协议读取请求转换为由寄存器块212a执行的格式。寄存器块212a此后处理转换的读取请求并将针对转换的读取请求的读取响应发送至协议块410a,协议块410a则根据NPI协议读取响应格式608将该读取响应转换为NPI协议读取响应。NPI协议读取响应由两个数据flit组成,其中每个数据flit包括读取数据和关于相应数据flit是否是最后一个信号的指示。然后,NPI协议读取响应的数据flit可过NPI交换机408a向上游传输回根节点404,比如,同步地或异步地。
作为由根节点404对NPI协议事务请求进行序列化以及在发生分支时由NPI交换机408进行阻断的结果,根节点404按照根节点404将NPI协议事务请求发送至NPI交换机408的顺序来接收针对NPI协议事务请求的NPI协议事务响应。因此,根节点404能够维持从主电路接收的事务请求的FIFO缓冲器,并能够基于根节点404接收的NPI协议事务响应的顺序将那些事务请求的相应事务响应发送至主电路。例如,在上述示例中,在根节点404基于所接收的NPI协议读取响应而向第二主电路发送事务响应之前,根节点404可先基于所接收的NPI协议写入响应而将事务响应发送至第一主电路。此外,由于序列化和可能的事务请求阻断,根节点404可在将事务请求发送至树形拓扑之前将响应发送至主电路,如下面进一步详细描述的。
在一些示例中,NPI交换机408可不阻断针对公共从端点电路的串行NPI协议事务请求。在这种情况下,NPI协议事务请求的数据flit的传播不会在NPI交换机408处产生分支情况。从端点电路可处理并发送针对每个顺序接收的NPI协议事务请求的事务响应。在一些示例中,至从端点电路的最后一个NPI交换机408可启动阻断,比如,当从端点电路不包括用于事务请求的缓冲器时,以使从端点电路有足够的时间来处理在先的事务请求。
如前述示例中所描述的实施NPI的益处包括优化写入请求和顺序的读取请求。假设主电路发送写入请求以将数据写入从端点电路的给定地址。此后,主电路可在例如紧接的时钟周期中发送读取请求以自从端点电路的给定地址读取数据。例如,根节点404对这两个事务的顺序化使得在根节点404和主电路接收对写入请求的响应之前可通过各种NPI交换机408传播后续读取请求。因此,在处理或完成写入请求之前,可将读取请求传播至NPI210中的某个节点或块。
图7A和7B是根据一些示例的根节点404的运行流程图。图7A是根节点404处理接收到的事务请求的流程图,7B是根节点404处理接收的事务响应的流程图。
参考图7A,在方框702处,根节点404从一个或多个主电路接收一个或多个事务请求。在方框704处,根节点404对接收到的事务请求进行优先级排序。例如,对按顺序接收的事务请求按照接收事务请求的顺序进行优先级排序,同时(例如,在相同的时钟周期)接收的事务请求根据根节点404执行的仲裁算法(比如轮询算法)进行仲裁,以确定同时接收的事务请求的优先级。在方块706处,根节点404根据在方框704中分配给各个事务请求的优先级来序列化所接收的事务请求。在方框708处,根节点404将接收到的事务请求转换为NPI执行的格式,比如,图6中的NPI协议写入请求格式602和NPI协议读取请求格式606。
在方框710处,可选地,根节点404将转换的事务请求缓冲在例如FIFO缓冲器中。如下文所述,当树形拓扑的后续NPI交换机408禁能(de-assert)“准备接收”信号时,转换的事务请求可在方框710中被缓冲。在方框712处,根节点404将转换的事务请求连续地发送至树形拓扑的后续NPI交换机408。根节点404发送转换的事务请求,例如,首先以转换的事务请求被存储的顺序(例如,FIFO)发送存储在缓冲器中的转换的事务请求,然后发送后续的转换的事务请求。因此,根节点404按照接收的事务请求在方框706中序列化的顺序来连续地发送转换的事务请求。除了以序列化的顺序发送转换的事务请求之外,在一些示例中,根节点还在每个时钟周期发送一个数据flit。单个的数据flit可组成一个转换的事务请求,和/或多个连续传输的数据flit可组成一个已转换的事务请求。
在方框714处,根节点404按照各个对应的转换的事务请求被发送至树形拓扑的后续NPI交换机408的顺序来对所接收的事务请求进行排队。例如,可通过推送至FIFO缓冲器来实现排队。队列维持了已由根节点404处理和发送的接收到的事务请求,因此当根节点404接收到相应的事务响应时,根节点404可将事务响应发送回相应的主电路。如上所述,通过树形拓扑对事务请求进行序列化和阻断可使接收的响应与事务请求的发送顺序一致,因此,接收的事务响应可对应于FIFO缓冲器中的头条目。
图7A中所示的根节点404的运行假设树形拓扑的后续NPI交换机408已使能(assert)“准备接收”信号。在一些示例中,树形拓扑的NPI交换机408在默认状态下即使能“准备接收”信号,并能够在某些条件下禁能“准备接收”信号,比如,当后续NPI交换机408不具有足够的存储空间时。如上所述,如果树形拓扑的后续NPI交换机408禁能了“准备接收”信号,则根节点404可缓冲转换的事务请求,如方框710所示,从而在方框702-708中继续接收和处理事务请求。
参考图7B,在方框752中,根节点404从树形拓扑中的后续NPI交换机408接收具有NPI执行格式的事务响应。在方框754处,根节点404基于图7A的方框714中排队的接收到的事务请求的顺序来确定哪个主电路对应于所接收的事务响应。例如,如上所述,由于可通过序列化和阻断来维持事务请求和事务响应的顺序,所以根节点404可从FIFO缓冲器弹出条目,并确定是哪个主电路将事务请求发送到根节点404的。在方框756处,根节点404基于所接收的事务响应来将事务响应发送至所确定的主电路。根节点404可创建具有所确定的主电路执行的格式的事务响应。
在其他示例中,当在图7A的方框706中串行化从主电路接收的事务请求时,根节点404可向主电路发送响应。通过序列化来合并事务请求,从而可保持事务请求的顺序。因此,根节点404甚至可在事务请求被发送至树形拓扑之前响应主电路。这可避免主电路在发送另一个事务请求之前等待对事务请求的响应而引发的延迟。例如,主电路可向位置发送写入请求,根节点404可接收并序列化写入请求,且根节点404可在根节点404将写入请求发送至树形拓扑之前向主电路发送响应。此外,由于序列化和阻断可确保在位置被读取前正确地对位置进行写入,所以主电路在接收到来自根节点404的响应时可发送相同位置的读取请求,即使在根节点404将写入请求发送至该位置之前读取请求就从主电路被发送。
这些流程图中的运行顺序仅仅是示例,并可以以不同的逻辑顺序执行各种运行。本领域普通技术人员将容易理解可在其他示例中执行不同的运行顺序并且可以对图7A和7B的流程图进行任何修改以执行那些不同的顺序。例如,可在传输方框712中的转换的事务请求之前的任何点处实现方框708的转换,并且例如,方框704处的优先排序、方框706处的序列化、方框710处的缓冲、以及方框714处的排队可针对接收的事务请求或转换的事务请求来执行。此外,本领域普通技术人员将理解,图7A和7B的运行可针对不同的事务请求和事务响应而平行地执行,例如在流水线处理中。例如,可实施各种缓冲器以适应流水线处理或其他处理。
图8A和8B是根据一些示例的NPI交换机408的运行流程图。图8A是NPI交换机408处理接收到的事务请求的流程图,而图8B是NPI交换机408处理接收到的事务响应的流程图。
如下所述,每个NPI交换机408包括1至N缓冲器,这些缓冲器可被实现为接收和发送事务请求。通常,可实现一个或多个缓冲器,例如FIFO缓冲器,以存储正在等待处理和传输的接收的事务请求。此外,可实现一个或多个缓冲器,例如FIFO缓冲器,以存储待决和等待事务响应的传输的事务请求。可实现缓冲器来维持事务请求的序列化。
参考图8A,在方框802处,NPI交换机408确定空间是否可用以接收事务请求。如上所述,可用于接收事务请求的空间可在缓冲器中,以在事务请求等待处理和传输时存储所接收的事务请求。如果空间可用,则“准备接收”信号被使能,其可以是默认状态,如上面参考图7A所述的。如果空间不可用,则NPI交换机408禁能“准备接收”信号,这阻止紧接在前的节点(例如,NPI交换机408或根节点404)发送事务请求。方框802和804可循环直到空间变得可用以接收事务请求,如果“准备接收”信号被禁能,则此时可使能“准备接收”信号。
在方框806处,NPI交换机408在NPI交换机408的输入端口上的树形拓扑中从紧接在前的节点(例如,NPI交换机408或根节点404)接收事务请求。在接收到事物请求时,NPI交换机408可将接收的事务请求存储在FIFO缓冲器中以进行处理和后续的传输。在方框808中,NPI交换机408确定将通过NPI交换机408的哪个输出端口发送事务请求。如前所述,NPI交换机408可通过基于事务请求中的从端点电路的目标ID来识别输出端口从而确定输出端口。在方框810处,NPI交换机408判断先前是否在确定的输出端口之外的输出端口上发送了未决的事务请求。
如果先前没有在确定的输出端口以外的输出端口上传输过未决的事务请求,则在方框812处,NPI交换机408通过确定的输出端口将事务请求发送至紧接的后续节点(例如,NPI交换机408或协议块410),这可包括在各个时钟周期发送事务请求的多个数据flit直到发送完包含“最后信号”指示的数据flit。在传输时,NPI交换机408可从存储事物请求的FIFO缓冲器中弹出所接收的事务请求,并将所传输的事务请求存储(或推送)到另一个FIFO缓冲器中。通过从存储事物请求的FIFO缓冲区中弹出所接收到的事务请求,空间可在FIFO缓冲区中变得可用,以便随后接收另一个事务请求。
对于方框810中的判断,所存储的发送的事务请求可指示未决的事物请求已在先前被发送。返回参考方框810,该判断可参考任何存储的先前发送的事务请求的目标ID。如果没有存储发送的事务请求,则方框810中的判断为否,并且事务请求在方框812中被发送。如果存储了传输的事务请求,同时任何存储的传输的事务请求(例如,第一个或最后一个未决请求)的目标指示,那些请求是在NPI交换机408的与在方框806处所确定的输出端口相同的输出端口上传输的,则方框810的判断为否,并且事务请求在方框812中被发送。如果存储了传输的事务请求,同时任何存储的传输的事务请求(例如,第一个或最后一个未决请求)的目标指示那些请求是在NPI交换机408的与在方框806处所确定的输出端口不同的输出端口上传输的,则方框810的判断为是,并且不发送事务请求。在这种情况下,方框810的判断可继续循环直到判断为否。图8B更详细地描述了可能导致确定变为否的未决事务请求的清除。
方框810处的“是”的判断指示存在分支条件。当通过运行方框810的判断和随后的循环而发生分支条件时,通过阻断传输事务请求可维持事务请求的序列化,这反过来可维持事务响应的正确序列化。
参考图8B,在方框852处,NPI交换机408在输出端口上接收事务响应。在方框854处,NPI交换机408清除最早的未决事务请求。例如,NPI交换机408弹出存储在FIFO缓冲器中的发送的事务请求,该事务请求是最早的未决事务请求。通过清除未决的传输事务请求,可去除NPI交换机408处的分支条件(例如,通过去除可在方框810中导致“是”判断的条件)。在方框856处,NPI交换机408在NPI交换机408的输入端口上将事务响应发送至紧接在前的节点(例如,NPI交换机408或根节点404)
在图8A和图8B所述的示例中,当在方框810中判断分支条件发生时,NPI交换机408可继续接收事务请求。接收的事务请求可存储在适当的FIFO缓冲器中,直到没有可用空间用于在该FIFO缓冲器中存储接收的事务请求。在分支条件期间,不发送任何事务请求,因此,没有接收的事务请求从存储接收的事务请求的FIFO缓冲器中弹出。这可能导致FIFO缓冲器变满而没有可用空间用于存储收到的事务请求。一旦没有可用空间用于存储收到的事务请求,则“准备接收”信号在方框804处被禁能,且NPI交换机408不再从前一节点接收进一步的事务请求。在该示例中,可通过树形拓扑传播事务请求,直到达到树形拓扑中的分支条件且直到用于存储接收的事务请求的可用空间变满。这可通过继续传播事务请求来减少延迟,只要维持序列化即可。
在其他示例中,一旦在树形拓扑中发生分支条件,则向树形拓扑中的先前节点和根节点404指示分支条件已经发生并阻断树形拓扑中的任何事务请求传输的信号可被使能或禁能。
这些流程图中的运行顺序仅仅是示例,并可以不同的逻辑顺序执行各种运行。本领域普通技术人员将容易理解可在其他示例中执行不同运行顺序并且可以对图8A和8B的流程图进行任何修改以实现那些不同的顺序。此外,本领域普通技术人员将理解,图8A和8B的运行可针对不同的事务请求和事务响应而并行地执行,例如在流水线处理中。例如,可实现各种缓冲器以适应流水线处理或其他处理。例如,NPI交换机408可在方框806处实现缓冲器以接收事务请求,并在方框812处在相同的时钟周期中发送另一个事务请求。
图9是根据一些示例的协议块410的运行的流程图。在方框902处,协议块410从树形拓扑中的前一NPI交换机408接收具有NPI执行格式(例如,图6中的NPI协议写入请求格式602和NPI协议读取请求格式606)的事务请求。在方框904处,协议块410将接收的事务请求转换为从端点电路执行的格式(例如,根据APB3协议)。在方框906处,协议块410将转换的事务请求发送至从端点电路。方框904和906的转换和传输可分别在每个数据flit和/或每个事务请求的基础上执行。例如,如果一个事务请求是三个数据flit,则协议块410可实现用于存储接收的数据flit的缓冲器,直到接收到整个事务请求,然后协议块410可转换整个事务请求。
在方框908处,协议块410自从端点电路接收具有由从端点电路执行格式的事务响应。在方框910处,协议块410将接收的事务响应转换为NPI执行的格式(例如,图6中的NPI协议写入响应格式604和NPI协议读取响应格式608)。在方框912处,协议块410将转换的事务响应发送至树形拓扑中的前一NPI交换机408。例如,协议块410可基于每个时钟周期的数据flit来将转换的事务响应发送至前一NPI交换机408。
该流程图中的运行顺序仅仅是示例,并可以以不同的逻辑顺序实现各种运行。本领域普通技术人员将容易理解可在其他示例中执行不同的运行顺序并且可以对图9的流程图进行任何修改以实现那些不同的顺序。此外,本领域普通技术人员将理解,图9的运行可针对不同的事务请求和事务响应来并行地执行,例如在流水线处理中。例如,可实现各种缓冲器以适应流水线处理或其他处理。
图10是根据一些示例的SoC 102的至少一部分的简化示意图。例如,所示SoC 102包括在处理***104、可编程逻辑区域110和其他IP 1002(比如存储器控制器1004)之间互连的NoC 106。例如,NoC 106包括通过互连的NoC数据包交换机206和路由208连接至NSU204的NMU 202,其中互连的NoC数据包交换机206和路由208形成具有物理信道306和虚拟信道308的网络214。NoC 106还包括NPI 210,其包括根节点404(驻留在处理***104中的PMC402上)、树形拓扑中的NPI交换机408以及连接至从端点电路的协议块410。为简单起见,没有具体示出协议块410,但是其可以位于布置在相应的从端点电路之前的树形拓扑中。例如,从端点电路包括NoC数据包交换机206的寄存器块212、NMU 202、NSU 204、存储器控制器1004和/或其他。
图11是根据一些示例的SoC 102的示例性简化布图规划。布图规划包括用于处理***104、可编程逻辑区域110、NoC 106和其他IP 1002以及输入/输出(IO)1102的相应区域。IO 1102沿着SoC 102的外部包围SoC 102的其他区域。用于NoC 106的区域水平地延伸穿过SoC 102,其中具有第一水平部分1104和第二(可选的)水平部分1106,且该区域垂直地穿过SoC 102,其中具有第一垂直部分1108和第二垂直部分1110。
由于NoC 106(且因此也是NPI 210)在图11的示例中延伸穿过SoC 102,所以NPI210可包括在不同时钟域区域之间的边界处的异步交叉(asynchronous crossing)。SoC102可包括多个时钟域区域,NoC 106和NPI 210通过这些区域进行交叉。时钟域区域通常在不同的相应时钟信号上操作,且那些时钟信号可在各种时钟信号之间具有一些延迟差异或相位差异。因此,异步交叉可解决和适应不同时钟域区域中的时钟信号之间的差异。
本申请所述示例可实现分布式、低开销、高性能和独立的***互连,比如NPI 210。NPI 210可实现树形拓扑,用于将存储器映射的事务传递至从端点电路。NPI 210可分布在芯片的大面积上,比如基本上整个芯片。此外,在包括可编程逻辑区域110的IC中,NPI 210可独立于配置互连108而对从端点电路进行写入和读取以对可编程逻辑区域110进行编程,并且不使用可编程逻辑区域110的结构的资源。因此,在实现NoC 106的示例中,可在对可编程逻辑区域110进行编程之前使用NPI 210对NoC 106进行编程。这可使SoC 102在对可编程逻辑区域110的结构进行编程之前实现***级编程以配置SoC 102。NPI 210还可以是传递机制,用于控制可在整个SoC 102中独立进行编程或控制的块,比如用于部分重新配置脚本。
虽然前述内容针对具体示例,但是在不脱离本申请的基本范围的情况下可以设计其他和进一步的示例,并且其范围由随后的权利要求确定。
Claims (20)
1.一种集成电路,其特征在于,所述集成电路包括:
芯片上的处理***;
所述芯片上的电路块;以及
所述芯片上的可配置通信***,所述可配置通信***包括可配置网络和***互连,所述处理***和所述电路块连接至所述可配置网络,所述***互连包括:
根节点;以及
多个交换机,所述根节点和所述多个交换机连接成树形拓扑,所述树形拓扑的第一分支连接至所述可配置网络的相应从端点电路,所述可配置网络的所述从端点电路是通过所述***互连可编程的,以配置所述可配置网络。
2.根据权利要求1所述的集成电路,其特征在于,所述树形拓扑的至少一个第二分支连接至不同于所述可配置网络的另一个电路的相应从端点电路。
3.根据权利要求1所述的集成电路,其特征在于,所述可配置网络的所述从端点电路中的每个从端点电路包括可寻址寄存器。
4.根据权利要求1所述的集成电路,其特征在于,所述根节点被布置在所述处理***中。
5.根据权利要求1所述的集成电路,其特征在于,所述***互连在至少一个方向上延伸跨过所述芯片。
6.根据权利要求1所述的集成电路,其特征在于,所述***互连延伸跨过多个时钟域。
7.根据权利要求1所述的集成电路,其特征在于,所述集成电路还包括配置互连,并且其中:
所述电路块是可编程逻辑区域;
所述处理***通过所述配置互连连接至所述可编程逻辑区域,用于对所述可编程逻辑区域进行编程;以及
所述可配置网络的所述从端点电路可通过所述***互连进行编程而无需使用所述可编程逻辑区域的资源。
8.根据权利要求1所述的集成电路,其中:
所述根节点是所述树形拓扑的单一接口,被配置为接收第一事务请求,所述第一事务请求源自所述可配置网络外部的部件;
所述根节点被配置为将第二事务请求发送至所述多个交换机中的一个交换机,所述第二事务请求对应于所述第一事务请求并包括相应一个从端点电路的目标标识;
接收所述第二事务请求的所述多个交换机中的一些交换机被配置为基于所述目标标识来确定在哪个后续分支上发送所述第二事务请求。
9.根据权利要求8所述的集成电路,其特征在于,接收所述第二事务请求的所述多个交换机中的一些交换机还被配置为当在先事务请求在后续分支上保持未决时启动阻断,所述后续分支与发送所述第二事务请求的所述确定的后续分支不同。
10.一种用于运行集成电路的方法,其特征在于,所述方法包括:
在芯片上的根节点处从所述芯片上的主电路接收第一事务请求;
将第二事务请求从所述根节点发送至树形拓扑,所述树形拓扑包括在所述芯片上的交换机,所述第二事务请求对应于所述第一事务请求并包括所述第一事务请求指向的从端点电路的目标标识;
在所述树形拓扑中的至少一个交换机处接收所述第二事务请求;
对于接收所述第二事务请求的所述至少一个交换机中的每个交换机,基于所述目标标识来确定在所述树形拓扑的哪个后续分支上发送所述第二事务请求;以及
对于接收所述第二事务请求的所述至少一个交换机中的每个交换机,在所述树形拓扑的所述确定的后续分支上发送所述第二事务请求,其中所述树形拓扑的每个分支均连接至各自的从端点电路,所述从端点电路中的至少一些从端点电路是在所述芯片上的可配置网络的可配置部件。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括在所述根节点处将所述第一事务请求从所述主电路执行的格式转换为所述第二事务请求,所述第二事务请求具有所述树形拓扑中执行的格式。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括在接口处的协议块处将所述第二事务请求从所述树形拓扑中执行的格式转换为第三事务请求,其中所述接口在所述树形拓扑的分支和所述第一事务请求指向的所述从端点电路之间,所述第三事务请求具有所述第一事务请求指向的所述从端点电路执行的格式。
13.根据权利要求10所述的方法,其特征在于,所述方法进一步包括:
对于接收所述第二事务请求的所述至少一个交换机中的每个交换机:
判断是否存在分支条件,其中当在先事务请求在所述树形拓扑的后续分支上保持未决时所述分支条件存在,所述后续分支与发送所述第二事务请求的所述确定的后续分支不同;以及
在所述分支条件存在时启动阻断,其中启动所述阻断的对应的交换机在所述阻断期间不发送任何事务请求。
14. 根据权利要求10所述的方法,其特征在于,所述方法进一步包括:
在所述树形拓扑的连接至所述第一事务请求指向的所述从端点电路的分支处接收第一事务响应,其中所述第一事务响应由所述第一事务请求指向的所述从端点电路响应于所述第二事务请求而生成;以及
通过接收所述第二事务请求的所述至少一个交换机将第二事务响应发送至所述根节点。
15.根据权利要求10所述的方法,其特征在于,所述方法还包括响应于所述第一事务请求而将第一响应从所述根节点发送至所述主电路,所述第一响应是在所述根节点响应于所述第二事务请求接收到来自所述树形拓扑的第二响应之前从所述根节点发送。
16.一种集成电路装置,其特征在于,所述集成电路装置包括:
在芯片上的集成电路,所述集成电路包括:
在所述芯片上的处理***;
在所述芯片上的可编程逻辑区域;
在所述芯片上的配置互连,所述配置互连连接在所述处理***和所述可编程逻辑区域之间,所述处理***被配置为通过所述配置互连对所述可编程逻辑区域进行编程;以及
在所述芯片上的可配置通信***,所述可配置通信***包括可配置网络和***互连,所述可配置网络连接至所述处理***和所述可编程逻辑区域,所述可配置网络的可编程部件通过所述***互连可被编程以通过所述可配置网络提供通信信道,所述***互连包括:
根节点;以及
交换机,所述根节点和所述交换机连接为树形拓扑,所述树形拓扑的第一分支连接至所述可配置网络的所述可编程部件。
17.根据权利要求16所述的集成电路装置,其特征在于,所述***互连在至少一个方向上延伸跨过所述芯片,并延伸跨过所述芯片的多个时钟域。
18.根据权利要求16所述的集成电路装置,其特征在于,所述可配置网络的可编程部件可通过所述***互连进行编程而无需使用所述可编程逻辑区域的资源。
19.根据权利要求16所述的集成电路装置,其特征在于,所述集成电路还包括所述芯片上的存储器控制器,所述树形拓扑的第二分支连接至所述存储器控制器的可编程部件。
20.根据权利要求16所述的集成电路装置,其特征在于:
所述根节点是所述树形拓扑的单一接口,所述单一接口被配置为接收第一事务请求,所述第一事务请求源自所述可配置网络外部的部件;
所述根节点被配置为将第二事务请求发送至所述交换机中的一个交换机,所述第二事务请求对应于所述第一事务请求并包括从端点电路的目标标识;以及
接收所述第二事务请求的所述交换机中的每个交换机被配置为基于所述目标标识来确定在哪个后续分支上发送所述第二事务请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/936,916 | 2018-03-27 | ||
US15/936,916 US10621129B2 (en) | 2018-03-27 | 2018-03-27 | Peripheral interconnect for configurable slave endpoint circuits |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309526A CN110309526A (zh) | 2019-10-08 |
CN110309526B true CN110309526B (zh) | 2024-06-04 |
Family
ID=68056231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910233085.0A Active CN110309526B (zh) | 2018-03-27 | 2019-03-26 | 用于可配置从端点电路的***互连 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10621129B2 (zh) |
CN (1) | CN110309526B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10673439B1 (en) | 2019-03-27 | 2020-06-02 | Xilinx, Inc. | Adaptive integrated programmable device platform |
US10891132B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Flow convergence during hardware-software design for heterogeneous and programmable devices |
US10891414B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Hardware-software design flow for heterogeneous and programmable devices |
US11301295B1 (en) | 2019-05-23 | 2022-04-12 | Xilinx, Inc. | Implementing an application specified as a data flow graph in an array of data processing engines |
US11188312B2 (en) | 2019-05-23 | 2021-11-30 | Xilinx, Inc. | Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices |
US11580057B2 (en) * | 2019-10-28 | 2023-02-14 | Xilinx, Inc. | Subsystem for configuration, security, and management of an adaptive system |
US10977018B1 (en) | 2019-12-05 | 2021-04-13 | Xilinx, Inc. | Development environment for heterogeneous devices |
US11336287B1 (en) | 2021-03-09 | 2022-05-17 | Xilinx, Inc. | Data processing engine array architecture with memory tiles |
US11520717B1 (en) | 2021-03-09 | 2022-12-06 | Xilinx, Inc. | Memory tiles in data processing engine array |
US11848670B2 (en) | 2022-04-15 | 2023-12-19 | Xilinx, Inc. | Multiple partitions in a data processing array |
US12019576B2 (en) * | 2022-08-02 | 2024-06-25 | Xilinx, Inc. | Systems and methods to transport memory mapped traffic amongst integrated circuit devices |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299671A (zh) * | 2007-04-30 | 2008-11-05 | 上海贝尔阿尔卡特股份有限公司 | 用于组播数据包发送与接收的方法和装置 |
KR101541534B1 (ko) * | 2014-07-29 | 2015-08-03 | 성균관대학교산학협력단 | 광학 네트워크 온 칩의 광 라우터 설계 장치 및 방법 |
CN106936645A (zh) * | 2017-04-19 | 2017-07-07 | 西安电子科技大学 | 基于排队论的树形网络拓扑结构的优化方法 |
CN107070703A (zh) * | 2017-03-20 | 2017-08-18 | 同济大学 | 一种基于路径分析的2d mesh片上网络交换机测试方法 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222122A (en) * | 1992-03-31 | 1993-06-22 | At&T Bell Laboratories | Payphone having master and slave modes |
EP0699008A1 (en) * | 1994-08-23 | 1996-02-28 | BELL TELEPHONE MANUFACTURING COMPANY Naamloze Vennootschap | Method for rerouting a data stream |
US20020004843A1 (en) * | 2000-07-05 | 2002-01-10 | Loa Andersson | System, device, and method for bypassing network changes in a routed communication network |
US7290162B2 (en) | 2001-02-14 | 2007-10-30 | Clearspeed Solutions Limited | Clock distribution system |
GB0112017D0 (en) * | 2001-05-17 | 2001-07-11 | Koninkl Philips Electronics Nv | Wireless master-slave distributed communications network |
US6781407B2 (en) | 2002-01-09 | 2004-08-24 | Xilinx, Inc. | FPGA and embedded circuitry initialization and processing |
US7420392B2 (en) | 2001-09-28 | 2008-09-02 | Xilinx, Inc. | Programmable gate array and embedded circuitry initialization and processing |
US7149829B2 (en) | 2003-04-18 | 2006-12-12 | Sonics, Inc. | Various methods and apparatuses for arbitration among blocks of functionality |
US8020163B2 (en) | 2003-06-02 | 2011-09-13 | Interuniversitair Microelektronica Centrum (Imec) | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
US7653820B1 (en) | 2003-10-31 | 2010-01-26 | Xilinx, Inc. | System and method for securing using decryption keys during FPGA configuration using a microcontroller |
US7185309B1 (en) | 2004-01-30 | 2007-02-27 | Xilinx, Inc. | Method and apparatus for application-specific programmable memory architecture and interconnection network on a chip |
US7689726B1 (en) | 2004-10-01 | 2010-03-30 | Xilinx, Inc. | Bootable integrated circuit device for readback encoding of configuration data |
US7328335B1 (en) | 2004-10-01 | 2008-02-05 | Xilinx, Inc. | Bootable programmable logic device for internal decoding of encoded configuration data |
US7466701B2 (en) * | 2004-11-12 | 2008-12-16 | Stmicroelectronics S.R.L. | Routing procedure and system, corresponding network, such as a network on chip (NOC), and computer program product therefor |
US7281093B1 (en) | 2004-12-21 | 2007-10-09 | Xilinx, Inc. | Memory apparatus for a message processing system and method of providing same |
US7199608B1 (en) | 2005-02-17 | 2007-04-03 | Xilinx, Inc. | Programmable logic device and method of configuration |
US7380035B1 (en) | 2005-03-24 | 2008-05-27 | Xilinx, Inc. | Soft injection rate control for buses or network-on-chip with TDMA capability |
US7788625B1 (en) | 2005-04-14 | 2010-08-31 | Xilinx, Inc. | Method and apparatus for precharacterizing systems for use in system level design of integrated circuits |
US7301822B1 (en) | 2005-05-18 | 2007-11-27 | Xilinx, Inc. | Multi-boot configuration of programmable devices |
US7650248B1 (en) | 2006-02-10 | 2010-01-19 | Xilinx, Inc. | Integrated circuit for in-system signal monitoring |
US7454658B1 (en) | 2006-02-10 | 2008-11-18 | Xilinx, Inc. | In-system signal analysis using a programmable logic device |
US7831801B1 (en) | 2006-08-30 | 2010-11-09 | Xilinx, Inc. | Direct memory access-based multi-processor array |
US7521961B1 (en) | 2007-01-23 | 2009-04-21 | Xilinx, Inc. | Method and system for partially reconfigurable switch |
US7500060B1 (en) | 2007-03-16 | 2009-03-03 | Xilinx, Inc. | Hardware stack structure using programmable logic |
US9495290B2 (en) | 2007-06-25 | 2016-11-15 | Sonics, Inc. | Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering |
US7576561B1 (en) | 2007-11-13 | 2009-08-18 | Xilinx, Inc. | Device and method of configuring a device having programmable logic |
US8006021B1 (en) | 2008-03-27 | 2011-08-23 | Xilinx, Inc. | Processor local bus bridge for an embedded processor block core in an integrated circuit |
KR101210273B1 (ko) * | 2008-12-18 | 2012-12-10 | 한국전자통신연구원 | 온칩 네트워크 토폴로지 합성 방법 |
US20100158023A1 (en) * | 2008-12-23 | 2010-06-24 | Suvhasis Mukhopadhyay | System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions |
US8214694B1 (en) | 2009-03-12 | 2012-07-03 | Xilinx, Inc. | Lightweight probe and data collection within an integrated circuit |
US9436623B2 (en) * | 2012-09-20 | 2016-09-06 | Intel Corporation | Run-time fabric reconfiguration |
US9608684B2 (en) * | 2013-02-15 | 2017-03-28 | Washington State University | Network-on-chip based computing devices and systems |
US9230112B1 (en) | 2013-02-23 | 2016-01-05 | Xilinx, Inc. | Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis |
US9165143B1 (en) | 2013-03-15 | 2015-10-20 | Xilinx, Inc. | Image file generation and loading |
US9336010B2 (en) | 2013-03-15 | 2016-05-10 | Xilinx, Inc. | Multi-boot or fallback boot of a system-on-chip using a file-based boot device |
US9473388B2 (en) * | 2013-08-07 | 2016-10-18 | Netspeed Systems | Supporting multicast in NOC interconnect |
US9152794B1 (en) | 2013-09-05 | 2015-10-06 | Xilinx, Inc. | Secure key handling for authentication of software for a system-on-chip |
US9411688B1 (en) | 2013-12-11 | 2016-08-09 | Xilinx, Inc. | System and method for searching multiple boot devices for boot images |
US9652410B1 (en) | 2014-05-15 | 2017-05-16 | Xilinx, Inc. | Automated modification of configuration settings of an integrated circuit |
US9652252B1 (en) | 2014-10-29 | 2017-05-16 | Xilinx, Inc. | System and method for power based selection of boot images |
US9323876B1 (en) | 2014-11-24 | 2016-04-26 | Xilinx, Inc. | Integrated circuit pre-boot metadata transfer |
EP3089080A1 (en) * | 2015-04-27 | 2016-11-02 | Universität Zürich | Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems |
US10243882B1 (en) | 2017-04-13 | 2019-03-26 | Xilinx, Inc. | Network on chip switch interconnect |
-
2018
- 2018-03-27 US US15/936,916 patent/US10621129B2/en active Active
-
2019
- 2019-03-26 CN CN201910233085.0A patent/CN110309526B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299671A (zh) * | 2007-04-30 | 2008-11-05 | 上海贝尔阿尔卡特股份有限公司 | 用于组播数据包发送与接收的方法和装置 |
KR101541534B1 (ko) * | 2014-07-29 | 2015-08-03 | 성균관대학교산학협력단 | 광학 네트워크 온 칩의 광 라우터 설계 장치 및 방법 |
CN107070703A (zh) * | 2017-03-20 | 2017-08-18 | 同济大学 | 一种基于路径分析的2d mesh片上网络交换机测试方法 |
CN106936645A (zh) * | 2017-04-19 | 2017-07-07 | 西安电子科技大学 | 基于排队论的树形网络拓扑结构的优化方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190303323A1 (en) | 2019-10-03 |
CN110309526A (zh) | 2019-10-08 |
US10621129B2 (en) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309526B (zh) | 用于可配置从端点电路的***互连 | |
US8316171B2 (en) | Network on chip (NoC) with QoS features | |
CN112292670B (zh) | 调试控制器电路 | |
US7143221B2 (en) | Method of arbitrating between a plurality of transfers to be routed over a corresponding plurality of paths provided by an interconnect circuit of a data processing apparatus | |
US8285912B2 (en) | Communication infrastructure for a data processing apparatus and a method of operation of such a communication infrastructure | |
US7526626B2 (en) | Memory controller configurable to allow bandwidth/latency tradeoff | |
JP6899852B2 (ja) | ストレージ装置 | |
KR20210033996A (ko) | 전용 저 레이턴시 링크를 사용한 다수의 하드웨어 가속기에 대한 통합된 어드레스 공간 | |
JP4621604B2 (ja) | バス装置、バスシステムおよび情報転送方法 | |
CN111078609B (zh) | 一种基于FPGA的PCIe转三总线接口及方法 | |
JPH01205366A (ja) | データを転送するための方法およびそのためのデータ転送制御器 | |
US20020184453A1 (en) | Data bus system including posted reads and writes | |
JPH0981508A (ja) | 通信方法及び装置 | |
KR20120040535A (ko) | 버스 시스템 및 그것의 동작 방법 | |
JP3125739B2 (ja) | バススイッチ | |
WO2021113778A1 (en) | Data transfers between a memory and a distributed compute array | |
US9104819B2 (en) | Multi-master bus architecture for system-on-chip | |
JP2022526918A (ja) | 集積回路デバイスの機能ブロックを構成および部分的に再構成するための回路ならびに集積回路デバイスの機能ブロックを構成および部分的に再構成する方法 | |
US6874043B2 (en) | Data buffer | |
US20020046307A1 (en) | A data buffer | |
CN113805939A (zh) | 用于高效的中断传播和处理的层级内联中断方案的***和方法 | |
GB2371647A (en) | A bidirectional bus interface converter using two FIFO buffers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |