异构系统架构或有关满足CPU和GPU的要求

长期以来,微电子学的发展一直以“越来越少”为座右铭。减少了技术过程,引入了x86体系结构的新元素(指令扩展集),提高了计算内核的时钟频率。当“粗略”生产率的增长取决于经济和自然因素时,各种并行化计算的方法便开始流行。同时,不仅开发了在单线程和复杂的计算中表现出良好性能的CPU,而且还开发了能够快速执行许多常规处理器难以完成的相似和简单任务的GPU。



今天,我们正在进入芯片开发的新时代,这些芯片负责台式机,服务器,移动设备和可穿戴电子设备的核心计算。通过结合在CPU和GPU上进行信息处理的方法,我们开发了一种新的开放式体系结构,如果没有这种体系结构,则很难进一步实施相同的摩尔定律。认识HSA-异构系统架构。

历史的时刻


为了充分理解HSA一方面是如何接近的,另一方面,它超越了现代解决方案的体系结构,让我们回顾一下历史。即使我们抛弃了数十年的灯技术,而是从1950年代开始,即晶体管在微电子技术中出现的那一刻起,您都可以撰写另一篇文章。让我们简要地介绍一下处理器行业的主要“里程碑”,而很少涉及视频卡的历史。

在计算机工程的曙光中,CPU相当简单。实际上,所有操作都归结为二进制系统中的数字加法。当需要减法时,所谓的“ 反向代码“:它们简单易用”铁”,不需要最复杂的实现数字“诚实”减法的建筑乐趣。对于每种计算机型号,程序都是分别编写的,直到1964年才出现。


IBM系统/ 360

1964年,IBM发布了System / 360,这是一台改变了我们创建处理器方式的计算机。最有可能是他荣幸地引入了诸如系统体系结构这样的概念。只是因为在他之前没有“系统”。事实是,在System / 360之前,50年代和60年代的所有计算机只能使用专门为他们编写的程序代码。另一方面,IBM开发了第一组指令,该指令集在各种配置(和性能)中均受支持,但具有相同的系统/ 360体系结构。顺便说一句,在同一台计算机上,该字节首次变为8位。在此之前,几乎在所有流行的计算机中,它都是由六位组成的。

DEC的发展是60年代的第二项重大创新。在当时的PDP-8计算机中,他们使用了极其简单的体系结构,仅包含四个12位的寄存器和500个以上的CPU块。那些在1970年代已经被成千上万,在2000年代被十亿所衡量的“晶体管”。 IBM的这种简单性和创建“指令集”之类的概念决定了计算机技术的进一步发展方向。

微电子学的繁荣始于70年代。一切都始于首批单芯片处理器的生产:然后许多公司在许可下生产了芯片,然后对其进行了改进,增加了新的指令并扩展了功能。

自70年代中期以来,8位处理器市场已经满载,并且到本世纪末,可负担得起的16位解决方案出现在计算机中,并带来了x86架构,该架构(尽管有重大改进)仍然有效。当时停止16位处理器开发的主要祸害是制造商对所谓的生产的“限制”。支持8位架构的芯片。他们共同组成了后来被称为“北”和“南”的桥梁。

在80年代初,厌倦了市场惯性的困扰,许多制造商将部分控制“支持芯片”移到了处理器本身内部。随后,来自处理器的东西将进入主板的芯片组,然后返回,但是即使这样,这种架构还是有点类似于现代SoC。

80年代中期和中期以过渡到32位存储器寻址和32位处理器内核为标志。摩尔定律像以前一样起作用:晶体管的数量增加,时钟频率和“粗糙”处理器性能得到提高。

1991年,AMD Am386DX和Am386SX处理器崭露头角,其性能可与下一代系统相媲美(486)。许多人认为Am386SX是该公司的第一个独立开发产品,并且是高性能家用PC和工作站市场上将近15年的主导地位的起点。是的,它在结构上是i368SX芯片的克隆,但它的工艺流程较低,能效提高了35%,同时它的时钟频率比其祖先更高,但价格更便宜。


九十年代本身在微电子领域的事件和市场的迅速增长中都相当丰富。上世纪90年代,AMD开始被视为市场上的重要厂商之一,因为我们的处理器在价格和性能比方面常常使竞争对手离开英特尔奔腾,尤其是在家用领域。扩展的指令集(MMX / 3DNow!),二级缓存的出现,工艺技术的大幅下降,时钟速度的提高……现在新的千年已经到了。

2000年,AMD处理器在1 GHz上首次超过世界范围,不久之后,相同的K7架构也达到了1.4 GHz的新高度。

在2003年底,我们发布了基于K8架构的新处理器,其中包含三项重要的创新:64位内存寻址,集成内存控制器和HyperTransport总线,当时提供了惊人的带宽(高达3.2 GB / s。)。

在2005年,出现了第一个双核处理器(英特尔在一个基板上具有两个独立的内核核,AMD在同一芯片内具有两个核,但是具有独立的缓存)。

经过几年的自然发展,K8架构被新的(K10)取代。在最大配置下,一个芯片上的内核数增加到了六个,出现了第三级的通用缓存。而且,进一步的发展比革命性的发展更具定量和质量。更多兆赫,更多内核,更好的优化,更低的功耗,更精细的制造工艺,改进的内部单元,例如分支预测器,存储器控制器和指令解码器。

可以很简单地描述一下我们在GPU的发展中感兴趣的内容(作为HSA文章的一部分)。随着计算机作为普遍的家庭工作和娱乐解决方案的泛滥,计算机游戏已越来越流行。伴随着它,3D图形的可能性也在增长,面对视频加速器,需要越来越多的“注入”肌肉。通过使用特殊的微程序和着色器,可以在3D图形中以较少的血液实现逼真的照明。最初,着色器处理器分为顶点和像素处理器(前者负责处理几何,后者负责纹理),后来形成统一的着色器体系结构,因此出现了可同时为顶点和像素着色器执行代码的通用着色器处理器。

GPGPU,图形加速器上的通用计算可以使用开放标准和OpenCL或C的某种简化方言来实现。

从那时起,在GPU的关键创新中,我们只能提及低级Mantle API的外观,该API允许您访问有关此内容的AMD图形卡。与访问PS4和Xbox One控制台中的图形加速器的级别相同),以及最近两年GPU的内存容量爆炸式增长。

图片

故事到此结束,是时候继续介绍最有趣的内容了:HSA。

什么是HSA?


首先,我想说一个事实,即HSA是一个开放平台,微电子制造商可以在该平台的基础上构建符合某些原则和一般规则的产品(无论使用何种说明)。

同时,HSA是一种处理器体系结构,它结合了经典CPU内核上的标量计算,GPU上的大规模并行计算以及DSP模块上的信号处理,并通过对RAM的一致访问来连接它们。也就是说,HSA中的处理器和视频生产的整个历史在某一时刻融合在一起:微电子领域近50年的发展导致各种系统最佳方面的逻辑组合的产生。

x86架构和处理器的发展使创建高效的处理器模块成为可能,这些模块可提供常见任务和低功耗。

GPU内核内部的着色器处理器的统一以及具有大量并行执行模块的系统的总体编程简化,为GPGPU提供了一种方法,并且可以在以前使用单个硬件加速器的地区使用视频卡的处理能力,而这些领域并没有获得明显的市场份额,因此保持漂浮。



集成的内存控制器,PCIe总线和I / O系统为各种HSA模块提供了透明的内存访问。

最后,内置DSP允许您在处理视频和音频内容时减轻CPU和GPU的负担,因为它基于硬件,基于对相应信号进行编码和解码的工作。

所有这些模块一起涵盖了现代任务的整个范围,并且HSA允许您使用经典工具(例如Java和C ++等语言)透明,轻松地教程序使用各种可用硬件功能。

建立HSA的原因


现代现实(可穿戴和移动电子设备的普及,经济和环境问题)在微电子技术的发展中创造了某些趋势:减少所有设备(无论是智能手机还是服务器)的能耗,提高生产率,改进模式识别工作。

原则上,第一个是可以理解的。每个人都希望小工具的工作时间更长,Big Mac的箱子并不厚,并且没有像炉子上的煎锅一样被加热。数据中心的所有者在排热和确保不间断电源,为它们加载额外的瓦特热量包方面有很多麻烦,这意味着增加服务成本。更昂贵的托管-在您喜欢的资源上投放更多广告,设备上的CPU负载更多,功耗更高,电池寿命更长。

今天提高生产力只是理所当然的。人们已经习惯了这样一个事实,因为70年代的处理器每年都在打破性能纪录,游戏变得越来越漂亮,系统和软件也越来越复杂(同时又不失其视觉速度),现代程序员工具包含越来越多的抽象层。 ,每一个都具有真实的表现。

嗯,智能助手,虚拟助手和人工智能发展前景领域的现代发展仅需要正常识别人类的语音,面部表情和手势,进而需要提高直接性能并优化音频和音频解码操作视频流。

所有这些问题将通过以SoC形式实现的通用硬件体系结构来解决,并结合经典CPU和GPU的魅力,在那些能够最有效地执行相应任务的模块之间有效地分配串行和并行操作。

但是,如何教软件使用所有如此强大的计算功能呢?

异构系统的关键特征


程序员在访问这种系统的计算功能时应该没有问题。为此,HSA具有许多关键功能,这些功能简化了软件开发人员的工作,并使HSA在开发方面更接近经典系统:

  • 所有处理器的统一寻址;
  • 全内存连贯性;
  • 页面存储系统中的操作;
  • 自定义发送模式;
  • 体系结构级别的队列管理;
  • 对计算处理器的高级语言支持-GPU;
  • 上下文的更改和抢先式多任务处理。

应用程序开发人员无需了解低级编程语言:开发人员可以使用标准组件,简单的中间语言,交互界面和硬件,并且可以轻松地“隐藏”隐藏的内存以及如何在计算模块之间分配任务。

统一内存寻址的作用很难被高估。正式地,没有它,就不会有HSA。数据在内存中的位置,拥有多少核,模块和计算单元都无关紧要。您移动指针并执行计算,不要将字节从一个执行器“传输”到另一个执行器。减少了缓存负载,并简化了处理器本身的控制。在平台级别上的内存抽象将允许在不同平台上使用相同的代码,从而简化了软件开发人员的工作。

OpenCL和C ++ AMP的难点


对并行系统进行编程并非易事。为了使开发人员更轻松,我们开发了Bolt库,该库为最常用的模板提供了有效的模式,以使用并行计算对数据进行排序,缩小,扫描和转换。

为了加快Java代码而不在OpenCL上重写它,使用了一个特殊的AparApi库(开源),该库允许您将Java字节码转换为OpenCL,并支持在CPU和GPU内核上的并行计算。

将来,计划完成Aparapi的定型工作,首先将其与HSAIL关联,然后添加一个特殊的优化程序。最后,HSA必须直接通过Java机器以异构加速工作,这对用户和程序员都是透明的。


我们已经说过,HSA是一个开放平台。开发人员免费提供API和规范,HSA本身独立于CPU或GPU的指令集。

为了确保各个供应商的硬件解决方案的兼容性,我们创建了自己的ISA套件:HSAIL(HSA中间层),无论HSA解决方案内部是什么,它都可以确保软件的运行。中间层本身支持使用异常,虚函数,现代语言的内存模型进行工作,因此对C ++,Java和.Net的支持不会出现问题,而开发人员可以直接访问硬件并使用现成的优化库HSA将独立分配任务并简化与硬件的通信,从而简化了程序员的工作。



五金配件


并非只有AMD才能存活HSA。对于开发人员而言,重要的一点是,一旦编写了代码,在不同设备上的效果就一样好。有人为此使用诸如C ++或Java之类的高级编程语言,但我们建议使用较低级别的语言。一方面,经典应用程序可以在HSA设备上运行,就好像什么都没有改变一样。操作系统将为旧的应用程序提供对处理器,内存和视频核心的清晰便捷的访问。另一方面,HSAIL允许您从新SoC中提取所有功能,开发人员可以像传统OS和硬件捆绑一样轻松地创建高性能和节省资源的应用程序。

现在是HSA基金会该组织的创建者有7家公司:AMD,ARM,Imagination Technologies,联发科,德州仪器,三星电子和Qualcomm®。

跨计算核心分配任务,传输数据和内存指针,使用HSAIL处理平台的主要元素领域的标准化使供应商可以利用其在钢铁领域的经验,并且开发人员不必担心背后的内容。HSAIL下的应用程序可以在任何平台上运行。

基于HSA的硬件解决方案的优缺点


异构体系结构允许您组合CPU和GPU的功能,这是它的主要优势。同时,HSA会处理消耗的能量,而不会给处理器加载计算,从而使在GPU上运行的效率大大提高。

如今,固态物理的模拟已广泛应用于:从计算机游戏和3D软件包到CAD,以及用于医生,军事人员和运动员的模拟器。在这种系统的CPU上工作通常不是最佳的,因为需要大量但简单的计算。当交互对象的数量超过数百甚至数千时,传统的CPU根本无法提供适当的计算量。但是GPU架构也尽可能适用于此类计算。统一的寻址,页面内存和完整的一致性使您能够以最少的资源和开发人员资源将计算转移到适当的硬件。

HSA在一般任务上的性能通常高于传统CPU,也高于CPU + GPU捆绑软件,原因是无论驱动程序多么理想,将数据从共享内存复制到GPU内存并将计算结果发送回比计算本身更多的时间。

HSA已经比传统系统更快,但它甚至可以更好地工作。实际上,该系统当前的唯一缺点是它是新的。流行才刚刚开始增长,在最不利的经济条件下,新型铁模型进入市场的速度越来越慢,HSA的流行也没有以我们所有人希望的速度增长。一旦开发人员了解了HSA的优势和新系统开发的简单性,并开始在其应用程序中原生支持异构体系结构,我们将看到用于服务器,经典计算机和移动设备的新型高性能应用程序的兴起。

Source: https://habr.com/ru/post/zh-CN387439/


All Articles