您的位置: 首页 >资讯 >

一种用于更快的计算机程序的新型数据压缩技术

2019-05-31 15:42:32 编辑: 来源:
导读 麻省理工学院研究人员开发的一种新技术重新考虑硬件数据压缩,以释放计算机和移动设备使用的更多内存,从而使它们能够更快地运行并同时执行

麻省理工学院研究人员开发的一种新技术重新考虑硬件数据压缩,以释放计算机和移动设备使用的更多内存,从而使它们能够更快地运行并同时执行更多任务。

数据压缩利用冗余数据来释放存储容量,提高计算速度并提供其他额外优惠。在当前的计算机系统中,与实际计算相比,访问主存储器非常昂贵。因此,在内存中使用数据压缩有助于提高性能,因为它可以减少需要从主内存中获取的数据程序的频率和数量。

现代计算机中的存储器以固定大小的块管理和传输数据,传统的压缩技术必须在这些块上运行。但是,软件并不自然地将其数据存储在固定大小的块中。相反,它使用“对象”,包含各种类型数据并具有可变大小的数据结构。因此,传统的硬件压缩技术很难处理对象。

在本周ACM国际编程语言和操作系统架构支持会议上发表的论文中,麻省理工学院的研究人员描述了第一种在内存层次结构中压缩对象的方法。这可以减少内存使用,同时提高性能和效率。

当使用任何现代编程语言(如Java,Python和Go)编程时,程序员可以从这种技术中受益,这些编程语言可以存储和管理对象中的数据,而无需更改代码。在他们的最后,消费者会看到计算机可以运行得更快,或者可以以相同的速度运行更多的应用程序。由于每个应用程序消耗的内存较少,因此运行速度更快,因此设备可以在其分配的内存中支持更多应用程序。

在使用经过修改的Java虚拟机的实验中,该技术压缩了两倍的数据,并将内存使用量减少了一半,超过了传统的基于缓存的方法。

“动机试图提出一种新的内存层次结构,它可以进行基于对象的压缩,而不是缓存行压缩,因为这是大多数现代编程语言管理数据的方式,”第一作者Po-An Tsai说,研究生在计算机科学和人工智能实验室(CSAIL)。

“所有计算机系统都将受益于此,”共同作者,计算机科学和电气工程教授,CSAIL研究员Daniel Sanchez补充道。“程序变得更快,因为它们不再受到内存带宽的限制。”

研究人员在他们之前的工作基础上重新构建了内存架构,以直接操作对象。传统架构将数据存储在逐渐变大和变慢的存储器层次结构中,称为“缓存”。最近访问的块上升到更小,更快的缓存,而较旧的块被移动到较慢和较大的缓存,最终返回到主存储器中。虽然这个组织很灵活,但成本很高:要访问内存,每个缓存需要在其内容中搜索地址。

“因为现代编程语言中自然的数据管理单元是对象,为什么不只是创建一个处理对象的内存层次结构?” 桑切斯说。

在去年10月发表的一篇论文中,研究人员详细介绍了一个名为Hotpads的系统,该系统可以存储整个对象,紧密地分为层级或“ 垫”。这些级别完全依赖于高效,片上,直接寻址的存储器 - 无需复杂的搜索。

然后程序直接引用焊盘层次结构中所有对象的位置。新分配和最近引用的对象及其指向的对象保持在更快的级别。当更快的级别填充时,它会运行“驱逐”进程,该进程保留最近引用的对象,但将较旧的对象踢到较慢的级别并回收不再有用的对象,以释放空间。然后在每个对象中更新指针以指向所有移动对象的新位置。通过这种方式,程序可以比搜索缓存级别更便宜地访问对象。

对于他们的新工作,研究人员设计了一种名为“Zippads”的技术,该技术利用Hotpads架构来压缩物体。当对象首先以更快的级别启动时,它们将被解压缩。但当他们被驱逐到较慢的水平时,他们都被压缩了。跨越所有对象的指针然后指向那些压缩对象,这使得它们易于回忆到更快的级别并且能够比现有技术更紧凑地存储。

然后,压缩算法有效地利用对象的冗余。该技术揭示了比先前技术更多的压缩机会,这些技术仅限于在每个固定大小的块内找到冗余。该算法首先选择一些代表性对象作为“基础”对象。然后,在新对象中,它仅存储这些对象与代表性基础对象之间的不同数据。

卡内基梅隆大学电子与计算机工程助理教授Brandon Lucia称赞利用面向对象编程语言的特性来更好地压缩内存。“面向对象编程的抽象被添加到系统中以使编程更简单,但通常会在系统的性能或效率方面带来成本,”他说。“这项工作的有趣之处在于它使用现有的对象抽象作为一种使内存压缩更有效的方法,从而使系统更快,更高效,具有新颖的计算机体系结构特性。”


免责声明:本文由用户上传,如有侵权请联系删除!

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。