Wear leveling adalah proses yang dirancang buat memperpanjang umur perangkat solid-state storage.
Solid-state storage terdiri dari chip mikro yang menyimpan data dalam bentuk blok. Setiap blok punya batas maksimal program/erase (P/E) cycle sebelum jadi tidak bisa diandalkan. Misalnya, jenis NAND flash single-level cell (SLC) biasanya punya daya tahan antara 50.000 sampai 100.000 siklus P/E. Nah, wear leveling ini akan menyebar beban tulis/hapus secara merata ke seluruh blok dalam satu perangkat biar pemakaiannya lebih awet.
Biasanya, wear leveling dikelola oleh flash controller yang punya algoritma buat nentuin blok fisik mana yang dipakai tiap kali ada data yang mau disimpan.
Wear leveling makin penting di perangkat NAND flash multi-level cell (MLC). Kalau SLC hanya simpan 1 bit per sel, MLC bisa simpan 2 bit, bikin kapasitasnya lebih hemat biaya. Tapi sebagai gantinya, daya tahan fisiknya jadi lebih lemah. Buat ngatasi ini, SSD kelas enterprise biasanya pakai MLC versi enterprise yang lebih lambat nulisnya, tapi memperpanjang umur pemakaian.
Bagaimana cara kerja wear leveling?
Wear leveling bekerja dengan cara mengatur proses penulisan dan penghapusan data di flash memory supaya semua blok mengalami jumlah siklus tulis/hapus yang seimbang. Kalau tidak ada wear leveling, bisa aja beberapa blok sering dipakai, sedangkan blok lain jarang kena, yang bikin rusak sebagian dan bisa menyebabkan kehilangan data.
Proses ini dijalankan lewat algoritma yang melacak seberapa sering tiap blok ditulis, lalu nentuin blok mana yang dipilih untuk data baru. Umumnya, wear leveling dilakukan lewat tiga pendekatan: dynamic, static, dan global wear leveling.
Peran wear leveling dalam NAND flash memory
NAND flash memory adalah pondasi utama dari SSD modern dan punya peran besar di storage enterprise. Wear leveling penting banget buat memastikan NAND bisa bertahan lama dan tetap andal. NAND ini tersusun dari serangkaian sel yang diatur jadi halaman dan blok. Setiap sel punya komponen kayak control gate, lapisan oksida, floating gate, serta koneksi source dan drain.
Masa pakai NAND flash terbatas karena setiap siklus tulis/hapus bisa merusak lapisan oksida. Kerusakan ini makin lama bisa menyebabkan error bit yang tinggi. Wear leveling bantu mengurangi efek degradasi ini dengan mendistribusikan siklus P/E secara merata ke seluruh blok.
Wear leveling groups
Wear leveling groups atau zona adalah pembagian data di perangkat flash storage yang masing-masing dikelola oleh algoritma wear leveling. Ini bikin pengelolaan data jadi lebih efisien sesuai jenisnya. Contohnya sistem operasi, aplikasi user, dan data di bagian boot bisa masuk ke grup berbeda.
Di perangkat seperti embedded MultiMediaCard (eMMC) dan Universal Flash Storage, biasanya ada partisi spesifik untuk tiap tipe data. Misalnya, data penting ditempatkan di Enhanced User Data Area dalam mode SLC biar lebih andal, sedangkan data yang nggak terlalu penting bisa masuk ke Non-Enhanced User Area dalam mode triple-level cell (TLC).
Dynamic vs. static vs. global wear leveling
- Dynamic wear leveling: Menyimpan data baru ke blok yang punya hitungan erase paling sedikit. Tapi blok yang jarang diakses nggak akan dipindahkan, yang bisa menghambat distribusi wear leveling.
- Static wear leveling: Mirip dynamic, tapi data statis juga dipindah kalau bloknya terlalu jarang dipakai. Ini lebih efektif tapi bisa memperlambat performa tulis.
- Global wear leveling: Kerja di seluruh zona perangkat. Kalau ada zona yang sering diakses, data bisa dialihkan ke zona lain buat ngurangin keausan berlebihan.
Wear leveling vs. TRIM
Perintah TRIM di OS ngasih tahu ke SSD blok mana yang udah nggak dipakai dan boleh dihapus. Ini berlaku untuk SSD dengan antarmuka SATA. Untuk SSD jenis SAS, perintahnya dikenal dengan nama UNMAP.
Wear leveling beda cerita. Ini dikontrol langsung sama flash controller, bukan OS. TRIM dipakai saat blok kosong, sedangkan wear leveling aktif saat data ditulis ke SSD. Keduanya punya peran masing-masing dalam mengatur umur pakai SSD.
Wear leveling vs. garbage collection
Garbage collection juga bantu SSD biar tetap efisien dan nggak cepat rusak. Saat ada data yang perlu diperbarui, garbage collection akan mindahin data valid ke blok baru, lalu hapus blok lama biar bisa dipakai ulang. Ini juga bantu proses wear leveling.
Wear leveling di perangkat USB
Wear leveling juga diterapkan di USB flash drive. Tapi nggak semua USB drive punya fitur ini karena kapasitas flash-nya kecil. Kalau nggak ada wear leveling, blok bisa cepat rusak karena sering ditulis di lokasi yang sama.
Buat kebutuhan industri, lebih baik pakai USB industrial-grade yang punya proteksi tambahan untuk meningkatkan daya tahan.
Tantangan dalam wear leveling
Meski penting banget, wear leveling juga bisa jadi tantangan. Ketika kapasitas SSD mulai penuh, algoritma wear leveling bisa kesulitan bekerja efisien. Beberapa produsen mengatasi ini dengan overprovisioning, yaitu menyisihkan sebagian ruang untuk proses sementara dan wear leveling.
Proses static wear leveling juga bisa menambah overhead karena butuh operasi tulis ekstra buat mindahin data. Tapi kalau dioptimasi dengan baik, ini sangat membantu menjaga performa dan umur panjang perangkat. Wear leveling adalah kunci penting untuk menjaga keandalan memori flash.