设备技术中的突破被用于 “以计算为中心” 和更为平衡的 “以数据为中心” 的计算基础架构之间的转换。 作者调查了存储级内存,演示了如何填充 RAM 和旋转磁盘存储之间长期存在的性能差距,还详细介绍了 I/O 总线协处理器(处理相近的数据)的使用,说明了如何利用 InfiniBand 构建低成本高性能互连网络,并讨论了非结构化数据的可扩展存储。
计算系统工程历来都是由扩展处理器和动态 RAM (DRAM) 接口控制,以便进行内存工作,在数据驱动和计算算法之间留有一个巨大的间隙。人们对以数据为中心的计算兴趣正在快速增长,同新颖系统设计软件和硬件设备仪器一起支持大量数据集的数据变换。
专注于软件的数据毫无疑问是人们目前比较关注的应用程序,比如视频分析、传感器网络、社交网络、计算机视觉和增强现实、智能交通、机器对机器系统的大数据倡议,比如 IBM 的 智慧星球 和 智慧城市。
目前,引起人们关注的是关于收集、处理、转换和挖掘大数据集:
在非易失性存储器(存储级内存,SCM)中,数据焦点逐渐趋向于新的设备级突破,这使得大数据更需要进行处理。 与此同时,输入/输出协处理器使得处理更倾向于数据。 最后,InfiniBand 之类的低延迟、高带宽的现成互连支持研究人员快速构建 3D 圆环和胖树形集群,可用于限制最奇异和昂贵的自定义高性能计算 (HPC) 设计。
目前为止,系统软件,甚至系统设计仍然受到过时瓶颈和思想的影响。例如,考虑线程和多程序设计。整个理念源于慢磁盘驱动器访问;在等待数据时,程序除了运行另一个程序之外还能进行其他操作吗?当然可以,我们有独立磁盘冗余阵列 (RAID) 扩展和 NAND 闪存的固态磁盘 (SSD),但正如 IBM Almaden 研究表明的那样,存取时间间隙的时间尺度差异在人类语言中是巨大的。
对于每个设备来说,CPU、RAM 和存储之间的存取时间间隙能够以典型性能形式进行度量,但或许在采用人类语言时,间隙可能更容易理解(正如 IBM Almaden 为了便于说明而进行的研究所指出的那样)。
如果典型 CPU 操作类似于人类在数秒内所做的,那么 100 多倍的 RAM 存取延迟可能需要花费几分钟来访问信息。然而,经过类似比较,100 多倍延迟的磁盘存取与 RAM 相比大约是数月(100 天)。(参见图 1。)
图 1. 数据存取间隙
很多经验丰富的计算机工程师并没有认真思考过每秒进行 100 至 200 次随机 I/O 操作 (IOPS):这是磁盘驱动的机械边界。(当然,顺序存取每秒可高达数百兆字节,但是随机存取仍然和 50 多年前差不多,存在 15K RPM 搜寻和旋转访问延迟。)
最后,正如 Almaden 所指出的,磁带是极其缓慢的,就像冰川移动一样缓慢。既然如此,为什么我们还感到困惑呢?当然是因为容量。但是我们应该如何处理数据或者使数据处理更为高效?
我们再来看看图 1。用于移动设备的 NAND 快闪记忆体方面的改进以及更多近期 SSD 有助于缩小间隙;然而,人们普遍相信 NAND 闪存设备技术很快将到达极限,正如许多系统研究人员所指出的那样。使用的晶体管浮栅技术的应用已达到扩展极限,进一步扩展将会导致可靠性降低,所以,尽管这是一个权宜之计,以便使用进行以数据为中心的计算,但这可能并不是解决方案。
相反,几个新型非易失性 RAM (NVRAM) 设备技术可能是解决方案,这些设备技术包括:
相变 RAM (PCRAM):该内存使用一个加热元件将称为硫属化合物的材料变成一个结晶的或非结晶的玻璃态,从而存储两种可编程和读取的状态,即使不供电状态也能保持。对于 M 类同步非易失性存储器 (NVM),PCRAM 似乎兑现了近期的大部分承诺。 电阻式 RAM (RRAM):大多数 RRAM 通常被描述成一个电路,这和电容器、感应器或电阻器不一样,RRAM 提供独一无二的电压和电流关系(不像其他存储电荷或电磁波的知名设备),或者提供电流的线性抗阻。在过去数十年中,使用带有称之为忆阻器属性的材料进行测试,由于它们的非线性属性以及缺乏应用程序,故工程师通常尽量避免使用它们。IEEE 会员 Leon Chua 在 “Memristor: The Missing Circuit Element” 一文中对其进行了介绍。忆阻器行为可概括为:一个方向上的电流导致抗阻性增加,而另一个方向上的电阻降低。同样地,可以存储一个非易失性状态,并可进行编程以及状态读取。 自旋转移矩 RAM(Spin transfer torque RAM,STT-RAM):通过磁层的电流可产生一个自旋极化电流,当指向一个磁层时,该电流可通过角动量改变其方向。该行为可用于激发震动以及翻转纳米级磁设备的的方向。主要缺点是翻转方向需要较高的电流。
从系统角度来看,随着这些设备的发展,在何处使用这些设备以及每个设备如何更好地填补存取间隙取决于设备的以下方面:
成本 可扩展性(设备集成
大小必须小于晶体管才能战胜缓存;小于 20 纳米) 程序和读取延迟 设备可靠性 或许最重要的是持久性(在变得不可靠之前的编程和擦除频率)。
基于这些设备性能考虑因素,IBM 将 SCM 归为两大类:
S 类:通过 I/O 控制器异步存取。线程或多编程被用于隐藏设备的 I/O 延迟。 M 类:通过一个内存控制器同步存取。可以认为这是一个 RAM 存取等待状态,该状态下 CPU 核心停止运行。
而且,NAND SSD 被认为是快速存储、通过面向块的存储控制器进行存取(更高的 I/O 率,但类似旋转磁盘驱动带宽)。
对于数据处理来说,这看起来似乎像是取消了异步 I/O(当然,除了归档存取或者集群扩展之外),但对于以数据为中心的处理来说,这可能是万能良药。从某种意义上说的确如此,但是系统设计师和软件开发人员必须改变这一习惯。在系统的每个节点上 I/O 延迟隐藏需求很大程度上都会消失,但无法完全消失。InfiniBand 中的集群构建将使用 Message Passing Interface 或 MapReduce 模式来处理节点到节点的数据传输延迟,您可以享受这个设想 SCM 节点的类似性能,但在启动的时候或者在节点数据超过节点工作 RAM 大小的时候除外。
因此,对于扩展而言,集群互连和集群中节点之间的 I/O 延迟隐藏仍然是必需的。
通过协处理器使处理更倾向于数据
快速存取大数据似乎很完美,而且看起来很有前景,但是有些应用程序总会从另一个备用方案(使处理更接近数据接口)获益。有很多这样的示例,比如图形(图形处理单元,GPU)、网络处理器、协议卸载引擎(比如 TCP/IP Offload Engine、芯片上的 RAID、加密协处理器,以及最近出现的计算机视觉协同处理器理念。我的研究涉及计算机视觉和图形处理器,无论是在具有一定规模的集群还是在嵌入式系统中,都存在计算机视觉和图形处理器。我将目前从事的工作称为计算机视觉处理单元,随着 Khronos 对 OpenVX 2012 通告的发布,与几个协处理器相比,这将获得更多的大众的追求。
在嵌入式世界中,这样一种方法可能被描述成一个智能传感器或智能相机,原始数据的预处理方法是由传感器接口、一个嵌入式逻辑设备或者微处理器,甚至是芯片上的多核系统 (SoC) 提供的。
在可扩展世界,这通常涉及到协处理器总线或渠道适配器(比如 PCI Express、PCIe 和 Ethernet 或 InfiniBand)的使用;它在数据源(网络端)和节点 I/O 控制器(主机端)之间提供数据处理。
无论是处理应该已经完成还是处理应该更为高效,当在 I/O 路径或 CPU 核心上进行处理时,它们都是热门讨论主题,但是根据现有理论(GPU 和网络处理器),这很明显非常有用,与处理器相比,采用基于协处理器技术的用户更为普遍。因此,我们将快速浏览其中的几个方法:
适用于单个程序多个数据的向量处理 目前由 GPU、多用途 GPU (GP-GPU) 和应用程序处理器单元 (APU) 提供。理念是数据可以按照自己的方式转换到某个输出设备(比如,显示器)中,或者发送到一个 GP-GPU/APU,并在主机到设备的往返过程中进行转换。“通用” 意味着更为复杂的功能,比如,与单精度运算相比,双精度运算仅适用于特定的图形处理。 多个核心 传统多核心处理器卡可供各个供应商使用。这里涉及的原理是:通过使用简单但数量
众多的 I/O 总线核心降低成本和功率消耗,对卡片使用双程卸载进行处理拥有更强大的功能,但是更耗电,而且需要昂贵的、全面的多核主机。通常,多核协处理器可能比主机需要更多的核心,通常会包括千兆或者 10G Ethernet,或者其他类型的网络接口。 I/O 总线现场可编程门阵列 (FPGA) 在开发早期阶段,FPGA 卡通常用于原型化一个新处理器,也可用作一个小容量协处理器解决方案。 嵌入式 SoC 一个多核解决方案,在 I/O 设备中,可使用该解决方案来创建诸如立体测距或飞行时间相机之类的智能设备。 界面 FPGA/可配置的编程逻辑设备 数字逻辑状态机可提供缓冲和持续的 I/O 数据转换,比如数字视频编码。