首页 > 其他分享 >大小核溯源:parallelism 和 heterogeneity

大小核溯源:parallelism 和 heterogeneity

时间:2024-08-09 22:38:05浏览次数:10  
标签:执行 section 大核 互斥 critical parallelism 小核 heterogeneity 溯源

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。 ↩︎

标签:执行,section,大核,互斥,critical,parallelism,小核,heterogeneity,溯源
From: https://www.cnblogs.com/devil-sx/p/18351623

相关文章

  • ASTGNN (Learning Dynamics and Heterogeneity of Spatial-Temporal Graph Data forTr
    引言    时空神经网络(STGNNs)被广泛应用于交通预测问题中,在STGNNs中每个节点代表一个交通监测站,边表示道路网络。        在动态预测中,物理量x(t)随时间的变化模型是一个黑盒模型,我们要做的事情就是对黑盒模型进行建模。线性自回归方法直接将动态变化规律看......
  • 灵魂四问:什么是CDN?怎么判断CDN?如何溯源CDN加速后的真实IP?如何验证?
    灵魂第一问:什么是CDN?CDN(ContentDeliveryNetwork,内容分发网络)将源站的内容发布到接近用户的网络"边缘",用户可以就近获取所需数据,不仅降低了网络的拥塞状况、提高请求的响应速度,也能够减少源站的负载压力。CDN可通过缩短服务器与用户之间的物理距离最大限度减少加载网页内容......
  • 网络安全 HVV蓝队实战之溯源
    一、前言对于攻防演练蓝军的伙伴们来说,最难的技术难题可能就是溯源,尤其在今天代理横行的时代更加难以去溯源攻击者。这里我就举两个溯源来帮助大家梳理溯源过程,一个是只溯源到公司,一个是溯源到个人。二、溯源实例2.1IP反查域名2.1.1态势感知发现攻击截图2.1.2对尝......
  • Java计算机毕业设计农产品种植管理及溯源系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着消费者对食品安全与品质要求的日益提高,农产品种植管理及溯源系统成为了现代农业发展的重要趋势。传统农产品种植过程中,信息不对称、管理粗放、追......
  • php通用防伪溯源查询系统可自定义字段
    性能描述:1.适合中小规模查询,建议100万条以内(具体视服务器配置)。2.自定义前台是否使用验证码,即可以自行开启/关闭验证码。3.灵活支持N列内容,只要前几列按照规则;其余列均自定义内容。4.可单个新加,也可以批量外部导入。。。后台功能:1.单管理员登录页面,修改密码页面......
  • 【攻防技术系列+反溯源】windows入侵痕迹清理
    #反溯源#痕迹清理#攻防演练在授权攻防演练中,攻击结束后,如何不留痕迹的清除日志和操作记录,以掩盖入侵踪迹,这其实是一个细致的技术活。在蓝队的溯源中,攻击者的攻击路径都将记录在日志中,所遗留的工具也会被蓝队进行分析,在工具中可以查找特征,红队自研工具更容易留下蛛丝马迹。你......
  • 【HW系列+蓝队】溯源反制
    蓝队技术栈......
  • Linux环境中应急响应与排查溯源思路总结
    0前言在应急响应和溯源时,经常会遇见Linux系统环境,然后小编经常只记得思路忘记部分命令,下面是小编对Linux环境下应急响应和排查的思路总结。本文来源无问社区(wwlib.cn)更多详细内容可前往观看http://www.wwlib.cn/index.php/artread/artid/2729.html1目录文件分析1.1系统用......
  • 蓝队分析、溯源、反制总结
    监测/分析经验小结在护网期间,蓝队主要就是通过安全设备看告警信息,后续进行分析研判得出结论及处置建议,在此期间要注意以下内容。内网攻击莫忽视内网攻击告警需格外谨慎,可能是进行内网渗透。1.攻击IP是内网IP,攻击行为不定,主要包括:扫描探测行为、爆破行为、命令执行等漏扫......
  • 应对Web安全防护,溯源追踪攻击者。
    前言随着时代的进行,互联网站走进千家万户,网络安全问题也逐渐提上日程,国家对网络安全也欲加重视。一、重视保护现如今,大数据已成为必要发展趋势。Web网站也成为人们获取信息和企业开放产品的重要行式。提到网站,就不得不提到Web安全。仍有许多企业不重视,不在乎Web安全,只要求......