找回密码
 加入我们
搜索
      
查看: 21696|回复: 31

[CPU] 不懂就问, 请大神科普一下大缓存为何提高性能这么明显?

[复制链接]
发表于 2022-1-5 10:39 | 显示全部楼层 |阅读模式
本帖最后由 gzthomax@gmail. 于 2022-1-5 16:16 编辑

不懂就问, 请大神科普一下大缓存为何提高性能这么明显?讲解的技术越细越好。3D V-Cache CPU准备出了,拭目以待。

不玩游戏,我自己体验感觉大缓存就是爽,桌面操作滑丝很多。本代i3超过上代i7是误区,i7缓存大多了,可能i3主频跑分高点,但实际使用大缓存占很多优势。

例如同是4c8t,i3-10100各方面跑分比i7-7700略高,但实际i7-7700桌面操作滑丝很多,无论是网页(特别是有很多js的网页)还是其他传统桌面软件都滑丝一点。大一点缓存就是不同。因为这两个U我都用过时间比较长。i3就是时不时卡顿一下,卡顿一瞬间就是不爽。应该缓存没数据了,cpu去找内存或磁盘。

以后我配机器定要大缓存的U,但为什么?
发表于 2022-1-5 10:42 | 显示全部楼层
不知道是不是缓存太小,3400g超到4.1,chrome几十个页面感觉比差不多强度的10100卡
发表于 2022-1-5 10:42 | 显示全部楼层
简单的说缓存的存取速度比内存快
发表于 2022-1-5 10:46 | 显示全部楼层
缓存速度快,测试软件如果跑在缓存里,不用和内存交互,提升会很大。

实际应用中很复杂。
发表于 2022-1-5 10:48 | 显示全部楼层
缓存本质就是超高速内存,只不过成本高,比普通内存小很多,通过算法调度。
缓存大小和性能提升肯定不是线性关系,参考ddr4,dd5性能对游戏的影响,微乎其微
发表于 2022-1-5 10:53 来自手机 | 显示全部楼层
一级缓存的速度和CPU频率是一样的,二级的略慢一点,三级的更慢,并且不像DDR那样有延迟,但是缓存也不是越大越好,还有一个命中率(效率)的问题。
发表于 2022-1-5 10:55 | 显示全部楼层
本帖最后由 yoloh 于 2022-1-5 10:57 编辑

CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。

    缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

    正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。
发表于 2022-1-5 10:57 | 显示全部楼层
10100的缓存我看了下,6M

和2~7代的I5一样多

这都能用出7700丝滑很多?
 楼主| 发表于 2022-1-5 11:01 | 显示全部楼层
momoka 发表于 2022-1-5 10:57
10100的缓存我看了下,6M

和2~7代的I5一样多

是的,实际体验。
发表于 2022-1-5 11:03 | 显示全部楼层

除了主板cpu,其他软硬件都一样么?

都是同个构架基于skylake的构架,只差2m缓存,根本不会体验出差别。

发表于 2022-1-5 11:12 | 显示全部楼层
这种流畅感的话,其实主要还是取决于瞬时睿频。
可以装个Intel Power Gadget看看。
发表于 2022-1-5 11:21 | 显示全部楼层
本帖最后由 gbawrc 于 2022-1-5 11:27 编辑
didicaca 发表于 2022-1-5 10:53
一级缓存的速度和CPU频率是一样的,二级的略慢一点,三级的更慢,并且不像DDR那样有延迟,但是缓存也不是越 ...


缓存越大越好,上不封顶,限制缓存大小有两个主要因素,1是成本,2是封装面积。
大缓存命中率是个伪命题,缓存找不到的数据,到内存去找,就没有命中率问题了吗?
现在内存普遍16G-32G,命中率和延迟都比缓存弱,难道为了命中率,都不用大内存,全部去固态找数据?

看看CPU发展的趋势,都是缓存越来越大,一级缓存不够加二缓,二级缓存不够加三缓,三级缓存不够加四缓(酷睿5代)。
加大缓存对CPU性能提升的收益,远比命中率降低的副作用大。

内存频率提升的收益,也远远超过内存延迟提高的副作用,所以内存频率一直在提升。
 楼主| 发表于 2022-1-5 11:33 | 显示全部楼层
momoka 发表于 2022-1-5 11:03
除了主板cpu,其他软硬件都一样么?

都是同个构架基于skylake的构架,只差2m缓存,根本不会体验出差别。

i7-7700+B250+16GB内存 顺滑过 i3+B460+32GB内存。日常办公+网页+js coding
发表于 2022-1-5 11:35 | 显示全部楼层
架构,工艺这些也很重要啊。
发表于 2022-1-5 12:12 | 显示全部楼层
本帖最后由 wjm47196 于 2022-1-5 14:14 编辑

这个应该请宽妹来解答,不过宽妹好久没出现了
以我非专业人士的粗浅理解,这个跟drawcall应该有很大的关系
cpu发出drawcall来指挥gpu进行工作
在架构一致,显卡不构成瓶颈的情况下,drawcall越多意味着显卡能同时绘制更多的帧数
那么大缓存可以提升整个系统的数据命中率,而不比绕远道去找系统内存,缓存更多的数据
这样意味着同一时期能发出更多的drawcall给显卡,也就提升了性能
因此在不同游戏中提升也不一样,比如CPU的drawcall命令不存在瓶颈的时候,大缓存的提升就很小了
发表于 2022-1-5 13:27 | 显示全部楼层
(不专业乱答哈。。)
lz董事长,要知道这个年报表
问秘书(一缓),不知道
问副董2人(二缓),不知道
问主力干将10人(三缓),说去查查
问所有项目长40人(内存),说这就去安排
问所有员工xxx人(硬盘),开始读取数据,汇总,上报

如果要月报呢,秘书知道干将某知道,是不是就快?
但是前几个也不是所有细节都有哇,除非是才问过的没变化的数据。。

所以架构也很重要,缓存也很重要,
发表于 2022-1-5 13:36 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2022-1-5 14:04 | 显示全部楼层
不妨把6m L3的i3 10100替换为8m L3的i3 10300,再看看卡不卡
发表于 2022-1-5 14:09 | 显示全部楼层
反面例子5600G 5700G三级变少了,性能是不是下降了?
发表于 2022-1-5 14:13 来自手机 | 显示全部楼层
zzljb 发表于 2022-1-5 14:09
反面例子5600G 5700G三级变少了,性能是不是下降了?

确实要差一点的
发表于 2022-1-5 14:28 来自手机 | 显示全部楼层
以一个4g主频的CPU为例,你可以把一个CPU处理指令的流程理解为工厂流水线,4ghz的主频流水线读入一个指令的时间(一个时钟周期)是0.25ns,如果一条指令需要读取数据,从一级缓存读取的时间大约是几个时钟周期,二级缓存是十几个,三级缓存是几十个(这俩里数据记不清了 数量级应该是差距不大的),而内存,chh最强的内存延迟也要4x ns,就是不到200时钟周期,按照平均70-80来算那就是三百多,对于一个程序,如果他读不到,意味着整个程序就要等着,直到数据来了才能继续(极端简化的模型,不考虑乱序执行和多发射,多线程,分支预测一类技术),显然数据在缓存的级别高一级,程序等待的时间就少十倍,在日常生活中,就像是用机械硬盘打3a大作,跑得快了会有一些模型加载不过来,卡着,一样的原理
发表于 2022-1-5 14:29 | 显示全部楼层
gbawrc 发表于 2022-1-5 11:21
缓存越大越好,上不封顶,限制缓存大小有两个主要因素,1是成本,2是封装面积。
大缓存命中率是个伪命题 ...

你说得好有道理啊
发表于 2022-1-5 14:31 | 显示全部楼层
我这里有几十台7700,前两天刚装了几台i3 10105,根据大样本用户反馈,楼主的感受是错误的,应该检查不同系统盘的状态,或者纠正自己的心理偏差。

相反,使用3960X 、3970X的大量Threadripper用户普遍反馈,日常使用发生卡顿的频次明显多于桌面7700甚至笔记本的i7 9750H之流。。。
发表于 2022-1-5 14:33 | 显示全部楼层
说一下我的猜测

可以把游戏里每一帧需要的时间简化为CPU占用的时间+GPU占用的时间,时间越短帧率就越高。

对于CPU来说,运算都需要在寄存器里面进行,然而寄存器可能才只有数百字节大小,所以数据都是存在内存里的。游戏里的每一帧都需要把数据从内存里读进寄存器,运算完成之后再写回内存。内存的读写是需要时间的,而CPU内置缓存的读写速度和响应速度都要比内存快很多。如果把经常访问的数据存进一个访问速度很快的缓存里,那应该就可以缩短CPU运算部分需要的时间。而缓存越大,就有更多数据可以被快速访问,从而节省时间。
发表于 2022-1-5 14:37 | 显示全部楼层
只要还是冯诺依曼结构,就绕不过这个圈子
发表于 2022-1-5 14:40 | 显示全部楼层
主要是码农水平下降的厉害导致垃圾代码越来越多
发表于 2022-1-5 15:00 | 显示全部楼层
一般来说是缓存容量是双刃剑,因为大缓存会增加遍历时间从而导致这一级缓存的延迟增加,抵消命中率提升带来的好处。

但是3D缓存,不仅仅是容量3倍,带宽也3倍。
这样遍历时间有可能是不变的,也就不增加延迟,那就是纯正面buff了。
 楼主| 发表于 2022-1-5 15:11 | 显示全部楼层
TakanashiRikka 发表于 2022-1-5 14:04
不妨把6m L3的i3 10100替换为8m L3的i3 10300,再看看卡不卡

10300很难找到
 楼主| 发表于 2022-1-5 15:12 | 显示全部楼层
一看就是小号嘛 发表于 2022-1-5 13:36
我建议这个你去找一下系统和其他方面的问题,这事跟u没关系

没重装系统,同一系统更换板U
发表于 2022-1-5 15:21 | 显示全部楼层
gzthomax@gmail. 发表于 2022-1-5 15:12
没重装系统,同一系统更换板U

这就是问题所在了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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

GMT+8, 2024-12-23 03:29 , Processed in 0.014859 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

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