为什么没有256位或512位微处理器?


95

在8位微处理器中,其数据总线由8条数据线组成。在16位微处理器中,其数据总线由16条数据线组成,依此类推。

为什么既没有256位微处理器又没有512位微处理器?他们为什么不简单地增加数据线的数量并创建一个256位微处理器或512位微处理器?

阻碍创建256位微处理器或512位微处理器的障碍是什么?


20
甚至行销也不能永远增加数量。
奥林·拉斯洛普

82
为什么还没有256刀片剃须刀?
Rocketmagnet 2012年

11
@OlinLathrop签出Gillete Fusion Power,配备5个刀片和一个电池!
布伦丹·朗

6
答案与这个问题的答案相同:我们有1&2&3&4&5&6&8&12&16缸汽车。为什么我们没有32和64和128缸汽车?
罗素·麦克马洪

13
@罗素:因为那时全球范围内会出现气瓶短缺。
Olin Lathrop 2012年

Answers:


110

想一想。您究竟预想“ 256位”处理器是什么?是什么使处理器的位居首位?

我认为,如果没有进一步的限定条件,处理器的位长度就是指其ALU宽度。这是它可以在单个操作中本地处理的二进制数的宽度。因此,“ 32位”处理器可以在单个指令中直接对最大32位宽的值进行操作。因此,您的256位处理器将包含一个非常大的ALU,该ALU可以在单个操作中添加,减去,“或”,“与”等256位数字。你为什么要那样?哪怕处理器仅计算循环的100次迭代之类的情况,又有什么问题使大型且昂贵的ALU值得拥有并支付呢?

关键是,无论您使用大量的ALU还是仅使用其功能的一小部分,您都必须为此付出代价。为了证明256位ALU的合理性,您必须找到一个足够重要的问题,而这实际上可以从在单个指令中处理256位字真正受益。尽管您可能会想到一些示例,但这些问题还不足以使制造商感到他们将永远无法获得生产这种芯片所需的大量投资的回报。如果存在真正可以从广泛的ALU中受益的利基但重要(资金充足)的问题,那么我们将看到针对该应用的非常昂贵且高度针对性的处理器。但是,它们的价格会阻止在其设计的狭窄应用程序之外的广泛使用。例如,如果256位使某些密码学应用在军事上成为可能,那么可能会出现每个花费100至1000美元的专用256位处理器。但是,您不会将其中之一放入烤面包机,电源甚至是汽车中。

我还应该清楚,宽泛的ALU不仅会使ALU更昂贵,而且会使芯片的其他部分也变得更加昂贵。256位宽的ALU也意味着必须有256位宽的数据路径。仅此一项就需要大量的硅面积。数据必须来自某个地方,所以必须要有寄存器,缓存,其他内存等,才能有效地使用宽范围的ALU。

还有一点是,您可以在任何宽度处理器上执行任何宽度算术运算。您可以在8条指令中将32位存储字添加到PIC 18上的另一个32位存储字中,而您可以在只用2条指令扩展到32位的相同架构上进行操作。关键是狭窄的ALU不会使您无法执行广泛的计算,只是会使广泛的计算花费更长的时间。因此,这是速度而不是能力的问题。如果查看需要使用特定宽度数字的应用程序范围,您将看到很少需要256位字。用硬件加速仅对少数几个应用程序起作用而对其他应用程序无济于事的代价是不值得的,并且不能为产品开发做出好的投资。


9
我讨厌这样说,但在这里我不同意。让我想一个例子:视频游戏的图形渲染。您可能听说过这是一个价值数百亿美元的小市场。
Rocketmagnet 2012年

39
@Rocket:首先,OP询问了一个微处理器,而不是图形处理器。其次,图形渲染不需要特别宽的文字。许多较小的操作可以并行完成,但是我不会将8个CPU内核并行地称为“ 256位”处理器,每个内核处理32位数据。您是否将四核PC称为“ 256位”处理器,只是因为每个核都可以本机处理64位数据?我认为这是对术语的误用,甚至英特尔营销似乎也没有以这种方式推销多个内核。
Olin Lathrop 2012年

30
@Rocket:SIMD是一种不同类型的并行性,但是我仍然不会称其为宽泛的ALU,只是一堆小的ALU紧密并行运行。例如,在这样的SIMD处理器上,您无法对所有进位进行256位加法。并行性与更广泛的ALU不同。您似乎正竭尽全力相反。也许您可以争论什么是平行的还是更广泛的,但是要使用非常规的定义然后声称其他解释是惊人的错误,这只是在进行小便大赛。
奥林·拉斯洛普

15
@Rocket:仅仅通过并行执行一堆操作就可以一次在256位上运行CPU并不能使它成为“ 256位” CPU。这意味着它实际上可以直接在256位宽的数字上工作,而事实并非如此。就像您自己说的那样,独立的并行ALU单元之间没有进位,因此它不是256位ALU。您似乎对CPU的位数有一个不寻常的定义。它不是一次可以处理的位数,而是一个整体可以处理的字宽。
奥林·拉斯洛普

19
当我在学校时,我们被告知,软件人员根据“逻辑”指令集宽度来测量位,而硬件人员则根据总线宽度来测量位。因此,8088对软件人员来说是16位处理器,对硬件人员来说是8位处理器。8086对每个人都是16位的。当然,市场人员会找到他们所能找到的最大数量,所以让我们希望他们不要阅读此注释线程并开始销售512位CPU!:-)
马克·哈里森

34

好吧,我不知道256或512位,但是我听说过1024位处理器(我现在找不到)。这个单词是VLIW,表示非常长的指令单词。这就是指令总线,而不是数据总线宽度。优点是您可以大规模实现指令级并行(ILP)

我第一次接触ILP一定是20年前的Motorola DSP,它具有在将数据移入和移出内存时执行MAC(乘法和累加)指令,以便您可以在下一条指令上执行新的MAC,而不会浪费在两个MAC之间移动数据的时间。
如今,也有通用控制器提供此选项。VLIW可以更大规模地应用它。

由于您的数据总线宽度不会那么宽,因此您可以在一条指令中包含多个指令以及常量。数据总线不遵循趋势的原因是,它非常无用;64位数据寄存器可以代表20个十进制数字。您上次需要20位数的精度是什么时候?对于大多数应用,10 =。20

进一步阅读
VLIW体系结构


大部分财务计算方法:(现在遇到了这个问题
我很困惑

我以为x86是VLIW CPU。;-)
Macke 2012年

1
@MarcusLindblom仅当通过VLIW表示可变长度指令字时。;-)
CVn 2012年

3
@ AK4749在这种情况下,使用“真实”会计规则处理您的交易的银行可能会抛弃您的预测。这意味着如果您要根据这些规则执行计划,那么它将不会给出预期的结果,因为真实的银行将使用真实的会计规则,而不是毫微微分的精度。当然是因为市场不确定。因此,如果一开始出现1美分的误差会在输出中带来1万亿美元的误差,那么那1万亿美元仅仅是模拟效果,而不是客户应该用来制定计划的东西。
Photon

1
当然,他们永远不会使用长达十年的预测作为当前决策的基础,即使我作为程序员也不会如此愚蠢。但是,(很明显,我们已经解决了发散错误的问题,所以它不存在),实际上,最大的客户确实出于不愿向供应商透露的恶意目的而需要这些类型的功能。此外,在金融领域工作了两年的人,我可以告诉您,金融公司实际上确实使用了更高的精度计算(1/2)
我很困惑

28

微处理器的“位数”通常是根据通用寄存器的大小来定义的。大小决定了处理器可以本地处理多少个数字以及可以访问多少内存。64位数字几乎可以满足所有算法的需要,可寻址内存(1600万兆字节)的容量在相当长的一段时间内就足够了。增加通用寄存器的大小根本没有任何优势。在另一方面,用于对寄存器执行操作的算术逻辑单元(ALU)的面积与位数的平方成比例。256位ALU会大16倍,并且速度会慢得多。

另一方面,加宽处理器的意义在于可以一次执行许多较小的操作。实际上,英特尔的Sandy Bridge和Ivy Bridge处理器就是这样做的,它们具有256位SIMD寄存器,并且每个周期可以对它们执行两次算术运算和一个存储器运算。因此,如果一个偷偷摸摸的营销商想要改变常规使用的术语,那么可以称他们为256位甚至768位处理器。


这是一个令人印象深刻的体系结构。
TrygveLaugstøl2012年

6
+1表示“想弯腰定期使用的字词的行销商”。
丹·尼利

14

首先,处理器的位大小通常由机器语言程序员可见的抽象体系结构确定,而不是由数据总线大小之类的实现细节确定。

例如,摩托罗拉68000是32位处理器。它具有32位数据寄存器和32位地址寄存器。现在,该体系结构家族的第一个版本仅公开24位地址线。此外,存在仅具有8位数据总线的变体(因此,作为多个访问周期,处理器将执行32位存储操作)。

现在讨论这个问题,为什么不转到256和512。处理器“本机”处理几种数据类型,因此分别查看256或512位对于这些数据类型的含义是有帮助的。我们有整数,指针和浮点类型。

  1. 整数:程序从32位和64位整数中获得了很多收益。如果限制为64位,则解决方法是使用软件实现的bignum整数。高级语言可以实现整数类型,以便操作可以在“ fixnums”和“ bignums”之间平滑切换。当然,您会对bignum造成性能上的损失,但是必须从整体上考虑:程序中有多少个操作是bignum操作。256或512位数字并不能消除对bignum的需求,它们只是在我们必须切换到bignum之前增加了净空。如果您要操作2048位公共密钥,则不会使用512位整数(但是具有512位数字的bignum可能会很快)。

  2. 指针:较宽的指针允许两件事:较宽的地址空间以及存储在指针中的其他元数据。这些天地址空间是虚拟的,因此即使内存不增加,地址空间也可以增加。有人建议,如果您有128位指针,那么地址空间是如此之大,以至于您可以将操作系统和内核的所有用户空间进程放在一个不受保护的空间中的任意位置,这不太可能碰撞。不仅可以简单地创建更大的地址空间,还可以使用胖指针来承载不是地址位的位,例如有关引用对象的信息(类型,大小和其他信息)或与安全性有关的信息。这种事情可能会有一些“最佳肥胖”,而且如果我猜到了,我仍将其限制为128位。它没有 转到256位指针似乎是有意义的,不用管512。指针指针有一个缺点:它们会使包含指针的所有数据结构膨胀。而且,通常,您希望指针的大小相同,否则,在指令集体系结构(如内存段)中需要复杂化,因此您将拥有完整的指针(段描述符和偏移量)或仅局部指针(在某些可理解段内的偏移量) 。

  3. 浮点类型:浮点数中的更多位意味着更高的精度。我要说的是,浮点类型从更广泛的表示中受益最大。256或512位浮点类型将提高数字代码的稳定性以及需要多次迭代的科学计算的质量,并在此过程中累积错误。浮点精度与整数精度不同:我们无法将浮点类型划分为fixnums与bignums之类的范围。浮点数的更高精度会影响所有不精确数字的质量,无论它们接近于零还是具有较大的数量级。浮点指数中更多的位还可以极大地扩展浮点数的范围,并且比将位添加到bignum整数要快得多。

由于这些原因,我怀疑主要的未来趋势将是硬件浮点数的宽度增加,而不一定是指针和整数的宽度增加。

请记住,过去浮点数已经领先于其他类型。例如,一段时间以来,我们主要使用32位处理器支持64位IEEE双浮点数。这是因为尽管您可以使用32位指针和整数完成很多工作,但是32位浮点数对于任何严肃的数字工作来说都是非常有限的。

很高兴看到浮点表示中出现的一个非常非常有用的功能是为类型标记提供一些备用位。用动态的高级语言(对象具有类型,但是存储位置保存任何类型的值)来实现浮点类型是一项艰苦的工作,因为可以在指针和类似整数的对象中找到备用位来放置识别类型标记,这很难处理浮点数。因此,最终经常发生的是浮点数被堆分配。有些方案会从尾数中窃取位,因此与同一台机器上其他语言的浮点数相比,该语言的浮点类型会失去精度。


不错的描述。顺便说一下,常见的x86处理器已经有80位浮点很长时间了,如果我没记错的话,自从第一个硬件浮点单元开始以来。80位在FPU内部,然后通常导出32或64位。
Olin Lathrop '10

从技术上讲,已经完成了。谷歌“南拳”或“修女拳”。更有前途的是64位ARM中的硬件类型标签,但是不幸的是不会很快。
whitequark 2012年

3
可以直接访问80版本。上世纪90年代,当我学习用TurboPascal编程时,有一个80位的float类型。
丹·尼利

@DanNeely:我有时认为处理器会从3d坐标浮点类型中受益,将三个80位数字组合成一个256位块,或者将三个42位数字组合成一个128位块,或者三个将21位数字转换为64位块。我不知道这样的事情实施起来有多难,最终会变得有用吗?
supercat

@supercat GPGU Wikipedia:[NVidia] GPU上的大多数操作都以矢量化方式操作:一个操作可以一次对多达四个值执行。例如,如果一种颜色<R1,G1,B1>要由另一种颜色<R2,G2,B2>进行调制,则GPU可以在一种颜色中生成结果颜色<R1 * R2,G1 * G2,B1 * B2>操作。
卡兹(Kaz)

9

它实际上并没有帮助您做任何有用的事情。64位数字可为几乎所有目的提供足够的精度(尽管Intel系统具有80位浮点数),但是多余的行会增加成本和功耗,同时对时钟速度有较小的负面影响。

从历史上看,CPU使用的最小位数对于其预期目的是切实可行的。随着技术的进步,更广泛的总线和ALU成为可能,因此总线尺寸的增加可满足更广泛的适用性:

  • 4位:足够用于一位数字,因此对于(BCD样式)计算器,收银机等(这是一个相当有限的区域)非常实用
  • 8位:足够用于一个(ASCII)字符,适用于文本处理系统(面积非常大),也适用于低质量的声音
  • 16位:当流行16位时,2 ^ 16的内存地址是一个合理的数量(至少比2 ^ 8或2 ^ 32更合理)。16位产生的音频质量是可以接受的,并且大多数A / D转换器产生的结果少于16位,因此用16位的此类值进行计算是有意义的
  • 32位:32位适合大多数(但不是全部)人工测量的量,并且除非您要处理大型数据库,否则2 ^ 32个地址对于大多数实际目的而言已足够。
  • 64位:现在具有> 2 ^ 32字节的内存。
  • 128位:目前,除了加密之外,与32位相比几乎没有优势。我们何时预计硬盘上会超过2 ^ 64个字节?可能不会很快。

1
“ 640K对任何人都应该足够。”-比尔·盖茨(Bill Gates)(1981)
吉比

6
@jippie-盖茨从没这么说过。
Rocketmagnet 2012年

1
实际上,大多数8位CPU能够寻址2 ^ 16字节的内存,而16位苦味剂2 ^ 32,80386(32位)理论上也可以寻址2 ^ 64字节(4GB)的内存,这本来就没有用无论如何,在那些日子里……
Axel 2012年

1
20

3
@Michael-一直以来,我在整个职业生涯中都看过它:很少有真正有远见的产品经理。轶事:1970年代初,在罗伯特·诺伊斯(Robert Noyce)关于微处理器的未来的演讲中,他预测了当前的小型化,听众中有人说:“该死,我不想在地板上裂开整个计算机。” 诺伊斯轻蔑地回答道:“你根本不了解它。你不在乎失去的那个人;你将拥有成千上万的其他人。” 那是1970年代初。罗伯特·诺伊斯(Robert Noyce)是一位有远见的人。
stevenvh 2012年

9

实际上,取决于您定义位的方式,此类处理器存在并且很常见。您几乎可以肯定现在正在使用它。正如Olin所解释的,256位数字没有太多用途,但是4 x 32位数字呢?如果ALU可以同时添加4对32位数字,该怎么办。这种ALU(我知道)最早是在1970年代在矢量超级计算机中实现的。我第一次拥有这样的计算机是当我拥有一部带有MMX的英特尔奔腾处理器时。

英特尔MMX家伙

还记得那些家伙吗?

MMX芯片具有单指令多数据指令集(SIMD),使您可以添加1×64位对,2×32位对,4×16位对或8×8位对。

但这没什么。现代的图形卡具有GPU(以前代表图形处理单元,但现在代表通用处理单元)。这些通常是广泛的SIMD实现,能够一次分支,加载和存储128或256位。英特尔的Larrabee原型微体系结构在每个内核上都包含两个以上的512位SIMD寄存器。

GPU SIMD

请注意,请勿将SIMD与多核混淆。CPU的每个内核将具有自己的宽ALU,能够将一组整数相加。


1
“ 1×16位对,2×32位对,4×16位对或8×8位对”您确定该零件正确吗?
CVn 2012年

4
乍一看,它看起来像是带有Intel徽标的Kraft Single
Chris Laplante

4
4x32位变量仍然只有32位。位数是ALU可以操作的最大单个整数。并行执行多次不会增加位宽。-1
康纳·沃尔夫

3

因为我们还不需要它。

通常,位数(我将其定义为寄存器中的位数)或多或少直接转换为可寻址内存的数量。这当然得到了简化,因为取决于处理器,寄存器可能是位长度的2倍,或者存在规避那些内存限制的技术(那里有人记得在16位窗口上进行编程吗?)。


3

“为什么不简单地增加数据线的数量并创建一个256位”

实际上,所有适合LGA-2011插槽的英特尔处理器都具有256个数据引脚,这些引脚连接到主板上的256条数据线,这些数据线通向DRAM。如果您使用的最新笔记本电脑或台式机没有至少256条数据线,我会感到有些惊讶。请问您有何误解,他们“不……只是增加数据线的数量”?

所述LGA-2011插座数据表,第6.1节,表明这些CPU具有256个数据引脚和76个的地址引脚(存储体地址+存储器地址)。


-1

因为没有应用程序需要或有可能一次使用128位以上的数据表示数据。

而且您知道,多媒体处理器和图形卡将在主板CPU之前出现,这是因为照片/视频可以同时使用如此大的数据长度来进行处理。


-4

计算机系统就其意义而言是一台计算机,它需要一些输入并提供一些输出。我们必须满足这些方面的计算机要求,因此开发人员通过拥有3条总线(即地址总线,数据总线和控制总线)来建立基准。1)地址总线获取/选择存储器中的特定地址,以进行读/写操作。2)然后,数据总线从处理器和内存中获取/呈现此数据以用于处理/存储目的。3)控制总线创建接口控制协议,并要求系统遵守该协议。

这些对于执行用户/服务器/客户端的有用计算是必需的。通常,性能(完成任务的速度,减少毛刺等)取决于清除系统中的瓶颈。即,如果CPU能够以比硬盘驱动器的传输速度高得多的速率进行处理,则瓶颈将出现在HDD上。同样,我们需要针对特定​​的数据速度和代码宽度具有正确的处理速度。

从一开始,由于各种原因,例如硬件复杂性,成本,要求,有效的算法以及市场范围是产生高数据总线宽度的主要障碍的主要原因,正如问题主机所提到的,例如256位或512位。这些都是可能的!但是需求还不存在,市场的需求还不明显,并且缺乏免费的软件支持。

256位处理器表示特定处理器可以处理的数据总线的宽度,或者ALU可以在单个执行中处理的宽度。我们从4位开始,然后是8、16、32,现在是64位,甚至是128位,这是目前的市场范围产品。

因此,在提出这些问题之前,您必须始终看到市场需求及其范围。在历史上,这是理解生活方式的唯一直接方法。如果买不起,怎么买?如果您不能购买,生产者将如何生产?如果他不能生产,那该产品就不存在了!


6
大写的名词使这很难读。
pjc50

嗯,是的,我需要开始这样做。
克里希纳

@ pjc50也许他来自德国?哦,等等,“问”和“买”也要大写,也许不是...
Alex
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.