Flash disklerin çalışma prensipleri nelerdir?

Gökhan Şengün
2 min readAug 20, 2018

--

Bu flood’da flash tabanlı disklerin çalışma prensipleri ve bazı dezavantajlarından bahsedeceğim.

Flash diskleri, klasik manyetik disklere oranla daha iyi okuma/yazma performansı sağladıkları için tercih ederiz fakat bu diskler çok önemli iki dezavantajla gelmektedir. Bunlar disklerin silme ömürlerinin sınırlı olması ve disk bloklarına silmeden yazma yapılamamasıdır.

Taşınabilir diskler ve SSD diskler flash tabanlı disklerdir. Flash tabanlı diskler de temel olarak NAND ve NOR adlı iki temel tipte bulunurlar. Taşınabilir diskler ve SSD disklerde hızlı okuma/yazma performansından dolayı NAND flash kullanılır. Bilgisayarlar, telefonlar ve gömülü cihazların BIOS ve firmware'larını tutan disklerde ise NOR flash kullanılır. NOR'un yazma performansı NAND'e göre çok yavaş olmasına rağmen yazılan bilgilerin süre olarak kalıcılığı ve hataya dayanıklılığı NAND flash'a göre üstündür.

Detaylarına girmeyeceğimiz donanımsal tasarım gereği flash disklerde diski oluşturan bloklar belirli sayıda (100K-200K) silme işleminden sonra donanımsal özelliğini kaybeder ve kullanılamaz hale gelirler. Kullanılamaz hale gelen bloklar diskin kapasitesinin düşmesine sebep olur.

Manyetik disklerden farklı olarak flash disklerdeki veriyi değiştirmek için öncelikle diskin ilgili bloğunun silinmesi yani bütün bitlerin 1 haline getirilmesi gerekir çünkü flash diskler disk üzerindeki bitlerden 0 olanları 1'e çekemez ancak 1 olanları 0'a çekebilir.

Silinen disk bloğunda bütün bitler default state'e örneğin 1'e çekilir. Sonra ilgili veride 0 olan bitler için 1'den 0'a çekme işlemi yapılır. Aşağıda ikili olarak 01000001 olan A harfininin yazılması işlemi gösterilmiştir.

Flash diskler bloklardan (512KB — 4MB) meydana gelir, bloklar ise boyutu (2KB — 16KB) arasında değişen page'ler şeklinde organize edilir. Flash diskler page bazında silme işlemi yapamaz ancak blok bazında yapabilirler. Blok bir kere silindikten sonra silinmiş blok üzerindeki page'ler bağımsız olarak yazılabilirler. Örneğin blok boyutu 4MB ve page boyutu 4KB olan bir diskte her bir blokta 1000 adet page bulunacaktır. 4MB'lık blok bir kere silindikten sonra 4KB'lık 1000 page'e veriler istenildiği gibi yazılabilir.

Yukarıda verilen flash diskler ile ilgili bilgilerden çıkarılacağı üzere silinmiş bir blokta bulunan bir page'e yazmak çok pratik olsa da yazılmış bir page'deki verinin güncellenmesi aynı bloktaki diğer page'leri etkilemeden mümkün değildir.

Bir page'deki verileri güncelleme problemini çözmek için ilk page invalid olarak işaretlenerek güncellenmiş veriler aynı veya farklı bloktaki yazılmaya uygun yeni bir page'e yazılır. Aynı şekilde silinen verilerin bulunduğu page'ler de invalid olarak işaretlenir.

Bir bloktaki bütün page'ler invalid olarak işaretlendiğinde o blok silinerek page'ler boş hale getirilir. Ek olarak fragmantasyonu önlemek için valid page sayısı az olan bloklardaki page'ler başka bloklara taşınarak ilgili blok silinerek sisteme kazandırılır.

Görüldüğü üzere flash tabanlı diskler yüksek okuma/yazma performansları ile cezbedici olsalar da ciddi sınırlamalarla gelmektedirler. Bu flood’da bu sınırlamalarla birlikte flash disklerin çalışma prensiplerini gözden geçirmiş olduk. Hemen bir sonraki flood’da flash disklerin sayılan dezavantajlarını ortadan kaldırmak için ortaya konan Wear Leveling tekniği ile performans/kullanım ömrü artışı sağlayan diğer tekniklerden bahsedeceğim. Yine sonraki flood'da bu konu ile ilgili profesyonel hayatımın en keyif veren projelerinden birini anlatacağım.

--

--

Gökhan Şengün

Full stack dad of two and just curious about things. Stories are from my twitter floods @gokhansengun. Main blog is www.gokhansengun.com