为什么CPU时钟频率在过去5年里没有增加?

原文链接: quora 翻译: 杰微刊- sophy
译文链接: http://www.jointforce.com/jfperiodical/news/show/321?m=d03 还可以在jointforce平台接包挣钱~

CPU时钟频率在过去5年里没有增加是很多不同类别的原因导致的。
一、功率

图为时钟频率与功耗的关系

当设计一个CPU的微架构时,其中一个关键的设计决策就是如何实现更高的性能。在奔腾4时代,英特尔选择了具有非常高的时钟频率和相对较窄的管道。这种方法有很多优点,其中之一就是它很容易加快单线程和串行代码。软件内并不需要操作很多的并行指令,因此大多数软件会立刻见其好处。

然而,这种方法也有它的缺点,它忽略奔腾4本身的执行瑕疵。在这里,我们只讲概念本身的缺陷。主要是CPU的微架构一直与电墙冲突,并且,高频的微架构与很多已被发明出来用来处理功率问题的低功耗设计技术都不适合。此处,我将触及两个主要的低功耗设计方法。

一个是时钟门控技术,时钟门控技术会在每个状态元件(寄存器、锁等)之前插入一个时钟启动系统,以至于如果没有新的数据写入的话,元件将没有时钟控制。这样就可以节省大量因回写相同的高速缓存而浪费的充电/放电时间。这个方式也将一个附加延迟(门控功能)插入时钟路径。高频率的设计一般是低利润率运行,根本就不适合在最关键的信号(时钟)插入附加可变延迟。

另一个常见的技巧是电源门控。这涉及到要在芯片不同部分的电压源上放上晶体管。通常情况下,当不使用时,那些不同的功能模块和供电部分会关闭,但高频设计往往不会这样做。电源控制晶体管不但需要添加一个额外的压降,从而延缓晶体管开关速度,而且一个非常细的流水线处理器根本没有多少部分可以在任何给定的时间内被关闭。

因此,从微架构的角度来看,高频和细的设计不只是智能power-wise。

 

二、晶体管缩放

处理器频率没有上涨的另一个主要原因很简单,就是晶体管本身并没有变得更快。

其他人提到了晶体管宽度尺寸的因素,但晶体管宽实际上是稳步下降的,并且会继续下去,摩尔定律在这方面还是很好地发挥作用的。

英特尔目前正在45纳米的基础上制造32纳米的HKMG(high-k绝缘层+金属闸极) 。两年之前,它是65纳米,再之前是90纳米。TSMC, IBM and GlobalFoundries 公司今年开始生产28纳米芯片。英特尔正计划调整到22纳米。 (更新:14nm已经出来了)。

然而,问题是,当晶体管的尺寸越来越小时他们却没有越来越快。要理解这一点,有点MOSFET(金氧半场效晶体管)的背景是必要的。

众所周知,晶体管的开关速度取决于许多因素。其中一个主要因素是电场在闸极(控制到交换机)中创建的强度。电场强度取决于闸极(其变小,晶体管收缩)的两个区域,以及闸门厚度。

随着晶体管的缩小,门的面积在减少。在过去,闸极区域面积的减少意味着一个晶体管的闸极也可以做得更薄。如果你知道基本的电容器是如何工作的,你就会知道,两个导电板之间距离越小,它们之间的电场就越强。这个工作原理在MOSFET上同样通用。更薄的闸极电介质导致有更强的电场通过晶体管沟道,这意味着晶体管的切换速度更快。晶体管闸极面积减少意味着闸门可以做得更薄,并且对负载电容增加无害。

然而,至于45纳米,现在的闸介质约0.9纳米厚——大约一个二氧化硅分子的大小,所以根本不可能做出更薄的了。因此,英特尔改用以铪材料为基础材料的High-K取代二氧化硅,成为闸极电介质(许多人怀疑是硅酸铪)。他们还把连接闸门的材料从多晶硅变成金属材料。

这种方法有助于提高晶体管的速度,但它太昂贵了,只能是一个权宜之计。事情很简单,每一次我们利用之前已有的简单的缩放比例缩小晶体管,都会导致更快的晶体管结束。

三、芯片缩放

频率斜升放缓的另一个主要原因是晶体管不再是唯一的——在某些情况下,即使是最大的——处理器可以运行多快的关键。现在,连接这些晶体管的电线成为延迟的主要因素。

随着晶体管越来越小,连接它们的电线变得更细。细线意味着更高的阻力和更低的电流。事实是较小的晶体管能够驱动少量的电流,很容易发现,晶体管的开关速度只能部分确定电路的路径延迟情况。

当然,在芯片设计过程中可以使用许多技巧来对付这个问题。一个布局和布线良好的工程师将尝试以类似的路径来规划其时钟和数据信号的路线,这样可以使两个信号同时传送,并在同一时间到达目的地。对于数据密集型芯片,轻控设计会是一种非常有效的解决方案,例如固定功能的视频编解码引擎或网络处理器。

然而,带有web交互的微处理器是一个非常复杂的、非常规的设计,数据访问多个地点时并不总是遵循时钟规律,它有反馈路径和循环,有集中的资源,如风险跟踪,调度,分支预测,寄存器文件等等。另外,重控设计很容易被复制到更多的内核,但要通过标准的方法提高处理器频率的时候,其所要求的细线是很复杂的。

[ 转载请保留原文出处、译者和译文链接。]

时间: 2024-10-09 04:26:13

为什么CPU时钟频率在过去5年里没有增加?的相关文章

java多线程并发编程与CPU时钟分配小议

我们先来研究下JAVA的多线程的并发编程和CPU时钟振荡的关系吧 老规矩,先科普 我们的操作系统在DOS以前都是单任务的 什么是单任务呢?就是一次只能做一件事 你复制文件的时候,就不能重命名了 那么现在的操作系统,我一边在这边写BLOG,一边听歌,一边开着QQ,一边…………………… 显然,现在的操作系统都是多任务的操作系统 操作系统对多任务的支持是怎么样的呢? 每打开一个程序,就启动一个进程,为其分配相应空间(主要是运行程序的内存空间) 这其实就支持并发运行了 CPU有个时钟频率,表示每秒能执行

实时时钟、系统时钟和CPU时钟的区别

http://blog.sina.com.cn/s/blog_68f909c30100pli7.html 实时时钟:RTC时钟,用于提供年.月.日.时.分.秒和星期等的实时时间信息,由后备电池供电,当你晚上关闭系统和早上开启系统时,RTC仍然会保持正确的时间和日期. 系统时钟:是一个存储于系统内存中的逻辑时钟.用于系统的计算,比如超时产生的中断异常,超时计算就是由系统时钟计算的.这种时钟在系统掉电或重新启动时每次会被清除. CPU时钟:即CPU的频率,当然这里的时钟频率指的是工作频率,即外频,还

西门子PLC学习笔记九-(CPU时钟存储器)

CPU可以设置多种存储器,从而得到多种脉冲. 1.CPU时钟设置 2.CPU时钟周期与频率 3.CPU时钟使用程序举例 1)实现1s自增1操作 2)实现1s自减操作 程序如下图:

超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述

前言: 由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品. STM32L151C8T6 功能特点: (1)Flash:64k (2)RAM:10k (3)EEPROM:4k (4)USART:3 (5)SPI:2. 了解一个CPU,时钟也是非常重要的,如下图所示: 从图中可知:共有5 种时钟源,分别为 HSE:外部8M晶振). HSI: 内部高速晶振16MHz LSI:内部低速晶振37khz LSE: 外部低速晶振 32.768

(转)SQL Server 性能调优(cpu)

摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的wait event Signal wait time SOS_SCHEDULER_YIELD等待 CXPACKET等待 CMEMTHREAD等待 调度队列 cpu密集型查询 高CPU使用率的创建几种状况 miss index 统计数据丢失 非SARG谓词 隐式类型转化 参数探测器 ad ho

STM8S学习笔记-时钟控制1

1.图13可见,STM8S单片机主要有四种时钟源可供选择: 1).1-24MHz外部晶体振荡器(HSE). 2).最大24MHz外部时钟(HSE ext). 3).16MHz高速内部RC振荡器(HSI). 4).128KHz低速内部RC振荡器(LSI). 2.主时钟可以从这四种时钟源中任意切换,切换过程可通过自动切换和手动切换. 自动切换过程: CLK_SWCR |= 0x20;    //使能切换 CLK_SWR = 0xE1; //  (HSI----复位值) // (0xD2 ----LS

Cotex-M3内核LPC17xx系列时钟及其配置方法

一.背景: 最近正在接手一个项目,核心芯片既是LPC17XX系列MCU,内核为ARM的Cotex-M3内核. 想要玩转一个MCU,就一定得搞定其时钟! 时钟对MCU而言,就好比人类的心脏.由其给AHB.APB总线供给血液(时钟频率),而挂在AHB(Advance High Bus)总线上的器件就像是我们的各个器官,挂在APB(Adance Peripheral Bus)总线的外设就像是人类的四肢.各个器官和四肢只有在你的血液(时钟频率)供给恰到好处时才能正常运转. 本篇文章既是对LPC17xx系

LPC1768之时钟

一锁相环和CPU时钟. CPU时钟=锁相环0输出/CPU时钟配置寄存器的预分频值即:Fcpu=Fcco/CCLKCFG+1.锁相环可以把外部时钟倍频到较高频率,PLL0输出频率是: Fcco = (2xMxFin)/N; M=MSEL0+1,N=NSEL0+1.MSEL0和NSEL0分别是PLL0CFG_Val 的低字和高字.N值得取值范围是1~32,而M的取值是在较高的振荡器频率下(超过1MHz)允许范围是6~512. 得到PLL0输出值之后,在经过CPU时钟配置寄存器就可以得到CPU时钟.

STM8S CPU主时钟

STM8S上电后的时钟来源: /* Public functions ----------------------------------------------------------*//** * @addtogroup CLK_Public_Functions * @{ */ /** * @brief Deinitializes the CLK peripheral registers to their default reset * values. * @param None * @re