Ev / Çeşitli / Hiper iş parçacığı teknolojisi için destek. Intel'den Hyper-Threading Teknolojisi. Verimlilik asla yeterli değildir

Hiper iş parçacığı teknolojisi için destek. Intel'den Hyper-Threading Teknolojisi. Verimlilik asla yeterli değildir

BIOS'u en az bir kez yapılandırmış olan kullanıcılar, muhtemelen birçokları için anlaşılmaz olan bir Intel Hyper Threading parametresinin olduğunu fark etmişlerdir. Birçoğu bu teknolojinin ne olduğunu ve ne amaçla kullanıldığını bilmiyor. Hyper Threading'in ne olduğunu ve bu desteğin kullanımını nasıl etkinleştirebileceğinizi anlamaya çalışalım. Ayrıca bir bilgisayara ne gibi avantajlar sağladığını anlamaya çalışacağız. bu ayar. Prensip olarak, burada anlaşılması zor bir şey yoktur.

Intel Hyper Threading: nedir?
Bilgisayar terminolojisi ormanının derinliklerine inmezseniz, ancak basit bir dille ifade ederseniz, o zaman bu teknoloji CPU tarafından aynı anda işlenen komutların akışını artırmak için tasarlanmıştır. Modern işlemci yongaları, kural olarak, mevcut bilgi işlem yeteneklerinin yalnızca %70'ini kullanır. Gerisi, tabiri caizse yedekte kalır. Veri akışının işlenmesine gelince, sistemin çok çekirdekli bir işlemci kullanmasına rağmen çoğu durumda yalnızca bir iş parçacığı kullanılır.

Temel çalışma prensipleri
Merkezi işlemcinin yeteneklerini artırmak için özel bir Hyper Threading teknolojisi geliştirildi. Bu teknoloji, bir komut akışını ikiye bölmeyi kolaylaştırır. Mevcut bir akışa ikinci bir akış eklemek de mümkündür. Yalnızca böyle bir akış sanaldır ve fiziksel düzeyde çalışmaz. Bu yaklaşım, işlemcinin performansını önemli ölçüde artırmanıza olanak tanır. Buna göre tüm sistem daha hızlı çalışmaya başlar. CPU performansındaki artış oldukça fazla dalgalanma gösterebilir. Bu ayrı olarak tartışılacaktır. Bununla birlikte, Hyper Threading teknolojisinin geliştiricileri, tam teşekküllü bir çekirdeğin gerisinde kaldığını iddia ediyorlar. Bazı durumlarda, bu teknolojinin kullanımı tamamen haklıdır. Hyper Threading işlemcilerinin özünü biliyorsanız, sonuç çok uzun sürmeyecektir.

Geçmiş referansı
Bu gelişmenin tarihine biraz dalalım. Hyper Threading desteği ilk olarak yalnızca Intel Pentium 4 işlemcilerde ortaya çıktı, daha sonra bu teknolojinin uygulanması Intel Core iX serisinde devam etti (burada X, işlemci serisi anlamına gelir). Bazı nedenlerden dolayı Core 2 işlemci yongaları hattında bulunmadığına dikkat edilmelidir. Doğru, o zaman verimlilikteki artış oldukça zayıftı:% 15-20 seviyesinde bir yerde. Bu, işlemcinin gerekli işlem gücüne sahip olmadığını ve oluşturulan teknolojinin pratikte zamanının ötesinde olduğunu gösterdi. Bugün, Hyper Threading teknolojisine yönelik destek, neredeyse tüm modern çiplerde zaten mevcuttur. Merkezi işlemcinin gücünü artırmak için işlemin kendisi, komutları ve verileri işlemek için yer bırakırken kristal yüzeyin yalnızca %5'ini kullanır.

Bir çatışma ve performans sorunu
Bütün bunlar kesinlikle iyidir, ancak bazı durumlarda veri işlerken işte bir yavaşlama olabilir. Bunun nedeni, çoğunlukla dal tahmin modülü olarak adlandırılan ve sürekli yeniden yüklendiğinde yetersiz önbellek boyutudur. Ana modül hakkında konuşursak, o zaman bu durum durum öyle bir şekilde gelişir ki, bazı durumlarda ilk iş parçacığı ikinciden o anda işlenemeyen veya işlenmek üzere sırada olan verileri gerektirebilir. Ayrıca, merkezi işlemci çekirdeğinin çok ciddi bir yüke sahip olduğu durumlar daha az yaygın değildir ve buna rağmen ana modül ona veri göndermeye devam eder. Kaynak yoğun çevrimiçi oyunlar gibi bazı programlar ve uygulamalar, Hyper Threading teknolojisinin kullanımı için optimizasyondan yoksun oldukları için ciddi şekilde yavaşlayabilir. Oyunlara ne olur? Kullanıcının bilgisayar sistemi, uygulamadan sunucuya veri akışını optimize etmeye çalışır. Sorun, oyunun veri akışlarını bağımsız olarak nasıl dağıtacağını bilmemesi ve her şeyi tek bir yığına dökmesidir. Genel olarak, bunun için tasarlanmayabilir. Bazen çift çekirdekli işlemcilerde performans artışı 4 çekirdekli işlemcilerden önemli ölçüde daha yüksektir. Sadece işlem gücüne sahip değiller.

BIOS'ta Hyper Threading nasıl etkinleştirilir?
Hyper Threading teknolojisinin ne olduğu hakkında biraz bilgi sahibi olduk ve gelişim tarihi hakkında bilgi sahibi olduk. Hyper Threading teknolojisinin ne olduğunu anlamaya çok yaklaştık. Bu teknoloji işlemcide kullanım için nasıl etkinleştirilir? Burada her şey oldukça basit bir şekilde yapılır. BIOS yönetim alt sistemini kullanmalısınız. Alt sisteme Del, F1, F2, F3, F8, F12, F2+Del vb. tuşları kullanılarak girilir. Bir Sony Vaio dizüstü bilgisayar kullanıyorsanız, özel ASSIST anahtarını kullanırken belirli bir girişi vardır. BIOS ayarlarında kullandığınız işlemci Hyper Threading teknolojisini destekliyorsa özel bir ayar satırı bulunmalıdır. Çoğu durumda Hyper Threading Teknolojisine, bazen de İşleve benziyor. Alt sistem geliştiricisine ve BIOS sürümüne bağlı olarak, bu parametrenin ayarı ana menüde veya gelişmiş ayarlarda bulunabilir. Bu teknolojiyi etkinleştirmek için seçenekler menüsüne girmeli ve değeri Etkin olarak ayarlamalısınız. Bundan sonra, yapılan değişiklikleri kaydetmeniz ve sistemi yeniden başlatmanız gerekir.

Hyper Threading neden yararlıdır?
Sonuç olarak Hyper Threading teknolojisi kullanımının sağladığı faydalardan bahsetmek istiyorum. Bütün bunlar ne için? Bilgi işlerken işlemci gücünü artırmak neden gereklidir? Kaynak yoğun uygulama ve programlarla çalışan kullanıcıların hiçbir şey açıklamasına gerek yoktur. Birçok kişi muhtemelen grafik, matematik, tasarım yazılım paketlerinin çalışma sürecinde çok fazla sistem kaynağı gerektirdiğini biliyor. Bu nedenle, tüm sistem o kadar çok yüklenir ki, korkunç bir şekilde yavaşlamaya başlar. Bunun olmasını önlemek için Hyper Threading desteğinin etkinleştirilmesi önerilir.

Birçok Intel işlemcisi, aşağıdakilere sahip modüller içerir: Hiper destek-Geliştiricilerin fikrine uygun olarak, çipin performansını artırmaya ve bir bütün olarak PC'yi hızlandırmaya yardımcı olması gereken iş parçacığı teknolojisi. Bir Amerikan şirketinden bu çözümün özellikleri nedir? Hyper-Threading'den nasıl yararlanabilirsiniz?

Teknoloji Temelleri

Hyper-Threading ile ilgili önemli ayrıntılara bir göz atalım. Bu teknoloji nedir? Intel tarafından geliştirildi ve ilk olarak 2001 yılında halka tanıtıldı. Yaratılışının amacı, sunucuların performansını artırmaktı. Hyper-Threading'de uygulanan ana ilke, işlemci hesaplamalarının birkaç iş parçacığına dağıtılmasıdır. Ayrıca, ilgili mikro devre tipine yalnızca bir çekirdek takılı olsa bile bu mümkündür (sırasıyla, 2 veya daha fazla varsa ve işlemcideki dişler zaten dağıtılmışsa, teknoloji bu mekanizmayı başarıyla tamamlar).

Ana PC çipinin birkaç iş parçacığı içinde çalışmasının sağlanması, hesaplamalar sırasında mimari durumların kopyaları oluşturularak gerçekleştirilir. Bu durumda, çip üzerindeki aynı kaynak seti kullanılır. Uygulama uygun yeteneği kullanıyorsa, pratik olarak önemli işlemler çok daha hızlı gerçekleştirilir. Söz konusu teknolojinin bilgisayarın giriş/çıkış sistemi olan BIOS tarafından desteklenmesi de önemlidir.

Hyper-Threading'i Etkinleştirme

Bilgisayarda kurulu işlemci uygun standardı destekliyorsa, genellikle otomatik olarak etkinleştirilir. Ancak bazı durumlarda Hyper-Threading teknolojisinin çalışması için gerekli işlemleri manuel olarak yapmanız gerekir. Nasıl etkinleştirilir? Çok basit.

Ana BIOS arayüzüne girmeniz gerekir. Bunu yapmak için, bilgisayar önyüklemesinin en başında, bazen - F2, F10, daha az sıklıkla - diğer tuşlara basmanız gerekir, ancak istenen her zaman ekranda görüntülenen metin satırlarından hemen sonra görünür. PC'yi açmak. BIOS arayüzünde, Hyper-Threading öğesini bulmanız gerekir: I / O sisteminin onu destekleyen sürümlerinde, genellikle belirgin bir yerde bulunur. Uygun seçeneği seçtikten sonra, Enter'a basmalı ve Etkin olarak işaretleyerek etkinleştirmelisiniz. Bu mod zaten ayarlanmışsa, Hyper-Threading Teknolojisi çalışıyordur. Tüm avantajlarından yararlanabilirsiniz. Ayarlarda teknolojiyi etkinleştirdikten sonra, Save and Exit Setup'ı seçerek BIOS'taki tüm girişleri kaydetmelisiniz. Bundan sonra bilgisayar, işlemci Hyper-Theading desteği ile çalışırken modunda yeniden başlatılacaktır. Benzer şekilde, Hyper-Threading devre dışı bırakılır. Bunu yapmak için, ilgili öğede başka bir seçenek seçin - Devre Dışı ve ayarları kaydedin.

Hyper-Threading'in nasıl etkinleştirileceğini ve bu teknolojinin nasıl devre dışı bırakılacağını inceledikten sonra, özelliklerine daha yakından bakalım.

Hyper Threading Destekli CPU'lar

Şirketin konseptinin uygulandığı ilk işlemci, bazı kaynaklara göre Foster MP olarak da bilinen Intel Xeon MP. Bu çip, bir dizi mimari bileşende, daha sonra söz konusu teknolojiyi de uygulayan Pentium 4'e benzer. Daha sonra, çok iş parçacıklı bilgi işlem özelliği, Prestonia çekirdeğine sahip Xeon sunucu işlemcilerinde uygulandı.

Hyper-Threading'in mevcut yaygınlığı hakkında konuşursak - hangi "profesyoneller" bunu destekliyor? Bu türün en popüler çipleri arasında Core ve Xeon ailelerine ait olanlar var. Itanium ve Atom gibi işlemcilerde de benzer algoritmaların uygulandığı bilgisi var.

Hyper-Threading, desteği ile işlemciler hakkında temel bilgileri inceledikten sonra, teknolojinin gelişim tarihi hakkında en dikkat çekici gerçeklere bakalım.

Geliştirme geçmişi

Yukarıda da belirttiğimiz gibi Intel, söz konusu konsepti 2001 yılında kamuoyuna göstermişti. Ancak teknolojinin yaratılmasındaki ilk adımlar 90'ların başında atıldı. Amerikan şirketinin mühendisleri, bir dizi işlem gerçekleştirirken PC işlemcilerinin kaynaklarının tam olarak kullanılmadığını fark ettiler.

Intel uzmanlarının hesapladığı gibi, bir kullanıcının bir bilgisayarda çalışması sırasında, mikro devre önemli aralıklarla - neredeyse çoğu zaman - yaklaşık %30 oranında aktif olarak kullanılmaz. Uzmanların bu rakamla ilgili görüşleri çok farklı - birileri açıkça hafife alındığını düşünüyor, diğerleri Amerikalı geliştiricilerin tezine tamamen katılıyor.

Ancak çoğu BT uzmanı, işlemci kapasitesinin %70'i olmasa da çok önemli bir kısmının boşta olduğu konusunda hemfikirdi.

Geliştiricilerin ana görevi

Intel, ana bilgisayar çiplerinin verimliliğini sağlamaya yönelik niteliksel olarak yeni bir yaklaşımla bu durumu düzeltmeye karar verdi. İşlemcilerin yeteneklerinin daha aktif kullanımına katkıda bulunacak bir teknoloji oluşturulması önerildi. 1996'da Intel uzmanları pratik geliştirmeye başladı.

Bir Amerikan şirketi kavramına göre, bir programdan veri işleyen işlemci, atıl kaynakları başka bir uygulamayla (veya mevcut olanın bir bileşeniyle, ancak farklı bir yapıya sahip olan ve ek kaynakların kullanılmasını gerektiren) çalışmaya yönlendirebilir. Karşılık gelen algoritma ayrıca diğer PC donanım bileşenleriyle (RAM, yonga seti ve programlar) etkili etkileşimi üstlendi.

Intel sorunu çözmeyi başardı. Başlangıçta, teknoloji Willamette olarak adlandırıldı. 1999 yılında bazı işlemcilerin mimarisine dahil edildi ve testleri başladı. Yakında teknoloji modern adını aldı - Hyper-Threading. Tam olarak ne olduğunu söylemek zor - platformda basit bir yeniden markalama veya temel ayarlamalar. Teknolojinin kamuoyunda ortaya çıkması ve çeşitli Intel işlemci modellerinde uygulanmasıyla ilgili başka gerçekleri zaten biliyoruz. Günümüzde yaygın olan geliştirme isimleri arasında Hyper-Threading Teknolojisi yer almaktadır.

Teknolojiyle uyumluluğun yönleri

İşletim sistemlerinde uygulanan Hyper-Threading teknolojisi desteği ne kadar iyi? Modern hakkında konuşuyorsak, not edilebilir. Windows sürümleri, o zaman kullanıcının Intel Hyper-Threading Teknolojisinin avantajlarını tam olarak kullanması için hiçbir sorun olmayacaktır. Tabii ki I/O sisteminin teknolojiyi desteklemesi de çok önemli – bunu yukarıda bahsetmiştik.

Yazılım ve donanım faktörleri

İşletim sisteminin eski sürümleri - Windows 98, NT ve nispeten eski XP ile ilgili olarak, Hyper-Threading ile uyumluluk için gerekli bir koşul ACPI desteğidir. İşletim sisteminde uygulanmazsa, ilgili modüller tarafından oluşturulan tüm hesaplama akışları bilgisayar tarafından tanınmayacaktır. Windows XP'nin bir bütün olarak söz konusu teknolojinin avantajlarının kullanılmasını sağladığını unutmayın. PC sahibi tarafından kullanılan uygulamalarda çoklu iş parçacığı algoritmalarının uygulanması da oldukça arzu edilir.

Bazen bir PC'ye ihtiyacınız olabilir - orijinal olarak üzerinde bulunan ve teknolojiyle uyumlu olmayan işlemciler yerine Hyper-Threading destekli işlemciler yüklerseniz. Bununla birlikte, işletim sistemlerinde olduğu gibi, kullanıcının modern bir PC'si varsa veya en azından yukarıda belirttiğimiz gibi, Core hattında uygulanmış ve uyarlanmış ilk Hyper Threading işlemcilerine karşılık gelen donanım bileşenlerine sahipse, belirli bir sorun olmayacaktır. anakartlardaki yonga setleri, yonganın ilgili işlevlerini tam olarak destekler.

Hızlanma Kriterleri

Donanım ve yazılım bileşenleri düzeyindeki bilgisayar Hyper-Threading ile uyumlu değilse, bu teknoloji teorik olarak çalışmasını bile yavaşlatabilir. Bu durum, bazı BT uzmanlarının Intel'den gelecek çözüm umutlarından şüphe duymasına neden oldu. Bunun teknolojik bir sıçrama değil, mimarisi nedeniyle PC'yi önemli ölçüde hızlandıramayan Hyper Threading kavramının altında yatan bir pazarlama hareketi olduğuna karar verdiler. Ancak eleştirmenlerin şüpheleri Intel mühendisleri tarafından hızla dağıtıldı.

Dolayısıyla, teknolojinin başarılı bir şekilde kullanılması için temel koşullar:

I/O sistemi tarafından Hyper-Threading desteği;

Anakartın ilgili tipteki işlemciyle uyumluluğu;

Bir teknolojinin işletim sistemi ve üzerinde çalışan özel uygulama tarafından desteklenmesi.

İlk iki noktada herhangi bir özel sorun olmaması gerekiyorsa, o zaman programların Hyper-Threading ile uyumluluğu açısından, yine de bazı bindirmeler olabilir. Ancak, bir uygulama örneğin çift çekirdekli işlemcilerle çalışmayı destekliyorsa, Intel'in teknolojisiyle uyumlu, neredeyse garantili olacağı belirtilebilir.

En azından, Intel Hyper Threading modülleri işlemcide çalışıyorsa, çift çekirdekli mikro devrelere uyarlanmış programların performansının yaklaşık %15-18 oranında arttığını doğrulayan çalışmalar var. Bunları nasıl devre dışı bırakacağımızı zaten biliyoruz (kullanıcının teknolojiyi kullanmanın tavsiye edilebilirliği konusunda şüpheleri olması durumunda). Ancak görünüşlerinin muhtemelen çok az somut nedeni vardır.

Hyper-Threading'in Pratik Faydası

Söz konusu teknoloji Intel üzerinde somut bir etki yarattı mı? Bu konuda farklı görüşler var. Ancak birçok kişi, Hyper-Threading teknolojisinin o kadar popüler hale geldiğini ve bu çözümün birçok sunucu sistemi üreticisi için vazgeçilmez hale geldiğini ve sıradan PC kullanıcıları tarafından da olumlu karşılandığını belirtiyor.

Donanım veri işleme

Teknolojinin ana avantajı, bir donanım formatında uygulanmasıdır. Yani, hesaplamaların ana kısmı, mikro devrenin ana çekirdeği seviyesine iletilen yazılım algoritmaları şeklinde değil, işlemcinin içinde özel modüller üzerinde gerçekleştirilecektir - bu, genel performansında bir düşüş anlamına gelecektir. bilgisayar. Genel olarak, BT uzmanlarına göre Intel mühendisleri, teknolojinin gelişiminin başlangıcında belirledikleri sorunu - işlemcinin daha verimli çalışmasını sağlamak için çözmeyi başardılar. Gerçekten de, testlerin gösterdiği gibi, kullanıcı için pratik olarak önemli olan birçok görevi çözerken, Hyper-Threading kullanımı işi önemli ölçüde hızlandırmayı mümkün kılmıştır.

Söz konusu teknoloji için destek modülleri ile donatılmış 4 mikro devre arasında, ilk değişikliklerden çok daha verimli çalıştığı belirtilebilir. Bu, büyük ölçüde PC'nin gerçek çoklu görev modunda çalışma yeteneğinde ifade edildi - birkaç farklı türde Windows uygulamaları ve bunlardan birinin sistem kaynaklarının artan tüketimi nedeniyle diğerlerinin hızının düşmesi oldukça istenmeyen bir durumdur.

Farklı görevlerin eşzamanlı çözümü

Bu nedenle, Hyper-Threading desteğine sahip işlemciler, aynı anda örneğin bir tarayıcı başlatmak, müzik çalmak ve belgelerle çalışmak için uyumlu olmayan mikro devrelerden daha iyi uyarlanmıştır. Tabii ki, tüm bu avantajlar kullanıcı tarafından pratikte ancak PC'nin yazılım ve donanım bileşenleri bu çalışma modu ile yeterince uyumluysa hissedilir.

benzer gelişmeler

Hyper-Threading, çok iş parçacıklı bilgi işlem yoluyla bilgisayar performansını artırmak için tasarlanmış tek teknoloji değildir. Analogları var.

Örneğin, IBM tarafından piyasaya sürülen POWER5 işlemcileri de çoklu iş parçacığını destekler. Yani, her biri (toplamda 2 karşılık gelen öğe kuruludur) 2 iş parçacığı içinde görevleri gerçekleştirebilir. Böylece, mikro devre aynı anda 4 hesaplama akışını işler.

AMD'nin ayrıca çok iş parçacıklı konseptler alanında harika çalışmaları var. Dolayısıyla Bulldozer mimarisinin Hyper-Threading'e benzer algoritmalar kullandığı biliniyor. AMD'nin çözümünün bir özelliği, iş parçacıklarının her birinin ayrı işlemci bloklarını işlemesidir. İkinci seviye ortak kaldığında. AMD tarafından geliştirilen ve dizüstü bilgisayarlar ve küçük PC'ler için uyarlanan Bobcat mimarisinde de benzer konseptler uygulanmaktadır.

Tabii ki, konseptin AMD, IBM ve Intel'den doğrudan analogları çok şartlı olarak kabul edilebilir. Genel olarak işlemci mimarisini tasarlama yaklaşımlarının yanı sıra. Ancak, ilgili teknolojilerde uygulanan ilkeler oldukça benzer olarak kabul edilebilir ve geliştiriciler tarafından mikro devrelerin işleyişinin verimliliğini artırma açısından belirlenen hedefler, aynı olmasa da özünde çok yakındır.

Bunlar, Intel'in sunduğu en ilginç teknolojiyle ilgili temel bilgilerdir. Ne olduğunu, Hyper-Threading'in nasıl etkinleştirileceğini veya tersine devre dışı bırakılacağını belirledik. Mesele muhtemelen donanım ve yazılım bileşenlerindeki PC'nin teknolojiyi desteklediğinden emin olarak kullanılabilecek avantajlarının pratik kullanımındadır.

Hiper İş Parçacığı (hiper iş parçacığı, 'hiper iş parçacığı', hyper threading - rus.) - şirket tarafından geliştirilen bir teknoloji Intel, işlemci çekirdeğinin birden fazla veri akışı (genellikle iki) yürütmesine izin verir. Çoğu görevde geleneksel bir işlemcinin daha fazlasını kullanmadığı bulunduğundan beri 70% tüm bilgi işlem gücünden, belirli bilgi işlem birimleri boştayken, onları başka bir iş parçacığıyla iş yüklemesine izin veren bir teknolojinin kullanılmasına karar verildi. Bu, çekirdeğin performansını artırmanıza izin verir. %10'dan %80'e göreve bağlı olarak.

Hyper-Threading'in nasıl çalıştığını görüntüleyin .

İşlemcinin basit hesaplamalar yaptığını ve aynı zamanda bir talimat bloğunun boşta olduğunu ve SIMD uzantılar.

Adresleme modülü bunu algılar ve daha fazla hesaplama için verileri oraya gönderir. Veriler belirliyse, bu bloklar onları daha yavaş yürütür, ancak veriler boşta olmaz. Veya uygun blok tarafından daha hızlı işlem için bunları önceden işleyeceklerdir. Bu ek bir performans kazancı sağlar.

Doğal olarak, sanal iş parçacığı tam teşekküllü çekirdeğe ulaşmaz, ancak bu neredeyse elde etmenizi sağlar. 100% bilgi işlem gücünün verimliliği, neredeyse tüm işlemciyi işle yüklüyor, boşta kalmasına izin vermiyor. Bütün bunlarla, HT teknolojisini uygulamak sadece yaklaşık 5% ek kalıp alanı ve performans bazen eklenebilir 50% . Bu ek alan, belirli bir anda bilgi işlem gücünün nerede kullanılabileceğini akış-hesaplayan ve oradaki ek bir adres bloğundan veri gönderen ek kayıt blokları ve dal tahmini içerir.

Teknoloji ilk kez işlemcilerde göründü Pentium 4, ancak işlemcinin kendisi yüksek bilgi işlem gücüne sahip olmadığı için performansta büyük bir artış olmadı. Büyüme en iyisiydi 15-20% ve birçok görevde işlemci, hiç olmadığı kadar yavaş çalıştı. HT.

Yavaşla teknoloji nedeniyle işlemci Hiper İş Parçacığı, şu durumlarda gerçekleşir:

  • Yeterli önbellek yok verilenler için ve döngüsel olarak yeniden başlatılarak işlemciyi yavaşlatır.
  • Veriler, şube tahmincisi tarafından doğru şekilde işlenemiyor. Esas olarak nedeniyle oluşur optimizasyon eksikliği işletim sisteminden belirli yazılım veya destek için.
  • Ayrıca nedeniyle oluşabilir veri bağımlılıkları, örneğin, ilk iş parçacığı ikinciden anında veri gerektirdiğinde, ancak henüz hazır değilken veya başka bir iş parçacığı için sırada bekliyorlarsa. Veya döngüsel veriler, hızlı işlem için belirli bloklara ihtiyaç duyar ve diğer verilerle yüklenir. Veri bağımlılığının birçok varyasyonu olabilir.
  • Çekirdek zaten yoğun bir şekilde yüklenmişse ve "yeterince akıllı değil" dal tahmin modülü hala işlemciyi yavaşlatan veriler gönderiyorsa (ilgili Pentium 4).

Sonrasında Pentium 4, Intel teknolojiyi sadece çekirdek i7 birinci nesil, seriyi atlayarak 2 .

İşlemcilerin işlem gücü, optimize edilmemiş uygulamalar için bile çok fazla zarar vermeden hiper iş parçacığının tam olarak uygulanması için yeterli hale geldi. Daha sonra, Hiper İş Parçacığı orta sınıf ve hatta bütçeli ve taşınabilir işlemcilerde ortaya çıktı. Tüm serilerde kullanılır çekirdek ben (i3; i5; i7) ve üzerinde mobil işlemciler atom(tam olarak değil). İlginç bir şekilde, çift çekirdekli işlemciler HT kullanarak dört çekirdekten daha fazla performans kazancı elde edin Hiper İş Parçacığı, üzerinde durmak 75% tam teşekküllü dört nükleer.

HyperThreading nerede faydalıdır?

Profesyonel, grafik, analitik, matematiksel ve bilimsel programlar, video ve ses editörleri, arşivleyiciler ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas &vb). Çok fazla hesaplama kullanan tüm programlar, HT kesinlikle faydalı olacaktır. Neyse ki, içinde 90% durumlarda, bu tür programlar kullanımı için iyi optimize edilmiştir.

hiper iş parçacığı sunucu sistemleri için vazgeçilmezdir. Aslında bu niş için kısmen geliştirildi. Sayesinde HT, çok sayıda görev olduğunda işlemcinin getirisini önemli ölçüde artırabilirsiniz. Her iş parçacığı, veri adresleme ve dal tahmini üzerinde yararlı bir etkiye sahip olan yarı yarıya boşaltılacaktır.

Birçok bilgisayar oyunları , varlığı ile olumsuz ilişkilidir Hiper İş Parçacığı, bu da saniyedeki kare sayısını azaltır. Bunun nedeni, optimizasyon eksikliğidir. Hiper İş Parçacığı oyunun yanından. Özellikle olağandışı, heterojen ve karmaşık verilerle çalışırken, işletim sisteminin tek bir optimizasyonu her zaman yeterli değildir.

destekleyen anakartlarda HT, hiper iş parçacığı teknolojisini her zaman devre dışı bırakabilirsiniz.

20 Ocak 2015 07:43

Hyper-Threading hakkında daha fazla bilgi

  • BT sistemleri testi,
  • Programlama

Hyper-threading teknolojisi bağlamında bellek performansını değerlendirmenin gerekli olduğu bir zaman vardı. Etkisinin her zaman olumlu olmadığı sonucuna vardık. Boş zamanın kuantumu ortaya çıktığında, araştırmaya devam etme ve devam eden süreçleri makine döngüleri ve bitlerinin doğruluğu ile birlikte düşünme arzusu vardı. yazılım kendi gelişimi.

Araştırılan Platform

Deneylerin amacı - ASUS dizüstü bilgisayar Intel Core i7-4700HQ işlemcili N750JK. Saat hızı 2,4 GHz'dir ve Intel Turbo Boost modu ile 3.4 GHz'e yükseltilir. 16 gigabayt yüklü rasgele erişim belleğiÇift kanal modunda çalışan DDR3-1600 (PC3-12800). İşletim sistemi - Microsoft Windows 8.1 64 bit.

Şekil.1 İncelenen platformun konfigürasyonu.

İncelenen platformun işlemcisi, Hyper-Threading teknolojisi etkinleştirildiğinde, 8 iş parçacığı veya mantıksal işlemciler için donanım desteği sağlayan 4 çekirdek içerir. Platform üretici yazılımı, bu bilgiyi MADT (Çoklu APIC Açıklama Tablosu) ACPI tablosu aracılığıyla işletim sistemine iletir. Platform yalnızca bir RAM denetleyicisi içerdiğinden, işlemci çekirdeklerinin bellek denetleyicilerine yakınlığını bildiren bir SRAT (Sistem Kaynağı Yakınlık Tablosu) yoktur. Açıkçası, söz konusu dizüstü bilgisayar bir NUMA platformu değil, ancak işletim sistemi, birleştirme amacıyla, NUMA Nodes = 1 satırıyla gösterildiği gibi, onu tek etki alanına sahip bir NUMA sistemi olarak kabul eder. Deneylerimiz için temel olan gerçek, birinci seviye veri önbelleğinin her biri için 32 kilobayt boyutunda olmasıdır. dört çekirdekten. Aynı çekirdeği paylaşan iki mantıksal işlemci, L1 ve L2 önbelleklerini paylaşır.

İncelenen operasyon

Veri bloğu okuma hızının boyutuna bağımlılığını araştıracağız. Bunu yapmak için en verimli yöntemi seçeceğiz, yani VMOVAPD AVX komutunu kullanarak 256-bit işlenenleri okuyacağız. Grafiklerde, X ekseni blok boyutunu ve Y ekseni okuma hızını gösterir. L1 önbelleğinin boyutuna karşılık gelen X noktasının yakınında, işlenmekte olan blok önbellekten çıktıktan sonra performansın düşmesi gerektiğinden bir bükülme noktası görmeyi bekliyoruz. Testimizde, çoklu iş parçacığı durumunda, başlatılan 16 iş parçacığının her biri ayrı bir adres aralığı ile çalışır. Bir uygulama içinde Hyper-Threading teknolojisini kontrol etmek için her bir iş parçacığı, her mantıksal işlemcinin bir bite karşılık geldiği bir maske ayarlayan SetThreadAffinityMask API işlevini kullanır. Bitin tek bir değeri, belirtilen işlemcinin belirtilen iş parçacığı tarafından kullanılmasına izin verir, sıfır değeri bunu yasaklar. İncelenen platformun 8 mantıksal işlemcisi için, 11111111b maskesi tüm işlemcilerin kullanılmasına izin verir (Hyper-Threading etkin), 01010101b maskesi her çekirdekte bir mantıksal işlemcinin kullanılmasına izin verir (Hyper-Threading devre dışı).

Grafiklerde aşağıdaki kısaltmalar kullanılmıştır:

MBPS (Saniyede Megabayt)saniyede megabayt olarak okuma hızını engelle;

CPI (Talimat Başına Saat)talimat başına döngü sayısı;

TSC (Zaman Damgası Sayacı)işlemci döngü sayacı.

Not: TSC kaydının saat hızı, Turbo Boost modunda çalışırken işlemcinin saat hızıyla eşleşmeyebilir. Sonuçlar yorumlanırken bu dikkate alınmalıdır.

Grafiklerin sağ tarafında, program iş parçacıklarının her birinde veya bu kodun ilk 128 baytında gerçekleştirilen hedef işlemin döngüsünün gövdesini oluşturan talimatların onaltılık bir dökümü görselleştirilir.

1 numaralı deneyim. Bir iş parçacığı



İncir. 2 Tek iş parçacığında okuma

Maksimum hız saniyede 213563 megabayttır. Bükülme noktası, yaklaşık 32 kilobaytlık bir blok boyutunda meydana gelir.

2 numaralı deneyim. 4 işlemcide 16 iş parçacığı, Hyper-Threading devre dışı



Şekil 3 On altı iş parçacığında okuma. Kullanılan mantıksal işlemci sayısı dört

Hiper iş parçacığı devre dışı bırakıldı. Maksimum hız saniyede 797598 megabayttır. Bükülme noktası, yaklaşık 32 kilobaytlık bir blok boyutunda meydana gelir. Beklendiği gibi, tek bir iş parçacığı ile okumaya kıyasla, çalışan çekirdek sayısı açısından hız yaklaşık 4 kat arttı.

3 numaralı deneyim. 8 işlemcide 16 iş parçacığı, Hyper-Threading etkin



Şekil 4 On altı iş parçacığında okuma. Kullanılan mantıksal işlemci sayısı sekizdir.

Hiper iş parçacığı etkinleştirildi. Hyper-Threading'in dahil edilmesinin bir sonucu olarak saniyede 800722 megabaytlık maksimum hız neredeyse artmadı. Büyük eksi, bükülme noktasının yaklaşık 16 kilobaytlık bir blok boyutunda gerçekleşmesidir. Hyper-Threading'i etkinleştirmek maksimum hızı biraz artırdı, ancak şimdi hız düşüşü blok boyutunun yarısında - yaklaşık 16 kilobaytta gerçekleşiyor, bu nedenle ortalama hız önemli ölçüde düştü. Bu şaşırtıcı değil, her çekirdeğin kendi L1 önbelleği varken aynı çekirdekteki mantıksal işlemciler bunu paylaşıyor.

sonuçlar

İncelenen işlem, çok çekirdekli bir işlemci üzerinde oldukça iyi ölçeklenir. Bunun nedenleri, her bir çekirdeğin birinci ve ikinci düzeylerde kendi önbellek belleğini içermesi, hedef bloğun boyutunun önbellek belleğinin boyutuyla karşılaştırılabilir olması ve iş parçacıklarının her birinin kendi adres aralığıyla çalışmasıdır. Akademik amaçlar için, gerçek uygulamaların genellikle ideal optimizasyondan uzak olduğunu fark ederek, sentetik bir testte bu tür koşulları oluşturduk. Ancak Hyper-Threading'in dahil edilmesi, bu koşullar altında bile, tepe hızında hafif bir artışla olumsuz bir etkiye sahipti, boyutu 16 ila 32 arasında olan blokların işlem hızında önemli bir kayıp var. kilobayt.

Tek işlemcili Xeon sistemlerinin kullanımının anlamsız olduğunu yazdık, çünkü daha yüksek bir fiyata performansları aynı frekanstaki bir Pentium 4 ile aynı olacaktır. Şimdi, daha yakından bir incelemeden sonra, bu ifadenin muhtemelen biraz değiştirilmesi gerekecek. Prestonia çekirdekli Intel Xeon'da uygulanan Hyper-Threading teknolojisi gerçekten işe yarıyor ve oldukça somut bir etki sağlıyor. Kullanırken de birçok soru olmasına rağmen ...

performans ver

"Daha hızlı, daha da hızlı ...". Performans yarışı yıllardır sürüyor ve bazen bilgisayar bileşenlerinden hangisinin daha hızlı hızlandığını söylemek bile zor. Bunun için her geçen gün daha fazla yeni yollar icat edilmekte ve dahası, bu çığ benzeri sürece daha yetenekli emek ve yüksek kaliteli beyinler yatırılmaktadır.

Performansta sürekli bir artış elbette gereklidir. En azından karlı bir iştir ve kullanıcıları dünün "süper performanslı CPU'sunu" yarının "daha da süper..."ine yükseltmeye teşvik etmenin her zaman güzel bir yolu vardır. Örneğin, eşzamanlı konuşma tanıma ve başka bir dile eşzamanlı çeviri - bu herkesin hayali değil mi? Veya neredeyse "sinema" kalitesinde alışılmadık derecede gerçekçi oyunlar (tamamen dikkati çeken ve bazen ruhta ciddi değişikliklere yol açan) - genç ve yaşlı birçok oyuncunun arzusu bu değil mi?

Ancak bu durumda teknik konulara odaklanarak pazarlama yönlerini bir kenara bırakalım. Üstelik, her şey o kadar kasvetli değil: her şeyin daha fazla olduğu acil görevler (sunucu uygulamaları, bilimsel hesaplamalar, modelleme vb.) yüksek performans, özellikle merkezi işlem birimleri gerçekten gerekli.

Peki performanslarını artırmanın yolları nelerdir?

Saat artırma. Daha fazla "inceltilebilir" teknolojik süreç ve frekansı artırın. Ancak, bildiğiniz gibi, bu kolay değildir ve ısı dağılımı ile ilgili sorunlar gibi her türlü yan etki ile doludur.

İşlemci kaynaklarını artırma- örneğin, önbelleğin hacmini artırmak, yeni bloklar eklemek (Yürütme Birimleri). Bütün bunlar, transistör sayısında, işlemcinin karmaşıklığında, kristal alanında bir artış ve dolayısıyla maliyette bir artış gerektirir.

Ek olarak, önceki iki yöntem, kural olarak, üretkenlikte hiçbir şekilde doğrusal bir artış sağlamaz. Bu, Pentium 4 örneğinde iyi bilinmektedir: dal tahminindeki ve kesintilerdeki hatalar, genel performansı büyük ölçüde etkileyen uzun bir işlem hattının sıfırlanmasına neden olur.

çoklu işlem. Birden çok CPU'yu kurmak ve aralarında iş dağıtmak genellikle oldukça verimlidir. Ancak bu yaklaşım çok ucuz değil - her ek işlemci sistemin maliyetini artırır ve ikili bir anakart normal bir anakarttan çok daha pahalıdır (dört veya daha fazla CPU'yu destekleyen anakartlardan bahsetmiyorum bile). Ek olarak, tüm uygulamalar maliyeti haklı çıkaracak kadar çoklu işlemden yararlanmaz.

"Saf" çoklu işlemeye ek olarak, uygulama yürütmeyi hızlandırmanıza izin veren birkaç "ara" seçenek vardır:

Çip Çoklu İşleme (CMP)- iki işlemci çekirdeği, ortak veya ayrı bir önbellek kullanılarak fiziksel olarak aynı çip üzerinde bulunur. Doğal olarak, kristalin boyutunun oldukça büyük olduğu ortaya çıkıyor ve bu, maliyeti etkileyemez ancak etkileyemez. Bu "çift" CPU'ların birçoğunun çok işlemcili bir sistemde de çalışabileceğini unutmayın.

Zaman Dilimli Çoklu İş Parçacığı. İşlemci, program dizileri arasında sabit aralıklarla geçiş yapar. Özellikle bir süreç bekliyorsa, ek yük bazen oldukça ağır olabilir.

Anahtarlamalı Olay Çoklu İş Parçacığı. Çok sayıda sunucu uygulamaları için tipik olan "önbellek eksikleri" (önbellek eksikleri) gibi uzun duraklamalar meydana geldiğinde görev değiştirme. Bu durumda, nispeten yavaş bellekten önbelleğe veri yüklemeyi bekleyen bir işlem askıya alınır ve diğer işlemler için CPU kaynaklarını serbest bırakır. Ancak, Zaman Dilimli Çoklu İş Parçacığı gibi Anahtarlamalı Olay Çoklu İş Parçacığı, özellikle dal tahminindeki hatalar, talimat bağımlılıkları vb. nedeniyle işlemci kaynaklarının her zaman optimum kullanımını sağlamaz.

Eşzamanlı Çoklu Kullanım. Bu durumda, program iş parçacıkları aynı işlemci üzerinde "eşzamanlı olarak", yani aralarında geçiş yapmadan yürütülür. CPU kaynakları, "kullanmıyorsanız başkasına verin" ilkesine göre dinamik olarak dağıtılır. altında yatan bu yaklaşımdır. Intel teknolojileriŞimdi döneceğimiz Hyper-Threading.

Hyper-Threading Nasıl Çalışır?

Bildiğiniz gibi, mevcut "bilgisayar paradigması" şunları içerir: çok iş parçacıklı bilgi işlem. Bu, yalnızca başlangıçta böyle bir konseptin var olduğu sunucular için değil, aynı zamanda iş istasyonları ve masaüstü sistemleri için de geçerlidir. İş parçacıkları aynı veya farklı uygulamalara ait olabilir, ancak hemen hemen her zaman birden fazla aktif iş parçacığı vardır (bunu görmek için Windows 2000/XP'de Görev Yöneticisini açıp iş parçacığı sayısının ekranını açmanız yeterlidir). Aynı zamanda, geleneksel bir işlemci aynı anda yalnızca bir iş parçacığını yürütebilir ve bunlar arasında sürekli geçiş yapmak zorunda kalır.

Hyper-Threading teknolojisi ilk kez, üzerinde "çalıştığı" Intel Xeon MP (Foster MP) işlemcide uygulandı. IDF Spring 2002'de resmi olarak sunulan Xeon MP'nin Pentium 4 Willamette çekirdeği kullandığını, 256 KB L2 önbellek ve 512 KB/1 MB L3 önbellek içerdiğini ve 4 işlemcili yapılandırmaları desteklediğini hatırlayın. Hyper-Threading desteği, pazara Xeon MP'den biraz daha erken giren iş istasyonları için Intel Xeon işlemcisinde (Prestonia çekirdeği, 512 KB L2 önbellek) de mevcuttur. Okurlarımız Intel Xeon'daki çift işlemcili yapılandırmalara zaten aşinadır, bu nedenle bu CPU'ları kullanarak Hyper-Threading olanaklarını hem teorik hem de pratik olarak örnek olarak ele alacağız. Olursa olsun, "basit" Xeon, 4 işlemcili sistemlerde Xeon MP'den daha sıradan ve sindirilebilir...

Hyper-Threading'in çalışma prensibi, program kodu yürütülürken herhangi bir zamanda işlemci kaynaklarının yalnızca bir kısmının kullanılması gerçeğine dayanmaktadır. Kullanılmayan kaynaklar iş ile de yüklenebilir - örneğin, paralel yürütme için bir uygulama daha (veya aynı uygulamanın başka bir iş parçacığı) kullanılabilir. Bir fiziksel Intel Xeon işlemcide, CPU'nun bilgi işlem kaynaklarını paylaşan iki mantıksal işlemci (LP - Mantıksal İşlemci) oluşturulur. İşletim sistemi ve uygulamalar tam olarak iki CPU'yu "görür" ve tam teşekküllü iki işlemcili bir sistemde olduğu gibi işi aralarında dağıtabilir.

Hyper-Threading uygulamasının hedeflerinden biri, normal bir CPU ile aynı hızda yalnızca bir aktif iş parçacığının çalışmasına izin vermektir. Bunu yapmak için işlemcinin iki ana çalışma modu vardır: Tek Görev (ST) ve Çoklu Görev (MT). ST modunda, yalnızca bir mantıksal işlemci etkindir ve mevcut kaynakları bölünmemiş olarak kullanır (ST0 ve ST1 modları); diğer LP ise HALT komutu ile durdurulur. İkinci bir program dizisi göründüğünde, boştaki mantıksal işlemci (bir kesme yoluyla) etkinleştirilir ve fiziksel CPU, MT moduna geçirilir. Kullanılmayan LP'leri HALT komutuyla durdurmak, Hyper-Threading olmadığında olduğu gibi bir iş parçacığının aynı hızlı yürütülmesinden nihai olarak sorumlu olan işletim sisteminin sorumluluğundadır.

İki LP'nin her biri için, çeşitli türlerdeki kayıtların durumunu içeren Mimari Durumu (AS) saklanır - genel amaçlı, kontrol, APIC ve hizmet. Her LP'nin kendi APIC'si (kesme denetleyicisi) ve sekiz IA-32 genel amaçlı kayıt ile 128 arasındaki yazışmayı izleyen Kayıt Takma Adı Tablosu (RAT) kavramının tanıtıldığı doğru çalışma için bir dizi kayıt vardır. fiziksel CPU kayıtları (her LP için bir RAT).

İki iş parçacığı çalıştırırken, karşılık gelen iki Sonraki Yönerge İşaretçisi seti desteklenir. Talimatların çoğu, kodu çözülmüş biçimde saklandıkları İzleme Önbelleğinden (TC) alınır ve iki aktif LP, her saat sırayla TC'ye erişir. Aynı zamanda, sadece bir LP aktif olduğunda, saatleri araya girmeden TC'ye özel erişim kazanır. Benzer şekilde, Mikrokod ROM'a erişim gerçekleşir. Talimat önbelleğinde gerekli talimatların yokluğunda etkinleştirilen ITLB blokları (Yönerge Çevirisi Bakılan Tampon) çoğaltılır ve her biri kendi iş parçacığı için talimatlar sunar. IA-32 Komut Kod Çözme talimatı kod çözme bloğu paylaşılır ve her iki akış için talimat kod çözme gerektiğinde, onlara birer birer (yine her döngüde) hizmet eder. Uop Queue ve Allocator blokları, her LP için ayrılan öğelerin yarısı ile ikiye bölünür. 5 adetlik zamanlayıcılar, LP0 / LP1'e ait olmalarına rağmen kodu çözülmüş komutların (Uops) kuyruklarını ve gerekli Yürütme Birimleri tarafından yürütülecek doğrudan komutları - birincinin yürütmeye hazır olup olmamasına ve ikincisinin kullanılabilirliğine bağlı olarak işler. Tüm seviyelerdeki önbellekler (Xeon için L1/L2 ve Xeon MP için L3) tamamen iki LP arasında paylaşılır, ancak veri bütünlüğünü sağlamak için DTLB'deki (Veri Çevirisi Bakılan Tampon) girişler, mantıksal işlemci kimlikleri biçimi.

Böylece, her iki mantıksal CPU'nun talimatları, dört sınıfa ayrılan bir fiziksel işlemcinin kaynakları üzerinde aynı anda yürütülebilir:

  • çoğaltılmış (Çoğaltılmış);
  • tamamen paylaşılan (Tamamen Paylaşılan);
  • öğelerin tanımlayıcıları ile (Giriş Etiketli);
  • ST0/ST1 veya MT'nin çalışma moduna bağlı olarak dinamik olarak bölünmüş (Bölünmüş).

Ancak, çok işlemcili sistemlerde hızlandırılan uygulamaların çoğu, herhangi bir değişiklik yapılmadan Hyper-Threading'in etkin olduğu bir CPU'da da hızlandırılabilir. Ancak sorunlar da vardır: örneğin, bir işlem bekleme döngüsündeyse, fiziksel CPU'nun tüm kaynaklarını alarak ikinci LP'nin çalışmasını engelleyebilir. Bu nedenle, Hyper-Threading kullanırken performans bazen düşebilir (%20'ye kadar). Bunu önlemek için Intel, boş bekleme döngüleri (Pentium 4'ten başlayarak IA-32'de sunulmuştur) yerine PAUSE komutunun kullanılmasını önerir. Derleme sırasında kodun otomatik ve yarı otomatik optimizasyonu konusunda da ciddi çalışmalar devam etmektedir - örneğin, Intel OpenMP C ++ / Fortran Derleyicileri () serisinin derleyicileri bu konuda önemli ilerleme kaydetmiştir.

Intel'e göre Hyper-Threading'in ilk uygulamasının bir başka amacı, performansı önemli ölçüde artırırken transistör sayısı, kalıp alanı ve güç tüketimindeki büyümeyi en aza indirmekti. Bu taahhüdün ilk kısmı zaten yerine getirildi: Xeon/Xeon MP'ye Hyper-Threading desteğinin eklenmesi, kalıp alanını ve güç tüketimini %5'ten daha az artırdı. İkinci bölümde (performans) ne oldu, henüz kontrol etmedik.

pratik kısım

Açık nedenlerden dolayı, 4 işlemcili sunucu sistemlerini Hyper-Threading etkinken Xeon MP üzerinde test etmedik. İlk olarak, oldukça emek yoğun. İkincisi, böyle bir başarıya karar verirsek, resmi duyurunun üzerinden bir aydan kısa bir süre sonra, bu pahalı ekipmanı şimdi almak kesinlikle gerçekçi değil. Bu nedenle, bu işlemcilerin ilk testlerinin yapıldığı iki Intel Xeon 2.2 GHz ile kendimizi aynı sistemle sınırlamaya karar verildi (makalenin başındaki bağlantıya bakın). Sistem şuna dayanıyordu: anakart Supermicro P4DC6+ ( Intel yonga seti i860), 512 MB RDRAM, GeForce3 yongasında bir ekran kartı (64 MB DDR, Detonator 21.85 sürücüleri) içeriyordu, HDD batı dijital WD300BB ve 6X DVD-ROM; İşletim sistemi olarak Windows 2000 Professional SP2 kullanıldı.

İlk olarak, birkaç genel izlenim. Başlangıçta Prestonia çekirdekli bir Xeon kurarken sistem BIOS'u iki CPU'nun varlığı hakkında bir mesaj görüntüler; iki işlemci takılıysa, kullanıcı dört CPU hakkında bir mesaj görür. İşletim sistemi normalde "her iki işlemciyi" tanır, ancak yalnızca iki koşul karşılanırsa.

Birincisi, CMOS Kurulumunda, ikincisi BIOS sürümleri Supermicro P4DCxx kartları, Hyper-Threading'i Etkinleştir öğesini tanıttı; bu öğe olmadan işletim sistemi yalnızca fiziksel işlemciyi/işlemcileri tanıyacaktır. İkinci olarak, ACPI, işletim sistemine ek mantıksal işlemciler olduğunu söylemek için kullanılır. Bu nedenle, Hyper-Threading'i etkinleştirmek için, CMOS Kurulumunda ACPI seçeneği etkinleştirilmelidir ve işletim sisteminin kendisi için ACPI destekli HAL (Donanım Soyutlama Katmanı) da yüklenmelidir. Neyse ki, Windows 2000'de HAL'ı Standart PC'den (veya MPS Tek-/Çok İşlemcili PC) ACPI Tek-/Çok İşlemcili PC'ye değiştirmek kolaydır - aygıt yöneticisinde "bilgisayar sürücüsünü" değiştirerek. Aynı zamanda, Windows XP için ACPI HAL'a geçişin tek yasal yolu, sistemi mevcut kurulumun üzerine yeniden yüklemektir.

Ancak şimdi tüm hazırlıklar yapıldı ve Windows 2000 Pro'muz zaten iki işlemcili bir sistemde çalıştığına inanıyor (aslında yalnızca bir işlemci kurulu olmasına rağmen). Şimdi, her zamanki gibi, testin hedeflerine karar verme zamanı. Yani istiyoruz:

  • Hyper-Threading'in çeşitli sınıfların uygulamalarının performansı üzerindeki etkisini değerlendirin.
  • Bu etkiyi ikinci bir işlemci takmanın etkisiyle karşılaştırın.
  • İkinci LP boştayken kaynakların etkin mantıksal işlemciye ne kadar "oldukça" verildiğini kontrol edin.

Performansı değerlendirmek için, iş istasyonu sistemlerinin test edilmesinde kullanılan, okuyucuların zaten aşina olduğu bir dizi uygulamayı aldık. Belki de sondan başlayalım ve mantıksal CPU'ların "eşitliğini" kontrol edelim. Her şey son derece basit: önce Hyper-Threading devre dışı bırakılmış bir işlemci üzerinde testler yapıyoruz ve ardından Hyper-Threading etkinken ve iki mantıksal CPU'dan yalnızca birini kullanarak (Görev Yöneticisini kullanarak) işlemi tekrarlıyoruz. Bu durumda sadece göreceli değerlerle ilgilendiğimiz için, tüm testlerin sonuçları "daha büyük daha iyidir" formuna indirgenir ve normalleştirilir (Hyper-Threading olmayan tek işlemcili bir sistemin göstergeleri bir birim olarak alınır).

Gördüğünüz gibi, Intel'in vaatleri burada yerine getiriliyor: yalnızca bir aktif iş parçacığıyla, iki LP'nin her birinin performansı, Hyper-Threading'siz fiziksel bir CPU'nun performansına tam olarak eşittir. Boşta kalan LP (hem LP0 hem de LP1) fiilen askıya alınır ve elde edilen sonuçlardan değerlendirilebildiği kadarıyla paylaşılan kaynaklar tamamen aktif LP'nin kullanımına aktarılır.

Bu nedenle, ilk sonucu çıkarıyoruz: iki mantıksal işlemci aslında haklar bakımından eşittir ve Hyper-Threading'i etkinleştirmek bir iş parçacığının çalışmasına "müdahale etmez" (ki bu kendi içinde kötü değildir). Şimdi, bu katılımın "yardımcı olup olmadığını" ve eğer öyleyse, nerede ve nasıl olduğunu görelim.

render. 3D Studio MAX 4.26, Lightwave 7b ve A|W Maya 4.0.1 3D modelleme paketlerindeki dört testin sonuçları, benzerliklerinden dolayı tek bir diyagramda birleştirilmiştir.

Dört durumda da (Lightwave - iki farklı sahne için), Hyper-Threading devre dışı bırakılmış bir işlemcinin varlığında CPU yükü neredeyse sürekli olarak %100'de tutulur. Ancak, Hyper-Threading etkinleştirildiğinde, sahnelerin hesaplanması hızlanır (sonuç olarak, CPU kullanımının %100'ün üzerinde olduğu konusunda bir şakamız bile oldu). Üç testte, Hyper-Threading'den %14-18'lik bir performans artışı görebiliriz - bir yandan, ikinci CPU'ya kıyasla çok fazla değil, ancak diğer yandan, "ücretsiz" etki göz önüne alındığında oldukça iyi bu etkinin. Lightwave ile yapılan iki testten birinde, performans kazancı neredeyse sıfırdır (görünüşe göre, bu uygulamanın tuhaflıklarla dolu özgünlüğü etkiler). Ancak hiçbir yerde olumsuz bir sonuç yok ve diğer üç vakada gözle görülür bir artış cesaret verici. Ve bu, paralel oluşturma işlemlerinin benzer işler yapmasına ve elbette fiziksel CPU'nun kaynaklarını aynı anda en iyi şekilde kullanamamasına rağmen.

Photoshop ve MP3 kodlaması. GOGO-no-coda 2.39c codec bileşeni, SMP'yi destekleyen birkaç koddan biridir ve çift işlemciden %34'lük bir performans artışı gösterir. Aynı zamanda, bu durumda Hyper-Threading'in etkisi sıfırdır (%3'lük bir farkı anlamlı olarak görmüyoruz). Ancak Photoshop 6.0.1 (çok sayıda komut ve filtreden oluşan bir komut dosyası) ile yapılan testte, Hyper-Threading etkinleştirildiğinde bir yavaşlama görebilirsiniz, ancak bu durumda ikinci fiziksel CPU %12 performans ekler. İşte, aslında, Hyper-Threading'in performansta düşüşe neden olduğu ilk durum ...

Profesyonel OpenGL. SPEC ViewPerf ve diğer birçok OpenGL uygulamasının SMP sistemlerinde genellikle yavaşladığı uzun zamandır bilinmektedir.

OpenGL ve çift işlemci: neden arkadaş değiller

Makalelerde birçok kez, profesyonel OpenGL testleri gerçekleştirirken çift işlemcili platformların tek işlemcili platformlara göre nadiren önemli bir avantaj gösterdiği gerçeğine okuyucuların dikkatini çektik. Ayrıca, ikinci bir işlemci takarken, aksine, dinamik üç boyutlu sahneler oluştururken sistem performansını kötüleştiren durumlar vardır.

Doğal olarak, bu tuhaflığı sadece biz fark etmedik. Bazı testçiler bu gerçeği sessizce görmezden geldiler - örneğin, SPEC ViewPerf karşılaştırma sonuçlarını yalnızca iki işlemcili konfigürasyonlar için sağlayarak ve böylece "iki işlemcili bir sistem neden daha yavaş?" açıklamalarından kaçınarak. Diğerleri, önbellek tutarlılığı, onu koruma ihtiyacı, sonuçta ortaya çıkan ek yük vb. hakkında her türlü hayali varsayımda bulundu. Ve bazı nedenlerden dolayı, örneğin, işlemcilerin pencereli OpenGL oluşturmada tutarlılığı tam olarak izlemek için sabırsız olmalarına kimse şaşırmadı ("hesaplamalı" özünde, diğer herhangi bir hesaplama görevinden çok farklı değil).

Aslında açıklama bize göre çok daha basit. Bildiğiniz gibi, bir uygulama şu durumlarda iki işlemcide tek işlemciden daha hızlı çalışabilir:

  • ikiden fazla veya daha fazla aynı anda çalışan program iş parçacığı (iş parçacığı) var;
  • bu iş parçacıkları birbirlerinin yürütülmesine müdahale etmez - örneğin, harici sürücü veya ağ arabirimi gibi paylaşılan bir kaynak için rekabet etmezler.

Şimdi, iki iş parçacığı tarafından gerçekleştirilen OpenGL oluşturmanın nasıl göründüğüne basitleştirilmiş bir göz atalım. Bir uygulama, iki işlemciyi "görerek", iki OpenGL oluşturma iş parçacığı oluşturursa, her biri için OpenGL kurallarına göre kendi gl bağlamı oluşturulur. Buna göre, her iş parçacığı kendi gl bağlamına dönüştürülür. Ancak sorun şu ki, görüntünün görüntülendiği pencere için herhangi bir zamanda yalnızca bir gl bağlamı geçerli olabilir. Buna göre, bu durumda iplikler basitçe "tek tek" oluşturulan görüntüyü pencereye çıkararak bağlamlarını dönüşümlü olarak güncel hale getirir. Söylemeye gerek yok, bu "bağlam serpiştirme" ek yük açısından çok maliyetli olabilir mi?

Ayrıca, örnek olarak, OpenGL sahnelerini gösteren çeşitli uygulamalarda iki CPU kullanımının grafiklerini vereceğiz. Tüm ölçümler, aşağıdaki konfigürasyona sahip bir platform üzerinde gerçekleştirilmiştir:

  • bir veya iki Intel Xeon 2.2 GHz (Hyper-Threading devre dışı);
  • 512 MB RDRAM;
  • Supermicro P4DC6+ anakart;
  • ASUS V8200 Deluxe ekran kartı (NVidia GeForce3, 64 MB DDR SDRAM, Detonator 21.85 sürücüleri);
  • Windows 2000 Professional SP2;
  • video modu 1280x1024x32 bpp, 85 Hz, Vsync devre dışı.

Mavi ve kırmızı sırasıyla CPU 0 ve CPU 1 yük grafikleridir. Ortadaki çizgi, son CPU Kullanım grafiğidir. Üç grafik, 3D Studio MAX 4.26'dan iki sahneye ve SPEC ViewPerf testinin (AWadvs-04) bir kısmına karşılık gelir.


CPU Kullanımı: Animasyon 3D Studio MAX 4.26 - Anibal (manipülatörlü).max


CPU Kullanımı: Animasyon 3D Studio MAX 4.26 - Rabbit.max


CPU Kullanımı: SPEC ViewPerf 6.1.2 - AWadvs-04

Aynı model, OpenGL kullanan bir dizi başka uygulamada tekrarlanır. İki işlemci hiç uğraşmıyor ve toplam CPU Kullanımı %50-60 seviyelerinde. Aynı zamanda tek işlemcili bir sistem için tüm bu durumlarda CPU Kullanımı güvenle %100 seviyesinde tutulmaktadır.

Bu nedenle, birçok OpenGL uygulamasının ikili sistemlerde çok daha hızlı olmaması şaşırtıcı değildir. Eh, bazen yavaşlamalarının bile bize göre tamamen mantıklı bir açıklaması var.

İki mantıksal CPU ile performans düşüşünün daha da önemli olduğunu söyleyebiliriz, ki bu oldukça anlaşılırdır: iki mantıksal işlemci birbirine iki fiziksel işlemci gibi müdahale eder. Ancak genel performansları elbette bu durumda daha düşük çıkıyor, bu nedenle Hyper-Threading etkinleştirildiğinde, sadece iki fiziksel CPU çalışırken olduğundan daha fazla düşüyor. Sonuç tahmin edilebilir ve sonuç basittir: Hyper-Threading, "gerçek" SMP gibi, bazen OpenGL için kontrendikedir.

CAD uygulamaları. Önceki sonuç, SolidEdge V10 için SPECapc ve SolidWorks için SPECapc olmak üzere iki CAD testinin sonuçlarıyla doğrulanır. Hyper-Threading için bu testlerin grafik performansı benzerdir (ancak SolidEdge V10 için bir SMP sistemi durumunda sonuç biraz daha yüksektir). Ancak işlemciyi yükleyen CPU_Score testlerinin sonuçları şunu düşündürüyor: SMP'den %5-10 artış ve Hyper-Threading'den %14-19 yavaşlama.

Ancak günün sonunda Intel, bazı durumlarda, örneğin boş bekleme döngüleri kullanıldığında, Hyper-Threading ile performans düşüşü potansiyelini dürüstçe kabul ediyor. Sadece sebebin bu olduğunu varsayabiliriz (SolidEdge ve SolidWorks kodunun ayrıntılı bir incelemesi bu makalenin kapsamı dışındadır). Sonuçta herkes, kanıtlanmış güvenilirliği tercih eden ve programlamadaki yeni eğilimleri dikkate alarak kodu yeniden yazmak için acele etmeyen CAD uygulama geliştiricilerinin muhafazakarlığını bilir.

Özetleme veya "Dikkat, doğru soru"

Hyper-Threading çalışıyor, buna hiç şüphe yok. Elbette, teknoloji evrensel değildir: Hyper-Threading'in "kötüleştiği" uygulamalar vardır ve bu teknolojinin yayılması durumunda, bunların değiştirilmesi arzu edilir. Ama aynı şey MMX ve SSE'ye de olmadı ve SSE2'ye de olmaya devam etmedi mi?..

Ancak bu, bu teknolojinin gerçeklerimize uygulanabilirliği sorusunu gündeme getiriyor. Xeon'da Hyper-Threading ile tek işlemcili bir sistem seçeneğini derhal kaldıracağız (veya ikinci bir işlemci satın alma beklentisiyle bunu yalnızca geçici bir sistem olarak kabul edeceğiz): %30'luk bir performans artışı bile fiyatı hiçbir şekilde haklı çıkarmaz. yol - o zaman normal bir Pentium 4 satın almak daha iyidir. Kalan CPU sayısı iki veya daha fazladır.

Şimdi iki işlemcili bir Xeon sistemi satın aldığımızı düşünelim (örneğin, Windows 2000/XP Professional ile). İki CPU kurulu, Hyper-Threading etkin, BIOS dört adede kadar mantıksal işlemci buluyor, şimdi başlayalım ... Dur. Peki işletim sistemimiz kaç işlemci görecek? Doğru, iki. Sadece iki, çünkü daha büyük bir sayı için tasarlanmamıştır. Bunlar iki fiziksel işlemci olacak, yani her şey tam olarak devre dışı bırakılmış Hyper-Threading ile aynı şekilde çalışacak - daha yavaş değil (iki "ek" mantıksal CPU duracak), ancak daha hızlı değil (ek testlerle doğrulandı, sonuçlar için alıntı yapılmadı) onların açıklığı). Hımm, pek eğlenceli değil...

Ne anlamda? Peki, gerçekten bizim iş istasyonumuza Advanced Server veya .NET Server kurmayın? Hayır, sistem kurulacak, dört mantıksal işlemciyi tanıyacak ve çalışacaktır. Bu sadece sunucu işletim sisteminin iş istasyonuna baktığı, hafif, biraz garip (finansal yönlerden bahsetmiyorum bile). Tek makul durum, iki işlemcili Xeon sistemimizin bir sunucu gibi davranacağı zamandır (en azından bazı inşaatçılar, iş istasyonu Xeon işlemcilerinde sunucuları serbest bırakmakta tereddüt etmezler). Ancak karşılık gelen işletim sistemlerine sahip ikili iş istasyonları için Hyper-Threading'in uygulanabilirliği söz konusu olmaya devam ediyor. Intel, artık mantıksal olmayan ancak fiziksel CPU'ların sayısına dayalı olarak işletim sistemi lisanslamasını aktif olarak savunuyor. Tartışmalar hala devam ediyor ve genel olarak, çoğu, dört işlemciyi destekleyen bir iş istasyonu işletim sistemi görüp görmememize bağlı.

Peki, sunucularla her şey oldukça basit bir şekilde ortaya çıkıyor. Örneğin, Hyper-Threading'in etkin olduğu iki yuvalı bir Xeon sistemine kurulu bir Windows 2000 Advanced Server, dört mantıksal işlemci görecek ve üzerinde sorunsuz çalışacaktır. Hyper-Threading'in sunucu sistemlerine neler getirdiğini değerlendirmek için, Xeon MP ve çeşitli Microsoft sunucu uygulamalarında iki işlemcili sistemler için Intel Mikroişlemci Yazılım Laboratuvarlarının sonuçlarını sunuyoruz.

İki işlemcili bir sunucu için "ücretsiz" %20-30'luk bir performans artışı cazip olmaktan da ötedir (özellikle "gerçek" 4 işlemcili bir sistem satın almakla karşılaştırıldığında).

Dolayısıyla, şu anda Hyper-Threading'in pratik uygulanabilirliğinin yalnızca sunucularda mümkün olduğu ortaya çıktı. İş istasyonlarıyla ilgili sorun, işletim sistemi lisansı ile çözüme bağlıdır. Bir tane daha Hyper-Threading uygulaması oldukça gerçek olsa da - masaüstü işlemciler bu teknoloji için destek alırsa. Örneğin (hayal edelim) SMP destekli Windows 2000/XP Professional'ın kurulu olduğu Hyper-Threading destekli bir Pentium 4 sisteminin nesi var? - sunuculardan masaüstü ve mobil sistemlere.