3、动态分配数据结构的数据压缩转换

动态分配数据结构的数据压缩转换

一、引言

随着内存有限的计算设备不断普及,减少内存需求的优化变得越来越重要。为了压缩指针密集型程序中动态分配的数据结构的大小,我们引入了一类转换方法。动态数据结构节点的字段通常包含指针和非指针数据,为此我们开发了公共前缀和窄数据转换,分别将32位地址指针和32位整数字段压缩为15位实体,压缩后的一对字段可以打包到一个32位字中。

压缩带来了诸多好处,显著减少了数据结构的内存占用,节省了堆分配的存储需求,这对于内存密集型应用尤为重要。同时,内存占用的减少还能降低数据缓存未命中的概率,从而显著缩短执行时间。

我们的转换方法有一个重要特点,即适用于部分可压缩的数据结构。它会对适用转换的数据结构部分进行压缩,并提供处理不可压缩数据的机制。最初,我们假设压缩数据结构是完全可压缩的并分配存储,但在运行时遇到不可压缩数据时,会分配额外的存储来处理。实验表明,几乎所有数据结构都是高度可压缩的,但没有一个是完全可压缩的,因此这一特点非常重要。

为了高效访问压缩数据,我们为RISC风格的指令集架构(ISA)设计了数据压缩扩展(DCX),包含六条简单指令。这些指令主要执行两种操作:一是在更新压缩字段时检查新值是否可压缩;二是在计算中使用压缩值时,执行提取和扩展操作以获得原始的32位表示。

我们实现并评估了这些技术。将DCX指令集成到了simplescalar模拟器使用的类似MIPS的指令集中,将压缩转换集成到了gcc编译器中。通过对Olden测试套件中的六个基准测试进行实验,我们发现堆分配存储平均节省了25%,执行时间和功耗平均降低了30%。执行时间的减少主要归因于L1数据缓存和L2统一缓存的未命中率降低以及DCX指令的使用。 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值