作者erspicu (.)
看板Soft_Job
标题[心得] 冯·诺伊曼架构的物理墙
时间Sat Jun 6 15:52:42 2026
续之前side project学到
i-cache的优化策略和bitwise.swar(SIMD Within A Register).
还有branchless各种加速技巧後 (这些都比较偏向Cpu ALU效率问题)
现在的side project撞到另外一个墙 是冯诺伊曼架构 天花板之一
也就受计算受限於记忆体延迟,用netlist跑Switch-level简化Transistor-level计算,
https://gemini.google.com/share/8014e5049296
多数时间cost不是在於节点跟节点之间搜寻.计算.更新,
而是要处理随机分布的记忆体资料,产生cpu其实有点喂不饱,
cost全在捞记忆体资料本身,你再怎样改善,墙就是在那边,
但还是有一些优化技巧(但你再怎麽优化天花板就还是在那边),
不过我真的不知道这些优化技巧除了side project或是啥3a游戏.特定演算法之类的,
还能用在哪里,已经不在多数人工作需要考虑到的范围内.
原则上其实跟i-cahe优化很相似,只是这次变成减少 L-cache的存取次数.大小,
原则就两个 想办法缩减资料布局甚至透过pack压缩
(但你也得算解压缩本身的ALU cost划不划算),
尽可能让热资料放到比较快的cache层级内,
但实际上没办法决定资料会放到哪一层cache,
我们只能尽可能创造让资料尽可能放到更快cache的机率条件,
然後资料也有分冷热,分开管理也是一个技巧,还有减少存取次数,
像是用long型态一次抓多几笔资料,还有包装成64byte技巧会比较顺,
另外也有接触到prefetch的技巧,
但对我专案没有用,好奇可以看看AI整理的专案笔记,原则上工作压根用不到,
当你哪天需要在那边斤斤计较什麽I-CAHE L-CACHE Missing的这种层级的议题,
应该是在啥满厉害的公司了,感觉上L-CACHE某些SERVER和资料库的优化议题可能会用到.
https://erspicu.github.io/AprVisual/cache.html
可以看一个概念,或许哪天真的有派得上作用的地方.
最後如果想看看自己电脑效能 可以抓个benchmak跑看看
https://erspicu.github.io/AprVisual/
上传排行榜pk一下
https://baxermux.org/myemu/AprVisual/
也可以看看用netlist跑任天堂红白机主机跟实机的效能差异
https://erspicu.github.io/AprVisual/calculator.html
说老半天...其实最快的解决方式是换一颗cache更大的cpu直接物理上解决问题,
更扯底是放弃冯·诺伊曼架构架构,换别的机器跑.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 182.233.248.16 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1780732366.A.5C5.html
1F:→ Lipraxde: ...想表达什麽? 06/08 11:55
2F:推 aarzbrv: 真好奇作者是否对一楼有从头讲解计算机架构初步的义务… 06/08 18:50
3F:→ wei115: 玩AI就知道,时间都花在把资料搬来搬去,还要丢到vram里 06/08 20:48
4F:→ wei115: 面,都是钱R 06/08 20:48
5F:推 marra: 二楼坏!XD 06/09 03:10
6F:推 USD5566: 这个板一堆登能vibe仔然後看到这篇就安静不敢推文了有够 06/09 10:04
7F:→ USD5566: 可怜 06/09 10:04
8F:→ oopFoo: cache是latency。现在是平行处理当道,如何有效运用 06/09 10:56
9F:→ oopFoo: bandwidth才重要。你想想怎样的资料结构才能平行处理。 06/09 10:57
10F:→ oopFoo: 现在sram,frequency都无法scale了,如何平行处理,如何 06/09 11:00
11F:→ oopFoo: 避开lock才是设计的重点。 06/09 11:00
12F:→ firejox: 避开lock (X) 避开 false sharing (O) 06/09 18:54
13F:推 oopFoo: false sharing是cache的基础知识。如何lockless才是困难的 06/09 22:17
14F:→ labbat: 锁存取是atomic的,要lockless就是造一个有atomic特性但不 06/10 01:48
15F:→ labbat: 用lock的指令 06/10 01:49
16F:→ labbat: 然而编译器会自动帮你上lock的,即使开发者觉得是lockless 06/10 01:52