HyperThreaded Dört Çekirdekli İşlemci Aslında 8 “Çekirdek” Var mı?


2

Bu sorunun burada zaten bir cevabı var:

Erken 2011 Dört Çekirdekli i7 Mac'im var. Hiper-iş parçacığı nedeniyle, birçok program 8 "çekirdek" bildirir. Paralel olarak çalışan bir program yazacak olsaydım, bu programın 8 örneğini veya sadece 4'ü başlatabilir miyim?

İstediğim kadar iş parçacığı başlatabilirim, ancak programın 4 veya 8 örneğini paralel olarak yürütüyor muyum?


2
Hyperthreading, her bir çekirdeğin, her saat tetiklemesinden sonra bir anda 2 dişi işlemesini sağlar. Hyperthreading'e sahip olmasaydınız her bir çekirdek bir seferde yalnızca tek bir iplik işleyebiliyordu. Lütfen bunun Hyperthread'in en temel açıklaması olduğunu, iyi belgelenmiş ve okumayı akıllıca yapacağınız bir şey olduğunu unutmayın. Tek bir çekirdekli işlemcide bile bir programın 8 örneğini çalıştırabileceğinizi, hangi talimatların tam olarak alındığına bağlı olarak yavaş olabileceğini, ancak zaten OS X gibi bir durumda yüzlerce işlemi çalıştırdığınızı belirtmeliyim .
Ramhound

Yaptığınız programlar, işlemcinin size kaç tane çekirdek veya iplik verebildiğinden bağımsız olarak bağımsız bir süreçte çalışır. Size verilen kaynakları nasıl kullandığınız da tasarım seçeneğinizdir. Basitleştirmek için: 1 örnek çalıştırıyorsanız, sadece 1 program çalıştırdığını görürsünüz.
Doktoro Reichard,

@Ramhound - Bence David'in düzenlemesi soruyu biraz daha netleştirebilir, üzgünüm. Sürecimin devam eden tek süreç olsaydı, hangi noktada çekirdeğimi doyurmam gerektiğini soruyordum (gerçek dünya değil, anlıyorum, sadece soyut fikirleri kavramaya çalışıyorum).
Tyler DeWitt

@DoktoroReichard - Soru metnindeki karışıklık için üzgünüm, sanırım David'in düzenlemesi onu daha net hale getiriyor. Joshua'nın cevabı bana aradığımı verdi. Yine de girdi için teşekkürler.
Tyler DeWitt

Yanıtlar:


4

Intel Core i7 işlemcisi 4 fiziksel çekirdeğe sahip, ancak her çekirdeğin bir seferde en fazla 2 iş parçacığı girme yeteneği var, bu da işletim sistemine toplam 8 iş parçasını "mevcut mantıksal CPU" şeklinde gösteriyor.

Gerçekte, tek bir çekirdek bir seferde yalnızca bir ipliğe dokunabilir, ancak aynı anda 2 ipliğin "boru hattının" farklı aşamalarında olmasına izin vermek için özel kuyruk / zamanlama / zamanlama mekanizmaları vardır. Bu, işlemcinin bir seferde yalnızca birini ele alması gerektiğinden 2 iş parçacığını bitirmesini sağlar. Her iki iş parçacığı aynı boru hattını paylaştığı için, performans avantajı açıkça 2x olmayacaktır. Testlerin çoğu, yürütülen talimatların türüne bağlı olarak% 10 ila% 50 arasında bir avantaj sağlar.

Sorunuza cevaben, programınızın 4, 8 veya 16 örneğini başlatırsanız, hepsi "çalışıyor" olur, ancak mevcut THREAD'lerin mevcut olmasına bağlı olarak her biri için talimatlar sıralanır. Kullanılabilir FİZİKSEL KABLO sayısının (örneğin 5 veya daha fazla) ötesine geçtiğinizde, performans 4 azalır, çünkü taban 4'ün dışındaki dişliler fiziksel bir CPU çekirdeğini paylaşır.

Son olarak, mevcut CPU iş parçacığı kabiliyetinin sınırına ulaştığınızda (8 iş parçacığını aşan), işletim sistemi daha sonra boru hattındakiler tamamlanana kadar beklemek için zamanlama / sıraya alma talimatlarını başlatacaktır. İdeal olarak, mevcut performansın tersine gitmekten kaçınmak istersiniz çünkü olumsuz performans etkileri olabilir ve sistemi boğabilir.


Core i7'de Hyperthreading, aynı zamanda çok parçalı değil, ince taneli / interleaved çok iş parçacıklı değildir : her iki dişten gelen talimatlar aynı anda yürütmeye başlayabilir ([IIRC] yeniden adlandırmayı kaydetmek için ön uç araya sokulur, ancak daha sonraki aşamalar karıştırılır). Ayrıca, iplik başına performansın "azalacağı"; Belirtildiği gibi, toplam performans yaklaşık% 20 artabilir. Önbellek kapasitesi veya bellek bant genişliği ile sınırlandırılan kod performans düşmesine neden olabilir; gecikme sorunları tarafından kısıtlanan kodun SMT'den yararlanma olasılığı daha yüksektir.
Paul A. Clayton,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.