为什么我们需要那么多晶体管?


34

晶体管在电路中具有多种用途,例如开关,用于放大电子信号,使您可以控制电流等。

但是,我最近在其他随机互联网文章中读到了摩尔定律,即现代电子设备中装有大量的晶体管,现代电子设备中的晶体管数量约为数百万甚至数十亿。

但是,到底为什么有人会需要那么多晶体管呢?如果晶体管用作开关等,为什么我们的现代电子设备中需要如此之多的晶体管呢?我们是否无法使事情更有效率,以致我们使用的晶体管比目前使用的晶体管少?


7
我建议您先看一下您的芯片是由什么制成的。加法器,乘法器,多路复用器,存储器,更多存储器...并考虑那里需要存在的这些事物的数量...
Dzarda


1
持续使用晶体管代替大多数机械设备,对塑造现代消费类电子产品的影响最大。每次打开或关闭背光灯时,都要给手机拍好图像(这是汽车的大小和重量)
标记

7
你问为什么我们不能“使用更少的晶体管来提高效率”?您假设我们试图使晶体管的数量最少。但是,如果通过增加更多控制权来提高电源效率,该怎么办?或更值得一提的是,执行任何计算都需要时间效率?“效率”不是一回事。
OJFord 2014年

2
并不是说我们需要那么多晶体管来构建CPU,而是因为我们可以制造所有这些晶体管,所以我们不妨以提高CPU速度的方式来使用它们。
user253751

Answers:


46

晶体管是开关,是的,但是开关不仅仅用于打开和关闭灯。

开关组合在一起成为逻辑门。逻辑门组合在一起成为逻辑块。逻辑块组合在一起成为逻辑功能。逻辑功能组合在一起成为芯片。

例如,TTL NAND门通常使用2个晶体管(NAND门与NOR一起被视为逻辑的基本构建块之一):

原理图

模拟该电路 –使用CircuitLab创建的原理图

随着技术从TTL过渡到CMOS(现在已成为事实上的标准),基本上晶体管瞬间增加了一倍。例如,“与非”门从2个晶体管变为4个:

原理图

模拟该电路

锁存器(例如SR)可以使用2个CMOS NAND门(即8个晶体管)制成。因此,可以使用32个触发器(即64个NAND门或256个晶体管)制成32位寄存器。一个ALU可能有多个寄存器,以及许多其他的门,因此晶体管的数量迅速增长。

芯片执行的功能越复杂,需要的门就越多,因此晶体管就越多。

这些天的平均CPU数量要比30年前的Z80芯片复杂得多。它不仅使用宽度为8倍的寄存器,而且它执行的实际操作(复杂的3D转换,矢量处理等)远比旧芯片可以执行的复杂得多。现代CPU中的一条指令在旧的8位处理器中可能要花费几秒钟(甚至几分钟)的计算时间,最终所有这些都需要拥有更多的晶体管才能完成。


NAND = 4周不为2周晶体管和FF的超过仅2 NORs的
占位符

2
天啊!您真的需要重新考虑。甚至展示一种具有双极型晶体管的设计方案!!所有这些设计都是CMOS,
占位符

2
有道理。添加了第二个原理图以突出显示差异,以及随之而来的晶体管倍增。
Majenko

3
弱上拉与强上拉是与TTL和CMOS完全不同的问题。毕竟,BJT确实包含在PNP中。CMOS不涉及“晶体管加倍”。大规模集成确实可以实现,因为在任何ASIC工艺中,晶体管都比上拉电阻小得多。
Ben Voigt 2014年

1
那不是TTL NAND门。那是RTL逻辑门。
Fuzzyhair2 2014年

16

我检查了各种半导体器件的本地供应商,他们拥有的最大SRAM芯片是32Mbit。可以存储1或0的3200万个单独区域。假设需要“至少” 1个晶体管来存储1位信息,那么绝对最小数量为3200万个晶体管。

32 Mbits能为您带来什么?那是4 MB,大约是4分钟低质量MP3音乐文件的大小。


编辑-根据我的谷歌搜索的SRAM存储器单元如下所示:-

在此处输入图片说明

因此,这是每位6个晶体管,更像我提到的该芯片上的1.92亿个晶体管。


...现在想象8GB内存以及68719476736位信息
Kamil

1
...除了它们不在DRAM中使用晶体管。
Majenko

1
@Majenko:至少没有其他技术那么多。1个晶体管+ 1个电容器(显然在微观范围)1位-如果我没记错的话。
2014年

28
SRAM的每一位至少是4个晶体管,通常是6个晶体管,因此是1.28亿个晶体管或更多。DRAM不使用晶体管进行存储 -但每个位(存储在电容器上)都有自己的晶体管开关来为电容充电。
Brian Drummond 2014年

6
现在,想象一下1T SSD中的晶体管(允许每单元3位,并且在一个以上的芯片上),但仅用于存储,仍然是2.7万亿个晶体管,不包括寻址,控制和允许的坏位和损耗。
Spehro Pefhany 2014年

7

我认为OP可能会被具有如此多晶体管的电子设备所混淆。摩尔定律是计算机(CPU,SRAM / DRAM /相关存储,GPU,FPGA等)的主要关注点。晶体管无线电之类的东西可能(大部分)在单个芯片上,但不能利用所有这么多的晶体管。另一方面,计算设备对于晶体管的附加功能和更宽的数据宽度有着无法满足的胃口。


3
这些天的无线电计算设备,或者至少包含它们。FM频率的数字合成,音频的DSP信号处理(一个大问题),电台切换的数字监控等。例如,TAS3208 ti.com/lit/ds/symlink/tas3208.pdf
Spehro Pefhany 2014年

1
您仍然不会看到成千上万的无线电晶体管,更不用说数十亿了。当然,它们正在变成具有所有数字功能的小型专用计算机,但没有多核64位CPU的规模。
Phil Perry

@PhilPerry当然可以在数字收音机中添加类似ARM的东西吗?不是数十亿个晶体管,而是成千上万个。

好吧,如果你已经越过“行”从模拟广播到计算机的是(除其他事项外)接收无线电信号,将使用大量的晶体管。我的观点仍然是,OP关于电子设备的问题听起来像是经典模拟收音机等与计算设备之间的混淆。是的,即使它们都是黑匣子,但它们的演奏方式却大相径庭。
Phil Perry

4

如前所述,SRAM每位需要6个晶体管。随着我们扩大缓存(出于效率目的),我们需要越来越多的晶体管。查看处理器晶片,您可能会发现缓存大于处理器的单个内核,如果仔细查看内核,您会看到其中组织良好的部分,它们也是缓存(可能是数据和指令L1缓存)。拥有6MB的高速缓存,您需要3亿个晶体管(加上寻址逻辑)。

但是,如前所述,晶体管并不是增加晶体管数量的唯一原因。在现代Core i7上,每个时钟周期和每个内核(使用著名的dhrystone测试)执行的指令超过7条。这意味着一件事:最先进的处理器执行大量并行计算。同时进行更多操作需要有更多的单元来执行,并且需要非常巧妙的逻辑来进行调度。聪明的逻辑需要更复杂的逻辑方程式,因此需要更多的晶体管来实现。


SRAM在相当多年内都不需要6个晶体管。实际上,当您使用1T 2T或4T sram时,6T sram相当浪费,因为替换物的数量实际上减少了。
cb88

2

稍微远离细节:

计算机是复杂的数字交换设备。它们具有一层又一层的复杂性。最简单的级别是逻辑门,如NAND门,如前所述,然后进入加法器,移位寄存器,锁存器等。然后添加时钟逻辑,指令解码,高速缓存,算术单元,地址解码,然后不断地进行下去。 。(更不用说内存了,每位数据需要几个晶体管)

这些级别中的每个级别都使用了先前复杂性级别中的许多部分,所有这些部分都是基于大量基本逻辑门的。

然后添加并发。为了获得越来越快的性能,现代计算机被设计为可以同时做很多事情。在单个内核中,地址解码器,算术单元,矢量处理器,高速缓存管理器和其他各种子系统都同时运行,并且都具有自己的控制系统和计时系统。

现代计算机还具有越来越多的独立内核(一个芯片上有多个CPU)。

每次上一层抽象层,复杂性就会增加许多数量级。即使是最低级别的复杂性,也具有数千个晶体管。进入像CPU这样的高级子系统,您正在谈论至少数百万个晶体管。

然后是GPU(图形处理单元)。GPU可能具有数千个单独的浮点处理器,这些浮点处理器经过优化可进行矢量数学处理,每个子处理器中将有数百万个晶体管。


1

在不尝试讨论特定项目需要多少个晶体管的情况下,CPU使用更多的晶体管来增强功能,包括:

  • 更复杂的指令集
  • 更多的片上高速缓存,因此需要更少的RAM提取
  • 更多寄存器
  • 更多处理器核心

1

除了增加RAM,缓存,寄存器的原始存储容量以及增加更多的计算核心和更宽的总线宽度(32位对64位等)之外,这还因为CPU变得越来越复杂。

CPU是由其他计算单元组成的计算单元。CPU指令经历几个阶段。在过去,只有一个阶段,并且时钟信号将与所有逻辑门(由晶体管制成)稳定的最坏情况下的时间一样长。然后,我们发明了管道内衬,其中将CPU分为多个阶段:取指令,解码,处理和写入结果。然后,该简单的4级CPU可以以原始时钟4倍的时钟速度运行。每个阶段都与其他阶段分开。这意味着您不仅可以将时钟速度提高到4倍(以4倍的增益),而且现在可以在CPU中分层(或“流水线化”)4条指令,从而使性能提高4倍。但是,现在创建“危险”是因为进入的一条指令可能取决于上一条指令的结果,但是因为 s流水线化,当它进入流程阶段,而另一个退出流程阶段时,它将无法获取。因此,您需要添加电路以将该结果转发到进入处理阶段的指令。替代方法是使管道停顿,这会降低性能。

每个流水线阶段,尤其是过程部分,可以细分为越来越多的步骤。结果,您最终将创建大量电路来处理管道中的所有相互依存关系(危害)。

其他电路也可以增强。称为“纹波进位”加法器的简单数字加法器是最简单,最小但最慢的加法器。最快的加法器是“进位超前”加法器,它需要大量的电路。在我的计算机工程课程中,我用了一个32位进位超前加法器的模拟器用尽了内存,因此我将其切成两半,两个带有脉动进位配置的16位CLA加法器。(对于计算机,加法和减法都很困难,乘法很容易,除法很难)

所有这些的副作用是,当我们缩小晶体管的尺寸并细分各个级时,时钟频率会增加。这样可以使处理器执行更多工作,从而使其运行温度更高。同样,随着频率的增加,传播延迟变得更加明显(流水线级完成所需的时间,信号在另一侧可用)。由于阻抗,有效的传播速度约为1 ft /纳秒(1 GHz)。随着时钟速度的提高,随着4 GHz芯片的最大尺寸为3英寸,其芯片布局变得越来越重要。因此,现在您必须开始包括其他总线和电路,以管理围绕芯片传输的所有数据。

我们还一直在向芯片添加说明。SIMD(单指令多数据),节能等均需要电路。

最后,我们为芯片添加了更多功能。在过去,您的CPU和ALU(算术逻辑单元)是分开的。我们将它们结合在一起。FPU(浮点单元)是独立的,也已合并在一起。如今,我们增加了USB 3.0,视频加速,MPEG解码等。我们将越来越多的计算从软件转移到硬件。


1

Majenko对于如何使用晶体管有很好的答案。因此,让我改用其他方法来处理效率问题。

设计某些东西时,使用尽可能少的晶体管是否有效?

这基本上可以归结为您在谈论的效率。也许您是某个宗教的成员,因此认为必须使用尽可能少的晶体管-在这种情况下,给出的答案非常多。也许您是一家制造产品的公司。突然,关于效率的简单问题变成了关于成本效益比的非常复杂的问题。

更重要的是,集成电路中的晶体管非常便宜,而且随着时间的推移它们越来越便宜(SSD是降低晶体管成本的一个很好的例子)。另一方面,劳动力非常昂贵。

在IC刚刚起步的时代,有一定的推动力以使所需的组件数量尽可能少。这仅仅是因为它们对最终产品的成本有重大影响(实际上,它们通常是产品成本的大部分),而当您制造成品的“盒装”产品时,人工成本就是散布在您制作的所有作品中。早期的基于IC的计算机(认为是视频游戏机)被推向尽可能小的每台成本。但是,固定成本(而不是单件成本)受您能够出售的数量的强烈影响。如果您只打算出售一对,那么花太多时间降低单件成本可能不值得。另一方面,如果您试图建立一个巨大的市场,

注意一个重要的部分-在设计用于批量生产的产品时,仅花费大量时间来提高“效率”才有意义。这基本上就是“工业”的含义-对于工匠而言,熟练的劳动力成本通常是制成品的主要成本,在工厂中,更多的成本来自材料和(相对)非熟练劳动力。

让我们快速前进到PC革命。当IBM风格的PC出现时,它们非常愚蠢。极度愚蠢。它们是通用计算机。对于几乎所有任务,您都可以设计一种可以做得更好,更快,更便宜的设备。换句话说,从效率简单化的角度来看,它们是非常低效的。计算器便宜得多,可以放在口袋里,并且可以长时间运行。视频游戏机具有特殊的硬件,使其非常擅长创建游戏。问题是,他们别无选择。PC可以做所有事情-它的价格/输出比要差得多,但是您并没有沉迷于制作计算器或2D Sprite游戏机。为什么《德军总部》和《毁灭战士》(以及在Apple PC上,马拉松比赛)出现在通用计算机上,而不出现在游戏机上吗?因为游戏机非常擅长基于2D精灵的游戏(想象典型的JRPG或类似Contra的游戏),但是当您想远离高效的硬件时,您发现没有足够的处理能力来做其他事情!

因此,效率似乎较低的方法为您提供了一些非常有趣的选项:

  • 它给您更多自由。将旧的2D控制台与旧的IBM PC以及旧的3D图形加速器与现代GPU进行对比,后者逐渐成为越来越多的通用计算机。
  • 即使最终产品(软件)在某些方面是“工匠”,它也可以提高批量生产效率。因此,像英特尔这样的公司可以比全世界所有单个开发人员更有效率地降低工作单元的成本。
  • 它为开发中的更多抽象提供了更多空间,从而可以更好地重用现成的解决方案,从而降低开发和测试成本,从而获得更好的输出。这基本上就是每个男生都能编写具有数据库访问和互联网连接功能的,基于GUI的成熟应用程序的原因,如果您必须始终从头开始,那么所有其他这些东西都将很难开发。
  • 在PC中,这通常意味着您的应用程序在没有输入的情况下随着时间的推移基本上变得更快。自由午餐时间现在已经过去了,因为提高计算机原始速度变得越来越困难,但它影响了PC的大部分使用寿命。

所有这一切是在一个晶体管的“废物”,但它不是真正的垃圾,因为真正的总成本更低比他们是,如果你被推为简单的“少晶体管作为可能的”。


1

“这么多晶体管”故事的另一面是,这些晶体管不是由人单独设计的。现代的CPU内核具有大约1亿个晶体管,并且没有人直接设计这些晶体管中的每一个。这是不可能的。75年的寿命只有23亿秒。

因此,为了使这种庞大的设计可行,与单个晶体管相比,人类要以更高的抽象水平来定义设备的功能。转换为单个晶体管的过程被称为电路综合,它是通过非常昂贵的专有工具完成的,这些工具多年来共同开发的总成本约为10亿美元,主要工具制造商和代工厂之间的总和为之。

电路综合工具无法生成具有最少数量晶体管的设计。这样做有多种原因。

首先,让我们介绍一下最基本的情况:任何复杂的电路都可以由具有足够内存的简单得多的串行CPU进行模拟。如果您只需将足够的串行RAM连接到Arduino,您就可以精确地模拟i7芯片。这样的解决方案将比真正的CPU具有更少的晶体管,并且将以1kHz或更小的有效时钟速率运行得非常慢。我们显然不打算晶体管数量减少去那么远

因此,我们必须将自己局限于某种设计到晶体管的转换:那些保持原始设计内置的并行容量的转换。

即使到那时,最小数量的晶体管的优化也可能产生使用任何现有半导体工艺无法制造的设计。为什么?因为您实际上可以制造的芯片是2D结构,并且仅需要一些电路冗余,以便您可以互连这些晶体管而无需一公斤金属。晶体管的扇入和扇出以及由此产生的栅极确实很重要。

最后,这些工具在理论上并不是完美的:考虑到可制造芯片的限制,通常需要太多的CPU时间和内存来生成在晶体管数量方面全局最小的解决方案。


0

我认为OP需要知道的是,“简单开关”通常需要多个晶体管?为什么?好吧,原因很多。有时需要额外的晶体管,以使“开”或“关”状态的功耗较低。有时需要晶体管来处理电压输入或组件规格中的不确定性。原因很多。但是我很明白这一点。查看运算放大器的电路图,您会看到几十个晶体管!但是,如果他们没有为电路发挥某种作用,他们就不会在那里。


0

基本上,计算机能够识别的所有数字都是0和1。这是由这些开关决定的。是的,晶体管的功能远不止于开关。因此,如果开关可以决定输出必须是0还是1(假设作为单个bi操作),则位数越多。更多的晶体管..因此,难怪我们为什么必须将数百万个晶体管嵌入到单个微处理器中.. :)


0

在技​​术时代,我们需要智能设备(小型,快速和高效)。这些设备由集成电路(IC)组成。晶体管。我们需要越来越多的晶体管来使IC更智能,更快,因为在电子产品中,IC中的每个电路都是由加法器,减法器,乘法器,除法器,逻辑门,寄存器,多路复用器,触发器,计数器,移位器,存储器组成的和微处理器等来实现设备中的任何逻辑,这些逻辑仅由晶体管(MOSFET)组成。借助晶体管,我们可以实现任何逻辑。所以我们需要越来越多的晶体管.....

在此处输入图片说明

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.