Çoklu kullanım

Çoklu kullanım (İngilizcesi: multithreading) ö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.

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.

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.

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.

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 v.s.
Eğer çoklu kullanım şeması tüm durum bilgisini kopyalıyorsa (ayrılmış kontrol yazmaçları, ADÖ, v.s.) 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ı.