Hyperthreading Nedir? Hyperthreading Nasıl Çalışır? Performansı Nasıl Etkiler?


Hyperthreading Nedir?

Hyperthreading, fiziksel olarak tek bir işlemci bulunması ancak bu işlemcinin bölümlere ayrılarak iki veya daha fazla mantıksal işlemci olacak şekilde kullanılmasını sağlayan teknolojidir. Diğer bir deyişle hyperthreading, tek bir işlemcinin iki işlemci gibi davranmasıdır. Bu sayede işlemci, aynı anda birden fazla iş parçacığı çalıştırarak bilgisayarın performansını artırmakta ve daha verimli bir kullanım sunmaktadır. Bilgisayarda bulunan işlemcinin çekirdek sayısı bu teknoloji ile artırılabilmektedir. Bu sayede iki çekirdekli bir işlemci dört çekirdekli, dört çekirdekli bir işlemci ise sekiz çekirdekli hale getirilmektedir. Fiziksel kaynaklar paylaşılarak mantıksal işlemci oluşturmak için mimari çoğaltılmaktadır. 

Aşağıdaki şekillerde görüldüğü üzere iki çekirdekli bir işlemcide hyperthreading teknolojisi kullanılmadığı zaman (Şekil 1) her çekirdekte tek bir mantıksal mimari görülmektedir. 
Şekil 1. Hyperthreading Teknolojisi olmayan işlemci

Diğer bir yandan hyperthreading teknolojisi kullanılan bir çift çekirdekli işlemcide (Şekil 2) her çekirdekte birbirinin kopyası olan iki mantıksal mimari görülmektedir. Yani bu işlemci dört çekirdekli gibi davranabilmektedir.

Şekil 2. Hyperthreading Teknolojisi olan işlemci

Hyperthreading Tarihi

İlk kez 1973 yılında yayınlanan bir makalede paralel mimariden ve pipeline (boru hattı) teknolojisinden bahsedilmiştir. Kısaca açıklamak gerekirse pipelining (borulaştırma), birden fazla işlemin aynı anda farklı segmentlerde gerçekleşmesi işlemidir. Sağladığı yalıtımla her segmentte farklı verilerin birbirine karışmadan işlenmesine ve farklı işlerin aynı anda gerçekleşmesine izin vermektedir. Bu mimarinin amacı daha az maliyetle daha yüksek performans elde etmektir.

Daha sonra 1982 yılında Denelcor, Inc. Heterogeneous Element Processor (HEP) yani Heterojen Element İşlemcisi ile multi-threading (çoklu iş parçacığı) mimarisini tanıtmıştır. Ancak çalışma sırasında aynı anda iki işlemi kabul edememe, farklı bir işlemin gerçekleştirilmesi için diğer işlemin boruyu terk etmesini bekleme gibi pipelining sorunlarıyla karşılaşılmış ve bu yüzden başarısız olmuştur.

Bu başarısız denemenin ardından 1994 yılında hypertreading teknolojisinin patenti Sun Microsystems’tan Kenneth Okin’e verilmiştir ancak maliyetten kaynaklı olarak bir uygulama yapılamamıştır.

Son olarak 2002 yılında Intel, x86 mimarisine sahip Xeon işlemcisinde hyperthreading teknolojisini hayata geçirmiştir. Ardından Pentium 4 işlemcisinde de bu mimariyi uygulamıştır. Beklediği verimi almayı başaran Intel, hala bu mimariye sahip işlemciler piyasaya sürmektedir.

Hyperthreading Hedefleri

Intel Xeon işlemcide bu teknolojiyi kullanırken birkaç farklı hedefi vardı. Birinci hedefi, kalıp alanının maliyetini en aza indirmekti. Mantıksal işlemciler fiziksel işlemcinin kaynaklarını kullandığı için sadece küçük birkaç yapı çoğaltılarak çok işlemcili yapının kalıp alanından %5 oranında indirgenme sağlanmış ve kar edilmiştir.

Intel’in ikinci hedefi, bir mantıksal işlemci, önbellekte meydana gelen hatalardan, bir işlemin sonucunu beklemekten veya farklı nedenlerden dolayı geçici olarak durmak zorunda kalırsa diğer mantıksal işlemcinin işlemleri yürütmeye devam etmesini sağlamaktır. İş parçacıklarının aktif giriş sayıları sınırlandırılarak veya bölümlenerek tek bir mantıksal işlemcinin tüm girdileri kullanması engellenmiş ve işin iki mantıksal işlemciye bölünerek ilerlemesi sağlanmıştır.

Üçüncü hedef ise, yalnızca bir mantıksal işlemci çalıştığında kaynakların birleşerek yine tek bir işlemci gibi çalışmasını sağlamaktır. Bu sayede diğer mantıksal işlemcinin sahip olduğu kaynaklar boş durmayıp çalışacak ve performansa katkı sağlayacaktır.

Hyperthreading Performansı Nasıl Etkiler?

Hyperthreading teknolojisi performansı artırmak için kullanılıyor olsa da bazı durumlarda performansı artırmadığı hatta azalttığı bile görülmektedir. Çalışan programa bağlı olarak sağladığı performans farklılık göstermektedir. Genel olarak %15-30 civarında bir performans artışı sağlamaktadır. Ancak performansı farklı şekilde etkileyen bazı durumlar da bulunmaktadır.

  • İnce işlemler gerektiren yoğun uygulamalarda bu teknolojinin kullanılması performansı iyileştirmemektedir çünkü bu işlemlerde CPU fazla kullanılmaktadır.
  • Giriş-Çıkış işlemlerine bağlı olarak yapılan hesaplama işlemlerinde iletişim ve hesaplama paralel olarak yapıldığında hyperthreading kullanmak performansın artmasını sağlayabilmektedir. Ancak G/Ç trafiğinin yoğunlaştığı ve bu işlemlerin hafızayı fazla kullandığı durumlarda problemler ortaya çıkabilir ve performans düşebilir.
  • Hyperthreading teknolojisinin işletim sistemi tarafından desteklenip desteklenmediği kontrol edilmelidir. İşletim sistemi tarafından desteklenmiyorsa performansta düşüş ortaya çıkmaktadır.
  • Çekirdek ve soket sayısına bağlı olarak performansta farklılıklar ortaya çıkabilmektedir. Bu durumda hyperthreading performans testi yapılarak sonuçlara bakılmalıdır.

Bu ve benzeri durumlara dikkat edilerek hyperthreading teknolojisinin kullanılıp kullanılmaması gerektiğine karar verilmelidir. Şekil 3.'te Intel Xeon 269v2 işlemcinin çift soketli sistem üzerinde hyperthreading teknolojisi etkin hale getirildiğindeki performans artışı hesaplanmıştır. Bu hesaplamaya göre sistem performansı 57.600 MHz’den 66.240 MHz’ye kadar bir performans artışı yani %15’lik bir artış göstermektedir.

Will Hyper-Threading Improve Processing Performance? - Dasher
Şekil 3. Hyperthreading teknolojisinin performansa katkısının hesaplanması 

     Hyperthreading Nasıl Çalışır?

İşlemciler doğrusal bir çalışma yapısına sahiptirler. Ancak hyperthreading ile işlemci içinde bölünmüş olan iş parçacıkları birden fazla işlemi aynı anda gerçekleştirilebilmektedir. Aynı zamanda bu ikiye bölünmede mantıksal işlemciler, fiziksel işlemcinin önbellek, kontrol birimi, CPU dahili bağlantıları, yürütme birimi gibi hemen her bölümünü paylaşmaktadırlar. Her mantıksal işlemcinin kendi gelişmiş programlanabilir kesme denetleyicisi (Advanced Programmable Interrupt Controller – APIC) bulunmaktadır. Bu sayede bir mantıksal işlemciye gönderilen işlemler sadece bu işlemci tarafından gerçekleştirilmektedir.

Şekil 4. Hyperthreading kullanılmadan ve kullanılarak çalışan işlemci

Tek işlemciye sahip mimaride doğrusal bir yapı bulunmaktadır. İşlem CPU’ya girer ve işlenmesinin ardından çıkar. Çok işlemcili mimaride iki farklı kanal vardır ve aynı anda iki farklı işlem bu kanallardan yürütülmektedir. Hyperthreading teknolojisine sahip işlemcide ise tek bir kanalda iki farklı işlem gerçekleştirilmektedir. Şekil 4'te görüldüğü gibi hyperthreading kullanıldığı zaman işlemcinin boş kalmaması ve sürekli boş kalan kısımlar kullanılarak performansın bu şekilde arttırılması sağlanmaya çalışılmaktadır.

Intel Hyper Threading · e-bergi
Şekil 5. Tek işlemcili, çok işlemcili ve hyperthreading mimarisine sahip CPU’da iş parçacıklarının işlenmesi 

Yorumlar

Bu blogdaki popüler yayınlar

Interrupt (Kesme) Nedir? Interrupt Çeşitleri Nelerdir?

Farklı İşlemci Mimarilerinde Interrupt Performansları

Cache (Önbellek) Nedir? Nasıl Çalışır? Cache Bellek Kullanımının Amacı Nedir?