CN107113252A - 用于片上网络的并行方向解码电路 - Google Patents
用于片上网络的并行方向解码电路 Download PDFInfo
- Publication number
- CN107113252A CN107113252A CN201580062792.8A CN201580062792A CN107113252A CN 107113252 A CN107113252 A CN 107113252A CN 201580062792 A CN201580062792 A CN 201580062792A CN 107113252 A CN107113252 A CN 107113252A
- Authority
- CN
- China
- Prior art keywords
- packet
- router
- logic
- output port
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/72—Routing based on the source address
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- 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/33—Flow control; Congestion control using forward notification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
Abstract
接收第一分组和与所述第一分组相关联的第一方向。基于与第一分组相关联的第一方向将第一分组转发到第一路由器的多个输出端口中的输出端口。确定与第一分组相关联的第二方向。第二方向至少基于第一分组的地址。通过第一路由器的输出端口将第一分组和第二方向转发到第二路由器。
Description
相关申请的交叉引用
本申请要求2014年12月17日提交的、题为“PARALLEL DIRECTION DECODE CIRCUITSFOR NETWORK-ON-CHIP”的美国非临时专利申请No.14/574,106的优先权和权益,通过引用而将其全部内容结合于本文中。
技术领域
本公开通常涉及计算机开发领域,并且更具体地,涉及用于片上网络(NoC)的并行方向解码电路。
背景技术
随着核和知识产权(IP)块的数量在多核处理器中增加,用于核之间管芯上通信的片上网络(NoC)在使能可伸缩性能中是重要的。在这样的实例中,部件之间的通信变成关键的功率和性能限制者。NoC使能用于与路由器通信的片上布线资源的高效共享以控制和仲裁通信部件之间的数据流动。
NoC跨芯片在核或其它逻辑块之间输送数据。等待时间是关键的性能度量并且作为通过网络的总延迟而被测量。没有业务或仲裁开销的网络以网速发送数据(只有互连和转发器)。为了接近这个等待时间,电路交换NoC移除路由内存储开销。此外,混合分组/电路交换NoC将仲裁移至分组交换阶段以提高资源利用率。通过这些网络中的路由器的分组交换部分的关键路径可涉及若干操作,诸如:i)如果需要的话,锁存数据,ii)解码相对于当前路由器的方向,iii)仲裁以确定用于在每个输出端口处竞争传输的优先级,以及iv)将数据发送到下一个路由器。
附图说明
图1说明了根据某些实施例的包括多核处理器的示例计算系统的框图。
图2说明了根据某些实施例的包括片上网络(NoC)系统的处理器的框图,所述片上网络系统包括多个路由器。
图3说明了根据某些实施例的说明使用顺序地址解码和分组仲裁的路由器的示例IN端口和OUT端口的框图。
图4说明了根据某些实施例的说明使用并行地址解码和分组仲裁的路由器的示例IN端口和OUT端口的框图。
图5说明了根据某些实施例的用于并行执行地址解码和分组仲裁的示例方法。
图6说明了根据某些实施例的示例方向解码逻辑。
图7说明了根据某些实施例的示例计算系统的另一个框图。
在各种附图中相似的附图标记和名称指示相似的元件。
具体实施方式
在下列描述中,阐述了许多特定细节,诸如特定类型的处理器和系统配置、特定的硬件结构、特定的体系结构和微体系结构的细节、特定的寄存器配置、特定的指令类型、特定的系统部件、特定的测量/高度、特定的处理器流水线阶段和操作等等的示例,以便于提供对本公开的全面理解。然而,不必使用这些特定细节来实施本公开对本领域技术人员来说将是显然的。在其它实例中,并未详细描述公知的部件或方法,诸如特定的和备选的处理器体系结构、用于所描述的算法的特定的逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码形式的算法的特定表达、特定的断电和门控技术/逻辑以及计算机系统的其它特定的操作细节,以便于避免不必要地混淆本公开。
尽管可以参考特定的集成电路中(诸如计算平台或微处理器中)的能量节约和能量效率来描述下列实施例,但是其它实施例是可应用于其它类型的集成电路和逻辑装置的。本文所描述的实施例的类似技术和教导可以应用于其它类型的电路或半导体装置,所述其它类型的电路或半导体装置也可以受益于更好的能量效率和能量节约。例如,所公开的实施例不限于桌上型计算机系统或UltrabooksTM,而是也可以被用于其它装置(诸如服务器计算机系统、手持装置、平板电脑、其它薄的笔记本电脑、片上系统(SOC)装置)和嵌入式应用中。手持装置的某些示例包括手机、因特网协议装置、数字照相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者可以执行下面所教导的功能和操作的任何其它系统。此外,本文所描述的设备、方法和系统不限于物理计算装置,而是也可以涉及用于能量节约和效率的软件优化。正如在下面的描述中将会变得容易明白的,本文所描述的方法、设备和系统的实施例(无论是关于硬件、固件、软件还是其组合)对于用性能考虑因素平衡的‘绿色技术’未来是至关重要的。
随着计算系统的进步,其中的部件变得更加复杂。结果,用于部件之间耦合和通信的互连体系结构也增加了复杂度,以保证满足带宽需求以用于最佳部件操作。此外,不同的市场细分要求互连体系结构的不同方面以适应市场的需要。例如,服务器要求更高的性能,而移动生态系统有时能够为了节能而牺牲总性能。但是,在最大节能的情况下提供最高可能的性能是大多数构造的单一目的。在下面,讨论将潜在地受益于本文所描述的公开的若干方面的多个互连。
参见图1,描绘了用于包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或者处理装置,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或者执行代码的其它装置。处理器100在一个实施例中包括至少两个核-核101和102,其可以包括不对称的核或对称的核(说明的实施例)。然而,处理器100可以包括可以是对称的或者不对称的任何数量的处理元件。
在一个实施例中,处理元件指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够为处理器保持状态(诸如执行状态或体系结构状态)的任何其它元件。换句话说,处理元件在一个实施例中指能够与代码(诸如软件线程、操作系统、应用或其它代码)独立相关的任何硬件。物理处理器(或处理器插槽)典型地指集成电路,所述集成电路潜在地包括任何数量的其它处理元件,诸如核或硬件线程。
核常常指位于能够维持独立的体系结构状态的集成电路上的逻辑,其中每个独立维持的体系结构状态与至少某些专用的执行资源相关联。与核相反,硬件线程典型地指位于能够维持独立的体系结构状态的集成电路上的任何逻辑,其中独立维持的体系结构状态共享对执行资源的访问。正如可以看到的,当某些资源被共享而其它资源被专用于体系结构状态时,核和硬件线程的命名之间的线路重叠。但是常常,核和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够在每个逻辑处理器上单独地调度操作。
如在图1中所说明的,物理处理器100包括两个核-核101和102。在这里,核101和102被认为是对称的核,即具有相同的配置、功能单元和/或逻辑的核。在另一个实施例中,核101包括乱序处理器核,而核102包括按序处理器核。然而,可以从任何类型的核(诸如本地的核、软件管理的核、适于执行本地指令集体系结构(ISA)的核、适于执行翻译的指令集体系结构(ISA)的核、协同设计的核或其它已知的核)中单独地选择核101和102。在不同种类的核环境(即不对称的核)中,某种形式的翻译(诸如二进制译码)可以被利用来在一个或两个核上调度或执行代码。但是为了帮助讨论,在下面进一步详细地描述核101中说明的功能单元,同时核102中的单元在所描绘的实施例中以类似的方式进行操作。
正如所描绘的,核101包括两个硬件线程101a和101b,所述两个硬件线程还可以被称为硬件线程槽101a和101b。因此,软件实体(诸如操作系统)在一个实施例中潜在地把处理器100视为四个分开的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。正如上面所提到的,第一线程与体系结构状态寄存器101a相关联,第二线程与体系结构状态寄存器101b相关联,第三线程可与体系结构状态寄存器102a相关联,并且第四线程可与体系结构状态寄存器102b相关联。在这里,如上所述的,所述体系结构状态寄存器(101a、101b、102a和102b)中的每个体系结构状态寄存器可以被称为处理元件、线程槽或者线程单元。正如所说明的,在体系结构状态寄存器101b中复制体系结构状态寄存器101a,所以能够为逻辑处理器101a和逻辑处理器101b存储单独的体系结构状态/上下文。在核101中,也可以为线程101a和101b复制其它更小的资源,诸如分配器和重命名器块130中的指令指针和重命名逻辑。可以通过划分来共享某些资源,诸如重排序/收回(retirement)单元135中的重排序缓冲器、ILTB 120、装入/存储缓冲器、以及队列。潜在地充分共享其它资源,诸如通用内部寄存器、一个或多个页表基址寄存器、低层数据高速缓冲存储器和数据TLB115、一个或多个执行单元140、以及乱序单元135的若干部分。
处理器100常常包括其它资源,所述其它资源可以被充分共享、通过划分被共享或者被处理元件专用/专用于处理元件。在图1中,说明了具有处理器的说明性的逻辑单元/资源的纯粹示范的处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何功能单元,以及包括未被描绘的任何其它已知的功能单元、逻辑或固件。正如所说明的,核101包括简化的、有代表性的乱序(OOO)处理器核。但是,在不同的实施例中可以利用按序处理器。所述OOO核包括分支目标缓冲器120以预测将要被执行/采用的分支,并且包括指令翻译缓冲器(I-TLB)120以存储指令的地址翻译条目。
核101进一步包括耦合至取回单元120以解码取回的元素的解码模块125。取回逻辑在一个实施例中包括分别与线程槽101a、101b相关联的单独的定序器。通常,核101与第一ISA相关联,所述第一ISA定义/指定能够在处理器100上执行的指令。常常,是第一ISA的一部分的机器代码指令包括指令的一部分(被称为操作码),所述指令的一部分引用/指定将要被执行的指令或操作。解码逻辑125包括根据它们的操作码辨别这些指令并且将解码的指令在流水线中传递以用于如由第一ISA定义的那样处理的电路。例如,正如下面更详细地讨论的,解码器125在一个实施例中包括被设计为或者适于辨别特定指令(诸如事务指令)的逻辑。作为通过解码器125辨别的结果,体系结构或核101采取特定的、预定义的动作以执行与适当的指令相关联的任务。重要的是要注意可以响应于单个或多个指令来执行本文所描述的任何的任务、块、操作和方法;所述指令中的某些可以是新的或者旧的指令。注意,解码器126在一个实施例中辨别相同的ISA(或其子集)。备选地,在不同种类的核环境中,解码器126辨别第二ISA(或者是第一ISA的子集或者是截然不同的ISA)。
在一个示例中,分配器和重命名器块130包括分配器以预留资源,诸如寄存器文件以存储指令处理结果。然而,线程101a和101b潜在地能够乱序执行,其中分配器和重命名器块130还预留其它资源,诸如重排序缓冲器以追踪指令结果。单元130还可以包括寄存器重命名器以将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序/收回单元135包括部件(诸如上面提到的重排序缓冲器、装入缓冲器和存储缓冲器)以支持乱序执行以及后面的以乱序执行的指令的按序收回。
调度器和一个或多个执行单元的块140在一个实施例中包括调度器单元以在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与所述执行单元相关联的寄存器文件以存储信息指令处理结果。示范的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、装入执行单元、存储执行单元和其它已知的执行单元。
低层数据高速缓冲存储器和数据翻译缓冲器(D-TLB)150耦合至一个或多个执行单元140。数据高速缓冲存储器将要存储最近使用的/操作的元素,诸如数据操作数,所述元素潜在地被保持在存储器相干状态。D-TLB将要存储对物理地址翻译的最近的虚拟/线性。作为特定的示例,处理器可以包括页表结构以将物理存储器分为多个虚拟页。
在这里,核101和102共享对高层或更外面的(further-out)高速缓冲存储器的访问,诸如与片上接口110相关联的第二层高速缓冲存储器。注意,高层或更外面的指增加或得到离一个或多个执行单元更远的路途的高速缓冲存储器层。在一个实施例中,高层高速缓冲存储器是最后层数据高速缓冲存储器-处理器100上的存储器分层结构中的最后高速缓冲存储器-诸如第二或第三层数据高速缓冲存储器。然而,不会如此限制高层高速缓冲存储器,因为它可以与指令高速缓冲存储器相关联或者包括指令高速缓冲存储器。追踪高速缓冲存储器-一种类型的指令高速缓冲存储器-相反可以在解码器125之后被耦合以存储最近解码的追踪文件。在这里,指令潜在地指宏指令(即由解码器辨别的通用指令),所述宏指令可以解码成多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。在历史上,下面更详细地描述的存储器控制器已经被包括在处理器100外部的计算系统中。在这种情况下,片上接口11将要与处理器100外部的装置(诸如系统存储器175、芯片集(常常包括连接到存储器175的存储器控制器集线器和连接外围装置的I/O控制器集线器)、存储器控制器集线器、北桥或者其它集成电路)通信。并且在这种情况下,总线105可以包括任何已知的互连,诸如多点总线、点对点互连、串行互连、平行总线、相干(例如高速缓冲存储器相干)总线、分层协议体系结构、差分总线和GTL总线。
存储器175可以专用于处理器100或者与系统中的其它装置共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其它已知的存储装置。注意,装置180可以包括图形加速器、耦合至存储器控制器集线器的处理器或卡、耦合至I/O控制器集线器的数据存储设备、无线收发器、闪速装置、音频控制器、网络控制器或其它已知的装置。
然而,最近,随着更多的逻辑和装置正在被集成在单个管芯(诸如SOC)上,这些装置中的每个装置可以在处理器100上被合并。例如,在一个实施例中,存储器控制器集线器与处理器100在相同的封装和/或管芯上。在这里,核的一部分(核上部分)110包括用于与其它装置(诸如存储器175或图形装置180)接口的一个或多个控制器。包括用于与这样的装置接口的控制器和互连的配置常常被称为核上(或核外配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。但是,在SOC环境中,甚至更多的装置(诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已知的计算机装置/接口)可以被集成在单个管芯或者集成电路上以在高功能性和低功耗的情况下提供小的形状因子(form factor)。
在一个实施例中,处理器100能够执行编译器、优化和/或翻译器代码177以编译、翻译和/或优化应用代码176从而支持本文所描述的设备和方法或者与其接口。编译器常常包括程序或程序的集合以将源文本/代码翻译成目标文本/代码。通常,利用编译器的程序/应用代码的编译是在多个阶段和多遍中完成的以将高级编程语言代码转换成低级机器或汇编语言代码。但是,单遍编译器仍然可以被用于简单编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,诸如词汇分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
更大的编译器常常包括多个阶段,但是最经常地,这些阶段被包括在两个一般的阶段内:(1)前端,即通常其中语法处理、语义处理和某些转换/优化可发生,以及(2)后端,即通常其中分析、转换、优化和代码生成发生。某些编译器指中间,其说明编译器的前端和后端之间的模糊描述。结果,提及编译器的插入、关联、生成或其它操作可以在前述的多个阶段或多遍中的任何一个中以及在编译器的任何其它已知的多个阶段或多遍中发生。作为说明性的示例,编译器潜在地将操作、调用、函数等插入编译的一个或多个阶段,诸如将调用/操作插入编译的前端阶段并且接着在转换阶段期间将调用/操作转换成低层代码。注意,在动态编译期间,编译器代码或者动态优化代码可以插入这样的操作/调用以及在运行时间期间优化用于执行的代码。作为特定的说明性的示例,可以在运行时间期间动态优化二进制代码(已经被编译的代码)。在这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,翻译器(诸如二进制翻译器)或者静态地或者动态地翻译代码以优化和/或翻译代码。因此,提及代码、应用代码、程序代码或其它软件环境的执行可以指:(1)一个或多个编译器程序、优化代码优化器、或者翻译器的或动态或静态的执行,以编译程序代码、维持软件结构、执行其它操作、优化代码或者翻译代码;(2)包括操作/调用的主程序代码(诸如已经被优化/编译的应用代码)的执行;(3)与主程序代码相关联的其它程序代码(诸如库)的执行,以维持软件结构、执行其它软件相关的操作或者优化代码;或者(4)其组合。
图2说明了根据某些实施例的包括NoC系统的处理器200的框图,所述NoC系统包括多个路由器204。处理器200可以包括任何处理器或处理装置(诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、SoC或执行代码的其它装置。在特定的实施例中,在单个管芯上实现处理器200。
在所描绘的实施例中,处理器200包括布置在网格网络中并且利用双向链路互相耦合的多个网络元件202。然而,根据本公开的各种实施例的NoC可以应用于任何合适的网络拓扑(例如,分层网络或者环形网络)、大小、总线宽度和过程。每个网络元件202包括路由器204。路由器204可以在网络(诸如分组交换网络和/或电路交换网络)中以通信方式被相互链接,因此使能被连接到路由器的NoC的部件(诸如核、存储元件或者其它逻辑块)之间的通信。在所描绘的实施例中,每个路由器204可以以通信方式耦合至它自己的核208(或其它逻辑块)。正如本文中所使用的,提及核还可适用于其中使用不同的逻辑块来代替核的其它实施例。例如,各种逻辑块可以包括硬件加速器(例如,图形加速器、多媒体加速器或者视频编码/解码加速器)、I/O块、存储器控制器或者其它合适的固定功能逻辑。处理器200可以包括可以是对称的或者不对称的任何数量的处理元件。例如,处理器200的核208可以包括不对称的核或对称的核。处理器200可以包括逻辑以作为分组交换网络和电路交换网络中的一者或两者来进行操作,从而提供管芯内通信。
在特定的实施例中,可以使用分组交换网络的资源在不同的路由器204之间传递分组。也就是,分组交换网络可以提供路由器(以及它们的相关联的核)之间的通信。分组可以包括控制部分和数据部分。控制部分可以包括分组的目的地地址,并且数据部分可以包含将要在管芯100上被传递的特定数据。例如,控制部分可以包括与管芯的核或网络元件当中的一个相对应的目的地地址。分组交换网络可以包括缓冲,因为不保证从源到目的地的专用路径并且因此如果两个或多于两个分组需要横穿相同的链路或互连的话,分组可能需要被暂时停止。
在实施例中,处理器200的路由器可以在两个网络中以不同的方式被提供或者可以在两个网络中通信,诸如分组交换网络和电路交换网络。这样的通信方法可以称为混合分组/电路交换网络。在这样的实施例中,可以使用分组交换网络和电路交换网络的资源在不同的路由器204之间以不同的方式传递分组。为了传输单个数据分组,电路交换网络可以分配整个路径,而分组交换网络可以只分配单个段(或互连)。在某些实施例中,可以利用分组交换网络来预留电路交换网络的资源以用于路由器204之间的数据的传输。
路由器204可以包括多个端口集合以便以不同的方式耦合至毗连的网络元件202并且与毗连的网络元件202通信。例如,电路交换和分组交换信号可以通过这些端口集合被传递。可以例如根据毗连的网络元件的方向和/或与这样的元件的业务交换的方向来在逻辑上划分路由器204的端口集合。例如,路由器204可以包括具有被配置为(分别)从位于相对于路由器204的“北”方向上的网络元件202接收通信和将通信发送到位于相对于路由器204的“北”方向上的网络元件202的输入(“IN”)和输出(“OUT”)端口的北端口集合。另外或备选地,路由器204可以包括类似的端口集合以与位于南边、西边、东边或者其它方向的网络元件接口。在所描绘的实施例中,路由器204被配置用于X第一、Y第二路由选择,其中数据首先在东/西方向上移动并且接着在北/南方向上移动。在其它实施例中,可以使用任何合适的路由选择方案。
在各种实施例中,路由器204进一步包括另一个端口集合,所述另一个端口集合包括被配置为(分别)从网络的另一个代理接收通信和向网络的另一个代理发送通信的输入端口和输出端口。在所描绘的实施例中,这个端口集合被示出在路由器204的中心处。在一个实施例中,这些端口用于与和路由器204相邻的、和路由器204通信的或者以其它方式和路由器204相关联的逻辑(诸如“本地”核208的处理器逻辑)通信。在本文中,这个端口集合将被称为“核端口集合”,尽管在某些实现中它可以与除核之外的逻辑接口。在另一个实施例中,这个端口集合用于与处于比路由器204更高的网络分层结构的下一层的网络元件通信。在一个实施例中,东向链路和西向链路处于一个金属层上,南向链路和北向链路处于第二金属层上,并且核链路处于第三金属层上。在实施例中,路由器204包括纵横交换和仲裁逻辑以提供端口间通信的路径,诸如在图2中示出的那个。每个网络元件中的逻辑(诸如核208)可以具有唯一的时钟和/或电压或者可以与NoC的一个或多个其它部件共享时钟和/或电压。
图3说明了根据某些实施例的说明使用顺序地址解码和分组仲裁的路由器300的示例IN端口310和OUT端口350的框图。路由器300可以具有上面关于路由器204所描述的任何合适的特性。尽管只描绘了单个IN端口和单个OUT端口,但是路由器300可以具有任何合适数量的端口集合。在下面的描述中,将会假定路由器300具有五个端口集合(包括用于核的一个端口集合)。
在实施例中,路由器300包括IN端口310和OUT端口350,所述IN端口310包括接收被发送到路由器300的分组交换通信的部分,所述OUT端口350包括从路由器300发送分组交换信息的部分。IN端口310和OUT端口350可以进一步包括相应的其它部分(没有示出)以交换电路交换信息。例如,端口的电路交换路由选择部分可以包括配置逻辑以配置相应的电路交换路径的至少一部分。在各种实施例中,在路由器300接收将要沿着那个电路交换路径被传递的数据之前执行这样的配置。
IN 端口310可以包括有助于分组路由选择的各种部件,诸如,连同其它可能的部件一道,触发器312、锁存器集合314、去复用器逻辑320、方向逻辑325和OR门330。IN端口310经由输入305从核或者另一个路由器接收请求分组315。分组315可以包括任何合适的信息。例如,在所描绘的实施例中,分组315包括有效位,六位目的地地址和三位队列隙缝。有效位可以指示分组315是否有效。例如,当新的分组到达时,有效位可以被断言。在分组已经通过适当的OUT端口被转发之后,有效位可以被解除断言,使得分组(所述分组仍然可以被锁存器314存储)不会被再次错误地转发并且OUT端口可以转发下一个有效分组。目的地地址可以指示分组的目的地(例如分组应当被递送到的网络元件)并且可以以任何合适的方式来表达。作为一个示例,目的地地址可以包括指示沿着网络的网格的x轴的位置的三位地址值和指示沿着网格的y轴的位置的另一个三位地址值。队列隙缝位可以指示寄存器文件中的位置,其中将要存储关于分组的信息(例如与分组相关联的方向)。在所描绘的实施例中,寄存器文件可以具有八个位置并且因而通过三位来识别所述队列隙缝,尽管可以使用任何合适的大小。在其它实施例中,分组315还可以包括指示分组315是否包括将要作为边频带通信的一部分被发送的数据的一个或多个边频带启动位。分组315还可以包括携带边频带数据的位。因此,尽管分组315被示出为具有十位,但是分组315可以具有任何合适数量的位。
当通过来自触发器312 的保持信号不关闭锁存器时,分组315进入输入并且通过锁存器314。将分组传递到去复用器逻辑320。去复用器逻辑320可以操作用来去复用分组到路由器300的多个OUT端口中的任何OUT端口。在某些实施例中,离开去复用器的信号集合的数量等于OUT端口的数量减去一(因为传出端口集合的IN端口的分组将不会被发送到那个端口集合的OUT端口)。通过方向逻辑325设置去复用器逻辑320的输出,其起到地址解码器的作用。方向逻辑325适合于基于分组中的信息(诸如目的地地址)和/或其它合适的信息(诸如路由器300的地址)来确定将要与分组315相关联的方向。这个方向可以指示应当将分组315路由到路由器300的哪个OUT端口。例如,方向逻辑325可以评估分组315的目的地地址和路由器300的地址,确定去复用器逻辑320的路径以用于将分组315引导到正确的OUT端口,并且接着选择那个路径使得分组315被转发到正确的OUT端口而来自去复用器逻辑320的其它路径保持未被断言。
正如所描绘的,IN端口还可以包括接收保持信号的路径。例如,IN端口可以包括到其它端口集合的每个OUT端口的一个路径以从相应的端口接收保持信号。所述保持信号提供流控制。当从OUT端口中的任何OUT端口接收到保持信号时,OR门330的输出被断言并且这个值在分组时钟340的下一个周期上被落下(flopped)。这关闭锁存器接收额外的分组315,直到所述保持信号被清除为止。将在下面与OUT端口有关地进一步解释这个信号。
OUT端口350可以包括有助于分组路由选择的各种部件,诸如,连同其它可能的部件一道,保持去复用器逻辑360、优先级逻辑380、多路复用器逻辑385和触发器390。OUT端口350接收多个输入(每个可操作用来从路由器300的相应输入端口输送分组315)。多路复用器逻辑385可以操作用来将输入复用进通过触发器390被提供给输出355的单个输出。在所描绘的实施例中,在分组时钟340的周期中,多路复用器逻辑385可以在任何地方接收从一个到四个不同的分组(每个分组从路由器300的不同输入端口被接收)并且选择将要被传过到达OUT端口350的输出355的一个分组。
优先级逻辑380通过选择来自IN端口的有效分组(例如具有被断言的有效位的分组)中的一个有效分组(例如使用循环技术)而起到分组仲裁器的作用并且经由保持去复用器逻辑360将保持信号发送到未被选择的IN端口。优先级逻辑380将表示所选择的分组的信号发送到多路复用器逻辑385,使得多路复用器逻辑385能够将所选择的分组传递到触发器390。当被OUT端口接收的保持信号未被断言时,基于分组时钟落下所述分组。
优先级逻辑380还将与所选择的分组相关联的方向数据365发送到寄存器文件。方向数据可以详细说明所述分组315来自哪个方向。例如,方向数据365可以是从中接收分组315的IN端口的指示。在特定的实施例中,可以通过两位值来表示方向数据,因此能够识别从中接收分组的四个端口中的任何一个端口。所选择的分组的队列隙缝位370也被传递到寄存器文件并且被用作地址以将方向数据365存储在由队列隙缝位370指定的寄存器文件的位置中。如果由分组315请求的队列隙缝已经充满,优先级逻辑可以断言保持信号,从而防止分组继续。在实施例中,当优先级逻辑380确定分组315只用于边频带数据的通信时(也就是,不意味着建立电路交换信道),可以选择性地防止或者修改方向数据365的写入。在这样的实施例中,也可以选择性地防止或者以其它方式改变输出370的提供。
使用被写入寄存器文件的方向数据来帮助电路交换路径的建立。每个路由器中的每个端口可以包括类似的寄存器文件。当用于建立电路交换信道的适当时间已经达到时,可以选择包括与电路交换信道相关联的方向信息的每个队列隙缝并且使用方向信息来配置从源到目的地的路由器中的多路复用器和去复用器。当通过电路交换信道的数据传送完成时,选择寄存器文件中的不同队列隙缝以建立另外的电路交换信道。
图4说明了根据某些实施例的说明使用并行地址解码和分组仲裁的路由器400的示例IN端口410和OUT端口450的框图,如图3中所说明的,分组交换网络可以在从源到目的地的每个路由器处确定分组的方向并且在竞争的分组之间执行仲裁。解码和仲裁操作的延迟应当尽可能的小,以便于实现最低的整体网络等待时间。正如由图3所说明的,在某些实现中,可以以顺序性质来完成地址解码和分组仲裁。然而,在这样的实现中,来自方向解码和仲裁的等待时间是附加的并且因此不是最优的。在图4中所说明的实施例中,地址解码和分组仲裁并行发生,从而通过移除与来自关键路径的方向解码相关联的等待时间而改进了NoC内的等待时间。
路由器400和其中的部件可以具有路由器300和204以及它们的相应部件的任何合适的特性。然而,路由器400可以在关键路径中并行化地址解码和其它操作(例如分组仲裁),以便于提供改进的等待时间。因为在可以执行分组上的分组仲裁之前必须执行分组的方向解码(因为分组的方向确定使用哪个OUT端口),各种实施例将方向解码移至先前的路由器以与先前的路由器的仲裁并行操作,为此不存在这样的顺序从属性。接着将解码的方向连同分组一起发送到路由器,其中它被使用来将分组路由到路由器的正确的OUT端口。
IN端口410可以在许多方面如IN端口310那样以类似的方式进行操作。然而,IN端口410不包括为传入分组315计算正确的OUT端口的方向逻辑325。相反,IN端口410为这个分组315连同来自发送分组315的路由器的分组接收解码的方向403。解码的方向403可以是任何合适的格式,诸如上面关于方向逻辑325的输出所描述的格式。在所描绘的实施例中,解码的方向403被实现为独热(one-hot)实现,其中四条线中的被断言的线指示应当将分组315路由到的OUT端口。在另一个实施例中,可以以两位格式编码方向,其中每个唯一的位组合指示不同的OUT端口,从而保存互连资源。解码的方向信号403被发送到去复用器逻辑420并且被用来控制去复用器逻辑420以将分组315发送到路由器400的正确的OUT端口。
OUT端口450也在许多方面如OUT端口350那样以类似的方式进行操作,但是包括与优先级逻辑380并行操作的方向逻辑425。OUT端口350可以包括用于耦合至OUT端口450的路由器400的每个IN端口的方向逻辑425的一个实例。因此,针对如在图2中所说明的五端口路由器,OUT端口450包括方向逻辑425的四个实例。方向逻辑425的每个实例为来自路由器400的相应IN端口的分组确定方向。因为分组还没有被选择用于转发,为传入分组中的每个传入分组解码方向。这确保了当优先级逻辑380完成传入分组之间的仲裁时可以在不久以后发送选择的分组和它的解码的方向。方向逻辑425可以以与上面关于方向逻辑325所描述的类似的方式进行操作,然而,由方向逻辑425确定的方向是在下一个路由器中分组应当被路由的方向。例如,如果OUT端口450被配置为将分组315转发到位于路由器400的“东边”的路由器,那么由方向逻辑425为分组315确定的方向可以指示路由器400的东边的路由器的IN端口应当将分组路由到路由器400的东边的路由器的哪个OUT端口。
方向逻辑425的实例可以相互并行操作并且可以与优先级逻辑380并行操作。当从IN端口接收到分组时,将分组的目的地地址发送到方向逻辑425的实例以用于方向解码。还将每个分组的每个有效位发送到优先级逻辑380,因而优先级逻辑380可以在所有有效分组之间仲裁以确定应当将哪个分组转发到输出355。如果分组未被选择用于转发,可以通过方向逻辑425来保持它的计算的方向(方向逻辑425为每个分组只计算方向一次并且因此用于方向解码的总能量使用通常相当于诸如在图3中示出的实施例)。如果分组被选择用于转发,分组的方向的指示(例如指示发送分组的IN端口的位置的方向)通过优先级逻辑380来输出以控制多路复用器逻辑385来传递来自那个IN端口的分组并且控制多路复用器逻辑427来传递与分组相关联的解码的方向。在适当的时间,还将分组的方向发送到通过选择的分组的队列隙缝位指示的队列隙缝处的寄存器文件365以基于分组帮助电路交换信道的建立。通过OUT端口450来将选择的分组和它的相关联的解码的方向通过触发器集合390和429转发到下一个路由器。保持信号以与上面关于路由器300所解释的类似的方式进行操作。
虽然示出的示例指示了五端口路由器,其中每个输出端口执行四个输入方向之间的仲裁以及固定的x第一、y第二路由选择,各种实施例可以包括具有或多或少端口的、或者具有其它类型的路由选择(诸如源定向的(其中去往的每一个方向与分组一起被发送)或基于查找表的方法)的路由器。
图5说明了根据某些实施例的用于并行执行地址解码和分组仲裁的示例方法。可以通过第一路由器的OUT端口来执行步骤502-508并且通过耦合至第一路由器的OUT端口的第二路由器来执行步骤510。在步骤502,接收多个传入分组。例如,路由器的OUT端口可以从路由器的每个IN端口(除了是与所述OUT端口相同的端口集合的一部分的IN端口之外)接收分组。正如所描绘的,可以并行执行步骤504和506。在步骤504,为每个传入分组解码方向。在步骤506,从多个传入分组当中选择一个分组。在步骤504和506已经完成之后,在步骤508,将在步骤506选择的分组和在步骤504为那个分组确定的方向转发到第二路由器。在步骤510,第二路由器的IN端口使用与分组相关联的方向以将分组路由到第二路由器的适当的OUT端口。在某些实施例中,可以通过单个路由器的多个OUT端口中的每个OUT端口来实现步骤502-508并且可以通过所述路由器的多个IN端口中的每个IN端口来实现步骤510。当分组横穿网络时,可以通过不同的路由器来重复所述步骤。
可以在适当的地方组合、修改或者删除图5中所说明的步骤中的某些步骤,并且也可以将附加的步骤添加到流程图。另外,可以以任何合适的顺序来执行步骤而不会背离特定实施例的范围。
正如在本申请中所使用的,当第一逻辑与第二逻辑“并行”或者“同时”操作时,第一逻辑的操作的至少一部分与第二逻辑的操作的至少一部分同时发生。这些术语并不意味着传达了第一逻辑的操作必须同时开始或者结束。
图6说明了根据某些实施例的示例方向解码逻辑600。方向逻辑600说明了例如可以在方向逻辑325或425中使用的示例方向解码逻辑。方向逻辑600是用于实现网格NoC(诸如系统200)的x第一、y第二路由选择的逻辑的一个示例,尽管可以使用任何合适的路由选择方法(例如y第一、x第二、查找表或者其它确定性路由选择方法)。在所描绘的实施例中,方向逻辑600包括第一电路610以比较与二维地址空间的第一维相关联的地址值。也就是,目的地地址的x分量(Xdest[2:0])与执行比较的路由器的地址的x分量(Xcore[2:0])相比较。方向逻辑600进一步包括第二电路620以比较与所述地址空间的第二维相关联的地址值。也就是,目的地地址的y分量(Ydest[2:0])与执行比较的路由器的地址的固定的y分量(Ycore[2:0])相比较。电路630说明了根据实施例的用于执行三位比较的电路的一个示例。基于通过第一电路610和第二电路620的比较,方向逻辑600可以确定从路由器600朝向目的地节点的分组的下一个路由选择是否将要在特定的方向上-例如相对于路由器600的北方、南方、东方或者西方。这可以使能分组到正确的OUT端口的转发。正如由电路630所描绘的,实现三位比较的脉动进位门的链被最优地按大小排列以解决固定的核地址,导致后面有两个门的逆变器的最坏情况的延迟。
上面的各种实施例说明了可以在具有显式时钟和电平敏感控制信号的同步NoC的上下文中使用的端口。同步分组交换NoC可以包括基于全局时钟而与它们的邻居通信的路由器。因此,同步NoC中的所有路由器在相同频率下操作。在各种同步实现中,不需要显式信用追踪电路,因为触发器和锁存器的放置连同存储元件的基于请求和准许的时钟门控一起可以取得相同的结果。用于电路交换网络的时钟可以源自用于分组交换网络的时钟并且可以是分组交换网络的时钟的倍数以解决最坏情况的电路交换信道建立。同步的分组和电路交换网络时钟还消除了对于根据独立时钟域处理写入和读取操作的优先级FIFO的需要。然而,本公开的实施例同样可适于用在源同步NoC中。在源同步NoC中,连同数据一起被转发的控制信号转换充当时钟信号,从而消除了对于完全同步时钟的需要。这个技术通过去除对于每个路由器处同步FIFO的需要而便于多时钟设计(其中与不同路由器相关联的核可以在不同频率下操作)。
图7说明了根据一个实施例的示例计算系统的框图的另一个实施例。在该图中,描绘了根据本公开的片上系统(SOC)设计的实施例。作为特定的说明性示例,SOC 700被包括在用户设备(UE)中。在一个实施例中,UE指将要被终端用户使用来进行通信的任何装置,诸如手持电话、智能手机、平板电脑、超薄笔记本电脑、具有宽带适配器的笔记本电脑、或者任何其它类似的通信装置。UE常常连接到基站或节点,其潜在地实际上对应于GSM网络中的移动台(MS)。
在这里,SOC 700包括两个核-706和707。与上面的讨论类似,核706和707可以遵照指令集体系结构,诸如基于Intel® Architecture CoreTM的处理器、Advanced MicroDevices有限公司(AMD)处理器,基于MIPS的处理器、基于ARM的处理器设计、或者其客户、以及它们的许可证持有者或采纳者。核706和707耦合至高速缓冲存储器控制708,所述高速缓冲存储器控制708与总线接口单元709和L2高速缓冲存储器710相关联以与系统700的其它部分通信。互连710包括片上互连,诸如IOSF、AMBA或者上面讨论的其它互连,其潜在地实现所描述的公开的一个或多个方面。
接口710将通信信道提供给其它部件,诸如与SIM卡接口的订户身份模块(SIM)730、保持引导代码以用于由核706和707执行从而初始化并且引导SOC 700的引导只读存储器735、与外部存储器(例如DRAM 760)接口的SDRAM控制器740、与非易失性存储器(例如闪存765)接口的闪存控制器745、与外围设备接口的外围控制Q1650(例如串行外围接口)、显示和接收输入(触摸启动的输入)的视频编解码器720和视频接口725、执行图形相关的计算的GPU 715等等。这些接口中的任何接口可以结合本文所描述的公开的若干方面。
另外,系统说明了用于通信的外围设备,诸如蓝牙模块770、3G调制解调器775、GPS785和WiFi 785。注意,如上面所陈述的,UE包括无线电以用于通信。结果,这些外围通信模块并不是全部都需要。然而,在UE某种形式中,将要包括用于外部通信的无线电。
设计可以经历各种阶段,从创建到模拟到制造。表示设计的数据可以以多种方式来表示设计。首先,当在模拟中有用时,可以使用硬件描述语言(HDL)或另一种功能描述语言来表示硬件。另外,在设计过程的某些阶段可以产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中的各种装置的物理放置的数据的级别。在其中使用传统的半导体制造技术的情况下,表示硬件模型的数据可以是详细说明用于被使用来产生集成电路的掩膜的不同掩膜层上的各种特征的存在或不存在的数据。在某些实现中,可以以数据库文件格式来存储这样的数据,诸如图形数据系统II(GDS II)、开放插图系统交换标准(Open Artwork System Interchange Standard OASIS)、或类似的格式。
在某些实现中,基于软件的硬件模型、和HDL和其它功能描述语言对象可以包括寄存器传送语言(RTL)文件,连同其它示例一道。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),为所描述的硬件的属性解析所述HDL对象,并且根据所述对象来确定物理电路和/或片上布局。设计工具的输出可以被用来制造物理装置。例如,设计工具可以根据所述HDL对象来确定各种硬件和/或固件元件的配置,诸如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、构造拓扑、连同将要被执行以便于实现在HDL对象中建模的系统的其它属性一道。设计工具可以包括用于确定片上系统(SoC)和其它硬件装置的拓扑和构造配置的工具。在某些实例中,可以将HDL对象用作用于开发可以被制造装备使用来制造所描述的硬件的模型和设计文件的基础。实际上,可以提供HDL对象本身作为制造系统软件的输入以促成所描述的硬件。
在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。存储器或者磁或光存储设备(诸如盘)可以是存储信息的机器可读介质,所述信息经由调制的或以其它方式生成的用来传输这样的信息的光或电波来传输。当传输指示或者携带代码或设计的电载波时,就执行电信号的复制、缓冲或者重传来说,进行新的复制。因此,通信供应商或者网络供应商可以至少暂时地在有形的机器可读介质上存储体现本公开的实施例的技术的物品,诸如被编码进载波的信息。
如本文所使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件(诸如微控制器)以存储适于由所述微控制器执行的代码。因此,在一个实施例中,提及模块指被特别配置为辨别和/或执行将要被保持在非暂时性介质上的代码的硬件。此外,在另一个实施例中,模块的使用指包括代码的非暂时性介质,所述代码特别适于被微控制器执行以执行预先确定的操作。并且正如可以推断的,在又一个实施例中,术语模块(在这个示例中)可以指微控制器和非暂时性介质的组合。常常,被说明为分开的模块边界通常会变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留某个独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件(诸如晶体管、寄存器)或者其它硬件(诸如可编程逻辑装置)。
在一个实施例中,短语“为(to)”或“被配置为”的使用指布置、放在一起、制造、提供出售,引入和/或设计设备、硬件、逻辑或者元件以执行所指定的或所确定的任务。在这个示例中,其中的未正在进行操作的设备或者元件仍“被配置为”执行所指定的任务,如果它被设计、耦合和/或互连以执行所述所指定的任务的话。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”将启动信号提供给时钟的逻辑门不包括可以提供1或0的每一个潜在的逻辑门。相反,所述逻辑门是以在操作期间1或0输出将要启动时钟的某种方式耦合的逻辑门。再次注意,术语“被配置为”的使用并不要求操作,而是相反集中在设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件被设计为当所述设备、硬件和/或元件正在进行操作时执行特定的任务。
此外,在一个实施例中,短语“能够/能够做(capable of/to)”和/或“能够操作用来(operable to)”指以使能以指定方式使用设备、逻辑、硬件和/或元件的这样的一种方式设计的某种设备、逻辑、硬件和/或元件。注意,如同上述,在一个实施例中,为(to)、能够做或能够操作用来指设备、逻辑、硬件和/或元件的潜在状态,其中所述设备、逻辑、硬件和/或元件未正在进行操作,但是以使能以指定方式使用设备的这样的一种方式设计所述设备、逻辑、硬件和/或元件。
如本文使用的值包括数字、状态、逻辑状态或者二进制逻辑状态的任何已知的表示。常常,逻辑电平、逻辑值(logic value)或者逻辑的值(logical value)的使用还被称为1和0,其仅仅表示二进制逻辑状态。例如1指高逻辑电平并且0指低逻辑电平。在一个实施例中,存储单元(诸如晶体管或闪存单元)可以能够保持单个逻辑的值或多个逻辑的值。然而,已经使用了计算机系统中的值的其它表示。例如十进制数字十也可以表示为1010的二进制值和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,状态可以通过值或者值的若干部分来表示。作为示例,第一值(诸如逻辑1)可以表示缺省或初始状态,而第二值(诸如逻辑0)可以表示非缺省状态。另外,在一个实施例中,术语重置和设置分别指缺省和更新的值或状态。例如,缺省值潜在地包括高逻辑的值,即重置,而更新的值潜在地包括低逻辑的值,即设置。注意,可以利用值的任何组合来表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或者代码的实施例可以借助于存储在机器可访问的、机器可读的、计算机可访问的或者计算机可读的介质上的、能够由处理元件执行的指令或者代码来实现。非暂时性机器可访问/可读介质包括以机器(诸如计算机或者电子系统)可读的形式提供(即存储和/或传输)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM)(诸如固态RAM(SRAM)或者动态RAM(DRAM))、ROM、磁或光存储介质、闪速存储装置、电存储装置、光存储装置、声存储装置、用于保持从暂时(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储装置等等,其将区别于可以从此处接收信息的非暂时性介质。
被使用来编程逻辑以执行公开的实施例的指令可以被存储在系统中的存储器内,诸如DRAM、高速缓冲存储器、闪速存储器或者其它存储设备。此外,可以经由网络或者经由其它计算机可读媒体来分发指令。因此,机器可读介质可以包括用于以机器(例如计算机)可读的形式存储或传输信息的任何机制,但是不限于软盘、光盘、只读光盘(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或者经由电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)在因特网上传输信息中所使用的有形的机器可读存储设备。因此,计算机可读介质包括适合于以机器(例如计算机)可读的形式存储或者传输电子指令或信息的任何类型的有形的机器可读介质。
一个或多个实施例可以提供设备、系统、机器可读存储设备、机器可读介质、基于硬件和/或软件的逻辑(例如路由器)、方法和非暂时性机器可读介质(包括表示结构的信息,在被制造时将要被配置)为包括多个输入端口以接收分组;多个输出端口以转发分组,其中输出端口要包括优先级逻辑以从多个分组中选择分组来转发,并且要包括方向逻辑以为多个分组中的分组确定与所述分组相关联的方向,其中方向逻辑要至少部分地与优先级逻辑并行执行。
在至少一个示例中,通过输出端口的方向逻辑确定的方向是应当通过经由输出端口从第一路由器接收分组的路由器转发分组的方向。
在至少一个示例中,多个输出端口中的输出端口要把与分组相关联的方向连同分组一起转发到处理器的另一个路由器。
在至少一个示例中,多个输入端口中的输入端口要接收分组和与分组相关联的方向的指示并且基于所接收的指示将分组转发到多个输出端口中的输出端口。
在至少一个示例中,第一路由器的多个输入端口中的第一输入端口要从第一路由器的核接收分组并且多个输入端口中的剩余输入端口要从处理器的相应路由器接收分组。
在至少一个示例中,第一路由器的多个输出端口中的第一输出端口要把分组转发到第一路由器的核并且多个输出端口中的剩余输出端口要把分组转发到处理器的相应路由器。
一个或多个实施例可以提供设备、系统、机器可读存储设备、机器可读介质、基于硬件和/或软件的逻辑(例如第一路由器)、方法和非暂时性机器可读介质(包括表示结构的信息,在被制造时将要被配置)为接收第一分组和与第一分组相关联的第一方向,基于与第一分组相关联的第一方向将第一分组转发到第一路由器的多个输出端口中的输出端口,确定与第一分组相关联的第二方向,第二方向至少基于第一分组的地址,并且通过第一路由器的输出端口将第一分组和第二方向转发到第二路由器。
在至少一个示例中,第二方向进一步基于与第二路由器相关联的地址。
在至少一个示例中,第一路由器进一步要从在输出端口处接收的多个分组中选择第一分组并且要基于选择来转发第一分组。
在至少一个示例中,选择的至少一部分要和与第一分组相关联的第二方向的确定的至少一部分同时发生。
在至少一个示例中,第一路由器进一步要为在输出端口处接收的多个分组中的分组确定方向。
在至少一个示例中,第一路由器要同时确定在输出端口处接收的多个分组中的分组的方向。
在至少一个示例中,第一分组是被用来建立电路交换信道以通过第一路由器的预留分组。
一个或多个实施例可以提供设备、系统、机器可读存储设备、机器可读介质、基于硬件和/或软件的逻辑(例如第一路由器)、方法和非暂时性机器可读介质(包括表示结构的信息,在被制造时要被配置)为包括实现片上网络的多个路由器和多个核。路由器要包括从多个核中的核接收分组的核输入端口、多个输入端口、从多个路由器中的路由器接收分组的输入端口、将分组转发到多个核中的核的核输出端口、以及多个输出端口、将分组转发到多个路由器中的路由器的输出端口。输出端口要包括从多个分组中选择分组来转发的优先级逻辑和为多个分组中的分组确定与分组相关联的方向的方向逻辑,其中方向逻辑要至少部分地与优先级逻辑并行执行。
整个本说明书提及“一个实施例”或者“实施例”意味着与实施例有关地描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个本说明书中的各处出现短语“在一个实施例中” 或者“在实施例中”不必全都指相同的实施例。此外,可以在一个或多个实施例中以任何合适的方式组合特定特征、结构或特性。
在前述的说明书中,已经参考特定的示范实施例给出了详细的描述。然而,将会显然的是,可以对其进行各种修改和改变,而不会背离如在所附的权利要求书中阐述的公开的更广泛的精神和范围。因此,将在说明性的意义上而不是限制性的意义上看待说明书和附图。此外,实施例和其它示范语言的在前使用不必指相同的实施例或者相同的示例,而是可以指不同的和截然不同的实施例以及潜在地相同的实施例。
Claims (21)
1.一种处理器,所述处理器要包括:
第一路由器,所述第一路由器要包括:
要接收分组的多个输入端口;
要转发分组的多个输出端口,所述输出端口要包括:
优先级逻辑,所述优先级逻辑要从多个分组中选择分组来转发;以及
方向逻辑,所述方向逻辑要为所述多个分组中的分组确定与所述分组相关联的方向,其中所述方向逻辑要至少部分地与所述优先级逻辑并行执行。
2.如权利要求1所述的处理器,其中通过输出端口的所述方向逻辑确定的方向是应当通过经由所述输出端口从所述第一路由器接收分组的路由器转发所述分组的所述方向。
3.如权利要求1所述的处理器,其中所述多个输出端口中的输出端口要将与分组相关联的所述方向连同所述分组一起转发到所述处理器的另一个路由器。
4.如权利要求1所述的处理器,其中所述多个输入端口中的输入端口要接收分组和与所述分组相关联的方向的指示并且基于接收的指示将所述分组转发到所述多个输出端口中的输出端口。
5.如权利要求1所述的处理器,其中所述第一路由器的所述多个输入端口中的第一输入端口要从所述第一路由器的核接收分组并且所述多个输入端口中的剩余输入端口要从所述处理器的相应路由器接收分组。
6.如权利要求1所述的处理器,其中所述第一路由器的所述多个输出端口中的第一输出端口要将分组转发到所述第一路由器的核并且所述多个输出端口中的剩余输出端口要将分组转发到所述处理器的相应路由器。
7.一种设备,所述设备包括:
第一路由器,所述第一路由器要:
接收第一分组和与所述第一分组相关联的第一方向;
基于与所述第一分组相关联的所述第一方向将所述第一分组转发到所述第一路由器的多个输出端口中的输出端口;
确定与所述第一分组相关联的第二方向,所述第二方向至少基于所述第一分组的地址;以及
将所述第一分组和所述第二方向通过所述第一路由器的所述输出端口转发到第二路由器。
8.如权利要求7所述的设备,其中所述第二方向进一步基于与所述第二路由器相关联的地址。
9.如权利要求7所述的设备,其中所述第一路由器进一步要从在所述输出端口处接收的多个分组中选择所述第一分组并且基于所述选择来转发所述第一分组。
10.如权利要求9所述的设备,其中所述选择的至少一部分要和与所述第一分组相关联的所述第二方向的所述确定的至少一部分同时发生。
11.如权利要求9所述的设备,其中所述第一路由器进一步要为在所述输出端口处接收的所述多个分组中的分组确定方向。
12.如权利要求11所述的设备,其中所述第一路由器要同时确定在所述输出端口处接收的所述多个分组中的分组的所述方向。
13.如权利要求7所述的设备,其中所述第一分组是被用来建立电路交换信道以通过所述第一路由器的预留分组。
14.一种非暂时性机器可读介质,所述非暂时性机器可读介质包括表示结构的信息,在被制造时要被配置为:
接收第一分组和与所述第一分组相关联的第一方向;
基于与所述第一分组相关联的所述第一方向将所述第一分组转发到第一路由器的多个输出端口中的输出端口;
确定与所述第一分组相关联的第二方向,所述第二方向至少基于所述第一分组的地址;以及
将所述第一分组和所述第二方向通过所述第一路由器的所述输出端口转发到第二路由器。
15.如权利要求14所述的介质,其中所述第二方向进一步基于与所述第二路由器相关联的地址。
16.如权利要求14所述的介质,所述结构在被制造时要被配置为进一步从在所述输出端口处接收的多个分组中选择所述第一分组并且基于所述选择来转发所述第一分组。
17.如权利要求16所述的介质,其中所述选择的至少一部分要和与所述第一分组相关联的所述第二方向的所述确定的至少一部分同时发生。
18.如权利要求14所述的介质,所述结构在被制造时要被配置为为在所述输出端口处接收的所述多个分组中的分组确定方向。
19.如权利要求14所述的介质,其中所述第一分组是被用来建立电路交换信道以通过所述第一路由器的预留分组。
20.一种系统,所述系统要包括:
多个核;
实现片上网络的多个路由器,路由器要包括:
核输入端口,所述核输入端口要从所述多个核中的核接收分组;
多个输入端口,输入端口要从所述多个路由器中的路由器接收分组;
核输出端口,所述核输出端口要将分组转发到所述多个核中的所述核;
多个输出端口,输出端口要将分组转发到所述多个路由器中的路由器,输出端口要包括:
优先级逻辑,所述优先级逻辑要从多个分组中选择分组来转发;以及
方向逻辑,所述方向逻辑要为所述多个分组中的分组确定与所述分组相关联的方向,其中所述方向逻辑要至少部分地与所述优先级逻辑并行执行。
21.一种系统,所述系统要包括:
用于在第一路由器处接收第一分组和与所述第一分组相关联的第一方向的装置;
基于与所述第一分组相关联的所述第一方向将所述第一分组转发到所述第一路由器的多个输出端口的输出端口;
确定与所述第一分组相关联的第二方向,所述第二方向至少基于所述第一分组的地址;以及
将所述第一分组和所述第二方向通过所述第一路由器的所述输出端口转发到第二路由器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/574,106 US9866476B2 (en) | 2014-12-17 | 2014-12-17 | Parallel direction decode circuits for network-on-chip |
US14/574106 | 2014-12-17 | ||
PCT/US2015/061451 WO2016099778A1 (en) | 2014-12-17 | 2015-11-19 | Parallel direction decode circuits for network-on-chip |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107113252A true CN107113252A (zh) | 2017-08-29 |
CN107113252B CN107113252B (zh) | 2021-04-20 |
Family
ID=56127281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580062792.8A Active CN107113252B (zh) | 2014-12-17 | 2015-11-19 | 用于片上网络的并行方向解码电路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9866476B2 (zh) |
EP (1) | EP3235194B1 (zh) |
CN (1) | CN107113252B (zh) |
WO (1) | WO2016099778A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022078051A1 (zh) * | 2020-10-13 | 2022-04-21 | 华为技术有限公司 | 一种路由的配置方法、网络设备、通信系统以及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10142258B2 (en) * | 2016-04-08 | 2018-11-27 | Advanced Micro Devices, Inc. | Methods and apparatus for processing in a network on chip (NOC) |
US11398980B2 (en) | 2019-11-19 | 2022-07-26 | Advanced Micro Devices, Inc. | Packet router with virtual channel hop buffer control |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100617386B1 (ko) * | 2004-06-03 | 2006-08-31 | 광주과학기술원 | 네트웍 온 칩 어플리케이션을 위한 버터플라이 팻-트리를사용한 비동기 스위치 회로 |
CN101778049A (zh) * | 2010-03-04 | 2010-07-14 | 南京大学 | 包-电路交换片上路由器及其传输方法 |
US8495643B2 (en) * | 2009-06-30 | 2013-07-23 | International Business Machines Corporation | Message selection based on time stamp and priority in a multithreaded processor |
CN103580890A (zh) * | 2012-07-26 | 2014-02-12 | 深圳市中兴微电子技术有限公司 | 一种可重配置片上网络结构及其配置方法 |
CN104158738A (zh) * | 2014-08-29 | 2014-11-19 | 中国航空无线电电子研究所 | 一种低缓冲区片上网络路由器及路由方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6285679B1 (en) * | 1997-08-22 | 2001-09-04 | Avici Systems, Inc. | Methods and apparatus for event-driven routing |
KR100624641B1 (ko) | 2004-10-07 | 2006-09-15 | 삼성전자주식회사 | 기능 블록 코어-스위치 포인트 다중 매핑 온 칩 버스 구조및 이를 이용한 반도체 장치 |
US8284766B2 (en) | 2007-12-28 | 2012-10-09 | Intel Corporation | Multi-core processor and method of communicating across a die |
US8438578B2 (en) | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
US9135215B1 (en) * | 2009-09-21 | 2015-09-15 | Tilera Corporation | Route prediction in packet switched networks |
CN102893268B (zh) | 2010-05-27 | 2015-11-25 | 松下电器产业株式会社 | 总线控制装置以及向总线控制装置输出指示的控制装置 |
EP2456137A1 (en) * | 2010-11-22 | 2012-05-23 | STMicroelectronics (Grenoble 2) SAS | Switches and a network of switches |
US9036482B2 (en) * | 2011-12-08 | 2015-05-19 | The Hong Kong University Of Science And Technology | Bufferless nonblocking networks on chip |
US8601423B1 (en) * | 2012-10-23 | 2013-12-03 | Netspeed Systems | Asymmetric mesh NoC topologies |
EP3014818A4 (en) | 2013-06-28 | 2017-03-15 | Intel Corporation | A method, apparatus and system for a source-synchronous circuit-switched network on a chip (noc) |
KR101802810B1 (ko) | 2013-09-06 | 2017-11-29 | 인텔 코포레이션 | 하이브리드 회선 교환 및 패킷 교환 라우터의 아키텍처 및 그 방법 |
US9699096B2 (en) | 2013-12-26 | 2017-07-04 | Intel Corporation | Priority-based routing |
US9602587B2 (en) * | 2014-06-26 | 2017-03-21 | Altera Corporation | Multiple plane network-on-chip with master/slave inter-relationships |
-
2014
- 2014-12-17 US US14/574,106 patent/US9866476B2/en not_active Expired - Fee Related
-
2015
- 2015-11-19 EP EP15870589.7A patent/EP3235194B1/en active Active
- 2015-11-19 WO PCT/US2015/061451 patent/WO2016099778A1/en active Application Filing
- 2015-11-19 CN CN201580062792.8A patent/CN107113252B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100617386B1 (ko) * | 2004-06-03 | 2006-08-31 | 광주과학기술원 | 네트웍 온 칩 어플리케이션을 위한 버터플라이 팻-트리를사용한 비동기 스위치 회로 |
US8495643B2 (en) * | 2009-06-30 | 2013-07-23 | International Business Machines Corporation | Message selection based on time stamp and priority in a multithreaded processor |
CN101778049A (zh) * | 2010-03-04 | 2010-07-14 | 南京大学 | 包-电路交换片上路由器及其传输方法 |
CN103580890A (zh) * | 2012-07-26 | 2014-02-12 | 深圳市中兴微电子技术有限公司 | 一种可重配置片上网络结构及其配置方法 |
CN104158738A (zh) * | 2014-08-29 | 2014-11-19 | 中国航空无线电电子研究所 | 一种低缓冲区片上网络路由器及路由方法 |
Non-Patent Citations (1)
Title |
---|
SHENG MA等: "Supporting Efficient Collective Communication in NoCs", 《HIGH PERFORMANCE COMPUTER ARCHITECTURE(HPCA),2012 IEEE 18TH INTERNATIONAL SYMPOSIUM ON IEEE》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022078051A1 (zh) * | 2020-10-13 | 2022-04-21 | 华为技术有限公司 | 一种路由的配置方法、网络设备、通信系统以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107113252B (zh) | 2021-04-20 |
WO2016099778A1 (en) | 2016-06-23 |
EP3235194B1 (en) | 2020-11-04 |
US9866476B2 (en) | 2018-01-09 |
EP3235194A1 (en) | 2017-10-25 |
EP3235194A4 (en) | 2018-08-08 |
US20160182367A1 (en) | 2016-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107113254B (zh) | 自适应交换芯片上网络 | |
CN107113253B (zh) | 用于片上网络的空间划分的电路交换信道 | |
CN105247817B (zh) | 用于源同步电路交换片上网络(NoC)的方法、装置和系统 | |
CN107005477B (zh) | 用于片上网络的基于链路延迟的路由装置 | |
CN107078971B (zh) | 组合保证吞吐量和尽力而为的片上网络 | |
CN109154924A (zh) | 多个上行链路端口设备 | |
CN104932996B (zh) | 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统 | |
CN107077521A (zh) | 片上系统配置元数据 | |
CN107113227B (zh) | 流水线化混合分组/电路交换片上网络 | |
CN107112042A (zh) | 数据信号的边沿感知同步 | |
CN107005492B (zh) | 用于芯片上网络上的多播和缩减通信的系统 | |
CN109844725A (zh) | 点对点互连中的非对称通道 | |
CN109582998A (zh) | 小巧PCIe端点的根复合体集成端点仿真 | |
CN107003944B (zh) | 跨分布式存储器的指针追踪 | |
CN107111584B (zh) | 到片上网络的接口的高带宽核 | |
CN107003838A (zh) | 解码信息库 | |
CN107113252A (zh) | 用于片上网络的并行方向解码电路 |
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 |