From 8e8063060074c91bde74951908d6d041ec15c083 Mon Sep 17 00:00:00 2001 From: Cheng Jian Date: Mon, 3 Jan 2022 23:26:32 +0800 Subject: [PATCH] arch/AMP: PIE v3 --- study/arch/AMP/PIE/README.md | 45 ++++++++++++++++++++++++---- study/arch/AMP/PIE/isca2012-PIE.pdf | Bin 2778342 -> 2778985 bytes 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/study/arch/AMP/PIE/README.md b/study/arch/AMP/PIE/README.md index 87da4cb..1f92fcb 100644 --- a/study/arch/AMP/PIE/README.md +++ b/study/arch/AMP/PIE/README.md @@ -105,21 +105,54 @@ gcc.s, calculix 等) 在小核上执行时性能下降地就不那么明显(slow 大核特别适合于需要动态提取 ILP 或具有大量 MLP 的工作负载, 小核适用于具有大量固有 ILP 的工作负载. 这意味着不同核心类型上的性能可以直接与工作负载中普遍存在的 MLP 和 ILP 的数量相关. 一个大量 MLP 的内存密集型工作负载, 在小核上执行可能会导致显著的速度下降. 而具有大量 ILP 的计算密集型工作负载在小内核上性能下降也不会太大, 不需要大核就能运行的很好. -为了分析其中更本质的细节, 论文中又做了一组分析. 将测试的应用按照计算密度从大到小, 访存密度从小到大排序, 然后将测试的 slowdown, ILP ratio, MLP ratio 按照这个顺序展示. 如下图所示. 可以看到. +为了分析其中更本质的细节, 论文中又做了一组分析. 将测试的应用按照计算密度从大到小, 访存密度从小到大排序, 然后将测试的 slowdown, ILP ratio, MLP ratio 按照这个顺序展示. -对于计算密集型的应用(图左侧)其 slowdown 与 ILP ratio 的曲线相拟合. 而对于访存密集型的应用(图右侧)其 slowdown 与 MLP ratio 的曲线趋于拟合. +$MLP_{ratio} = MLP_{big} / MLP_{small}$ -因此仅密集的内存访问并不是反映进程负载特征的好指标. 异构多核上的调度策略必须要考虑计算不同微架构的核可以利用的 MLP 和 ILP 的数量. 此外, 当在不同类型的核之间移动时, 减速(或加速)可以直接与目标核心上的 MLP 和 ILP 实际的数量相关. 这表明, 可以通过预测当前核上的 MLP 和 ILP 来估计其他类型核上的性能. +$ILP_{ratio} = CPI_{base\_big}/CPI_{base\_small}$ + +> MLP 定义为未完成的内存请求的平均数量,如果至少有一个未完成的 [4]. +> +> CPI~base~ 作为 CPI stack 的基础(非阻塞)组件. + +如论文中图 2 所示. 可以看到, 对于计算密集型的应用(图左侧)其 slowdown 与 ILP ratio 的曲线相拟合. 而对于访存密集型的应用(图右侧)其 slowdown 与 MLP ratio 的曲线趋于拟合. # 3 Performance Impact Estimation (PIE) ------- +因此仅密集的内存访问并不是反映进程负载特征的好指标. 异构多核上的调度策略必须要考虑计算不同微架构的核可以利用的 MLP 和 ILP 的数量. 此外, 当在不同类型的核之间移动时, 减速(或加速)可以直接与目标核心上的 MLP 和 ILP 实际的数量相关. 这表明, 可以通过预测当前核上的 MLP 和 ILP 来估计其他类型核上的性能. + +$CPI \approx CPI_{base} + CPI_{mem}$ + +> 这里忽略了 L1 cache, L2 cache 等对 CPI 的影响, 从图 2 中的信息可以看出, 这部分 CPI 信息在当前 AMP 平台上对进程的特征提取影响比较小. + +如果进程在大核上运行, 那么通过它在大核上的性能指标, 预测它在小核上运行的性能的方法如下: + +$\widetilde{CPI}_{small} = \widetilde{CPI}_{base\_small} + \widetilde{CPI}_{mem\_small} = \widetilde{CPI}_{base\_small} + \widetilde{CPI}_{mem\_big} \times MLP_{ratio}$ + +反之, 如果进程在小核上运行, 那么根据它在小核上的性能指标, 预测它在大核上运行的性能的方法类似: + +$\widetilde{CPI}_{big} = \widetilde{CPI}_{base\_big} + \widetilde{CPI}_{mem\_big} = \widetilde{CPI}_{base\_big} + \widetilde{CPI}_{mem\_small} / MLP_{ratio}$ + + +> 在上面的公式中 +> +> CPI~base\_big~ 是指从在小核的执行的数据中中估算出的对大核的基数 CPI~base~ 分量; CPI~base_small~ 类似. +> +> 大(小)核上的 CPI~mem~ 的计算方法是将小(大)核上的 CPI~mem~ 与 MLP~ratio~ 相除(乘)得到的 + + +然后剩下的关键就是如何预测基 CPI~base~ 和 MLP~ratio~. ## 3.1 Predicting MLP ------- -PIE 的核心思想是: 评估线程在不同核心上的的性能, 通过 +PIE 的核心思想是: 根据进程在当前 CPU 核上的性能以及 CPI stack 等信息, 预测该进程在其他不同类型核心上的的性能. + +论文中关注 CPI stack 中的两个主要组件: 基本组件 CPI~base~ 和内存组件 CPI~mem~, 前者将所有与内存无关的组件集中在一起. + +$CPI = CPI_{base} + CPI_{mem}$ ### 3.1.1 Predicting big-core MLP on small core ------- @@ -131,6 +164,8 @@ $MLP_{big} = MPI_{small} \times ROB_{size}$ 其中 $MPI_{small}$ 是小核上的 MPI 值, 它近似等于为小核上观察到的 LLC misses per instruction. 由于预取等操作提前进入流水线的指令, 也会造成 LLC Misses, 但是论文注意到了这一点, 但是为了使得设计更简化, 因此对此不做区分. +$\widetilde{CPI}_{small} = \widetilde{CPI}_{base \_small} + \widetilde{CPI}_{mem\_small} = \widetilde{CPI}_{base\_small} + \widetilde{CPI}_{mem_big} \times MLP_{ratio}$ + ### 3.1.2 Predicting small-core MLP on big core ------- @@ -161,7 +196,7 @@ $MLP_{small} = {{MPI_{big}} \times {D}}$ 大核的基础 CPI 部分 $\widetilde{CPI}_{base\_big}$ 与其发射宽度(issue width)有关. -$\widetilde{CPI}_{base\_big} = 1/W_{big}$ +$\widetilde{CPI}_{base\_big} = 1 / W_{big}$ 一个平衡的乱序的大核应该能够在没有 miss 的情况下, 每个周期中分发大约 $W_{big}$ 条 指令. 平衡的 CPU 核设计可以通过使重排序缓存(ROB)和相关结构, 如 issue queues, rename register file 等, 使得流水线能够以接近 issue width 的宽度发射指令. diff --git a/study/arch/AMP/PIE/isca2012-PIE.pdf b/study/arch/AMP/PIE/isca2012-PIE.pdf index 78e7d818675a6076be107418a9618fa2dc87ab0e..cd5fe7530c09bbbfd5f76233c6bf6180180d3868 100644 GIT binary patch delta 6674 zcmZvhOQ@Y!7010vQ}w3Tm?o+9(Rytf8xOSE@4a@EkT#|T2fn~ZkgBzb11X9%f*|-+ zDd@RSc;l6w zf4%w2&I`ZW`S0bs_G3)HymNU6IffiZ?m|u=cO&mb-iN#&*+otw_aJ-72ar?92a(gr zy~r8lEOHLH5BU&sKk{MZBgjXQk0B2r4odH zP92N!;N=sGGsk1h2kw!@*S?qCek|d!koSX?^{*XFZUe4eCy8fKb^e)>tB4dzVy&<^K*+E=Rb4n znHL{E`>VI_4)1*FpMSKcrr%$(r+)L?SMU4Vk6-%t5B~c4f8O)W*B_V;PXFQLxsyM6 z{?>Q*cKcn*tLbx#?;M+w-*^3I|NG$m$C9sYz;ZIdT5-7ySn#7>%5kpeolkDHcG?&Q z%tZ`?nNPa7I>N9#>-x~%)#1=!v5jlf{34TcD3;)c4Qs24nTsP9({MY>CSLH)EGX8j zl}Tj@KE}7>%qDNYm5i3c; znJg1!U0b}ZJu@AaT{7}bk}H|{xK`ZgSxn+;^kN%~SgykXttPQCvA6|sO|s_Ig}n~+Br(C>Wxwj8gsx77AS+n#tKO~<5;am?)5NUYEvdJfubPHoF+0m+bgwsJam@`bJ!-L_%uf~CpCg@8rf z3fA0K()66kDFzwG9ZN;r4@T*1-I%o{CV$w{H~i06&(smc>LCZRAy}xAA7Duc2>a1Q z<;GyN*6qVg&es4P6<34BI&T)tY!{qlu$e2ua(ricP1jn4Hf^vk> zS0qJr!$wUE7@if3*%VX{db-`=NLCWnnPS1ymGhkcg#hnqVkCrq#<^iI9mhZ+$n*p$ z!{xxrrdJ&DzpiNF>W(#Do7>&2n+TE%9ZNFpItF7H);8%CVTy2wt$EzXafprgnJkVy z@De7lCZ)*Qim&H}lcP$+gJ69e_xZDF!2zpIO0i?ZjloixS5DVsz^h@J=)7{!3;w7| zR{Sp{qd&^xTr$C%ZwN-!Dps7d){qMvU%UlIACai;&i`1P;n1p>x!!-AXw*|q*!4_k9T@bxd$s5P z(T!6RiiBcjR_bAL7P{8;lr49RLe{lq;D0DW>!h5(^aDfJgAWZGnoLFX=mDBDsb*nA zU2kgg(E-q$JiC_IxFK_PFk(dr2y2@gbE~BlDLLYQUD1R>Lo{GInje`_K4L?6b>0PhK?`?wO<;Wn41FJVJdVXvpbhM$}6o`HwDYG_G zc=pLG<82;{ON+j`^TQGC@h1(wTI!r*YWM%d+_<2i%UD@;Ab}%7q33Sm#=Hr zA{*7~ysYAr_W1SUQnhQHchxITU%9fk`=i^>Jb!!jp9feCJj(WVFI>3(g(vrR{}1bo BGl>8I delta 6375 zcmZvhxsF{$5Qa4dvy2%Gn0*}s274r=-WM#55W*87@dN~bFd2byKz7Io5z#z@b0j|k zBH=NRcn1Q$zT4dXYpztuuc}kkwRhit|9*7v&tH!Ye);3zzfXU?diMaj0zCme30;Mr zf}Vz+fu4m9p=;1{&=K@JbRBvDdJ%dFx&gfmy#l=oy#~Dwy#c)my#>7uy#u`qy$2mb zH=*~T51SR?dJ#I-#f=sKZ1{6 zOTIdT<=6%5#ieSn;4EKCY3B3J$G(5mO|j;J#c-wJ%T>JKU29&k-g@EuE3a?eA8L1MHCRZ|@FlNU3nf~t8QE6Qy#C&@ zQ{1XcVqs`CYCJ=SO->9}l7s}T74a%q_j5=V7dp<7L;?%NDDl}@ta(Y`(1Xk7dm%=_ zVhgqQWp-;SHEY5pR5Vcnma@f4l5nP$dox(^b?cdBQ+BDYhKUhEq^~Z0Ugcm=12d0$+7G2&mdgvcu z*v#XdF zHb%mpYfw`C*cc2JisT1;NfwYHOK&x@ZQeB&lmtQ`t_F)mV%O+{WDAGC$eGc+Wy|rc z1!k)9MJF8-K0LU{Nifd`aWz=tmPcs}A(MmB zxxlKIO_n8~d+CmW8Otg=D*-E)U~OFOR{q~iK!kJFliFc#~j})axYwATE;akzF7+y2om>7dRQgwIhId% zLKKH4YaJNt_ZV!${}(4tT~;I*bCN6g3X^qhV7e_2tjlEnU44HLJTlTWWaYz= zwOIWOJ>%RK?77(xjQa67GHl;Z6ILSY@y>28hs57Tm?(p+SYKH~GOkjp=iU%6$hNjrp