Flash disklerin çalışma prensipleri nelerdir?
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.