首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硬件线程可以同时访问主存吗?

硬件线程可以同时访问主存吗?
EN

Stack Overflow用户
提问于 2022-08-13 08:57:37
回答 1查看 97关注 0票数 1

我在试着理解微结构。

当操作系统调度代码在CPU硬件线程上运行(如Intel HyperThreading)时,每个执行上下文可以并行读取内存还是管道共享?

我试图做一些粗略的计算和复杂性分析,我想知道内存带宽是否是共享的,是否应该将我的计算除以内核或硬件线程的数量(假设管道是共享的)或硬件线程(内存带宽是并行的)。

EN

回答 1

Stack Overflow用户

发布于 2022-08-13 09:19:55

是的,管道是共享的,因此物理核中的两个加载执行单元都可以从不同的逻辑核运行uop,并行访问L1d。(例如https://www.realworldtech.com/haswell-cpu/5/ / https://en.wikichip.org/wiki/amd/microarchitectures/zen_2#Block_Diagram)

非核(L2 )带宽不会随逻辑核数而扩展,而且每个核心有一个线程可以相当容易地使其饱和,特别是在SIMD中,如果您的代码具有高吞吐量(而不是延迟或分支丢失的瓶颈),并且计算强度较低(每个数据加载到寄存器中的ALU工作量)。或进入L1d或L2缓存,无论您是为哪种缓存阻塞)。就像一个圆点产品。

经过良好调整的高吞吐量(每周期指令)代码,如线性代数(特别是matmul),通常不会受益于每个物理核心超过一个线程,相反,当两个线程争夺相同的L1d / L2缓存时,会有更多的缓存丢失。

如果您可以在缓存中仍然很热的情况下再次遍历较小的数据块,则缓存阻塞aka循环可以帮助很大的帮助。请参阅 (大部分内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73342858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档