雷锋网注:[来源:麻省理工CSAIL所有者:麻省理工CSAIL]
数据压缩技术之一是通过消除冗余来释放存储容量,提高计算速度,或者带来其他好处。
然而,在当前的计算机系统中,访问主存储器的成本非常高。因此,在内存中使用数据压缩技术有助于减少数据提取的频率和数量,提高设备的性能。
一般来说,现代设备以固定大小的块来管理和传输数据,传统的压缩技术必须在这些块上运行。但是,软件不使用固定大小的块来存储数据,而是使用对象。这种数据结构可以容纳各种类型的数据,其规模可以大也可以小。
因此,传统的数据压缩技术难以处理对象。
初次亮相
在本周ACM支持编程语言和操作系统架构国际会议上发表的一篇论文中,麻省理工学院的研究人员描述了第一种“跨存储层压缩对象”的技术。这项技术可以减少内存使用,同时提高性能和效率。
研究人员对改进后的Java虚拟机进行了实验,结果表明,与传统的压缩方法相比,这种新技术可以压缩两倍的数据,并将内存使用量减少一半。
CSAIL研究生蔡伯安是本文的第一作者。她说,“我们试图提出一种可以压缩对象的新的存储层次结构,因为大多数现代编程语言以对象的形式管理数据。”
合著者丹尼尔·桑切兹是计算机科学和电子工程教授,也是美国计算机科学与工程学会(CSAIL)的研究员,他补充道:“所有的计算机系统都将从这项新技术中受益,程序将运行得更快,因为它不再受内存带宽的限制。”
因为Java、Python、Go等现代编程语言以对象的形式管理数据,所以这项新技术对于程序员来说特别实用。在不久的将来,我们将看到设备具有更快的速度或者可以同时运行更多的应用程序。
有局限性
传统结构以块的形式将数据存储在Cache中,最近访问的块会在这里上升(上图黄色层)。这里虽然空小,但是访问速度快。旧块会掉,最终回到主存(上图蓝色层)。
虽然这种数据传输非常灵活,但成本并不低。
在数据传输过程中,如果目标数据不再在Cache中,Cache会访问主存,在较大范围内搜索数据的地址。如下图所示,Cache访问主存和返回的时间约为100~300个周期。耗时太长,有局限性。
批判继承旧文化,去其糟粕,取其精华,创造新文化。
桑切斯发现了传统模型的局限性,他想,“既然现代编程语言中数据管理的单位是对象,那我们为什么不为处理对象建立一个存储层次呢?”
因此,研究人员改进了传统的存储层次结构,直接处理对象。
1.Hotpad/pad
在去年10月发表的一篇论文中,研究人员详细介绍了一种叫做Hotpad的系统,它可以用来存储对象。因为这个系统各个层次的关系比较紧密,所以也可以叫pad。
整个结构基于一个芯片内存,效率高,不需要复杂的搜索,因为程序可以直接引用整个pad中所有对象的位置。新分配的或最近引用的对象,以及它们指向的对象,保持在最快的级别,以便快速访问。
当这一层填满后,系统将开始“筛选”。在筛选过程中,最近引用的对象将被保留,但较旧的对象将被降低到较慢的层。此外,系统将删除不再有用的对象,以便释放空。然后,更新每个对象的指针以指向新对象的位置。这样,程序访问对象的代价比通过缓存层搜索要低得多。
2.Zippad
研究人员还设计了一种叫做Zippad的技术,它使用Hotpad系统来压缩对象。当对象第一次以更快的级别启动时,它们会被解压缩,但在释放时会被压缩。另一方面,跨级别的所有对象都指向那些压缩的对象,这使得它们比传统技术下的对象更容易恢复到更快的级别并存储得更紧凑。
3.基本对象
与以前的技术相比,这种新技术还提供了更多的压缩机会,因为以前的技术仅限于在固定大小的块中寻找冗余。该算法首先选择几个有代表性的对象作为基本对象。然后,只要添加一个新对象,算法就会将基本对象和新对象进行比较,然后存储它们之间的不同数据。
卡耐基梅隆大学电子与计算机工程助理教授布兰登·露西娅(Brandon Lucia)非常欣赏这项新技术,因为它利用了编程语言的特性,可以更好地做压缩工作。他说:“这项工作有趣的地方在于,它利用对象的抽象,使内存压缩更有效,从而使系统更快、更高效,并具有新的计算机体系结构特征。”
雷锋网注:本文由麻省理工CSAIL编写,部分内容来源于网络,由雷锋综合而成。
1.《数据压缩技术 数据压缩算法:对于程序员来说,这项新技术特别实用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《数据压缩技术 数据压缩算法:对于程序员来说,这项新技术特别实用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1317529.html