人人都知道,自发明以来,计算速度已大大提高,而且看来还将继续。但是有一件事让我感到困惑:如果您今天在某种材料上流过电流,它的传播速度与50年前使用相同的材料一样。
考虑到这一点,计算机如何变得更快?处理器设计的哪些主要领域赋予了如此惊人的速度?
我认为可能是以下一项或多项:
- 较小的处理器(电流流动的距离较小,但在我看来,您在这里只能获得少量收益)。
- 更好的材料
人人都知道,自发明以来,计算速度已大大提高,而且看来还将继续。但是有一件事让我感到困惑:如果您今天在某种材料上流过电流,它的传播速度与50年前使用相同的材料一样。
考虑到这一点,计算机如何变得更快?处理器设计的哪些主要领域赋予了如此惊人的速度?
我认为可能是以下一项或多项:
Answers:
如果您今天在某种材料上流过电流,则其传播速度与50年前使用相同材料时的速度相同。
考虑到这一点,计算机如何变得更快?处理器设计的哪些主要领域赋予了如此惊人的速度?
您会得出错误的结论,因为您的最初假设是错误的:您认为CPU速度等于CPU中电子的速度。
实际上,CPU是一些同步数字逻辑。其速度的极限是逻辑方程的输出应在一个时钟周期内保持稳定。使用晶体管实现的逻辑,限制主要与使晶体管切换所需的时间有关。通过减小它们的通道大小,我们可以使它们切换得更快。这是50年来提高CPU最大频率的主要原因。今天,我们还修改了晶体管的形状以提高其开关速度,但是据我所知,今天只有英特尔,Global Foundries和台积电能够制造FinFET。
但是,还有其他一些方法可以提高CPU的最大时钟速度:如果将逻辑方程式分解为几个较小的方程式,则可以使每一步更快,并且具有更高的时钟速度。您还需要更多的时钟周期来执行相同的操作,但是,通过使用流水线技术,可以使每秒的指令速率遵循您的时钟速率。
如今,电子的速度已成为极限:在10GHz时,电信号的传播距离不能超过3cm。这大约是当前处理器的大小。为避免此问题,芯片中可能有几个独立的同步域,从而减少了信号传播的限制。但这只是一个限制因素,其中包括晶体管开关速度,散热,EMC以及其他因素(但我不在硅铸造行业)。
有很多复杂的变量会影响总体CPU速度,但主要的变量是时钟速度,该速度在2000年代中期增加,但由于物理限制而趋于平坦。在此期间,每个芯片的功耗也增加了,以弥补芯片的丢失/泄漏。CPU芯片变得太热,冷却技术变得越来越重要,并且无法施加更多的功率(实际上不会熔化它们!)。
Extremetech.com进行的一项不错的调查指出,摩尔定律实际上主要是由Dennard标度推动的。后者在2000年代中期崩溃。芯片“速度”(其中“速度”是作为整体代码执行时间而不仅仅是时钟速度来衡量)中还有许多其他设计因素/改进,它们往往掩盖了硬件功能的拐点,例如缓存,CPU并行性/多核,分支预测等),并添加了较小的栅极宽度(因此,每个芯片的栅极数量更多,以实现其他功能)。栅极宽度也趋于停止减小,或者至少每一代减小得不太快。
为什么这些限制趋势不是很清楚?对这些趋势了解最多的某些实体“损失最大”,而实际上很少公开。例如,市值数十亿美元的英特尔不太可能发布专有内部数据,这些数据会指出未来性能的极限或下降。
即将出现的新可能性可能会导致全新的趋势(但其中有些涉及几乎完全不同的技术/制造技术),包括光子芯片,将芯片分层放置的3-D芯片,量子计算,纳米技术(例如纳米管)晶体管等
另一个考虑(除了其他好的答案)是将任务委派给其他处理器。在早期的计算时代,只有一个处理器。对于图形,该计算与同一CPU中的其他计算共享。现在,我们有用于图形处理的单独处理器。
许多现代处理器在同一块硅片中具有多个内核。因为它们共享相同的硅片,所以减慢了将芯片外的另一个核心/处理器的运行速度对它们的影响不大。示例:图形处理器。
早期的8位微处理器的寻址范围比当今的32位和64位处理器小。现代处理器具有更大的内存范围,这意味着可以在内存中执行更多计算,而不必访问外部存储。
这也适用于片上存储器。较大的地址空间可在靠近中央核的地方提供较大的存储器,同时仍在硅片外部保留较大的地址空间。
随着存储器的价格越来越便宜,现代计算机现在正在实现更复杂的数据和指令管道以及数据和指令缓存。通过减少从较慢的内存(芯片外部)到内部缓存的取数据的速度,可以加快执行速度。一些处理器具有for
在其指令高速缓存中包含循环的能力。
当今的计算机速度要快得多,这不仅是由于晶体管和硅技术的进步,还归功于将任务委派给其他处理器/内核。内存变得更快,更便宜,使处理器可以在CPU附近拥有大量内存。地址范围允许更多的内存,这意味着更少的外部存储器访问。较大的寄存器大小允许每个周期读取更多数据(32位系统为4个字节,8位系统为1个字节)。多核允许并行操作,而不是序列化它们。
几乎全部计算机速度的进步都来自以下领域之一:
使晶体管变小有两件事:
例如,某些处理器缺少指令以乘或除整数。而是必须使用慢速的软件例程来执行此任务。添加乘法和除法指令可大大加快处理速度。添加浮点指令可以加快需要浮点数的软件的速度。
每个指令执行更多“有用的工作”的重要方式是增加字长。可以对32位数字执行操作的CPU与16位或8位CPU相比,执行同一任务所需的指令通常要少得多。
某些处理器支持一次执行多项操作的指令,尤其是对多个数据项(SIMD)执行相同操作的指令。
“时钟周期”是处理器从当前状态进入下一个状态的方式。从某种意义上讲,它是处理器一次可以完成的最小工作单元。但是,一条特定指令占用的时钟周期数取决于处理器的设计。
随着流水线处理器的出现,单独的指令“重叠”成为可能,即一条指令将在前一条指令完成之前开始。但是,某些指令会使下一条指令无效,直到下一条指令被部分执行后才会知道,因此事情可能变得复杂。(流水线处理器包括确保一切正常的逻辑,但性能特征更为复杂。)
超标量处理器将其带入了一个新的高度,从字面上允许两个指令同时执行,并且无序执行则将其进一步执行了一步,从而允许乱序执行指令。这些功能需要对指令流进行分析,确定哪些指令不会相互冲突。
尽管还有其他技巧(例如分支预测,推测执行),但更重要的是总体情况:
换句话说,时钟速度更高。时钟速度的增加不仅增加了产生的热量,而且还需要更加严格的芯片设计,因为电路稳定的时间限制更短。直到2000年代达到一些实际极限时,我们才从这一里程中获得了很多成就。
尽管由于晶体管的缩小,CPU中的组件之间的距离越来越近,但CPU和RAM的距离仍然相差5-10厘米。如果一条指令需要RAM中的某些内容,那么该指令将不需要5或6个周期即可完成,大约需要200个周期。这是冯·诺依曼瓶颈问题。
我们对此的主要武器是缓存。最近访问的数据更有可能再次被访问,因此它们被保存在CPU芯片内的特殊内存(称为高速缓存)中,从而使访问速度更快。
但是,其他技术(例如流水线和分支预测)可以帮助处理器在等待数据到达的同时做一些有用的工作,并预测很快将需要哪些数据。
为单个处理器编写软件要比为多个处理器编写软件容易得多。但是,有时性能/成本/功耗方面的好处使其值得。
同样,某些处理器特别适合于某些任务。例如,GPU是专门为渲染2D和3D图形和效果所需的计算而设计的。
多核处理器本质上是单个芯片上的多个处理器。
对于PC中使用的典型处理器,十多年来,散热一直是限制因素,PC中的风冷处理器被限制在约4 GHz。水冷将其提高到大约5 ghz,而氮气冷却已被用于将时钟频率提高到6 ghz至6.5 ghz。
时钟速率基本上是电压与电路逻辑大小(切换状态改变需要多长时间)的函数。电压越高或电路逻辑越小,速率越快,但这会带来散热问题,因为密度通常随电路逻辑尺寸的减小而增加。由于密度高,没有足够的空间容纳导热材料来散热。减小密度增加了成本,并且还由于电路长度的增加而增加了传播延迟。
在过去几年中,CPU的速度没有这么快,当前的Intel i7 4790K(4.0 GHz,4.4 GHz涡轮增压)并不比第二代Intel i7 2700K(3.5 GHz,3.9 GHz涡轮增压)快很多。比其更快的时钟速率(快约14.3%)。另一方面,由于3d图形可以利用并行操作,因此在过去4或5年中,视频卡的性能提高了约3倍,其中一些具有3,000多个子核心。
到目前为止,最大的两个因素是晶体管的收缩程度达到了可笑的程度,因此我们现在拥有的智能手机中的晶体管数量已超过10亿,而且将晶体管从一种状态切换到另一种状态的速度变得更快。更快的切换直接转化为更高的速度。数量更多的晶体管间接地提高了速度,这是因为它促进了许多其他改进:我们拥有缓存,因为我们拥有更多的晶体管。我们拥有更多和更大的寄存器,因为我们拥有更多的晶体管。我们有矢量指令,因为我们有更多的晶体管。我们有双核,四核或十核处理器,因为我们有更多的晶体管。
由于设计更好,我们可以在较小程度上改善速度。例如,乘法器不仅因为我们拥有更多的晶体管而更快,而且因为我们使用了更好的方法。分支预测已得到改进,不仅仅是拥有更多可用晶体管。但总的来说,与十亿个晶体管的强力相比,这是一个很小的影响。
(第一台Mac中的处理器被称为Motorola 68000处理器,因为它具有68000个晶体管。新的iPad大约是20,000倍)。
我是一名机械工程师,所以我不熟悉这会对处理器速度产生多大的影响,也不管它是否已成为限制因素,但它背后的物理原理是合理的。电路的电感和电容将影响数字电压信号的上升和下降速度-从而影响开关速度。理想情况下,开关信号应该是方波。实际上,它们会稍微变形并在边缘倾斜。信号必须变高且变高的时间长到足以在下一个时钟周期之前读取。本质上,信号波在顶部需要一个“平坦点”。如果切换速度太快,您会收到更多尖锐的波信号。你们中那些更熟悉数字信号的人可以根据需要进行澄清,但是这个想法是正确的。