为什么更多的晶体管=更多的处理能力?


43

根据维基百科,处理能力与摩尔定律密切相关:

http://en.wikipedia.org/wiki/摩尔定律

可以便宜地放置在集成电路上的晶体管数量大约每两年翻一番。这一趋势持续了半个多世纪,预计直到2015年或更晚才停止。许多数字电子设备的功能与摩尔定律紧密相关:处理速度,存储容量,传感器,甚至是数码相机中像素的数量和大小。所有这些也在以(大约)指数的速度提高。

作为在计算机体系结构方面具有一定背景的人,我不明白为什么在CPU中增加更多的晶体管会增强其功能,因为最终,指令大致按顺序读取/执行。谁能解释我缺少的那一部分?


10
更多晶体管=更多并行性
Toby Jaffey 2010年

2
不管处理器有多少个内核,这都是事实。
Thomas O 2010年

1
是。更多的晶体管意味着您可以放置​​更多的并行执行单元。更大的缓存。更深层次的管道。
卡兹(Kaz)2012年

1
缓存是最大的缓存。我认为专用于缓存的硅房地产比例一直在增加。现代处理器的大多数性能都归因于缓存,并且缓存仅在存在局部性时才起作用,但是高速缓存越大,对局部性的要求就越宽松(仍会加快具有更古怪的内存访问模式的更大应用程序的使用)。
卡兹(Kaz)2012年

2
考虑一个乘数。有了足够的晶体管,您可以使用完整的查找表,并一步完成整个乘法运算。使用更少的晶体管,您必须执行重复添加等操作。
David Schwartz

Answers:


29

许多为您提供更多功率的东西仅需要更多的晶体管即可构建它们。较宽的总线可扩展几乎所有处理器组件中的晶体管数量。高速缓存根据缓存大小添加晶体管。如果延长管线,则需要添加级和更复杂的控制单元。如果添加执行单元以帮助缓解流水线中的瓶颈,则每个执行单元都需要更多的晶体管,然后用于保持分配执行单元的控件会增加更多的晶体管。

问题是,在电子电路中,所有事物都是并行发生的。在软件世界中,默认设置是按顺序进行的,并且软件设计人员会竭尽全力将并行性内置到软件中,以便可以利用硬件的并行性。并行仅意味着同时发生更多事情,因此大致相当于速度。并行执行的工作越多,完成工作的速度就越快。唯一真正的并行性是当您有更多的晶体管在工作时所得到的。


19

即使在非VLIW ISA上,第一条指令也不一定要“顺序执行”,执行只需要顺序出现即可。有序超标量实现可以与另一个指令并行执行多个指令。为了有效地做到这一点,必须增加(加宽)用于解码指令的硬件,必须增加硬件以确保要并行执行的指令的数据独立性,必须增加执行资源,并且通常会增加寄存器文件端口的数量。所有这些都增加了晶体管。

乱序实现允许在没有数据依赖性的情况下在较早的指令之前执行更高的指令,并在数据可用时立即使用其他硬件来处理指令调度,并添加重命名寄存器和用于映射的硬件,分配并释放它们(更多晶体管),以避免读取后写入和写入后写入的危险。无序执行使处理器可以避免停顿。

在乱序处理器中对装入和存储进行重新排序需要确保程序顺序中的较早存储将结果转发到相同地址的后续装入。这意味着地址比较逻辑以及存储的地址(和大小)的存储(以及数据的存储),直到存储已提交到内存(高速缓存)为止。(对于内存一致性模型较弱的ISA,还需要检查负载是否相对于其他处理器(更多晶体管)的存储进行了正确排序。)

流水线化增加了一些额外的控制和缓冲开销,并防止了指令处理不同部分的逻辑重用,但允许处理指令的不同部分在时间上对不同指令重叠。

流水线和超标量执行会增加控制危害(即条件分支和跳转)的影响。流水线化(以及无序执行)甚至可能延迟无条件跳转的目标可用性,因此添加硬件以预测目标(以及条件分支的方向)可以继续获取指令,而无需等待指令执行部分的执行。处理器以提供必要的数据。更准确的预测变量往往需要更多的晶体管。

对于乱序处理器,可能希望允许在计算所有先前存储区的地址之前执行来自存储器的加载,因此需要一些硬件来处理这种推测,可能包括预测器。

缓存可以减少等待时间并增加内存访问的带宽,但是可以添加晶体管来存储数据和存储标签(并将标签与请求的地址进行比较)。还需要其他硬件来实施替换策略。硬件预取将增加更多的晶体管。

用硬件而不是软件来实现功能可以提高性能(同时需要更多的晶体管)。例如,TL​​B管理,复杂的运算(例如乘法或浮点运算),特殊的运算(例如计数前导零)。(添加指令还会增加指令解码的复杂度,通常也会增加执行的复杂度,例如,控制将使用执行硬件的哪些部分。)

SIMD /矢量操作增加了每条指令执行的工作量,但需要更多的数据存储(更宽的寄存器),并且通常使用更多的执行资源。

(推测性多线程还可以使多个处理器更快地执行单个线程的程序。显然,将处理器添加到芯片上会增加晶体管的数量。)

拥有更多可用的晶体管还可以使计算机架构师为ISA提供更多对软件可见的寄存器,从而有可能降低内存访问的频率,这种访问速度往往比寄存器访问慢,并且涉及某种程度的间接寻址(例如,向堆栈增加偏移量)指针),这会增加延迟。

集成-增加了芯片上而不是系统中晶体管的数量-减少了通信延迟并增加了带宽,显然可以提高性能。(功耗的减少也可以转化为更高的性能。)

即使在指令执行级别,添加晶体管也可以提高性能。例如,进位选择加法器与低位进位的不同假设并行两次将高位相加,在从低位进位可用时选择正确的高位和,显然比简单的方法需要更多的晶体管纹波进位加法器,但减少了产生总和的延迟。类似地,具有单行进位保存加法器的乘法器比Dadda(或Wallace)树乘法器使用更少的晶体管(但速度较慢),并且无法进行流水线处理(因此必须复制以允许另一个乘法在更早的时候开始执行)进行中)。

上面的内容可能很详尽,但并不详尽!


2
新来的人很好的答案!
康纳·沃尔夫

12

晶体管的数量不一定与更大的处理能力相关,但是,随着晶体管的增加,处理器可以执行比以前更复杂的指令。例如,具有SSE的处理器将使用其他晶体管来实现这些复杂的指令(例如,在一个周期中添加许多数字)。


2
艾伦·凯(Alan Kay)计算得出,自从他在施乐PARC的Smalltalk上工作以来,由于架构错误和软件效率低下,我们已经失去了18年的晶体管倍增能力,因为计算机的速度肯定不如晶体管倍增所表明的那样快。
2011年

5

另一个因素:当您将更多的晶体管塞入给定的区域时,它们会变小,从而使其变得更快。


随着晶体管之间的距离越来越近,您会得到其他不良影响,例如增加的漏电流,因此这是性能与低功耗之间的折衷方案-大多数制造商似乎都在追求性能。
Thomas O

4

近年来,微处理器取得了显着进步,更长的流水线,谓词分支和片上缓存等都增加了与处理器相关的复杂性。

当然,CPU处理,获取,解码,ALU和写入的基础知识仍然相同,但是为了加快处理速度,使用了更长的流水线。较长的pipennes可以提高连续代码执行的性能,但是当代码分支破坏性能时,也会导致更长的命中时间。补救措施,预测性分支。预测分支是一个商业秘密,intel通常不会透露其全部工作原理,而只是使用它来保持其CPU尽可能高的性能。

高速缓存内存比RAM快得多,但是从RAM移入高速缓存并从高速缓存移回到RAM的内容是什么???这再次是专有的东西,但是又需要晶体管来实现。

因此,额外的晶体管将用于较长的流水线,预测分支算法,高速缓存存储器和存储器算法。

这没有提及多核处理器和共享内存/资源访问控制器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.