用于片上网络的基于链路延迟的路由装置的制作方法

文档序号:11637155阅读:207来源:国知局
用于片上网络的基于链路延迟的路由装置的制造方法

对相关申请的交叉引用

本申请要求享有2014年12月22日提交的题为“linkdelaybasedroutingapparatusforanetwork-on-chip”的美国非临时专利申请号14/579,845的益处和优先权,其以其整体通过引用并入本文。

本公开一般地涉及计算机开发的领域,并且更具体地,涉及用于片上网络(noc)的基于链路延迟的路由器装置。



背景技术:

随着多核处理器中的核以及知识产权(ip)块的数目的增加,用于核之间的管芯上通信的片上网络(noc)在使得能够实现可缩放性能方面是重要的。在这样的实例中,组件之间的通信成为关键的功率和性能限制者。noc使得能够实现用于与路由器的通信的片上布线资源的高效共享以控制和仲裁通信组件之间的数据流。混合分组/电路交换noc使得能够实现以逼近电路交换数据传播的能量效率的分组交换的高吞吐量和利用。noc的路由器之间的各种链路由于由工艺/电压/温度(pvt)变化和老化所导致的效应而可能具有不同的延迟。

附图说明

图1图示了针对依照某些实施例的包括多核处理器的示例计算系统的框图。

图2图示了依照某些实施例的包括包含多个路由器的片上网络(noc)系统的处理器的框图。

图3图示了依照某些实施例的包括包含多个路由器、可调谐复制电路(trc)和trc控制器的noc系统的处理器的框图。

图4图示了依照某些实施例的示例trc。

图5图示了依照某些实施例的用于从trc获得延迟信息的示例方法。

图6图示了依照某些实施例的用于基于trc延迟信息而对分组进行路由的示例方法。

图7图示了针对依照某些实施例的示例计算系统的另一框图。

在各种图中,相同的参考标号和指定指示相同的元件。

具体实施方式

在以下描述中,阐述众多具体细节,诸如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等的示例,以便提供本公开的透彻理解。然而,对本领域技术人员将明显的是,这些具体细节不需要用于实践本公开。在其它实例中,尚未详细描述公知的组件或方法,诸如具体和可替换的处理器架构、用于所描述的算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、在代码中的算法的具体表达、具体掉电和门控技术/逻辑以及计算机系统的其它具体操作细节,以便避免使本公开不必要地模糊。

尽管可以参照具体集成电路中(诸如在计算平台或微处理器中)的能量节约和能量效率来描述以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑设备。本文所描述的实施例的类似技术和教导可以应用于也可以从更好的能量效率和能量节约受益的其它类型的电路或半导体设备。例如,所公开的实施例不限于台式计算机系统或ultrabooktm,而是也可以使用在其它设备中,诸如服务器计算机系统、手持设备、平板电脑、其它薄笔记本电脑、片上系统(soc)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(pda)和手持pc。嵌入式应用典型地包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络中心、广域网(wan)交换机或可以执行以下教导的功能和操作的任何其它系统。而且,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量节约和效率的软件优化。如将在以下的描述中容易变得明显的,本文所描述的方法、装置和系统的实施例(无论参照硬件、固件、软件还是其组合)对与性能考虑平衡的“绿色技术”将来是至关重要的。

随着计算系统的前进,其中的组件正在变得更加复杂。作为结果,在组件之间进行耦合和通信的互连架构在复杂度方面也日益增加以确保满足针对最优组件操作的带宽要求。另外,不同的市场细分要求互连架构的不同方面以适应市场的需要。例如,服务器要求更高的性能,而移动生态系统有时能够为功率节省而牺牲总体性能。然而,大多数结构的唯一目的是以最大功率节省来提供最高的可能性能。以下,讨论数个互连,其将潜在地受益于本文所描述的公开的各方面。

参照图1,描绘了针对包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(soc)或执行代码的其它设备。在一个实施例中,处理器100包括至少两个核——核101和102,其可以包括非对称核或对称核(所图示的实施例)。然而,处理器100可以包括任何数目的处理元件,其可以是对称的或非对称的。

在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽(slot)、线程、过程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,其能够保持针对处理器的状态,诸如执行状态或架构状态。换言之,在一个实施例中,处理元件是指能够与代码独立相关联的任何硬件,所述代码诸如软件线程、操作系统、应用或其它代码。物理处理器(或处理器插槽)典型地是指集成电路,其潜在地包括任何数目的其它处理元件,诸如核或硬件线程。

核通常是指位于集成电路上的能够维持独立架构状态的逻辑,其中每一个被独立维持的架构状态与至少一些专用执行资源相关联。与核相比,硬件线程典型地是指位于集成电路上的能够维持独立架构状态的任何逻辑,其中被独立维持的架构状态共享对执行资源的访问。如可以看到的,当某些资源被共享并且其它资源专用于架构状态时,核与硬件线程的命名之间的界限重叠。而通常,核与硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每一个逻辑处理器上的操作。

如图1中所图示的物理处理器100包括两个核——核101和102。在此,核101和102被视为对称的核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括乱序处理器核,而核102包括有序处理器核。然而,核101和102可以从任何类型的核单独选择,诸如原生核、软件管理的核、适配成执行原生指令集架构(isa)的核、适配成执行经转换的指令集架构(isa)的核、共同设计的核或其它已知核。在异构核环境(即非对称核)中,某种形式的转换(诸如二进制转换)可以用于调度或执行一个或两个核上的代码。再进一步地讨论,以下进一步详细地描述核101中图示的功能单元,因为核102中的单元在所描绘的实施例中以类似方式操作。

如所描绘的,核101包括两个硬件线程101a和101b,其还可以称为硬件线程槽101a和101b。因此,在一个实施例中,软件实体(诸如操作系统)潜在地将处理器100视为四个分离的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。如以上略有提到的,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,并且第四线程可以与架构状态寄存器102b相关联。在此,架构状态寄存器(101a、101b、102a和102b)中的每一个可以称为处理元件、线程槽或线程单元,如以上所描述的。如所图示的,架构状态寄存器101a复制在架构状态寄存器101b中,因此单独的架构状态/上下文能够针对逻辑处理器101a和逻辑处理器101b而存储。在核101中,其它较小的资源,诸如分配器和重命名器块130中的重命名逻辑和指令指针也可以针对线程101a和101b进行复制。诸如重排序器/退役单元135中的重排序缓冲器、iltb120、加载/存储缓冲器和队列之类的一些资源可以通过分区而共享。潜在地完全共享其它资源,诸如通用内部寄存器、(多个)页表基址寄存器、低级数据高速缓存和数据tlb115、(多个)执行单元140和乱序单元135的部分。

处理器100通常包括其它资源,其可以被完全共享、通过分区共享或由处理元件专用/专用于处理元件。在图1中,图示了具有处理器的说明性逻辑单元/资源的纯粹示例性的处理器的实施例。要指出的是,处理器可以包括或省略这些功能单元中的任何一个,以及包括未描绘的任何其它已知的功能单元、逻辑或固件。如所图示的,核101包括简化的、代表性的乱序(ooo)处理器核。但是在不同实施例中可以利用有序处理器。ooo核包括分支目标缓冲器120以预测要执行/采取的分支以及指令转换缓冲器(i-tlb)120以存储用于指令的地址转换条目。

核101还包括耦合到取出单元120的解码模块125以解码所取出的元件。在一个实施例中,取出逻辑包括分别与线程槽101a、101b相关联的单独的定序器。通常,核101与第一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共享对较高级或较远离的高速缓存的访问,诸如与片上接口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和任何其它已知的计算机设备/接口)可以集成在单个管芯或集成电路上以提供具有高功能性和低功率消耗的小形状因子。

在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176以支持本文所描述的装置和方法或与其对接。编译器通常包括程序或程序集合以将源文本/代码转换成目标文本/代码。通常,利用编译器编译程序/应用代码在多个阶段和多遍中完成以将高级编程语言代码变换成低级机器或汇编语言代码。然而,单遍编译器仍旧可以用于简单的编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,诸如词汇分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。

较大的编译器通常包括多个阶段,但是最通常的,这些阶段被包括在两个一般阶段内:(1)前端,即一般地其中可以发生语法处理、语义处理和某种变换/优化,以及(2)后端,即一般地其中发生分析、变换、优化和代码生成。一些编译器是指中部,其说明了编译器的前端和后端之间的描绘的模糊性。作为结果,对编译器的插入、关联、生成或其它操作的引用可以发生在任何前述阶段或遍以及编译器的任何其它已知阶段或遍中。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,诸如在编译的前端阶段中插入调用/操作以及然后在变换阶段期间将调用/操作变换成较低级代码。要指出的是,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化用于在运行时期间执行的代码。作为具体说明性示例,二进制代码(已经编译的代码)可以在运行时期间被动态地优化。在此,程序代码可以包括动态优化代码、二进制代码或其组合。

类似于编译器,转换器(诸如二进制转换器)静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可以是指:(1)(多个)编译器程序、优化代码优化器或转换器动态或静态地执行,以编译程序代码、维持软件结构、执行其它操作、优化代码或转换代码;(2)包括操作/调用的主程序代码的执行,诸如已经被优化/编译的应用代码;(3)与主程序代码相关联的其它程序代码(诸如库)的执行以维持软件结构、执行其它软件相关操作或优化代码;或(4)其组合。

图2图示了依照某些实施例的包括包含多个路由器204的noc系统的处理器200的框图。处理器200可以包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持处理器、应用处理器、协处理器、soc或执行代码的其它设备。在特定实施例中,处理器200实现在单个管芯上。

在所描绘的实施例中,处理器200包括多个网络元件202,其布置在网格网络中并且利用双向链路耦合到彼此。然而,依照本公开的各种实施例的noc可以应用于任何合适的网络拓扑(例如分层级网络或环形网络)、大小、总线宽度和过程。每一个网络元件202包括路由器204。路由器204可以在网络(诸如分组交换网络和/或电路交换网络)中与彼此通信链接,因而使得能够实现连接到路由器的noc的组件(诸如核、存储元件或其它逻辑块)之间的通信。在所描绘的实施例中,每一个路由器204可以通信耦合到其自身的核208(或其它逻辑块)。如本文所使用的,对核的引用还可以应用于其中使用不同的逻辑块来代替核的其它实施例。例如,各种逻辑块可以包括硬件加速器(例如图形加速器、多媒体加速器或视频编码/解码加速器)、i/o块、存储器控制器或其它合适的固定功能逻辑。处理器200可以包括任何数目的处理元件,其可以是对称或非对称的。例如,处理器200的核208可以包括非对称核或对称核。处理器200可以包括操作为分组交换网络和电路交换网络中的任一个或二者的逻辑以提供管芯内通信。

在特定实施例中,分组可以使用分组交换网络的资源而在各种路由器204之间传送。也就是说,分组交换网络可以提供路由器(及其相关联的核)之间的通信。分组可以包括控制部分和数据部分。控制部分可以包括分组的目的地地址,并且数据部分可以包含要在管芯100上传送的具体数据。例如,控制部分可以包括对应于管芯的网络元件或核中的一个的目的地地址。分组交换网络可以包括缓冲,因为不保证从源到目的地的专用路径,并且因此如果两个或更多分组需要穿过相同的链路或互连,则分组可能需要被临时停止。作为示例,分组可以在分组从源行进到目的地时在每一个相应路由器处缓冲(例如通过触发器)。分组可以由路由器204接收、传输和处理。分组交换网络可以使用相邻路由器之间的点对点通信。分组的控制部分可以经由分组时钟(诸如4ghz时钟)在路由器之间传递。分组的数据部分可以基于类似时钟(诸如4ghz时钟)在路由器之间传递。

在实施例中,处理器200的路由器可以不同地提供在两个网络中或者在两个网络中通信,所述两个网络诸如分组交换网络和电路交换网络。这样的通信方案可以称为混合分组/电路交换网络。在这样的实施例中,分组可以使用分组交换网络和电路交换网络的资源在各种路由器204之间不同地通信。为了传输单个数据分组,电路交换网络可能分配整个路径,而分组交换网络可能仅分配单个区段(segment)(或互连)。在一些实施例中,分组交换网络可以用于保留电路交换网络的资源以用于路由器204之间的数据传输。

路由器204可以包括多个端口集合以不同地耦合到邻接的网络元件202并且与其通信。例如,电路交换和分组交换信号可以通过这些端口集合传送。路由器204的端口集合可以例如根据邻接的网络元件的方向和/或与这样的元件的业务交换的方向而进行逻辑划分。例如,路由器204可以包括北端口集合,其具有被配置成(分别)从位于关于路由器204的“北”方向上的网络元件202接收通信并且向其发送通信的输入(“in”)和输出(“out”)端口。此外或可替换地,路由器204可以包括类似端口集合以与位于南、西、东或其它方向的网络元件对接。在所描绘的实施例中,路由器204被配置用于x第一、y第二路由,其中数据首先在东/西方向上移动,并且然后在北/南方向上移动。在其它实施例中,可以使用任何合适的路由方案。

在各种实施例中,路由器204还包括另一端口集合,其包括被配置成(分别)从网络的另一代理接收通信和向其发送通信的输入端口和输出端口。在所描绘的实施例中,该端口集合在路由器204的中心处示出。在一个实施例中,这些端口用于与邻近于路由器204、与路由器204通信或以其它方式与路由器204相关联的逻辑的通信,所述逻辑诸如“本地”核208的处理器逻辑。在本文中,该端口集合将成为“核端口集合”,不过在一些实现方式中其可以与除了核之外的逻辑对接。在另一实施例中,该端口集合用于与处于高于路由器204的级别的网络层级的下一级别中的网络元件的通信。在一个实施例中,东和西方向链路在一个金属层上,北和南方向链路在第二金属层上,并且核链路在第三金属层上。在实施例中,路由器204包括纵横开关和仲裁逻辑以提供端口间通信的路径,诸如图2中所示的。每一个网络元件中的逻辑(诸如核208)可以具有唯一时钟和/或电压,或者可以与noc的一个或多个其它组件共享时钟和/或电压。

通过来自noc的寿命内的过程/电压/温度(pvt)和老化引致的降级的管芯内变化,在大程度上掌控noc设计(诸如网状和较高维度拓扑)中的管芯上数据通信链路的性能和能量效率。传统上,通过将最差情况安全带构建到链路的电压-频率设置中来计及这些变化的性能影响。这些变化的影响在按比例缩小工艺(scaledprocess)技术中、在较低操作电压处并且在更大数目的核在相同管芯上集成的情况下正在变得更加严重。

诸如电压下降、温度和老化之类的动态变化将自身表明为电路的关键路径上的定时错误。在标称条件下,当不存在最差情况变化时,存在使数据沿每一个关键路径传播并且锁存(latch)到接收状态元件中的充足时间,并且没有发生错误。然而,在存在动态变化下,关键路径延迟增加,从而造成锁存到接收锁存器或触发器中的不正确数据。

当前的noc路由算法不计及noc寿命期间的运行时和制造后(post-manufacturing)的链路延迟的静态和动态pvt变化的影响。路由算法可以假定最差情况条件在所有时间跨noc而均匀存在。本公开的各种实施例包括用于分组交换、电路交换和混合noc结构的智能路由装置。在一些实施例中,智能路由装置利用由于工艺变化所致的针对每一个节点对的链路性能的制造后静态映射。该装置利用每链路或链路组的可调谐复制电路(trc),其在测试时间处被校准以追踪由于电压和温度改变所致的相应链路或链路组的rc延迟变化。这些trc可以用于本地供给噪声和温度变化的运行时感测和映射并且用于追踪邻近节点之间的链路延迟上的对应影响。执行trc(其经历与它们仿真的链路相同的电压-温度应力)的周期性测试以计及处理器寿命内的老化引致的链路延迟改变。从校准和测试trc获得的信息被提供以供路由算法使用。该算法可以使用启发法以使用最近可用pvt变化和老化映射信息来优化noc业务的路由以改进noc的性能、吞吐量、能量效率、等待时间、错误率和/或其它操作特性。

图3图示了依照某些实施例的包括包含多个路由器204、trc302和trc控制器306的noc系统的处理器300的框图。处理器300可以具有本文关于处理器200描述的任何合适的特性。在所描绘的实施例中,trc被放置在靠近每一个链路。例如,trc302a与路由器204a和204b之间的链路相关联,trc302b与路由器204b和204c之间的链路相关联,trc302c与路由器204c和204d之间的链路相关联,并且trc302d与路由器204d和204a之间的链路相关联。如本文所使用的,链路可以包括路由器之间的互连以及位于路由器内的逻辑和互连。例如,路由器204a和204b之间的链路的关键路径可以包括位于路由器204a和204b中的任一个或二者中的逻辑或互连加上路由器之间的互连。在特定实施例中,通过链路的关键路径可以包括方向逻辑(其确定要向哪个路由器转发数据)和优先级逻辑(其在多个竞争请求之间进行选择以转发数据)中的一个或多个。在其它实施例中,链路的关键路径可以包括附加或其它的逻辑。如本文所使用的,链路可以是指noc中的分组交换路径的区段或电路交换路径的区段。

每一个trc302追踪与其相关联的链路的pvt变化和老化降级。在其它实施例中,单个trc302可以与位于靠近彼此的多个链路相关联。例如,处理器可以包括每区一个trc302,其中区可以包括任何合适数目的链路,诸如四个、八个、十六个或其它数目的链路。在这样的实施例中,单个trc302可以用于追踪与其相关联的区中的每一个链路的pvt变化和老化降级。为了追踪其相关联的链路的延迟,每一个trc302耦合到trc控制器306,所述trc控制器306与trc302通信以实行trc的校准和测试。如所描绘的每一个trc的部分可以包括对承载trc与trc控制器306之间的控制信号和测试结果必要的互连。

在所描绘的实施例中,trc插入跨处理器的水平和竖直线中,其中每一条线包括多个trc,所述多个trc均位于两个路由器之间。然而,trc可以以任何合适的几何结构放置。图3中所示的各种元件不一定按照比例绘制。例如,每一个trc不必横跨从一个路由器到另一路由器的长度,并且trc控制器不必横跨芯片的整个长度。

图4图示了依照某些实施例的示例trc302。trc302使用与其相关联的链路相同的电压供给和时钟以便准确地追踪链路处的延迟变化。trc可以包括实施可调节延迟的逻辑的任何合适的组合。在所描绘的实施例中,trc302包括触发器406、错误检测逻辑430和触发器406与错误检测逻辑之间的延迟部分。触发器406使用和与trc302仿真的链路相关联的关键路径中的逻辑相同的时钟来计时。触发器406可以对与trc的延迟部分的输出处的数据相比的数据计时。在特定实施例中,触发器406包括每一个时钟循环交替其输出的反转(toggle)触发器。在其它实施例中,任何合适的数据生成逻辑可以用于向trc的延迟部分提供数据。

trc302的延迟部分包括集体可操作以通过trc实施可变延迟的各种逻辑组件。例如,在所描绘的实施例中,trc包括反相器414、nand门418、nor门422和重复互连426。trc可以包括任何其它合适的逻辑组件,诸如多层栅极、传输门或其它逻辑组件。

trc302的延迟部分的各种延迟组件和复用器可以通过调谐和校准位402来控制。作为示例,调谐和校准位402可以使得能够实现组件中的一个或多个或改变组件中的一个或多个的操作特性(例如组件或p-n偏斜(skew)的大小)以调节通过trc的区段的延迟。各种复用器410可以通过位402来控制以在trc的每个级处传递多个区段(每一个具有其自身的延迟)中的一个。在各种实施例中,调谐和校准位402可以由trc的逻辑或由trc控制器306来控制。

将最后的复用器410c的输出馈送至错误检测逻辑430,错误检测逻辑430通过用于对触发器406和与trc302追踪的链路(或链路组)相关联的逻辑计时的相同时钟来计时。错误检测逻辑430可操作成确定由触发器406计时的数据是否匹配在错误检测逻辑430处计时的数据。如果数据不匹配,则检测到错误,其指示通过trc的延迟长于时钟的循环。在特定实施例中,错误检测逻辑430可以对所接收的数据计时第一次和此后不久的第二次。如果结果不同,则可以确定通过trc的延迟粗略地等于时钟周期(实际上延迟略微更短)。

尽管在图3中示出trc的特定实施例,但是可以使用任何其它合适的trc。例如,在一些实施例中,可以使用包括在相关联的链路的关键路径中使用的逻辑的trc。在特定实施例中,trc的一个设计可以用于实现跨处理器300的每一个trc。在其它实施例中,可以使用多个不同的trc。

图5图示了依照某些实施例的用于从trc获得延迟信息的示例方法。在步骤502处,将trc嵌入在noc中。例如,trc可以被包括在用于noc的设计中并且可以在noc上放置成接近于trc要追踪的链路。例如,trc可以放置成接近noc中的每一个链路,如图3中所描绘的。作为另一示例,trc可以放置在noc的区中并且可以用于表示该区中的多个链路。trc可以使用与它们和其相关联的链路相同的过程来制造并且因而经历类似的pvt变化。

在步骤504处,执行trc的硅后校准。该步骤可以在芯片被制造之后的任何合适的时间处执行,但是一般在芯片的寿命早期(诸如当处理器首次上电时)执行。校准可以牵涉通过trc控制器306设置trc的一个或多个操作特性和然后通过各种trc延迟设置循环并且监视错误检测逻辑430的输出以确定特定trc延迟设置处的延迟特性。然后调节trc的一个或多个操作特性并且重复该过程。可以在校准期间调节任何合适的操作特性,诸如电压、频率、温度或其它操作特性。在特定实施例中,针对每一对若干不同的电压和频率设定点而测试各种延迟设定点。

在各种实施例中,在设置特定操作特性组之后,调节trc的延迟部分并且监视错误检测逻辑430以确定通过trc的延迟是小于时钟周期还是大于时钟周期(基于错误是否由错误检测逻辑430检测到)。再次调节trc的任何部分并且观察结果。对于操作特性的每一个集合,通过trc的延迟可以被调节和测试任何合适的次数。此外或可替换地,在校准期间,可以监视通过trc的延迟以确定通过trc的延迟加上一个或多个固定延迟裕度小于时钟周期还是大于时钟周期。可以使用任何合适的裕度,诸如自适应电压/频率响应期间的最大可能读取延迟改变、一个时钟循环中的最大可能读取延迟改变或其它合适的延迟裕度。这些延迟裕度可以使用任何合适的电路实现。

校准的各种结果可以由noc存储,例如由trc控制器306存储。在一个实施例中,对于trc的操作特性的每一个集合和延迟设置,记录一个或多个结果,诸如在延迟中导致的特定延迟设置小于时钟周期还是大于时钟周期,延迟加上第一裕度小于时钟周期还是大于时钟周期,延迟加上第一裕度加上第二裕度小于时钟周期还是大于时钟周期,和/或其它合适的结果。在其它实施例中,仅存储这些结果的子集。例如,如果第一延迟设置导致小于时钟周期的延迟,但是下一最长延迟设置导致多于时钟周期的延迟,则第一延迟设置可以被视为匹配时钟周期并且可以被存储。类似地,如果第一延迟设置导致小于时钟周期减去一个或多个延迟裕度的延迟,但是下一最长延迟设置导致多于时钟周期减去所述一个或多个延迟裕度的延迟,则第一延迟设置可以视为匹配时钟周期减去所述一个或多个裕度并且可以被存储。

校准可以针对处理器300上的每一个trc302而执行。在一些实施例中,跨整个处理器300使用相同的操作特性集合以校准trc。在其它实施例中,在校准期间使用的操作特性设定点可以基于预期本地条件而定制。

校准的结果可以指示链路之中的相对延迟。例如,对于操作特性的给定集合,如果被配置到在错误开始发生的点处的第一trc的延迟部分中的延迟量长于被配置到错误发生的点处的第二trc的延迟部分中的延迟量,则确定与第一trc相关联的链路具有短于与第二trc相关联的链路的延迟。

在trc的校准完成之后,来自校准结果的延迟信息可以用于在步骤506处优化noc上的路由。该步骤将关于图6更详细地描述。在步骤508处,确定是否需要对延迟信息的更新。如果不需要更新,则noc可以使用该延迟信息继续优化路由。noc可以使用任何合适的方法以用于确定是否需要更新。例如,noc可以被配置成周期性地执行更新,诸如每小时一次、每天一次、每月一次、其它合适的间隔或在某个事件时,诸如当处理器通电时。作为另一示例,如果在一个或多个链路上检测到错误,则noc可以确定需要更新。如果在步骤508处确定需要对延迟信息的更新,则可以在步骤510处测试trc以便追踪老化引致的延迟降级。可以使用trc的任何合适测试。例如,可以执行与以上关于校准所描述的类似的过程。在一些实施例中,测试过程可以使用校准结果作为用于测试的起始点,使得测试可能不需要循环通过如校准过程那么多的延迟设置。测试的结果指示通过与trc相关联的链路的延迟是否已经由于由老化导致的应力而增加(以及增加到什么程度)。一旦测试完成,在步骤506处再次使用经更新的结果以优化noc中的路由。

图5中图示的步骤中的一些可以被重复、组合、修改或删除,其中还可以向流程图添加适当的和附加的步骤。此外,步骤可以在不脱离特定实施例的范围的情况下以任何合适的次序执行。

图6图示了依照某些实施例的用于基于trc延迟信息而对分组进行路由的示例方法。尽管该示例聚焦于保留请求分组,但是本文所描述的步骤可以应用于任何合适类型的分组或电路交换数据的路由。在步骤602处,在路由器的端口处接收保留请求分组。请求分组可以进入路由器的输入端口。在混合源同步noc实现方式中,请求分组建立位于网络元件202处的源逻辑与位于不同的网络元件处的目的地逻辑之间的电路交换信道。为了开始数据传递,源逻辑朝向目的地逻辑发送保留分组。该保留分组可以经由noc的分组交换部分进行传送,并且可以在保留分组从源行进到目的地时保留用于源逻辑与目的地逻辑之间的电路交换数据通信的资源。

保留分组可以包括促进电路交换信道的保留的任何合适的信息。作为示例,保留分组可以包括与目的地相关联的地址和可选的边带分组数据。在实施例中,唯一的地址可以与每一个核208或其它逻辑块(以及因而在其中存在核与路由器之间的1:1映射的情况下的路由器204)相关联。在步骤604处,确定分组的目的地地址。

在步骤606处,访问trc延迟信息。例如,可以获得trc延迟信息的子集,其是从trc的校准或稍后的测试获得的。在一些实施例中,访问与链路相关联的trc延迟信息,所述链路位于从接收分组的路由器到与目的地地址相关联的路由器的各种可能路由中。这样的延迟信息可以指示通过链路的相对延迟。例如,延迟信息可以指示特定链路具有比另一链路更高的延迟裕度。作为另一示例,延迟信息可以指示特定链路比另一链路较少可能经历错误。在各种实施例中,被访问的trc延迟信息的子集基于位于从路由器到目的地的各种可能路由中的链路的当前或预期操作特性(例如电压和/或频率)。

在步骤608处,基于trc延迟信息而选择去到目的地逻辑的路径的一个或多个链路。例如,接收分组的每一个路由器(除了最终路由器之外)可以选择分组应当被发送到的下一路由器和去到该路由器的相关联的链路。在特定实施例中,每一个路由器可以访问路由表或利用具有实现在逻辑中的各种路由规则的专用电路以确定分组应当被发送到的下一路由器。作为另一示例,可以实现源结构化路由,其中直接从源逻辑接收分组的路由器可以选择整个路径(即分组应当行进通过而去到目的地逻辑的链路)。在特定实施例中,路由器的方向逻辑确定路径的所述一个或多个链路。

可以基于任何合适的目的来确定路径的一个或多个链路。例如,在路由器处执行以选择路径的路由算法可以被配置成优化noc的整合带宽、等待时间、能量效率、错误率或其它合适的性能度量。在一些实施例中,路径的一个或多个链路还可以被选择成避免可能导致错误或具有低延迟裕度(如通过相关联的trc的测试所指示的)的链路。在步骤608处选择一个或多个链路之后,在步骤610处经由在步骤608处选择的链路向下一路由器发送保留请求。如果资源不可用于立即转发保留请求,则保持保留请求直至资源变得可用为止。

图6中图示的步骤中的一些可以在适当的情况下被重复、组合、修改或删除,并且还可以向流程图添加附加的步骤。此外,步骤可以在不脱离特定实施例的范围的情况下以任何合适的次序执行。

图7图示了针对依照一个实施例的示例计算系统的框图的另一实施例。在该图中,描绘了依照本公开的片上系统(soc)设计的实施例。作为具体说明性示例,soc700被包括在用户设备(ue)中。在一个实施例中,ue是指由最终用户用于通信的任何设备,诸如手持电话、智能电话、平板电脑、超薄笔记本电脑、具有宽带适配器的笔记本电脑或任何其它类似的通信设备。通常ue连接到基站或节点,该基站或节点潜在地在本质上对应于gsm网络中的移动站(ms)。

在此,soc700包括2个核——706和707。类似于以上的讨论,核706和707可以遵守指令集架构,诸如基于intel®architecturecoretm的处理器、advancedmicrodevice公司(amd)处理器、基于mips的处理器、基于arm的处理器设计或其客户,以及其被许可者或采纳者。核706和707耦合到与总线接口单元709和l2高速缓存710相关联的高速缓存控制708以与系统700的其它部分通信。互连710包括片上互连,诸如iosf、amba或以上讨论的其它互连,其潜在地实现所描述的公开内容的一个或多个方面。

接口710提供去到其它组件的通信信道,诸如订户身份模块(sim)730以与sim卡对接、引导rom735以保持引导代码以供核706和707执行以初始化和引导soc700、sdram控制器740以与外部存储器(例如dram760)对接、闪速控制器745以与非易失性存储器(例如闪存765)对接、外设控制q1650(例如串行外围接口)以与外设对接、视频编解码器720和视频接口725以显示和接收输入(例如支持触摸的输入)、gpu715以执行图形相关计算等。这些接口中的任何一个可以合并本文所描述的公开的各方面。

此外,系统图示了用于通信的外设,诸如蓝牙模块770、3g调制解调器775、gps785和wifi785。如以上陈述的那样要指出的是,ue包括用于通信的无线电设备。作为结果,这些外设通信模块并非全部都是必需的。然而,在ue中要包括用于外部通信的某种形式的无线电设备。

设计可能经历各种阶段,从创建到模拟到制造。表示设计的数据可以以数个方式表示该设计。第一,如在模拟中有用的,硬件可以使用硬件描述语言(hdl)或另一功能描述语言来表示。此外,具有逻辑和/或晶体管门的电路级模型可以在设计过程的一些阶段处产生。另外,大多数设计在某个阶段处达到表示硬件模型中的各种设备的物理放置的数据级别。在其中使用常规的半导体制造技术的情况中,表示硬件模型的数据可以是指定针对用于产生集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在一些实现方式中,这样的数据可以以数据库文件格式来存储,诸如图形数据系统ii(gdsii)、开放原图系统互换标准(oasis)或类似格式。

在一些实现方式中,除其它示例之外,基于软件的硬件模型和hdl以及其它功能描述语言对象尤其可以包括寄存器传输语言(rtl)文件。这样的对象可以是机器可解析的,使得设计工具可以接受hdl对象(或模型),针对所描述的硬件的属性而解析hdl对象,并且从对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以从hdl对象确定各种硬件和/或固件元件的配置,除将被实现以便实现在hdl对象中建模的系统的其它属性之外,尤其诸如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑。设计工具可以包括用于确定片上系统(soc)和其它硬件设备的拓扑和结构配置的工具。在一些实例中,hdl对象可以用作用于开发模型和设计文件的基础,所述模型和设计文件可以由制造装备用于制造所描述的硬件。实际上,hdl对象自身可以作为数据被提供到制造系统软件以导致所描述的硬件。

在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置(诸如盘)可以是存储信息的机器可读介质,该信息经由被调制或以其它方式生成以传输这样的信息的光学或电学波来传输。当传输指示或承载代码或设计的电学载波时,在执行电学信号的拷贝、缓冲或重传的程度上,制作新的副本。因此,通信提供者或网络提供者可以在有形、机器可读介质上至少临时地存储制品,诸如被编码到载波中、体现本公开的实施例的技术的信息。

如本文所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如微控制器,其与存储适配成由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用是指硬件,其被具体地配置成识别和/或执行要在非暂时性介质上保持的代码。另外,在另一实施例中,模块的使用是指包括代码的非暂时性介质,代码被具体地适配成由微控制器执行以实行预定操作。并且如可以推断出的,在又一实施例中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。通常,被图示为分离的模块边界经常变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,而同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑设备。

在一个实施例中,短语“以(to)”或“被配置成(configuredto)”的使用是指布置、放置在一起、制造、销售要约、导入和/或设计装置、硬件、逻辑或元件以执行指定或确定的任务。在该示例中,没有正在进行操作的装置或其元件仍旧“被配置成”执行指定任务,如果其被设计、耦合和/或互连成执行所述指定任务的话。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置成”向时钟提供使能信号的逻辑门不包括可以提供1或0的每一个潜在逻辑门。而是,逻辑门是以某种方式耦合的一个,其在操作期间1或0输出启用时钟。要再一次指出的是,术语“被配置成”的使用不要求操作,而是聚焦于装置、硬件和/或元件的潜伏状态,其中在潜伏状态中,装置、硬件和/或元件被设计成当装置、硬件和/或元件正在操作时执行特定任务。

另外,在一个实施例中,短语“能够(capableof)/能够以(to)”和或“可操作成(operableto)”的使用是指以使得能够实现装置、逻辑、硬件和/或元件以指定方式的使用的这样的方式设计的某个装置、逻辑、硬件和/或元件。如以上所指出的那样,在一个实施例中,以、能够以或可操作成的使用是指装置、逻辑、硬件和/或元件的潜伏状态,其中装置、逻辑、硬件和/或元件没有进行操作,但是以这样的方式设计成使得能够实现装置以指定方式的使用。

如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑性值的使用还称为1和0,其简单地表示二进制逻辑状态。例如,1是指高逻辑电平并且0是指低逻辑电平。在一个实施例中,存储单元(诸如晶体管或闪存单元)可以能够保持单个逻辑值或多个逻辑值。然而,已经使用计算机系统中的值的其它表示。例如,十进制数十还可以表示为二进制值1010和十六进制字母a。因此,值包括能够在计算机系统中保持的信息的任何表示。

而且,状态可以通过值或值的部分来表示。作为示例,第一值(诸如逻辑一)可以表示默认或初始状态,而第二值(诸如逻辑零)可以表示非默认状态。此外,在一个实施例中,术语复位和置位分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而经更新的值潜在地包括低逻辑值,即置位。要指出的是,值的任何组合可以用于表示任何数目的状态。

以上阐述的方法、硬件、软件、固件或代码的实施例可以经由由处理元件可执行的指令或代码来实现,所述指令或代码被存储在机器可访问、机器可读、计算机可访问或计算机可读介质上。非暂时性机器可访问/可读介质包括以可由机器(诸如计算机或电子系统)可读的形式提供(即存储和/或传输)信息的任何机构。例如,非暂时性机器可访问介质包括随机存取存储器(ram),诸如静态ram(sram)或动态ram(dram);rom;磁性或光学存储介质;闪速存储器设备;电学存储设备;光学存储设备;声学存储设备;其它形式的存储设备,其用于保持从暂时性(传播)信号(例如载波、红外信号、数字信号)接收的信息;等,所述暂时性信号要从可以从其接收信息的非暂时性介质区分开。

用于编程逻辑以执行本公开的实施例的指令可以被存储在系统中的存储器内,诸如dram、高速缓存、闪速存储器或其它存储装置。另外,指令可以经由网络或通过其它计算机可读介质的方式分发。因此机器可读介质可以包括用于以由机器(例如计算机)可读的形式存储或传输信息的任何机构,但是不限于软盘、光盘、压缩盘、只读存储器(cd-rom)和磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器,或使用在通过因特网经由电学、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等)传输信息中的有形、机器可读存储装置。相应地,计算机可读介质包括适合于以由机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。

一个或多个实施例可以提供一种装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑、方法和非暂时性机器可读介质(包括表示结构的信息,所述结构在被制造时配置)以包括至少一个可调谐复制电路,可调节复制电路与一个或多个链路相关联,以及片上网络的路由器。所述路由器要访问与所述至少一个可调谐复制电路中的一个或多个相关联的延迟信息并且基于延迟信息在片上网络中对数据进行路由。

在至少一个示例中,所述装置是处理器。

在至少一个示例中,所述数据要包括分组数据。

在至少一个示例中,所述数据要包括针对电路交换信道的基于分组的保留请求。

在至少一个示例中,所述路由器还要通过利用将片上网络的带宽考虑在内的路由算法来基于延迟信息而对数据进行路由。

在至少一个示例中,所述路由器还要通过利用将片上网络的等待时间考虑在内的路由算法来基于延迟信息而对数据进行路由。

在至少一个示例中,所述路由器还要通过利用将片上网络的能量效率考虑在内的路由算法来基于延迟信息而对数据进行路由。

在至少一个示例中,所述路由器要通过选择用于数据的下一链路来对数据进行路由。

在至少一个示例中,所述路由器要通过选择去到数据的目的地的多个链路来对数据进行路由。

在至少一个示例中,所述可调谐复制电路要追踪与可调谐复制电路相关联的所述一个或多个链路的老化相关延迟。

在至少一个示例中,周期性地测试通过可调谐复制电路的延迟以追踪通过与可调谐复制电路相关联的所述一个或多个链路的延迟。

在至少一个示例中,还包括可调谐复制电路控制器以从所述至少一个可调谐复制电路获得延迟信息。

在至少一个示例中,可调谐复制电路包括多个延迟组件,所述多个延迟组件要提供通过可调谐复制电路的可调节延迟。

一个或多个实施例可以提供一种装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑(例如片上网络的路由器)、方法和非暂时性机器可读介质(包括表示结构的信息,所述结构在被制造时配置)以接收与片上网络的多个链路相关联的延迟信息并且基于延迟信息而确定数据路径的至少一个链路。

在至少一个示例中,所述延迟信息是从多个可调谐复制电路获得的,可调谐复制电路追踪通过所述多个链路中的一个或多个的延迟。

在至少一个示例中,所述延迟信息指示所述多个链路之间的相对延迟。

在至少一个示例中,所述至少一个链路包括从片上网络的路由器到片上网络的另一路由器的链路。

在至少一个示例中,所述至少一个链路包括从片上网络的路由器到耦合至要被路由的数据的目的地的路由器的多个链路。

在至少一个示例中,要周期性地更新与所述多个链路相关联的延迟信息。

一个或多个实施例可以提供一种装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑、方法和非暂时性机器可读介质(包括表示结构的信息,所述结构在被制造时配置)以包括多个核,核要与片上网络的路由器相关联,以及多个链路,链路将片上网络的路由器耦合到片上网络的另一路由器;多个可调谐复制电路,可调谐复制电路要与所述多个链路中的一个或多个相关联;以及可调谐复制电路控制器,其从所述多个可调谐复制电路收集延迟信息。片上网络的路由器要接收数据并且基于由可调谐复制电路控制器收集的延迟信息的至少一部分而确定通过其发送数据的链路中的一个或多个。

遍及本说明书对“一个实施例”或“实施例”的引用意味着,结合实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及本说明书的各种地方中的出现不一定都是指相同的实施例。另外,特定特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。

在前述说明书中,已经参照具体示例性实施例给出了详细描述。然而,将明显的是,可以在不脱离如在随附权利要求中阐述的本公开的更宽泛的精神和范围的情况下对其作出各种修改和改变。说明书和附图相应地要以说明性含义而不是约束性含义来对待。另外,实施例和其它示例性语言的前述使用不一定是指相同的实施例或相同的示例,而是可以是指不同且有区别的实施例,以及潜在地相同的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1