2 灵活多核处理器FTPA 结构设计
2.1 现有灵活多核处理器结构面临的问题
● 通信开销问题
灵活多核处理器结构可以根据应用特征,将多个物理核组合成一个功能强大的逻辑核。 逻辑核的粒度决定了有多少超块可以被推测执行,从而构建不同大小的指令窗口。对于采用EDGE 指令集的结构( 如TFlex),虽然超块内指令间的数据依赖关系在编译时已经获得,但是由于长延迟指令的存在和访存延迟的不确定性,即使依靠编译器静态地面向多个物理核 调度指令,也不能有效地隐藏实际执行时超块内指令间的通信开销。因此超块在逻辑核上的平铺式映射在很多情况下并不适合。
● 逻辑核重构开销问题
灵活多核处理器中每个物理核都包含构成逻辑核的所有资源: 寄存器文件,指令窗口,执行部件以及高速缓存等。 当多个物理核组合成一个逻辑核时,指令窗口和执行部件可以很容易的组合,但寄存器文件和高速缓存的内容则需要重建,因为这些资源里的内容通常是按照地 址索引交错存放的,一旦资源数量或者位置发生改变,则需要清空原有数据后重建。例如在TFlex 中,逻辑核的重构就需要数千个时钟周期,因此难以实现实时的细粒度资源调整。
● 灵活性问题
灵活多核处理器的主要特点是逻辑核的可配置性。 Core Fusion、Federation 和WiDGET 结构由于紧耦合的设计,灵活性十分有限; Voltron 只能静态地配置逻辑核粒度,缺乏实时性; TFlex 虽然提出了逻辑核的动态配置机制,但灵活性仍受到很大约束: TFlex 处理器包含32个同构的细粒度物理核,通过4 × 8 的片上mesh网络进行连接,要求逻辑核配置必须为2 × 2,4 ×4,2 × 4 等特定的mesh 拓扑,即物理核总数和mesh 边长都是2 的指数倍。 这样的限制有其软硬件两方面的原因: 一方面,由于TFlex 编译器将超块内指令静态调度到128 项的逻辑空间,因此2的指数倍大小的拓扑方便超块指令从逻辑空间映射到硬件空间,如4 × 4 × 8 或4 × 2 × 16 硬件空间; 另一方面,寄存器文件和物理核内的高速缓存等共享资源,由于采用地址交错索引的方式,不规则的拓扑将使索引变得复杂。 因此,TFlex 逻辑核粒度只能在这些特定的拓扑之间切换,不仅限制了灵活性,而且也容易引起资源的浪费。
针对上述3 个问题,本文提出一个新的灵活多核处理器结构FTPA. 相比于已有的设计,FTPA具有以下3 个技术创新点: 1 ) FTPA 将单个超块独立的映射在单个物理核上,降低超块内指令间通信开销; 并且根据超块级推测执行的深度调整逻辑核的粒度,以此适应程序不同阶段的并行特征,提高资源利用率。 2) FTPA 将物理核资源划分成需要频繁调整的计算资源和不经常重构的共享资源分别管理,以此降低逻辑核重构开销。 3 )FTPA 在物理Mesh 网络上建立额外的逻辑上环形拓扑的网络连接计算资源,以此支持任意粒度的逻辑核,提供高度的灵活性。 以下2 节分别叙述FTPA 的物理核和逻辑核设计。
2.2 物理核设计
将单个超块单独的映射在单个物理核上,而不是平铺式的映射在多个物理核上,虽然能够有效降低超块内指令间通信开销,但有可能会损失对超块指令级并行性的开发。 因此,我们需要首先对超块的并行性有一个准确的判断。 本文采用如下公式对超块并行性做统计性的判断:
超块并行性= 超块内指令数/ 超块长依赖路径长度。
文献[13]的统计结果显示,对于类似SPEC2K 的通用应用,由4 个单发射或2 个双发射的物理核组成的逻辑核,可以满足绝大多数超块并行性的需要。 因此,FTPA 采用4 发射的物理核设计以保证对单个超块并行性的开发,并使用指令窗口分体的设计( 如图1) 来降低指令选择发射逻辑的复杂度。
根据文献[12-13]中对超块大小的分析,FTPA 采用和TFlex 相同的超块限制,即限制每个超块多包含128 条指令,所以在每个物理核内需要维护128 入口项的指令队列。 基于EDGE 指令显式数据流特征,编译器可以根据指令间的数据依赖关系将指令静态地调度到128 入口项的任意位置上。 因此我们将物理核内指令队列划分为4 个子队列( 如图1) ,每个独立的子指令队列对应各自的逻辑功能部件,包括独占一个ALU和共享一个浮点运算部件。 这样在保证4 发射的同时,有效降低了指令选择发射逻辑的复杂度。 物理核内指令执行的简要数据通路( 通过路由网络访问本地或异地的物理核高速缓存) 也在图1 中示出。
2.3 逻辑核设计
本节通过叙述FTPA 针对现有灵活多核结构( 如TFlex) 的高逻辑核重构开销和低灵活性2 个问题的解决方案来阐述FTPA 的逻辑核设计。逻辑核重配置涉及的资源主要包括: 指令窗口、执行部件、寄存器文件和物理核内高速缓存。 其中,逻辑核的指令窗口大小和执行部件数目,可以随着物理核的数目低开销地、快速地重配置,更多的物理核意味着更大的指令窗口和发射宽度; 但是逻辑核的寄存器文件和高速缓存由于采用分布式共享机制,内容按照地址交错放置在各个物理核上,当逻辑核重构需要刷新后重建,从而带来较大的性能开 销。
然而,由于EDGE 指令集的显式数据流特征,寄存器文件的读写依赖是编译时静态可知的。 因此,如果超块之间通过寄存器通信的数据量较少的话,我们就可以将寄存器文件对物理核私有化,即每个物理核内的指令只需访问本地寄存器文件,而超块之间的 数据依赖则由不同物理核上寄存器文件之间的通信完成。 这样就可以避免寄存器文件在逻辑核内各个物理核上的分布式共享。
图2 示出了超块间寄存器通信数目的统计信息。 从图2 中可以看出,平均85% 以上的超块只有不到5 个的寄存器写操作,并且写操作是在执行过程中离散发生的,而非突发式访问,所以FTPA 将寄存器文件对物理核私有化,并采用寄存器文件间的点对点通信代替分布式共享,不会造成性能瓶颈。
不同于寄存器访问,访存地址不能静态确定,因此高速缓存不能简单采用类似寄存器文件的私有化方法。 FTPA 的解决方案是将物理核内的资源分为2 类: 1) 计算资源,包括指令窗口、执行部件和私有化后的寄存器文件; 2 ) 共享资源,主要包括高速缓存资源。 通过将物理核的计算资源和共享资源分别管理,逻辑核内各个物理核的计算资源之间可以组成逻辑上环形的拓扑连接( 如图3 ( a) 所示) . 需要频繁调整的计算资源的重构只需改变环的大小,从而实现了粒度任意数值的增减; 而对于会引起清空刷新操作的共享资源的重构,可以独立于计算资源,进行粗粒度的调整。 这样不仅降低了逻辑核重构带来的开销,同时也提高了FTPA 结构的灵活性。
图3( a) 示例了一个由8 个物理核组成的FTPA 逻辑核结构。 虽然物理上是4 × 2 的Mesh 网络连接,但是8 个物理核的计算资源额外的建立了一个逻辑上环形的拓扑连接。 访存请求通过片上Mseh 网络传输至所访问的高速缓存所在的位置。 程序执行时,8个超块按照迭代推测次序依次映射到0 到7 号物理核上,即非推测超块0映射到处理器核0 上,然后根据超块0 推测产生超块1,映射到处理器核1 上,再根据超块1 推测产生超块2,放置到处理器核2 上,依此类推,从而8 个超块也组成一个环形的逻辑结构。 本例中超块执行的推测深度为8. 文献[15]讨论了推测深度的预测机制,不同的预测机制都可以应用在FTPA 上。
图3( b) 示例了FTPA 上2 个逻辑核的动态重配置,计算资源( 环形) 和共享资源( 阴影表示)在逻辑上实现分离,在对计算资源的数量进行调整时,共享资源可以保持不变。 图3 ( b) 中第2 种配置示例了逻辑核内计算资源和共享资源的不对称分配: 图中2 个逻辑核都使用了8 个物理核的计算资源,但其中一个只使用了4 个物理核的共享资源; 而另一个逻辑核则使用了12 个物理核的计算资源。 对于计算密集型应用,FTPA 逻辑核能够以较小地开销迅速扩展计算资源,满足并行性需求。 只有当共享资源成为性能的主要瓶颈或浪费严重时,才对其进行重配置。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。