Ekonomik tüketici sınıfı çok çekirdekli işlemcilerin ortaya çıkışı birçok kullanıcı için şu soruyu gündeme getiriyor: Çok çekirdekli bir sistemin gerçek hızını etkin bir şekilde nasıl hesaplarsınız? 4 çekirdekli 3Ghz sistemi gerçekten 12Ghz mi? Biz araştırdıkça okumaya devam edin.
Bugünün Soru-Cevap oturumu bize, Soru-Cevap web sitelerinin topluluk destekli bir grubu olan Stack Exchange'in bir alt bölümü olan SuperUser'ın izniyle geliyor.
Soru
SuperUser okuyucu NReilingh, çok çekirdekli bir sistem için işlemci hızının nasıl hesaplandığını merak ediyordu:
Örneğin, her biri 3GHz'de çalışan dört çekirdekli bir işlemcinin aslında 12GHz'de çalışan bir işlemci olduğunu söylemek doğru mu?
Bir keresinde, Mac'lerin ikili oldukları için yalnızca 1Ghz makineler olarak ilan edildiğinde ısrar eden bir tanıdıkla (bu arada bu konunun odak noktası DEĞİLDİR) bir "Mac'e karşı PC" tartışmasına girdim. -işlemci G4'lerin her biri 500 MHz'de çalışıyor.
O zamanlar bunun saçma olduğunu düşündüğüm nedenlerden dolayı çoğu insan için açık olduğunu düşünüyordum, ancak bu web sitesinde "6 çekirdek x 0.2GHz = 1.2Ghz" etkisiyle ilgili bir yorum gördüm ve bu beni tekrar buna gerçek bir cevap var.
Yani bu, saat hızı hesaplamasının anlambilimiyle ilgili az çok felsefi / derin teknik bir sorudur. İki olasılık görüyorum:
- Aslında her çekirdek saniyede x hesaplama yapıyor, dolayısıyla toplam hesaplama sayısı x'tir (çekirdek).
- Saat hızı, daha çok işlemcinin bir saniye içinde geçtiği döngülerin sayısıdır, bu nedenle tüm çekirdekler aynı hızda çalıştığı sürece, her saat döngüsünün hızı, kaç çekirdek olursa olsun aynı kalır. . Diğer bir deyişle, Hz = (core1Hz + core2Hz +…) / core.
Öyleyse, toplam saat hızını belirtmenin uygun yolu nedir ve daha da önemlisi, tek çekirdekli hız terminolojisini çok çekirdekli bir sistemde kullanmak mümkün müdür?
Cevap
SuperUser'a katkıda bulunanlar Mokubai, işleri temizlemeye yardımcı olur. O yazıyor:
Dört çekirdekli bir 3GHz işlemcinin hiçbir zaman 12GHz tek çekirdekli kadar hızlı olmamasının ana nedeni, bu işlemcide çalışan görevin, yani tek iş parçacıklı veya çok iş parçacıklı işleyişiyle ilgilidir. Amdahl Yasası yürüttüğünüz görev türlerini değerlendirirken önemlidir.
Doğası gereği doğrusal olan ve tam olarak adım adım yapılması gereken bir göreviniz varsa (son derece basit bir program)
10: a = a + 120: Her 10Daha sonra görev, büyük ölçüde önceki geçişin sonucuna bağlıdır ve değerini bozmadan kendisinin birden fazla kopyasını çalıştıramaz.
'a'her kopya değerini alacağından'a'farklı zamanlarda ve farklı şekilde geri yazmak. Bu, görevi tek bir iş parçacığıyla sınırlar ve böylece görev, herhangi bir zamanda yalnızca tek bir çekirdekte çalıştırılabilir, eğer birden çok çekirdekte çalıştırılacaksa, senkronizasyon bozulması meydana gelir. Bu, onu çift çekirdekli bir sistemin cpu gücünün 1 / 2'si veya dört çekirdekli bir sistemin 1 / 4'ü ile sınırlar.Şimdi aşağıdaki gibi bir görevi üstlenin:
10: a = a + 120: b = b + 130: c = c + 140: d = d + 150: Her 10Tüm bu hatlar bağımsızdır ve ilki gibi 4 ayrı programa bölünebilir ve aynı anda çalıştırılabilir, her biri herhangi bir senkronizasyon sorunu olmadan çekirdeklerden birinin tam gücünü etkin bir şekilde kullanabilir, burası Amdahl Yasası içine giriyor.
Dolayısıyla, kaba kuvvet hesaplamaları yapan tek iş parçacıklı bir uygulamanız varsa, tek 12GHz işlemci eller aşağı kazanır, görevi bir şekilde ayrı parçalara ve çok iş parçacıklı hale getirebilirseniz, 4 çekirdek yaklaşabilir, ancak tam olarak ulaşamayabilir, Amdahl Yasası uyarınca aynı performans.
Çoklu CPU sisteminin size verdiği en önemli şey yanıt verebilmektir. Sıkı çalışan tek çekirdekli bir makinede, çoğu zaman bir görev tarafından kullanılabileceğinden ve diğer görevler yalnızca daha büyük görevler arasında kısa aralıklarla çalıştığından, sistem yavaş veya titrek görünen bir sistemle sonuçlandığından sistem durgun görünebilir. . Çok çekirdekli bir sistemde ağır görev bir çekirdek alır ve diğer tüm görevler diğer çekirdeklerde oynar ve işlerini hızlı ve verimli bir şekilde yapar.
"6 çekirdek x 0.2GHz = 1.2Ghz" argümanı, görevlerin tamamen paralel ve bağımsız olduğu durumlar dışında her durumda saçmalıktır. Oldukça paralel olan çok sayıda görev vardır, ancak yine de bir tür senkronizasyon gerektirirler. El freni mevcut tüm CPU'ları kullanmada çok iyi olan bir video kod dönüştürücüsüdür, ancak diğer iş parçacıkları verilerle dolu tutmak ve işledikleri verileri toplamak için çekirdek bir işlem gerektirir.
- Aslında her çekirdek saniyede x hesaplama yapıyor, dolayısıyla toplam hesaplama sayısı x'tir (çekirdek).
Her bir çekirdek, iş yükünün paralel olarak uygun olduğu varsayılarak saniyede x hesaplama yapabilir, doğrusal bir programda sahip olduğunuz tek şey 1 çekirdek.
- Saat hızı, daha çok işlemcinin bir saniye içinde geçtiği döngülerin sayısıdır, bu nedenle tüm çekirdekler aynı hızda çalıştığı sürece, her saat döngüsünün hızı, kaç çekirdek olursa olsun aynı kalır. . Diğer bir deyişle, Hz = (core1Hz + core2Hz +…) / core.
Bence 4 x 3GHz = 12GHz, matematik çalışmaları verildiğinde, ancak elmaları portakallarla karşılaştırıyorsunuz ve toplamlar doğru değil, GHz her durum için basitçe bir araya getirilemez. 4 x 3GHz = 4 x 3GHz olarak değiştirirdim.
Açıklamaya eklemek istediğiniz bir şey var mı? Yorumlarda sesi kapatın. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla yanıt okumak ister misiniz? Tartışma dizisinin tamamına buradan göz atın .