找回密码
 加入我们
搜索
      
查看: 6092|回复: 16

[内存] 其实很想知道内存多通道的实际原理

[复制链接]
发表于 2023-3-2 16:47 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2023-3-2 16:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 16:50 | 显示全部楼层
单核心,单线程,顺序执行,就是你说的情况,内存也是严格按照队列读写。

但现在的CPU都是。。。。多核心 多线程 乱序执行
这种情况下多通道的收益就非常可观了。。。。
 楼主| 发表于 2023-3-2 16:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 16:57 | 显示全部楼层
.. 你是不知道有缓存么
基本所有的 cpu 访存请求根本不接触内存
 楼主| 发表于 2023-3-2 17:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 17:05 | 显示全部楼层
slymitec 发表于 2023-3-2 17:02
先不分析缓存。

这问题不分析缓存还分析个毛?
 楼主| 发表于 2023-3-2 17:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 17:12 | 显示全部楼层
slymitec 发表于 2023-3-2 17:06
那你分析了缓存又能分析出个毛呢?

莫非结论是内存带宽没吊用?

6
建议去雷氏力学吧讨论, 可能那里可以和你沟通的人多点
 楼主| 发表于 2023-3-2 17:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 17:21 | 显示全部楼层
首先 内存的工作和核心是异步的
其次 寄存器位数和内存位宽没有半毛钱关系。。。。。。
发表于 2023-3-2 17:22 | 显示全部楼层
我觉得楼主与其提点这种问题 不如从现代CPU常识学起,就不会有这么多奇怪的问题了

先从Superscalar开始学吧
 楼主| 发表于 2023-3-2 17:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-2 18:35 来自手机 | 显示全部楼层
多读书吧。
发表于 2023-3-2 18:43 | 显示全部楼层
本帖最后由 zhuifeng88 于 2023-3-2 18:52 编辑
slymitec 发表于 2023-3-2 17:23
但是cpu和内存直接交换数据,寄存器是64bit的,一个指令读写数据,也就是64bit。

除非第二种情况,比如 ...


你的前提就是错的
cpu核心通常情况下不会和内存直接交换数据
读数据的时候缓存会从内存预取*至少*一整行(x86上是64B), 并且同时(或者等预取完后从缓存再取, 取决于具体实现)送往CPU核心或者上一级缓存
写数据的时候会写进缓存, 取决于具体缓存策略, 会等有必要的时候或者立刻把一整行写回下一级缓存或内存


前面也有人说了 这问题不分析缓存还分析个毛

至于寄存器和l/s指令的话, 无视simd寄存器和指令还叫什么现代cpu, 都256bit起步并且有多个load/store单元了还惦记64bit
发表于 2023-3-2 19:05 | 显示全部楼层
本帖最后由 JackyQ2021 于 2023-3-2 19:09 编辑

不知道我说的对不对,CPU内1级缓存最小最快,3级缓存最大最慢,内存速度比缓存速度差数量级(所以缓存比内存贵很多倍),也就是内存比缓存慢很多。一般都是先从内存里预读进3级缓存,通道数越多带宽也越大,一次并行传输的数据也越多,同时三缓越大缓存的指令数据也就越多,命中的概率就越大,当然三缓大小也会有边际效应。
缓存大小是M,内存大小是G,就可以明白他们速度、价格的差距
发表于 2023-3-2 20:28 | 显示全部楼层
slymitec 发表于 2023-3-2 17:23
但是cpu和内存直接交换数据,寄存器是64bit的,一个指令读写数据,也就是64bit。

除非第二种情况,比如 ...

x86 属于CISC复杂指令集

所谓一条指令,在CPU内部指令译码以后可以变成一大堆微操作,怎么操作内存是CPU自己优化的事情。

那种一条MOV指令,执行一次内存操作,是上古时代的事情。。。。

80C51这种嵌入式单片机的CPU,完全不带缓存,寻址方式也非常固定,一条指令对应一个内存操作,但是人家的内存是SRAM,和CPU同频率运行,不是DRAM。

而且80C51已经没落了,现在主流的STM32是ARM指令集,编程人员不再需要精细计算内存的访问周期。

PC上用的这些CPU,DRAM通过内存控制器来管理,异步运行,内存控制器怎么优化,普通的编程人员根本不需要操心。
只有编写 操作系统 编译器 驱动程序 的程序员,需要关心内存控制的内容。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-2-1 04:08 , Processed in 0.010780 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表