具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在介绍本公开的各个实施例之前,先对本公开所使用的一些术语或者概念进行解释和澄清。
时钟频率(又译:时钟频率速度,英语:clock rate),是指数字电子电路设计中用于衡量时钟信号的基础频率,它以“若干次周期每秒”来度量,量度单位采用单位赫兹(Hz)。时钟信号的每个周期由两个相邻的高电平和低电平组成,因此可以通过计数每秒中高电平或低电平的数量得到时钟频率。时钟信号用于数字电子电路设中,控制各个部件的数字状态同步转换。随着时钟电子电路技术的发展,数字信号的时钟频率提高很快,但同时,时钟频率越高,系统功耗也会越高。
分频因数:源时钟信号与输出时钟信号之间的频率之比称为分频因数。分频器是将输入的源时钟信号进行分频产生的输出时钟信号的电路。可以根据需要的分频因数采用相应的分频器。
片上系统
图1是本公开实施例所应用的片上系统100的结构示意图。
参考图上所示,高速内存104和处理单元101以及调频调压控制器103经由片上总线102耦接到一起。处理单元101负责从高速内存104中读取各种指令,并对指令进行译码和执行。片上总线102为高性能、高带宽、低延迟的片内总线,例如为AXI总线。AXI总线是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0及以上协议中最重要的部分,它是面向于高性能、高带宽、低延迟的片内总线。AIX总线将地址/控制和数据相位分离,支持不对齐的数据传输,同时支持突发传输和乱序传输,因此满足了超高性能和复杂的片上系统设计的需求。
片上总线102还可与未被示出的接口电路耦接,通过接口电路与片外的外部设备耦接。外部设备例如可以为文字、音频和视频的输入/输出设备和各种其他存储器。处理单元101可通过接口电路访问片外的外部设备。不同于设置在片上系统中的高速内存104,位于片外的存储器可以容量更大但速度较慢、成本较低。在一些实现中,高速内存104可以为静态随机存取存储器(SRAM),而片外的存储器为DRAM(动态随机存取存储器)和闪存(flash)存储器。
如图上所示,片上系统100还内嵌有基本软件(例如嵌入式控制系统121)和应用程序(例如应用程序A-N)。另有其他的应用程序可以存储在片上系统100之外的存储器中,这些应用程序可以通过接口电路被拷贝到片上系统100中的高速内存104中,或者通过接口电路访问片上系统100上的资源。
处理单元101执行来自嵌入式控制系统121、应用程序A-N或其他应用程序的可执行代码,可执行代码中包括与时钟频率以及供电电压的调节相关的指令,当处理单元101执行到这些指令时,会向调频调压控制器103发送调频调压相关的指令,以驱使调频调压控制器103进行调频调压相关的操作。
如图上所示,调频调压控制器103分别与时钟电路105、位于片外的电源管理电路211耦接,用于根据接收到的指令调节系统的时钟频率和供电电压。例如处理单元101可向调频调压控制器103发送目标频率,调频调压控制器103在判定目标频率为合法数值的情况下,根据目标频率向时钟电路105输出调频信号REGF,时钟电路105据此生成提供给处理单元101的时钟信号FCPU,同样,调频调压控制器103可接收目标电压,或者根据目标频率生成目标电压,然后根据目标电压向电源管理电路211输出调压信号REGV,电源管理电路211据此生成提供给处理单元101或其他组件的供电电压信号VCPU,如此就完成了对系统的时钟频率和供电电压的调节。另外,调频调压控制器103还可以发送告警信号ALARM,例如在判定目标频率和目标电压其中之一不为合法数值时向处理单元101发送告警信号ALARM。调频调压控制器103可以是AVFS控制器,也可以是DVFS控制器。
图2是一个示例性的AVFS控制器的结构示意图,用于对图1中的调频调压控制器103进行进一步的解释。AVFS控制器通过传感器实时测量检测数据决定系统的供电电压。
如图上所示,AVFS控制器103包括用于存储配置表1031的寄存器组、电压确定单元202和变频控制单元206以及用于测量检测数据的多个不同的传感器组件。
配置表1031包括多个频率,该多个频率限定了时钟频率的允许取值范围。AVFS控制器103上电启动后,从一次性可编程存储单元中读取得到该多个频率并存储到寄存器组中。
电压确定单元202根据传感器组件实时测量的检测数据和目标频率计算出供电电压的数值并根据供电电压生成调压信号REGV。
如图上所示,多个传感器组件有温度传感器组件、工艺传感器组件和电压传感器组件。温度传感器组件包括温度传感器控制器203和温度传感器206。工艺传感器组件包括工艺传感器控制器204和工艺传感器207。电压传感器组件包括电压传感器控制器205和电压传感器208。温度传感器206、工艺传感器207和电压传感器208分别采集片上系统100的实时温度、工艺偏差和实时电压的模拟信号,并将模拟信号转换为数字信号。温度传感器控制器203、工艺传感器控制器204和电压传感器控制器205分别控制温度传感器206、工艺传感器207和电压传感器208,例如控制传感器的启动和停止采集检测数据。温度传感器206、工艺传感器207和电压传感器208位于片上系统内部但是在AVFS控制器450之外,传感器控制器203-205位于在AVFS控制器450内部,并从温度传感器306、工艺传感器307和电压传感器308获取片上系统的实时温度、工艺偏差和实时电压并传送给电压确定单元202。
电压确定单元202可根据预定义的电压计算规则基于目标频率和系统100的实时温度以及工艺偏差计算出供电电压,或者先根据预定义的电压计算规则基于目标频率和系统100的实时温度计算出供电电压,再根据工艺偏差对供电电压做偏置。电压确定单元202还可以接收通过电压传感器208获得的实时电压,并将该实时电压与供电电压进行比对,以确定之前的调压操作是否成功。如果不成功,例如实时电压与供电电压的电压值差距过大,则可以在后续的电压计算中,相应地调整电压计算规则。
变频控制单元206根据目标频率生成调频信号REGF。该调频信号REGF被传送给时钟电路105以产生时钟信号FCPU。
此外,电压确定单元202还可在计算供电电压的数值之前,确定目标频率是否包含在配置表1031内的多个频率中,如果是,则确定该目标频率为合法数值,只有在目标频率为合法数值的情况下,电压确定单元202才根据目标频率计算供电电压的数值,同样,变频控制单元206只有在目标频率为合法数值的情况下,才根据目标频率生成调频信号REGF。
图3是一个示例性的DVFS控制器的结构示意图,用于对图1中的调频调压控制器103进行进一步的解释。DVFS控制器将目标频率与预存储的至少一个频率电压对中的每个频率电压对进行比对,当某个频率电压对中的频率与目标频率相符时,将对应的电压值取出作为目标电压,然后根据目标频率和目标电压分别调节系统的时钟频率和供电电压。应注意,预存储的频率电压对应为经过验证能够使片上系统100正常工作的频率电压对。
参考图上所示,寄存器F用于存储目标频率。寄存器组F-V用于存储多个频率电压对。多个比较器303用于将寄存器F中的目标频率与寄存器组F-V中的频率电压对比对,如果相符,则由电压生成单元302生成调压信号REGV,且由变频生成单元301生成调频信号FCPU,错误检测单元304如果检测到目标频率与任意一个频率电压对中的频率都不相符,则由中断生成单元305、复位生成单元306或总线响应单元307生成中断信号SINT、复位信号RESET或总线错误信号SBUS。中断信号SINT由中断控制器(图上未示出)处理。中断控制器可设置在处理单元101中,中断控制器定义了针对各种不同中断信号的各种处理例程,当相应的中断信号发生时,相应的处理例程被启动进行相应的处理。复位信号RESET会发送给复位电路(未示出),复位电路将片上系统进行复位后重启。总线错误信号SBUS会被发送给总线102处理。
本公开实施例提供的时钟电路
在上述片上系统中,时钟电路105根据调频信号产生时钟信号。但是正如背景技术中所述,时钟电路105在升频时,如果频率突变跨度太大会引起负载功耗突然增加,将会导致供电电压被拉低,进而导致系统出错。
为了解决这一问题,本公开实施例提供一个如图4a所示的时钟电路400。该时钟电路可取代图1中的时钟电路105。
参考图4a所示,时钟电路400包括时钟控制单元401、时钟源电路402和403、第一分频器1-1至第N分频器1-N、第一分频器2-1至第N分频器2-N、选择器404至405、选择器406。
其中,时钟控制单元401分别与时钟源电路402和403耦接,图上时钟控制单元401与时钟源电路402、403之间的连接线标记表示该连接线是一簇控制线而非单根控制线。时钟控制单元401可驱动时钟源电路402和403。时钟源电路402分别与选择器404的输入端I00、第一分频器1-1至第N分频器1-N耦接,时钟源电路402将产生的时钟信号CLK1分别提供给选择器404的输入端I00以及第一分频器1-1至第N分频器1-N。时钟源电路403分别与选择器405的输入端I10、第一分频器2-1至第N分频器2-N耦接,时钟源电路403将产生的时钟信号CLK2分别提供给选择器405的输入端I10以及第一分频器2-1至第N分频器2-N。选择器404的控制端从时钟控制单元401接收控制信号CTRL1。选择器405的控制端从时钟控制单元401接收控制信号CTRL2。选择器404的输出端OUT_0与选择器406的输入端I20耦接,选择器405的输出端OUT_1与选择器406的输入端I21耦接。选择器406从时钟控制单元401接收控制信号CTRL3。
在本实施例中,第一组分频器包括第一分频器1-1至第N分频器1-N,第二组分频器包括第一分频器2-1至第N分频器2-N,但第一组分频器和第二组分频器是可以具有不同数量的分频器的,而且当第一组分频器和第二组分频器具有相同数量的分频器时,两个组还可以具有不同分频因数的分频器。
在本实施例中,基于时钟电路400的电路结构,时钟控制单元401根据目标频率确定控制信号CRTL1至CRTL3,用于控制选择器404、405以及选择器406从多个输入选出一个输入作为输出,以实现在输出端OUT_2输出具有目标频率的时钟信号FCPU。
此外,基于本实施例,申请人意识到,可以将与时钟源电路402和403耦接的分频器设计为奇数个分频器,其分频因数依次为2n,n分别等于1、2、3、……、N,N是大于1的奇数,而且,选择器404和405可采用两路选择器实现,两路优选为时钟电路常用的两路时钟选择器,它是数字电路中无毛刺的时钟切换电路(glitch_free clk_switch)。
图4b是本公开实施例提供的另一时钟电路450。该时钟电路450就是采用分频因数依次为2n的分频器的具体实现。
如图上所示,时钟电路450包括时钟控制单元451、时钟源电路452和453、二分频器4531、四分频器4532、八分频器4533、二分频器4534、四分频器4535、八分频器4536、两路选择器S01至S04、S11和S12以及两路选择器S21。
其中,时钟控制单元451分别与时钟源电路452和453耦接,图上时钟控制单元451与时钟源电路452、453之间的连接线标记表示该连接线是一簇控制线而非单根控制线。时钟控制单元451可启动和关闭时钟源电路452和453。时钟源电路452分别与选择器S1的输入端I0、二分频器4531、四分频器4532、和八分频器4533耦接,时钟源电路452将产生的时钟信号CLK1分别提供给选择器S1的输入端I0以及二分频器4531、四分频器4532和八分频器4533。时钟源电路453分别与选择器S3的输入端I4、二分频器4534、四分频器4535、八分频器4536耦接,时钟源电路453将产生的时钟信号CLK2分别提供给S3的输入端I4、二分频器4534、四分频器4535和八分频器4536。选择器S1具有输入端I0和I1并分别与时钟源电路452和二分频器4531耦接,输出端P0与选择器S5的输入端I8耦接,控制端从时钟控制单元451接收控制信号pll0_sw0[0]。选择器S2具有输入端I2和I3分别与四分频器4532和八分频器4533耦接,输出端P1与选择器S5的输入端I9耦接,控制端从时钟控制单元451接收控制信号pll0_sw0[1]。选择器S3具有输入端I4和I5分别与时钟源电路453和二分频器4534耦接,输出端P3与选择器S6的输入端I10耦接,控制端从时钟控制单元451接收控制信号pll1_sw0[0]。选择器S4具有输入端I6和I7分别与四分频器4535和八分频器4536耦接,输出P4与选择器S6的输入端I11耦接,控制端从时钟控制单元451接收控制信号pll1_sw0[1]。选择器S5的输出端P5与选择器S7的输入端I12耦接,控制端从时钟控制单元451接收控制信号pll0_sw1。选择器S6的输出端P6与选择器S7的输入端I13耦接,控制端从时钟控制单元451接收控制信号pll1_sw1。选择器S7的控制端从时钟控制单元451接收控制信号pll_sw,输出时钟信号FCPU。
参考图上,图上虚框454包含的两级的两路选择器组合相当于图4a中的选择器404,虚框455包含的两级的两路选择器组合相当于图4a中的选择器405。应理解的是,图4a和4b的选择器设计都是示例,本公开实施例并不受限于此。此外,需要注意的是,图4b中使用的各个选择器优选为时钟电路常用的两路时钟选择器,它是数字电路中无毛刺的时钟切换电路(glitch_free clk_switch)。
基于上述时钟电路的时钟结构,可通过控制提供给各个选择器的控制信号来实现在升频操作时将时钟信号逐步升频到目标频率,在降频操作时,直接降低到目标频率。
下面基于时钟电路450具体介绍如何进行降频和升频操作。首先应该指出的是,在调频操作中,为了安全起见,目标频率通常从已经验证过的、可使处理器正常工作的多个设定频率中选出。为此,我们首先设置一个表格1,用于表征包含多个设定频率的频率配置信息。
表格1
参考表格1,其中,non_fix_freq_flag表示该频率档位是否处于固定分频点上(0:固定分频点;1:非固定分频点)。固定分频点是指那些具有2的倍数的关系的频率点,图上固定频点为:250MHz,500MHz(250MHz*2),1000MHz(250MHz*4),2000MHz(250MHz*8)。
参考图4b所示,pll0_sw0[0]和pll1_sw0[0]用于表征向选择器S1和S3提供控制信号的方式,pll0_sw0[0]和pll1_sw0[0]用于表征向选择器S2和S4提供控制信号的方式,其中,两个比特为‘11’表示提供的控制信号为‘1’,两个比特为‘00’表示提供的控制信号为’0’,当两个比特为‘01’或‘10’时,表示保持控制信号不变。pll0_sw1和pll1_sw1表示提供S5和S6的控制信号,pll_sw提供给S7的控制信号。对于pll_sw,如果要切换时钟源电路,则将pll_sw取反,否则保持。
参考图4b所示,图4b中使用的选择器都是两路选择器,两个输入端采用‘0’和‘1’表示,当控制信号为‘0’时,则经由输入端‘0’的输入信号会被输出,当控制信号为‘1’,则经由输入端‘1’的输入信号会被输出。
下面基于图4b和表格1先介绍降频操作。降频操作可分为以下三种情况:
一、目标频率属于non_fix_freq_flag=1而当前频率属于non_fix_freq_flag=0或者等于1。
例如,假设当前频率为1000MHz,频档为3,其对应的non_fix_freq_flag=0,产生当前频率为时钟源电路453,即当前处于工作状态的时钟源电路为时钟源电路453,目标频率为750MHz,按照表格1的频档1对应的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,pll0_sw1和pll1_sw1赋值为0,pll_sw取反(如果pll_sw原值为0,则变为1,如果原值为1,则变为0)。其对应的流程描述如下:参见图4b,时钟源电路452产生一个频率为750MHz的时钟信号CLK1,CLK1经由输入端I0到达选择器S1,S1接收到的控制信号pll0_sw0[0]=0,则CLK1从S1的输入端I0输入,从输出端P0输出,然后经过S5的输入端I8输入,从输出端P5输出,pll_sw取反,因此,CLK1会经由S7的输入端I12输入,输出端P7输出。
再例如,假设当前频率为1250MHz,频档为4,其对应的non_fix_freq_flag=1,产生当前频率为时钟源电路453,即当前处于工作状态的时钟源电路为时钟源电路453,目标频率为750MHz,其对应的non_fix_freq_flag=1,按照表格1对应的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,pll0_sw1和pll1_sw1赋值为0,pll_sw取反(如果pll_sw原值为0,则变为1,如果原值为1,则变为0)。其对应的流程描述如下:参见图4b,时钟源电路452产生一个频率为1250MHz的时钟信号CLK1,CLK1经由输入端I0到达选择器S1,S1接收到的控制信号pll0_sw0[0]=0,则CLK1从S1的输入端I0输入,从输出端P0输出,然后经过S5的输入端I8输入,从输出端P5输出,由于pll_sw取反,因此,CLK1会经由S7的输入端I12输入,输出端P7输出。
二、目标频率属于non_fix_freq_flag=0&&当前频率的non_fix_freq_flag=0,这种情况下,按照上表调整提供给选择器的控制信号。
例如,假设当前频率为1000MHz,频档为3,其对应的non_fix_freq_flag=0,时钟源电路452产生频率为2000MHz的时钟信号CLK1,经过二分频器4531在输出端P7输出1000MHz的时钟信号FCPU,当要降频到目标频率为250MHz,其对应的non_fix_freq_flag=0,按照表格1的频档1对应的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]保持不变,pll0_sw0[1]和pll1_sw0[1]赋值为1,pll0_sw1和pll1_sw1赋值为1,pll_sw保持不变。其对应的流程描述如下:参见图4b,由于pll0_sw0[1]为1,因此,八分频器4533分频后的时钟信号经过S2的输入端I3输入,经过P1输出,然后,该信号经过S5的输入端I9输入,输出端P5输出,最终,经过选择器S7的输入端I12输入和输出端P7输出,最终在输出端P7得到250MHz的时钟信号FCPU。
三、目标频率属于non_fix_freq_flag=0&&当前频率的non_fix_freq_flag=1,这种情况下,按照上表调整提供给选择器的控制信号。
例如,假设当前频率为1000MHz,频档为3,其对应的non_fix_freq_flag=0,时钟源电路452产生频率为2000MHz的时钟信号CLK1,经过二分频器4531在输出端P7输出1000MHz的时钟信号FCPU,当要降频到目标频率为750MHz,其对应的non_fix_freq_flag=1,按照表格1的频档1对应的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,pll0_sw1和pll1_sw1赋值为0,pll_sw取反。其对应的流程描述如下:参见图4b,假设时钟源电路452产生频率为2000MHz的时钟信号CLK1,并最终在输出端P7输出1000MHz的时钟信号FCPU,当要降频到750MHz时,驱动时钟源电路453产生一个频率为750MHz的时钟信号CLK2,由于pll1_sw0[0]=0,pll1_sw1=0,则CLK2从S3的输入端I4输入,从输出端P3输出,然后经过S6的输入端I10输入,从输出端P6输出,由于pll_sw取反,因此,CLK2会经由S7的输入端I13输入,输出端P7输出。
可见,在各种情况下只要按照上表设置控制信号,最终时钟电路450都输出了具有目标频率的时钟信号。应该理解的是,在表格1中没有示出pll_sw的取值,但基于示例能够理解,pll_sw用于表征是否切换时钟源电路,如果切换,则将pll_sw取反,如果不切换,则保持pll_sw不变即可。由于时钟电路450中包含两路时钟源电路,最终输出的时钟信号FCPU,为了区分,将输出最终的时钟信号的时钟源电路称为处于工作状态的时钟源电路,将另一路时钟源电路称为处于空闲状态的时钟源电路。所述切换时钟电路就是意味着将处于空闲状态的时钟源电路切换为处于工作状态的时钟源电路,反之亦然。
对于升频操作,同样可基于表格1进行升频。但是对于升频操作,如果目标频率和当前频率相差太大,为了避免信号突变,还可以按照表格1逐步升频,例如,当前频率对应的频档为3,而目标频率对应的频档为8,则可按照3—>4—>5—>6—>7—>8的顺序升频到目标频率。
举例说明。假设目标频率为750MHz,当前频率为250Mhz,当前处于工作状态的时钟源电路为时钟源电路453,则首先要升频到500MHz再升频到750MHz,具体操作为:根据表1,先根据频档1的记录进行赋值:即pll0_sw0[0]和pll1_sw0[0]保持不变,pll0_sw0[1]和pll1_sw0[1]赋值为0,将pll0_sw1和pll1_sw1赋值为1,pll_sw保持不变。赋值完成之后,时钟电路450将输出500MHz的时钟信号FCPU。可将500MHz的时钟信号FCPU保持一段时间。然后再驱动时钟源电路452生成频率为750MHz的时钟信号CLK1,然后根据频档2的记录进行赋值:即pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,将pll0_sw1和pll1_sw1赋值为1,pll_sw取反。赋值完成之后,时钟电路450将输出750MHz的时钟信号FCPU。
基于上述分析和示例,申请人总结出,如果时钟电路仅输出若干个固定的设定频率的时钟信号,则可首先分析这些设定频率之间的比例关系(例如可表示为2n),然后根据这些比例关系和表结构设计配置表,最终形成如表1所示的频率配置表,并存储在时钟电路的时钟控制单元中或其他地方(例如调频调压控制器)中,然后当时钟电路工作时,时钟控制单元可查表生成控制信号,以实现升频和降频,同时为了避免时钟信号突变,在利用查表进行升频时,当发现当前频率和目标频率差距过大时,还可以从当前频率经由其他频点到达目标频率,其他频点即是频率配置表中当前频率和目标频率之间间隔的那些频率。
但值得注意的是,时钟电路的电路结构和频率配置表紧密相关,当电路结构发生变化时,频率配置表也要适应性地修改。例如基于图4b的时钟电路,如果另外增加16路分频器和32路分频器与时钟源电路452耦接,则电路就需要增加俩个二路选择器,而相应地,频率配置表的数据也要修改。
在一些情况下,虽然时钟电路同样仅输出若干个固定的设定频率的时钟信号,但是这些设定频率之间找不到可量化的比例关系(即这些固定频率的non_fix_freq_flag都是1,都处于非固定分频点上),但此时仍旧可以建立起类似表格1所示的频率配置表,并基于查表进行升频和降频的。表格2是这种情况下的一个频率配置表的示例。
表格2
根据图4b给出的电路结构,利用表格2同样能够对控制信号进行赋值,以达到升频和降频的目的。
例如,当升频时,假设目标频率为440MHz,当前频率为310Mhz,当前处于工作状态的时钟源电路为时钟源电路453,则首先要升频到385MHz再升频到440MHz,具体操作为:根据表2,先驱动时钟源电路452产生频率为385MHz的时钟信号CLK1,然后根据频档4的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,将pll0_sw1和pll1_sw1赋值为0,pll_sw取反。赋值完成之后,时钟电路450输出385MHz的时钟信号FCPU。可将385MHz的时钟信号FCPU保持一段时间。然后驱动时钟源电路453产生频率为440MHz的时钟信号CLK2,再根据频档5的记录进行赋值:即pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,将pll0_sw1和pll1_sw1赋值为0,pll_sw取反。赋值完成之后,时钟电路450将输出440MHz的时钟信号FCPU。
例如,当降频时,假设目标频率为440MHz,当前频率为500Mhz,当前处于工作状态的时钟源电路为时钟源电路453,则具体操作为:首先要在时钟电路中产生一个频率为440MHz的时钟频率,因此先驱动时钟源电路452生成一个频率为440MHz的时钟频率CLK1,然后根据表2,根据频档4的记录进行赋值:即将pll0_sw0[0]和pll1_sw0[0]赋值为0,pll0_sw0[1]和pll1_sw0[1]保持不变,将pll0_sw1和pll1_sw1赋值为0,pll_sw取反。赋值完成之后,时钟电路450输出440MHz的时钟信号FCPU。
综上可见,本公开实施例提供了一种基于频率配置表实现动态频率调节的装置,该装置控制两个时钟源电路的频率输出以及多级选择器的切换来实现AVFS或DVFS系统中不同频率的快速切换。而且由于频率配置表是可以任意配置的,因此可通过修改频率配置表内记录来适应不同系统的调频需求。
片上系统的具体应用
图5示出了本公开实施例所应用的通用的计算机体系结构。如图上所示,计算机系统500可以包括一个或多个处理器12,以及存储器14。其中,上述实施例提供的片上系统可用作处理器12。
计算机系统500中的存储器14可以主存储器(简称为主存或内存)。用于存储由数据信号表示的指令信息和/或数据信息,例如存放处理器12提供的数据(例如为运算结果),也可以用于实现处理器12与外部存储设备16(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,处理器12可能需要访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理器12与存储器14之间的速度差距,计算机系统500还包括与总线11耦合的高速缓冲存储器18,高速缓冲存储器18用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器18例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器18可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器18的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器12内部或与处理器12集成于同一片上系统中。
基于此,处理器12可以包括指令执行单元121、内存管理单元122等部分。指令执行单元121在执行一些需要修改内存的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址;内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
存储器14和高速缓冲存储器18之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器18和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器18和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器18中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器18无法对存储器14中的全部内容都进行缓存,即高速缓冲存储器18的存储容量通常小于存储器14,高速缓冲存储器18提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。处理器12在需要访问内存时,首先经总线11访问高速缓冲存储器18,以判断所要访问的内容是否已被存储于高速缓冲存储器18中,如果是,则高速缓冲存储器18命中,此时处理器12直接从高速缓冲存储器18中调用所要访问的内容;如果处理器12需要访问的内容不在高速缓冲存储器18中,则高速缓冲存储器18,处理器12需要经总线11访问存储器14,以在存储器14中查找相应的信息。因为高速缓冲存储器18的存取速率非常快,因此当高速缓冲存储器18命中时,处理器12的效率可以显著提高,进而也使整个计算机系统500的性能和效率得以提升。
此外,计算机系统500还可以包括存储设备16、显示设备13、音频设备19、鼠标/键盘15等输入/输出设备。存储设备16例如是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备13例如经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
计算机系统500通常还包括通信设备17,因此可以通过各种方式与网络或其他设备通信。通信设备17例如可以包括一种或多种通信模块,作为示例,通信设备17可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备17可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的602.11标准的Wi-FiTM通信;通信设备17也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备17还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备17也可以是用于串行传输数据的端口。
当然,不同的计算机系统根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。例如目前很多计算机系统设置有连接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理器12之内或独立于处理器12。
图6是本公开实施例所应用的嵌入式系统的结构图。上述实施例提供的片上系统可用作处理器601。
虽然嵌入式系统在硬件结构上与计算机系统具有高度相似性,但是嵌入式系统应用上的特点致使嵌入式系统在硬件的组成和实现形式上与通用计算机系统又有较大区别。
首先,为满足嵌入式系统600在速度、体积和功耗上的要求,操作系统、应用软件、特殊数据等需要长期保存的数据,通常不使用磁盘这类具有大容量且速度较慢的存储介质,而大多使用随机存储器602或闪存(Flash Memory)603。
另外,在嵌入式系统600中,需要A/D(模拟/数字转换)接口605和串行接口606,用于测控的需要,这在通用计算机中用得很少。A/D接口605主要完成测试中所需要的模拟信号到数字信号的转换、和数字信号到模拟信号的转换。嵌入式系统600应用于工业生产时经常需要测试。由于单片机产生的是数字信号,在测试时需要转换成模拟信号用于测试,因此,与通用计算机不同,需要A/D(模拟/数字转换)接口605完成相关转换。另外,工业中经常需要多个嵌入式系统串接在一起,完成相关功能,因此需要用于将多个嵌入式系统串联的串行接口606,而在通用计算机中则大多不需要。
另外,嵌入式系统600作为一个基本的处理单元,常常在工业设计中需要将多个嵌入式系统600联成网络,因此需要将嵌入式系统600联入网络的网络接口607。这在通用计算机中大多也不需要。此外,根据实际应用和规模的不同,有些嵌入式系统600要采用外部总线604。随着嵌入式系统600应用领域的迅速扩张,嵌入式系统600越来越趋于个性化,根据自身特点采用总线的种类也越来越多。另外,为了对嵌入式处理器601内部电路进行测试,处理器芯片普遍采用了边界扫描测试技术。为了适应该测试,采用了调试接口608。
随着超大规模集成电路(Very Large Scale Integration)和半导体工艺的迅速发展,上述的嵌入式系统的部分或者全部可实现在一个硅片上,即为嵌入式片上系统(SoC)。
本公开实施例的商业价值
本公开实施例提供的时钟电路可应用于基于AVFS或DVFS的片上系统,该时钟电路包括与两路时钟电源分别耦接的第一组分频器和第二组分频器以及与第一组分频器和第二组分频器分别耦接的第一选择单元和第二选择单元,通过控制向第一选择单元和第二选择单元提供的控制信号,能够实现从不同分频器输出时钟信号,从而能够获得目标频率的时钟信号,并且,还可以通过控制向第一选择单元和第二选择单元提供的控制信号,使时钟信号在达到目标频率之前经过其他频点,以解决由于升频时频率突变造成电压突变进而导致的供电电压被拉低的问题。
由此得到的片上系统可用于形成多种场景使用的计算装置,例如数据中心数量庞大的云服务器,在此场景下,通过降低处理器的功耗从而降低每个云服务器的功耗,进而降低每个云服务器和整个数据中心的运行成本;再例如,日常生活中使用的电子设备,包括诸如笔记本和手机等终端设备以及某些消费型电子产品,通过降低功耗来提高电子设备的系统续航时间,从而提升用户体验。由此可见,本公开实施例的时钟电路、片上系统以及由该片上系统构建的计算装置在具有实用价值的基础上,具备了商业价值和经济价值。
需要领会,以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。文中使用第一和第二(例如第一入口地址和第二入口地址)仅用于区分不同目标,而不是两者之间存在等级或重要性等方面上的区分,例如本文中的第一入口地址是指安全函数的入口地址,第二入口地址则指示调用安全函数的函数的入口地址。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。