草庐IT

你们用的内存可能差点就不是DDR了

柏景福 2023-03-28 原文
算上显存的话,DDR DRAM至今已经发展到了第六代,也就是说DDR5内存正在逐步成为市场主流,但是它的“老祖宗”--即初代的DDR内存的普及却是险中求胜,只因为当时它有个蹩脚的对手——Rambus DRAM。

从奔腾二到奔腾四初期,电脑用的内存为SDRAM,常见有PC100、PC133等频率,内存带宽达到1064MB/s,但已经无法满足奔腾四4这个CPU的“胃口”,新一代内存呼之欲出。为了提升内存的带宽,以及达到独占市场的目的,Intel与一家叫做Rambus的公司联合推出了Rambus DRAM内存(简称为RDRAM)。

和SDRM相比,Rambus DRAM采用了RISC(精简指令集计算机)理论,依靠更高的时钟频率(包括300MHz、350MHz和400MHz)来简化每个时钟周期的数据量,其数据通道接口只有16bit(由两条8bit的数据通道组成),远低于SDRAM的64bit。

由于Rambus DRAM采用双速率传输结构,同时利用时钟脉冲的上升与下降沿进行数据传输,因此在300MHz下的数据传输量可以达到300MHz×16bit×2/8=1.2GB/s,400MHz时可达到1.6GB/s,双通道PC800MHz RDRAM的数据传输量更是达到了3.2GB/s,因此一度被认为是奔腾四的绝配。

同时,不要以为内存带散热马甲是近几年的事,因为Rambus DRAM一出生就是自带散热马甲的,如下图,而且仔细观察散热马甲还是用铆钉永久固定在PCB上的,同时内存上还贴有发热的标识。

更有意思的是,这款内存的DRAM颗粒既不是早期的TSOP封装,也不是现在常见的BGA封装,而且是采用一种系统封装模式,从下面这张满是水印的拆截图可以看到,每颗DRAM的颗粒就像CPU的内核一样是裸露的晶片,因此才使用这种永久性的散热马甲封装,其发热量可见一般。

更有意思的是,Rambus DRAM采用了类似串行的数据传输方式,从下面的原理来看,数据依次通过RIMM1到RIMM2,因此Rambus DRAM内存必须要成对使用,可以说是“返古”了。

不要以为这就完了,因为Rambus DRAM内存系统在主板上还不能留有空槽,不然依然无法实现数据传输,需要有RSL信号终结器。当然这东西并不是什么高科技电子元器件,实际上它只是一根金手指数量与RamBus内存相同的PCB!

因此,这种结构的主板,不仅单根内存出现问题会导致系统无法通过自检,如果内存在插槽上的安装的位置不对同样会无法通过自检。而且各家主板的定义不同,例如有的主板是1、2槽插内存,3、4槽插RSL信号终结器,而有的主板则是交叉安装。

得到了Intel的“宠爱”,Rambus DRAM不禁飘飘然,售价比SDRAM高了一倍左右,但成本仅比SDRAM高了3%。除此之外,其他的内存厂商想要生产Rambus DRAM内存,不仅需要打造全新的生产线,还要向Rambus缴纳高昂的专利费。

因此生产Rambus DRAM内存的厂商仅有三星等少数几家,不仅市面上内存难买,更出现了Intel购买奔腾4 CPU就搭售Rambus DRAM内存的窘境。

正所谓“天欲让其亡,必让其先狂”,受制于高昂的价格,以及成对使用+终结器的奇葩工作原理导致的高使用成本,Rambus DRAM终究没有实现普及。

而售价更低的DDR DRAM内存受到市场的欢迎,而Intel后来也开始默认使用DDR内存,Rambus DRAM在市场掀起短暂的浪花之后终于消失于历史的长河之中。​

有关你们用的内存可能差点就不是DDR了的更多相关文章

  1. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  2. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  3. ruby-on-rails - Ruby 中的内存模型 - 2

    ruby如何管理内存。例如:如果我们在执行过程中采用C程序,则以下是内存模型。类似于这个ruby如何处理内存。C:__________________|||stack|||------------------||||------------------|||||Heap|||||__________________|||data|__________________|text|__________________Ruby:? 最佳答案 Ruby中没有“内存”这样的东西。Class#allocate分配一个对象并返回该对象。这就是程序

  4. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  5. 键删除后 ruby​​ 哈希内存泄漏 - 2

    你好,我无法成功如何在散列中删除key后释放内存。当我从哈希中删除键时,内存不会释放,也不会在手动调用GC.start后释放。当从Hash中删除键并且这些对象在某处泄漏时,这是预期的行为还是GC不释放内存?如何在Ruby中删除Hash中的键并在内存中取消分配它?例子:irb(main):001:0>`ps-orss=-p#{Process.pid}`.to_i=>4748irb(main):002:0>a={}=>{}irb(main):003:0>1000000.times{|i|a[i]="test#{i}"}=>1000000irb(main):004:0>`ps-orss=-p

  6. ruby-on-rails - 只有当不是 nil 时才执行映射? - 2

    如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e

  7. ruby-on-rails - HTTParty 的内存问题和下载大文件 - 2

    这会导致Ruby出现内存问题吗?我知道如果大小超过10KB,Open-URI会写入TempFile。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存吗?src=Tempfile.new("file.pdf")src.binmodesrc.writeHTTParty.get("large_file.pdf").parsed_response 最佳答案 您可以使用Net::HTTP。参见thedocumentation(特别是标题为“流媒体响应机构”的部分)。这是文档中的示例:uri=URI('http://e

  8. ruby-on-rails - Rails 格式验证——字母数字,但不是纯数字 - 2

    什么是测试格式验证的最佳方法让我们说一个用户名,使用字母数字的正则表达式,但不是纯数字?我一直在我的模型中使用以下验证validates:username,:format=>{:with=>/^[a-z0-9]+[-a-z0-9]*[a-z0-9]+$/i}数字用户名(例如“342”)通过了验证,这是我不想要的。 最佳答案 您想“向前看”一封信:/\A(?=.*[a-z])[a-z\d]+\Z/i 关于ruby-on-rails-Rails格式验证——字母数字,但不是纯数字,我们在Sta

  9. ruby-on-rails - 在 Rails 3 中进行身份验证最常用的方法是什么? - 2

    我需要在rail3中使用标准注册/登录/忘记密码功能进行身份验证。是否有大多数人为此使用的插件或其他东西? 最佳答案 我不确定最常用的方法是什么-但可以肯定的是,Plataformatec的“Devise”是一个非常流行的方法:http://github.com/plataformatec/devise我已经尝试了一些authgem,对我来说,它是最简单的设置和修改以满足我的需要。它内置了密码恢复、帐户确认(如果需要)和其他一些非常方便的功能。 关于ruby-on-rails-在Rail

  10. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

随机推荐