「计算机组成原理」:高速缓存存储器( 五 )
如上图所示是使用分块技术实现的矩阵乘法 , 将矩阵乘法分解为若干个BxB小矩阵的乘法 , 每次能将一个BxB的小矩阵加载到缓存中 。
每一次迭代就计算C中一个BxB大小的块 , 我们分析每一次迭代的不命中次数
文章插图
每个块有 B^{2} /8B2??/8 次不命中次数 , 而每一行每一列有n/B个块 , 所以计算一次C中的一个块会有 次不命中 , 则一共会有 nB/4 \times {(n/B)}^{2} = n^{3}/(4B), 我们就能调整B的大小来减小不命中率 。
分块降低不命中率是因为加载一个块后 , 就反复使用该块 , 提高了空间局部性 。
【「计算机组成原理」:高速缓存存储器】分块技术的介绍:建议:
- 将注意力集中在内循环中 , 因为大部分的计算和内存访问都集中在这里
- 按照数据对象存储在内存中的顺序 , 以步长为1来读数据 , 使得空间局部性最大 。 比如步长为2的命中率就比步长为1的命中率降低一半 。
- 一旦从存储器读入一个数据对象时 , 就尽可能使用它 , 使得时间局部性最大 。 特别是局部变量 , 编译器会将其保存在寄存器中 。
文章插图
- 计算机学科|机器视觉系统是什么
- 合并|Andre Cronje主导批量「合并」DeFi项目,是好事情吗?
- mini|电影、mini 与「当日完稿」工作流
- 字化转型|疫情重构经济,传统企业「数字化」的通关密码是什么?
- iPhone12|iPhone12「超大杯」拍照解禁:与Pro拉不开差距
- 供应链|一座快手「重镇」的货端升级
- 项目|DeFi「分叉运动」退潮,我们能从中学到什么?
- 纪念版|「同价选机」K30至尊纪念版 vs Note9 Pro,选谁
- 文案|「热点传递」为什么别人卖点写的“勾人”?
- 系列|OPPO Reno5 真机曝光, 「Reno Glow」晶钻设计再升级