Flash NAND memiliki batas endurance. Proses programming mengubah muatan yang tersimpan, tetapi sel tidak dapat begitu saja menimpa data lama secara sembarang di tempat yang sama. Page diprogram di dalam erase block yang lebih besar, dan operasi erase mereset satu block sebelum page di dalamnya dapat menerima programming baru.

Geometri ini menimbulkan persoalan endurance. Sebuah workload dapat memperbarui alamat logis yang sama ribuan kali meskipun drive memiliki banyak block lain yang hampir tidak menerima penulisan. Jika setiap alamat logis selalu terikat pada satu lokasi fisik, area kecil yang aktif dapat mencapai batas siklus erase sementara sebagian besar flash masih jarang dipakai.

Wear leveling memutus hubungan tetap tersebut. Controller memetakan alamat logis ke lokasi fisik yang berubah-ubah dan menyebarkan aktivitas erase ke NAND yang tersedia.

Alamat logis tidak menunjuk sel flash yang tetap

Host mengirim operasi baca dan tulis menggunakan logical block address. Alamat tersebut mendeskripsikan antarmuka penyimpanan yang disajikan perangkat; biasanya alamat itu tidak mengekspos page NAND persis yang menyimpan setiap data.

Di dalam SSD atau perangkat flash terkelola lain, flash translation layer mempertahankan pemetaan antara alamat yang terlihat oleh host dan lokasi flash fisik. Saat host menulis ulang data, controller dapat menempatkan versi baru di free page lain, memperbarui pemetaan, lalu kemudian mereklamasi block yang berisi page lama.

Indirection ini memberi controller kebebasan memilih penempatan fisik. Wear leveling memakai kebebasan tersebut untuk menghindari erase berulang pada block yang sama.

Pemetaan itu juga mendukung tugas pengelolaan flash lain, termasuk garbage collection, penanganan bad block, dan over-provisioning. Mekanisme tersebut saling berinteraksi, tetapi menyelesaikan masalah yang berbeda.

Dynamic wear leveling mengikuti penulisan masuk

Dynamic wear leveling berfokus pada block yang terlibat dalam penulisan baru dan reklamasi. Controller dapat memprioritaskan block dengan tingkat pemakaian lebih rendah saat mengalokasikan ruang untuk data masuk, sehingga aktivitas program dan erase tersebar secara bertahap.

Bayangkan drive dengan file database kecil yang terus berubah dan arsip besar yang jarang berubah. Tanpa relokasi, area fisik di bawah database dapat mengakumulasi siklus erase jauh lebih cepat daripada bagian perangkat lainnya.

Kebijakan dinamis dapat memindahkan setiap versi baru database melalui block fisik yang berbeda. Dengan demikian, satu area kecil tidak menyerap seluruh siklus yang dihasilkan workload aktif.

Dynamic wear leveling memiliki batas: block yang ditempati data statis dapat tidak tersentuh dalam waktu lama. Erase count yang rendah pada block tersebut merupakan kapasitas endurance yang tidak dapat dimanfaatkan sepenuhnya oleh kebijakan dinamis murni.

Static wear leveling dapat memindahkan data dingin

Static wear leveling memperluas kebijakan ke block yang berisi data berumur panjang. Controller dapat sesekali memindahkan data dingin dari block dengan wear rendah, membebaskan block itu untuk penulisan mendatang sambil menempatkan data dingin ke block yang sudah mengalami lebih banyak siklus erase.

Perpindahan tersebut dapat terlihat tidak intuitif karena data dingin tidak memerlukan pembaruan dari host. Salinan internal tambahan itu memiliki tujuan lebih luas: mengurangi selisih antara block yang banyak dan sedikit dipakai.

Controller tidak perlu membuat setiap block memiliki erase count identik setiap saat. Relokasi sendiri memakai bandwidth dan operasi flash, sehingga firmware menyeimbangkan distribusi endurance dengan write amplification, latensi, kebutuhan ruang bebas, dan aktivitas latar belakang.

Kebijakan persisnya bergantung pada vendor. SSD konsumen, drive enterprise, produk flash removable, dan penyimpanan embedded dapat memakai ambang serta strategi penjadwalan yang berbeda.

Garbage collection menciptakan kesempatan erase

Page NAND yang menyimpan data usang biasanya tidak dihapus satu per satu. Controller menandai versi lama sebagai invalid, lalu garbage collection mengonsolidasikan page yang masih valid dari sebuah block ke lokasi lain dan menghapus block tersebut sebagai satu unit.

Wear leveling memengaruhi block mana yang masuk ke siklus ini dan lokasi penempatan data valid setelahnya. Garbage collection terutama memulihkan ruang yang dapat dipakai kembali; wear leveling terutama menyebarkan wear fisik. Controller dapat mengoordinasikan kedua keputusan tersebut.

Koordinasi ini penting karena block yang dipilih hanya berdasarkan kemudahan reklamasi belum tentu menjadi pilihan terbaik untuk keseimbangan endurance. Sebaliknya, memindahkan data hanya untuk menyamakan erase count dapat menghasilkan penyalinan berlebihan.

Firmware karena itu memperlakukan pemulihan ruang bebas, penempatan, dan endurance sebagai batasan yang saling berkaitan, bukan sakelar terpisah.

Over-provisioning memberi controller lebih banyak ruang

Banyak perangkat flash memiliki kapasitas fisik yang tidak diekspos sebagai ruang normal yang dapat dialamatkan pengguna. Area cadangan ini, bersama ruang user-visible yang sedang kosong, memberi controller kumpulan lokasi untuk relokasi dan reklamasi.

Ruang kerja yang lebih luas dapat mempermudah pengelolaan flash. Controller memiliki lebih banyak kandidat block untuk penulisan masuk dan sering kali dapat menjalankan garbage collection dengan tekanan lebih rendah.

Over-provisioning tidak membuat sel menjadi abadi. Mekanisme ini menambah sumber daya fisik yang tersedia untuk menyerap penulisan dan dapat mengurangi beberapa bentuk write amplification pada workload berat.

Drive yang hampir penuh dapat menghadirkan persoalan pengelolaan yang lebih sulit karena lebih sedikit free page yang langsung tersedia. Controller modern mencadangkan ruang internal agar operasi penting pengelolaan flash tetap dapat berjalan ketika volume yang terlihat host terisi padat.

Write amplification mengonsumsi endurance

Penulisan dari host bukan satu-satunya penulisan yang diterima NAND. Pemindahan page valid saat garbage collection, relokasi data dingin untuk static wear leveling, dan pemeliharaan metadata dapat menghasilkan penulisan internal.

Rasio antara penulisan fisik ke flash dan penulisan yang diminta host lazim disebut write amplification. Amplification yang lebih tinggi berarti NAND menerima lebih banyak programming untuk jumlah data host yang sama.

Wear leveling karena itu dapat melibatkan trade-off. Pemindahan data dapat memperbaiki distribusi siklus erase sambil menambah traffic internal. Firmware controller berupaya memperoleh manfaat endurance dari distribusi yang lebih baik tanpa menghasilkan penyalinan tambahan yang terlalu besar.

Bentuk workload berpengaruh. Pembaruan acak berukuran kecil, penulisan berkelanjutan, ruang bebas yang tersedia, perilaku kompresi jika digunakan, dan jumlah over-provisioning dapat mengubah aktivitas penulisan internal.

Bad block memperkecil kumpulan yang dapat digunakan

Controller flash juga melacak block yang tidak dapat menyimpan data secara andal. Sebagian block ditandai tidak dapat digunakan sejak proses manufaktur, sementara block lain dapat menjadi tidak andal selama masa operasi.

Saat sebuah block dipensiunkan, controller mengeluarkannya dari alokasi normal dan memakai kapasitas yang tersisa untuk mempertahankan antarmuka penyimpanan logis. Spare block menyediakan ruang bagi proses ini.

Wear leveling tidak dapat memperbaiki sel yang telah aus. Perannya bersifat preventif: menyebarkan tekanan agar konsentrasi yang dapat dihindari tidak menghabiskan sebagian flash terlalu dini.

Error-correcting code dan teknik pengelolaan pembacaan menangani efek reliabilitas lain. Keduanya melengkapi pengelolaan endurance, bukan menggantikannya.

Rating endurance menggambarkan anggaran tingkat perangkat

Spesifikasi SSD sering menyatakan endurance dengan ukuran seperti terabytes written atau drive writes per day. Angka tersebut menggambarkan workload penulisan yang didukung dalam kondisi tertentu, bukan janji bahwa setiap block NAND mencapai erase count yang sama persis secara bersamaan.

Masa pakai aktual bergantung pada tipe NAND, kebijakan controller, kapasitas cadangan, workload, temperatur, write amplification, koreksi error, dan batas kualifikasi vendor.

Workload client yang ringan dapat tetap jauh di bawah anggaran penulisan selama bertahun-tahun. Workload server yang intensif menulis dapat mengonsumsi anggaran jauh lebih cepat meskipun kedua perangkat memiliki kapasitas nominal yang sama.

Wear leveling menjadi salah satu alasan pola penulisan yang terlihat host tidak langsung memetakan wear ke alamat fisik tetap. Controller terus mengubah pemetaan tersebut agar flash dipakai sebagai satu kumpulan terkelola.

Wear leveling menukar penempatan tetap dengan pemakaian seimbang

Efek intinya sederhana: data logis yang sering diperbarui tidak terus melekat pada satu area fisik yang berulang kali dihapus.

Kebijakan dinamis menyebarkan penulisan masuk di antara block yang tersedia. Kebijakan statis juga dapat merelokasi data berumur panjang agar block dengan wear rendah kembali masuk ke kumpulan yang dapat ditulis. Garbage collection memulihkan ruang, over-provisioning menyediakan ruang kerja, dan pengelolaan bad block mengeluarkan lokasi yang tidak andal.

Mekanisme tersebut mengubah NAND mentah menjadi perangkat penyimpanan yang dapat menerima workload host tidak merata tanpa memusatkan seluruh siklus erase pada alamat logis teraktif. Controller tidak dapat menghilangkan endurance sel flash yang terbatas, tetapi dapat menyebarkan anggaran terbatas itu ke bagian media fisik yang jauh lebih luas.