在实际的大系统中,这一概念可以扩展到 DRAM 和闪存之外,包括大容量磁盘,甚至是磁带。在每一层面上,存储介质的角色略有不同,控制器所需要的功能完全不同。更有趣的是,每一级都有不同的互联选择。
互联结构可能是研究开始使用这些融合系统最好的地方。传统的服务器除了片内高速缓存会有三级存储:DRAM、本地磁盘以及与网络连接的存储设备。这些与 CPU 的连接都采用了不同的物理方式,具有不同的控制和数据传送协议。
服务器的 L2 或者 L3 高速缓存控制器通过专用端口连接 DRAM,连接专用 DRAM 控制器,进一步直接连接至 DRAM 模组。出现高速缓存错过或者泛洪时,控制器产生 DRAM 引脚信号,以读取或者写入控制器行中。
直接连接的磁盘工作方式完全不同。磁盘控制器通过专用 SATA 端口,或者 PCI Express® (PCIe®),连接至 CPU。运行在 CPU 内核中的驱动软件将操作系统的请求转译成文件名称和记录号,然后,在控制器的帮助下,访问磁盘的扇区。然后,驱动程序命令控制器在磁盘和 DRAM 之间传送扇区。同样的过程应用到与网络连接的存储设备上,但是,磁盘和控制器之间的通信必须通过另一层 — 以太网驱动,把数据包交付给 PCIe 驱动,传送到网络适配器,最终通过以太网到达控制器。
融合新思路
SSD 和存储融合将这种异构协议推向了更简单的新发展方向。首先,直接连接 SSD 会替代 CPU 电路板上的 SATA。Diablo 的闪存系统直接连接至服务器卡的 DIMM 插槽,模仿部分 DRAM 地址空间。在其他实现中,PCIe 电路部分通常连接至小型 M.2 卡,承载了 SSD,替代了与磁盘控制器的 SATA 连接。NVMe 等闪存新协议替代了老的磁盘协议。据 Altera 存储系统专家 Robert Pierce,这些技术使得 16-32 TB 的闪存直接连接 CPU 群成为可能。同时,网络连接存储开始过渡到带宽更大的连接,例如,Infiniband 固有的光传送或者 PCIe。
这些变化表明了方法的集成度更高了。目的是让所有级别的存储,从 DRAM 到冷存储,成为 CPU 高速缓存总线上的一个大容量虚拟存储器。
这一概念即将实现的是 IBM 的一致性加速器处理器接口 (CAPI) 连接的闪存。这一设计把一个闪存控制器放到 CAPI 总线上 — 实际上,是 Power8 CPU 高速缓存互联的片外扩展,支持处理器的存储器一致性协议。这种连接支持闪存子系统 — 会有自己的 SRAM 和 DRAM 高速缓存,看起来就是 CPU 共享存储器的一部分。
这一级之上是数据管理任务层。如果 DRAM 和闪存层是可预测高速缓存,控制器会进行预测:在合适的时间把数据装入合适的层中。这种需求同样适用于小系统和大系统。但是数据中心能够增加另一维度 — 不同服务器卡上存储控制器的直接连接。Pierce 说,有足够的连接后,控制器能够形成 2D 或者 3D 曲面,实际上合并了机架中所有 CPU 的全部存储资源。软件也会管理哪些数据应放在延时和可靠性最佳的地方。
对此,嵌入式系统设计人员和编程人员必须要考虑一系列可能发生的步骤。首先,准备好从 SATA 改变到 CPU 电路板上基于 PCIe 的存储连接。其次,开始思考存储不是一类由操作系统通过驱动调用所管理的不同的器件,而是一种虚拟 DRAM 平面,由应用程序直接管理。第三,找到应用程序中能够利用存储中处理资源的线程 — 可能具有用户定义的加速器。当转到数据中心软件定义存储时,这些步骤可能会给嵌入式设计人员带来意外惊喜。