MCPLive > 杂志文章 > 处理器异构系统架构HSA深度剖析

处理器异构系统架构HSA深度剖析

2013-07-26张平《微型计算机》2013年7月上

困难大,任务重—HSA的未来

AMD为用户展示了HSA美好的未来—更高的速度和更优秀的能耗比。显然HSA在合适的任务上将会带来令人惊喜的性能表现。不过摆在AMD面前的困难还相当多。因为无是硬还是软件,习惯了传统计算的用户要突然接受HSA还存在很大的困难。

不过别忘了,还有HSA联盟。没错,HSA联盟中另一个巨头ARM对异构计算非常看好。在ARM之前对新的处理器技术的展示中,ARM希望自己的CortexA系列处理器可以和支持Open CL的Mali系列GPU组建异构计算系统,甚至在ARM的big.LITTLE架构中,Cortex-A7处理器和Cortex-A15处理器之间的切换也以看作是特殊的“异构计算”。目前的Cortex-A7和Cortex-A15处理器是一对一绑定的,ARM希望未来可以将其解绑,将不同的任务交给合适的核心进行处理,这样可以大幅度降低功耗并且更为智能。其余加入的厂商诸如三星、高通、德州仪器等,都是拥自己CPU、GPU架构的厂商,都希望在异构计算中获得一些优势。特别是异构计算有希望带来更为优秀的性能功耗比,更是吸引了注重移动处理器功耗和性能功耗比表现厂商的注意。

但是这所有的厂商加起来推广HSA,似乎还是有些不够。原应很简单,这些厂商依托的软件技术基础是Open CL,苹果作为Open CL的创始人和推广人,并没有出现在HSA联盟的名单上。在PC市场,占统治地位的是英特尔和微软,也没有成为HSA的座上宾。HSA吸引到的唯一堪称业界规则制定企业的场上只有ARM—移动计算市场现在看起来也不太需要如此强大的可编程处理器来执行异构计算,毕竟可编程设备要比固定功能设备需要更多的晶体管和功耗,这并非移动计算厂商的希望,如果将其引入桌面市场,ARM目前的实力还尤嫌不足。总的来说,在大部分业内软件和硬件规则的制定厂商都没有为HSA联盟摇旗呐喊,HSA联盟的成功可能性还存在一些让人担心的地方。

HSA可以成功吗?无法确定。这样一个开放的、新型的和有创新精神的业内联盟的成立的确是一件好事,但成功与否又是另外一件事情。HSA的未来,就像其需要执行的任务那样艰难— GPU和CPU两种架构的智能融合,并行和串行的鸿沟。HSA联盟,需要走的路还很长,很长。

AMD统一寻址内存的优势

AMD在异构计算的技术展示中,专门使用了很大的篇幅来介绍统一寻址内存对异构计算的意义。可能在很多人眼中,统一寻址内存甚至只是HSA系统中不太起眼的部分,但对于AMD的APU或者AMD推广的HSA来说,异构系统下的统一内存寻址(heterogeneous Uniform Memory Access,简称为hUMA)实际上是整个AMD HSA计划的核心所在。

有关GPU和CPU在目前PC架构中组建异构计算时存在的瓶颈等问题,正文有一定介绍,其核心问题就是PCI-E总线带来的传输瓶颈。除了核心问题外,其他的一些附加问题也存在并且很难以解决。

比较明显的是数据的访问问题。假定GPU和CPU中不存在数据传输瓶颈后,CPU如果需要访问GPU显存中的数据,首先需要做的是将访问的区域锁定起来(一般是整个显存),等待读写完成后再释放,如果这个时候恰好有数据在访问区域中读写,那么GPU需要等到CPU工作完成后再进行操作。这个过程效率相当低下。一些诸如CPU的启动指示器等关键性的功能,在GPU上又无法运作,因此整个数据访问呈现一种机械的、暴力的机制。

统一内存寻址是AMD的融合计划也是HSA的核心技术。
统一内存寻址是AMD的融合计划也是HSA的核心技术

hUMA架构和前代产品存在根本性差异。
hUMA架构和前代产品存在根本性差异。

hUMA的架构优势非常明显。
hUMA的架构优势非常明显。

不仅如此,一般来说,当前以分离式内存寻址(GPU和CPU的显存或内存以独立方式存在)CPU和GPU组成的异构系统,GPU在计算前,会等待CPU将所有的数据从内存全部复制到GPU的显存中。反之,CPU如果需要GPU显存内的数据进行计算,需要将整个GPU显存内的数据全部复制到CPU内存中。因此CPU往往需要在内存中为GPU留下相同大小的区域用于更新数据。换句话来说,对CPU和GPU而言,对方的内存池是以一个整体来运作的,极为死板。

不过AMD想到了对策,这就是hUMA技术。在hUMA技术来临后,上述的问题将得到根本意义上的改善。

hUMA能够让GPU和CPU直接存储统一的数据而不改变系统正在进行的运作。hUMA存在双向一致性,所有的操作对对方来说都是可见的,不仅是内存,hUMA也能使用在CPU配置的虚拟存储(demandpagedvirtual memory)上,比如某资料存在于CPU的虚拟存储(实际上在硬盘中)但是GPU却需要,那么CPU就会告诉操作系统进行寻找并将其放入相关的区域供GPU使用。

GPU可以支持分页内存管理。分页内存管理是现代CPU使用的主要内存管理方式,但是GPU上依旧无法支持。hUMA实现了对GPU的分页内存管理,GPU被允许产生缺页异常,不会受限于传统的页表锁定内存。这项功能会让GPU的内存管理更为自由,更有效率。

hUMA支持系统整体内存空间的全局管理。AMD对此的解释是:CPU和GPU的进程可以从整个内存空间内动态分配内存。举例来说,比如有8GB的统一内存空间,CPU和GPU可以做到按需分配,如果CPU需要处理大数据量(比如CPU进行的数据转码),那么CPU会优先分配到更多的内存,GPU由于没有太多工作会及时释放空闲空间供CPU使用,仅维持低的显示需求即可。当GPU在处理图形任务繁重的内容时,又会自动占据更多的内存空间充做显存,CPU在此时一般不异常,不会受限于传统的页表锁定内存。这项功能会让GPU的内存管理更为自由,更有效率。hUMA支持系统整体内存空间的全局管理。AMD对此的解释是:CPU和GPU的进程可以从整个内存空间内动态分配内存。举例来说,比如有8GB的统一内存空间,CPU和GPU可以做到按需分配,如果CPU需要处理大数据量(比如CPU进行的数据转码),那么CPU会优先分配到更多的内存,GPU由于没有太多工作会及时释放空闲空间供CPU使用,仅维持低的显示需求即可。当GPU在处理图形任务繁重的内容时,又会自动占据更多的内存空间充做显存,CPU在此时一般不太会占据大量内存,会将容量释放出来供GPU使用。

hUMA被AMD作为HSA的核心功能之一,它从根本上解决了CPU和GPU长久以来的数据不统一问题。在hUMA的帮助下,GPU和CPU都可以实时获取数据更新,并且可以直接访问对方的虚拟内存,不会再受到物理内存的限制。在这种机制下,GPU和CPU就可以很高效地传递数据进行计算,异构计算中重要的按需分配任务的能力也能得到保障。如果没有hUMA,回到传统的内存状态的话,光是数据复制就需要耗费大量的时间,更不要说随时随地保持数据一致性了。hUMA在AMD HSA中,是整个异构计算的前置条件,如果没有hUMA,那么异构计算即使不会无法完成,在性能上也会暴跌。

分享到:

用户评论

共有评论(1)

  • 2013.08.10 18:28
    1楼

    我想问下 HSA 处理器神马时候上市 有得卖???

    (0) (0) 回复

用户名:

密码: