0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么核心频率没有什么太大的进步呢

冬至配饺子 来源:开发内功修炼 作者:张彦飞allen 2022-08-30 16:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

从2001年DDR内存面世以来发展到今天,已经走过了DDR、DDR2、DDR3、DDR4四个大的规格时代了(DDR5现在也出来了)。内存的工作频率也从DDR时代的266MHz进化到了今天的3200MHz。这个频率在操作系统里叫Speed、在内存术语里叫等效频率、或干脆直接简称频率。这个频率越高,每秒钟内存IO的吞吐量越大。但其实内存有一个最最基本的频率叫核心频率,是实际内存电路的工作时的一个振荡频率。它是内存工作的基础,很大程度上会影响内存的IO延迟。我今天想给大家揭开另外一面,这个叫核心频率的东东其实在最近的18年里,基本上就没有什么太大的进步。

1、内存Speed

Linux上可以查看到你机器上内存的Speed。

poYBAGMNzkSAJAmUAACwXtGpIFc773.png

上述命令可以看出每一个插槽上内存物理设备的情况,由于结果太长我只抽取了其中一个内存的信息列了出来。对于我们开发者来说,其中有两个数据比较关键。

Speed: 1067 MHz:每秒能进行内存数据传输的速度,

Data Width: 64 bits:内存工作一次传输的数据宽度

我的机器上所有的内存条的Speed都是1067(大家别笑话,因为我的测试机器是线上过保淘汰下来的机器,所以老了一点点)。把Data Width和Speed相乘后得到的就是数据带宽了。我们把历史上各个阶段的内存的Speed和带宽汇总了一下,如下图。

poYBAGMNzlmAOOBiAACW4M7-ekM670.png

2、内存背后的秘密-核心频率

通过Linux我们只看到了内存的一个Speed,它是数据传输的频率。这个频率又叫Data Speed,或等效频率。各个商家在内存的销售页面上也把这个频率标在特别明显的位置,提醒消费者他家的内存有多快多快。但其实从内存条的技术参数上来讲,有个最为重要的频率,是核心频率,它是内存电路的震荡频率,是内存一切工作的基石

我们来看一下各代内存的更全面详细的数据。

poYBAGMNzniAcrwwAAEkafgGsPg889.png

我汇总了从SDR时代,一直到目前主流的DDR4的内存的频率表对比。大家可以看到核心频率已经多年没有实质性进步了,这是受物理材料的极限限制,内存的核心频率一直在133MHz~200MHz之间徘徊。我们所看到的内存Speed是在这个核心频率的基础上,通过各种技术手段放大出来的。之所以我们感觉内存在越来越快,就是放大技术手段在不断进步而已。

SDR时代:在最古老的SDR(Single Data Rate SDRAM)年代里,一个时钟脉冲只能在脉冲上沿时传输数据,所以也叫单倍数据传输率内存。这个时期内存的提升方法就是提升内存电路的核心频率。

DDR时代:但是内存制造商们发现核心频率到了200MHz再提升的话,难度就很大了。所以在电路时钟周期内预取2bit,输出的时候就在上升期和下降期各传输一次数据。所以核心频率不变的情况下,Speed(等效频率)就翻倍了。

DDR2时代:同样是在上下沿各传一次数据,但将Prefech提升为4,每个电路周期一次读取4bit。所以DDR2的Speed(等效频率)就达到了核心频率的4倍。

DDR3时代:同样也是上下沿各传一次数据,进一步将Prefect提升为8。所以DDR3的等效频率可以达到核心频率的8倍。

DDR4时代:这时预取的提升已经非常困难,所以和DDR3一样,Prefech仍然为8。内存制造商们又另辟蹊径,提出了Bank Group设计。允许各个Bank Group具备独立启动操作读、写等动作特性。所以等效频率可以提升到核心频率的16倍。

内存还有个概念叫IO频率、也叫时钟频率。简单理解为将DDR内存的Speed频率除以2,就是内存的IO频率。这个必须和CPU的外频相匹配才能工作。例如对于DDR3来说,假如核心频率133Mhz的内存工作频率下,匹配533MHz的CPU外频,其IO频率就是533Mhz。数据传输因为上下沿都可以传,所以是核心频率的8倍,也就是1066MHz。

我曾试图在Linux下找到能查看核心频率和IO频率的命令,但是没有找到,在售的各种内存条似乎也很少会提及它。但我们是IT从业人员,非普通用户。因此我觉得大家有必要来了解这个原理。(事实上,这两个频率会影响后面讨论的内存的延迟参数,而延迟参数又决定了内存的真正性能)

汇总一句话,内存真正的工作频率是核心频率,时钟频率和数据频率都是在核心频率的基础上,通过技术手段放大出来的。内存越新,放大的倍数越多。但其实这些放大手段都有一些局限性。比如你的内存数据存储并不连续,这时候DDR2、DDR3的数据预取对你帮助并不大。再比如你的进程数据都存在一个Bank Group里,你的进程内存IO就根本不会达到DDR4厂家宣传的速度。

3、扩展:内存延迟

除了频率以外,内存还有几个比较重要的参数,但是同样在Linux里没有找到查看的命令。内存的销售页面想找到这几个参数也不是特别容易。

所有的内存条都有CL-tRCD-tRP-tRAS四个参数。其中最重要的是CL-tRCD-tRP这三个参数,只要你费点劲,所有的在售内存你都能找到这3个值。例如经典的DDR3-1066、DDR3-1333及DDR3-1600的CL值分别为7-7-7、8-8-8及9-9-9。现在京东上一条比较流行的台式机内存金士顿(Kingston)DDR4 2400 8G,其时序是17-17-17。

第四个参数有时候会被省略。原因有二,第一:现在的开发者不需要直接和内存打交道,而操作系统呢又做的比较内存友好,很少会有这个开销真正发生。第二,这个开销的值要比其它的值大很多,实在不太好看。商家为了内存能多卖一些,干脆就避而不谈了。

好了,问题来了。为什么内存越进步,延迟周期反而会变大了呢?

这就是因为延迟周期使用延迟时间除以内存Speed算出来的。这其实根本就不科学,最科学的办法应该是用延迟时间来评估。

延迟时间很大程度上是受内存的核心频率的制约的。而这些年核心频率又基本上没有进步,所以延迟时间也不会有实质的降低。内存的制造商们又为了频率数据好看,能多卖些内存,非得采用Speed作为主周期来用。导致在用这个周期一衡量,貌似延迟周期就越来越大了。今天就带大家了解到这里,后面我会用实验来让你理解你的内存的实际延时。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR
    DDR
    +关注

    关注

    11

    文章

    748

    浏览量

    68551
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76121
  • Linux系统
    +关注

    关注

    4

    文章

    609

    浏览量

    29646
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    铷原子频率标准 石英频标 基准频率

    频率
    jf_47371611
    发布于 :2025年11月12日 14:27:06

    铷原子频率标准特点介绍

    频率
    落秋的大西北
    发布于 :2025年11月05日 11:27:32

    开关电源调节频率被限制的原因有哪些

    当然,随着器件的进步,开关管开关速度会变得越来越快,特别是在低电压和低功率应用中。仅考虑设备本身的开关速度,开关频率可能会很高,但实际并没有,有开关损耗的限制。
    的头像 发表于 10-30 14:27 2089次阅读
    开关电源调节<b class='flag-5'>频率</b>被限制的原因有哪些

    rtthread线程出现异常了,有没有什么钩子函数能够定义用户操作?

    线程出现异常了,有没有什么钩子函数能够定义用户操作????
    发表于 09-18 06:36

    请问有没有什么方法可以通过PSoC5LP将配置数据编程到BCR plus?

    没有什么方法可以通过 PSoC5LP 将配置数据编程到 BCR plus? 我们希望通过 PC 使用 BCR plus 将配置二进制数据编程到原型板中。但是,该主板没有像CY4534那样的USB
    发表于 08-15 06:42

    没有什么修复方法可以确保 AP 模式下的 Wi-Fi 和 BLE 连接同时正常工作?

    我正在使用 CYBSYSKIT DEV 01 套件。我尝试在 AP 模式下打开 Wi-Fi 并宣传 BLE。我可以宣传 SoftAP 和 BLE。但是,我无法从中央设备连接到 BLE。它可以立即连接并断开连接。有没有什么修复方法可以确保 AP 模式下的 Wi-Fi 和 BLE 连接同时正常工作?
    发表于 07-17 06:13

    ADS1298 tdr的值到底是多大,跟采样率等有没有什么关系?

    我想请问一下, 1、tdr的值到底是多大,跟采样率等有没有什么关系。数据手册上只找到建立时间,好像没有这个时间的值,28页那个最小SCLK时钟为110khz是怎么计算的。 2、 tdr到底是
    发表于 02-13 06:11

    TLC5510如何得到高频率的时钟信号

    TLC5510模数转换芯片,如果我需要转换10M的信号,那么芯片的采样时钟频率则至少需要20M,或者更大,单片机无法产生这么高的时钟频率,我该如何得到高频率的时钟信号
    发表于 02-08 07:18

    ADS62P42IRGCT按照datasheet上的参考电路设计,有没有什么办法能够调整通道2的空采偏置

    100。考虑到两个通道的幅度一致性,在保证参考电路中两个25欧姆电阻的和不变的同时,调整其电阻比例。但是通道2的idle noise基本不变。有没有什么办法能够调整通道2的空采偏置
    发表于 01-24 06:41

    DAC5672的输出频率是多少

    DAC的datesheet上只给出如图 这不是输出频率吧?那输出频率是多少
    发表于 01-15 07:48

    ADS1274采样数据波动太大怎么解决?

    据太少,因为我们时间有要求,所以采样不能超过1ms。 请帮忙分析我们数据波动太大可能的原因。 另外,请问硬件上CLDDIV这个pin脚是否可以直接连到3.3V?还有目前我们16位精度基本可以满足的的情况下,能否更换为ADS1174?会不会ADS1174的实际精度变为12位
    发表于 01-03 07:39

    ADS8568采集到的数据有正确的也有乱的,基本上没有什么规律,是哪里出了问题?

    我自己制作的板子,焊接的ADS8568,现在采集到的数据有正确的也有乱的,基本上没有什么规律,不知道ADS8568对走线有没有特殊的要求,是不是我PCB的走线不规范导致的,求教
    发表于 12-26 06:27

    ADS5407对于channel A和B有没有什么对应关系?

    每个ADS5407片子,都有2对SYNCOUTP/N管脚 1.对于channel A和B有没有什么对应关系? 2.针对多片ADCs同步应用中,如果每片5407只接一对SYNCOUT到FPGA,能否可行?
    发表于 12-25 07:12

    多路ADS1271异步采集互相干扰有没有什么好的解决办法吗?

    所有的磁珠现在都是0欧姆 我们做实验怀疑是,ADC的启动和停止会造成模拟5V负载的变化导致输出的5V变化,有没有什么好的解决办法吗?
    发表于 12-24 06:29

    使用SRC4192输出底噪杂音太大的原因?

    有声音,但是底噪太大。去掉芯片,音频连接到DSP,没有问题。 MODE2 MODE1 MODE0都直接连接到地。OFMT1连接到地,OFMT0连接到3.3V,OWL1,OWL0连接到地。IFMT0连接高电平,IFMT1,IFMT2连接到地。从资料看,选择模式
    发表于 12-11 07:59