首页 新闻 会员 周边

关于缓存的问题,望解答

0
悬赏园豆:50 [已解决问题] 解决于 2019-03-15 20:16

想问问asp.net 的system.web.caching一系列api把数据存到内存还是进程内的缓存(CPU的多级缓存);
CPU内存和进程内缓存(CPU的多级缓存)看了是不一样的,而且两者存取速度不一样,能否说说传统.net应用有哪些方法或框架可以操作这两个的,还有asp.net core的哪些方法。

tkfly的主页 tkfly | 初学一级 | 园豆:114
提问于:2019-03-14 17:54
< >
分享
最佳答案
1

看书不要光看名词。cpu缓存,应用级的代码一般是管不到的。
缓存是相对于某方面能力较差而使用另一种硬件中间化的技术手段,比如内存比硬盘快,内存比网络快,我们以内存为缓存方式,比如并口一次性速率比串口快,过程必然需要缓存(除非硬件级移位寄存器),比如内存空间过小而选择廉价的硬盘缓存。

收获园豆:35
花飘水流兮 | 专家六级 |园豆:13560 | 2019-03-15 10:27

你好,那是不是应用级代码(system.web.caching的api)存取缓存都是直接存到所谓的内存条里面?

tkfly | 园豆:114 (初学一级) | 2019-03-15 11:07

@tkfly: 那你试试可以写多大内容~~~是不是远远超过L1,L2,这个缓存都是用于cpu指令集运算的缓存,比如指令连加,寄存器得到一次电气化运算结果,如果搬到内存,那么往返会很慢,比如下一条执行指令如果完全从硬盘->内存->寄存器得到也会很慢,比如预加载算法预先加载到L中,那么可以很快。
这个api可以看源码的,你也可以看到的,如果想session这些你都能直接随便用到了cpu cache,基本上操作系统就废了。当然运算过程中,system.web.caching的部分数据是可能到cpu cache的。

花飘水流兮 | 园豆:13560 (专家六级) | 2019-03-15 11:21

@花飘水流兮: 你好,我看源码,大概看到了是放到内存(宏观来说就是内存条),不过还是想得到你的肯定和说法,因为我目前看到java有个别框架能访问到进程内缓存的,而看到网络上对进程内缓存的说法就是L1,L2(也可能是我看错进程内缓存的说法,进程内缓存可能就是应用级代码做的缓存),所以我在想C#有没有框架能访问?求教

tkfly | 园豆:114 (初学一级) | 2019-03-15 11:33

@tkfly: 兄弟在c#、java的世界是没意义的事。
等你写硬件玩玩会更清楚,如果你很有兴趣,你可以查询intel等cpu规格,看看引脚和指令规格。提供了就可能可行(中间还有很多层)。低级芯片根本没这玩意儿。
至于你所谓的“框架”,这个没玩过,我认为你跑在os上的api的话,应该是找不到的,这个绝对是崩系统的,除非intel哪天开心了在L cache给你分个user模式。

花飘水流兮 | 园豆:13560 (专家六级) | 2019-03-15 12:35

@花飘水流兮: 感谢你的回答

tkfly | 园豆:114 (初学一级) | 2019-03-15 20:16
其他回答(1)
1

都是内存缓存
没有方法可以操作到CPU的缓存。

收获园豆:15
czd890 | 园豆:14412 (专家六级) | 2019-03-14 18:00

你好,那是不是应用级代码(system.web.caching的api)存取缓存都是直接存到所谓的内存条里面?

支持(0) 反对(0) tkfly | 园豆:114 (初学一级) | 2019-03-15 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册