Eğitmen: Bu derste
CPU özelliklerini ele alacağız.
Bu, çoklu iş parçacığı, simetrik çoklu
işlem, tek çekirdeğe karşı çoklu
çekirdek ve sanallaştırma desteği gibi şeyleri içerir.
Şimdi, ele alacağımız ilk
şey, hangi CPU'yu satın aldığınıza bağlı olarak SMT veya eşzamanlı çoklu
iş parçacığı veya hiper iş parçacığı olarak da adlandırılan çoklu
iş parçacığı olarak bilinir.
Hyper-threading, Intel tarafından
bu işlem için kullanılan bir terimdir.
Daha genel bir terim ise SMT ya da eşzamanlı
çoklu iş parçacığıdır.
Şimdi, iş parçacığı ile uğraşırken,
bu, bir yazılım uygulaması tarafından bir işlemciye
gönderilen tek bir talimat akışı kavramıdır.
Artık çoğu uygulama tek bir süreci tek bir iş parçacığında çalıştırmak
üzere tasarlanmıştır.
Bu da yazılımın her şeyi seri bir şekilde
yaptığı anlamına gelir.
Yani, size beş farklı şey
yapmanız için talimat versem,
bunları sırasıyla yaparsınız:
bir, iki, üç, dört ve beş.
Bunların her biri 10 dakikanızı
alsaydı, toplam 50 dakika ederdi.
Ancak çoklu iş parçacığı kullanmanıza ve bu şeyleri
sırasız ya da aynı anda yapmanıza
izin verirsem, bu şeyleri farklı iş parçacıklarına
ya da farklı akışlara göndererek aynı anda birden fazla
şey yapabilirsiniz.
Örneğin, size sağ elinizle bir şeyler
yazmanızı istediğimi ve
aynı zamanda sol elinizle
masaya dokunmanızı istediğimi söyledim diyelim.
Bunların ikisini de aynı anda yapabilirsiniz,
çünkü bu eylemleri yapmak için iki
iş parçacığınız veya iki eliniz vardır.
Çoklu iş parçacığı fikri budur.
Bu nedenle Intel ve diğer üreticilerin yaptığı şey,
yazılımların işlemcileriyle konuşmasına
ve tek bir işlemci içinde aynı anda birden
fazla paralel iş parçacığı çalıştırmasına olanak
tanıyan bir yol geliştirmekti.
Bu, bu iş parçacıklarının o işlemci
üzerinden çalıştırılmasına ve CPU'nun orada oturup bir
sonraki eylemi beklediği boşta kalma süresinin
azaltılmasına olanak tanır.
Bunu yaparak, esasen kapasitemizi
artırmaya ve işlemciden daha
fazla şey geçirmeye çalışabilir
ve aynı süre zarfında daha fazla iş yapmaya çalışabiliriz.
Şimdi, bu harika, ancak yalnızca belirli bir noktaya kadar çalışıyor
ve yazılımın bunu kullanabilmesi ve sisteme aynı anda
birden fazla iş parçacığı kullanmak istediğinizi söyleyebilmesi
için bunu anlayabilmesi gerekiyor.
Hyper-threading gibi bir
şeyle uğraşırken bu büyük bir sınırlamadır.
Bunu aşmanın bir başka yolu
da simetrik çoklu işlem ya da SMP olarak bilinen yöntemdir.
Şimdi, SMP iş istasyonları ve sunucuların
bunu yapmasının geleneksel yoludur,
çünkü aslında birden fazla işlemciye sahiptirler.
Şimdi, bunu yapmak için iki işlemci
soketi ya da dört işlemci soketi olan bir anakarta sahip olmanız
gerekir ve sonra bu anakarta iki ya da dört
işlemci takarsınız.
Bunu yaptığınızda, birlikte çalışabilmeleri
için tüm bu işlemcilerin aynı tür ve
hızda olması gerekir.
Ve temel işletim sisteminizin birden fazla işlemciyi nasıl
kullanacağını anlaması gerekir.
Varsayılan olarak, çoğu işletim sistemi bunu yapmaz.
Bu nedenle, birden fazla işlemciyi destekleyebilmek için
Windows Server 2019 gibi sunucu tabanlı bir işletim sistemine
sahip olmanız gerekiyordu.
Bu nedenle SMP ya da simetrik çoklu işlem, masaüstü ve dizüstü
bilgisayarlarda pek kullanışlı değildi.
Bunun yerine çoğu masaüstü ve dizüstü bilgisayar Intel işlemcilerin
hyper-threading özelliğine ya da AMD işlemci
kullanıyorsanız simultaneous multithreading veya SMT özelliğine
güvenmek zorunda kaldı.
Dolayısıyla, hyper-threading ve SMT uzun bir süre gerçekten
iyi çalıştı, ancak sonunda ne kadar çok şey işlemek istediğimiz
ve bunu yapmak için yalnızca tek bir işlemciye sahip
olduğumuz konusunda bir sınıra ulaştık.
Çoğu işletim sistemi belirli bir anakart üzerinde
birden fazla soket ya da birden fazla
işlemciyi nasıl idare edeceğini bilmediğinden, üreticiler
çok çekirdekli paket olarak bilinen bir paket oluşturmaya
başladılar.
Şimdi, bir paketten bahsettiğimde,
CPU'dan, fiziksel çipten bahsediyorum.
Şimdi, anakartınızdaki iki farklı sokette
iki fiziksel paket veya iki fiziksel yonga
bulundurmak yerine, bu
üreticilerin yapmaya karar verdiği
şey, tek bir CPU olarak çalışan tek bir paket oluşturmaktı.
Ancak bu paketin içinde
aslında birden fazla CPU veya birden fazla işlemci vardı.
Bu, anakart için tek bir fiziksel CPU
gibi göründüğü anlamına geliyordu, çünkü öyleydi, ancak içinde
birden fazla çekirdek veya
merkezi işlem birimi çekirdeği vardı.
Bu sayede herhangi bir işletim sistemi
tek bir işlemci ya da işlemci paketiyle konuşabilir ve
daha sonra işlemci paketinin kendisi
bu talimatları CPU'nun içindeki
çoklu çekirdekler arasında paylaştırabilir.
Şöyle düşünün.
Dört yatak odası olan bir eviniz var.
Eğer birisi kapıya gelip "Bu gece için bir yatağa ihtiyacım
var" derse, gece için bir yatağı
olduğu sürece bu dördünden hangisini alacağı
gerçekten umurunda değildir.
Böylece ön kapıdan giriyorsunuz, onları tek
bir odaya götürüyorsunuz ve onlara sadece bir oda gösteriyorsunuz.
Bu çok çekirdekli işlemcinin yaptığı da esasen budur.
Yeni insanlar kapıdan içeri girdiğinde, onları tek bir
odaya alıyor ve gece boyunca orada uyumalarına veya işlemlerini
yapmalarına izin veriyor ve sonra onları tekrar dışarı gönderiyor.
Tüm bunlar ön kapıdaki
kişi tarafından gerçekleştiriliyor
ki bu durumda bu kişi çok çekirdekli paket oluyor.
Daha sonra bunları, bu işi yapmak için ihtiyaç
duyduğu bireysel bölmeye veya bireysel alt işlemciye yerleştirir.
Çok çekirdekli bir paketin amacı da budur.
Şimdi, çoğumuz bunu daha önce duyduk, çünkü
sisteminizde muhtemelen
çok çekirdekli bir işlemciniz var.
Muhtemelen çift çekirdekli bir işlemciniz
vardır, yani tek bir çip içinde iki CPU'nuz vardır veya
dört işlemciniz vardır, yani
tek bir çip içinde dört işlemciniz
vardır.
Ya da bir hexa işlemciniz var, yani
tek bir çipin içinde altı çekirdeğiniz var.
Ya da bir okta işlemciniz var,
yani tek bir çipte sekiz çekirdeğiniz var.
Örneğin, masaüstü bilgisayarımda sekiz çekirdekli bir
işlemcim var ve bu tek bir fiziksel çip, ancak
içinde sekiz alt işlemci var.
Bu da sekiz çekirdekli ya da çok çekirdekli
işlemci olarak bilinir.
Şimdi, çoklu çekirdeğe ve hiper iş parçacığına
sahip olmanın yanı sıra, aslında
ikisini birleştirebilirsiniz,
böylece paketin içindeki bu işlemcilerin her biri, örneğin
benim sistemimde sekiz işlemciye
sahip sekiz çekirdekli var.
Şimdi, bu tek paketin içinde sekiz
işlemci var ve bu sekiz işlemcinin
her biri hyper-threading özelliğini
de destekleyebiliyor.
Bu, sekiz CPU ile 16 iş parçacığım olduğu anlamına geliyor
ve bana söz konusu makinede bir ton işlem kapasitesi
sağlıyor.
Pekala, bu noktada bu derste ele almak istediğimiz
dört konunun üçünden bahsetmiş olduk.
SMT olarak bilinen hyper-threading
ve eşzamanlı çoklu iş parçacığı hakkında konuştuk.
Simetrik çoklu işlemden ya da soketlerde birden
fazla CPU'ya sahip olmaktan bahsettik ve daha
sonra içinde iki, dört, altı ya da sekiz tane olmak üzere
birden fazla işlemci bulunan tek
bir CPU'ya sahip olduğunuz bu çok çekirdekli
işlemciler fikrinden bahsettik.
Şimdi, sanallaştırma hakkında konuşmamız gereken son şey.
Şimdi, sanallaştırma CPU'ların bir başka özelliğidir, ancak az
önce bahsettiğimiz üçüyle gerçekten
ilgili değildir.
Az önce bahsettiğimiz üç konu, tek bir çipten
ya da birden fazla çipten nasıl daha fazla performans elde edebileceğinizle
ilgiliydi.
Ancak sanallaştırma hakkında
konuştuğumuzda, gerçekte var olmayan bir donanımı
taklit edebilmekten bahsediyoruz.
Şimdi, bu aslında ya Intel'in
VT olarak bilinen sanallaştırma teknolojisi
ya da AMD'nin AMD-V olarak bilinen sanallaştırması
yoluyla elde edilir.
Şimdi, bunların her ikisi de donanım destekli sanallaştırma
olarak adlandırılan sanallaştırmayı desteklemek
için işlemci uzantıları sağlar.
Bu da muhtemelen şu soruyu
gündeme getiriyor: Sanallaştırma nedir?
Sanallaştırma, bir bilgisayarın kendi içinde birden
fazla başka bilgisayar çalıştırıyormuş gibi davranabilmesidir.
Şimdi, bunun nasıl göründüğü, MacBook'um
gibi tek bir dizüstü bilgisayarım olabilir.
Ve bu MacBook'ta tek bir işletim sistemim var, macOS.
Şimdi, Windows veya Linux çalıştırmak isteseydim,
makinemi yeniden biçimlendirmem ve bu yazılımı
yüklemem gerekirdi.
Bu gerçekten rahatsız edici olurdu.
Ancak sanallaştırma ile bunu yapmak zorunda değilim.
Bunun yerine, VMware veya
Virtualbox veya Parallels gibi bir program çalıştırabilir ve
bu yazılımın içinde sanal
bir bilgisayar oluşturabilirim.
Bir işlemciye, iki işlemciye ya da dört işlemciye
sahip olmasını istediğimi söyleyebilirim.
Ve ona ne kadar bellek ve ne kadar depolama alanı
istediğimi söyleyebiliyorum.
Ve sadece yazılımda var olan
bu sanal bilgisayarı yaratacaktır.
Şimdi, içinde Windows gibi yeni bir işletim sistemi
çalıştırdığımda, bunun iki çekirdekli bir işlemci olduğunu söyleyebilirim.
Dört gigabayt RAM ve 50 gigabayt sabit diske sahiptir.
Bunların hepsi sadece yazılımda var.
Ancak Windows'u bu sanal makineye yüklediğimde, Windows
bunun tam bir bilgisayar olduğunu düşünüyor.
Tam iki işlemciye, tam dört gigabayt belleğe
ve tam 50 gigabayt sabit diske
sahip olduğunu düşünüyor.
Bu yüzden Windows, tüm
bu fiziksel donanıma sahip olduğunu düşünür ve sanallaştırma
da bunu yapmamızı sağlar.
Bir bilgisayarı sanallaştırmamıza ve sanal
donanım vermemize ve tek bir fiziksel
ana bilgisayar içinde birden fazla
işletim sistemi çalıştırabilmemize olanak tanır.
Şimdi, VT ve AMD-V'ye ek olarak, bazı modern işlemcilerde
arayabileceğiniz ikinci
bir sanallaştırma donanım desteği seviyesi
de var.
Intel sistemlerinde bu EPT ya da genişletilmiş sayfa
tablosu olarak bilinir.
Bir AMD işlemciyle çalışıyorsanız
buna hızlı sanallaştırma indeksleme ya da RVI adını veriyorlar.
Bunların her ikisi de yazılım sanallaştırmasının ikinci
seviye adres çevirisi veya SLAT özellikleri olarak kabul edilir
ve daha sonra daha iyi sanal bellek yönetimine izin vermek
ve sanal bir makine içinde bellek kullanımı söz konusu
olduğunda size daha yüksek performans sağlamak
için bu donanım işlemcisi
tarafından temel alınır ve desteklenir.
Kendi derslerimizde sanallaştırma hakkında
daha fazla konuşacağız, ancak şimdilik
sadece bazı CPU'ların
işlemci setleri içinde bunu yapabildiğini ve Intel'in
VT'sini veya AMD'nin AMD-V'sini
destekleyenler gibi bu yeteneğe sahip
işlemcilerin sanallaştırma yaparken size olmayanlara göre daha iyi performans vereceğini anlamanızı
istiyorum.
Bu nedenle, bir makine inşa edecekseniz
ve bunu sanallaştırma için kullanmak istiyorsanız,
örneğin üzerinde çok sayıda başka
sanal sunucu çalıştıracak bir sunucu gibi, seçtiğiniz
işlemcilerin VT veya AMD-V'ye sahip olduğundan
emin olmak istersiniz, böylece doğrudan donanım hızlandırmalı sanallaştırmayı destekleyebilirler,
çünkü bu size çok daha iyi bir deneyim ve bunun yerine yazılım sanallaştırması yapmak zorunda kalmanızdan çok daha iyi bir performans
sağlayacaktır.