İçeriğe atla

Çoklu kullanım

Bir işlemci tek bir iş parçacığını bir işlem için çalıştırır

Çoklu kullanım (İngilizcesi: İngilizcemultithreading) özelliğine sahip bilgisayarlar birden fazla iş parçacığını donanım desteği sayesinde çalıştırabilir. Çoklu işlem yapabilen sistemlerden gelişen bu yöntem tek bir çekirdeğin kaynaklarını paylaşmak zorundadır. Bu kaynaklar: aritmetik mantık birimi, yazmaçlar (registers), işlemci ön belleği ve adres dönüştürme ön belleğidir. Çoklu işlem yapabilen sistemlerde (çok çekirdekli), işlem birimlerinin tamamı ayrı çekirdeklerde olmasına rağmen, çoklu kullanım tek bir çekirdeğin kullanılabilirliğini iş-parçacığı seviyesinde ve buyruk düzeyinde daha verimli hale getirir. Bu iki teknik birbirini tamamlayan tekniklerdir.

Genel bakış

Çoklu kullanım modeli 1990'ların sonunda buyruk düzeyinde paralel işleme çalışmalarının sona yaklaşmasıyla daha popüler hâle gelmiştir.

  • Tek bir iş parçacığının ya da tek bir programın hızlandırılması ne kadar zor olsa da, çoğu bilgisayar sistemi gerçekte birden fazla iş parçacığı veya program için çoklu görevlendirme kullanılmaktadır.
  • Tüm sistemin daha hızlı çalışmasını sağlayacak tüm görevler başarımın artmasında önemlidir.

İşlem/zaman oranını arttıran iki önemli teknik çoklu işleme ve çoklu kullanımdır.

Artıları

  • Bir iş parçacığı aradığı veriyi ön bellekte bulamıyorsa, diğer iş parçacıkları kullanılmayan kaynaklar ile işlerine devam edebilirler. Bu da, normalde kaynaklar bekleme durumunda olacağı ve çoklu kullanım sayesinde kullanılabildikleri için genel sistemde başarım artışını sağlar.
  • Eğer bir iş parçacığı işlemcinin tüm kaynaklarını kullanamıyorsa, başka bir iş parçacığı bekleyen kaynakları kullanabilir.
  • Eğer birkaç iş parçacığı aynı veri kümesini kullanıyorsa, iş parçacıkları ön belleği paylaşarak daha verimli ön bellek kullanımını ve senkronizasyonu sağlarlar.
  • Çoklu kullanım iş parçacıklarını işlemci üzerindeki farklı kaynaklara yönlendirdiği için işlemci üzerindeki sıcaklık yayılacak bu da sıcaklığın tek noktada toplanmasını engelleyerek soğutmanın daha verimli yapılabilmesini sağlayacaktır.

Eksileri

  • Birden çok iş parçacığı aynı donanım kaynaklarını kullanırken birbirlerinin çalışmalarına engel olabilirler.
  • Tek bir iş parçacığının çalışması hızlanmak yerine yavaşlayabilir. Bunun sebebi de gerçekleştirim için gereken işlemci sıklığındaki azalma veya boru hattına eklenen fazladan aşamalardır.
  • Çoklu kullanımın donanım desteği daha çok yazılım tabanlıdır ve uygulama programlarında ve işletim sisteminde çoklu işlemeye göre daha fazla değişikliğe ihtiyacı vardır.
  • Çoklu kullanım güç tüketimini arttırır.

Sonuçlar değişken olsa da, Intel HyperThreading[1] teknolojisi ile %30 civarında fayda sağladığını belirtmiştir. Hyperthreading, bağımlı kayan nokta işlerlerini paralelde yaparak %100 fayda sağlayan bir sentetik programdır. Öte yandan, verileri önceden yakalayan assembly-tabanlı programlar, mesela iyi video kodlayıcıları, ön bellekte verinin bulunamaması veya boşta bekleyen kaynaklar gibi sorunları olmadığı için çoklu işlemeden yararlanamazlar. Bu yüzden de iş parçacıklarının paylaştığı kaynaklarda oluşabilecek sorunlar yüzünden başarımlarında düşüş gözlenebilmektedir.

Çoklu kullanımı sağlayan donanım teknikleri, çoklu görevlendirmeyi sağlayan yazılım teknikleri ile benzeşmektedir.

Çoklu işleme türleri

Blok çoklu işleme

Kavram

Çoklu işlemenin en basit türü, bir iş parçacığı yürütülürken bir olay tarafından uzun bir süre bekletilmesi gerektiği zaman gerçekleşir. Bu beklemenin sebepleri ana belleğe erişim olabilir ki bu olayda verinin bulunması yüzlerce işlemci vuruşu sürmektedir. Olayın sonçuçlanmasını beklemek yerine, iş parçacıklarını kullanan bir işlemci bu sırada hazır olan başka bir iş parçacığını yürütmek için çağırabilir. Beklenen veri bulunduğunda ise önceki iş parçacığı hazır kuyruğuna sokulur. Sıra geldiğinde de yürütülmeye devam eder.

Kavramsal olarak, işletim sistemlerindeki çoklu görevlendirmeye benzemektedir. Çoklu görevlendirmede de görevler bir olay bekledikleri sırada kendi istekleri ile çalışma zamanlarından vazgeçerler ve olay olduğu zaman tekrar çalışmalarına devam ederler.

Kullanılan terimler

Bu tür çoklu kullanım Blok veya İşbirlikçi veya Kaba çoklu kullanım olarak adlandırılabilir.

Donanım maliyeti

Çoklu kullanım yapabilen donanımın amacı, bir şekilde çalışması engellenen iş parçacığı ile çalışmaya hazır iş parçacığının çok hızlı bir şekilde yer değiştirmesidir. Bu amaca ulaşmanın maliyeti, program tarafından kullanılan ve bazı işlem kontrolünde kullanılan yazmaçların kopyalanmasıdır. Bir iş parçacığından diğerine geçmek demek, neredeyse bütün bir yazmaç bloğunu değiştirmek demektir.

Böyle bir donanımın eklenmesi şu katkıları sağlar:

  • İş parçacıkları arası geçiş bir işlemci vuruşunda yapılabilir.
  • Her iş parçacığı tek başına yürütülüyormuş ve kaynakları başka iş parçacıklarıyla paylaşmıyormuş gibi düşünülebilir. Bu durum yapılması gereken yazılım değişikliklerini ve işletim sistemi değişikliklerini azaltır.

İş parçacıkları arasında etkin bir şekilde geçiş yapabilmek için her aktif iş parçacığının kendisine ait yazmaç bloğu olmalıdır. Örneğin iki iş parçacığı arasında çabuk bir geçiş sağlayabilmek için yazmaçların iki kere tanımlanması gerekir.

Dönüşümlü çalışan çoklu kullanım

Bu tip çoklu kullanımın amacı, boru hattında veri bağımlılıkları yüzünden oluşan beklemeleri ortadan kaldırmaktır. Bir iş parçacığı diğerlerinden tamamen bağımsız olduğu için, boru hattındaki bir buyruğun daha eski bir buyruktan veri beklemesi pek olası değildir.

Kavramsal olarak, işletim sistemlerindeki öncelikli çoklu kullanıma benzemektedir. İşletim sistemlerindeki bir zaman-dilimi işlemcideki vuruşa benzetilebilir.

Kullanılan terimler

Bu tür çoklu kullanıma ilk olarak Fıçı işleme(Barrel processing) denilmişti. Bunu sebebi boruhattı aşamalarının ve yürütülen iş parçacıklarının bir fıçının tahtalarına benzetilmesiydi. Dönüşümlü, Öncelikli, zaman-dilimli çoklu kullanım daha modern isimleridir.

Donanım maliyeti

Blok türündeki çoklu kullanıma ek olarak, dönüşümlü çoklu kullanımda iş parçacığının kimliğini(ID) takip edebilmek için fazladan boruhattı aşamaları bulunmaktadır. Aynı zamanda boruhattında eşzamanlı çalışan daha fazla iş parçacığı olduğundan ön bellek ve adres dönüştürme ön belleği gibi kaynakların daha büyük olması gerekmektedir.

Eşzamanlı çoklu işleme

Kavram

Çoklu kullanımın en gelişmiş ve superscalar işlemcilere uygulanan türüdür. Normal bir superscalar işlemci her vuruşta bir iş parçacığından birden fazla buyruk işler. Eş zamanlı çoklu işlemede ise işlemci birden fazla iş parçacığından birden fazla buyruk işler. Bir iş parçacığının limitli sayıda buyruk düzeyi paralelliğe erişebileceği göz önüne alınırsa, bu tür çoklu işleme birden fazla iş parçacığında paralellik sağlayarak boşa giden buyruk işleme slotlarını engeller.

Donanım maliyeti

Dönüşümlü çoklu kullanımdakine ek olarak eşzamanlı çoklu kullanımda, her boruhattı aşamasında iş parçacığı kimliklerinin takibinin maliyeti olacaktır. Bu yöntemde de aktif iş parçacıklarının sayısına göre ön bellek ve adres dönüştürme ön belleği yeniden boyutlandırılmalıdır.

Örnekler

  • DEC (later Compaq) EV8 (not completed)
  • Intel Hyper-Threading
  • IBM POWER5
  • The Cell microprocessor's Power Processing Element
  • Sun Microsystems UltraSPARC T2
  • MIPS MT

Gerçekleştirim özellikleri

Başka bir geniş araştırma alanı da iş parçacıkları zamanlayıcısıdır. Zamanlayıcı en çabuk şekilde hazır kuyruğunda yürütülmeyi bekleyen iş parçacıkları arasından bir sonraki iş parçacığını seçmek ve aynı zamanda da hazır kuyruğunu ve bekleme kuyruğunu düzende tutmakla yükümlüdür. Zamanlayıcı tamamen donanımda, tamamen yazılımda veya ikisinin birleşimi olarak gerçekleştirilebilir.

Diğer bir araştırma alanı ise ne tür olayların iş parçacıkları arasında değişime yol açacağıdır. Ön bellekte bulamama, iş parçacıkları arası iletişim, DMA vs.

Eğer çoklu kullanım şeması tüm durum bilgisini kopyalıyorsa (ayrılmış kontrol yazmaçları, ADÖ, vs.) bu durumda her bir iş parçacığı için bir sanal makine yaratıyor demektir. Bu şekilde her iş parçacığı aynı işlemci üzerinde kendi işletim sistemi üzerinde çalışıyor gibi olmaktadır. Öte yandan kullanıcı-modu durum bilgisi kaydedilseydi, daha çok iş parçacığının aktif olması için daha az donanım gerekli olacaktı.[2]

Kaynakça

  1. ^ "Intel Hyper-Threading Technology, Technical User's Guide" (PDF). 21 Ağustos 2010 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 8 Kasım 2010. 
  2. ^ Multithreading (computer architecture (İngilizce) Vikipedi

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir.. İşlemcinin çalıştırdığı programı, lar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler mevcuttur.

<span class="mw-page-title-main">İş parçacığı</span>

İş parçacığı, bilgisayar biliminde, bir işin eş zamanlı olarak işlenen her bir bölümüdür. İş parçacığı ve işlem arasındaki fark bir işletim sisteminden diğerine değişmekle birlikte genel olarak iş parçacığının oluşturuluşu ve kaynakların paylaşılmasıdır. İşlemler, birçok iş parçacığı oluşturup sonlandırabilir, iş parçacıkları da ortak bellek kullanabilirler. Çoğu durumda iş parçacıkları işlemlerin içinde yer alır, onları oluştururlar. Çoklu iş parçacıkları paralel olarak pek çok bilgisayar sisteminde uygulanabilir. Tek işlemci kullanıldığında çok iş parçacıklı uygulama, zaman dilimlemesiyle gerçekleştirilir; tek işlemci, farklı iş parçacıkları arasında çok hızlı geçiş yapar ve bu durumda işlemler gerçekte olmasa da eş zamanlı çalışıyormuş gibi görünür. Çok işlemcili sistemlerde farklı iş parçacıkları, farklı işlemciler üzerinde eş zamanlı olarak çalışabilir.

NUMA, Düzensiz Bellek Erişimi veya Düzensiz Bellek MimarisiNon-Uniform Memory Access veya Non-Uniform Memory Architecture” (NUMA) çok işlemcililerde bellek erişim zamanının belleğin işlemci üzerindeki yerine bağlı olduğu bir bilgisayar belleği tasarımıdır. NUMA altında bir işlemci kendi yerel belleğine yerel olmayan bellekten daha hızlı bir şekilde ulaşır, diğer bir ifadeyle, bir başka işlemcinin yerel belleğinden veya işlemciler arasında paylaşılan bellekten daha hızlı erişir.

Boru hattı yöntemi bilgisayar mimarisi ve diğer sayısal ürünlerin tasarımında başarımı artırmak için uygulanan bir yöntemdir. Komutları, boru hattı yöntemi ile işleyip daha kısa süre içinde bitmesini sağlar. Asıl amacı saat sıklığını artırarak başarımı artırmaktır. Farklı kaynakları aynı anda, farklı işler tarafından kullanarak çalışır.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

<span class="mw-page-title-main">Merkezî işlem birimi tasarımı</span>

Merkezî işlem birimi tasarımı bilgisayarın temel bileşenlerinden birisi olan Merkezî işlem birimini (MİB) etkin kullanmayı yönelik bir tasarımdır. MİB bilgisayar donanımının temel bileşenlerinden birisidir. İşlemcisi olmayan bir bilgisayar düşünülemez. Bu yüzden işlemcinin tasarımı ne kadar iyi olursa sistem de o derece hızlı olacaktır. İşlemciyi hızlandırmanın değişik yolları vardır. Bunlardan bazıları:

  1. Buyrukların paralel çalışmasını sağlamak
  2. Çok vuruşluk işlemciler kullanmak
  3. Boru hattı kullanmak
  4. Çoklu işleme kullanmak
<span class="mw-page-title-main">Itanium işlemcisi</span>

Itanium işlemcisi, Intel firmasının 64-bit işlemci ailesinden olup IA-64 mimarisi kullanan işlemcilerinin devamı olarak bilinir. Itanium ve Itanium2 olarak sunulan bu işlemci ilk olarak Ekim 2001'de piyasaya sürülmüştür. Itanium işlemcilerin asıl hedefi yüksek performansa sahip bilgisayarlardı. Bu işlemcinin mimarisinin gelişimi ilk olarak Hewlett-Packard tarafından yapılmıştır ve devamında ise Intel ve Hewlett-Packard ortak olarak birlikte gerçek Itanium mimarisini geliştirmişlerdir.

Sanal bellek, fiziksel belleğin görünürdeki miktarını arttırarak uygulama programına (izlence) fiziksel belleğin boyutundan bağımsız ve sürekli bellek alanı sağlayan bilgisayar tekniğidir. Ana belleğin, diskin (ikincil saklama) önbelleği (cache) gibi davranmasıyla; yani disk yüzeyini belleğin bir uzantısıymış gibi kullanmasıyla gerçekleştirilir. Ancak gerçekte, yalnızca o anda ihtiyaç duyulan veri tekerden ana belleğe aktarılıyor olabilir. Günümüzde genel amaçlı bilgisayarların işletim sistemleri çoklu ortam uygulamaları, kelime işlemcileri, tablolama uygulamaları gibi sıradan uygulamalar için sanal bellek yöntemi kullanılmaktadır.

<span class="mw-page-title-main">Etkin sayfalar ön belleği</span> Bilgisayar bileşeni

Etkin sayfalar ön belleği (ESÖ) (Translation Lookaside Buffer ) sanal bellek kullanan işlemcilerde adres dönüştürme işleminin hızlandırılmasını sağlayan bir tekniktir.

Sırasız yürütüm ya da Düzensiz yürütme, bilgisayar mühendisliğinde, günümüz yüksek performanslı işlemcilerinde kullanılan, yüksek gecikmeler sebebiyle harcanan işlemci döngülerini kullanıma sunan bir talimat yürütme yaklaşımıdır.

Yeniden sıralama belleğinin görevi sırasız işlenen buyrukların işlenmesi bittiğinde buyrukları program sırasına sokmaktır. Sıralama belleği buyrukların sıra listesini tutar. Buyruklar listenin bir ucundan girerler ve tamamlandıklarında diğer ucundan çıkarlar. Bu sayede buyruklar program sırasında işlenmiş gibi olur. Sıralama arabelleğinin uygulanması genelde işletim sistemlerindeki giriş/çıkış belleği gibidir. Sıralama belleğinde buyruklar “son” kısmından girerler, her giriş buyrukların sonucunu tutmak için ayrılan bir alan demektir. Belleğin “baş” kısmındaki buyrukların sonuçlarının hazır olup olmadığına bakılır ve baştaki buyruğun bütün sonuçları yazılıp tamamlandığında buyruk bellekten çıkarılır.

Çok çekirdekli işlemci, ikiden fazla işlemciden (çekirdek) oluşan bir hesaplama birimi. Bilgisayarlarda temel komut kümesi işlemlerini gerçekleştirir.

<span class="mw-page-title-main">İşlem (bilgisayar)</span>

Bilgisayar bilimlerinde işlem (process) terimi, belleğe yüklenmiş ve işlemcide (CPU) yürütülmekte olan bir program olarak tanımlanmaktadır. Uygulamalar diskte çalışmaz halde bulunurken ise program olarak tanımlanır. Bir program kendi başına pasif komut yığınıdır ve işlem ise bu komutların aktif olarak yürütülmesidir.

<span class="mw-page-title-main">Hyper-V</span>

Hyper-V, Microsoft Hyper-V, Viridian kod adındaki ve önceleri Windows Sunucu Sanallaştırma olarak bilinen, x64 bilgisayarlar için hypervisor tabanlı bir sanallaştırma sistemidir. Birden fazla sunucu rolünü tek bir fiziksel ana makinede çalışan ayrı sanal makineler olarak birleştirerek sunucu donanımı yatırımlarını iyileştirmek için bir araç sağlar. Hyper-V ayrıca, Windows haricinde Linux gibi işletim sistemleri de dahil olmak üzere birden fazla işletim sistemini verimli bir şekilde tek bir sunucuda çalıştırmak ve 64-bit bilgi işlemin gücünden faydalanmak için de kullanılabilir.Windows Server 2008'in belirli x64 sürümleriyle birlikte Hyper-V'nin bir betası sevk edilmiş ve kesinleşmiş sürüm 26 Haziran 2008'de piyasaya çıkmıştır. Yeni çıkacak olan Windows Server 2012® Hyper-V® ile de birden fazla işletim sisteminin paralel olarak aynı sunucu üzerinde çalıştırılmasını sağlamaktadır.

<span class="mw-page-title-main">Yazmaç öbeği</span>

Yazmaç öbeği, bir merkezi işlem birimindeki işlemci yazmaçlarının bir dizisini ifade etmektedir. Modern tümleşik devre tabanlı yazmaç öbekleri genellikle çok portlu hızlı durağan rastgele erişimli bellekleri (SRAM) kullanılarak sistemlere tümleştirilmektedirler. Bu tür rastgele erişimli bellekleri kullandıkları okuma ve yazma girişlerine göre ayrılır, fakat normal çok portlu durağan rastgele erişimli bellekler okuma ve yazma işlemlerini aynı girişleri kullanarak gerçekleştirebilmektedirler.

Önden yürütüm işlemcinin ön bellekte bulamama durumunda boşa harcayacağı çevrimlerin beklemekte olan buyrukların önceden yürütülmesi ile faydalı şekilde kullanılması esasına dayalı bir bilgisayar mimarisi tekniğidir. Bu şekilde önceden yürütülecek olan buyruklar ile gelecekte oluşacak olan önbellekte bulamama durumları tespit edilerek, işlemcinin boşta olan yürütüm kaynakları kullanılarak faydalı buyruk ve veri ön yüklemeleri yapılması sağlanır.

<span class="mw-page-title-main">İşlem yönetimi</span>

İşlem yönetimi günümüz işletim sistemlerinin önemli bir parçasıdır. İşletim sisteminin işlemlere yer alması, aralarında haberleşmeyi sağlaması onun önemli görevlerindendir. İşletim sistemi kaynakları işlemlere göre ayırmalı, işlemleri veri aktarımı ve paylaşımına uygun hale getirmeli, her işlemin kaynağını diğer işlemlerden korumalı ve işlemler arası senkronizyonu sağlamalıdır. Bunları yapabilmek için işletim sistemi her işlem için o işlemin mevkisini ve sahipibi tanımlayan ve işletim sistemini her veriği üzerinde kontrol uyguladığı bir veri yapısı sağlamalıdır.

NetBurst, İntel'in 2000 yılında piyasaya sürdüğü Pentium 4 işlemci markasının mikromimarisine verilen isimdir. 2006 Temmuz'unda Core mikromimarisinin çıkışına kadar İntel işlemcilerin mikromimarisi olmuştur. Selefi P6 mikromimarisine göre en önemli özelliği derin boru hattı yapılanmasıyla avantaj sağladığı yüksek saat sıklığıdır. Temel olarak dört ana parçadan oluşmaktadır: Sıralı(ing. In-order) Ön-Uç(ing. Front-end), Sırasız(ing. out-of-order) yürütme birimi, Tam sayı ve kayan nokta yürütme birimleri ve bellek altdizgesi.

<span class="mw-page-title-main">Nehalem (mikromimari)</span>

Nehalem, İntel firmasının Eylül 2008'de piyasaya sürülen Core i7 işlemcisiyle birlikte kullanılmaya başlanmıştır. 2011'de Sandy Bridge mikromimarisi sunulana kadar İntel'in en gelişmiş mikromimarisi olarak piyasada kalmıştır. Selefi Core mikromimarisine göre paralelliği ve saat frekansını arttırmış, Core mikromimarisinde İntel'in kullanmadığı fakat daha önce NetBurst'de kullanılan Hyper Threading teknolojisi Nehalem ile tekrar kullanılmaya başlamıştır. Nehalem'le birlikte Core mikromimarisinde terkedilmiş olan üçüncü seivye bir önbellek de yonganın içerisine eklenmiştir. İntel, Nehalem ile ilk defa bellek denetim birimini işlemci yongasının içine koymuş ve front-side bus dan ayırmıştır.