本文概述
- 不好了!这是另一个愚蠢的标准开发人员必须实施的
- HSA的发展, 牙齿问题和收养问题
- 一些用于智能手机和平板电脑的HSA怎么样?
- HSA如何工作?
- 异构计算有什么好处?
- 为HSA进行开发:时间来了一些坏消息
- HSA和GPU计算的未来
在这篇文章中, 我将尝试解释为什么HSA在不久的将来会变得很重要, 因此我将从基础开始:什么是HSA?为什么要关注?
HSA代表异构系统架构, 这听起来有点无聊, 但请相信我, 它的确会变得非常令人兴奋。 HSA本质上是一组标准和规范, 旨在允许在同一总线上进一步集成CPU和GPU。这不是一个全新的概念。台式机CPU和移动SoC多年来一直采用集成图形并使用单条总线, 但是HSA将其提升到了一个新水平。
文章图片
相同的负载, 不同的体系结构:CPU和GPU在不同的任务上表现出色。当他们在没有开发人员输入的情况下开始分担负载时会发生什么?
鸣叫
HSA不仅允许CPU和GPU使用相同的总线和共享内存, 还允许这两种截然不同的体系结构协同工作并共享任务。听起来似乎没什么大不了, 但是如果你仔细研究一下这种方法的潜在长期影响, 从技术意义上讲, 它看起来似乎很” 甜” 。
不好了!这是另一个愚蠢的标准开发人员必须实施的 是的, 没有。
共享同一总线的想法并不是什么新鲜事, 对于某些计算任务(不涉及渲染头像)采用高度并行化的GPU的想法也不是什么。之前已经做过, 我想我们的大多数读者已经熟悉CUDA和OpenCL等GPGPU标准。
但是, 与CUDA或OpenCL方法不同, HSA至少在将不同的负载分配给不同的处理核心时, 将有效地使开发人员摆脱困境。硬件将决定何时将计算从CPU卸载到GPU, 反之亦然。 HSA不应替代已建立的GPGPU编程语言(如OpenCL), 因为它们也可以在HSA硬件上实现。
这就是HSA的重点:应该使整个过程变得容易甚至无缝。开发人员不必考虑将计算任务转移到GPU。硬件将自动执行此操作。
文章图片
许多知名人士都支持HSA。但是, 行业重量级英特尔和英伟达不在名单中。
鸣叫
为此, HSA将必须获得多家芯片制造商和硬件供应商的支持。虽然HSA支持者的名单令人印象深刻, 但英特尔显然不在这一名副其实的芯片行业名人榜上。考虑到英特尔在台式机和服务器处理器市场上的市场份额, 这是一个大问题。你在列表中找不到的另一个名字是Nvidia, 它专注于CUDA, 目前是GPU计算市场的领导者。
但是, HSA并非仅针对高性能系统和应用程序而设计, 而是通常采用Intel Inside标签的硬件。 HSA还可以用于节能型移动设备, 而英特尔在这些移动设备中的市场份额可忽略不计。
因此, HSA应该可以使生活更轻松, 但这是否有意义?会流行吗?这不是技术问题, 而是经济问题。这将取决于市场的无形之力。因此, 在我们继续之前, 让我们先仔细研究一下目前的状况以及我们如何到达这里。
HSA的发展, 牙齿问题和收养问题 正如我在导言中所说, HSA并非完全是一个新颖的概念。它最初是由Advanced Micro Devices(AMD)设想的, 该公司对将其付诸实践有着既得利益。十年前, AMD收购了图形专家ATI, 从那时起, 该公司一直在尝试利用其对尖端GPU技术的访问权来促进整体销售。
从表面上看, 这个想法很简单:AMD不仅将继续开发和制造尖端的离散GPU, 还将在其处理器中集成ATI的GPU技术。 AMD的市场部门将这个想法称为” 融合” , 而HSA被称为Fusion System Architecture(FSA)。听起来不错吧?拥有一个不错的x86处理器并具有良好的集成显卡听起来确实是个好主意。
不幸的是, AMD在此过程中遇到了许多问题。我将列举其中一些:
- 在这种情况下, 任何技术上的好主意都必定会被竞争对手采纳-英特尔。
- AMD失去了技术优势, 并因英特尔的代工技术领先地位而越来越难以在CPU市场上竞争。
- AMD的执行存在问题, 许多新处理器迟到了市场。其他人则全部报废。
- 2008年的经济崩溃和随后的移动革命没有帮助。
除了市场营销, AMD第一代APU(代号Llano)失败了。这些芯片已经很晚了, 跟不上英特尔的产品。也不包含严重的HSA功能, 但AMD开始在其2012平台中添加了它们(Trinity, 这基本上是Llano正确完成的)。下一步是在2014年推出Kaveri APU, 它支持异构内存管理(GPU IOMMU和CPU MMU共享相同的地址空间)。 Kaveri还带来了更多的体系结构集成, 从而在CPU和GPU之间实现了一致的内存(AMD称之为hUMA, 代表异构统一内存访问)。随后的Carizzo刷新添加了更多的HSA功能, 使处理器能够上下文切换GPU上的计算任务并执行更多技巧。
即将面世的Zen CPU架构以及基于该架构的APU有望在市场上出现时提供更多的功能。
所以有什么问题?
AMD并非唯一一家意识到裸芯片GPU潜力的芯片制造商。英特尔和ARM芯片制造商一样, 也开始将它们添加到其Core CPU中, 因此, 目前几乎所有智能手机SoC以及绝大多数PC / Mac都使用集成GPU。同时, AMD在CPU市场上的地位被削弱了。市场份额的下滑使AMD的平台对开发商, 企业甚至消费者的吸引力下降。市场上根本没有很多基于AMD的PC, Apple根本不使用AMD处理器(尽管它确实使用了AMD图形, 主要是由于OpenCL兼容性)。
在高端CPU市场上, AMD不再与英特尔竞争, 但即便如此, 在这方面也不会有太大的改变。人们不会购买2, 000美元的工作站或游戏PC来使用集成显卡。他们使用昂贵的离散图形, 并且对能源效率并不在意。
一些用于智能手机和平板电脑的HSA怎么样? 可是等等。那么移动平台呢? AMD不能为智能手机和平板电脑芯片推出类似的解决方案吗?好吧, 不, 不是真的。
你可以看到, 在收购ATI几年后, AMD陷入了财务困境, 再加上经济危机, 因此决定将其Imageon移动GPU部门出售给高通。高通公司将产品重新命名为Adreno(Radeon的产品), 并使用重新粉刷的内部GPU成为智能手机处理器市场的主导者。
你们中有些人可能已经注意到, 在智能手机革命即将开始之际出售智能手机图形套装似乎并不算是一项明智的业务举动, 但我想事后看来总是20/20。
HSA过去仅与AMD及其x86处理器相关联, 但现在不再如此。实际上, 如果所有HSA Foundation成员都开始销售支持HSA的ARM智能手机处理器, 那么就收入和出货量而言, 他们的AMD x86处理器的销量将是后者的几倍。那么, 如果他们这样做怎么办?这对行业和开发商意味着什么?
好吧, 对于初学者来说, 智能手机处理器已经依赖于异构计算。异构计算通常是指在单个芯片中使用不同架构的概念, 并且考虑到当今高度集成的SoC上的所有组件, 这可能是一个非常宽泛的定义。结果, 取决于一个人的标准, 几乎每个SoC都可以被视为异构计算平台。有时, 人们甚至将基于同一指令集的不同处理器称为异构平台(例如, 具有ARM Cortex-A57和A53内核的移动芯片, 它们均基于64位ARMv8指令集)。
许多观察家一致认为, 现在大多数基于ARM的处理器都可以视为异构平台, 包括Apple A系列芯片, Samsung Exynos SoC和其他供应商(即高通和联发科等大型厂商)的类似处理器。
但是, 为什么有人在智能手机处理器上需要HSA?使用GPU进行通用计算来处理专业工作负载不是全部问题, 不是愤怒的小鸟和Uber吗?
是的, 但这并不意味着不能使用几乎相同的方法来提高效率, 这是移动处理器设计中的优先事项。因此, 代替在高端工作站上处理无数并行任务, HSA还可以用于使移动处理器更高效, 更通用。
很少有人会仔细查看这些处理器, 他们通常会在购买新手机时查看规格表, 就是这样:他们查看数字和品牌。他们通常不看SoC芯片本身, 这向我们提供了很多信息, 这就是为什么:高端智能手机处理器上的GPU比CPU占用更多的芯片空间。考虑到它们已经存在, 可以将它们很好地用于游戏以外的其他应用程序, 不是吗?
假设的, 完全符合HSA的智能手机处理器可以使开发人员充分利用这一潜力, 而不会增加总的生产成本, 实现更多功能并提高效率。
至少从理论上讲, HSA可以为智能手机处理器提供这些服务:
- 通过将合适的任务转移到GPU来提高效率。
- 在某些情况下, 通过卸载CPU来提高性能。
- 更有效地利用内存总线。
- 通过同时挖掘更多的硅有可能降低芯片制造成本。
- 引入CPU内核无法有效处理的新功能。
- 通过标准化简化开发。
HSA如何工作? 【针对开发人员的HSA(面向大众的异构计算)】我已经在引言中概述了基础知识, 出于以下两个原因, 我不愿透露太多细节:没有人喜欢在技术博客上发布中篇小说, 并且HSA的实现可能有所不同。
因此, 我将尝试用几百个单词来概述这个概念。
在标准系统上, 应用程序会通过将缓冲区转移到GPU来减轻计算GPU的负担, 这需要在排队之前进行CPU调用。然后, CPU将调度作业并将其传递给GPU, GPU将在完成后将其传递回CPU。然后, 应用程序将获得缓冲区, 该缓冲区必须在准备就绪之前再次由CPU进行映射。如你所见, 这种方法涉及很多方面。
文章图片
一条内存总线上的不同体系结构。精简是HSA的要旨。
鸣叫
在HSA系统上, 应用程序将作业排队, HSA CPU将接管工作, 将其交给GPU, 取回, 然后再交给应用程序。做完了
通过直接在CPU和GPU之间共享系统内存, 使这成为可能, 尽管也可能涉及其他计算单元(例如DSP)。为了实现此级别的内存集成, HSA为计算设备采用了虚拟地址空间。这意味着, 只要CPU和GPU内核共享页表, 它们就可以平等地访问内存, 从而允许不同的设备通过指针交换数据。
这显然对提高效率非常重要, 因为不再需要使用虚拟内存为GPU和CPU分配内存。归功于统一的虚拟内存, 它们都可以根据自己的需求访问系统内存, 从而确保了卓越的资源利用率和更大的灵活性。
想象一下一个具有4GB RAM的低功耗系统, 其中512MB分配给了集成GPU。此模型通常不灵活, 你无法即时更改GPU内存量。你只能使用256MB或512MB, 仅此而已。使用HSA, 你可以做任何你想做的事情:如果将大量内容转移到GPU, 并且需要更多RAM用于GPU, 则系统可以对其进行分配。因此, 在具有大量高分辨率资源的图形绑定应用程序中, 系统最终可能会无缝地为GPU分配1GB或更多的RAM。
在所有条件相同的情况下, HSA和非HSA系统将共享相同的内存带宽, 可以访问相同数量的内存, 但是HSA系统最终可以更有效地使用它, 从而提高了性能并降低了功耗。一切都是以少花钱得到更多。
异构计算有什么好处? 简单的答案?对于所有比GPU更适合于GPU的计算任务, 异构计算或HSA(如果实现的话)应该是一个不错的选择。但是, 这到底是什么意思, GPU到底有什么用?
与离散图形(尤其是高端游戏图形卡和工作站解决方案)相比, 现代的集成GPU的功能不是很强大, 但它们的功能要比其前代产品强大得多。
如果你一直在跟踪, 那么你可能会认为这些集成GPU只是在开玩笑, 而且多年来, 它们只是那样:便宜的家用和办公室用盒的图形。但是, 随着集成GPU从芯片组转移到CPU封装并死亡, 这种情况在十年之交开始发生了变化, 真正实现了集成。
文章图片
这就是当今AMD处理器的外观。我们仍然称它们为处理器, 但是GPU占用的硅面积比CPU多得多。
鸣叫
与旗舰级GPU相比, 其动力仍然很低, 但即使是集成GPU也具有很大的潜力。像所有GPU一样, 它们在单指令, 多数据(SIMD)和单指令, 多线程(SIMT)加载方面表现出色。如果你需要处理大量重复并行化的负载, GPU应该会有所帮助。另一方面, CPU在繁重的分支工作负载上仍然表现更好。
这就是为什么CPU内核较少(通常为2到8个)的原因, 并且这些内核针对顺序串行处理进行了优化。 GPU往往有数十个, 数百个, 而在旗舰级独立显卡中, 则有数千个更小, 更高效的内核。 GPU内核旨在同时处理多个任务, 但是这些单独的任务比CPU处理的任务要简单得多。如果GPU能够以出色的效率和/或性能处理CPU, 为什么还要给CPU负担如此大的负担?
但是, 如果GPU如此出色, 为什么我们几年前不开始将它们用作通用计算设备呢?很好, 该行业尝试过, 但是进展缓慢, 并且仅限于某些领域。该概念最初被称为图形处理单元上的通用计算(GPGPU)。在过去, 潜力有限, 但GPGPU的概念很合理, 后来以Nvidia的CUDA和Apple / Khronos Group的OpenCL的形式被接受和标准化。
CUDA和OpenCL产生了巨大的差异, 因为它们允许程序员以不同的, 更有效的方式使用GPU。但是, 它们是特定于供应商的。你可以在Nvidia硬件上使用CUDA, 而OpenCL是为ATI硬件保留的(并已被Apple接受)。微软的DirectCompute API与DirectX 11一起发布, 并允许使用一种有限的, 与供应商无关的方法(但仅限于Windows)。
总结一下, 列出一些GPU计算应用程序:
- 传统高性能计算(HPC), 包括HPC群集, 超级计算机, 用于计算负载的GPU群集, GRID计算, 负载平衡。
- 需要物理的负载通常可以但不一定涉及游戏或图形。它们还可以用于处理流体动力学计算, 统计物理学以及一些奇异的方程式和算法。
- 几何, 几乎所有与几何有关的内容, 包括透明度计算, 阴影, 碰撞检测等。
- 音频处理, 使用GPU代替DSP, 语音处理, 模拟信号处理等。
- GPU显然是为数字图像处理而设计的, 因此它们可用于加速图像和视频的后期处理和解码。如果你需要解码视频流并应用过滤器, 那么即使是入门级GPU也将使用CPU擦拭地板。
- 科学计算, 包括气候研究, 天体物理学, 量子力学, 分子建模等。
- 其他计算量大的任务, 即加密/解密。无论你需要”
挖掘”
加密货币, 加密或解密机密数据, 破解密码还是检测病毒, GPU都可以提供帮助。
无论如何, 不??存在一个完整的列表, 因为GPU计算可用于从财务和医学成像到数据库和统计负载的各种事务。你受自己的想象力限制。所谓的计算机视觉是另一个新兴应用。如果你需要” 教” 无人驾驶或无人驾驶汽车以避免树木, 行人和其他车辆, 那么功能强大的GPU就是一件好事。
随时在此处插入你最喜欢的Lindsay Lohan笑话。
为HSA进行开发:时间来了一些坏消息 这可能是我的个人观点而非事实, 但我是HSA的信徒。我认为这个概念具有很大的潜力, 只要它能够正确实施并在芯片制造商和开发人员中获得足够的支持。但是, 进度进展缓慢, 或者充满了一厢情愿的想法, 也许这只是我的感觉。我只是喜欢看到新技术在起作用, 除了耐心的个人, 我什么都没有。
HSA的问题在于它还不存在。这并不意味着它不会起飞, 而是可能需要一段时间。毕竟, 我们不只是在谈论新的软件堆栈;它还涉及到新的软件堆栈。 HSA需要新的硬件才能发挥作用。问题是该硬件大部分仍在设计板上, 但我们到了。慢慢来
文章图片
不幸的是, HSA解决方案堆栈不仅仅包含标准的软件工具套件。异构计算是软件和硬件的共生。
鸣叫
这并不意味着开发人员不会从事与HSA相关的项目, 但是对此并没有太大的兴趣或进展。如果你想尝试一下HSA, 可以参考以下资源:
- HSA Foundation @ GitHub显然是与HSA相关的资源的地方。 HSA基金会在GitHub上发布并维护了许多项目, 包括调试器, 编译器, 重要的HSAIL工具等等。大多数资源都是为AMD硬件设计的。
- AMD提供的HSAIL资源使你可以更好地了解HSAIL规范。 HSAIL代表HSA中级语言, 基本上是想要定位HSA设备的后端编译器作者和库作者的关键工具。
- HSA程序员参考手册(PDF)包含完整的HSAIL规范, 以及对中间语言的全面解释。
- HSA Foundation的资源暂时有限, 并且基金会的”
开发人员计划”
即将推出, 但是有许多官方的开发人员工具可供签出。更重要的是, 它们可以使你很好地了解入门所需的堆栈。
- 官方的AMD博客还提供了一些有用的HSA内容。
HSA和GPU计算的未来 每当我们涉及到一项新兴技术时, 我们都面临着同样的难题:我们应该告诉读者在该技术上花费时间和资源, 还是让它远离, 采取观望的态度?
我已经很清楚地表明了自己的偏见, 因为我喜欢GPU计算的一般概念, 但是目前大多数开发人员都可以不用它。即使取得成功, HSA的吸引力也将有限, 并且不会引起大多数开发商的关注。但是, 这可能很重要。对于AMD而言不幸的是, 它不可能在x86处理器市场上改变游戏规则, 但在基于ARM的移动处理器中可能会更重要。这可能是AMD的主意, 但高通(Qualcomm)和联发科(MediaTek)等公司更能为数亿用户带来支持HSA的硬件。
它必须是软件和硬件的完美共生。如果移动芯片制造商为HSA疯狂, 那将是一件大事。新一代的HSA芯片将模糊CPU和GPU内核之间的界限。它们将以相等的条件共享相同的内存总线, 我认为公司将开始以不同的方式进行营销。例如, AMD已经将其APU推销为包括不同” 计算核心” (CPU和GPU)的” 计算设备” 。
移动芯片最终可能会使用类似的方法。芯片制造商可以开始谈论集群, 模块和单元, 而不是销售带有八个或十个CPU核以及此类GPU的芯片。因此, 如果考虑到GPU内核, 则具有四个小型和四个大型CPU内核的处理器将是” 双群集” 或” 双模块” 处理器, 或者是” 三群集” 或” 四群集” 设计。 。随着时间的流逝, 许多技术规格变得毫无意义, 例如, 办公室打印机上的DPI或廉价智能手机相机上的百万像素计数。
文章图片
HSA使不同的体系结构能够发挥自己的重量, 并以更高的效率处理各种不同的负载。
鸣叫
虽然不只是行销。如果GPU变得像CPU核心一样灵活, 并且能够以与CPU相同的条件访问系统资源, 那么为什么还要打扰他们的真实姓名呢?二十年前, 业界停止使用专用的数学协处理器(FPU), 因为它们成为每个CPU的必备组件。仅仅几个产品周期之后, 我们就忘记了它们曾经存在过。
请记住, HSA不是利用GPU进行计算的唯一方法。
英特尔和英伟达并未加入, 他们的做法有所不同。近年来, 英特尔悄然增加了GPU研发投资, 其最新的集成显卡解决方案也相当出色。随着单片GPU的功能越来越强大, 并且占用了更多的硅芯片资源, 英特尔将不得不寻找更多巧妙的方法将其用于通用计算。
另一方面, 英伟达几年前退出了集成显卡市场(当时它停止生产PC芯片组), 但它的Tegra系列处理器确实在ARM处理器市场上取得了成功。它们并没有取得巨大的成功, 但仍在某些硬件中使用, Nvidia将其工作重点放在嵌入式系统(即汽车)上。在这种设置下, 集成GPU可发挥自身的优势, 因为它可用于碰撞检测, 室内导航, 3D映射等。还记得Google的Project Tango吗?一些硬件基于Tegra芯片, 可以进行深度感应和其他一些巧妙的技巧。另一方面, 英伟达的Tesla产品线涵盖了高端GPU计算市场, 并确保了英伟达在此后几年的主导地位。
底线?从表面上看, GPU计算是一个潜力巨大的好主意, 但当前的技术水平还有很多不足之处。 HSA应该为解决大多数这些问题大有帮助。而且, 并非所有行业参与者都支持它, 这势必会进一步延缓其应用。
可能要花几年时间, 但我相信GPU最终会在通用计算领域, 甚至在移动芯片领域中占据一席之地。技术几乎已经准备就绪, 剩下的工作将由经济学完成。怎么样?好, 这是一个简单的例子。英特尔当前的Atom处理器具有12至16个GPU执行单元(EU), 而其前身只有四个基于旧架构的EU。随着集成GPU变得越来越大, 功能越来越强大, 并且随着芯片面积的增加, 芯片制造商别无选择, 只能使用它们来提高整体性能和效率。否则, 对利润和股东不利。
不用担心, 你仍然可以在这种新型GPU上偶尔玩游戏。但是, 即使你不玩游戏, GPU也会在后台做很多事情, 从而减轻了CPU的负担, 从而提高了性能和效率。
我认为我们都可以同意这将是一笔大买卖, 尤其是在廉价的移动设备上。
相关:Vulkan API的简要概述
推荐阅读
- Project Rider(独立的ReSharper IDE)
- 干净的代码和异常处理的技巧
- 尝试一下Scala JVM字节码
- GitHub页面和Cloudflare的无限规模和免费Web托管
- 遗传算法(通过自然选择进行搜索和优化)
- 构建WordPress插件的终极指南
- Deploying an Application
- 用Dapper调用存储过程
- 使用create-react-app构建的项目(并引入react-app-polyfill做IE兼容)在开发环境下的IE浏览器中报错的解决方案