优化芯片动态功耗的方法及芯片、电子设备和计算设备与流程
未命名
10-08
阅读:357
评论:0
1.本发明涉及芯片技术领域,具体涉及一种优化芯片动态功耗的方法及芯片、电子设备和计算设备。
背景技术:
2.随着半导体工艺的快速发展,数字芯片的电路集成度越来越高。但是,电路集成度的提高将导致芯片的功耗急剧增加,芯片的工作频率越来越高,导致芯片的功耗越来越大,从而影响芯片性能。功耗是衡量一款芯片优劣的重要指标之一,芯片功耗的增加对电子设备的续航能力有较大影响。当前,低功耗设计已经作为芯片设计的重要组成部分。
3.芯片功耗从原理上区分主要有两大类:静态功耗(static power)和动态功耗(dynamic power)。动态功耗,主要是由于信号的翻转从而导致器件内部的寄生阻容rc充放电引起的,而静态功耗则是由器件在通电状态下的泄漏电流(leakage current)引起的。
4.为了节约动态功耗,现有技术都是为某一专用芯片或场景提供低功耗的方案,扩展性较弱,无法用于某些独立设备,并且依赖于外部控制,不能通过硬件进行自动化处理。还有一些普遍的做法是采用时钟门控技术。当前大规模集成电路基本都是时序电路,时序电路通常使用触发器来实现,触发器之间的信号传递通过时钟信号来控制。由于时钟信号周期性的翻转,时钟网络庞大的负载会造成较大的动态功耗。在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它们不用的时候将其时钟信号关闭,这样一来信号不再翻转,从而能够有效减少动态功耗。
5.时钟门控单元虽然可以有效地降低时钟翻转产生的动态功耗,但本身就会引入新的动态功耗和静态功耗,并且对寄存器数据输入端的功耗也有影响。因此,需要不断探索优化芯片动态功耗的方法。
技术实现要素:
6.本技术旨在提供用于优化芯片动态功耗的方法和电子设备,能够简单有效的降低芯片的动态功耗。
7.根据本技术的一方面,一种优化芯片动态功耗的方法包括为芯片的第一寄存器阵列设置第一虚拟时钟门控单元,计算由于所述第一虚拟时钟门控单元导致的功耗变化量,将所述功耗变化量输入对比函数,根据所述对比函数的输出结果,确定是否为所述第一寄存器阵列插入实际的时钟门控单元。
8.根据一些实施例,计算由于所述第一虚拟时钟门控单元导致的功耗变化量包括获取所述第一寄存器阵列和所述第一虚拟时钟门控单元的时钟信号、使能信号和数据信号的翻转率及静态概率,根据所述翻转率和所述静态概率,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗,计算所述第一虚拟时钟门控单元的总功耗,根据所述第一寄存器阵列通过时钟门控降低的功耗及所述第一虚拟时钟门控单元的总功耗计算第一功耗变化量。
9.根据一些实施例,计算由于所述第一虚拟时钟门控单元导致的功耗变化量,还包括计算所述第一寄存器阵列的数据端口增加的功耗,计算删除多路选择器阵列降低的功耗,根据所述第一功耗变化量、所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗计算第二功耗变化量。
10.根据一些实施例,获取各信号的翻转率及静态概率包括获取用户设定的寄存器控制信号、数据信号的翻转率及静态概率。
11.根据一些实施例,获取各信号的翻转率及静态概率包括从仿真生成的文件中提取信号的翻转率及静态概率。
12.根据一些实施例,计算所述第一虚拟时钟门控单元的总功耗包括对所述第一虚拟时钟门控单元的静态功耗和动态功耗求和,其中所述第一虚拟时钟门控单元的动态功耗通过累加所述第一时钟端口单次翻转的功耗与相应时钟端口的翻转率的乘积、使能端口单次翻转的功耗与使能端口的翻转率的乘积,以及时钟端口到输出端口路径的单次翻转功耗与时钟端口的翻转率和使能端口状态1的概率的乘积。
13.根据一些实施例,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗包括累加所述第一虚拟时钟门控单元控制的各个寄存器时钟端口的功耗变化,其中,每个寄存器时钟端口的功耗变化为所述时钟端口单次翻转功耗与所述时钟端口到输出端口的路径单次翻转功耗的和、插入所述第一时钟门控单元前所述时钟端口的翻转率、及使能信号真值状态的概率减去1得到的差值三者之间的乘积。
14.根据一些实施例,计算所述第一寄存器阵列的数据端口增加的功耗包括累加由所述第一虚拟时钟门控单元控制的各个寄存器数据端口增加的功耗,其中,每个寄存器数据端口增加的功耗为每个数据端口单次翻转的功耗、1减去使能信号真值状态的静态概率得到的差值、及数据信号的翻转率三者之间的乘积。
15.根据一些实施例,计算删除多路选择器阵列降低的功耗包括计算所述多路选择器阵列的功耗并取负值,所述多路选择器阵列的功耗由所述第一虚拟时钟门控单元控制的寄存器所需要的各多路选择器的功耗累加得出,单个多路选择器的功耗由静态功耗和动态功耗相加得出,其中单个多路选择器的静态功耗通过查表获得,单个多路选择器的动态功耗由其数据输入端口、寄存器反馈输入端口、选择端口以及所述数据输入端口、所述寄存器反馈输入端口、所述选择端口分别到输出端口的路径功耗累加获得。
16.根据一些实施例,所述对比函数设置为将所述功耗变化量与设定阈值进行比较。
17.根据一些实施例,所述设定阈值为预先设定的实数值,或者所述设定阈值为单个寄存器时钟端口功耗的预定比例值。
18.根据一些实施例,所述方法还包括通过所述对比函数对忽略的所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗进行补偿。
19.根据本技术的另一方面,提供一种芯片,包括第一寄存器阵列和第二寄存器阵列,为所述第一寄存器阵列设置的第一时钟门控单元,其中所述第二寄存器阵列未设置相应的时钟门控单元,且由于所述第一时钟门控单元导致的功耗变化量低于设定阈值。
20.根据本技术的另一方面,提供一种电子设备,所述电子设备包括上述芯片。
21.根据本技术的另一方面,提供一种计算设备,包括处理器,以及存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述
的方法。
22.根据本技术的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法。
23.时钟门控单元虽然可以有效地降低时钟翻转产生的动态功耗,但其本身会引入新的动态功耗和静态功耗,并且对寄存器数据输入端的功耗也有影响。现有技术一般是通过判断寄存器阵列的最小宽度是否大于特定值,来决策是否要插入时钟门控单元。然而,通过判断寄存器阵列的最小宽度来衡量是否有效降低功耗是比较粗糙的,不能准确地判断使用时钟门控技术是否能降低功耗。根据本技术实施例,计算插入虚拟时钟门控单元后的功耗变化,结合对比函数的输出来决策是否插入真实的时钟门控单元,能更为精确地分析出插入时钟门控单元的收益和代价,从而更有效地降低实际工作场景的功耗。此外,根据一些实施例,根据所述翻转率和静态概率,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗、所述第一虚拟时钟门控单元的总功耗,根据所述第一寄存器阵列通过时钟门控降低的功耗及所述第一虚拟时钟门控单元的总功耗计算第一功耗变化量,更能准确的判断芯片的实际工作情况,针对性更好,可行性更强,从而可以准确地判断使用时钟门控技术是否能降低功耗并进行时钟门控单元的使用决策。
24.根据一些实施例,考虑到数据端口的功耗变化占比较小,在计算由于所述第一虚拟时钟门控单元导致的功耗变化量时,可忽略第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗,从而简化和加快计算,节约计算成本。另外,可通过所述对比函数对忽略的所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗进行补偿,例如改变对比函数的设定阈值,从而在简化计算的同时减少对计算结果的影响。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本技术。
附图说明
26.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
27.图1a示出现有技术中未使用时钟门控单元的电路结构示意图。
28.图1b示出现有技术中使用时钟门控单元的电路结构示意图。
29.图1c示出使用时钟门控单元后的信号时序图。
30.图2示出本技术示例实施例涉及的计算相关电路单元的功耗的组成框图。
31.图3示出根据示例实施例的优化芯片动态功耗的方法流程图。
32.图4示出根据示例实施例基于翻转率插入门控时钟的决策方法流程图。
33.图5示出根据本技术示例实施例的计算设备的框图。
具体实施方式
34.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本技术将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示
相同或类似的部分,因而将省略对它们的重复描述。
35.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
36.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
37.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
38.应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本技术概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
39.本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
40.本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本技术所必须的,因此不能用于限制本技术的保护范围。
41.功耗的本质是能量耗散,由能量守恒定律可知,能量只能从一种形式转成另一种形式,能量总量不变。芯片耗散的电能主要转化成热能。如果芯片的功耗过大,则容易导致工作时温度过高,造成功能失效,甚至晶体管失效。因此,减小芯片功耗是很重要的一个任务,静态功耗以及动态功耗是两个主要的功耗源。动态功耗主要是由于信号的翻转,而静态功耗则是。
42.静态功耗(static power),由器件在通电状态下的泄漏电流引起的,是电路状态稳定时的功耗,其数量级很小。
43.动态功耗(dynamic power),是指电容充放电功耗和短路功耗, 从而导致器件内部的寄生rc充放电引起的,是由电路的翻转造成的泄漏电流(leakage current),是指在没有故障的情况,流入大地或电路中外部导电部分的电流。
44.rc耦合寄生效应,是指在电路中,由于元件之间的电容耦合而产生的意外的效应,耦合寄生效应主要表现在信号传输过程中,其中的一个信号可能会通过电容耦合到另一个信号上,从而引起干扰或改变原本的信号波形。
45.下面结合附图对本技术的示例实施例进行说明。
46.现有技术一般是通过判断寄存器阵列的最小宽度是否大于特定值来决策是否要插入时钟门控单元。
47.图1a示出现有技术中未使用时钟门控单元的电路结构示意图。
48.参见图1a,未使用时钟门控单元的电路结构示例可包括触发器101、逻辑控制电路103、多路选择器阵列105和寄存器阵列107。时钟信号clk输入至触发器101和寄存器阵列107,逻辑控制电路103输出使能信号en至多路选择器阵列105,多路选择器阵列105的输出端连接至寄存器阵列107的输入端口d。当使能信号en有效时,寄存器锁存输入信号in,否则在输出端口q保持输出信号out。这种结构中,寄存器配置有多路选择器,面积增加,整体的功耗也会增加,而且不能消除时钟树上的功耗。
49.图1b示出现有技术中使用时钟门控单元的电路结构示意图。
50.参见图1b,所述时钟门控单元的电路结构示例可包括触发器101、逻辑控制电路103、时钟门控单元、以及寄存器阵列107,该时钟门控单元包括低电平有效锁存器104和与门106。所述低电平有效的锁存器104和与门106组合的时钟门控单元增加在逻辑控制电路103和寄存器阵列107之间。
51.参见图1b和图1c,锁存器104的使能端口ld输入使能信号en,当使能信号en使能后,由锁存器特性可知,若此时锁存器104的时钟端口lg输入时钟信号clk为低电平(c——l——k——为高电平),与门106第一输入端enl使能(锁存器104的输出端口lq输出与使能一致),若此时时钟信号clk为高电平则需等时钟下降沿,与门106第一输入端enl才使能。根据与门特性可知,enl使能后寄存器阵列107的时钟信号enclk波形与时钟信号clk一致,寄存器阵列107锁存各自输入端口d输入信号in。当使能信号en不使能后,由锁存器特性可知,若此时锁存器104的时钟端口lg输入时钟信号clk为低电平,与门106第一输入端enl不使能,若此时时钟信号clk为高电平则需等时钟下降沿,与门106第一输入端enl才不使能。根据与门特性可知,enl不使能后寄存器阵列107的时钟信号enclk保持低电平不翻转,寄存器阵列107保持各自输出端口q输入信号out。锁存器104在这里的作用是滤除使能信号的毛刺。
52.如前述示例所示,时钟门控单元一般以与门(and gate)或者是或门(or gate)为功能单元,另外通常还会增加锁存器以用于去除毛刺。不管使用何种门控时钟单元,都不影响本发明的主旨。
53.时钟门控单元虽然可以有效地降低时钟翻转产生的动态功耗,但其本身会引入新的动态功耗和静态功耗,并且对寄存器数据输入端的功耗也有影响。现有技术一般是通过判断寄存器阵列的最小宽度是否大于特定值,来决策是否要插入时钟门控单元。
54.然而,从极端情况来说,当寄存器阵列需要一直开启,那么插入时钟门控单元可能会增加功耗。另一方面,即使是一个孤立的寄存器,如果长期不需要改变其锁存值,那么为其单独插入一个时钟门控单元可能也能降低功耗。因此,通过判断寄存器阵列的最小宽度来衡量是否有效降低功耗是比较粗糙的,不能准确地判断使用时钟门控技术是否能降低功耗。
55.因此,本技术提出一种方案,计算插入虚拟时钟门控单元后的功耗变化,通过对比函数的输出来决策是否插入真实的时钟门控单元。
56.图2示出本技术示例实施例涉及的计算相关电路单元的功耗的组成框图。
57.参见图2,本技术示例实施例涉及的计算相关电路单元的功耗的功能组成包括翻转率及静态概率获取模块201、内部功耗计算模块203、开关功耗计算模块205、静态功耗计
算模块207。
58.参见图2,在获取信号翻转率及静态概率后,计算插入虚拟时钟门控单元后的功耗变化,通过对比函数的输出来决策是否插入真实的时钟门控单元。
59.翻转率及静态概率获取模块201可以通过用户设定寄存器控制信号、数据信号的翻转率及静态概率来模拟真实工作场景,从而获取翻转率及静态概率。或者,翻转率及静态概率获取模块201可以从仿真生成的文件中提取信号翻转率及静态概率。
60.储存信号翻转率及静态概率的文件格式可以是saif(switching activity interchange format)。它可以直接从仿真环境中写出,或者通过vcd2saif这种小工具从vcd(value change dump)文件转换而来。saif主要包含翻转计数和时间信息,如信号在1状态(t1), 0状态(t0), x状态(tx)的时间。假设test_clk,、test_ctrl、test_data分别是rtl代码里测试数据(test_data)寄存器的时钟信号、使能信号、数据信号,一个saif文件片段如下:(timescale 1 ps)(duration 104945000)(instance u_test(net(test_clk(t0 50472450) (t1 54472550) (tx 0)(tc 160230) (ig 0))(test_ctrl(t0 103395200) (t1 1549800) (tx 0)(tc 2460) (ig 0))(test_data(t0 88385000) (t1 16560000) (tx 0)(tc 10) (ig 0))))假设需要从上述saif片段提取使能信号test_ctrl的翻转率和静态概率,计算方式说明如下:此段仿真总时长为104945000ps,其中使能信号test_ctrl状态0的时长(t0)为103395200ps,状态1的时长(t1)为1549800ps, 翻转次数(tc)为2460,那么使能信号test_ctrl的翻转率和静态概率分别为:翻转率:2460/104945000ps = 23.44mhz;状态0概率:103395200ps/104945000ps = 0.985;状态1概率:1549800ps/104945000ps = 0.015。
61.如果不是通过从文件提取而是通过用户设定翻转率和静态概率,典型的方法如使
0.000226712, 0.000212842, 0.000222502", \"0.000225541, 0.000228269, 0.00022798, 0.000231549, 0.000235623, 0.000240669, 0.000251539, 0.000276523", \"0.000271296, 0.000270907, 0.000271825, 0.000272907, 0.000275795, 0.000275232, 0.00029051, 0.000321441" \);}fall_power (power_template_8x8) {index_1 ("0.0015, 0.0046, 0.0109, 0.0235, 0.0486, 0.0988, 0.1992, 0.4");index_2 ("0.00031, 0.00062, 0.00125, 0.00251, 0.00503, 0.01006, 0.02013, 0.04026");values ( \"0.000608696, 0.000616263, 0.000623592, 0.0006284, 0.000631524, 0.000632845, 0.00063343, 0.000633774", \"0.000602831, 0.000610185, 0.000618642, 0.000624777, 0.000627254, 0.000629369, 0.000629981, 0.000630769", \"0.000593333, 0.000599906, 0.000608405, 0.000615518, 0.000619444, 0.000621369, 0.000622796, 0.000623497", \"0.000581106, 0.000587082, 0.000594762, 0.000602427, 0.000608859, 0.000612962, 0.000614389, 0.000615237", \"0.000570565, 0.000575523, 0.000583163, 0.000592057, 0.000599904, 0.000604541, 0.000607839, 0.000609196", \"0.000566776, 0.000571578, 0.000577808, 0.000586011, 0.000594611, 0.00060141, 0.000605742, 0.000607962", \"0.000577985, 0.000580863, 0.000585855, 0.000593503, 0.000601745, 0.000610136, 0.000616626, 0.000619885", \"0.000614054, 0.000616144, 0.000619462, 0.000624965, 0.000632176, 0.000640281, 0.000648472, 0.000654089" \);}}...}以上面的表1为例,单元库中使用二维表格定义了a1端口(related_pin)到z端口的内部功耗internal power,索引分别是输入端口a1的转换时间和输出端口z的负载。假设a1的转换时间为0.0015,z的负载为0.00031,通过查表内插法得知单次上升功耗rise_power为0.000240927,而下降功耗fall_power为0.000608696。 假设a1的翻转率为10(每单位时间翻转10次),那么单元内部功耗cell_internal_power = 0.5*10*(0.000240927+
0.000608696) = 0.004248115。
65.如果这表格是带条件的,假设说when :
ꢀ“
a2”,那么只需要再乘以a2状态1的静态概率即可。
66.另外,不去计算transition和load而直接使用每个表格第一行第一列数字作为单次翻转的功耗来应用本发明也是一种合理的应用。
67.开关功耗计算模块205计算开关功耗p
switch
,其一般通过下面计算公式计算:其中,v
dd
是供电电压,为确定值;c
load
为负载电容,通过工具抽取已经是非常成熟的技术;tr是翻转率。另外,由于时钟门控对开关功耗net switching power的影响仅限于时钟门控单元、寄存器阵列、多路选择器阵列之间的连线功耗,这种影响相对单元内部功耗cell internal power来说在应用过程中也可以直接忽略。
68.关于静态功耗或泄漏功耗leakage power,一般标准单元库里包含了一个固定值,以及会包含不同条件下的值,这个固定值其实就是所有不同条件的静态功耗的平均数。在时钟门控插入决策阶段,只需要使用固定的静态功耗值评估即可。
69.图3示出根据示例实施例的优化芯片动态功耗的方法流程示意图。
70.参见图3,在s301,为芯片的第一寄存器阵列设置第一虚拟时钟门控单元。
71.在芯片设计阶段,先在芯片的第一寄存器阵列中设置一个虚拟时钟门控单元,进行仿真工作,模拟芯片正常工作状态。
72.此外,可通过用户设定寄存器控制信号、数据信号的翻转率及静态概率来模拟真实工作场景,或者从仿真生成的文件中提取信号翻转率及静态概率,以用于后续功耗计算。
73.在s303,计算由于所述第一虚拟时钟门控单元导致的功耗变化量。
74.由于插入第一虚拟时钟门控单元,相较于未插入所述第一虚拟时钟门控单元的情况,会引起部分器件的功耗变化。
75.根据一些实施例,涉及到的功耗变化可包括第一寄存器阵列的数据端口增加的功耗,第一虚拟时钟门控单元的总功耗,第一寄存器阵列通过所述第一虚拟时钟门控降低的功耗,删除多路选择器阵列降低的功耗。
76.根据一些实施例,获取各信号的翻转率及静态概率后,根据所述翻转率和所述静态概率,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗、所述第一虚拟时钟门控单元的总功耗。然后,可根据所述第一寄存器阵列通过时钟门控降低的功耗及所述第一虚拟时钟门控单元的总功耗计算第一功耗变化量。
77.根据一些实施例,还可计算所述第一寄存器阵列的数据端口增加的功耗、删除多路选择器阵列降低的功耗。然后,可根据所述第一功耗变化量、所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗计算第二功耗变化量。
78.根据实施例,计算所述第一虚拟时钟门控单元的总功耗可对虚拟时钟门控单元的静态功耗和动态功耗求和。例如,所述虚拟时钟门控单元的静态功耗通过查表获得。虚拟时钟门控单元的动态功耗可通过累加所述第一虚拟时钟门控单元的时钟端口和使能端口单次翻转的功耗与相应端口的翻转率的乘积、以及时钟端口到输出端口在标准库条件下的单次翻转功耗与时钟端口翻转率的乘积。
79.根据实施例,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗可累加所述第一虚拟时钟门控单元控制的各个寄存器时钟端口的功耗变化。每个寄存器时钟端口的功耗变化为所述时钟端口单次翻转功耗与所述时钟端口到输出端口的路径单次翻转功耗的和、插入所述第一时钟门控单元前所述时钟端口的翻转率、及使能信号真值状态的概率减去1得到的差值三者之间的乘积。
80.根据实施例,所述第一寄存器阵列的数据端口增加的功耗包括累加由所述第一虚拟时钟门控单元控制的各个寄存器数据端口增加的功耗。每个寄存器数据端口增加的功耗为每个数据端口单次翻转的功耗、1减去使能信号真值状态的静态概率得到的差值、及数据信号的翻转率三者之间的乘积。根据实施例,计算删除多路选择器阵列降低的功耗可通过计算所述多路选择器阵列的功耗并取负值完成。所述多路选择器阵列的功耗由所述第一虚拟时钟门控单元控制的寄存器所需要的各多路选择器的功耗累加得出,单个多路选择器的功耗由静态功耗和动态功耗相加得出。单个多路选择器的静态功耗通过查表获得,单个多路选择器的动态功耗由其数据输入端口、寄存器反馈输入端口、选择端口以及所述数据输入端口、所述寄存器反馈输入端口、所述选择端口分别到输出端口的路径功耗累加获得。
81.在s305,将所述功耗变化量输入对比函数。
82.对比函数将所述功耗变化量与设定阈值进行比较,所述设定阈值为预先设定的实数值或者所述设定阈值为单个寄存器时钟端口功耗的预定比例值。将所述功耗变化量输入对比函数,比较功耗变化量与设定阈值的大小,从而推断插入虚拟时钟门控单元是否能真正意义上上降低芯片功耗。
83.根据一些实施例,对比函数的基本判断是根据所有功耗变化之和,但是其设定阈值不需要固定成0。
84.另外,数据端口的功耗变化占比较小,在计算由于所述第一虚拟时钟门控单元导致的功耗变化量时,可忽略第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗。
85.根据一些实施例,可通过所述对比函数对忽略的所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗进行补偿,例如改变对比函数的设定阈值。
86.在s307,根据所述对比函数的输出结果,确定是否为所述第一寄存器阵列插入实际的时钟门控单元。
87.根据对比函数的比较结果,若所述功耗变化量之和大于对比函数设定的判断阈值,则证明在芯片的第一寄存器阵列设置的第一虚拟时钟门控单元没有起到降低功耗的作用,后续可不在第一寄存器阵列插入实际的时钟门控单元。若所述功耗变化量之和小于对比函数设定的判断阈值,则证明在芯片的第一寄存器阵列设置的第一虚拟时钟门控单元有效,可在后续实际工作中为所述第一寄存器阵列插入实际的时钟门控单元,以起到降低芯片功耗的作用。
88.图4示出根据另一示例实施例插入门控时钟单元的决策方法流程图。
89.在s401,获取各信号的翻转率及静态概率。
90.根据实施例,从文件saif (switching activity interchange format)或者从用户特定的命令例如set_switching_activity中读取寄存器阵列的各个数据信号的翻转率、静态概率及共同控制信号的翻转率、静态概率。
91.在s403,计算寄存器阵列通过时钟门控降低的功耗以及计算时钟门控单元的总功耗。
92.如前所述,计算功耗可先确定每个端口或者每条线的翻转率。
93.根据一些实施例,计算虚拟时钟门控降低的寄存器阵列功耗指的是计算寄存器时钟端口引起的动态功耗变化。如前所述,单个寄存器时钟端口单次翻转功耗pdffclks和时钟端口到输出端口的路径单次翻转功耗pdffqs可通过查表内插法获得。时钟端口的翻转率变化由使能信号静态概率决定,假设使能信号状态1概率是st1,时钟信号的翻转率为tclk,则单个寄存器时钟端口在插入时钟门控单元前翻转率为tclk,插入后翻转率为tclk*st1。
94.单个寄存器时钟端口的功耗变化为:pclkinc = (pdffclks+pdffqs)*tclk*st1-(pdffclks+pdffqs)*tclk= (pdffclks+pdffqs)*tclk*(st1-1)降低的寄存器阵列功耗可由同一虚拟时钟门控单元控制的寄存器时钟端口的功耗变化累加得出。
95.根据一些实施例,计算虚拟时钟门控单元的总功耗包括计算静态功耗和动态功耗。
96.如前所述,虚拟时钟门控单元的静态功耗pcgl可通过查表得知。
97.根据一些实施例,虚拟时钟门控单元的动态功耗pcgd一般考虑两个输入端口:时钟端口、使能端口,以及时钟端口到输出端口路径。时钟端口和使能端口单次翻转的功耗通过查表内插法算出,假设为pcgclks,pcgens。时钟端口的翻转率tclk为时序约束的时钟频率的两倍,或者使用从s401获得时钟信号翻转率。使能端口的翻转率ten使用由s401获得使能信号翻转率。时钟端口到输出端口路径的单次翻转功耗通过查表内插法算出,假设为pcgqs。时钟端口到输出端口路径需考虑动态功耗的条件通常为使能端口真值状态1,使能端口状态1的概率st1由s401获得的使能信号状态1概率确定:pcgd = pcgclks*tclk+pcgens*ten+pcgqs*tclk*st1虚拟时钟门控单元的总功耗由静态功耗和动态功耗相加得出。
98.在s405,可选地,计算寄存器阵列的数据端口增加的功耗及计算删除多路选择器阵列降低的功耗。
99.根据一些实施例,单个寄存器数据端口增加的功耗通过查表内插法知道数据端口单次翻转的功耗pds,插时钟门控单元前其受多路选择器的使能信号控制,只有使能信号状态1时数据端口才翻转,假设使能信号状态1的静态概率为st1, 数据信号的翻转率为td,则插入时钟门控单元前的寄存器数据端口功耗pdpre为:pdpre = pds*td*st1而在插入后不受使能信号控制,寄存器数据端口功耗pdpost为:pdpost = pds*td因此单个寄存器数据端口的功耗pdinc增加为:pdinc = pdpost-pdpre = pds*td*(1-st1)寄存器数据端口的功耗变化由同一虚拟时钟门控单元控制的寄存器数据端口增加的功耗累加得出。
100.根据一些实施例,如前所述,单个多路选择器的静态功耗pmuxl可通过查表得知。
101.根据一些实施例,单个多路选择器的动态功耗由它的数据输入端口、寄存器反馈输入端口、选择端口以及以上三输入端口到输出端口的路径功耗累加获得。与上面的计算方法类似,可通过查表内插法得出特定端口/路径在特定条件下的单次翻转功耗,乘以相关端口的翻转率再乘以条件端口的静态概率。一般来说,每个数据输入端口的功耗表格依赖于寄存器反馈输入端口和选择端口的状态,每一种状态组合的静态概率即为条件端口的静态概率;相似地,寄存器反馈输入端口的功耗表格依赖于数据输入端口和选择端口的状态,选择端口的功耗表格依赖于数据输入端口和寄存器反馈输入端口的状态,数据输入端口到输出端口的路径功耗表格依赖于寄存器反馈输入端口和选择端口的状态,寄存器反馈输入端口到输出端口的路径功耗表格依赖于数据输入端口和选择端口的状态,选择端口到输出端口的路径功耗表格依赖于数据输入端口和寄存器反馈输入端口的状态。数据输入端口的翻转率和静态概率可直接从s401的数据信号提取,寄存器反馈输入端口的翻转率可以通过输入端口的翻转率与使能信号状态1的乘积近似获得,寄存器反馈输入端口的静态概率近似于数据输入端口的静态概率,选择端口的翻转率和静态概率可直接从s401的使能信号提取。
102.单个多路选择器的功耗由静态功耗和动态功耗相加得出。本发明考虑的多路选择器阵列的功耗由同一虚拟时钟门控单元控制的寄存器所需要的各多路选择器的功耗累加得出。
103.在s407,计算插入虚拟时钟门控单元后的功耗变化。
104.基于s403、s405产生的各个功耗值,放入对比函数计算判断。
105.在s409,判断所述功耗变化量与设定阈值的大小。
106.所述设定阈值为预先设定的实数值,或者所述设定阈值为单个寄存器时钟端口功耗的预定比例值。基础的对比函数通过上述的各功耗变化值相加计算,然后与一个值比较,假设这个值由用户设定为0,那么功耗变化值与设定阈值0比较。若所述功耗变化值小于0则输出true。
107.在s411,若所述功耗变化量小于设定阈值,则插入时钟门控单元,若所述功耗变化量大于设定阈值,则不插入时钟门控单元。
108.通过所述功耗变化量的值与设定阈值的对比结果,来判断是否插入时钟门控单元,此方法得出的结果更科学、有据可循,相较于通过判断寄存器阵列的最小宽度来衡量是否有效降低功耗比较粗糙的方法,通过所述对比函数的计算结果决策是否要插入时钟门控单元,有效地降低实际工作场景的功耗。
109.根据示例实施例,通过对比翻转率和静态概率来决策是否插入时钟门控单元的方法相较于直接插入时钟门控单元的方法,更能准确的判断芯片的实际工作情况,针对性更好,可行性更强。通过翻转率和静态概率来决策是否插入时钟门控单元比传统的通过寄存器阵列位宽决策更为精确地分析出插入时钟门控单元的收益和代价,从而更有效地降低实际工作场景的功耗。
110.图5示出根据本技术示例实施例的计算设备的框图。
111.如图5所示,计算设备30包括处理器12和存储器14。计算设备30还可以包括总线22、网络接口16以及i/o接口18。处理器12、存储器14、网络接口16以及i/o接口18可以通过总线22相互通信。
112.处理器12可以包括一个或多个通用cpu(central processing unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。根据一些实施例,计算设备30还可包括为处理器12进行加速的高性能显示适配器(gpu)20。
113.存储器14可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(ram)、只读存储器(rom)和/或高速缓存存储器。存储器14用于存储包含指令的一个或多个程序以及数据。处理器12可读取存储在存储器14中的指令以执行上述根据本技术实施例的方法。
114.计算设备30也可以通过网络接口16与一个或者多个网络通信。该网络接口16可以是无线网络接口。
115.总线22可以为包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
116.需要说明的是,在具体实施过程中,计算设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
117.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic)、网络存储设备、云存储设备,或适合于存储指令和/或数据的任何类型的媒介或设备。
118.本技术实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
119.本领域的技术人员可以清楚地了解到本技术的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
120.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
121.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
122.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
123.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的
部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
124.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
125.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。
126.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
127.以上具体地展示和描述了本技术的示例性实施例。应可理解的是,本技术不限于这里描述的详细结构、设置方式或实现方法;相反,本技术意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。
技术特征:
1.一种优化芯片动态功耗的方法,其特征在于,所述方法包括:为芯片的第一寄存器阵列设置第一虚拟时钟门控单元;计算由于所述第一虚拟时钟门控单元导致的功耗变化量;将所述功耗变化量输入对比函数;根据所述对比函数的输出结果,确定是否为所述第一寄存器阵列插入实际的时钟门控单元。2.根据权利要求1所述的方法,其特征在于,计算由于所述第一虚拟时钟门控单元导致的功耗变化量,包括:获取所述第一寄存器阵列和所述第一虚拟时钟门控单元的时钟信号、使能信号和数据信号的翻转率及静态概率;根据所述翻转率和所述静态概率,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗;计算所述第一虚拟时钟门控单元的总功耗;根据所述第一寄存器阵列通过时钟门控降低的功耗及所述第一虚拟时钟门控单元的总功耗计算第一功耗变化量。3.根据权利要求2所述的方法,其特征在于,计算由于所述第一虚拟时钟门控单元导致的功耗变化量,还包括:计算所述第一寄存器阵列的数据端口增加的功耗;计算删除多路选择器阵列降低的功耗;根据所述第一功耗变化量、所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗计算第二功耗变化量。4.根据权利要求2所述的方法,其特征在于,计算所述第一虚拟时钟门控单元的总功耗,包括:对所述第一虚拟时钟门控单元的静态功耗和动态功耗求和,其中,所述第一虚拟时钟门控单元的静态功耗通过查表获得;所述第一虚拟时钟门控单元的动态功耗通过累加所述第一虚拟时钟门控单元的时钟端口和使能端口单次翻转的功耗与相应端口的翻转率的乘积、以及时钟端口到输出端口路径的单次翻转功耗与所述时钟端口的翻转率和所述使能端口真值状态概率的乘积。5.根据权利要求2所述的方法,其特征在于,计算所述第一寄存器阵列通过所述第一虚拟时钟门控单元降低的功耗,包括:累加所述第一虚拟时钟门控单元控制的各个寄存器时钟端口的功耗变化,其中,每个寄存器时钟端口的功耗变化为所述时钟端口单次翻转功耗与所述时钟端口到输出端口的路径单次翻转功耗的和、插入所述第一时钟门控单元前所述时钟端口的翻转率、及使能信号真值状态的概率减去1得到的差值三者之间的乘积。6.根据权利要求3所述的方法,其特征在于,计算所述第一寄存器阵列的数据端口增加的功耗,包括:累加由所述第一虚拟时钟门控单元控制的各个寄存器数据端口增加的功耗,其中,每个寄存器数据端口增加的功耗为每个数据端口单次翻转的功耗、1减去使能信
号真值状态的静态概率得到的差值、及数据信号的翻转率三者之间的乘积。7.根据权利要求3所述的方法,其特征在于,计算删除多路选择器阵列降低的功耗,包括:计算所述多路选择器阵列的功耗并取负值,所述多路选择器阵列的功耗由所述第一虚拟时钟门控单元控制的寄存器所需要的各多路选择器的功耗累加得出,单个多路选择器的功耗由静态功耗和动态功耗相加得出,其中,单个多路选择器的静态功耗通过查表获得;单个多路选择器的动态功耗由其数据输入端口、寄存器反馈输入端口、选择端口以及所述数据输入端口、所述寄存器反馈输入端口、所述选择端口分别到输出端口的路径功耗累加获得。8.根据权利要求1所述的方法,其特征在于,所述对比函数设置为将所述功耗变化量与设定阈值进行比较。9.根据权利要求8所述的方法,其特征在于,包括:所述设定阈值为预先设定的实数值;或者所述设定阈值为单个寄存器时钟端口功耗的预定比例值。10.根据权利要求2所述的方法,其特征在于,所述方法还包括:通过所述对比函数对忽略的所述第一寄存器阵列的数据端口增加的功耗及删除多路选择器阵列降低的功耗进行补偿。11.一种芯片,其特征在于,包括:第一寄存器阵列和第二寄存器阵列;为所述第一寄存器阵列设置的第一时钟门控单元;其中,所述第二寄存器阵列未设置相应的时钟门控单元,且由于所述第一时钟门控单元导致的功耗变化量低于设定阈值。12.一种电子设备,其特征在于,包括权利要求11所述的芯片。13.一种计算设备,其特征在于,包括:处理器;以及存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-10中任一项所述的方法。
技术总结
本申请提供一种优化芯片动态功耗的方法及芯片、电子设备和计算设备,涉及芯片技术领域。所述方法包括为芯片的第一寄存器阵列设置第一虚拟时钟门控单元,计算由于所述第一虚拟时钟门控单元导致的功耗变化量,将所述功耗变化量输入对比函数,根据所述对比函数的输出结果,确定是否为所述第一寄存器阵列插入实际的时钟门控单元。利用本申请的方法可降低芯片的动态功耗,将仿真计算融入到电路设计中,优化芯片的功耗。芯片的功耗。芯片的功耗。
技术研发人员:崔跃龙 蔡权雄 牛昕宇
受保护的技术使用者:深圳鲲云信息科技有限公司
技术研发日:2023.09.04
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种肉制品分割装置的制作方法 下一篇:一种公共区域免布线广播方法及系统与流程
