专利名称:用于集成设备中功率节流的快速频率切换的方法和系统的制作方法
技术领域:
本发明一般地涉及使用节流(throttle)来降低功率。
背景技术:
对功能更强大的计算机和通信产品的需求导致出现了通常具有更高的晶元(die)温度而且功耗更大的更快的处理器。但是,设计工程师要为降低功耗和晶元温度而努力。
一般地,处理器或微控制器使用时钟倍频。时钟倍频是指处理器的核心频率与总线频率之比。一种典型的解决方案是用于改变时钟倍频的节流。例如,当集成设备的工作温度升高时,工作频率被降低。结果,集成设备由于较低的工作频率而冷却。因此,当集成设备冷却后,工作频率可以被提高。但是,这种节流可能对处理器的性能有不良影响,因为处理器要忍受时钟倍频切换中包含的长延迟。
发明内容
根据本发明的一个方面,提供了一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,该方法包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
根据本发明的另一方面,提供了一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,该方法包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较;以及将所述信号从所述第一流水段逐段推进若干个时钟数,所述时钟数等于为在所述第一总线比率的总线时钟的预定百分比之前或之后任意数量的时钟处产生信号所需的时钟数。
根据本发明的又一方面,提供了一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,该方法包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较;以及在接收到从所述第一总线比率变为所述第二总线比率的请求时,将所述计数器重置为不同的值,以反映所述第二总线比率。
根据本发明的再一方面,提供了一种制品,该制品包括一种具有多条机器可读指令的机器可读介质,其中当所述指令被系统执行时,所述指令规定在从第一总线比率切换到第二总线比率时产生总线控制信号,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
根据本发明的另一方面,提供了一种系统,该系统包括至少一个具有多个事务队列的处理器,通过以下步骤在不清空所述多个事务队列的情况下从第一总线比率变为第二总线比率在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;并沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
根据本发明的另一方面,提供了一种为从第一总线比率切换到第二总线比率而产生驱动使能信号的方法,该方法包括如果重置被使能,那么将计数器值赋值为init常数值;如果所述计数器先前的值是逻辑0,那么将计数器值赋值为reload常数值;否则将所述计数器值减1;并且所述init常数值至少部分基于所述第一总线比率以及所述驱动使能信号的延迟需求,所述reload常数值等于所述第一总线比率。
根据本发明的另一方面,提供了一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,该方法包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之后(x+n)个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较。
根据本发明的另一方面,提供了一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,该方法包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之后(x+n)个核心时钟处;将计数器从0增加到比所述第一总线比率小1;使能时钟盗齿;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
根据本发明的另一方面,提供了一种用于产生时钟信号的方法,该方法包括在与第二时钟信号具有所需的相位关系的第一时钟域产生时钟信号;以及将在所述第一和第二时钟之间的频率的当前比率变为不同的比率。
根据本发明的另一方面,提供了一种装置,该装置包括第一时钟域中的多个多阶段流水线;以及用于跟踪所述多个多阶段流水线之一的频率比率和与第二时钟间的相位关系的装置;以及用于部分基于第一和第二频率比率以及所述第一与第二时钟间的相位关系来产生信号的装置,其中所述信号能被逐段推进一个或更多个所述第一时钟的周期。
在本说明的权利要求书中具体地指出并清楚地要求了本发明的主题。但是,通过参照下面的详细描述并结合附图进行阅读,可以最好地理解所要求的主题,包括操作的组成和方法及其对象、特征和优点,在所述附图中图1的时序图根据所要求的主题,图示了产生驱动使能信号的实施例。
图2的时序图根据所要求的主题,图示了产生选通驱动/采样使能信号的实施例。
图3的方框图示出了被实施例使用的总线比率和控制信号的产生流水线。
图4的系统简图示出的系统可以应用图1或图2或图3的实施例,或它们的任意组合。
图5是实施例使用的仿真。
具体实施例方式
在下面的详细描述中列出了许多具体细节,以提供对所要求的主题的全面理解。但是,本领域的技术人员应当理解,所要求的主题可以在没有这些具体细节的情况下被实现。在其它情况下,没有详细描述公知的方法、步骤、部件和电路,以免混淆所要求的主题。
现今的技术发展领域涉及通过降低功耗来获得用于通信产品和计算机或计算系统的电池的更长寿命。一般地,当处理器工作在更高温度时,处理器的晶体管的性能可能会下降并变慢。目前,使用节流,通过降低工作频率来降低功耗和晶元温度。但是,如前面讨论过的那样,节流对例如处理器的集成设备的性能有不良影响,因为处理器可能会中断所有指令的执行并清空或阻断处理器队列。结果这导致处理器慢慢停了下来。因此,当改变时钟倍频以试图降低功耗时,一般的节流近似于“猛踩刹车”以使汽车(处理器)慢慢停了下来。如前面所提到的那样,处理器或集成设备的核心频率是将总线频率乘以时钟倍频得到的。在一个实施例中,总线频率对应于前端总线而且是固定的,而时钟倍频是由用户指定的。
与一般的节流形成对照,所要求的主题实现了一种系统和方法,其促成了时钟倍频切换以降低核心频率的同时防止了处理器队列被清空或阻断,这是由于频率切换发生在少许核心时钟中而且对用户透明。所要求的主题在下面的详细描述中被描述。
一方面,所要求的主题教导了一种用于产生驱动使能和选通产生信号的时钟计数器算法,如结合图1和图2所描述的那样。时钟计数器算法可以在软件中实现,例如,所述软件可以被存储在电可访问介质中,包括提供(即存储和/或传输)可被电子设备(例如计算机、个人数字助理、移动电话)读取的形式的内容(例如计算机可执行指令)的任何机制。例如,机器可访问介质包括只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存设备以及电的、光的、声的或其它形式的传播信号(例如载波、红外信号、数字信号)。
在另一个实施例中,所要求的主题方便了总线控制信号和锁相环(PLL)开关摆动的流水线化,以支持任意的深度,以用于容纳去往和来自焊盘(pad)的更大的传播延迟、用于将控制信号提前到开关之前以及用于容纳PLL开关的开关信号建立时间,如结合图3所描述的那样。
图1的时序图根据所要求的主题,图示了产生驱动使能信号的实施例。在一个实施例中,所要求的主题支持为以不同核心频率运行的处理器或集成设备产生驱动使能信号。在一个实施例中,所要求的主题与前端总线交互,并以核心频率工作,而且对于一个范围内的时钟倍频来说在功能上是等同的。因此,每个信号遵守把信号驱动到总线时钟上的延迟需求,并包括在随后的总线时钟上升沿之前的预定时刻驱动信号。因此,这使得所要求的主题的逻辑独立于时钟倍频,以得到基于所支持的最高时钟倍频而选择的最小延迟。
如前面所提到的那样,处理器或集成设备可以支持一个范围内的时钟倍频。一般地,例如驱动使能和采样使能之类的一组同步信号被用作同步信号。驱动使能信号被用于把信号驱动到例如前端总线的总线上,而采样使能信号被用于对来自例如前端总线的总线的进入的信号进行采样。
在一个实施例中,采样使能信号能够从所述驱动使能中获得并关于驱动使能对称。在一个实施例中,在总线时钟的上升沿之后使用采样使能信号。例如,为了在总线时钟之后1周期产生采样使能,驱动使能信号被延迟了x+1个周期。在一个实施例中,如下代码被编入寄存器传送语言(RTL)Forx=2DFF(coreClk,drive_enable_2_before,drive_enable_1_before)DFF(coreClk,drive_enable_1_before,drive_enable_aligned_with_bus_clk)DFF(coreClk,drive_enable_aligned_with_bus_clk,sample_enable_1_afierbus_clk)下面的例子示出了用于基于时钟计数器,为时钟倍频产生驱动使能信号的时序。如前所述,对把信号驱动到总线时钟上存在延迟需求。假设所述延迟需求是(x-1)个核心时钟,那么,在下一个总线时钟的上升沿之前就有(x)个核心时钟。而且,假设时钟倍频为(N),这就导致驱动使能信号在下一个总线时钟的上升沿之前x个核心时钟、后沿之后的(N-x)个时钟处被断言(assert)。相反,假设时钟倍频为(2N),则各时钟到总线时钟前沿的相对距离不变,但是到后沿的距离为(2N-x)。
在一个实施例中,至少部分基于时钟计数器,计算对于一个范围的时钟倍频的驱动使能的固定位置。所述时钟计数器的计算(操作)为对于核心时钟的每个上升沿,计数器=if(reset){init_constant}else if(!counter){reload_constant}else{counter-1}当计数器=0时,drive_enable=1上述时钟计数器的操作描述了基于判断的为计数器指定不同的值的嵌套循环。例如,如果reset的值是逻辑1,那么计数器会被设为与init_constant相同的值。否则,如果计数器的值是逻辑0,那么计数器将被设为与reload_constant相同的值。如果计数器的值不等于逻辑0,那么计数器的值被减去1。
最后,如果计数器的值是0,那么drive_enable被设为逻辑1。
下面对上述变量进行进一步解释,在一个实施例中,变量init_constant为特定的时钟倍频定义了初始偏移。例如,当时钟倍频为10时,超前总线时钟2个核心时钟周期为真(有效)的驱动使能信号的init_constant值将是8;类似地,当时钟倍频为14时,超前总线时钟2个核心时钟周期为真(有效)的驱动使能信号的init_constant值将是12。在同一个实施例中,reload_constant的值等于时钟倍频。
为了支持功率节流,需要改变时钟倍频值。因此,需要为不同的时钟倍频值产生驱动使能信号。而且,init_constant和reload_constant必须反映新的时钟倍频值。因此,在计数器重启前,变量init_constant和reload_constant针对于新的时钟倍频值而被重新初始化。例如,在一个实施例中,当希望在下一个总线时钟周期进行频率切换时,产生对应于新时钟倍频值的驱动使能。因此,通过像下面这样改变前面的计数器算法来重新初始化变量init_constant和reload_constant对于核心时钟的每个上升沿,计数器=if(reset){init_constant}else if(!counter&&switch_freq_next_bus_clock){reload_constant_new}else if(!counter){reload_constant}else{counter-1}当计数器=0时,drive_enable=1上述时钟计数器的操作描述了基于判断的为计数器指定不同的值的嵌套循环。例如,如果reset的值是逻辑1,那么计数器会被设为与init_constant相同的值。否则,如果计数器的非和switch_freq_next_bus_clock的布尔函数(&&是逻辑与)的值是逻辑1,那么计数器将被设为与reload_constant_new相同的值(以反映新的时钟倍频值)。否则,如果该布尔函数是逻辑0而且计数器的值是逻辑0,那么计数器的值被设为reload_constant。否则,计数器的值被减去1。
最后,如果计数器的值是0,那么drive_enable被设为逻辑1。
图1描述了时钟倍频从2N减小到N后的功率节流的例子。驱动使能(DriveEn1)被用于时钟倍频为2N的情况,相反地,驱动使能(DriveEn2)被用于时钟倍频为N的情况。DriveEn1与总线时钟Q1相距(x)个核心时钟。假设频率切换在总线时钟Q1的上升沿出现,DriveEn2与总线时钟Q1的上升沿相距(N-x)个核心时钟周期。当DriveEn1产生时,计数器被加载下一个驱动使能(DriveEn2)产生前的核心时钟的数量。在一个实施例中,该核心时钟的数量是2N。但是,由于频率切换,该数量将是(x+N-x),即N。因此,不论该数量是多少,当在下一个总线时钟周期存在频率切换时,计数器都被加载新的倍频值。
所要求的主题并不限于前面的将时钟倍频从2N减小到N的功率节流的例子。相反,所要求的主题支持提高时钟倍频。类似地,所要求的主题支持时钟倍频的不同值。
图2的时序图根据所要求的主题,图示了产生选通驱动/采样使能信号的实施例。在一个实施例中,选通信号以总线时钟频率的两倍运行,并被用于锁存总线数据信号。例如,总线数据信号可以是前端总线(FSB)数据信号。在同一个实施例中,在总线时钟工作周期的25%和75%处产生选通信号(如总线时钟时序上对应于两个驱动使能信号的25%和75%处的垂线所示)。如前面结合图1所描述的那样,驱动使能(DriveEn1)对应于时钟倍频2N,相反,驱动使能(DriveEn2)对应于时钟倍频N。在75%选通之前x个核心时钟周期产生DriveEn1,而下一个选通产生于下一个倍频为N的总线周期的25%处(如半圆弧标记202所示)。因此,这两个选通之间的距离是(.25)乘以(2N)(在时钟倍频为2N的DriveEn1期间)+.25N(在时钟倍频为N的DriveEn2期间)。另外,在一个实施例中,重置常数公式为reload_constant_new_for_strobes=.25(times)(current multiplier)+.25(times)(next_multiplier)。
但是,所要求的主题并不限于在总线时钟的工作周期的25%和75%处的选通值。通过改变选通设置并改变重加载常数公式以反映不同选通值,所要求的主题支持选通值的任意组合。
图3的方框图示出了被实施例使用的总线比率和控制信号的产生流水线。所述方框图至少部分基于希望的总线比率和计数器,促成了控制信号的产生。因此,所述方框图支持任意范围的总线比率,以及从第一总线比率切换到另一总线比率。
所述方框图包括在先计数器、PLL控制逻辑和多个流水段。PLL控制逻辑接收来自在先计数器的输出端的计数。
在先计数器接收来自控制逻辑的输出端的计数器控制信号。用于当前总线比率的在先计数器被保持为充分领先于PLL比率计数器。在先计数器用于对第一(最先)流水段中的核心时钟进行计数。例如,在先计数器从0计数到(比总线比率小1)。所述计数器在达到(总线比率-1)后的下一个时钟重置为0。于是,通过将来自在先计数器的计数值和从总线比率中得到的多个计数值进行比较,并将匹配状况沿着流水线推进到合适的流水段上,从而产生来自PLL控制逻辑的控制信号。
在一个实施例中,流水线中的段数至少部分基于需要产生的最先控制信号。例如,如果总线比率需要从7切换到28,那么在总线时钟边沿之前9个核心时钟处产生最先控制信号。因此,使用10段流水线,其中各段被描述为9b、8b、……直到0b。在本实施例中,最先流水段被描述为9b。如前所述,在先计数器对最先流水段中的核心时钟进行计数,在本例中,最先流水段为9b。因此,如果总线比率为7,则在先计数器从0计到6然后返回到0。
通过将在先计数器的值与根据总线比率计算得到的值进行比较,得到总线相关信号。例如,如果在50%总线时钟处需要选通,那么在先计数器的值就与总线比率的50%(即进行算术右移操作)进行比较。类似地,算术位移处理奇数和偶数总线比率。因此,所要求的主题支持奇数和偶数总线比率。回去看总线比率为7的例子,将在先计数器的值与段9b(比总线时钟早9个核心时钟)中的3(因为这是数学右移操作7>>1的结果)进行比较。因此,在总线时钟的50%之前9个核心时钟处,在先计数器的值刚好等于3,并且9b信号(在总线时钟之前9个时钟处的信号)被逐段推进的时钟数量等于为在总线时钟的50%之前或之后任意数量的时钟处产生信号所需的时钟数量。
当接收到从第一总线比率变为第二总线比率(频率改变)的请求时,在先计数器的值被重置为0。因此,当产生频率切换时,在先计数器的值就切换到新的计数值。例如,当如果禁用时钟盗齿(clock toothstealing),那么在先计数器的值达到比总线比率小1时,以及当如果时钟盗齿被使能,那么在先计数器的值到达比总线比率小2时,在最先流水段中也产生切换信号。如果产生切换信号,则在先计数器的值在下一个时钟处重置为0,并开始到切换后的总线比率(第二总线比率)的计数。在上面的例子中,当在允许时钟盗齿的情况下从7切换到28时,在计数器到达5(比正常的0到6计数小1)时产生切换信号。在下一个时钟处,计数器重置为0,并对于总线比率28开始0到27的计数。当改变总线比率时,在两个PLL之间复用并切换。PLL切换的结果是,在PLL的切换之后的第一个时钟周期中出现轻微的延迟。例如,第一个时钟周期可能在任何位置延迟至少几皮秒。相反,时钟盗齿允许延长第一个时钟以补偿该延迟。例如,第一时钟周期可以比正常的单个时钟周期长,而比两个正常的时钟周期短。如前所述,所要求的主题支持在允许或禁用时钟盗齿情况下产生控制信号。
在一个实施例中,通过将切换信号逐段传递直到其到达总线时钟边沿(我们的例子中为9个时钟),把切换信号传播到PLL控制逻辑。在总线时钟边沿,核心时钟被从当前总线比率切换到所请求的总线比率。在先计数器类似地可以在切换之前任意数量的总线时钟处产生控制信号。
在一个实施例中,所述方框图可以在软件中实现。例如,所述软件可以被存储在电可访问介质中,包括提供(即存储和/或传输)可被电子设备(例如计算机、个人数字助理、移动电话)读取的形式的内容(例如计算机可执行指令)的任何机制。例如,机器可访问介质包括只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存设备以及电的、光的、声的或其它形式的传播信号(例如载波、红外信号、数字信号)。
类似地,可以使用RTL代码来实现前述功能。RTL代码是一种有利于硬件功能合成并对最终产品不透明的构建模块。
例如,可以如下编写所述软件。注意插入的注释是为了清楚地说明变量值和每段代码的功能。类似地,每段注释都开始于行首的首字符“!”。
!=================================!建立两个总线比率模型ratio0和ratio1。
!ratio代表当前总线比率。current选择比率。
ratio=CASE current OF BEGIN[‘1]ratio1;[‘0]ratio0;END;!cclk是核心时钟,bclk是总线时钟。
!bck具有总线时钟频率,并在一个脉冲期间为高。
vDFF(cclk,bclk,bclkdel);bck=bclk AND NOT bclkdel;!ratio0/1在总线重置时被初始化为pocratio。
!从总线获取pocratio(Power On Clear比率)。
vEDFF(qclkebl,fsbresetinc00h,pocratio,ratio0);vEDFF(qclkebl,fsbresetinc00h,pocratio,ratio1);!==========================================!pocratio被初始化为从总线获得的比率,除非pocratio低于
!或高于所支持的范围(此时其被初始化为默认比率)。
pocratio=CASE(Eb1QValC00B[4:0])OF BEGIN[‘000_]$cvn(8);[‘0010_]$cvn(8);[‘11111]$cvn(8);[] Eb1QVa1C00B;END;!ratio24代表ratio的第2/4(即一半)部分。
!lastcount是计数器在重置为0前所计的最后一个值。
!syncount是当总线被重置时,用来将计数器与总线在各种总线比率!下同步的值。
!count1是count加1,用于增加计数器。
!request是总线比率请求。1表明请求使用ratio1,!而0表明请求使用ratio0。
ratio24=0&ratio[4:1];lastcount=ratio-‘00001;synccount=CASE ratio OF BEGIN[‘00110]‘00100;[‘00111]‘00011;[‘01000]‘00010;[‘01001]‘00001;[‘01010]‘00000;[]01010;END;count1=count+‘00001;vEDFF(cclk,fsbresetinc00h,‘0,request);
!sync是同步选通,其将计数器初始化,以对应于所有总线比率用!正确的count即synccount来初始化计数器。
!switchnext表明在先计数器将在下一个时钟处切换总线比率。
!这发生在当被请求的比率与当前比率不同,且增加后的!count等于lastcount时。
!resetnext表明在先计数器将在下一个时钟处重置为0。这发生!在当增加后的count等于(当前)比率时。
sync=fsbresetinc00h AND bck;switchnext=(request XOR current)AND vBAND(count1 XNOR lastcount);resetnext=vBAND(count1 XNOR ratio);!状态机产生对应于各个sync、switchnext和resetnext值的current!和count的下一个值。
!当sync是1时,即当重置时,current保持不变,count(即计!数器)得到合适的synccount。
!当switchnext是1时,即,需要在下一个时钟处切换比率,!request被指定给下一个current,即被请求的比率被指定给下一个当!前比率;并且下一个count被重置为0。
!当resetnext是1时;即,计数器已经达到对应于当前比率的!lastcount,需要被重置;当前比率保持不变,count被重置为0。
!在所有其它情况下,当前比率保持不变,计数器计数增加。
nextcurrent & nextcount=CASE sync & switchnext & resetnext OF BEGIN[‘1_]current & synccount;[‘01_]request &‘00000;[‘001]current &‘00000;[]current & count1;END;!count、switch和current的下一个值被触发;即下一个状态被指定给!当前状态。
vRSDFF(cclk,‘0,nextcount,count);vRSDFF(cclk,‘0,switchnext,switch);vRSDFF(cclk,‘0,nextcurrent,current);!switch9b是实际比率切换前9个时钟处的切换信号(b代表“之!前”)。
!current9b是所述切换前9个时钟处的current值。
!ssdrive9b是总线时钟的50%前9个时钟处的控制信号。它在整个!比率切换期间起作用。
switch9b=switch;current9b=current;ssdrive9b=vBNOR(count)OR vBAND(count XNOR ratio24);!switch信号从切换前9个时钟到切换前0个时钟的逐段推进。
vRSDFF(cclk,fsbresetinc00h,switch9b,switch8b);
vRSDFF(cclk,fsbresetinc00h,switch8b,switch7b);vRSDFF(cclk,fsbresetinc00h,switch7b,switch6b);vRSDFF(cclk,fsbresetinc00h,switch6b,switch5b);vRSDFF(cclk,fsbresetinc00h,switch5b,switch4b);vRSDFF(cclk,fsbresetinc00h,switch4b,switch3b);vRSDFF(cclk,fsbresetinc00h,switch3b,switch2b);vRSDFF(cclk,fsbresetinc00h,switch2b,switch1b);vRSDFF(cclk,fsbresetinc00h,switch1b,switch0b);!current信号从切换前9个时钟到切换前0个时钟的逐段推进。
vRSDFF(cclk,fsbresetinc00h,current9b,current8b);vRSDFF(cclk,fsbresetinc00h,current8b,current7b);vRSDFF(cclk,fsbresetinc00h,current7b,current6b);vRSDFF(cclk,fsbresetinc00h,current6b,current5b);vRSDFF(cclk,fsbresetinc00h,current5b,current4b);vRSDFF(cclk,fsbresetinc00h,current4b,current3b);vRSDFF(cclk,fsbresetinc00h,current3b,current2b);vRSDFF(cclk,fsbresetinc00h,current2b,current1b);vRSDFF(clke,fsbresetinc00h,current1b,current0b);!ssdrive信号从切换前9个时钟到切换前0个时钟的逐段推进。
vRSDFF(cclk,fsbresetinc00h,ssdrive9b,ssdrive8b);vRSDFF(cclk,fsbresetinc00h,ssdrive8b,ssdrive7b);vRSDFF(cclk,fsbresetinc00h,ssdrive7b,ssdrive6b);vRSDFF(cclk,fsbresetinc00h,ssdrive6b,ssdrive5b);vRSDFF(cclk,fsbresetinc00h,ssdrive5b,ssdrive4b);vRSDFF(cclk,fsbresetinc00h,ssdrive4b,ssdrive3b);vRSDFF(cclk,fsbresetinc00h,ssdrive3b,ssdrive2b);vRSDFF(cclk,fsbresetinc00h,ssdrive2b,ssdrive1b);
vRSDFF(cclk,fsbresetinc00h,ssdrive1b,ssdrive0b);图4的系统简图示出了可以应用图1或图2或图3的实施例,或它们的任意组合的系统。多处理器系统将代表具有多个处理器的多种系统(例如计算机系统、实时监控系统等)。可替换的处理器系统可以包括更多、更少和/或不同的部件。在某些情况下,这里描述的控制信号的产生可以被应用于单处理器和多处理器系统。
系统总线是到处理器、存储器和I/O的多处理接口。多达四个(代理3到0)处理器可以在系统总线上无缝互连。在一个实施例中,这些代理是总线主控。高速I/O接口和存储器接口模块代表了到系统其它部分的接口。总线代理发射传输数据和系统信息的事务。每个事务具有若干阶段,可以包括仲裁阶段、请求阶段、监听(snoop)阶段、响应阶段和数据阶段。
图5是一个实施例使用的仿真。本领域的技术人员理解,仿真的输出描述了前面讨论的在允许时钟盗齿的情况下,将总线比率从7切换到28再回到7的例子。因此,该仿真表明了所要求的主题的一个工作示例。
对本仿真的更详细的信息是,建立了基于ratio0和ratio1产生clk0和clk1的两个PLL的模型。为了说明逻辑是如何工作的,可以将ratio0和ratio1设为7、14或28。在本仿真中,ratio0和clk0为7,ratio1和clk1为28。当前核心时钟为cclk。当前总线时钟为bclk。bck在bclk的整个第一cclk中是活动的。request信号提出对比率的请求,current信号表明当前比率。当request与current不同的时候,开始频率切换。request可以在任何时候被反转。request信号和current信号超前总线时钟9个时钟。current9b信号、ssdrive9b信号和switch9b信号超前bclk 9个时钟。它们被逐段推进以产生信号8b、7b,直到0b。current是当前总线比率,ssdrive是源同步驱动信号,switch表明频率切换。所述信号可以被继续逐段推进以产生bclk之后n个时钟的信号。
虽然所要求的主题是参照具体实施例描述的,但是本描述并不应当被理解为限制性的。参照对所要求的主题的说明,所公开的实施例的各种修改以及所要求的主题的可替换实施例对于本领域的技术人员来说将是显而易见的。因此,可以不偏离在所附权利要求中定义的所要求的主题的精神或范围来进行此类修改。
权利要求
1.一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
2.如权利要求1所述的方法,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
3.如权利要求2所述的方法,其中通过对所述第一总线比率执行算术右移操作来计算所述值。
4.一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较;以及将所述信号从所述第一流水段逐段推进若干个时钟数,所述时钟数等于为在所述第一总线比率的总线时钟的预定百分比之前或之后任意数量的时钟处产生信号所需的时钟数。
5.如权利要求4所述的方法,其中至少部分基于所述第一总线比率的总线时钟的所述预定百分比,来根据所述第一总线比率计算所述值,所述预定百分比是就所述第一总线比率的总线时钟的百分比来说何时需要选通。
6.如权利要求5所述的方法,其中通过对所述第一总线比率执行算术右移操作来计算所述值。
7.如权利要求5所述的方法,其中当接收到从所述第一总线比率变为所述第二总线比率的请求时,所述计数器重置为0。
8.一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较;以及在接收到从所述第一总线比率变为所述第二总线比率的请求时,将所述计数器重置为不同的值,以反映所述第二总线比率。
9.如权利要求8所述的方法,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
10.如权利要求9所述的方法,其中通过对所述第一总线比率执行算术右移操作来计算所述值。
11.如权利要求8所述的方法,其中当所述计数器的值达到比所述第一总线比率小1的值时,在所述第一流水段产生对改变的请求。
12.一种制品,包括一种具有多条机器可读指令的机器可读介质,其中当所述指令被系统执行时,所述指令规定在从第一总线比率切换到第二总线比率时产生总线控制信号,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
13.如权利要求12所述的制品,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
14.如权利要求12所述的制品,其中通过对所述第一总线比率执行算术右移操作来计算所述值。
15.如权利要求12所述的制品,其中所述机器可读指令用寄存器传送语言编写。
16.一种系统,包括至少一个具有多个事务队列的处理器,通过以下步骤在不清空所述多个事务队列的情况下从第一总线比率变为第二总线比率在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;并沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之前0个核心时钟处;将计数器从0增加到比所述第一总线比率小1;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
17.如权利要求16所述的系统,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
18.一种为从第一总线比率切换到第二总线比率而产生驱动使能信号的方法,包括如果重置被使能,那么将计数器值赋值为init常数值;如果所述计数器先前的值是逻辑0,那么将计数器值赋值为reload常数值;否则将所述计数器值减1;并且所述init常数值至少部分基于所述第一总线比率以及所述驱动使能信号的延迟需求,所述reload常数值等于所述第一总线比率。
19.一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之后(x+n)个核心时钟处;将计数器从0增加到比所述第一总线比率小1;将所述计数器与根据所述第一总线比率计算得到的值进行比较。
20.如权利要求19所述的方法,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
21.一种用于在从第一总线比率切换到第二总线比率时产生总线控制信号的方法,包括在所述第一总线比率的总线时钟边沿之前x个核心时钟处产生所述总线控制信号;沿多个(x+1)流水线逐段推进,其中第一流水段在所述第一总线比率的总线时钟边沿之前x个核心时钟处,最末流水段在所述第一总线比率的总线时钟边沿之后(x+n)个核心时钟处;将计数器从0增加到比所述第一总线比率小1;使能时钟盗齿;以及将所述计数器与根据所述第一总线比率计算得到的值进行比较。
22.如权利要求21所述的方法,其中至少部分基于就所述第一总线比率的总线时钟的百分比来说何时需要选通,来根据所述第一总线比率计算所述值。
23.一种用于产生时钟信号的方法,包括在与第二时钟信号具有所需的相位关系的第一时钟域产生时钟信号;以及将在所述第一和第二时钟之间的频率的当前比率变为不同的比率。
24.一种装置,包括第一时钟域中的多个多阶段流水线;以及用于跟踪所述多个多阶段流水线之一的频率比率和与第二时钟间的相位关系的装置;以及用于部分基于第一和第二频率比率以及所述第一与第二时钟间的相位关系来产生信号的装置,其中所述信号能被逐段推进一个或更多个所述第一时钟的周期。
全文摘要
本发明提供了用于集成设备中功率节流的快速频率切换的方法和系统,其能够在不清空处理器的事务队列的情况下从第一总线比率切换到第一总线比率。
文档编号G06F1/26GK1664753SQ20041009164
公开日2005年9月7日 申请日期2004年11月24日 优先权日2004年3月3日
发明者希兰·帕德韦卡尔, 阿尔温德·曼德阿尼, 柯根什·斯里瓦斯塔瓦 申请人:英特尔公司