首页> 中国专利> 用于切换运行在不同时钟频率下的多个链路的时钟频率的装置和用于切换时钟频率的方法

用于切换运行在不同时钟频率下的多个链路的时钟频率的装置和用于切换时钟频率的方法

摘要

本发明公开了用于切换运行在不同时钟频率下的多个链路的时钟频率的装置和用于切换时钟频率的方法。分频器从源时钟信号产生多个不同频率的时钟信号。时钟切换控制器从多个链路的端口所请求的数据速率中选择最大的数据速率并以所选定的最大数据速率将传送时钟信号与每一个端口的时钟使能信号一起被输出。每一个时钟使能信号选择性地使能传送时钟信号以用于匹配由每一个端口所请求的数据速率。根据端口的请求在已知时间内不中断到其他端口的数据传输无干扰地选定并更新时钟频率。

著录项

  • 公开/公告号CN104866009A

    专利类型发明专利

  • 公开/公告日2015-08-26

    原文格式PDF

  • 申请/专利权人 ATI科技无限责任公司;

    申请/专利号CN201510186122.9

  • 申请日2010-12-10

  • 分类号G06F1/10(20060101);G06F13/40(20060101);G06F1/06(20060101);

  • 代理机构31263 上海胜康律师事务所;

  • 代理人樊英如;李献忠

  • 地址 加拿大安大略省

  • 入库时间 2023-12-18 10:31:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-24

    授权

    授权

  • 2015-09-23

    实质审查的生效 IPC(主分类):G06F1/10 申请日:20101210

    实质审查的生效

  • 2015-08-26

    公开

    公开

说明书

本申请是申请号为201080056178.8、申请日为2010年12月10日、发明 名称为“用于切换运行在不同时钟频率下的多个链路的时钟频率的装置和用 于切换时钟频率的方法”的发明专利申请的分案申请。

相关申请的交叉引用

本申请要求的美国的非临时申请序列号为12/635,942,申请日为 2009年12月11日的权利,将该申请的内容在此处全部引用以供参考。

技术领域

本申请涉及计算机总线和互联协议,诸如高速外部组件互连协议 (PCIe:Peripheral Component Interconnect Express),超级传递协议 (HyperTransport),或者类似的协议。

背景技术

在计算机系统中,提供多种总线用于将主机处理器和其他设备进 行互连并且在其中传送数据。例如,已开发的取代旧版本的外部组件互连 (PCI:Peripheral Component Interconnect)和PCI-X标准的高速外部组件互 连(PCIe:Peripheral Component Interconnect Express)。PCIe被用在客户 端、服务器以及工业应用中以作为主板(motherboard)级的互连来链接装配 在主板上的外设以及作为附加主板的扩展卡接口。

PCIe和早期的PCI或PCI-X总线之间的区别是基于点到点串行链 路的拓扑结构,而不是共享的并行总线结构。可以认为PCIe是取代旧的并行 PCI和PCI-X总线的高速串行协议。在软件级上,PCIe则维持与PCI的兼 容,这样的话,可在与PCIe的新特征没有直接的关系的遗留应用(legacy  application)和操作系统中配置以及使用PCIe装置。

在PCIe1.0或1.1版本中,每条通道支持的数据速率为250MB/s。 而在2007年发布的PCIe2.0版本中,加入了第二代信号模式,将信号的传输 速率翻倍为500MB/s。而在目前开发的PCIe3.0中,将加入第三代信号模式 从而使速率达到1GB/s。

PCIe2.0和3.0也维持与早期版本的PCIe(例如,PCIe 1.x)的兼 容性。由于市场中依然使用与PCIe 1.x兼容的装置,因此与PCIe 2.0或3.0兼 容的装置则需要与PCIe 1.x兼容的装置相连。PCIe 2.0或3.0装置需要切换由 一个端口所请求的时钟频率(clock speed)并且在一段时间内不中断在任意 其他端口上的数据传输的情况下无干扰(glitch-free)的更新该时钟频率。

发明内容

用于切换运行在不同时钟频率下的多链路的时钟频率的装置,包 括分频器和时钟切换控制器。该分频器用于从源时钟信号生成多个不同频率 的时钟信号。该时钟切换控制器用于在由多个链路端口请求的多个数据速率 中选择一个最大的数据速率,并在选定的最大数据速率处将传送时钟信号与 每个端口的时钟使能信号一起输出到端口,每个端口的时钟使能信号选择性 地使能传输时钟信号来匹配由多个端口中的每一个所请求的数据速率。

用于切换运行在不同时钟频率下的多链路的时钟频率的方法,包 括从一个源时钟信号生成多个不同频率的时钟信号。在由多个链路端口所请 求的多个数据速率中确定一个最大的数据速率。在选定的最大速率处提供到 多个端口中的每一个的传送时钟信号。提供时钟使能信号到多个端口中的每 一个来选择性地使能传送时钟信号以匹配由多个端口的每一个所请求的数据 速率。

一种存储由通用计算机执行的切换运行在不同时钟频率下的多链 路的时钟信号的指令组的计算机可读存储介质。该指令组包括用于从一个源 时钟信号生成多个不同频率的时钟信号的生成代码部分(segment);用于在 由多个链路端口请求的数据速率中确定最大数据速率的确定代码部分 (segment);用于为多个端口的每一个提供最大数据速率的时钟信号的第一 提供代码部分(segment);以及用于为多个端口的每一个提供时钟使能信号 的第二提供代码部分(segment),该时钟使能信号选择性地使能传输时钟信 号以匹配由多个端口的每一个所请求的数据速率。该指令组可以是用于构建 装置的硬件描述语言(HDL:hardware description language)指令。

附图说明

结合说明书中的实施例和附图,从下述说明书中可以得到更详细 的描述,其中,

图1显示了分频器和时钟切换控制器的第一部分;

图2显示了时钟切换控制器的第二部分;

图3显示了时钟使能信号生成器;

图4显示了时钟生成器的时钟切换时序;以及

图5显示了端口A-C的使能信号的示例性时序图。

具体实施方式

本申请描述的实施例允许装置选择由多个端口中的一个所请求的 多个时钟频率中的一个,并且使得时钟频率无干扰的(glitch-free)更新,即 在已知的时间内不中断其他端口上的数据传输。本实施例为多频率下运行多 链路的装置提供了时钟切换的方案。本实施例可用在符合任何计算机总线和 互连协议的支持多时钟频率的任意装置上。例如,本实施例可应用在任何支 持PCIe 2.0或3.0,或未来将开发出来的任何版本的任意PCIe兼容设备上。 随后,本实施例将参照PCIe协议来解释。然而,应该注意的是,本实施例适 用于任何计算机总线和互连协议,包括但不限于高速外部组件互连协议 (PCIe:Peripheral Component Interconnect Express),超级传递协议 (HyperTransport),等等。

图1-3显示了根据一个实施例在不同频率中用于生成三个时钟信 号和改变时钟频率的示例性的时钟生成器。时钟生成器100包括分频器110 和时钟切换控制器200。图1显示了分频器110和时钟切换控制的第一部分 200a。图2显示了时钟切换控制器的第二部分200b。图3显示了作为时钟切 换控制器200的一部分的时钟使能信号产生器300。图4显示了时钟生成器 100的时钟切换时序图(timing)。应该注意的是,图1-3中所示的时钟生成 器只是一个示例,并不是一个限定,任何用于频率分解和时钟信号切换的配 置都可用来实现时钟生成器。此外,时钟生成器可生成不同的两个或多于三 个频率信号并根据需要在这些信号中切换。

参考图1,时钟生成器100从锁相环路150(PLL:phase locked  loop)接收锁相环路时钟信号102(PLLCLK:phase locked loop clock)。在 这个实施例中,PLL时钟信号102的频率是2GHz并且利用分频器110将该 PLL时钟信号102除以2,4,8以分别对应于PCIe的第三、第二、第一代的 处理(图4中线1-4显示了该PLL时钟信号和三个时钟信号)。应该注意的 是,PLL时钟信号102可以是任何频率并且可以根据系统的要求被分解为任 意频率信号。尽管本实施例使用了PLL时钟信号,本领域技术人员应该知道 也可以使用其他源时钟信号。

图1中的示例性分频器110包括倒相器112,专用或非(NOR) 门118,126,或(OR)门124和D触发器(D flip-flops)114,116,120, 122,128,130。D触发器114,116,120,122,128,130由PLL时钟信号 同步。D触发器114的输出进入到D触发器116中并且经过反相器112后也 反馈回D触发器114。D触发器114的输出使每一个PLL时钟周期被反相, 因此,D触发器116在PLL时钟信号的半频处输出PCIe第三代时钟信号 132c(即,生成PCIe第三代时钟信号)。

D触发器120的输出进入到D触发器122中并且也通过专用或非 逻辑门118后反馈回D触发器120中。D触发器114的输出进入到专用或非 逻辑门118的另一个输入中。D触发器122在PLL时钟信号的四分之一频率 处输出PCIe第二代时钟信号132b。

D触发器128的输出进入到D触发器130中并且也通过专用或非 逻辑门126后反馈回D触发器128中。在进入专用或非126之前,D触发器 114和D触发器120的输出被或门124进行选通(gated)。D触发器130在 PLL时钟信号102的八分之一频率处输出PCIe第一代时钟信号132a。

时钟门控(clock-gating)单元212a,212b,212c截止上面生成的 时钟信号132a,132b,132c中的两个信号并且根据控制信号244a,244b, 244c(clk_g1_en,clk_g2_en,clk_g3_en)上述时钟信号132a,132b,132c 中仅有一个可被输出以作为提供给链路的传送时钟信号(TXCLK:tranmit  clock signal)。TXCLK信号在图4中由线17表示。控制信号244a,244b, 244c在图4中由线14-16表示。时钟门控单元212a,212b,212c中的每一个 分别包括门控D锁存器214a,214b,214c和与逻辑门216a,216b,216c。 控制信号244a,244b,244c(clk_g1_en,clk_g2_en,clk_g3_en)中的每一 个分别进入到门控D锁存器214a,214b,214c中的D输入并且时钟信号 132a,132b,132c中的每一个分别通过反相器输入到门控D锁存器214a, 214b,214C的G输入。时钟信号132a,132b,132c中的每一个经由门控D 锁存器214a,214b,214c分别进入到与逻辑门216a,216b,216c中。与逻 辑门216a,216b,216c的输出进入到或门218中。当选定clk_g1_en信号 244a时,则输出第一代时钟信号132a;当选定clk_g2_en信号244b时,则输 出第二代时钟信号132b;当选定clk_g3_en信号244c时,则第三代时钟信号 132c被输出,分别通过或门218实现上述输出。

基于request_clk信号232生成了控制信号244a,244b,244c。参 照图2将详细描述request_clk信号232的生成。request_clk信号232信号是 指示生成时钟信号的信号。request_clk信号232可以是两位信号用来指示本 实施例中的三个时钟频率中的一个(例如,“00”表示第一代时钟信号, “01”表示第二代时钟信号,“10”表示第三代时钟信号)。

生成的request_clk信号232(来自图2中的电路的输出信号)在 进入到D触发器238之前可通过连续的4个D触发器234,235,236,237 来进行门限控制。被连续的4个延时缓冲器246,247,248,249所延迟的传 送时钟信号140(TXCLK)为D触发器234,235,236,237提供时钟。由4 个延时缓冲器246,247,248,249延迟的TXCLK信号在图4中由线21-24 表示。每一个延时缓冲器246,247,248,249可延迟时钟信号140一定的延 迟时间(例如,1GHz每个延迟缓冲器最多延迟1纳秒)。这是为了确保 TXCLK信号嵌入延迟与内核逻辑的匹配,以及在时钟生成逻辑处将时钟延迟 步进(step)返回以匹配上述嵌入的延迟。

PLL时钟信号102为D触发器238提供时钟信号并且来自或非门 240控制的D触发器114,120,128的三个输出信号分别进入到D触发器 238的使能输入中,这样的话,只有在D触发器114,120,128的所有输出 都低的时候,才传送由连续的D触发器234-237延迟的request_clk信号232 (并且改变TX时钟信号的频率)。经由D触发器238输出的request_clk信 号232基于request_clk信号232驱动三个与逻辑门242a,242b,242c的一个 为高另外两个为低,并且与逻辑门242a,242b,242c的输出分别成为时钟门 控单元212a,212b,212c的控制信号244a,244b,244c。

参考图2,详细描述了request_clk信号232的生成。可要求PCIe 设备支持多于一个链路,并且每一个链路需要不同的时钟频率。由选择器 252在多个链路所请求的时钟频率中(clk_sel_A,clk_sel_B,…,clk_sel_N)选择 最大的时钟频率。在本实施例中,clk_sel[1:0]信号254是一个两位信号以指 示选定的最大时钟频率(在本实施例中用两位来指示从三个时钟频率中选择 一个是足够的)。通过D触发器256输出的所选定的时钟频率信号 (clk_sel[1:0])254作为request_clk信号232。该clk_sel[1:0]信号以及 request_clk信号232在图4中用线5和6表示。

TXCLK信号为D触发器256提供时钟并且基于计数信号263(D 触发器262的输出)来使能或无效该D触发器256,计数信号263是由 current_clk信号274(D触发器272的输出)与request_clk信号232(D触发 器256的输出),以及相位信号286(D触发器284的输出)进行比较得到 的。D触发器272存储指示目前被选定的时钟频率的current_clk信号274 (例如,“00”表示第一代时钟信号,“01”指示第二代时钟信号,“10” 指示第三代时钟信号)。当TXCLK信号变换时,该request_clk信号232则 成为current_clk信号274。

比较器264确定该request_clk信号232是否与current_clk信号 274不同并且该比较器264的输出进入到D触发器262的使能输入。只有当 request_clk信号232与current_clk信号274不同时,D触发器262才被使能 (即,该request_clk信号已经被改变)。在request_clk信号232和 current_clk信号274变得不同之后,在指向D触发器262的D输入的反馈回 路中的D触发器262和一个+1加法器266作为两位计数器来计数TXCLK周 期的数量。计数信号263在图4中显示为线12。

当计数信号变为“11”时比较器268输出高位。比较器268的输 出进入到D触发器272的使能输入端。因此,在本实施例中在request_clk信 号232已经被改变了4个TXCLK周期之后,该request_clk信号232变成 current_clk信号274,如图4中所示的线6-10。选择4个TXCLK周期是因为 最快时钟信号(1GHz)与最慢时钟信号(250MHz)的比率是4并且根据系 统所请求的时钟频率,不同的TXCLK周期是必须的。比较器276将 current_clk信号274与request_clk信号232进行比较并输出到与逻辑门292 处。

current_clk信号274驱动第一和第二复用器282,290。如果 current_clk信号274是“00”,则第一复用器282输出“00”,并且如果 current_clk信号274是“01”,则相位信号加2,如果current_clk信号274是 “10”,则相位信号加1。复用器282的输出进入到D触发器284的D输入 端,该触发器的两位输出是相位信号286(图4中线11)。在本实施例中相 位信号286是两位信号。如果相位信号286是“00”的话,则比较器288a输 出高位,否则其输出低位。如果相位信号286是“01”的话,则比较器288b 输出高位,否则其输出低位。如果相位信号是“10”的话,则比较器288c输 出高位,否则其输出低位。根据current_clk信号274第二复用器290输出比 较器288a,288b,288c三个输出中的一个。来自比较器276和第二复用器 290的输出由与逻辑门292进行门限控制,该与逻辑门的输出则使能或无效 D触发器256。

包括计数信号263和相位信号286的生成以及current_clk信号274 和request_clk信号232的比较的时钟切换控制器的逻辑确保了只在一个特定 相位上发生时钟信号(TXCLK)的无干扰(glitch-free)的切换,并且在已知 的时间内在不中断任何其他端口上的数据传输。

参考图3,详细描述了时钟使能信号的生成。期望源时钟运行在 由PCIe IP支持的最高数据速率下(例如,PCIe 3.0支持的1GHz)。时钟生 成器100生成1GHz,500MHz,和250MHz时钟信号并且向所有的PCIe链 路提供上述生成的时钟信号中的一个。时钟切换控制器200确定由PCIe IP内 核中的活动链路所请求的最快时钟频率,并且将该最快时钟信号提供给所有 PCIe链路。由于提供相同的时钟信号给所有的PCIe链路,因此该时钟切换 控制器200也为请求较慢时钟信号的每一个链路生成时钟使能信号。例如, 如果由链路请求的最快时钟频率是1GHz的话,那么时钟切换控制器200将 生成并提供1GHz的时钟信号到所有的链路。时钟切换控制器200也为每一 个链路提供时钟使能信号,这样的话该1GHz信号对请求500MHz时钟频率 的链路每隔一个时钟周期使能一次,并且该时钟使能信号仅对请求250MHz 的链路每四个时钟周期使能一次。时钟使能信号在图4中显示为线18-20。每 一个链路选择三个时钟使能信号中的一个信号。

图3显示了链路A的示例性时钟使能信号生成电路300。支持多 链路的时钟切换控制器200包括多套图3中所示的电路300。

由链路A请求的时钟频率为clk_sel_A,其为两位信号并根据所请 求的时钟频率(例如,“00”表示第一代时钟信号,“01”表示第二代时钟 信号,“10”表示第三代时钟信号)驱动复用器310输出三个输入(使能信 号309a,309b,309c)中的一个。

基于current_clk信号274,request_clk信号232,计数信号263, 相位信号286而生成三个使能信号309a,309b,309c(clk_en[0], clk_en[1],clk_en[2])。根据计数信号263(即,如果计数信号为“11”,则 为request_clk信号,否则的话则为current_clk信号),current_clk信号274 或者request_clk信号232中的一个会进入到三个比较器322,332,342中。 比较器302将计数信号263进行比较,该比较器的输出则控制复用器304。

如果current_clk信号274或者request_clk信号232是“00”的 话,则根据current_clk信号274,第一个分支320生成一个常开模式 (always-on)信号,50%占空比(duty cycle)信号,或者25%占空比信号。 如果current_clk信号274或者request_clk信号232是“00”的话,则比较器 322的输出(以及因此或门324的输出)总是为高位,因此则生成常开模式 信号并通过D触发器308提供给复用器310。比较器325a和325c将 current_clk信号274分别与“01”和“10”进行比较,比较器325b和325d将 request_clk信号286分别与“00”和“10”进行比较。如果current_clk信号 274是“01”,则比较器322的输出和与逻辑门328的输出为低,但是由于相 位值为“00”,因此与逻辑门326被开启。当current_clk信号是“01”时, 由于相位信号286在“00”和“01”之间变换,因此与逻辑门326的输出 (以及相应地或门324的输出)有50%的时间被开启。如果current_clk信号 274是“10”的话,则比较器322和与逻辑门326的输出为低位,但是由于相 位信号是“00”,因此与逻辑门328被开启。当current_clk信号是“10” 时,由于相位信号286在“00”,“01”,“10”,和“11”之间变换,因 此,与逻辑门328的输出(以及相应的或门324的输出)有25%的时间是开 启的。例如,如果current_clk信号是“10”(其意味着TXCLK信号是 1GHz),并且由链路A请求的时钟频率是250MHz时(即,clk_sel_A是 “00”),则复用器310输出第一分支信号,该第一分支信号为来自与逻辑 门328输出的25%占空比信号,1GHz的TXCLK信号仅有25%的时间是有 效的能够为来自通用1GHz TXCLK的链路产生250MHz的时钟信号。如果 current_clk信号是“01”时(其意味着TXCLK信号是500MHz),为链路A 请求的时钟频率是250MHz(即,clk_sel_A是“00”),复用器310输出第 一分支信号,该第一分支信号为从与逻辑门326输出的50%占空比信号。

如果current_clk信号274或者request_clk信号232是“01”的 话,则第二分支330或者生成常开模式信号或者生成50%占空比信号。如果 current_clk信号274或者request_clk信号232是“01”的话,则比较器332 的输出(以及相应地或逻辑门334的输出)为常高信号,因此则生成一个常 开模式信号并且通过D触发器308b提供给复用器310。比较器335a将 current_clk信号与“10”进行比较,并且比较器335b将相位信号的第一位与 “0”进行比较。如果current_clk信号274是“10”,比较器332的输出为低 位,但是由于相位信号286的第一位为“0”,因此开启与逻辑门336,其生 成50%占空比信号。

如果current_clk信号274或者request_clk信号232是“10”的 话,则第三个分支340(即,比较器342)生成常开模式信号,其通过D触 发器来门控复用器310。

图5显示了端口A-C的使能信号的示例性时序图。首先,由端口 A-C请求的数据速率都是250MHz(即,每秒钟2.5千兆(GT/s))。因此, 生成在250MHz的TXCLK信号并且端口A-C的使能信号为常开模式信号。 当由链路B请求的数据速率增加到500MHz时(即,传输速率增加到 5GT/s),则将TXCLK信号切换为500MHz信号并且提供给所有链路A-C。 由于链路A和C的数据速率保持为250MHz,因此提供50%占空比的时钟使 能信号给链路A和C。然后,链路C请求的数据速率增加到1GHz。将 TXCLK信号切换为1GHz信号并且提供给所有链路A-C。由于链路A和B 的数据速率分别保持在250MHz和500MHz,因此链路A和B的时钟使能信 号分别变为25%和50%的占空比信号。然后,由链路C请求的数据速率降为 250MHz。将TXCLK信号切换回500MHz信号并且提供给所有链路A-C。链 路A-C的时钟使能信号分别变为50%占空比信号,常开模式信号和50%占空 比信号。然后,由端口B请求的数据速率降为250MHz并且将TXCLK信号 切换为250MHz。然后端口C的数据速率增加到1GHz并且将TXCLK切换为 1GHz。由于端口A和B的数据速率为250MHz,因此端口A和B的时钟使 能信号变为25%占空比信号。然后,端口C的数据速率降为250MHz并且将 TXCLK切换为250MHz,并且端口A-C的时钟使能信号变为常开模式信号。

以上描述的符合本实施例的时钟切换具有节省空间和能量的优 点,这样的话,在每一个PCIe IP内核中可以只使用一个PLL电路而不是在 PCIe IP中的每一个PCIe链路中使用一个PLL电路。可使用一个PCIe IP内 核来运行以不同速率运行的链路,以取代每一个链路都必须启动一个PCIe  IP。由于时钟切换电路无干扰的改变时钟频率的事实,本实施例使得未改变 速率的链路运行不被中断。此外,按照本发明,可以保证在4个时钟周期内 时钟切换来提供更新的时钟频率。

目前,绝大多数电子电路是通过使用软件来设计和制造的(例 如,硬件描述语言(HDL:hardware description language))。HDL是描述电 子电路的结构、操作、和/或行为的计算机语言。时钟生成器100(即,电子 电路)可使用软件(例如:HDL)来设计和制造。HDL可以是当下使用的传 统HDL或者将来发展的HDL中的任意一种。HDL的指令组被生成来描述时 钟生成器100的结构,操作,和/或行为。该指令组可存储在任何计算机可读 存储介质中。

尽管上面以特定的结合方式描述了特征和元素,实际上每一个特 征或元素均可单独使用而不需要其他特征或元素或在具有或不具有其他特征 和元素的各种组合中使用。本申请中的方法或流程图可通过计算机程序,软 件或集成在计算机可读存储介质中的固件通过通用计算机或处理器来实现。 计算机可读存储介质的例子包括只读存储器(ROM),随机访问存储器 (RAM),寄存器,高速缓存,半导体存储器装置,诸如内置硬盘和可移动 硬盘等磁介质,磁光介质,以及诸如CD-ROM盘和数字多功能磁盘(DVD) 等光介质。

本申请中合适的处理器包括例如通用目的处理器,特殊目的处 理,传统处理器,数字信号处理器(DSP),多个微处理器,与DSP内核相 连的一个或多个微处理器,控制器,微控制器,特定用途集成电路(ASIC: Application Specific Integrated Circuit),现场可编程门阵列电路(FPGA:field  Programmable Gate Arrays),任何其他类型的集成电路(IC),和/或状态 机。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号