专利名称:在时钟域内计时的设备和方法
技术领域:
本发明一般地涉及支持一种片上定时器装置,更具体地说,本发明涉及在改变核心时钟频率时,产生恒定递增增量。
背景技术:
计时是计算机系统的一种重要功能。加载之后,初始化微处理器(MPU)的系统时钟,以根据它接收的时钟周期更新次数计时。在第一种配置中,MPU使用计数器、基准值以及用于跟踪系统时钟的时间的累加器。
通常,MPU具有作为系统时钟的一部分的核心时钟分配网络。该核心时钟分配网络被称为核心时钟。每一个时钟周期,核心时钟内的计数器增加一次其计数值。如果计数器的值等于预定基准值,则发送信号到核心时钟内的累加器。发送到累加器的信号表示时间的递增增量。该时间用作MPU的系统时间,以便与诸如时间戳文件等的事务一起使用。在将该信号送到累加器后,将该计数器复位到零,并且该计数器继续接收时间脉冲,而且在每次与基准值相匹配时,发送累加器更新。由MPU设置该基准值。该基准值是每给定时间单位处理器时钟周期数的函数。
然而,这种方法有一个问题。可以希望MPU在时间计数中间改变其工作频率。例如,当核心时钟的计数器的计数是1或者更多,但是该计数又不等于基准值时,MPU从1GHz变更为1.33GHz。这样就产生了问题。如果MPU保持原始基准值作为触发器,则送到累加器的定时脉冲产生的太快,而且MPU时钟也太快。如果MPU将中间计数变更为新基准值,则时间递增会太慢。此外,这种误差是累积的。换句话说,如果发生了多次频率转换,则将所有时间内每次转换产生的误差累加在一起,并且它会相当大。
在第二种方法中,网孔核心(mesh-core)的计数器直接从固定频率的“自由运行时钟”接收其计数,而不是根据MPU频率。可以将自由运行时钟设置为MPU的外部信源,或者设置为不根据MPU的频率改变频率的分离的内部时钟。在这种实现中,在每次累加(或者每两次累加)之后,将该计数器复位。根据MPU时钟速度进行该复位。在该方法中,MPU发出读取自由运行时钟的振荡数的信号,然后,将它累加到核心网孔的累加器上(跟踪核心频率计数的计时器(timekeeper))。在这方面,因为与送到累加器的更新信号并行且同步地对核心时钟进行了最后复位,所以计数器发送总计数。每次检测到更新信号时,将该计数累加到累加器。
该方法的优点是,核心时钟(core core-clock)可以具有自己的工作频率(它比自由运行时钟慢),而且自由运行时钟与核心时钟之间的比值可以是变量。由于最后更新的请求,核心网孔的累加器接收表示先前振荡数的数,并将该数累加到其当前值上。
然而,这种自由运行时钟实现的一个问题是,自由运行时钟与MPU的核心时钟之间的偏移(skew)必须匹配。通常,将偏移定义为从一个逻辑电平到另一个逻辑电平的跃变之间的延迟。因为位于核心时钟域上的累加器正在并行地接收更新信号和计数,所以核心时钟必须在其将复位信号发送到计数器之前接收所有信号跃变。因为并行信号可以具有不同的传输速度,所以当累加器在将复位信号发送到计数器之前收到累加计数时,不能够确定核心时钟。
对该偏移进行补偿的一种方式要求核心时钟与自由运行时钟之间实现某种反馈,以便由核心时钟将累加器已经收到有效信号通知自由运行时钟。这种反馈系统增加了每次在引导异步时钟域(tow asynchronousclock domain)之间传送滴答值(tic value)的开销,因此,又增大了计数器的尺寸。此外,自由运行时钟必须始终是最快的时钟,否则所需计数器的尺寸会无限地增大。最后,如果并行传播信号,则可能会出现对于该实现可能非常昂贵的许多长布线和信号补能电路系统(signalrepowering circuitry)。
因此,需要一种在不中断芯片的计时功能的情况下,改变芯片的时钟速度从而改变芯片上的时钟频率的方法,该方法至少可以在某种程度上解决与传统方法有关的一些问题。
发明内容
本发明提供了一种用于在时钟域内进行计时的设备。利用自由运行时钟逻辑提供自由运行时钟数据。然后,时基逻辑处理该自由运行时钟数据,该时基逻辑通过多个通信通路接收自由运行时钟数据。在该时基逻辑上,至少采用两个加法器。第一加法器接收自由运行时钟数据的标记,而且具有其数量等于通信通路的数量的输入通路。第二加法器是根据第一加法器的输出递增的时基加法器。
为了更全面理解本发明及其优点,现在,将结合附图参考下面的描述,其中图1是示出具有频率限制的自由运行时钟系统的方框图;图2是示出没有频率限制的自由运行时钟系统的方框图;图3是示出没有频率限制的自由运行时钟系统的运行过程的流程图。
具体实施例方式
在下面的讨论中,为了有助于全面理解本发明,对许多具体细节进行了说明。然而,本技术领域内的技术人员将理解,在没有这些具体细节的情况下,也可以实现本发明。在其它例子中,为了不因为不必要的细节而使本发明变得不清楚,以原理图或者方框图的形式示出众所周知的单元。此外,基本上省略了关于网络通信、电磁信号技术等的细节,因为对于完全理解本发明,这些细节不被看作是必需的,而被看作是在相关技术领域范围内的普通技术人员的认识范围内的。
还请注意,除非另有说明,否则,可以利用硬件或者软件,或者它们的某种组合实现在此描述的所有功能。然而,在优选实施例中,除非另有说明,可以用根据诸如计算机程序代码的诸如计算机或者电子数据处理器的处理器、软件和/或者被编码以实现这些功能的集成电路,来实现该功能。
参考附图中的图1,参考编号100通常称为自由运行时钟系统100。该自由运行时钟系统包括自由运行逻辑110和时基逻辑150。自由运行逻辑110包括自由运行时钟120、第一锁存器130以及反相器140。时基逻辑150进一步包括第二锁存器160、第三锁存器170、边沿检测器180、增量器190以及存储单元195。
通过首先使自由运行逻辑产生单独比特的滴答值,系统100工作。通过第一通信通路102,自由运行时钟120接收时基启动信号。根据自由运行时钟120的模数,利用内部计数器(未示出),每自由运行时钟120的一个周期,或者每几个周期,时钟120产生一次模信号。通过第二通信通路104,模信号输出到第一锁存器130。根据该模信号,第一锁存器130或者启动或者关闭到第一锁存器130的信号传播。如果关闭第一锁存器130,则该锁存器保持其值,而且锁存器130的输入保持不变;然而,如果启动第一锁存器130,则到第一锁存器130的输入生成具有一个周期延迟的输出。然而,第一锁存器130的输入是基于第一锁存器130的输出的。通过第三通信通路106,第一锁存器130的输出传送到反相器140,然后,通过第四通信通路108,第一锁存器130的反相输出输入到第一锁存器130。一旦被启动,通过反馈,第一锁存器130就连续翻转。第一锁存器130的翻转输出信号是滴答值。在该实现中,滴答信号的每个沿表示来自模块120的模信号的出现。将脉冲变换为电平信号的其它方法也是可以接受的。
一旦已经产生了滴答值,时基逻辑150就使用该滴答值。通过第三通信通路106,时基逻辑150的第二锁存器160接收该滴答值。但是,该滴答值实际上是保持常数值而与该滴答值所在的时钟域无关的DC信号。在将该滴答值发送到时基逻辑150时,相对于DC信号位于其内的时钟域来说,作为滴答值的DC信号的变化是异步发生的。因此,产生的问题是,锁存器160是亚稳态的。为了解决亚稳态性问题,可以采用多个次级输入锁存器。图1具体示出单个次级锁存器(第三锁存器170),但是,可以有多个次级锁存器。因此,通过第五通信通路112,第二锁存器160的输出输入到第三锁存器170,而通过第六通信通路114,第三锁存器170的输出被输出到边沿检测器180。
一旦收到延迟的滴答值,就可以对该滴答值做进一步处理。适当时,边沿检测器180监测该滴答值信号的脉冲上升沿和脉冲下降沿。标题为“TIME-BASE IMPLEMENTATION FOR CORRECTINGACCUMULATIVE ERROR WITH CHIP FREQUENCY SCALING”的第10/687,251号美国未决专利申请进一步详细说明了同时检测上升沿和下降沿的好处。在检测到正确的沿时,通过第七通信通路116,边沿检测器180将递增脉冲发送到增量器190。此外,通过第八通信通路196,增量器190接收存储在存储单元195内的当前时基值。然后,通过第九通信通路194,将该递增值从增量器190发送到存储单元195。
然而,与该滴答值相关的滴答速率具有多个限制因素最慢核心频率(CCTslow)、频率转换期间的时间损失(Tswitch)以及用于递增该时基值的周期数(CPinc)。CCTslow通常被定义为被n整除的最大核心频率,其中n是用于产生慢核心时钟频率的核心频率除数。Tswitch通常被定义为与时钟无关的时间,而CPinc通常被定义为每次递增的周期。还有其它因素可能影响时基实现的性能。
由此,要求和限制随限制因素变化。第一个制约是Twindow,它是滴答信号的上升沿与下降沿之间的时间,且至少是处理下面的各时序要素之和所需的时间段在从异步域输入这种信号时的信号亚稳态延迟、改变频率期间的时间损失、使时基计数器值递增的时间、以及用于保护频带GuardBand的时间。换句话说,如下是第一制约(1)Twindow>=CCTslow+Tswitch+(CCTslow*CPinc)+GuardBand
保护频带通常被定义为附加时间,以考虑到系统100内的,诸如,温度、信号的传播速度等的条件变化。
第二个制约是模120的粒度以及自由时钟频率。如下确定第二个制约(2)Ttic=CCTfreeclk*MODmin其中MODmin是系统实现能够支持以满足等式(3)的最小数。
(3)CCTfreeclk*MODmin>=Twindow因此,Ttic的反转是该系统实现能够支持的最快滴答频率。
例如,对4Ghz的处理器核心频率和为10的除数值进行研究。而且,Twindow是1个快速时钟周期时间加1个慢速时钟周期时间。此外,CPinc是8,因为时基是64位,且其具有8位逐位进位加法器。因此,要求如下(a)CCTfast=1/(4GHz)=0.25ns(b)CCTslow=10*CCTfast=2.5ns(c)Tswitch=CCTfast+CCTslow=2.75ns(d)假定GuardBand=1.0ns(e)Twindow>=2.5ns+2.75ns+(2.5ns*8)+1.0ns>=26.25ns(f)假定CCTfreeclk=2ns(已知500Mhz的基准时钟)(g)MODmin=14(h)最高滴答速率=28ns(i)最高滴答频率=1/28ns=35.7Mhz显然,系统100确实具有局限性。主要地,存在与使用系统100有关的限制。但是,许多系统不支持这些频率。实际上,一些老系统通常支持在66Mhz至250Mhz范围内的更高滴答频率。
为了降低与系统100相关的局限性,可以采用改进的自由运行时钟系统。参考附图的图2和3,参考编号200和300通常表示改进的自由运行系统和相应流程图。改进的自由运行系统200包括自由运行逻辑250和时基逻辑252。自由运行逻辑250进一步包括控制模块202。时基逻辑252进一步包括亚稳态控制与边沿检测模块204、k输入加法器206、控制逻辑208以及时基加法器210。
系统200的功能与系统100的功能类似,但是系统200能够处理和产生较高滴答频率。通过第一通信通路212和第二通信通路214,控制模块202分别接收时基启动信号和硬复位信号。输入的启动信号用于进行转换来启动控制模块202的功能,或者关闭控制模块202的功能,其中硬复位可以复位控制模块。控制模块202不要求启动或者硬复位,但是有利的是,启动和硬复位可以更好地控制该逻辑。在步骤302中,控制模块202在内部将快速滴答分解为多个慢速滴答。控制模块202可以仅是多个自由运行逻辑模块,例如,图1所示的自由运行逻辑110,也可以采用其它实现。在步骤304,通过第三通信通路216,这些滴答脉冲传送到时基逻辑252。此外,通常利用多个通信通路发送滴答脉冲,然而特定实现还可以允许使用单个的通信通路。但是通信通路的数量取决于几个因素,例如,自由运行时钟域内的锁存器到锁存器的传输速率、核心时钟以及自由运行时钟频率。因此,通过(各)通信通路216发送独立脉冲。
一旦产生了滴答脉冲,时基逻辑252就开始处理输入值。通过第三通信通路216,将滴答脉冲发送到亚稳态控制与边沿检测模块204。因为滴答脉冲是DC信号,因此还存在与慢速跃变时间相关的问题。通常,多个初级锁存器和多个次级锁存器(未示出)用于接收滴答值,并用于进行亚稳态控制。然后,模块204可以产生递增信号,适当时,在步骤306中,通过第四通信通路218,将该递增信号发送到k输入加法器206。通常,适当时,模块204利用诸如边沿检测器180的边沿检测逻辑确定滴答信号的上升沿和下降沿。此外,可以利用如图所示的单个通信通路218或者多个通信通路将递增信号发送到k输入加法器206。然后,在步骤308中,k输入加法器206累加滴答脉冲,并且以某个低于或者等于时基加法器210可以累加的速率,向时基加法器210进行输入。在步骤310中,通过第五通信通路220,k输入加法器206将递增数据输出到时基加法器210。在步骤312和314中,通过第六通信通路222,控制逻辑208还利用累加或者更新请求向时基加法器210提供控制信号。此外,通过第七通信通路224,控制逻辑208向k输入加法器206提供复位信号,以便在将当前加法器值累加到时基加法器210中之后,可以复位k输入加法器,以防止脉冲的成倍计数。控制逻辑208周期性地将加法器值馈送到时基加法器210,因为某些加法器可以在最少周期数中进行累加。然而,如果时基加法器210可以每一个周期进行一次累加,则不需要控制逻辑208,而且在将其值累加到时基加法器210后,k输入加法器206应该每一个周期复位一次其值。
如上所述,所需的通信通路216的数量(Nc216min)取决于许多因素。其制约如下(4)Twindow2>=CCTslow+Tswitch+GuardBand(5)CCTfreeclk*MODmin>=Twindow2,其中MODmin是系统实现可以支持以满足等式(5)的最小数。
(6)Ttic_216=CCTfreeclk*MODmin,(7)Nc216min>=Ttic_216/Ttic_desired,其中NC2i6min是可以满足等式(7)的最小整数。
例如,假定与先前的例子中的条件相同的条件,如下所示(j)Twindow2>=2.5ns+2.75ns+1.0ns=6.26ns(k)MODmin=4(1)Ttic_216=2ns*4=8ns(m)假定Ttic_desired是4ns(要求的滴答频率是250Mhz.)
(n)Nc216min=2因此,系统200可以保持任意时基频率。通过改变除滴答频率的除数并调节加法器输入的数量,可以保持任意频率。因此,使用系统200具有增加的实用性和灵活性。
显然,本发明可以采用多种形式和实施例。因此,在不脱离本发明精神或者范围的情况下,可以对上述内容做多种变型。在此概述的性能可以允许各种程序设计模块。不应该将该公开看作优选任何特定程序设计模块,而是涉及可以通过其建立这些程序设计模块的基本机制。
通过参考其一定优选实施例已经对本发明进行了描述,请注意,所公开的实施例是说明性的,而非实质上的限制,而且可以设想对上述公开进行各种变形、修改、改变以及替换,并且在某些例子中,可以采用本发明的一些特征,而不相应地采用其它特征。通过阅读上面优选实施例的描述,本领域内的技术人员可以设想多种变形和修改。因此,应当广泛地并且以符合本发明范围的方式理解所附权利要求。
权利要求
1.一种用于在时钟域内进行计时的设备,包括自由运行时钟逻辑,至少配置为提供自由运行时钟数据;以及时基逻辑,至少配置为通过多个通信通路接收自由运行时钟数据,其具有至少一个加法器,具有多个其数量等于该多个通信通路的数量、用于接收自由运行时钟数据标记的输入通路;以及至少一个时基加法器,连接到该至少一个加法器。
2.根据权利要求1所述的设备,其中时基逻辑进一步包括控制逻辑,如果时基加法器不能每一个周期进行加法,则该控制逻辑向该时基加法器提供控制信号。
3.根据权利要求1所述的设备,其中时基逻辑进一步包括控制与检测模块,它至少连接到该多个通信通路。
4.根据权利要求3所述的设备,其中控制与检测模块进一步包括多个锁存器,至少配置为提供亚稳态控制;以及多个边沿检测模块,至少配置为根据该多个锁存器发出的信号,进行边沿检测。
5.根据权利要求4所述的设备,其中该多个锁存器进一步包括多个初级锁存器,其中至少配置多个初级锁存器中的每个初级锁存器连接到该多个通信通路中的至少一个通信通路;以及多个次级锁存器,其中至少配置每个次级锁存器连接到该多个初级锁存器中的至少一个初级锁存器的输出端。
6.一种在时钟域内计时的方法,包括将滴答信号分解为多个慢速滴答信号;处理该多个慢速滴答信号;累加处理的滴答信号;以及调节时基。
7.根据权利要求6所述的方法,其中该处理步骤进一步包括检测多个边沿。
8.根据权利要求6所述的方法,其中该累加步骤进一步包括叠加该处理的滴答信号。
9.根据权利要求6所述的方法,其中该调节步骤进一步包括利用时基加法器叠加累加的滴答信号。
10.根据权利要求9所述的方法,其中该调节步骤进一步包括确定时基加法器是否可以在每一个周期进行叠加;以及如果时基加法器不能在每一个周期进行叠加,则提供控制信号。
11.一种在时钟域内计时的计算机程序产品,该计算机程序产品具有其上嵌入了计算机程序的介质,该计算机程序包括用于将滴答信号分解为多个慢速滴答信号的程序代码;用于处理该多个慢速滴答信号的程序代码;用于累加处理的滴答信号的程序代码;以及用于调节时基的程序代码。
12.根据权利要求11所述的计算机程序产品,其中该用于处理的程序代码进一步包括用于检测多个边沿的程序代码。
13.根据权利要求11所述的计算机程序产品,其中该用于累加的程序代码进一步包括用于叠加该处理的滴答信号的程序代码。
14.根据权利要求11所述的计算机程序产品,其中该用于调节的程序代码进一步包括用于由时基加法器叠加累加的滴答信号的程序代码。
15.根据权利要求14所述的计算机程序产品,其中该用于调节的程序代码进一步包括用于确定是否可以每一个周期进行叠加的程序代码;以及用于在不能每一个周期进行叠加时提供控制信号的程序代码。
全文摘要
本发明提供了一种在改变核心时钟频率时,产生恒定递增增量的设备、方法和计算机程序。在计算机系统中,时常改变频率是有用的。但是,保持计算机系统的时钟能力是一项困难的工作。为了保持计时能力,将时基逻辑与频率受限的自由运行时钟一起使用。然而,利用多个具有加法器系统的通信通路来有效调节不断升高的频率,可以不考虑核心频率,而实现有效计时。
文档编号G06F1/04GK1740946SQ20051007709
公开日2006年3月1日 申请日期2005年6月15日 优先权日2004年8月26日
发明者罗尔夫·希尔根多夫, 锡德里克·利希特瑙, 迈克尔·范·王 申请人:国际商业机器公司