压缩在面向对象的内存架构中如何工作

麻省理工学院的一个工程师团队开发了一种面向对象的内存层次结构,以更有效地处理数据。 在文章中我们了解了它是如何安排的。

压缩在面向对象的内存架构中如何工作
/ 摄影 /PD

如您所知,现代 CPU 的性能增长并没有伴随着访问内存时延迟的相应减少。 各项指标的年际变化差异可达10倍(PDF,第 3 页)。 结果,出现了瓶颈,无法充分利用可用资源并减慢数据处理速度。

性能损失就是所谓的减压延迟。 在某些情况下,准备数据解压缩最多可能需要 64 个处理器周期。

用于比较:浮点数的加法和乘法 不超过十个周期。 问题在于内存使用固定大小的数据块,而应用程序使用可以包含不同类型数据且大小互不相同的对象。 为了解决这个问题,麻省理工学院的工程师开发了一种面向对象的内存层次结构,可以优化数据处理。

该技术如何运作

该解决方案基于三种技术:Hotpads、Zippads 和 COCO 压缩算法。

热垫是软件驱动的暂存寄存器存储器层次结构(便笺)。 这些寄存器称为焊盘(pad),共有三个 - 从 L1 到 L3。 它们存储不同大小的对象、元数据和指针数组。

本质上,该体系结构是一个缓存系统,但经过改进以处理对象。 物体所在的垫的高度取决于它的使用频率。 如果其中一个级别“溢出”,系统就会触发类似于 Java 或 Go 中的“垃圾收集器”的机制。 它会分析哪些对象的使用频率低于其他对象,并自动在级别之间移动它们。

Zippads 在 Hotpad 的基础上工作 - 归档和解压缩进入或离开层次结构最后两层(L3 pad 和主内存)的数据。 在第一和第二焊盘中,数据保持不变。

压缩在面向对象的内存架构中如何工作

Zippads 将对象压缩最多 128 字节。 较大的对象被分成多个部分,然后放置在不同的内存区域中。 正如开发人员所写,这种方法增加了有效使用内存的系数。

为了压缩对象,使用了 COCO(跨对象压缩)算法,我们稍后将讨论该算法,尽管系统能够使用 基础-增量-立即数 или FPC排线。 COCO 算法是差分压缩的一种变体(差分压缩)。 它将对象与“基础”进行比较并删除重复的位 - 参见下图:

压缩在面向对象的内存架构中如何工作

据 MIT 工程师称,他们的面向对象内存层次结构比传统方法快 17%。 它的结构更接近现代应用程序的架构,因此新方法具有潜力。

预计,首先,从事大数据和机器学习算法工作的公司可以开始使用该技术。 另一个潜在的方向是云平台。 IaaS 提供商将能够更有效地利用虚拟化、存储系统和计算资源。

我们的额外资源和来源:

压缩在面向对象的内存架构中如何工作 “我们如何构建 IaaS”:有关 1cloud 工作的材料

压缩在面向对象的内存架构中如何工作 云架构1cloud的演进
压缩在面向对象的内存架构中如何工作 1cloud中的对象存储服务

压缩在面向对象的内存架构中如何工作 HTTPS 的潜在攻击以及如何防御
压缩在面向对象的内存架构中如何工作 持续交付和持续集成方法之间有何异同
压缩在面向对象的内存架构中如何工作 如何保护互联网上的服务器:1cloud体验

来源: habr.com

添加评论