系统与设计
的意见

把“异构”HSA的基础

异构处理成为常态,硬件互连将扮演越来越重要的推动者的角色。

受欢迎程度

由库尔特舒勒
在上个月的文章中,我解释了为什么对称多处理(SMP)架构已经在个人电脑和服务器市场受欢迎,为什么非均匀或不对称多处理(AMP)流动和消费电子市场的常态。我也解释了个人电脑和服务器市场趋势主要采用异构体系结构和介绍了HSA基础制造异质核心芯片容易的目标程序。

在本月的文章中,我将介绍HSA解决方案堆栈,并提供长期的愿景HSA如何规模超出CPU-GPU计算。(提示:硬件/ SoC互连是一个关键因素在这!)

kurt1

今天异构编程是如何实现的
在它的初期阶段,国内地址的需要,便于软件编程gpu利用他们独特的紧缩并行工作负载能力更有效地比x86和ARM的cpu。上面的图表总结了这个概念。

今天,cpu和gpu系统内存不共享一个共同的观点,要求应用程序显式地在两个设备之间复制数据。此外,在CPU上运行的应用程序,希望添加到GPU的工作队列必须执行系统调用通过设备驱动程序栈进行通信,然后与一个单独的调度器管理GPU的工作。这增加了重要的运行时的延迟,除了很难计划。

异构编程HSA的方式
为了避免这种情况,使容易编程,保险公司将允许开发人员计划在更高的抽象级别使用主流编程语言,针对HSA的库。下面是一个保险公司的高级视图解决方案堆栈:

kurt2
使一种语言对异质核心编程的关键是有一个中间运行时层抽象硬件细节从开发人员,离开特定于硬件的编码进行一次的硬件供应商或IP提供商。在HSA,中间层是HSA的顶部中间语言或“HSAIL”。

下图显示了HSA HSAIL及其路径通过运行时堆栈:

kurt3

HSAIL是由高级语言编译与HSA像c++编译堆栈。HSA的编译堆栈是基于LLVM基础设施也在使用OpenCL。创建HSAIL之前可能发生运行时或者在运行时:OpenCL运行时包含在运行时调用编译器堆栈和执行一个程序,已经在方式来表述数据并行处理的形式。另外,微软的c++ AMP (c++加速大规模并行)使用编译器在程序编译而不是执行堆栈。c++ AMP编译器提取方式来表述数据并行处理代码部分,他们经过HSA编译器堆栈,并通过非并行代码通过正常编译路径。

下图显示了HSA编译堆栈,编程代码编译成HSAIL:

kurt4

特定于硬件的HSA终结器
在其中扮演了一个关键的角色特定于硬件的“终结器”,它是将HSAIL计算单位的本地指令集。硬件和IP供应商负责创建终结器,支持他们的硬件。终结器是轻量级的,在编译时可以运行,安装或运行时间取决于需求。

的终结器是不同的异构计算单元的细节。初始HSA的实现将最有可能支持GPU计算与GPU的终结器供应商HSA成员如AMD,想象力和手臂。(甚至高通支持他们促图形核心。)

异类:超过CPU和GPU
然而,正如在上个月的文章所讨论的,许多现有的异构体系结构有其他离散处理单元等功能的音频数字信号处理或流处理,图像和视频处理(SIMD帧处理),和安全。随着HSA的成熟,硬件和IP供应商创建这些处理单元可以使保险公司通过创建特定于硬件的终结器硬件可编程性。

从愚蠢的调度智能调度
有多个异构处理单元将从系统的角度使负载调度。残酷的现实是,现有的工作负载调度和操作系统调度算法相对简单,通常只考虑当地活动的处理单元或集群处理单元(见Linux完全公平调度器调度是如何实现的一个例子。)

这些算法不考虑现有交通追逐整个系统或到其他处理单元。缺乏全局视图为调度几乎保证会有争用和拖延处理单元等宝贵的系统资源的访问,尤其是DRAM。

提高负载调度的一个方法将调查现有的运行时数据流在临界点整个系统的互连,并使用这些信息来分配优先级的工作负载,处理单元和工作负载。异构处理成为规范和处理单元被添加到一个系统中,这种类型的interconnect-assisted调度需要。换句话说,硬件连接是一个关键的推动者将异构到保险公司。

来源
Kyriazis,乔治(AMD)。“异构系统架构:技术评审。“白皮书,HSA基金会,2012年8月。
从保险公司解决方案堆栈图在这里

库尔特·舒勒在Arteris营销副总裁。



留下一个回复


(注意:这个名字会显示公开)

Baidu