IC设计中不断增加的功耗挑战

在之前的IC设计中,关注的参数主要是性能(timing)和面积(area)。 EDA工具在满足性能要求的情况下,最小化面积。功耗是一个不怎么关心的问题。 CMOS工艺在相对较低的时钟频率下具有相当低的功耗,漏电流可忽略不计

然而,近年来,随着晶体管密度和时钟频率的显著增加,功耗也极大地增加。同时,随着电源电压和晶体管阈值电压降低,漏电流成为一个很大的问题。 结果就是,功耗已达到不可接受的限度,功耗问题变得和性能、面积一样重要了

高功耗会在运行期间导致过高的温度。 这意味着必须使用昂贵的陶瓷芯片封装,代替塑料封装,并且在产品工作时,通常需要复杂昂贵的散热器和冷却系统。

笔记本电脑和手持电子设备可能会发热,变烫。较高的工作温度也会降低芯片的可靠性。

高功耗还会缩短便携式设备(如笔记本电脑、手机和个人电子产品)的电池寿命。 随着产品中添加更多的功能,功耗会增加,电池寿命会进一步缩短。 电池技术已落后于功耗的增加。

功耗的另一个影响就是数以百万计的计算机、服务器和其他大规模使用的电子设备的供电成本。即使微处理器或其他芯片的功耗略微降低,也可以为用户节省大量的总成本,并且对环境也有好处

设计人员必须考虑两种类型的功耗,动态功耗和静态功耗动态功耗是指在晶体管开关期间的功耗,因此它取决于时钟频率和开关活动。 静态功耗是由于晶体管泄漏电流而产生的功耗,与时钟频率或开关活动无关.

动态功率是电路逻辑转换期间消耗的功耗,由两个部分组成,开关功耗和短路功耗。 开关功耗来自对电路负载电容充放电的功耗短路功耗来自在电路逻辑转换期间,流过PMOS-NMOS的短路电流

preview

所以,动态功耗取决于电源电压和电容负载以及时钟频率和开关活动

 

在早期的CMOS技术中,漏电流可以忽略不计。 然而,随着晶体管尺寸和阈值电压降低,泄漏功耗正在变得越来越大,有时甚至接近动态功耗水平。

无论时钟和晶体管开关活动如何,只要向晶体管供电,就会发生漏电流通过减慢或停止时钟不能减少泄漏功耗

但是,可以通过降低或关闭电源电压来减少或消除泄漏功耗

在数字IC设计中,我们常见的降低功耗的方法:

1.clock gating 门控时钟技术    众所周知,在数字IC设计中,时钟信号的翻转率是比较高的,因此它的功耗约占整个芯片功耗的20-30%。传统的设计方法是时钟信号一直是存活着的(常开),门控时钟技术就是根据设计,将暂时不用的模块的时钟信号通过一个控制信号gating住,降低这个模块的时钟信号翻转率,从而降低芯片功耗的一种技术。clock gating的加法也有很多,有在rtl级就例化进来的gating(往往是比较root的gating),也有综合阶段工具自动加进来的。从数字前端设计的角度,clock gating是想越靠近root端越好(因为一个gating可以控制更多的寄存器或者时钟单元),一旦将某个gating关掉,能够节省较多的功耗。因此,在数字后端实现过程中,经常会碰到到gating使能端E pin的setup比较难meet,主要原因是这类gating比较靠近root导致的

 

2.power gating  在数字IC后端设计中,经常采用这个策略降低功耗。在后端实现过程中,加入MTCMOS来控制标准单元的开关

3.Multi vt cells    这个就是在数字IC后端设计实现过程中,将某些不是critical path的地方尽量用HVT或者RVT,降低leakage。当然这个需要与performance,area做一个tradeoff。因为用HVT或者RVT,由于timing不好meet,工具优化的比较困难,可能反而会导致面积越优化越大。

4.DVFS技术    DVFS(Dynamic Voltage and Frequency Scaling)动态电压频率调节本质上是一种低功耗技术,目的是根据的芯片当时的实际功耗需要设定工作电压和时钟频率,这样可以保证提供的功率既满足要求又不会过剩,从而可以降低功耗。比如数字芯片中,CPU模块(比如8核cpu),在需要跑分的时候,将给cpu供电的电压通过软件调节到更高的电压(overdrive),获得一个更高的频率。在实际某个应用场景下,可能cpu只需要一个较低的频率时,可以将电压调节成一个较低的电压(underdrive)来实现

一味的降频降压当然是不能降低功耗的,因为低频下运行可能使系统处理任务的时长增加,从而整体上可能反而增加了功耗。所以DVFS的核心是动态调整的策略,其目的是根据当时的系统负载实时调整,从而提供满足当时性能要求的最低功率,也就达到了最低功耗。制定调整策略前,先找出系统中的耗电大户即CPU GPU这些模块。需要统计出这些模块的负载情况,基本的策略当然是工作负载增加则升频升压,工作负载降低则降频降压

5.Well bias  这个方法可以动态调整偏置电压,从而实现降低功耗的目的 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值