Yanıtlar:
Başkalarının söylediği gibi, bu tamamen göreve bağlıdır.
Bunu göstermek için, gerçek bir kritere bakalım:
Bu benim yüksek lisans tezimden alındı (şu anda çevrimiçi olarak mevcut değil).
Bu Şekil nispi hızlandırıcı 1 dizge ile eşleşen algoritmaları (her renk farklı algoritma). Algoritmalar, iki adet Xth X5550 dört çekirdekli işlemci ve hyperthreading ile gerçekleştirildi. Başka bir deyişle: her biri iki donanım iş parçacığını çalıştırabilen toplam 8 çekirdek vardı (= “hyperthreads”). Bu nedenle, benchmark, 16 iş parçacığıyla hızlanmayı test eder (bu konfigürasyonun gerçekleştirebileceği maksimum eşzamanlı iş parçacığı sayısıdır).
Dört algoritmadan ikisi (mavi ve gri) tüm aralık boyunca doğrusal olarak daha fazla veya daha az ölçeklenir. Yani, hiper-titremeden faydalanır.
Diğer iki algoritma (kırmızı ve yeşil; renk körü insanlar için talihsiz seçim) 8 ipliğe kadar doğrusal olarak ölçeklenir. Ondan sonra durgunlaşıyorlar. Bu açıkça, bu algoritmaların hiper-yayılmadan faydalanmadığını gösterir.
Sebep? Bu özel durumda, hafıza yükü; ilk iki algoritma hesaplama için daha fazla belleğe ihtiyaç duyar ve ana bellek veriyolunun performansı ile sınırlandırılır. Bu, bir donanım iş parçacığı belleği beklerken, diğerinin yürütmeye devam edebileceği anlamına gelir; donanım konuları için ana kullanım çantası.
Diğer algoritmalar daha az hafıza gerektirir ve veri yolu için beklemeniz gerekmez. Neredeyse tamamen hesaplanmışlar ve sadece tamsayı aritmetiği kullanıyorlar (aslında bit işlemleri). Bu nedenle, paralel uygulama için potansiyel yoktur ve paralel komut boru hatlarından faydalanılmaz.
1 Yani sadece bir iplikle yürütülmüş gibi algoritma açlığın olarak dört kez çalışır 4 araçlarının bir hızlandırıcı faktörü. Tanım olarak, o zaman, bir iş parçacığı üzerinde yürütülen her algoritmanın göreceli hızlanma faktörü 1'dir.
Sorun şu, göreve bağlı.
Hiper-işin arkasındaki kavram, temel olarak tüm modern CPU'ların birden fazla yürütme sorununa sahip olmasıdır. Genelde şimdi bir düzine kadar yaklaşıyor. Tamsayı, kayan nokta, SSE / MMX / Akış (bugün ne denirse) arasında bölünmüştür.
Ek olarak, her birim farklı hızlara sahiptir. Yani bir şeyi işlemek için bir tamsayı matematik birimi 3 çevrimi gerekebilir, ancak 64 bitlik bir kayan nokta bölmesi 7 döngü alabilir. (Bunlar hiçbir şeye dayanmayan efsanevi sayılardır).
Sıra dışı çalıştırma, çeşitli birimleri mümkün olduğunca dolu tutmada çok yardımcı olur.
Ancak, herhangi bir görev, her bir yürütme birimini her an kullanmayacaktır. İpleri bölmek bile tamamen yardımcı olabilir.
Böylece teori, ikinci bir CPU varmış gibi davranarak, başka bir iş parçacığı üzerinde çalışabilir,% 98 SSE / MMX malzeme olan Ses kodlama kodunuz kullanılmadığı için mevcut kullanım birimlerini kullanarak çalıştırılabilir. bazı şeyler dışında boşta.
Bana göre, bu tek bir CPU dünyasında daha mantıklı, orada ikinci bir CPU'nun sahte olması, bu sahte ikinci CPU'yu idare etmek için çok az (varsa) fazladan kodlama ile ipliklerin daha kolay geçmesini sağlar.
3/4/6/8 çekirdek dünyasında, 6/8/12/16 CPU'lara sahip olmak yardımcı oluyor mu? Dunno. Kadar? Eldeki görevlere bağlıdır.
Bu nedenle, sorularınızı yanıtlamak için, işleminizdeki, hangi yürütme birimlerini kullandığı ve CPU'nuzda hangi yürütme birimlerinin kullanılmadığı / kullanılmadığı ve bu ikinci sahte CPU için kullanılabilir olduğu görevlere bağlı olacaktır.
Bazı hesaplamalı işlemlerin 'sınıflarının' fayda sağladığı söylenir. Ancak zor ve hızlı bir kural yoktur ve bazı sınıflar için işleri yavaşlatır.
Geoffc'in cevabını eklemek için bazı anekdot kanıtlarım var. Aslında aslında Hyththreading özellikli bir Core i7 CPU'ya (4 çekirdekli) sahip oldum ve biraz fazla iletişim ve senkronizasyon gerektiren ancak yeterli miktarda olan bir görev olan video kodlama ile biraz oynadım. Bir sistemi etkili bir şekilde tam olarak yükleyebileceğiniz paralellik.
Genelde, işlemden geçirilen yaklaşık 1 ekstra CPU değerine eşdeğer 4 hiper iş parçacıklı "ekstra" çekirdeği kullanarak, göreve ne kadar CPU atandığı ile oynama deneyimim. Ekstra 4 "aşırı işlenmiş" çekirdek, 3 ila 4 "gerçek" çekirdek ile aynı miktarda kullanılabilir işlem gücüne eklenmiştir.
Bu, kesinlikle şifreleyen bir test değildir, çünkü tüm kodlama iş parçacıkları CPU'larda aynı kaynaklar için rekabet edebilir, ancak bana göre, genel işlem gücünde en azından küçük bir destek olduğunu gösterdi.
Gerçekten yardımcı olup olmadığını göstermenin tek gerçek yolu, aynı anda birkaç farklı Tamsayı / Kayan Nokta / SSE tipi testi çalıştırmak ve aynı zamanda hiperthreading etkin ve devre dışı olan bir sistemde çalıştırmak ve kontrollü bir işlemde ne kadar işlem gücünün mevcut olduğunu görmek olacaktır. ortamı.
Diğerlerinin dediği gibi CPU ve iş yüküne çok bağlı.
Hyper-Threading Teknolojisine sahip Intel® Xeon® işlemci MP'de ölçülen performans, bu teknoloji için ortak sunucu uygulama karşılaştırma ölçütlerinde% 30'a varan performans artışı sağlar
(Bu bana biraz muhafazakar görünüyor.)
Ve burada daha fazla sayıda daha fazla sayıda başka bir kağıt daha var (hepsini henüz okumadım) . Bu yazının ilginç bir özelliği de, hiper-diş etmenin bazı görevler için ince yapıları yavaşlatmasıdır .
AMD'nin Bulldozer mimarisi ilginç olabilir . Her bir çekirdeği etkin bir şekilde 1.5 çekirdek olarak tanımlarlar. Bu, potansiyel performansından ne kadar emin olduğunuza bağlı olarak, aşırı derecede yüksek okuyuculu veya alt standart çok çekirdeklidir. Bu parçadaki sayılar, 0,5x ile 1,5x arasında bir yorum hızına işaret eder.
Son olarak, performans işletim sistemine de bağlıdır. İşletim sistemi, umarım, yalnızca CPU olarak gizlenen köprüler tercih edilen işlemlere gerçek işlemcilere gönderir . Aksi halde, çift çekirdekli bir sistemde, boşta çalışan bir işlemciye ve iki iş parçacığının çarptığı çok meşgul bir çekirdeğiniz olabilir. Elbette, tüm modern işletim sistemlerinin uygun şekilde çalışabildiğini, ancak bunun Windows 2000'de olduğunu hatırlıyor gibiyim.