15Aug

Çok Çekirdekli İşlemciler Üzerinde İşlemci Hızını Nasıl Hesaplıyorsunuz?

Ekonomik tüketici sınıfı çok çekirdekli işlemcilerin ortaya çıkışı birçok kullanıcı için soruyu gündeme getiriyor: çok çekirdekli bir sistemin gerçek hızını nasıl etkili bir şekilde hesaplarsınız?4 çekirdekli 3Ghz sistem gerçekten 12Ghz mi? Araştırırken okuyun.

Bugünkü Soru &Yanıt oturumu bize, Q & A web sitelerinin topluluk tarafından işletilen bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser sayesinde sağlanır.

Soru

SuperUser okuyucu NReilingh, çok çekirdekli bir sistemin işlemci hızının gerçekte nasıl hesaplandığını merak ediyordu:

Örneğin her biri 3GHz'de çalışan dört çekirdeği olan bir işlemcinin aslında bir işlemci çalışıyor olduğunu söylemek doğru mudur?12GHz'de?

Mac'lerin sadece 1Ghz makineler olarak ilan edildiğini iddia eden bir tanıdık ile bir keresinde "Mac vs. PC" tartışmasına girdim( bu arada bu konunun odak noktası DEĞİLDİR. .. ortaokuldaymış gibi).Her biri 500 MHz'de çalışan çift işlemcili G4'ler.

Bu olayı çoğu insan için açıkça görülen nedenlerle hogwash olarak algıladığım zaman biliyordum ama bu web sitesinde "6 çekirdek x 0.2GHz = 1.2Ghz" etkisi üzerine bir yorum gördüm ve beni tekrar düşünmeye başladı.bunun gerçek bir cevabı olup olmadığı.

Dolayısıyla, saat hızı hesaplamasının anlambilimiyle ilgili az ya da çok felsefi / derin bir teknik soru.İki ihtimal görüyorum:

  1. Her çekirdek aslında saniyede x hesaplama yapıyor, bu nedenle hesaplamaların toplam sayısı x( çekirdek).
  2. Saat hızı, işlemcinin saniye süresince geçtiği döngünün sayısının bir sayımıdır, böylece tüm çekirdekler aynı hızda çalışıyorsa, her saat döngüsünün hızı, kaç çekirdek olursa olsun aynı kalırvar olmak. Başka bir deyişle, Hz =( çekirdek 1Hz + çekirdek 2Hz +. ..) / çekirdekler.

Peki toplam saat hızını göstermenin uygun yolu nedir ve daha da önemlisi, çok çekirdekli bir sistemde tek çekirdekli hız isimlendirmesini kullanmak mümkün müdür?

Cevap

SuperUser katılımcıları Mokubai, şeyleri temizlemeye yardımcı olur.

Dört çekirdekli bir 3GHz işlemcinin 12GHz tek çekirdeği kadar hızlı olmasının başlıca nedeni, o işlemcide çalışan görevin nasıl işlediği, yani tek iş parçacıklı veya çok iş parçacıklı işle ilgili olması.Çalışmakta olduğunuz görev türleri göz önüne alındığında, Amdahl Yasası önemlidir.

Doğal olarak doğrusal olan ve( basit bir program gibi) tam adım adım yapılması gereken bir görev varsa

10: a = a + 1 20: goto 10

Sonra görev, sonuçlara çok bağlıdırve 'a' değerini bozmadan kendisinin birden fazla kopyasını çalıştıramazsın, çünkü her kopya 'a' değerini farklı zamanlarda alıyor ve farklı şekilde geri yazıyordu. Bu, görevin tek bir iş parçacığıyla sınırlandırıldığından, görev, birden çok çekirdek üzerinde çalıştırılacak olursa, belirli bir zamanda yalnızca tek bir çekirdek üzerinde çalışabilir; bu durumda, eşitleme bozulması olur. Bu, bir çift çekirdekli sistemin cpu gücünün 1/2'ine veya dörtlü çekirdekli bir sistemde 1/4'e sınırlar.

Şimdi bir görev alın:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10

Bu satırların tümü bağımsızdır vebirincisi gibi dört ayrı programa bölünebilir ve aynı anda çalışır, her biri çekirdeklerden birinin senkronizasyon problemi olmaksızın tam gücünü kullanabilir, Amdahl'ın Yasası buraya gelir.

Dolayısıyla kaba kuvvet hesaplamaları yaparak tekli dişli bir uygulamanız varsa tek bir 12GHz işlemci ele geçirir, eğer bir şekilde görevin ayrı parçalara ayrılmasını ve çoklu dişli olmasını sağlayabilirseniz, 4 çekirdek yaklaşabilir, ancak tam olarak ulaşamaz, Amdahl'ın Yasası uyarınca aynı performans.

Çok CPU sisteminin size sunduğu en önemli şey, yanıt verme özelliğidir.Çalışan tek çekirdekli bir makinede, çoğu zaman yalnızca bir görev tarafından kullanılabildiği ve diğer görevler ise daha büyük görev arasında kısa süreli patlamalar yaşadığı için durgunlaşmış gibi görünen sistem yavaşlar ya da haklı görünen bir sistem ortaya çıkarabilir..Çok çekirdekli bir sistemde, ağır görev bir çekirdek alırken diğer tüm görevler diğer çekirdeğin üzerinde oynar ve işleri hızlı ve verimli bir şekilde yapar.

"6 çekirdek x 0.2GHz = 1.2Ghz" argümanı görevlerin mükemmel paralel ve bağımsız olduğu durumlar haricinde her durumda çöp demektir. Oldukça paralel olan çok sayıda görev vardır, ancak yine de bir takım senkronizasyon gerektirirler. Handbrake mevcut tüm CPU'ları kullanmada çok iyi olan bir video trancoder ancak diğer konuları veri ile doldurmaya devam etmek ve yaptıkları verileri toplamak için çekirdek bir süreç gerektiriyor.

  1. Her çekirdek aslında saniyede x hesaplama yapıyor, bu nedenle hesaplamaların toplam sayısı x( çekirdek) 'dir.

Her bir çekirdek, saniyede x hesaplama yapabilir, iş yükünün paralel olduğuna göre, doğrusal bir programda sahip olduğunuz tek çekirdeğidir.

  1. Saat hızı, işlemcinin saniye süresince geçtiği döngü sayısının bir sayımıdır; bu nedenle, tüm çekirdekler aynı hızda çalışıyorsa, her saat döngüsünün hızı, kaç çekirdek olursa olsun aynı kalırvar olmak. Başka bir deyişle, Hz =( çekirdek 1Hz + çekirdek 2Hz +. ..) / çekirdekler.

Sanırım 4 x 3GHz = 12GHz, matematik çalışması verilen ancak elmaları portakallarla karşılaştırdığınız düşünülmemelidir ve toplamlar doğru değildir, GHz her durum için bir araya getirilemez.4 x 3GHz = 4 x 3GHz olarak değiştirdim.

Açıklamaya eklemek için bir şey var mı?Açıklamalarda ses çıkıyor. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.