但现在的CPU都是。。。。多核心 多线程 乱序执行
这种情况下多通道的收益就非常可观了。。。。 .. 你是不知道有缓存么
基本所有的 cpu 访存请求根本不接触内存 slymitec 发表于 2023-3-2 17:02
先不分析缓存。
这问题不分析缓存还分析个毛? slymitec 发表于 2023-3-2 17:06
那你分析了缓存又能分析出个毛呢?
莫非结论是内存带宽没吊用?
6
建议去雷氏力学吧讨论, 可能那里可以和你沟通的人多点 首先 内存的工作和核心是异步的
其次 寄存器位数和内存位宽没有半毛钱关系。。。。。。 我觉得楼主与其提点这种问题 不如从现代CPU常识学起,就不会有这么多奇怪的问题了[震惊]
先从Superscalar开始学吧 多读书吧。
本帖最后由 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 本帖最后由 JackyQ2021 于 2023-3-2 19:09 编辑
不知道我说的对不对,CPU内1级缓存最小最快,3级缓存最大最慢,内存速度比缓存速度差数量级(所以缓存比内存贵很多倍),也就是内存比缓存慢很多。一般都是先从内存里预读进3级缓存,通道数越多带宽也越大,一次并行传输的数据也越多,同时三缓越大缓存的指令数据也就越多,命中的概率就越大,当然三缓大小也会有边际效应。
缓存大小是M,内存大小是G,就可以明白他们速度、价格的差距 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通过内存控制器来管理,异步运行,内存控制器怎么优化,普通的编程人员根本不需要操心。
只有编写 操作系统 编译器 驱动程序 的程序员,需要关心内存控制的内容。
页:
[1]