大小核溯源:parallelism 和 heterogeneity

news/2024/11/16 14:21:03/文章来源:https://www.cnblogs.com/devil-sx/p/18351623

ETH Computer Architecture Fall 2023 [1]课程笔记

从 parallelism 到 heterogeneity

Parallelism 加速的本质来自 Admal's Law 和 Polloack's Rule。理想 N 核体系相比单核加速比遵守 \(s = \frac{1}{p+\frac{1-p}{N}}\), 但一味增加并行计算能力不仅边缘递减反而还会 degradation。需要对 Admal's Law 进行进一步修正分析。

Parallel 加速的限制来自于 (1)serial part 无法被并行加速;(2)parallel part 中存在伪并行部分(serail section in parallel part),并行化不完全,并行不完全即由于逻辑或者物理限制,某些执行并不能同时发挥最大并行能力(伪并行)。并行不完全来自于多个并行单元之间的相互约束作用,即各个子单元之间并不是独立的(这是很自然的,毕竟多个单元合作完成一个任务)。从逻辑和物理限制角度有三个原因:

  • (逻辑)同步问题(Synchronization),比如某些资源需要共享,为了保证一致性同时只能一个 core 唯一访问;
  • (逻辑)任务分配(Load Imbalance),比如任务完成时间的不一导致阻塞等待;
  • (物理)共享资源(Resource Sharing),竞争某些物理资源的使用,比如 sharing buffer 访存。

硬件的源头在执行的软件,通过规范并行编程(比如优化同步方式、均匀分配任务)之后仍无法规避的问题,则通过硬件减轻它的影响。加速的底层逻辑很粗暴,直接提高资源(后文是计算能力)加速执行,但难点在怎么只针对加速这一部分,毕竟性能和面积、能耗成本不是线性关系,我们想对重点问题用牛刀,其余部分用菜刀,整体更快但又相对省力。因此引入了硬件上的 heterogeneity。所以 heterogeneity 成立原因是成本和性能非线性关系的 trade-off

Heterogeneity 异构,通过不一样的底层机制实现某种相同功能,本词不同语境下含义不一(比如介质不同的存储器、计算能力不同的 core、或者专指架构不同的 core,如 AMD Zen5 中大小核架构相同参数不同,在此语境下则是同构。本文语境下指多核体系中不同计算能力的 core。
考虑 Admal's Law 将核做小做多,计算延时、能耗(energy, not power)都是下降,唯一增加的面积开销相比其余二者提升更小,是 延时|能耗 vs 面积 trade-off[2];而 heterogeneity 能耗是会上升的,是 延时 vs 能耗|面积 的 trade-off。本人目前大致感受架构本身设计就是一个 trade-off 的主题,但越深层研究 trade-off 成本越大。

Heterogenetiy 设计案例:Accelerated Critical Section

Parallel section 中又可分为 critical section 和 non-critical section。Critical section 之间互斥,也就是考虑 critical section 和 non-critical 之间俩俩组合搭配的四种可能中,critical-critical 不能同时执行。比如对资源访问的互斥锁(mutex)。

Critical Section

如图,当 P=4 时已经因为 critical 的互斥导致出现 waiting 阻塞。

CAS

对此解决方案使用 asymmetry 大小核方案,利用大核高算力加速 critial section,同时其余部分保持在小核计算维持总体成本经济。如图,将 critical section 部分加速后不仅加速整体效率也扩展了 scalability。

Comparsion

面积相同的情况下不同架构不同任务对比如上。

分类 结构 大核执行
SCMP N同构小核 -
ACMP 异构(1大核+M小核,M<N) Serial Part
ACS 异构(1大核+M小核) Serial Part + Critical Section

False Serialization

现实情况没有这么简单,一方面 everything with a cost,将 critical section 从小核转移到大核执行增加了通信成本(当然总体延时还是小于小核执行的),另一方面这又人为引入了 resource sharing,多个小核竞争(往往)数量较少的大核。

Critical section 内部又可以根据来源切分为不同种类,并非所有 critical section 都是互斥的,比如对不同资源的访问。此时存在俩种堵塞,同种来源在大核执行堵塞和不同种来源在大核堵塞,对于前者等待大核执行肯定是更高效的(因为小核执行成本高于大核,小核执行等待时间只会更长),但后者执行便存在设计空间,放在小核上执行两者不互斥可以并行,但也有可能在大核上即使阻塞等待总体执行速度也更快,不同来源的 critical section 竞争大核叫做 false serialization。

对于该问题的最优解肯定是准确地计算大小核执行的延时和任务负载,得出最优的调度方案。但综合搜索空间、硬件动态的复杂性,一般在硬件上使用某种动态启发式机制减轻影响。比如使用计数器跟踪 false serilization,如果正确调度 -1(B来源被B来源堵塞),false serialization +1(B被A堵塞),要溢出了则拒绝 false serialization 在大核执行的请求。

Bottleneck Identification and Scheduling

当然大小核并不只用来加速 critical section,但 CAS 例子很好展示了 asymmetry 问题关键:考虑成本,不能所有代码片段放在大核上,并且共享大核调度带来资源竞争,无脑放在大核上性能也不一定提升,问题变为了怎么从代码中拎出 bottleneck,对关键代码针对加速,达到四两拨千斤的效果。

更宽泛地说,bottleneck 可分为三类

  • Critial Section:代码执行互斥
  • Barrier:代码执行不互斥,但代码开始受其他单元约束
  • Pipeline:代码执行不互斥,但代码开始和结束受其他单元约束

针对不同 bottleneck 需要编程时人为进行标识,也就是粒度到代码段。在执行时针对每个 bottleneck 开辟一个空间记录影响(延时时间,threading waiting cycles)[3],根据 TWC 找出影响最大的 bottleneck 放在大核上加速,这个过程叫做 BIS(Bottleneck Identification and Scheduling)。

Conclusion

课程标题是 Parallelism & Heterogeneity,写到这里才豁然明朗:heterogeneity 就暗含 parallelism 的味道啊!Heterogeneity 不同构造单元可以执行相同功能,相同功能的复数则是 parallelism,那么就会存在 mapping 和 scheduling 的空间。若不同单元构造功能都不相同(比如只能执行某种非线性操作的特化硬件单元和加法单元?)说是 heterogeneity 味道好像就不太正了。


  1. https://safari.ethz.ch/architecture/fall2023/doku.php?id=schedule ↩︎

  2. 但若考虑单位功耗问题又不一样了,详情见之前博客 https://www.cnblogs.com/devil-sx/p/18299200 ↩︎

  3. 实际上代码之间存在耦合依赖关系,等待 bottleneck 2 可能是由于 bottleneck 1 没有执行完,此时延时应记在 bottleneck 1 上,关于依赖部分的追踪详情可见 Bottleneck identification and scheduling in multithreaded applications https://dl.acm.org/doi/10.1145/2150976.2151001。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/780530.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

地铁站点客流量预测:随机森林极限梯度提升回归器XGBoost

全文链接: https://tecdat.cn/?p=37308 原文出处:拓端数据部落公众号 分析师:Xinyi He 随着城市化进程的加快,地铁作为城市公共交通的重要组成部分,其客流量管理与预测对于城市交通规划和资源配置具有重要意义。准确的客流量预测不仅有助于提高地铁运营效率,确保乘客安全…

项目文档管理利器:2024年你必须了解的工具

国内外主流的10款项目文档管理软件对比:PingCode、Worktile、Teambition、Tapd、Tower、Confluence、Notion、Dropbox Paper、Quip、Basecamp。在面对项目管理的复杂性时,选择合适的文档管理工具可以显著提高效率和团队协作。许多团队在文档管理上遭遇混乱和效率低下,尤其是…

做题小结 dp训练4

第一个 我按dp找 结果是个二分 我还想半天 这怎么dp 不过 这题目 也很有意义 首先我一直以为vector的low或者upp下标只能用distance求 现在看来是错的 不要再写auto 迭代器写法 用int就行 减初始指针就行 然后二分的话 思路也很好 先存进去 然后在跑t的时候 先开一个指针 然后对…

Modbus_RTU

本文主要记录串口通信,主要记录 modbus 的默认通信协议 modbus_RTU,当然modbus还包含 modbus_TCP(网口)和 modbus_ASCII(串口)。 一、基础知识 串口和网口串口:串口是一种物理接口,通常用于连接计算机和外部设备,如打印机、鼠标等。它使用一根线缆进行数据传输,常见的…

异步FIFO设计

Asynchronous FIFO Design总结来自Clifford E. Cummings论文 《Simulation and Synthesis Techniques for Asynchronous FIFO Design》一、设计难点使用格雷码计数时空和满的判断。 同步FIFO读写时钟相同,而异步FIFO读写来自不同两个读写时钟,需要考虑跨时钟域设计。二、设计…

常量的基础认知和相互转化

常量:在java程序运行过程中,其值不能够发送改变的量 分类:字面值常量:字符串常量:被双引号括起来的字符序列 "java"字符常量:被单引号括起来的单个字符 a整数常量:所有的整数 100 200 -100小数常量:所有的小数 1.23 3.14 -1.23布尔常量:true false空常…

.NET 窗口/屏幕录制

窗口/屏幕截图适用于截图、批注等工具场景,时时获取窗口/屏幕图像数据流呢,下面讲下视频会议共享桌面、远程桌面这些场景是如何实现画面录制的。 常见的屏幕画面时时采集方案,主要有GDI、WGC、DXGI。 GDI GDI(Graphics Device Interface)就是使用user32下WindowsAPI来实现…

.NET 屏幕录制

窗口/屏幕截图适用于截图、批注等工具场景,时时获取窗口/屏幕图像数据流呢,下面讲下视频会议共享桌面、远程桌面这些场景是如何实现画面录制的。 常见的屏幕画面时时采集方案,主要有GDI、WGC、DXGI。 GDI GDI(Graphics Device Interface)就是使用user32下WindowsAPI来实现…

Kubernetes-POD的QoS

目录背景问题分析进一步排查问题原因Pod的QoS服务质量等级结论 背景 今天开发团队反馈,测试环境中部分业务功能无法正常使用。经过初步排查,发现某个业务Pod在一天内重启了10次,因此需要进一步调查原因。 问题分析 首先,我查看了Pod的日志,发现JVM并未抛出任何错误,服务却…

2024.8.9 鲜花

几张图?推歌:早安大森林 ![](https://baike.baidu.com/pic/%E6%97%A9%E5%AE%89%E5%A4%A7%E6%A3%AE%E6%9E%97/64160919/1/b17eca8065380cd791236bebf51cba345982b2b72b26?fr=lemma&fromModule=lemma_content-image#aid=1&pic=b17eca8065380cd791236bebf51cba345982b2…

赋值运算符和+号的用法(两个练习)

string strName = "kakaxi";string strVillage = "huoyingcun";int iAge = 20;string strEmail = "1287195315@qq.com";decimal deSalary = 2000m;Console.WriteLine("大家好,我叫{0},我今年{1}岁了, 我住在{2},我的邮箱是{3}, 我的工资有足…

中国四大软件外包公司

今天我们来聊聊国内的四大软件外包公司。这些公司不仅在国内市场中占据重要地位,还对全球软件外包行业产生了影响。部分数据来源网络排名,按照职位量、增长速度排名,排名仅供参考,去某家公司一定要多方位参考,比如企查查、脉脉等。要说软件外包这块大蛋糕,谁不想来一口呢…