数据信号的边沿感知同步的制作方法

文档序号:11451846阅读:245来源:国知局
数据信号的边沿感知同步的制造方法与工艺

相关申请的交叉引用

本申请要求2014年12月11日提交的名称为“edge-awaresynchronizationofadatasignal”的美国专利申请no.14/567,987的优先权的权益,其通过引用全部结合于本文中。

本公开一般涉及计算机开发领域,并且更确切地说,涉及数据信号的边沿感知同步。



背景技术:

现代计算机系统或网络可包含以各种速度操作的组件。尽管以不同速度操作,但两个组件可彼此通信。作为示例,多核处理器或片上系统(soc)可包含根据它们自己的输入时钟操作的多个核。片上网络(noc)可使用一系列路由器交换机和布线资源在核与其它处理元件之间中继数据。由于noc连接多核处理器或soc的空间分散区段,因此它们可物理上跨越整个芯片或芯片的大部分。在具有变化的工作负载的多核处理器或soc中,异构处理元件、不平衡的业务或细粒度功率管理、芯片的不同区域可操作在不同电压和时钟频率下,从而使核间通信复杂化。为了促进不同时钟域之间的通信,与传递它的时钟域异步的信号可与那个时钟域同步,以便避免与亚稳态关联的问题。

附图说明

图1图示了按照一个实施例包含多核处理器的示例计算系统的框图;

图2图示了按照一个实施例用于执行数据信号的边沿感知同步的示例系统;

图3图示了按照一个实施例用于执行数据信号的边沿感知同步的示例方法;

图4图示了按照一个实施例用于同步数据信号的上升沿的示例电路;

图5图示了按照一个实施例用于同步数据信号的下降沿的示例电路;

图6图示了按照一个实施例具有信号同步器的示例时钟交叉fifo;

图7图示了按照一个实施例用于执行fifo满信号的边沿感知同步的示例方法;

图8图示了按照一个实施例用于执行fifo空信号的边沿感知同步的示例方法;以及

图9图示了按照一个实施例用于示例计算系统的框图的另一实施例。

各个附图中的相似附图标记和命名指示相似要素。

具体实施方式

在如下描述中,阐述了众多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线阶段和操作等示例,以便提供本公开的透彻理解。然而,本领域技术人员要明白,不需要采用这些特定细节来实施本公开。在其它实例中,未详细描述众所周知的组件和方法,诸如特定和备选处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、用代码的算法的特定表述、特定掉电和门控技术/逻辑以及计算机系统的其它特定操作细节,以便避免不必要地使本公开模糊不清。

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

随着计算系统进步,本文的组件变得更复杂。结果,在组件之间通信和耦合的互连架构在复杂性上增加,以确保满足用于最优组件操作的带宽要求。另外,不同市场分割要求互连架构的不同方面,以适合市场的需要。例如,服务器要求更高性能,而移动生态系统有时能够为了节能而牺牲总体性能。然而,大多数组构的突出目的是给最高可能性能提供最大节能。下面,论述若干互连,其将潜在地受益于本文描述的公开的各方面。

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

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

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

如图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)可被称为处理元件、线程槽或线程单元,如上面所描述的。如所图示的,在架构状态寄存器101b中复制架构状态寄存器101a,因此各个架构状态/上下文能够被存储用于逻辑处理器101a和逻辑处理器101b。在核101中,对于线程101a和101b,也可复制其它较小资源,诸如分配器和重命名块130中的重命名逻辑和指令指针。可通过分区共享一些资源,诸如重新排序器/引退(retirement)单元135中的重新排序缓冲器、itlb120、加载/存储缓冲器和队列。其它资源,诸如通用内部寄存器、页表基础寄存器、低级数据高速缓存和数据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共享对较高级或更高级高速缓存(诸如与片上接口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相同的封装和/或管芯上。在此,核的部分(核上部分)100包含用于与诸如存储器175或图形装置180的其它装置接口的一个或多个控制器。包含用于与此类装置对接的控制器和互连的配置经常被称为核上(或非核)配置。作为示例,片上接口110包含用于片上通信的环形互连以及用于片下通信的高速串行点对点链路105。然而,在soc环境中,甚至更多的装置,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已知的计算机装置/接口可被集成在单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因子。

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

较大编译器经常包含多阶段,但最经常的是,这些阶段被包含在两个一般阶段内:(1)前端,即,一般在句法处理、语义处理和一些变换/优化可发生的情况下,以及(2)后端,即,一般在分析、变换、优化和代码生成发生的情况下。一些编译器指的是中间的,其图示了编译器的前端与后端之间的刻画的模糊。结果,对插入、关联、生成或编译器的其它操作的提及可发生在任何上面提到的阶段或遍,以及编译器的任何其它已知阶段或遍。作为说明性示例,编译器潜在地将操作、调用、函数等插入在编译的一个或多个阶段中,诸如将调用/操作插入在编译的前端中,并且然后在变换阶段期间将调用/操作变换成较低级代码。要指出,在动态编译期间,编译器代码或动态优化代码可插入此类操作/调用,以及优化用于在运行时间期间执行的代码。作为特定说明性示例,二进制代码(已经是编译代码)可在运行时间期间动态优化。在此,程序代码可包含动态优化代码、二进制代码或其组合。

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

图2图示了按照一个实施例用于执行数据信号的边沿感知同步的示例系统200。系统200包含与另一装置202b通信的装置202a。装置202a(或其部分)可操作在时钟204a的频率下,而装置202b(或其部分)可操作在时钟204b的频率下。从而,装置202a可包括操作在第一频率下的第一时钟域,并且装置202b可包括操作在与第一频率不同的频率下的第二时钟域。第一时钟域与第二时钟域之间的成功通信可涉及将异步的信号与信号进入的时钟域同步。例如,获准进入装置202a的信号可被同步到时钟204a,而获准进入装置202b的信号可被同步到时钟204b。同步进来的信号允许亚稳态以在接收时钟域使用该信号之前求解。

用于同步进来的信号的一种方法包含将不同步信号翻转两次。这种方法涉及串行连接的两个触发器,其中这两个触发器都由期望同步的时钟进行时钟同步。要同步的信号是第一触发器的输入,第一触发器的输出是第二触发器的输入,并且第二触发器的输出是同步的信号。由于时钟和输入信号具有未知的定时关系,因此第一触发器的输出可以是亚稳态的。同步器为要求解的任何潜在的亚稳态事件提供一个时钟周期。然后,第二触发器产生无亚稳态的输出同步信号。两个翻转同步器同步进来的信号的两个沿,但在上升转变和下降转变期间都向信号添加等待时间的一至两个循环。如本文所使用的,信号沿可指的是信号的单沿(例如上升沿或下降呀),或具有类似转变的一系列沿(例如信号的所有上升沿或信号的所有下降沿)。

某些信号仅需要一个沿的同步。边沿感知同步涉及仅同步信号的一个期望沿。信号同步器206是可操作以同步一个或多个信号的一个沿的边沿感知同步器。信号同步器206当产生同步的信号时引入相对于两个翻转同步器减少的等待时间。信号同步器206可对要传送到装置202a或装置202b的任何数量的信号执行边沿感知的同步。

如将在下面更详细描述的,信号同步器206可同步来自时钟交叉数据存储元件(诸如保存将从一个时钟域传送到另一时钟域的数据的数据fifo)的信号。当然,可使用任何适合的存储元件,诸如锁存器、触发器或适合于保存数据的其它元件的集合。在一些实施例中,信号同步器206对控制信号(诸如指示数据fifo是满的信号(“fifo满”信号)或者空的信号(“fifo空”信号))执行边沿感知同步。在此类实施例中,仅fifo满信号的下降沿需要与传送装置的时钟同步(因为fifo满信号的上升沿出现在由传送装置执行的操作上,并且从而已经同步到传送装置)。类似地,仅fifo空信号的下降沿需要与接收装置的时钟同步(因为fifo空信号的上升沿出现在由接收装置执行的操作上,并且从而已经同步到接收装置)。下面将结合图6-8更详细地探讨此类实施例。

在具体实施例中,信号同步器206包含可操作以仅同步被输入到上升沿同步器的信号的上升沿的上升沿同步器(诸如下面描述的上升沿同步器400),和/或可操作以仅同步被输入到下降沿同步器的信号的下降沿的下降沿同步器(诸如下面描述的下降沿同步器500)。

信号同步器206可与任何适合的装置202一起使用,诸如台式计算机系统、服务器计算机系统、手持装置(诸如蜂窝电话、因特网协议装置、数码相机、pda或手持pc)、平板计算机、笔记本计算机系统、soc装置、嵌入式应用、网络通信装置或适合于传送或接收数据的其它装置。在一些实施例中,信号同步器206用于执行装置组件诸如下面参考图9描述的片上系统(soc)900的处理器100或核906和907(或其它处理元件)的核101和102(或其它处理元件)之间的边沿感知的同步。从而,任何适合的通信元件可由图2的装置202表示。一般而言,本文描述的信号同步器206的实施例可用在信号单沿的同步是充分的任何系统中。

图3图示了按照一个实施例用于执行数据信号的边沿感知同步的示例方法300。在步骤302,例如由信号同步器206接收具有第一沿和第二沿的信号。在此示例中,进来的信号的第二沿与期望时钟不同步,而信号的第一沿可能已经与期望时钟同步或者可能与之不同步。

在步骤304,信号的第一沿被传递到信号同步器206的输出。虽然信号的第一沿可传递通过一个或多个缓冲器诸如反相器等,但在信号的第一沿上不执行同步。如早先提到的,这是因为边沿感知同步器仅同步信号的一个沿。在步骤306,信号的第二沿与期望时钟同步。可使用上面描述的两个翻转方法或任何其它适合的同步方法来同步信号的第二沿。在步骤308,同步的第二沿然后被传递到输出。在传递到输出之前,同步的第二沿可传递通过一个或多个缓冲器诸如反相器等。

在图3中图示的其中一些步骤可视情况而定被组合、修改或删除,并且附加步骤也可被添加到流程图。此外,步骤可按任何适合的次序执行,而不脱离具体实施例的范围。

图4图示了按照一个实施例用于同步数据信号414的上升沿的示例电路400。上升沿同步器400包括sr锁存器402、包括串行连接的触发器410和412的同步电路404以及反相器406和408。可使用任何适合的同步电路来代替同步电路404。例如,同步电路可包括一个或多个触发器或其它同步电路。触发器410和412由期望上升沿同步的时钟进行时钟同步。输入信号414通过反相器406传递到sr锁存器402的s输入,并且还通过第二触发器512传递到第一触发器410的输入,并且传递到sr锁存器402的r输入。sr锁存器402的输出通过反相器408传递到上升沿同步器400的输出416。

上升沿同步器400仅执行必要的同步(即上升沿同步),并在下降转变期间估计延迟惩罚。在输入信号414中的下降转变时,在它通过反相器406反相之后,下降转变直接置位sr锁存器402。置位输入覆盖(override)复位输入,并通过反相器408传播到输出16,而没有同步等待时间。在输入信号414的上升沿,在复位sr锁存器之前,转变通过同步电路404传播,执行上升沿与期望时钟的同步。用这种方式,上升沿同步器400将输入信号414的上升沿同步到期望时钟,同时允许输入信号414的下降沿通过,而不在下降沿上执行同步操作。

图5图示了按照一个实施例用于同步数据信号的下降沿的示例电路500。下降沿同步器500包括sr锁存器502、包括串行连接的触发器510和512的同步电路504以及反相器506。可使用任何适合的同步电路代替同步电路504。例如,同步电路可包括一个或多个触发器或其它同步电路。触发器510和512由期望下降沿同步的时钟进行时钟同步。输入信号514传递到sr锁存器502的s输入,并且还通过第二触发器512和反相器506传递到第一触发器510的输入,并且传递到sr锁存器502的r输入。sr锁存器502的输出传递到下降沿同步器500的输出516。

下降沿同步器500仅执行必要的同步(即下降沿同步),以在上升转变期间估计延迟惩罚。在输入信号514中的上升转变时,上升转变直接将锁存器502置位。置位输入覆盖复位输入,并传播到输出516,而没有同步等待时间。在输入信号的下降沿,在复位sr锁存器之前,转变通过同步电路504和反相器506传播,执行下降沿与期望时钟的同步。用这种方式,下降沿同步器500将输入信号514的下降沿同步到期望时钟,同时允许输入信号514的上升沿通过,而不在上升沿上执行同步操作。

在具体实施例中,信号同步器诸如信号同步器206可包含上升沿同步器400和下降沿同步器500之一或二者。如早先提到的,信号同步器206可用于促进处理器的核或其它处理元件之间的通信。在一些实施例中,在片上网络(noc)中使用一个或多个信号同步器206。noc是在多核系统中使用的组构拓扑。noc可位于包含多个核或其它处理元件的管芯上,它们可以不对称或对称。多个核和处理元件中的每个都可具有能以通信方式将核或处理元件与其它核或处理元件耦合的路由器。路由器可以通信方式在网络中彼此链接。在一个实施例中,在格状网络中布置多个路由器。noc通过由与链路连接的这些路由器构成的共享互连将数据从源发送到目的地。同步分组交换noc可根据基于全局时钟与它们的邻居通信的路由器构建。分组交换指的是在每个路由器中至少翻转/存储数据。从而,同步分组交换noc中的所有路由器都在相同频率操作。

源同步noc发送延迟匹配的时钟,连同每个数据传送,取消了对于完全同步时钟的需要。这种技术通过移除了对于同步在每个路由器的先进先出数据寄存器(fifo)的需要,促进了多时钟设计。另外,通过仅对于训练的路径而不是最坏情况的路径引起延迟而增加吞吐量。通过对定时变化求平均,而不是与完全同步设计中一样应用最坏情况裕度,也减轻过程变化。此类设计还消除了时钟偏斜和抖动的裕度。然而,使用分组交换的源同步noc消耗了时钟功率以翻转数据,并在每个路由器至少控制一次信号。源同步操作和分组交换彼此独立。

在各种实施例中,提供了具有源同步设计的混合noc。在混合noc中,分组交换预留分组用于建立电路交换数据信道。在一个实施例中,分组交换预留分组可相对小,而电路交换数据传送相对大。分组在每个路由器节点至少翻转一次。相比之下,电路交换传送没有路由器内存储,降低了时钟功率。用这种方式,noc使混合分组和电路交换数据通信能够在完全同步或分组交换noc上以增加的能量效率和吞吐量发生。通过在电路交换信道上传送大多数数据,可避免介于中间的存储元件,降低了功耗。并且通过使用混合设计,分组交换网络可用于预留电路交换网络的路径,缓解来自对于网络资源的竞争的拥塞。

混合noc从而组合分组交换网络的吞吐量与电路交换数据信道的能量效率。使用源同步布置,处理器,诸如片上系统(soc),包含noc,可用多时钟域进行设计。源同步操作促进了异构noc与众多时钟域的集成,而没有全局时钟分布或同步每个路由器中的数据fifo缓冲器。因此,防止网络性能受慢路径或路由器的全局限制,并且吞吐量通过平均过程变化诱发的定时变化并且消除对于时钟偏斜和抖动的裕度而增加。

在具体实施例中,noc(诸如混合分组/电路交换noc)使用具有跨时钟边界同步的控制信号(诸如fifo满信号和空信号)的一个或多个时钟交叉数据fifo。图6图示了按照一个实施例具有信号同步器650的示例时钟交叉fifo600。

在描绘的实施例中,fifo600用4个深度寄存器和旋转写指针620和读指针630实现。fifo组610将进来的写数据经由受写指针620控制的多路分解器605写到其条目中的对应条目中,写指针620又包含灰度计数器622和解码器624。fifo组610的条目耦合到输出多路复用器615,其经由受灰度计数器632和解码器634控制的读指针630输出要读取的选择条目。

fifo600可配置为分组交换预留与电路交换传送之间的接口。指针被实现为灰度计数器以允许无小故障异步写和读操作。由于对于电路传送的预留可被排队,因此预留分组传播得比电路交换传送更快,并将下游电路交换信道设置成超前隐藏地址解码和方向仲裁等待时间。

在示出的实施例中,fifo指针被灰度编码以防止小故障,并且fifo作为电路fifo操作。这种编码还实现了读指针与写指针之间的比较,而没有任何小故障,以确定fifo是满还是空。fifo状态逻辑640可包括确定fifo600的寄存器是满还是空的任何适合逻辑。作为示例,fifo状态逻辑640可包括逻辑门,它们比较灰度计数器622和灰度计数器632的输出,并且如果计数器具有相等值,则设置fifo空信号,而如果比较指示计数器之间的差等于fifo中的条目数,则设置fifo满信号。此类逻辑的一个可能实现包含一组xor门,它们各耦合到每个灰度计数器的相同有效位。这些xor门的输出可耦合到nor门,其输出fifo空信号。基于此类逻辑,fifo空信号将为低,不管何时灰度计数器具有不同值。xor门的输出可进一步耦合到具有对应于灰度计数器的最高有效位的一个反相输出的另一nor门。这个nor门的输出是fifo满信号。此输出现在将为低,除非每个灰度计数器的最高有效位是不同的,而其它位匹配。

fifo满信号仅需要同步到写域的时钟(“写时钟”)。当写到fifo中时,检查fifo满信号,以确保当它为满时不写fifo。此信号的上升沿仅发生在写操作(其同步到写时钟)期间,并且不需要被同步。fifo满信号的下降沿发生在fifo读期间,fifo读一般是与写时钟完全不同步的事件(而是与读时钟同步)。fifo满信号的下降沿需要使用两次翻转或其它方法与写时钟同步。

fifo空信号仅需要同步到读域的时钟(“读时钟”)。当从fifo中读时,检查fifo空信号,以确保当它为空时不读fifo。此信号的上升沿仅发生在读操作(其同步到读时钟)期间,并且不需要被同步。fifo空信号的下降沿发生在fifo写期间,fifo读一般是与读时钟完全不同步的事件(而是与写时钟同步)。fifo空信号的下降沿需要使用两次翻转或其它方法与读时钟同步。

在描绘的实施例中,fifo空信号和fifo满信号耦合到信号同步器650。信号同步器650执行这些信号的边沿感知同步,以产生具有与读时钟同步的下降沿的fifo空信号和具有与写时钟同步的下降沿的fifo满信号。信号同步器650可具有本文描述的信号同步器206的任何属性。在具体实施例中,信号同步器650包括下降沿同步器500的两个实例。一个实例可将其输入耦合到fifo空信号,其同步器电路504由读时钟进行时钟同步,并且其输出耦合到读域。另一个实例可将其输入耦合到fifo满信号,其同步器电路504由写时钟进行时钟同步,并且其输出耦合到写域。在此类实现中,信号同步器650会将fifo空信号的下降沿与读时钟同步,同时允许fifo空信号的上升沿通过,而不在上升沿上执行同步操作。类似地,信号同步器650将同步fifo满信号的下降沿与写时钟同步,同时允许fifo满信号的上升沿通过,而不在上升沿上执行同步操作。当然,如果使用活动低逻辑,其中低信号表明满fifo和空fifo,则信号同步器650相反可包含上升沿同步器400的两个实例。

一般而言,边沿感知同步将等待时间惩罚减半。在时钟交叉fifo中,边沿感知同步具有招致等待时间惩罚的增加的好处,仅当它们将对吞吐量具有小影响时。例如,在写期间,检查fifo满信号。当读发生时,这个信号仅在高到低转变时经历等待时间惩罚。然而,当fifo接近满时,在这个步骤期间增加的任何等待时间发生。从而,读操作将不延迟,并且延迟的写将对系统吞吐量具有小影响。类似地,在读情况下,当fifo接近空时,仅引入对fifo空信号的等待时间,促进高吞吐量。

图7图示了按照一个实施例用于执行fifo满信号的边沿感知同步的示例方法700。在步骤702,写fifo。例如,写域中的电路可将数据值写到fifo的寄存器中。在步骤704,逻辑检查看看fifo是否满。如果fifo不满,则在步骤702可对fifo执行一个或多个附加写。如果在步骤704确定fifo是满的,则在步骤706切换fifo满信号。在一个实施例中,当fifo变满时,fifo满信号将从低向高转变。然而,不执行这个信号沿的同步。

在步骤708,确定是否已经从中读fifo。这个步骤可被定期执行,或者可通过接收信号(诸如当读域执行读时生成的信号)来触发。在确定读已经发生时,在步骤710切换fifo满信号。例如,fifo满信号可从高向低值转变。响应于这种转变,切换沿与写时钟同步。然后在步骤702可执行一个或多个附加写。

在图7中图示的其中一些步骤可视情况而定被组合、修改或删除,并且附加步骤也可被添加到流程图。此外,步骤可按任何适合的次序执行,而不脱离具体实施例的范围。

图8图示了按照一个实施例用于执行fifo空信号的边沿感知同步的示例方法。在步骤802,从中读fifo。例如,读域中的电路可从fifo的寄存器中读数据值。在步骤804,逻辑检查看看fifo是否空。如果fifo不是空,则在步骤802可对fifo执行一个或多个附加读。如果在步骤804确定fifo是空的,则在步骤806切换fifo空信号。在一个实施例中,当fifo变空时,fifo空信号将从低向高转变。然而,不执行这个信号沿的同步。

在步骤808,确定是否已经写fifo。这个步骤可被定期执行,或者可通过接收信号(诸如当写域执行写时生成的信号)来触发。在确定写已经发生时,在步骤810切换fifo空信号。例如,fifo空信号可从高向低值转变。响应于这种转变,切换沿与读时钟同步。然后在步骤802可执行一个或多个附加读。

在图8中图示的其中一些步骤可视情况而定被组合、修改或删除,并且附加步骤也可被添加到流程图。此外,步骤可按任何适合的次序执行,而不脱离具体实施例的范围。

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

在此,soc900包含2个核——906和907。类似于以上论述,核906和907可符合指令集架构,诸如基于intel®架构core™的处理器、高级微装置公司(amd)处理器、基于mips的处理器、基于arm的处理器设计或其顾客以及它们的被许可方或采纳方。核906和907耦合到高速缓存控制器908,其与总线接口单元909和l2高速缓存910关联以与系统900的其它部分通信。互连910包含片上互连,诸如iosf、amba或上面讨论的其它互连,其潜在地实现了所描述公开的一个或多个方面。

接口910提供了到其它组件提供通信信道,诸如与sim卡对接的订户身份模块(sim)930、保存引导代码以便由核906和907执行以初始化和引导soc900的引导rom935、与外部存储器(例如dram960)对接的sdram控制器940、与非易失性存储器(例如闪存965)对接的闪存控制器945、与外围装置对接的外围控制器q1650(例如串行外围接口)、显示和接收输入(例如触摸启用的输入)的视频编解码器920和视频接口925、执行图形相关计算的gpu915等。这些接口中的任何接口都可结合本文描述的公开的各方面。

此外,系统图示了用于通信的外围装置,诸如蓝牙模块970、3g调制解调器975、gps985和wifi985。如上所述指出的,ue包含用于通信的无线电。因此,这些外围通信模块不全都需要。然而,在ue中,要包含用于外部通信的某种形式无线电。

设计从创建到模拟到制作可经过各种阶段。表示设计的数据可用若干方式表示该设计。首先,这在仿真上是有用的,硬件可使用硬件描述语言(hdl)或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管门的电路级模型。另外,大多数设计在某个阶段达到用硬件模型表示各种装置物理布局的数据级。在使用常规半导体制作技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上各种特征的存在或缺乏的数据。在一些实现中,此类数据可以数据库文件格式存储,诸如图形数据系统ii(gdsii)、开放艺术品系统互换标准(oasis)或类似格式。

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

在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁或光存储装置诸如盘可以是机器可读介质,以存储经由调制的或以别的方式生成的光波或电波传送的信息以传送此类信息。当指示或携带代码或设计的电载波被传送到执行电信号的拷贝、缓冲、重发的程度时,进行新拷贝。从而,通信供应商或网络供应商可在有形机器可读介质上至少暂时存储实施本公开实施例的技术的制品,诸如编码到载波中的信息。

本文所使用的模块指的是硬件、软件和/或固件的任何组合。作为一个示例,模块包含与非暂时性介质关联的硬件(诸如微控制器),以存储适合于由微控制器执行的代码。因此,在一个实施例中,提到模块指的是硬件,其专门配置成识别和/或执行在非暂时性介质上保存的代码。另外,在另一实施例中,使用模块指的是包含代码的非暂时性介质,其特别适合于由微控制器执行以执行预定操作。并且可以推断,在又一实施例中,术语模块(在此示例中)可指的是微控制器和非暂时性介质的组合。被图示为单独的常见模块边界通常改变并潜在地交叠。例如,第一和第二模块可以共享硬件、软件、固件或它们的组合,不过潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包含硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑装置。

使用短语“以”或“配置成”在一个实施例中指的是布置、放在一起、制造、提供销售、进口和/或设计设备、硬件、逻辑或元件以执行指定或预定任务。在此示例中,不操作的设备或其元件仍“配置成”执行指定任务,如果它被设计、耦合和/或互连以执行所述指定任务的话。作为纯说明性示例,逻辑门可在操作期间提供0或1。但“配置成”向时钟提供使能信号的逻辑门不包含可提供1或0的每个潜在逻辑门。相反,逻辑门是一某种方式耦合的,在操作期间1或0输出启动时钟。再次指出,使用术语“配置成”不需要操作,而是相反聚焦在设备、硬件和/或元件的潜伏状态,其中在潜伏状态,当设备、硬件和/或元件操作时,设备、硬件和/或元件设计成执行具体任务。

另外,使用短语“能够/以”和/或“可操作以”在一个实施例中指的是以此类方式设计的某个设备、逻辑、硬件和/或元件,以使能够以规定方式使用设备、逻辑、硬件和/或元件。如上面指出的,使用“以”、“能够”或“可操作以”在一个实施例中指的是设备、逻辑、硬件和/或元件的潜伏状态,其中设备、逻辑、硬件和/或元件不操作,但以此类方式设计成使能够以规定方式使用设备。

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

而且,状态可由值或值的部分来表示。作为一个示例,第一值,诸如逻辑1,可表示默认或初始状态,而第二值,诸如逻辑0,可表示非默认状态。此外,术语“复位”和“置位”在一个实施例中分别指的是默认和更新的值或状态。例如,默认值潜在地包含高逻辑值,即复位,而更新的值潜在地包含低逻辑值,即置位。要指出,可利用值的任何组合来表示任何数量的状态。

上面阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可存取、机器可读、计算机可存取或计算机可读介质上的可由处理元件执行的指令或代码实现。非暂时性机器可存取/可读介质包含提供(即存储和/或传送)机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂时性机器可存取介质包含随机存取存储器(ram),诸如静态ram(sram)或动态ram(dram);rom;磁或光存储介质;闪存装置;电存储装置;光存储装置;声存储装置;用于保存从暂时性(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式存储装置等,它们有别于可从那儿接收信息的非暂时性介质。

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

一个或多个实施例可提供一种设备、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑(例如信号同步器)和方法,以接收包括第一沿和第二沿的信号;将信号的第一沿与第一时钟同步,并将信号的同步的第一沿传递到输出,其中同步导致信号的第一沿的延迟,并以比所述信号的所述第一沿的所述延迟小所述第一时钟的至少一个时钟周期的延迟,将信号的第二沿传递到输出。

在至少一个示例中,信号的第一沿与第二时钟同步发生。

在至少一个示例中,所述信号的所述第一沿包括上升沿,并且所述信号的所述第二沿包括下降沿。

在至少一个示例中,信号的所述第一沿包括下降沿,并且信号的第二沿包括上升沿。

在至少一个示例中,信号同步器包括置位复位(set-reset)(sr)锁存器。

在至少一个示例中,sr锁存器在置位(s)输入接收所述信号的反相版本,并在复位(r)输入接收同步到所述第一时钟的所述信号的版本,其中所述s输入覆盖所述r输入。

在至少一个示例中,信号同步器包括两个触发器以将所述信号同步到所述第一时钟,并将同步的信号提供给所述sr锁存器的所述r输入。

在至少一个示例中,信号同步器进一步包括反相器以在将信号传递到所述输出之前将sr锁存器的输出反相。

在至少一个示例中,sr锁存器在s输入接收信号,并在r输入接收同步到所述第一时钟的所述信号的反相版本,其中所述s输入覆盖所述r输入。

在至少一个示例中,信号同步器包括两个触发器以将所述信号同步到所述第一时钟,并将同步的信号提供给反相器,所述反相器生成所述信号的反相版本。

一个或多个实施例可提供一种设备、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑和方法,其中存储元件保存一个或多个数据条目;第一逻辑生成指示存储元件满的第一信号;第二逻辑生成指示所述存储元件空的第二信号;第一信号同步器,将所述第一信号的第一沿与第一时钟同步,而没有将所述第一信号的第二沿与所述第一时钟同步;以及第二信号同步器将第二信号的第一沿与第二时钟同步,而没有将所述第二信号的第二沿与所述第二时钟同步。

在至少一个示例中,向所述存储元件写的命令要与所述第一时钟同步执行,并且从所述存储元件读的命令要与所述第二时钟同步执行。

在至少一个示例中,存储元件保存要从与所述第一时钟关联的第一时钟域传递到与所述第二时钟关联的第二时钟域的数据。

在至少一个示例中,第一信号的所述第一沿包括下降沿,并且所述第一信号的所述第二沿包括上升沿。

在至少一个示例中,第二信号的所述第一沿包括下降沿,并且所述第二信号的所述第二沿包括上升沿。

在至少一个示例中,第一信号同步器包括:sr锁存器,具有s输入,所述s输入耦合到信号同步器的输入,其中所述sr锁存器包括r输入,所述r输入耦合到反相器的输出,其中所述s输入将覆盖所述r输入;以及一对串行连接的触发器,其中第一触发器包括耦合到所述信号同步器的所述输入的输入,其中所述第二触发器包括耦合到所述反相器的输入的输出。

在至少一个示例中,所述设备进一步包括芯片上的网络的路由器,其中所述路由器与所述第一信号同步器通信。

一个或多个实施例可提供一种非暂时性机器可读介质,其包含表示结构的信息,所述结构当制造时配置成:接收包括第一沿和第二沿的信号;将所述信号的所述第一沿与第一时钟同步,并将所述信号的同步的第一沿传递到输出,其中所述同步导致所述信号的所述第一沿的延迟;以及将所述信号的所述第二沿传递到所述输出,所述信号的传递的第二沿具有比所述信号的所述第一沿的所述延迟小所述第一时钟的至少一个时钟周期的延迟。

一个或多个实施例可提供一种设备、系统、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑和方法,其中第一装置以第一时钟的频率操作,第二装置通过一个或多个链路耦合到第一装置,所述第二装置以第二时钟的频率操作,所述第二装置从所述第一装置接收数据;并且信号同步器将第一信号的第一沿与第二时钟同步,其中所述同步导致所述第一信号的所述第一沿的延迟;以及传递所述第一信号的第二沿,所述第一信号的传递的第二沿具有比所述第一信号的所述第一沿的所述延迟小所述第二时钟的至少一个时钟周期的延迟。

在至少一个示例中,信号同步器进一步将第二信号的第一沿与所述第一时钟同步,其中所述同步导致所述第二信号的所述第一沿的延迟;以及传递所述第二信号的第二沿,所述第二信号的传递的第二沿具有比所述第二信号的所述第一沿的所述延迟小所述第一时钟的至少一个时钟周期的延迟。

此说明书通篇提到“一个实施例”或“实施例”是指结合该实施例描述的具体特征、结构或特性可包含在本公开的至少一个实施例中。从而,在此说明书通篇各处出现的短语“在一个实施例中”或“在实施例中”不一定都指同一实施例。而且,在一个或多个实施例中,可按任何适合的方式组合具体特征、结构或特性。

在前述说明书中,已经参考特定示范实施例给出了详细描述。然而,将显而易见的是,在不脱离所附权利要求书中阐述的本公开的更广泛的精神和范围的情况下,可对其进行各种修改和改变。说明书和附图相应地被视为说明性意义,而非限制性意义。另外,前面使用实施例以及其它示范语言不一定指的是相同实施例或相同示例,而是可指不同的和截然不同的实施例,以及潜在地相同的实施例。

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