Dark Silicon and the End of Multicore Scaling
文章的主要目的:在之后发展过程中,使用多核技术最多可以带来多少的性能提升
方法:结合device scaling, single-core scaling, multicore scaling三个方面为多核的性能扩展的限制建模,从而预测多核能够带来的潜在的性能提升程度
- device scaling:使用ITRS预测和一些更加保守的设备扩展参数来建模
- single-core scaling:实际测量超过150中处理器的数据来得到 芯片面积/性能和功耗/性能的Pareto最优边界
- multicore scaling:构建一个具有上限性能和下限核心功耗的详细性能模型。在多核情况下共列举了两类(CPU-like和GPU-like)和四种拓扑结构(对称,非对称,动态,组合)的各种情况。
结论:无论使用何种组织形式和拓扑结构,多核的性能提升总会由于功耗的限制达到一个顶部。同时随着技术的发展,芯片上越来越多的晶体管需要被关闭。
帕累托最优:是指资源分配的一种理想状态,假定固有的一群人和可分配的资源,从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好。帕累托最优状态就是不可能再有更多的帕累托改进的余地
dark silicon:dark可以理解为不工作,因为功耗的限制,尽管芯片上的晶体管的数量很多,但是并不需要也不能通过都处于工作的状态,因此在芯片上的部分晶体管在某些时候就需要处于非工作状态以减少功耗。
论文通过分析 技术扩展预测(technology scaling projections)、单核的设计扩展(single-core design scaling)、多核的设计选择(multicore design choices)、真实的应用行为(actual application behavior) 和微体系结构的特征多个方面,建立并结合三种模型共同预测了在固定大小和固定功耗的芯片上性能情况和“dark silicon”的比例。三种模型为:
- Device scaling model(DevM):包括在未来到2024的技术节点时对芯片的面积,频率,功耗的要求
Core scaling model(CorM):针对于单核处理器,从大量的不同的微处理器设计中得到的功耗/性能和面积/性能的Pareto边界曲线
Multicore scaling model(CmpM):CMP(Chip multiprocessors),针对于任何应用,任何拓扑结构类似于CPU和GPU情况下的多核的性能,芯片面积,芯片功耗表现
DevM*CorM:未来技术发展的Pareto边界曲线定义的面积或者功耗将会是未来处理器核的任何性能改进的代价所在
CmpM+DevM+CorM和一个详尽的状态空间搜索:在未来最大化多核的加速比,当满足面积,功耗和测试样例的限制下
四种多核情况下的拓扑结构
- 对称结构的多核:复制
- 非对称结构的多核
- 动态的多核结构:一个大核和若干小核,并行代码后者开启,串行代码前者开启
- 可重组的多核结构:若干小核,但是可以通过逻辑上的融合形成一个大核的功能,AMD Bulldozer类似于这种结构
论文选择PARSEC测试集的原因:PARSEC 代表了在研究机构中广泛研究的具有高度并行特点的应用程序
Pollack’s rule:在微处理器方面,性能提升的程度大致与系统设计的复杂程度的平方根成正比,这个复杂程度可以看作是芯片面积
处理器的性能可以从SPEC的官网上获取到,处理器的功耗可以从TDP的报告中获得。
45nm工艺技术下的统计结果,area/performance and power/performance Pareto frontiers
结合DevM之后,预测得到的在未来的工艺情况下的Pareto边界曲线(假设性能正比于频率)
多核情况下单核CPU的利用率:
η=min(1,T1+trmCPIexe) η = m i n ( 1 , T 1 + t r m C P I e x e )η为利用率,T为每个核提供的线程数,t为访存时间,CPIexe是访存延迟为0时的CPI,rm为访存指令的比例 η 为 利 用 率 , T 为 每 个 核 提 供 的 线 程 数 , t 为 访 存 时 间 , C P I e x e 是 访 存 延 迟 为 0 时 的 C P I , r m 为 访 存 指 令 的 比 例推导:T1+trmCPIexe=T(CPIexeCPIexe+trm)=T∗η单线程的CPU 推 导 : T 1 + t r m C P I e x e = T ( C P I e x e C P I e x e + t r m ) = T ∗ η 单 线 程 的 C P U
访存时间t的计算
t=(1−mL1)tL1+mL1(1−mL2)tL2+mL1mL2tmem t = ( 1 − m L 1 ) t L 1 + m L 1 ( 1 − m L 2 ) t L 2 + m L 1 m L 2 t m e mmL1=(CL1TβL1)1−αL1andmL2=(CL2NTβL2)1−αL2 m L 1 = ( C L 1 T β L 1 ) 1 − α L 1 a n d m L 2 = ( C L 2 N T β L 2 ) 1 − α L 2tL1为L1cache的访问时间(cycles),tL2为L2cache的访问时间,tmem为访问内存的时间 t L 1 为 L 1 c a c h e 的 访 问 时 间 ( c y c l e s ) , t L 2 为 L 2 c a c h e 的 访 问 时 间 , t m e m 为 访 问 内 存 的 时 间mL1,mL2为L1和L2cache的缺失率; m L 1 , m L 2 为 L 1 和 L 2 c a c h e 的 缺 失 率 ;CL1为每个核的L1cache的大小(KB),CL2为每个芯片的L2cache的大小(MB) C L 1 为 每 个 核 的 L 1 c a c h e 的 大 小 ( K B ) , C L 2 为 每 个 芯 片 的 L 2 c a c h e 的 大 小 ( M B )αL1,βL1为L1cache的缺失率函数中的常量,αL2,βL2为L2cache的缺失率函数中的常量 α L 1 , β L 1 为 L 1 c a c h e 的 缺 失 率 函 数 中 的 常 量 , α L 2 , β L 2 为 L 2 c a c h e 的 缺 失 率 函 数 中 的 常 量多线程情况下的性能的评价:(代码能够完全并行)
Perf=min(NfreqCPIexeη,BWmaxrm×mL1×b) P e r f = m i n ( N f r e q C P I e x e η , B W m a x r m × m L 1 × b )N:核的个数;freq:核的时钟频率(MHZ);η:核的利用率 N : 核 的 个 数 ; f r e q : 核 的 时 钟 频 率 ( M H Z ) ; η : 核 的 利 用 率BWmax:最大的内存带宽(GB/s);rm:访存代码所占比例;b:每次访存的字节数(B) B W m a x : 最 大 的 内 存 带 宽 ( G B / s ) ; r m : 访 存 代 码 所 占 比 例 ; b : 每 次 访 存 的 字 节 数 ( B )衡量应用的特征的指标:cache的行为(缺失率,访问数等);load和store指令所占的比例;可并行代码的比例(大部分处于75%-99.99%)。(论文:Understanding PARSEC performance on contemporary CMPs | The PARSEC benchmark suite: Characterization and architectural implications)
三种模型的结合:dev+core+CMP scaling
- 首先获得面积/性能的Pareto边界曲线,所有在边界上的处理器设计节点都需要被考虑
- 对于每个设计节点,多核结构总是从最初一个核开始建立起来。每一个增加一个核,利用功耗和性能的Pareto曲线,计算新的加速比和功耗开销
- 加速比是利用Amdal定理的推论来计算得到上边界。加速比的基准是45nm的Nehalem
- 通过多次迭代后,面积达到上限或者是功率达到上限,性能开始下降。在这个节点可以得到最优加速比和最优的核个数。然后通过从分配给处理器核的总裸片面积中减去这些核占用的面积来计算dark silicon的比例
- 针对所有的技术节点重复上述的操作,固定核的功耗(不包括L2和L3 cache)为125W,核的面积(不包括L2和L3 cache)为111mm2