Aylık arşivler: Şubat 2019

NVMe (Non-Volatile-Memory-express) Nedir? | M.2 veya M2 Slotu Nedir?

Merhabalar. Bu yazımızda sizlerle yeni nesil SSD’ler üzerinde duracağız. SSD (Solid State Drive), katı durum diskleri olarak Türkçeye çevrilebilir. Böyle deyince de pek bir şey anlaşılmıyor doğrusu. Şöyle diyelim: Sabit (manyetik) disklerimizin yerini alan yeni nesil kalıcı depolama ünitesidir. Katı durum diski denmesinin sebebi de manyetik disklerin içerisindeki hareketli disk kafası mekanizması gibi bir mekanizmanın SSD’lerde olmayışıdır. SSD diskler denince akla gelen ilk iki şey hız ve performans olacaktır. SSD diske sahip bilgisayarlar hızlı açılma ve programları hızlıca yükleme veya çalıştırma gibi önemli özelliklere sahiptir. Bir tür RAM bellek teknolojisini içerisinde barındıran ancak RAM’lerden farklı olarak verileri kalıcı olarak saklayabilen bir bellek türüdür SSD. Sabit disklerdeki ortalama yazma hızı 150 MB/s iken SSD’lerde bu hız ortalama 500 MB/s civarındadır. Hal bu olunca maliyeti de yüksek oluyor. Tabi bu, SSD’lerin ilk zamanları için geçerli bir durumdu. Şimdi SSD’leri gün geçtikçe daha az maliyetle satın almak mümkün. Nedenini ise yazımızın devamında açıklayalım.

Klasik 2.5 inch’lik SSD’ler SATA ara yüzü (SATA SSD’ler) ile sisteme bağlanırken yeni nesil SSD’ler dediğimiz NVMe’lerde (Non-Volatile-Memory-express) sistem bağlantısı PCIexpress veri yolu ile gerçekleştirilmektedir. Bu sayede SATA SSD’lerdeki 500 Mb/s’lik yazma hızı NVMe SSD’lerde PCIe ara yüzü ile 3500 Mb/s’yi aşmaktadır. Yani temel fark bağlantı arayüzünden ve form faktöründen kaynaklanmaktadır. Bu bağlantı ara yüzü farkı ile 6 katlık bir hız farkı ortaya çıkmaktadır. SATA SSD’lere kıyasla da oldukça küçük bir ebattadırlar.

NVMe’ler, yeni nesil anakartlardaki M2 veya M.2 adı verilen slota takılmaktadır. NGFF (next generation form factor) olarak da bilinen M2 standardı, mSATA standardının yerini almıştır. M2, SSD’ler ve diğer aygıtların (WIFI adaptörü gibi) anakarta bağlanmasında kullanılan yeni nesil bir standarttır. Masaüstü bilgisayarlarda, laptoplarda ve tabletlerde kullanılmaktadır. Kullanımı da giderek yaygınlaşmaktadır. Çoğu modern masaüstü bilgisayarda 2 ya da 3 adet M2 slotu bulunmaktadır. M2 aygıtlar bağlantı arayüzü olarak SATA, PCIe veya USB veri yoluna sahiptirler. Ancak bu aygıtlar çoğunlukla SATA veya PCIe ara yüzlerini kullanmaktadırlar.

Günümüz SSD’lerinin üç ayrı form faktörü mevcuttur. İlki, SATA SSD olarak geçen 2.5 inch’lik SSD’dir. İkincisi M.2 slotuna takılan M2 SSD’dir. Sonuncusu ise PCIe Card SSD olarak bilinen SSD türüdür. Form faktörlerinin ilki SATA ara yüzünü kullanır ve maksimum veri yazma hızı 600 Mb/s’dir. NVMe SSD’lerde bu hız PCIe ile birlikte 3500 Mb/s’yi aşmaktadır. Kısacası NVMe’ler, SSD’lerin çok daha küçük ve hızlı versiyonlarıdır diyebiliriz. Bağlantı ara yüzü olarak M2 slotuna takıldığını ve PCIe veri yolu kullandığını söyleyebiliriz. Son olarak; NVMe’lerle birlikte SATA SSD’lerin fiyatlarında da düşüş yaşanacağı aşikardır.

Selection Sort | Seçerek Sıralama

Merhabalar, bu yazımızda sıralama algortimalarından selection sort algoritması üzerinde duracağım. Selection sort, veri yapılarında veya programlama dersleri içerisinde sıklıkla kullanılan bir sıralama algoritmasıdır. Bize sırasız olarak verilen bir dizinin sıralanmasında kullanılır. Oldukça basit ve anlaşılır bir algoritmadır. Algoritmanın sıralama mantığı ise şu şekilde işler:

İlk adımda dizideki en küçük eleman bulunur. Bu en küçük elemanla dizinin en başındaki elemanın yeri değiştirilir. Bir sonraki adımda dizinin ikinci elemanından başlanır. Dizideki bir sonraki en küçük elaman bulunur ve dizinin ikinci elemanı ile bu elemanın yerleri değiştirilir. Sıralama ve yer değiştirme işlemi dizideki son eleman yerine yerleştirilene kadar bu şekilde devam eder. Daha anlaşılır olması için algoritmayı bir örnek üzerinden açıklayalım.

Bize sırasız olarak 6 elemanlı şöyle bir dizi verilmiş olsun: 3 – 5 – 1 – 2 – 7 – 4. Şimdi bu dizinin elemanlarını selection sort algoritmasına göre adım adım sıralamaya çalışalım:

    1. Adım: 1 – 5 – 3 – 2 – 7 – 4
    2. Adım: 12 – 3 – 5 – 7 – 4
    3. Adım: 123 – 5 – 7 – 4
    4. Adım: 1234 – 7 – 5
    5. Adım: 12345 – 7

Şimdi yukarıdaki algoritmanın adımlarını sırasıyla açıklayalım: İlk adımda; dizinin en küçük elemanı olan 1 bulunur ve dizinin ilk elemanı olan 3 ile yer değiştirir. Bir sonraki adımda dizinin ikinci en küçük elemanı olan 2 bulunur ve dizinin ikinci elemanı olan 5 ile yer değiştirir. Her adımda; dizinin yerleştirilen son elemanından sonraki kalan kısmına bakılır ve bu kısımda bir sonraki küçük eleman aranır. Bulunan eleman ile bir önceki adımda yerleştirilen elemanın sonrasındaki elamanın yerleri değiştirilir. Yani her adımda dizinin bakılan eleman sayısı da bir artırılmış olunur. Kırmızıya boyanmış elemanlar o adımda yerine yerleştirilen elemanı gösterir.

Kısacası selection sort; her adımda dizinin en küçük elemanın arandığı; bulunan eleman ile dizinin başındaki elemanın yerlerinin değiştirildiği bir sıralama algoritmasıdır. Bir sonraki aramaya, yerine yerleştirilen elemandan sonra başlanması gerektiği de unutulmamalıdır. Algoritma, dizideki (n-1). eleman yerine yerleştirilene kadar çalışmaya devam eder.

Bubble Sort | Kabarcık veya Baloncuk Sıralama

Merhabalar, bu yazımızda sıralama algortimalarından bubble sort algoritması üzerinde duracağım. Bubble sort, veri yapılarında veya programlama dersleri içerisinde sıklıkla kullanılan bir sıralama algoritmasıdır. Bize sırasız olarak verilen bir dizinin sıralanmasında kullanılır. Algoritmanın sıralama mantığı ise şu şekilde işler:

Dizinin ilk elemanından başlanır. İlk eleman ile ikinci elemanın karşılaştırması yapılır. Elemanlardan küçük olan başa geçer, büyük olan ile dizinin bir sonraki elemanının karşılaştırması yapılır. Eğer ilk eleman ikinci elemandan küçükse herhangi bir yer değiştirme işlemi yapılmaksızın bir sonraki elemana geçilir. Bu sıralama algoritmasında dizi n defa yani eleman sayısı kadar döner. Birinci adımdan sonra dizinin en büyük elemanı en sona yerleşmiş olur. Daha anlaşılır olması için algoritmayı bir örnek üzerinde açıklayalım. Bize sırasız olarak 6 elemanlı şöyle bir dizi verilmiş olsun: 3 – 5 – 1 – 2 – 7 – 4. Şimdi bu dizinin elemanlarını bubble sort algoritmasına göre adım adım sıralamaya çalışalım:

    1. Adım: 3 – 1 – 2 – 5 – 4 – 7
    2. Adım: 1 – 2 – 3 – 4 – 57
    3. Adım: 1 – 2 – 3 – 457
    4. Adım: 1 – 2 – 3457
    5. Adım: 1 – 23457

Şimdi yukarıdaki algoritmanın adımlarını sırasıyla açıklayalım: İlk adımda; İlk ikili eleman olan 3 ile 5 karşılaştırılır. 3, 5’ten küçük olduğu için yeri değişmez ve sıradaki ikili elemana geçilir. Bir sonraki adımda: 5, 1’den büyük olduğu için 5 ile 1’in yeri değiştirilir. Daha sonra 5 ile 2 karşılaştırılır ve yerleri değiştirilir. Sonra 5, 7 ile karşılaştırılır ancak 5, 7’den küçük olduğu için yeri değiştirilmez ve bir sonraki adımda 7 ile 4 karşılaştırılır. 7, 4’ten büyük olduğu için yerleri değiştirilir. Böylece en büyük eleman ilk adımda dizinin sonuna yerleştirilir. 2. adımda 2. en büyük eleman, 3. adımda 3. en büyük eleman … dizi sonuna yerleştirilir. Her adımda bir eleman yerine yerleştirilmiş olunur. Kırmızıya boyanmış elemanlar o adımda yerine yerleştirilen elemanı gösterir.

Kısacası bubble sort; diziye ait elemanların ikili gruplar halinde karşılaştırıldığı, büyük olanın küçük olanla yerlerinin değiştirilerek her adımda sona taşındığı bir sıralama algoritmasıdır. Algoritma, dizi sıralı dahi olsa yer değiştirme işlemi yapılmayana kadar çalışmaya devam eder. Her adım, dizideki eleman sayısı kadar elemana bakmayı ve onları kontrol etmeyi gerektirir. Eğer adımlardan herhangi birinde bir yer değiştirme işlemi yapılmamış ise algoritma sonlandırılabilir. Böylelikle işlem çok daha az adımda ve kısa sürede gerçekleştirilmiş olur. Algoritmanın iyileştirilmesi noktasında da kullanılabilir.