主流内存条位宽最大只有64位,为什么不做大一点?

admin 科技前沿 2024-08-10 15 0

细心一点的小伙伴可能已经发现了,我们正在使用的内存条它们的内存位宽最大只有64位,除了64位的内存条之外还有32位的内存条,可就是找不到位宽大于64位的内存条。

按道理来讲,内存条位宽越大,电脑的性能相应的也就更强一点,这也是一种可以有效提升电脑性能的办法。然而目前的事实是一众内存条厂家并没有去做位宽超过64bit的内存条,比如位宽128bit、256bit等大位宽的内存条。

这是为什么呢?

不得不说这可真是个大问题,考虑到它牵扯到的因素太多了,估计没个几千字恐怕都不能解释得很清楚。

在谈内存位宽之前我们必须先说一下CPU(中央处理器),因为CPU是现代计算机梦开始的地方,没有CPU也就不可能会有后续一系列PC硬件的诞生与发展。

众所周知,目前主流的CPU有32位与64位之分(即32 bit与64 bit),并且CPU发展到64 bit已经有很长一段时间了,我们似乎很难看到在64 bit之后有128 bit的CPU。

注:当然在此之前也有一些企业或者机构宣称他们已经捣鼓出128 bit的CPU,只不过绝大部分都是噱头,即便真的有128 bit的CPU也只是难以被推广至普通消费级市场的概念产品或者非纯正意义上的128 bit处理器。

因此,我们一般默认现阶段是没有128 bit的CPU的,包括128 bit的CPU要想正式进入普通消费者的家里是一件比较遥远的事。

那我们可能就会有疑问了,是CPU厂商懒得去捣鼓128 bit的CPU还是说128 bit的CPU在设计与制造的过程中有什么难以被克服的困难吗?

其实都不是的,如果现实要求我们必须拥有128 bit的CPU,不需要太长时间CPU厂商一定可以拿出128 bit的处理器。真正的问题在于128 bit的CPU给谁用?以及128 bit的CPU在如今这个市场中它真的能比64 bit的CPU更好用吗?

这里就涉及到CPU的瓶颈问题,它也是现阶段令工程师们最头疼的问题,即CPU热量密集度的问题。

CPU的位宽与流水线深度有关,而流水线深度又与CPU的时钟频率有关。正常情况下位宽越大的CPU需要配备更多级数的流水线,流水线级数上去之后CPU的时钟频率也会跟着提升,CPU的性能自然会有显著的提升。

目前主流级别的英特尔处理器都有20级左右的流水线深度,性能再拔尖一点的英特尔处理器它们的流水线深度能逼近30级,但遗憾的是20到30级左右的流水线深度将维持很长一段时间得不到进一步的突破。

具体原因有两个:

一个是在现有的架构、技术与理念之下CPU的单核频率无法得到大幅度的提升(从英特尔最近几年的10代、11代、12代、13代以及14代酷睿处理器中可以看出一点端倪),CPU热量密集度太高了,半导体材料越来越经不起这种折腾了,其中高温降频、性能不稳定以及漏电问题尤为突出。

既然CPU的频率提升之路已经遇到了瓶颈问题,与之关联的流水线深度自然也无法前进,CPU的位宽仍然停留在32位与64位也是很正常的。

从2005年开始以英特尔、AMD为首的半导体企业不得不开辟出多核/众核的发展路线,这也是不得已而为之的手段。

第二个原因是流水线级数太高也会带来一系列使用上的问题,除了CPU发热量过大之外,流水线级数太高会显著提高流水线错乱率与降低缓存命中率,当二者集中在一起爆发时用户的使用体验不说极其糟糕,有点糟心也是可以预见的。

……

之所以要花这么多内容讲CPU的原因在于要为我们讲述内存条做好铺垫。

在现代计算机体系结构之下(主要是指冯·诺依曼结构)内存条更多的还是在CPU服务。与其说内存条更多的是在为CPU服务,不如说内存条是CPU体系结构中不可或缺的一个环节。

在冯·诺依曼结构体系之下,内存条的位宽是向CPU的位宽看齐的。

在CPU的内部会存在远比64 bit更长的字节数据,而CPU的任务就要把这些既长又复杂的字节数据加工处理成简短且明了的字节指令,而CPU的位宽指的就是CPU能向片外传递的最长的指令字节长度。

CPU的位宽最高只有64 bit,则CPU向片外传出的单个指令字节也不会超过64bit,自然内存条最理想的位宽配置也不应当超过64 bit。想提高内存条的性能最好的办法是把多个64 bit的内存颗粒并联在一起,而不是简单粗暴的去加大内存条的位宽。

打一个比较形象的比喻就是这样的,内存条的位宽就好比公路的宽度,原来一条公路的宽度是6米,一次可供两辆汽车并排通过,现在我把这条公路的宽度加到9米,从理论上来说现在一条公路一次可供3辆汽车并排通过,但是我却永远观察不到或者很难观察到这条9米宽的公路上有3辆汽车并排通过的现象,原因是路上真的没有那么多的汽车啊,原来6米宽的公路就已经很够用了,把公路加到9米宽完全没有必要,它既不会加快车辆的穿行速度同时还会造成资源的极大浪费。

而在CPU的世界里字节数据对内存条位宽的运用和上面公路的例子有一点相像(但不完全相同),字节数据在通过内存条时是很机械的,字节数据在通过内存条时是高度遵循one by one的逻辑的,它并不会出现我们经常在马路上看到的并排行驶、超车、加塞等现象。

一条公路6米宽,两辆2.5米宽的车可以并排通过。

而在内存条里可不是这样的,两串32位的字节数据在通过64位的内存条时可不是我们所想象的并排通过,它是一串跟着一串前后通过的。

内存位宽是对最长的字节数据负责的,CPU是64位则说明有可能会出现64位这么长的数据,那么我们就需要备一根64位的内存条以应对这种可能。

在内存位宽够用的前提下,字节数据通过的速度快不快和内存位宽没有关系,与其加大内存位宽倒不如多开辟几条内存通道来得实际。

如果CPU的位宽只有64 bit,那么128 bit的内存单通道肯定没有64位的内存双通道好用。

#3月创作激励计划#

分享:

扫一扫在手机阅读、分享本文

标签列表