nonpasaran

SSD (Solid State Drive) Hakkında Her şey II : SSD Ünitelerinin Yapısı ve Çalışma Mantığı

SSD (Solid State Drive) Hakkında Her şey yazı dizisinin 2. bölümüyle konuya devam ediyoruz. Bu bölüm iç içe geçmiş 2 ayrı bölümden oluşacak. Bir yandan bir SSD ünitesinin yapı elamanlarını anlatırken diğer yandan HDD üniteleri ile karşılaştırarak  SSD ünitelerinin çalışma prensibini kafanızda canlandırmaya çalışacağım...







  1. Giriş: Neden SSD?
  2. SSD Ünitelerinin Yapısı ve Çalışma Mantığı
  3. Write Amplification Fenomeni
  4. Performansı Doğru Algılama ve SSD Seçimi
  5. Montaj, İşletim Sistemi Kurulumu ve Optik Sürücüye 2. Disk Sürücü Montajı
  6. Secure Erase
  7. Maksimum performans için ayarlama: SSD optimizasyonu
  8. Özet: Sık sorulan sorular ve cevapları
  9. EK 1: OCZ Toolbox ve Linux based Tools ile Firmware Güncelleme


              Yazı boyunca Page, Block, Plane, Write Amplification, Over-provisioning,
               Garbage collection vs. gibi pek çok Türkçe olmayan ama SSD literatüründe bu
               şekilde bilinen terim geçecek veya geçti.
Normalde bunların Türkçe karşılıklarını kullanma taraftarıyım ama alttaki sebeplerden dolayı -istemeyerek de olsayazı boyunca bütün terimleri orjinal hallerinde kullandım:

  • SSD teknolojisi yeni bir teknoloji olduğu için bu kavramların -tamamının- dilimizde yerleşmiş karşılıkları yok. Örneğin "Fazla Tahsis" diye Google'da bir arama yapsanız hiçbir sonuca ulaşamazsınız. Oysa  Over-provisioning diye ararsanız ulaşırsınız gibi...
  • Özellikle Page ve Block kavramlarını Sayfa ve Blok olarak kullanmak mümkündü ama Sayfa çevirisini kullanmak, gerçek sayfa anlamı ile karıştırılabilir ve kavram karmaşasına yol açabilir diye korktum. Öte yandan bir terimi "Page" olarak orjinal halinde kullanırken, diğerini -Block olan orijinali yerine- Blok olarak kullanmak, yarısı Türkçe yarısı İngilizce bir terim haznesi kullanmak olacaktı ki bu da anlamsız.

Hatam oldu ise affola.




          SSD üniteleri marka, model, form faktör, kapasite gibi pek çok değişken yüzünden birbirinden farklı yapılarda olabilir. Ancak bir  SSD ünitesi temel olarak alttaki elemanlardan oluşur;

  1. PCB (Baskı Devre Kartı)
  2. Bilgisayara bağlantıyı sağlayan bir ara yüz (SATA veya PCI-E)
  3. İşlemci başka bir deyişle SSD Kontrolcüsü
  4. NAND flash bellek çipleri



       PCB (Baskı Devre Kartı) resimde yeşil olarak gördüğünüz ve bütün elemanları üzerinde barındıran ve onların iletişimlerini sağlayan bir eleman. Konu daha çok elektronik ile alakalı bu yüzden geçiyoruz. Ama diğer elamanları detaylıca inceleyeceğiz...



ARAYÜZ

        Ara yüz terimini bilgisayar terminolojisinde bir donanımın diğer donanım ya da donanımlarla ilişkisini sağlayan bağlantı tipini tanımlamak için kullanıyoruz. Böyle söyleyince bir şeye benzemedi bu yüzden gerçek hayattan örnekler vereyim:

  • Ütünüzün elektrik şebekesinden güç alabilmesi için kullandığınız fiş, priz kablo üçlüsü bir ara yüzdür. 
  • Arabanıza bir akaryakıt istasyonundan yakıt doldururken kullandığınız hortum bir ara yüzdür.
  • Bilgisayarınızdan panel televizyonunuza görüntü aktarımı için kullandığınız HDMI bağlantı noktaları bir ara yüzdür.

       Her ara yüzün yapabileceklerinin bir sınırı vardır ve birbirine bağladıkları donanımı doğrudan etkilerler. Örneğin 550 MB/sn. okuma yazma hızına sahip bir SSD ünitesini USB 2.0 ara yüzü ile bilgisayara bağlarsanız USB 2.0 ara yüzünün sınırlamalarına tabi olursunuz. Yani   SSD üniteniz 550 MB/sn. okuma yazma hızına sahip olduğu halde bilgisayarla olan iletişimi USB 2.0 ara yüzünün ortalama hızı olan 35 MB/sn. olacaktır. Buradan çıkartmanız gereken sonuç şu:

        Ara yüz sınırlamaları dominanttır. Birbirine bağladığınız donanımların hızı, kapasitesi, kabiliyetleri ne olursa olsun kullanılan arayüzün sınırlamalarına tabi olacaklardır.

       Bu açıklamadan sonra gelelim   SSD ünitelerinde kullanılan ara yüzlere.   SSD ünitelerinde şu anda 2 çeşit ara yüz kullanılıyor: SATA ve PCI-E (PCI Express)

     PCI-E daha hızlı bir ara yüz ve sadece masaüstü bilgisayarlarda kulanılabiliyor. SATA ara yüzü ise an itibari ile piyasada bulunan modellerde SATA 3.0 GBit/s (SATA 2) ve SATA 6.0 GBit/s (SATA 3) olarak 2 tipte bulunuyor.


             Bunların dışında genelde üreticilerin notebook kasası içinde entegre olarak barındırdığı mSATA ara yüzü mevcut ama bu kafanızı karıştırmasın. mSATA, SATA 2 ya da SATA 3 gibi bir SATA ara yüzü nesli değil sadece SATA ara yüzünün ufaltılmış hali. Yani mSATA bir disk SATA 2 ya da SATA 3 olarak üretilebilir. Altta 2.5" bir sabit diskin üzerinde mSATA ara yüzlü bir SSD görüyorsunuz. Gördüğünüz gibi oldukça ufak;




         SATA 2 ara yüzü 280 MB/s veri aktarma kapasitesine sahipken, bu aktarım hızı SATA 3 ara yüzünde 550 MB/s. Burada ayrıntıya girmeden bilmeniz gereken en önemli nokta şu:

         Bütün SATA SSD üniteleri hem geriye hem ileriye yönelik uyumludur.

         Yani bilgisayarınızda sadece SATA 2 portu olsa da SATA 3 ara yüzüne sahip bir SSD ünitesini sorunsuzca kullanabilirsiniz. Yada SATA 3 portu olan bir bilgisayara SATA 2 ara yüzüne sahip bir   SSD ünitesi takabilir ve sorunsuzca kullanabilirsiniz. Ancak her iki durumda da hızınız SATA 2 düzeyinde olacaktır. SATA 3 hızını kullanabilmeniz için hem bilgisayarın SATA 3 portu olmalı hem de SSD üniteniz, SATA 3 ara yüzüne sahip olmalı.


Buna rağmen bilgisayarınızda SATA 3 portu olmasa bile tercihiniz SATA 3 bir SSD modeli olsun. Çünkü aralarında hem fiyat farkı yok hem de ileride bilgisayarınızı değiştirme ihtimali belirirse pişman olmazsınız.



SSD Kontrolcüsü


Tüm SSD üniteleri, yazma ve okuma işlemini düzenleyen ve bilgisayarlarda kullandığımız işlemcilere benzer hesaplama kabiliyetleri olan kontrolörlere sahiptir. Bu kontrolör  SSD ünitesini SSD yapan şeydir ve performansına direkt etki eder. Performansı etkileyen şeyler ise çok çeşitlidir: aynı anda yazılabilecek veri miktarı, yazma hızı, bellek bant genişliği ve bellek verimliliği bunların başında gelir. İşte tüm bunları yöneten ve performansı belirleyen bellek kontrolörüdür.

          Kontrolörün en önemli olduğu konu ise performansa çok önemli etkisi olan "Write Amplification" fenomenidir. Bu fenomeni tüm ayrıntılarıyla bir sonraki yazıda anlatacağım ama kısaca tanımlamak gerekirse;

          Write Amplification, SSD kontrolcüsünün yazmak zorunda olduğu veri miktarı ile işletim sisteminin yazmak istediği veri miktarı arasındaki orandır. Bu değer standart bir SSD ünitesi için 1'in üstündedir. Yani 1 MB boyutunda veri yazmak istediğinizde SSD ünitesi bunu yapabilmek için 1 MB'tan fazla miktarda yazma işlemi yapmak zorundadır.


Günümüzde kontrolcü piyasasını domine eden kontrolcü, SandForce. Bu kontrolcünün en büyük özelliği verileri sıkıştırma kabiliyetine sahip olması ve bu yeteneğe sahip tek kontrolcü olması. Üreticisinin DuraClass olarak adlandırdığı bir teknoloji paketine sahip ve bu teknoloji yüksek kapasitede ön belleklere ihtiyaç olmadan Write Amplification oranını 1'in altına çekmeyi mümkün kılıyor. DuraClass teknolojisine sahip bir SandForce SSD kontrolcüsü, daha etkili sayfa yönetimi algoritmaları kullanarak Garbage Collection (Çöp toplama-Bir sonraki makalede inceleyeceğiz) ihtiyacını minimum seviyelere indiriyor. Bu ise performansı arttırıyor. Bir SSD ünitesinin SandForce kontrolcüye sahip olup olmadığını anlamanın en kolay yolu okuma ve yazma hızlarına bakmak. Yazma hızı sadece SandForce kontrolcüye sahip SSD ünitelerinde okuma hızına yakın (Neredeyse eşit) olabiliyor. Diğer kontrolcülerde ise bu oran neredeyse yarı yarıya.

         SandForce kontrolcülerin dışında Marvell, Intel, Samsung, JMicron ve Phison gibi kontrolcüler mevcut. Bunların içinde SandForce kontrolcülere rakip olabilecek en güçlü kontrolcü Marvell. Marvell kontrolcüler yukarıda bahsettiğim gibi verileri sıkıştırma kabiliyetine sahip değiller. Bu yönde SandForce kontrolcülerin gerisinde kalıyorlar. Ancak bunun sadece yazma anlamında geçerli olduğunu not olarak düşeyim. Öte yandan olay film, fotoğraf ve ses dosyaları gibi sıkıştırılması pek mümkün olmayan dosyaların yazılmasına geldiğinde SandForce kontrolcüler bu avantajlarını kaybediyorlar ve Marvell ile aynı performans seviyesine geliyorlar. Buna ek olarak Marvell kontrolcülerin Trim komutunun kullanılamadığı durumlarda -daha iyi bir Garbage Collection performansına sahip oldukları için- daha performanslı çalıştıkları göz önüne alındığında RAID yapılandırmalarda Marvell kontrolcüye sahip SSD ünitelerinin daha avantajlı olduğu söylenebilir.

        Özetlersek, hangisinin tercih edileceği tamamen kullanıcı profiline bağlı. Ancak çok miktarda sıkıştırılabilir verinin kullanıldığı klasik kullanıcı senaryolarında SandForce kontrolcüsüne sahip SSD ünitelerinin tercih edilmesi daha mantıklı. Piyasayı SandForce kontrolcülere sahip SSD'lerin domine etmesinin, pek çok üreticinin bu kontrolcüleri tercih etmelerinin -şimdilik- sebebi de bu.

NAND flash bellek çipleri


Bu kısım NAND flash bellek çiplerinin çalışma mantığından çok bu çiplere sahip bir sürücünün (SSD) veriyi hangi prensiplerle depoladığına ve dolayısıyla genel SSD depolama mantığını açıklamaya yönelik olacak. Ancak konuyu doğru anlayabilmek için önce HDD'lerin yapısını ve çalışma mantığını anlamak gerekiyor...


Klasik sabit diskler (HDD) birbirlerine paralel bir çok plakadan oluşurlar. Bu plakaların her iki yüzüne de bilgi yazılır. Veri yazma ve okuma işini kafa (Head) yapar. Her plakanın iki yönü için birer kafa mevcuttur. Örneğin diskinizde 2 plaka varsa bunun 2 katı kadar yani 4 kafa vardır.

Bir plakadaki yarıçapı farklı olan her çembere ise Track (İz) denir. Geometriden bildiğiniz üzere bir daire sonsuz sayıda çemberden oluşur. Bizim dairelerimiz (Track) o kadar ince olmadığı için sayısı sonsuz değildir ama oldukça fazladır ve bu Track'lar birleşerek plakayı oluşturur.

           Cylinder (Silindir) ise Track'la çok benzerlik gösterse de küçük bir nüans farkı ile farklı şeylerdir. Cylinder farklı plakalardaki aynı yarıçapa sahip Track'ların toplamını ifade eder. (Bir HDD de birden fazla plaka olduğunu ilk paragrafta belirmiştim) Örneğin 4 tane plakası olan bir HDD'de Cylinder 1 dediğimizde bu 4 plakadaki bütün Track 1'lerin toplamı demektir. Alttaki resmi incelerseniz kafanızda oturtabilirsiniz.




            Her plaka ise mantıksal olarak, eşit açılarla çeşitli parçalara bölünmüştür. Her bir Track'in belirli bir açıya karşılık gelen bir kısmı Sector (sektör) olarak adlandırılır. Sector bir HDD'deki adreslenebilir en küçük noktadır. Boyutu ise genellikle 512 byte olsa da yeni HDD'lerde 4096 byte (4 KB veya 4K) olabilir. (HDD üreticileri bunu Advanced Format Sectors olarak adlandırıyorlar) Altta bu konuyu anlaşılır kılan başka bir resim görüyorsunuz.



           Şimdi ise daha kritik bir noktaya değineceğim: Cluster.

          Cluster şimdiye kadar anlattığım terimlerin aksine disk yapısı ile ilgili değil dosya sistemleri ile ilgili bir terim. (Örneğimizde NTFS) Cluster, HDD'deki verileri işletim sisteminin daha etkin adresleyebilmesi için kullanılan ve 8 sektörden oluştuğu için büyüklüğü 4096 Byte/4 kibibyte (KiB) olan bir mantıksal depolama alanı. Yani disk en küçük 512 Byte'lık okunabilir birimlerden oluşurken kullandığımız dosya sistemi (NTSF) en küçük  4096 Byte'lık birimler (Cluster) kullanıyor. Bunu biz diski biçimlendirirken ayarlayabiliyoruz ama optimum Cluster boyutu  4096 Byte olduğu için varsayılan biçimlendirme ayarı bu. Alttaki resmi incelediğinizde Cluster'in anlamını kafanızda canlandırabileceksiniz;

  1. Track
  2. Geometrik Sektör
  3. Track Sektörü
  4. Cluster
       
             NAND flash bellek Çiplerinin depolama prensiplerine geçmeden önce yapısal özellikleri ile ilgili 2 konuyu açıklığa kavuşturmak gerekiyor;


Bir SSD ünitesinin en küçük yapı elemanı NAND-flash hücrelerdir. Bir NAND-flash hücre, 1 ya da 2 byte veri saklayabilir. Eğer 1 Byte depolayabiliyorsa Single Level Cell (SLC),  2 Byte depolayabiliyorsa Multi Level Cell (MLC) adı verilir. SLC tipi NAND-flash hücrelere sahip SSD üniteleri daha uzun kullanım süresi, daha yüksek veri yazma hızları ve sistem dosyası gibi küçük boyutlu çok sayıda dosyayı daha iyi işleme yeteneklerine sahiptir. Ancak bunun konumuzla alakası yok çünkü piyasada satılan tüketici tipi SSD ünitelerinin tamamı MLC olduğu için seçim şansınız -en azından yakın zamanda- yok. SLC tipi NAND-flash hücrelere sahip SSD üniteleri Enterprice SSD olarak adlandırılıyor ve üreticileri Smart, STEC ve -Sandisk'in satın aldığı- Pliant gibi tüketici tarafından pek bilinmeyen firmalar. Bunların hedef kitlesi ise kurumsal uygulamalar.

            SLC, MLC kavramını açıklığa kavuşturduktan sonra Senkron (Synchronous) ve Asenkron (Asynchronous) kavramına da kısaca değinmek istiyorum. Aslında aralarındaki fark gayet basit: Senkron Nand Flash Çiplere sahip SSD üniteler, Asenkron Nand Flash Çiplere sahip SSD ünitelere karşı sıkıştırılamayan (Video, Fotoğraf, Ses gibi. Bunların sıkıştırılamamasının sebebi bu dosyaların zaten çok etkin sıkıştırma algoritmaları ile sıkıştırılmış olmaları) verilerin transferinde daha performanslılar. Ancak bu fark "Kağıt üzerinde" bir fark. Normal bir kullanıcı hatta bir uzmanın dahi benchmark testleri yapmadan gündelik kullanım senaryolarında aralarındaki farkı anlamasının imkânı yok. Unutmayın benchmark testleri başka şeydir, gerçek kullanım senaryolarında alınan performans başka bir şeydir.

           Özetlersek Benchmark testlerine aldanmayın. Eğer Asenkron bir SSD ile Senkron bir SSD arasında kayda değer bir fiyat farkı varsa asenkron olanı tercih edin. Çünkü -gündelik kullanım senaryolarında- aralarında hiçbir performans farkı olmayacaktır. (Bunları ileride SSD ünitelerinde performansı doğru algılama ve yanlışlar/doğrular kısmında detaylıca açıklayacağım)

          "Peki Senkron SSD üniteleri kime hitap ediyor?" sorusu aklınıza takılabilir. Senkron SSD üniteleri tercih etmesi gereken kullanıcılar sadece profesyonel olarak Video, fotoğraf ve ses dosyaları ile uğraşan kullanıcılar olmalı. Bunların dışındaki kullanıcıların Senkron Nand Flash Çiplere sahip bir SSD alması neredeyse "0" performans farkı karşılığında %20-40 daha fazla ödemesi anlamına gelecektir. Tabii bu söylediklerim kayda değer fiyat farkı olduğunda geçerli. Fiyatlar birbirine çok yakınsa senkron diskleri tercih etmeniz daha mantıklı doğal olarak.

         Altta an itibari ile (Ağustos 2012) piyasada satılan SSD ünitelerinin -bir kısmının- hangisinin senkron hangisinin asenkron olduğuyla alakalı bir tablo görüyorsunuz;



SenkronAsenkron
OCZVertex 3-4, SynapseAgility 3-4
CorsairForce GTForce 3
KingstonHyperX, HyperX 3kSSDNow V+200
IntelSSD 520
SandiskExtreme





NAND flash depolama nasıl işler?


              
                 Nand Flash depolamada öncelikle bilmemiz gereken 3 temel kural var. 
                 Bu kurallar her SSD ünitesinde performansa direkt olarak etki ediyorlar;


  1. SSD ünitelerinde veri sadece boş alanlara yazılabilir.

    "E zaten HDD'lerde de böyle değil mi?" demeyin, HDD'lerde hiç te böyle değil.

    Normalde işletim sistemi üzerinden diskteki bir veriyi sildiğinizde, işletim sistemi sadece o verinin bulunduğu disk alanını boş/yazılabilir olarak işaretler. Aslında üzerine bir şey yazılana kadar bütün veri tamamen oradadır.

    Örneklendirmek gerekirse;

    Veriyi bir kitap olarak düşünün. Siz işletim sistemine bu kitabı Sil dediğinizde işletim sistemi  sadece kitabın "İçindekiler" bölümünü siler. Böylece bir daha o kitaba (Veriye) baktığında -içindekiler bölümü boş olduğundan dolayı- bütün kitabı boş varsayar/görür. Oysa kitabın içeriği tamamen orada duruyordur. Bir HDD'de bu boş/yazılabilir olarak işaretlenmiş, ama aslında dolu olan alanı kullanmak gerektiğinde direkt veri üzerine yazılır.

    Oysa SSD ünitelerinde yani Nand-Flash depolamada -Nand-Flash hücrelerin yapısından dolayı- bunu yapamazsınız. Daha önce veri yazılmış bir alana tekrar veri yazabilmeniz için boş/yazılabilir olarak işaretlemeniz yeterli değildir, ek olarak bu alanı tamamen silmeniz gerekir. Tamamen silmek için de sadece "İçindekileri" değil kitabın içeriğini de silmek gerekir.

    Bunu yapmak içinde o alandaki her byte veri silindi olarak işaretlendikten sonra ayrıca her silindi olarak işaretlenen byte 0 (Sıfır) olarak üzerine yazılmalıdır.
    Özetlersek;

    Bir HDD'de 100 GB'lık bir dosyayı silmeniz ne kadar vaktinizi alır sorusunun karşılığını hepiniz biliyorsunuz; Sadece 1-2 saniye.
    Oysa bir SSD ünitesinde aynı 100 GB'lık verinin silinmesi yine 1-2 saniye sürer ama tekrar kullanımı için ek olarak bu 100 GB'lık alanın "tamamen silinmesi" yükü vardır çünkü o alandaki her bir hücrenin 0 (Sıfır) olarak yazılması gerekir.
    İşte bu hem performans hem de ömür açısından SSD ünitelerinin sırtında taşımak zorunda olduğu kamburlardan ilkidir.
  2. SSD ünitelerinde yazılabilir ve okunabilir en küçük birim 4 KB büyüklüğündeki Page'lerdir.
  3. SSD ünitelerinde silinebilir en küçük birim 512 KB büyüklüğündeki Block'lardır.

İşte bu kuralların getirdiği kısıtlamalar SSD teknolojisinin gelişiminin bu kadar zaman almasının ve zorlanmasının sebebi. Write Amplification konusunu işlerken bu kuralları getirdiği kısıtlamaları/zorlukları ayrıntılı olarak anlatacağım...



          Yukarıda HDD'lerin çalışma prensibini anlatırken Plaka, Track, Sector, Cylinder gibi terimlerle konuyu anlatmıştım. SSD ünitelerinde ise bu kavramların karşılığı farklı terimlerle ifade edilir.

         Yukarıda da bahsetmiştim bir SSD ünitesinin en küçük yapı elemanı NAND-flash hücrelerdir. (NAND-flash cell) Bunlar birleşerek sayfaları (Page), blokları (Block), planyaları (Plane), zarları (Die) ve tek bir NAND flash belleği (NAND flash chip) oluştururlar. Birden fazla NAND flash belleğin birleşimi ile de SSD ünitesinin depolama alanı oluşur.

        Ancak bir SSD ünitesinin yapısal olarak ve dosya sistemi açısından yapı elemanlarının sıralanması farklıdır. Yapısal olarak küçükten büyüğe NAND-flash cell < Page < Block < Plane < Die < NAND flash chip sıralaması yapılabilecekken depolama anlamında sıralama şu şekilde olur: Page < Block < Plane < Die < NAND flash chip.


Bundan sonra bizde konuyu depolama anlamında ele alacağımız için NAND-flash hücrelere veda ediyoruz ve Page'den başlıyoruz.
Page;  4 KB büyüklüğünde SLC veya MLC hücre kullanımına bağlı olarak farklı sayıda NAND-flash hücrenin birleşiminden meydana gelen bir depolama alanıdır. Önemli olduğu için tekrar vurguluyorum;

Bir SSD ünitesinde yazılıp okunabilecek en küçük boyut Page'dir, yani 4 KB'tır.

4 KB'lık 128 adet Page ise birleşerek bir Block oluşturur.



Block'un boyutu ise (Hesaplaması kolay: 128 * 4 KB) 512 KB'tır.
Block'un önemini ise tekrar vurgulamak istiyorum:

Block  SSD ünitelerinde silinebilir en küçük boyuttur. (512 KB)

Block'lar birleşerek (1024 adet) Plane'leri oluştururlar. Bir Plane, 512 MB boyutundadır. (1024 * 512 KB = 512 MB)




          Kesin olarak anlatılabilecek kısım buraya kadar. Bundan sonrası markaya, modele göre değişiyor. Plane'ler  birleşerek Zar'ları (Die) oluşturuyorlar. Altta bir Zar (Die) görüyorsunuz;


         Bu zarların birkaç tanesi paketlenerek NAND flash bellekler oluşturulur. (Alttaki resim)




       Bunların yeteri kadarı bir PCB üzerinde birleştirilip diğer temel bileşenler eklenerek (Kontrolcü ve SATA ara yüzü) bir SSD ünitesi oluşturulur.(Alttaki resim)




Sonraki bölüm:


Yorumlar

Twitter

Facebook

Google+

İzleyiciler

Rastgele

item