麻省理工学院的一个工程师团队开发了一种面向对象的内存层次结构,以更有效地处理数据。 在文章中我们了解了它是如何安排的。
如您所知,现代 CPU 的性能增长并没有伴随着访问内存时延迟的相应减少。 各项指标的年际变化差异可达10倍(
性能损失就是所谓的减压延迟。 在某些情况下,准备数据解压缩最多可能需要 64 个处理器周期。
用于比较:浮点数的加法和乘法
该技术如何运作
该解决方案基于三种技术:Hotpads、Zippads 和 COCO 压缩算法。
热垫是软件驱动的暂存寄存器存储器层次结构(
本质上,该体系结构是一个缓存系统,但经过改进以处理对象。 物体所在的垫的高度取决于它的使用频率。 如果其中一个级别“溢出”,系统就会触发类似于 Java 或 Go 中的“垃圾收集器”的机制。 它会分析哪些对象的使用频率低于其他对象,并自动在级别之间移动它们。
Zippads 在 Hotpad 的基础上工作 - 归档和解压缩进入或离开层次结构最后两层(L3 pad 和主内存)的数据。 在第一和第二焊盘中,数据保持不变。
Zippads 将对象压缩最多 128 字节。 较大的对象被分成多个部分,然后放置在不同的内存区域中。 正如开发人员所写,这种方法增加了有效使用内存的系数。
为了压缩对象,使用了 COCO(跨对象压缩)算法,我们稍后将讨论该算法,尽管系统能够使用
据 MIT 工程师称,他们的面向对象内存层次结构比传统方法快 17%。 它的结构更接近现代应用程序的架构,因此新方法具有潜力。
预计,首先,从事大数据和机器学习算法工作的公司可以开始使用该技术。 另一个潜在的方向是云平台。 IaaS 提供商将能够更有效地利用虚拟化、存储系统和计算资源。
我们的额外资源和来源:
来源: habr.com