从Multicore到Many-Core:体系结构和经验
相对简单的x86处理器,连接了矢量处理单元和高速缓存、DRAM控制器以及PCIe接口。所有这些芯片都专门用于执行x86指令代码。Intel展望了Xeon Phi将用于物理、化学、生物和金融分析等应用中。
编程模型
这三种芯片代表了系统软件开发人员三种完全不同的模型。Octeon Fusion非常专用:它是芯片基站。编程人员使用它时,将基站应用线程映射到CPU、加速器和DSP上,通过中心共享高速缓存来同步线程。虽然可以在CPU之间或者在DSP之间动态映射任务,还是需要在不同类型的处理器之间来回迁移一些任务。
对于软件设计人员,16核SPARC64在两方面是完全不同的。所有这些处理器都是一样的,都共享一个L2,因此,不需要将线程锁定某一CPU。硬件加速器位于指令级,由编译器推断其使用,而不是由编程器进行调用。您不需要在分立的硬件加速器之间输入输出数据,确定正确的线程位于正确的CPU上,或者与松耦合辅助处理器同步。
Xeon Phi在数量上与Fujitsu SPARC64芯片不同,北向有50个CPU,而不是16个。其互联结构也明显不同,连贯环上有适度的专用L2,而不是完全共享的L2。毫无疑问,对于与以前IBM相似的Intel体系结构,双环是最高效的芯片实现方式。
Intel和Fujitsu芯片都具有同构体系结构的优点,不需要专门调用硬件加速器,性能与具体位置无关,没有跑道方式那么复杂。软件设计人员可以按照自己的方式,将任何混合数据流、多线程或者数据并行机映射到CPU中。
那么,这到底意味着什么?
很显然,这三种完全不同的many-core芯片对软件开发人员提出了不同的需求。但是,如果是这样,这些SoC究竟给系统开发人员带来了哪些问题呢?由于这些芯片是新出现的,因此,我们向其他公司中有many-core应用经验的用户提出了我们的问题。
他们建议我们应深入了解几个不同的问题。一是配置:SoC需要多大的I/O带宽、总线带宽以及外部存储器带宽?第二,密切相关的问题是性能建模。芯片到底需要多大带宽与它使用数据和产生数据的速度有关。第三是控制问题:SoC怎样处理中断?芯片初始化调试操作、电源管理和按序关断时,都需要什么条件?还有功耗问题,在另一篇文章中专门解决了这一问题。
有经验的用户还提出了另一个有用的建议:明确Octeon Fusion等异构专用SoC与Xeon Phi等同构芯片之间的不同。专家说,这两方面代表了完全不同的挑战。
数据之后
异构many-coreSoC尽管在内部组织上是围绕共享存储器和总线进行构建,而实际上用作数据流机。在某一工作模式下,已知数据流通过芯片的各种处理器来传送,一般是固定的数据无关码型。这些约束简化了系统级分析。
全球研究组织IMEC (比利时Leuven)的软件无线电(SDR)研究部科学项目总监Liesbet Van der Perre解释说:"这些系统的存储器数据流有很高的可预测性。在这些系统中,数据流定义了处理器和通路。在某些共享总线或者存储器结构中的某些点上,您会看到瓶颈,但这通常是可以预测的。"
Van der Perre的计划是采用可重新定义的粗粒度处理器阵列来实现移动SDR。芯片配置会随着射频工作模式而变化,但是,当射频保持在某一模式上时,配置会保持稳定。那么,在某一模式下,阵列的行为实际上与静态异构体系结构非常相似。一旦您理解了数据流之后,就比较容易对带宽需求和功耗进行建模。其实施要求主要来自算法级模型。
这种实现方法是应用异构多处理器常用的方法,能够以同样的方式来使用同构many-core系统。对于某一工作模式,可以将任务固定映射至处理器和存储器,明确设计团队的配置需求,能够解释数据。由于这种映射,分析SoC体系结构和算法描述体现了系统设计人员是否具有这方面的设计技巧。这也是Mercury计算机公司成名的原因之一,该公司是高端嵌入式计算公司,在PowerPC早期就使用了multicore和many-core体系结构,并率先使用了图像处理单元(GPU)进行信号处理。Mercury公司的技术总监Scott Thieret说:"这成为我们增值的主要来源,使我们能够与客户一起工作,将数据流映射到硬件中。"
通过固定映射,至少有信心在理论上对数据流和功耗建模。但这并不意味着很容易实现。Thieret说:"对这些系统建模和优化来自于经验。您需要进行很多测试。有一些重要的指南,例如,让数据尽可能靠近处理器,利用芯片最佳数据移动模型等。但这要依靠经验。"
动态挑战
一些规划人员认为many-core系统的未来是在另一方向:不是将任务静态映射至处理器,而是流动的、虚拟化系统,其中任何线程都可能随时占用任何资源。
- 一种消防应急灯具专用控制芯片的设计(11-02)
- 基于FPGA的8段数码管动态显示IP核设计(02-03)
- 基于FPGA和IP Core的定制缓冲管理的实现(08-14)
- 基于Altera ASI IP核的ASI发送卡实现(02-25)
- FPGA的高速多通道数据采集控制器IP核设计(04-22)
- 基于EDA或FPGA的IP保护的实现(09-16)