1

次のタスクのために、高速/ロスレス/固定間隔の圧縮アルゴリズムを探しています。

私は組み込みシステムを持っています。メモリ/フラッシュ リソースが不足しています。

そのためのコア ダンプを生成し、結果をフラッシュに保存したり、低速のシリアル ライン経由で吸い出したりしたいと考えています。

基本的に必要なのは、ヒープ、スタック、.data、および .bss セグメントと、いくつかのメモリ マップ レジスタだけです。

デバイスは Leon Sparc Softcore です。

さて、このデータは、それを示すいくつかの奇妙な点として

  1. 通常の LZW / Zlib / ... 圧縮ライブラリではうまくいきません。(自然言語コーパスではありません)。
  2. Sparc はアラインメントに執着しています。すなわち。.bss および .data セグメント内のすべての項目が、(事実上) 8、16、32、64 ビットのアドレス境界に対応して配置された 8、16、32、または 64 ビットの int であることを保証できます。
  3. 圧縮コード用に小さな固定スペースを予約する必要があります。
  4. これは 32 ビット マシンで、bss とデータ セグメントのサイズは 4 GB よりもはるかに小さいです。
  5. システム内のほとんどの 32 ビット値はシンボルのアドレスです。すなわち。4 ギガの可能な値の非常に小さなサブセット。

私の現在の計画は... .bss / .data セグメント全体をスキャンし、16 ビット値の完全なヒストグラムを計算します。

これから、完全なハフマン エンコーディングを取得できます。しかし、32 ビット / 64 ビット値の内部構造を熟考することで、もっとうまくやれると思います。(例: ビットの最上位半分の変動性は、最下位ビットの変動性よりもはるかに小さい。)

そして、ポインタ/提案/既存の仕事?

4

0 に答える 0