Samsung tarafından yayınlanan bu belge, NAND Flash belleklerde verilerin hatalı yazılmasını veya okunmasını engellemek için kullanılan ECC (Hata Kontrol ve Düzeltme) algoritmasını teknik detaylarıyla anlatıyor.
1. Mantık Nedir? (256 Bayt Başına 3 Bayt)
NAND Flash belleklerde veriler saklanırken bazen dış etkenler veya yıpranma nedeniyle 1 bitlik hatalar (0'ın 1 olması gibi) oluşabilir. Samsung'un bu algoritması şunu yapar:- Her 256 baytlık veri bloğu için 3 baytlık (22 bit) özel bir kod üretir.
- Veri okunurken bu kod tekrar hesaplanır. Eğer eski kodla yeni kod tutmuyorsa, hata var demektir.
2. Hata Nasıl Tespit Edilir?
Sistem, veriyi bir tablo gibi düşünür ve hem satırları hem sütunları kontrol eder:- Line Parity (Satır Paritesi): 16 bittir ($P8$ ile $P1024$ arası). Hangi baytın (satırın) hatalı olduğunu bulur.
- Column Parity (Sütun Paritesi): 6 bittir ($P1$ ile $P4$ arası). Hatalı baytın içindeki hangi bitin bozuk olduğunu bulur.
3. Senaryolar: Ne Zaman Düzeltilir?
Okuma işlemi sırasında orijinal ECC kodu ile yeni üretilen kod XOR işlemine sokulur. Sonuçlara göre şu kararlar verilir:| Sonuç | Durum | Anlamı |
| Hepsi Sıfır | Hata Yok | Veri temiz, işlem tamam. |
| Tam 11 bit "1" ise | Düzeltilebilir Hata | Sadece 1 bit bozulmuştur. Algoritma bu bitin yerini tam tespit eder ve otomatik düzeltir. |
| Sadece 1 bit "1" ise | ECC Hatası | Veri sağlam ama ECC kodunun kendisi bozulmuş demektir. |
| Rastgele Veri | Düzeltilemez Hata | 2 bit veya daha fazla hata vardır. Veri kurtarılamaz. |
4. Özetle Süreç Nasıl İşliyor?
- Yazarken: Veri yazılırken 22 bitlik ECC hesaplanır ve yedek alana kaydedilir.
- Okurken: Veri tekrar okunur, o anki verilere göre yeni bir ECC hesaplanır.
- Karşılaştırma: Eski ve yeni ECC karşılaştırılır. Eğer fark varsa (XOR sonucu), hata bitinin adresi (koordinatları) bulunur ve o bit tersine çevrilerek (0 ise 1, 1 ise 0) veri tamir edilir.