中文 英语

计算数据所在位置

计算存储方法推动了功率和延迟的权衡。

受欢迎程度

随着系统架构师开始着手处理在处理器和分层内存和存储之间移动大量数据所带来的性能、能量和延迟影响,计算存储开始受到关注。

根据国际数据公司(IDC)的数据全球边界将从2019年的45zb增长到2025年的175zb。但这些数据本质上是无用的,除非对其进行分析或应用了一定数量的计算,并且将这些数据移动到CPU需要比计算本身更多的能量。计算存储等方法试图缓解这些问题。

人们对数据的价值和石油的价值作了无数的比较。“数据和石油都是相当无用的,除非你对它们做些什么,”该公司营销总监Kartik Srinivasan说Xilinx的数据中心组。“生油不能放在你的车里。你需要有一些过程应用到它,使它有用。数据甚至更具挑战性,因为在分析完成后,数据可用的延迟是极其关键的。当一个股票经纪人得到一条信息说,“这是引擎推荐的交易”,如果它晚了五分钟,它就没用了。因此,如果数据分析没有在适当的延迟下完成,数据的价值就会降低。”

所有类型的数据共享和流媒体都在推动生成、交换和共享的数据量的增长。疫情只会加剧更高的需求数据中心设计软件公司的IP云市场经理斯科特·杜兰特(Scott Durrant)说,网络容量、网络速度、存储容量和性能Synopsys对此。“随着新冠疫情的到来,这一数字正呈指数级增长,预计我们工作方式、学习方式、互动方式、娱乐方式的变化将是永久性的。”

因此,为这些高速、低延迟应用程序创建设备的SoC设计人员开始考虑替代架构,例如计算存储。

Durrant说:“随着越来越多的控制系统上线,低延迟的重要性将越来越高。”“与此同时,数据中心的另一个重点是优化能源利用。现在有一个很大的动力去实现数据中心的净零碳足迹,这实际上是一个巨大的挑战,因为它们是今天的电力消耗大户。数据中心的每一个元素都将围绕着它发挥作用。在功率优化方面,数据中心正在转向传统的移动设备架构。多年来,移动设备一直试图通过降低功耗和关闭在特定时间不使用的设备来最大化电池寿命。今天,我们在数据中心看到了类似的实现,以最大限度地提高电力效率。此外,还引入了新的处理器架构,这些架构在历史上一直用于移动设备。例如,Arm处理器现在瞄准了数据中心基础设施。Arm和RISC-V处理器是足够开放的,你可以针对特定的工作负载优化它们。”


图1:计算存储对能量的影响。资料来源:Synopsys/第21届IEEE HPCC会议,2019年8月

这就是计算存储的用武之地。斯里尼瓦桑说:“在数据之上进行计算的想法自古以来就存在。”“但现在随着数字化转型,有了价格合理的硬件来进行分析,也有了软件框架来进行分析。这些组成部分正以一种良好的方式结合在一起。数据是数字化的。硬件是负担得起的。软件框架是可以应用的。”

然而,这比看起来要难得多。“将会有装满数据的磁盘,你可能只需要其中的一两个,但所有的数据都必须被搜索,”斯坦福大学的杰出发明家史蒂文·吴(Steven Woo)说Rambus。“传统的方法是将磁盘中的所有内容传输到CPU,然后CPU将搜索所有内容,并丢弃99.999%的内容。它所做的很多工作实际上都是浪费的。或者,可能有一个磁盘阵列,系统设置为并行传输所有数据,因此速度更快。但最终,仍然只有一个CPU在搜索数据,这是瓶颈。”

这就是计算存储真正的亮点,Woo说。“如果每个磁盘都有一点聪明会怎么样?”现在可以对所有磁盘说,‘并行搜索。我说开始,然后你们每个人都要浏览一下你们所有的信息。只寄回符合我要求的东西。“有趣的是,我不用浪费带宽和精力来传输我永远不会用到的数据。一切都是本地的,我只能看到符合我标准的东西。”

广泛的应用
计算存储开始在边缘领域获得吸引力,边缘是计算资源的一个有点模糊的层次结构,从终端设备到各种类型的服务器,包括内部部署和外部部署。在所有情况下,目标都是尽可能多地在接近源的地方进行计算,从而限制数据需要传输的距离。

“如今的情况是,数据被传输,即使它是在边缘生成的,无论是监控图像还是车牌读取器,”ibm的存储解决方案总监尼尔·韦德穆勒(Neil Werdmuller)说手臂。“通常,所有数据流都被发送到某个地方的中央服务器,然后进行处理。例如,它会从数据流中提取偶尔的车牌号,这看起来很疯狂。如果你能在边缘进行处理,将你产生的见解或价值发送到需要的地方,这就更有意义了。”


图2:计算存储与传统存储。来源:手臂

另一个例子可能是在5G电信环境中,在蜂窝塔实现计算存储。Werdmuller说:“如果一辆车经过那个特定的单元区域,他们就可以有高清地图,把需要的贴图存储在需要的地方,而不是每辆经过那个单元区域的车都必须从中心某处下载相同的东西。”“所有这些回程都很昂贵,需要消耗能量,并增加了延迟,因为当你以这种方式移动数据时,通常会涉及到延迟。”

在边缘处理这些数据也有安全和隐私方面的好处。

但并不是所有的数据都可以在边缘收集和处理,在云计算中也有利用计算存储的巨大机会。

Werdmuller说:“管理所有这些真的很有挑战性,而且工作负载的数量通常是爆炸性增长的。”“把所有这些都放在服务器上管理,然后把数据拉到那里是很复杂的。它增加了功率,增加了延迟,所以如果你可以有存储特定数据的存储,你就可以有特定的工作负载,你将使用这些数据。例如,如果你想对一系列面部识别的照片进行机器学习,如果你知道这些图像存储在这些驱动器上的位置,那么在实际数据上进行机器学习是很有意义的。你必须集中管理更少的工作负载,并能够分配工作负载。”

由于移动数据所需的精力和时间,以及需要快速处理的数据量不断增加,所有这些对公司来说都变得越来越有趣。“如果不花费太多精力和时间,这就不是问题,”Woo说。“一旦你有这种能力,只发送回真正重要的信息,也许你甚至可以在存储中做一些简单的计算。但是一旦你有能力将少量更有意义的数据发送回CPU,那么CPU就会尽可能地保留这些数据。它可以使用机器学习技术,保存数据并尽量不移动它。您所希望的是尽量减少数据在磁盘上的移动。然后,一旦你得到一些更有意义的东西,你就可以把它发送回处理器,这样就不会浪费带宽,因为你只发送有意义的东西。然后处理器会尽可能长时间地保留它,并尽量不移动它。所有这些都是为了最大限度地减少数据移动。”

SSD到CSD的进化
从设计的角度来看,从固态硬盘(SSD)到计算存储设备(CSD)是一个进化的过程。

“直到大约2019年,我们一直在解决用户试图在ssd中使用仿真的最大问题之一,即测量性能-特别是IOPS(每秒输入/输出)-以及带宽和延迟,”微软仿真部门解决方案产品经理Ben Whitehead说西门子EDA。“对于其他类型的验证来说,延迟是一个大问题,因为它们不是很准确。你可以得到一个功能上正确的解决方案,它会说,“哇,太棒了”,然后你会把它录下来,然后进入实验室,有时它的性能会差几个数量级。它表现得如此糟糕,令人尴尬。它确实起作用了,但我们无法真正准确地测量硅之前的性能。这就是做SSD的难度。但是SSD工作的一个有趣的副产品是SSD开始有多个处理器——实时处理器。我在设计中使用了8个相当大的微处理器,在一个数字系统中,当你的存储关闭时,它会非常快速地传递数据,然后它就会变得空闲。大多数时候,这些处理器处于空闲状态,当需要它们时,它们才是真正需要的。就像战斗机飞行员一样,四个小时的无聊之后是15秒的恐惧。 That’s what drives do. They sit around waiting to just blast data back and forth. With all that processing power around it, it made logical sense to do something more with it.”

CSD处理数据的移动。“L2缓存只是不断地被对主板上的CPU的数据请求所推平,”Whitehead说。“当处理器花费所有时间来回移动数据时,就会提出一个问题,‘我们在这里做什么’,并意识到很多处理可以在其他地方完成。这就是《CSD》真正吸引人的地方,我们可以在驱动器本身上使用一些处理能力。”

其他人也同意。“十年前,固态硬盘还是新事物,”英特尔营销副总裁库尔特·舒勒(Kurt Shuler)说Arteris IP。“当时真的没有企业级SSD那样的东西。在盘式硬盘上运行的微控制器很小。这就是当时的半导体。从那时起,发生了很多变化。很多初创公司都在做非常复杂的SSD控制器,最初的问题是NAND闪存在运行时消耗自己,所以你总是要检查单元。然后,一旦你发现他们是坏人,你必须把他们绑起来,告诉他们不要再在那里保存任何东西。如果你买一个1tb的SSD驱动器,它实际上有超过1tb的容量,因为它在运行时把自己累死了。对于SSD控制器来说,这是最初的挑战。但是现在,存储磁盘公司已经经历了大量的整合。 If you look at what’s going on computational storage, we have customers who are doing SSD storage and controllers for the data center that are focused on a particular application, such as video surveillance, so there is computation actually within those controllers that is dealing with that particular use case. That is completely new. Within that computation, you’ll see things like traditional algorithmic, if/then analysis. Then, some of it is trained AI engines. Any of the SSD, enterprise SSD controllers are heading in that direction.”

这正开始重塑竞争格局,尤其是在西部数据(Western Digital)等传统存储公司开始设计自己的硬件加速器之际。

理解计算存储
从技术角度来看,这一概念相对简单,华为IP集团产品营销部门总监马克•格林伯格(Marc Greenberg)表示节奏。“以软件中一个简单的计数器或累加函数为例,x = x + 1。如果x是我们会经常使用的东西,它可能会被存储在缓存中或CPU die上的便签中。但假设我们有很多这样的计数器,或者不经常使用其中一些。然后,其中一些可能存储在外部存储器中,我们说DRAM。当需要执行x = x + 1操作时,我们必须在内存中激活页面,从DRAM读取x,将xX放到处理器中,加1,然后将它写回DRAM。根据这个过程需要多长时间,我们可能需要在内存中预充页,然后在写准备就绪时再次激活它。所有这些都需要能量,包括在DRAM到CPU到DRAM之间移动数据,以及在DRAM中激活页面并使用电流。”

Greenberg说,如果内存设备中有一个简单的逻辑元素,就可以像这样发送一个事务,“将一个添加到内存地址x的内容中,并返回结果。”通过这样做,它将在接口上移动数据所需的能量减半,减少了内存中页面活动的时间,并减轻了CPU的负担。

从这个简单的例子中,它可以扩展到上百万个选项。它是否可以推广到任意x = x + y?如果溢出了怎么办?它也能做减法吗?那乘法呢?那其他基本的ALU函数呢,比如比较,移位,布尔函数?最终它会成为内存中的次要CPU,这并不一定是件坏事,但目前还不是通用的。至少在短期内,似乎内存中的特殊功能处理器可能是前进的道路,有些公司在内存中进行某些定向人工智能功能,例如,通过构建内置人工智能数学处理功能的定制内存设备。”

需要解决的问题
但为了实现这一功能,必须在内存中添加逻辑,该公司的验证负责人达科·托穆西洛维奇(Darko Tomusilovic)说Vtool。“你必须添加一些控制器作为内存块的一部分,内存逻辑的一部分。处理器和内存之间的分离是有区别的。现在,您将在内存本身中放入一段逻辑。当你验证内存控制器时,你要考虑到它不仅仅是一个愚蠢的内存控制器。它也可以做一些事情。这违反了核查的整个概念。在我们测试内存子系统之前,然后将内存子系统集成到整个芯片环境中。运行软件测试用例只是作为整个芯片的一部分,这或多或少是一种常见的方法。现在它变得更加交错了。 In that sense, we see that there is a huge demand for specific engineers who will only target memory controller verification, so now it almost becomes a separate profession. As a services company, we see a huge demand specifically for that.”

与此同时,这些方法在各个层面上都缺乏标准,该公司高效电子部门负责人安迪·海尼格指出弗劳恩霍夫IIS的自适应系统工程部。程序员希望在框架中编程,这意味着基于库的高级编程(例如用于AI编程的Tensorflow)。软件也是在许多不同的抽象层次上编程的——低级驱动程序编程,第一级库,基于前者的高级库,应用程序编程。在驱动程序级别封装内存中的计算是可能的,但我们假设这种方法的全部潜力不能通过这种方式实现。只有当您通过所有编程级别访问机制时,才有可能开发全部潜力,因为这样应用程序算法就可以直接使用加速数据计算。但是要让它通过所有编程级别也意味着所有编程级别上的标准都是必要的,以实现不同库之间的兼容性。要在框架级别上实现这样的编程,必须实现许多较低级别的编程。如果必须对每个体系结构进行新的处理,那么就会耗费时间和资源。因此,硬件、软件驱动等各个层面的标准都必须建立起来。”

许多CSD实现利用驱动器内部的应用程序处理器,而不是实时处理器。西门子EDA的Whitehead指出:“应用处理器与实时处理器有很多不同的要求和处理方式。“它们完全不同。为了解决这个问题,一些处理器供应商,比如Arm,专门为多核计算存储开发了处理器。它结合了应用处理器和实时处理器的元素,因此处理可以在任何一种模式下完成。”

Whitehead说,大多数在实时处理器、ssd和控制器方面有经验的工程师都习惯了这种工作方式。“使用Arm处理器,你可以在其上运行固件,执行写、读、垃圾收集等所有你想在SSD上执行的操作。但是现在您在DUT中添加了一个完整的Linux堆栈,这在设计和验证中有一些真正的分支,因为现在您的驱动器中有一个真正成熟的系统。它看起来像一台电脑,这意味着不同的东西。当您插入它时,从主机的角度来看它仍然必须看起来像SSD。它仍然会说,‘我是一个驱动器,我可以满足你所有的存储需求。’但如果系统意识到它也有一个Linux系统,你可以通过SSH(一种用于计算机之间安全通信的Linux网络协议)进入该系统,然后它看起来就像一个在该驱动器中运行的无头服务器。”

考虑到延迟和性能是最大的问题,这就提出了一套完全不同的验证标准。

“现在你已经在硬盘中添加了一个应用程序处理器,”他说。“你如何衡量它?如果它正在工作,而你需要重新启动到那些实时模式,会发生什么?现在你真的弄乱了你的延迟,你会得到非常扭曲的数字。你需要解释这一点。”

他并不是唯一指出这一点的人。Arm的Werdmuller说:“从根本上说,如果你选择Linux的理想,除了计算量之外,两者没有什么区别。”“例如,如果你看看Arm智能网卡,或者基于Arm的服务器或英特尔至强服务器,因为它们有很多工作负载,要管理很多东西,通常计算是非常密集的。对于某些工作负载,这可能是正确的方法。当然,在其他情况下,实际上进行分布式计算——每个驱动器只做一小部分,而不是将其全部转移到需要大量电力的强大计算中——在本地进行计算是有好处的。有一个功率限制,通常在PCIe插槽中最多25瓦,但其中20多瓦用于为设备中的NAND和RAM供电,所以你最多剩下5瓦用于计算中的其他所有东西。它看起来很低,但你仍然可以用这种水平的计算做很多事情。”

结论
随着越来越多的计算转移到内存中,计算体系结构的其他部分也在发生变化。

Xilinx的Srinivasan说:“我们过去对‘服务器’的定义是,里面有一个CPU,它负责所有发生的事情。“所有的应用程序处理,所有的数据都是由CPU完成的,其余的外围设备基本上只负责将数据输入到CPU,存储它,或者让临时内存访问数据,不管中间计算的原因是什么。”

他说,现在随着这个行业慢慢开始发展,大家开始分担责任了。
“从超级规模企业到企业,他们都接受了一个事实,即并非所有的工作负载都是平等的。您希望能够将CPU用于正确的工作,gpu用于正确的工作,fpga用于它们的能力。为此,这意味着要为正确的工作使用正确的工具,这不是一项容易的任务,因为没有典型的数据中心。因此,计算存储概念将应用于驱动器、处理器或阵列级别。”



3评论

凯文·卡梅隆 说:

内存计算可以追溯到20世纪70年代

https://en.wikipedia.org/wiki/Communicating_sequential_processes

Transputer是在20世纪80年代实现的。

阻止这种情况发生的是CPU和内存的分离,因为DRAM位于不同的硅工艺上。然而,现在我们有了骰子堆叠,这不是一个问题。

目前的计算存储更像是分布式计算,因为PCIe卡本质上就是计算机。

安Mutschler 说:

谢谢你的评论,凯文。好点。虽然显然不是一个新的想法,但它是另一种计算可以定制的方式,我认为这是有趣的地方!现在有很多方法来实现系统架构——对每种方法进行权衡需要架构师和设计人员拥有丰富的知识、洞察力和经验。

另一次 说:

嗨,安,
第一个图是哪篇HPCC论文的?
谢谢,
另一次

留下回复


(注:此名称将公开显示)

Baidu