LM-LZS-E, FPGA ve SoC tasarımları için kayıpsız bir sıkıştırma bloğudur.
Motor, veriyi donanımda LZ4 ya da Snappy formatına sıkıştırır ve standartlara uygun çerçevelemeyi doğrudan bloktan üretir: checksum'larıyla bir LZ4 frame'i, bir Snappy ham stream'i ya da chunk başına maskelenmiş CRC-32C ile Snappy framing formatı. Arama penceresi, formatların izin verdiği aralık boyunca yapılandırılabilir; sıkışmayan bir blok büyütülmek yerine sıkıştırılmadan yazılır.
Blok, üreticiden bağımsız SystemVerilog olarak teslim edilir ve AMD, Altera ve Efinix cihazlarında aynı kaynaktan derlenir. AMBA AXI arayüzleri ve bir register haritası içerir; hedef platforma hızlı entegrasyon için ANSI C sürücüleri sağlanır.
Ölçülmüş FPGA sonuçları
Ürün top'ı, bağlam dışı (out of context) ve hedef saatte kısıtlanmış olarak. AMD ve Efinix LUT, Altera ALM raporlar; ikisi hiçbir zaman birleştirilmez.
| Cihaz | Konfigürasyon | Mantık | FF | Bellek | DSP | Fmax |
|---|---|---|---|---|---|---|
| Altera Agilex 3A3CW135BM16AE6S · quartus-pro 26.1.1 | HIST_B=128, LZ4_EN=1, SNAPPY_EN=1, STORED_EN=1 | 1.327 ALM | 1.534 | 392 Kb M20K | 2 | 208,5 MHzhedef 205 |
| AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1 | HIST_B=128, LZ4_EN=1, SNAPPY_EN=1, STORED_EN=1 | 1.829 LUT | 1.088 | 13 BRAM | 3 | 311,4 MHzhedef 300 |
| AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1 | HIST_B=128, LZ4_EN=1, SNAPPY_EN=1, SNAPPY_FRAMING_EN=1, STORED_EN=1 | 2.059 LUT | 1.221 | 13 BRAM | 3 | 316,7 MHzhedef 300 |
| Efinix Titanium Ti375Ti375N1156 · efinity 2026.1 | HIST_B=128, LZ4_EN=1, SNAPPY_EN=1, STORED_EN=1 | 9.840 LUT | 6.727 | 49 RAM | 3 | 216,1 MHzhedef 205 |
Özellikler
Formatlar
- LZ4 frame formatının tamamı: magic, descriptor, blok başlıkları, EndMark
- Snappy ham stream formatı
- Snappy framing formatı: stream tanımlayıcısı, blok başına bir chunk, maskelenmiş CRC-32C
- Format çalışma zamanında seçilir
Sıkıştırma
- 128 bayttan 32 kB'a yapılandırılabilir arama penceresi
- Yapılandırılabilir maksimum blok boyutu
- Sıkıştırılmamış blok yedeği: sıkışmayan bir blok sıkıştırılmadan yazılır; böylece çıkış girişi çerçeveleme payından fazla aşmaz
- LZ4 frame'i için xxHash-32 checksum'ları: başlık, blok başına ve içerik
Güvenilirlik
- Arama belleğinde isteğe bağlı SECDED hata düzeltme
- Düzeltilemeyen bir hata, bozuk çıkış üretmek yerine stream'i sonlandırır
Entegrasyon
- AMBA AXI4-Lite kontrol, AXI4-Stream giriş ve çıkış
- Birbirinden bağımsız giriş ve çıkış genişlikleri
- İki teslim top'ı: eksiksiz AXI ürünü ya da kendi yapınız için yalın sıkıştırıcı
- ANSI C sürücüsü, UVM RAL, IP-XACT, SystemRDL register tanımı
Uygulamalar
- Depolama ve dosya sistemi sıkıştırmasını donanıma aktarma
- Ağ ve RPC payload sıkıştırması
- Log ve telemetri verisini kaynağında azaltma
- Veritabanı sayfa ve sütun sıkıştırması
- Firmware ve konfigürasyon imajı paketleme
Blok diyagramı
Arayüzler
| Arayüz | Tür | Genişlik | Taşıdığı |
|---|---|---|---|
s_axil | AXI4-Lite slave | 32 bit | yetenekler, kontrol, komut, durum, hata çifti, sayaçlar, stream_len |
s_axis | AXI4-Stream sink | IN_W, tkeep, tlast | sıkıştırılmamış stream |
m_axis | AXI4-Stream source | OUT_W, tkeep, tlast | sıkıştırılmış stream |
irq | seviye | 1 bit | tamamlanma ve hata olayları |
Snappy, sıkıştırılmamış uzunluğu ilk bayttan önce ister. Bu formatın girişi,
uzunluğu taşıyan ve sıkıştırılmış verilerden önce yazılan bir varint'tir; bu yüzden
stream_len stream başlamadan önce yazılır. LZ4'ün buna ihtiyacı yoktur; frame'i
boyutları sonradan taşır.
Bant genişliği
Bu blokta tek bir blok motoru vardır ve ölçülmüş kararlı durum hızı bu sayfadaki ölçülmüş sonuçlarla birlikte yayımlanır. Mimarinin tavanı saat başına bir giriş baytının altındadır ve bunun nedeni ayar değil, yapıdır: bir tarama konumu ve doğrulanmış bir bayt ayrı ayrı birer saate mal olur ve bunlar farklı saatlerdir; taranıp sonra eşleşmeyle uzatılan bir baytın bedeli iki kez ödenir.
Bütçesi daha fazla bant genişliği gerektiren bir entegratör birden fazla motor örnekler; üstlerine bir giriş zamanlayıcı ve sıralı çıkış birleştirme koyar. Değerin arkasındaki ölçülmüş saat dağılımı (uzatmada, taramada, sequence devrinde ve bank reddinde geçen çevrimlerin oranı) değerle birlikte yayımlanır; böylece tavana güvenmek yerine onu denetleyebilirsiniz.
cnt_in, cnt_out ve cnt_cycles, host'un kendi trafiği üzerinde ulaşılan hızı
ölçmesini sağlar.
Sıkıştırma oranı
Oran bir register değildir. Oran, sürücünün önemli olan pencere üzerinde
hesapladığı cnt_in bölü cnt_out değeridir. Donanımın raporladığı bir oran, donanımın
seçtiği bir anda yuvarlanmış bir sayıdır.
Referans yazılım kodlayıcılarına karşı varsayılan ayarlarda, adı verilen derlemler üzerinde ölçülen oranlar; derlem, pencere ve blok boyutu belirtilerek ölçülmüş sonuçlarla birlikte yayımlanır.
Konfigürasyon
| Parametre | Tür | Etkisi |
|---|---|---|
HIST_B | elaboration | bayt cinsinden arama penceresi, 128 ile 32768 arası; alanı en çok etkileyen parametre |
MAX_BLOCK | elaboration | maksimum blok boyutu |
IN_W, OUT_W | elaboration | birbirinden bağımsız stream genişlikleri |
LZ4_EN, SNAPPY_EN, STORED_EN | elaboration | formatlar ve sıkıştırılmamış blok yolu |
SNAPPY_FRAMING_EN | elaboration | Snappy framing katmanı |
CHECKSUM_EN, ECC_EN | elaboration | xxHash-32 checksum'ları, arama belleği SECDED |
| format seçimi | çalışma zamanı | LZ4 ya da Snappy |
Kaynaklar ve performans
Her hedef cihaz için kaynak kullanımı ve maksimum saat frekansı bağlam dışında (out of context) ölçülür ve bu sayfadaki ölçülmüş sonuçlarda, daha büyük bir pencerenin alan maliyeti görülebilsin diye pencere kademeleri boyunca hedef bazında yayımlanır. AMD ve Efinix satırları LUT, Altera satırları ALM raporlar; ikisi hiçbir zaman birleştirilmez.
Teslimat içeriği
| Öğe | İçerik |
|---|---|
| RTL | parametrik, üreticiden bağımsız SystemVerilog |
| Model | bit doğruluğunda C++ modeli; aynı zamanda kodlamanın spesifikasyonu |
| Register'lar | SystemRDL kaynağı ve üretilmiş altı dışa aktarım |
| Doğrulama | UVM RAL, formal property wrapper'ları, derlem ve vektör sürücüleri |
| Yazılım | üretilmiş başlık dosyası ve JSON ile ANSI C referans sürücüsü |
| Paketleme | IP-XACT, IEEE 1685-2022 |
| Gerçekleme | her FPGA üreticisi için çalıştırılabilir akış script'i, dosya listesi, SDC |
| Dokümantasyon | entegrasyon kılavuzu |