Çok Çekirdekli İşlemcilerde İş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ı etkili bir şekilde nasıl hesaplıyorsunuz? 4 çekirdekli bir 3GHz sistemi gerçekten 12GHz midir? Araştırırken okumaya devam et.
Bugünün Soru ve Cevap oturumu bize, bir soru-cevap web sitelerinin topluluk tarafından yönlendirilen bir grup grubu olan Stack Exchange'in bir alt birimi olan SuperUser'ın izniyle geliyor..
Soru
SuperUser okuyucu NReilingh, çok çekirdekli bir sistem için işlemci hızının aslında 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 sadece 1Ghz makineleri olarak tanıtılmaları konusunda ısrar eden bir tanışma ile (bu arada bu konunun odağı değil… orta okulda olan) “Mac vs. PC” argümanına girdim. her biri 500MHz’de çalışan işlemci G4’ler.
O zamanlar bunun çoğu insan için belirgin olduğunu düşündüğüm nedenlerden ötürü "hogwash" olduğunu biliyordum, ancak bu web sitesinde "6 çekirdekli x 0.2GHz = 1.2Ghz" etkisine bir yorum gördüm ve bu beni tekrar tekrar düşündürdü. buna gerçek bir cevap var.
Bu, saat hızı hesaplamasının anlambilimi hakkında az çok felsefi / derin teknik bir sorudur. İki olasılık görüyorum:
- Her bir çekirdek aslında saniyede x hesaplama yapıyor, dolayısıyla toplam hesaplama sayısı x (çekirdek) olur..
- Saat hızı, işlemcinin bir saniyelik boşlukta geçirdiği döngü sayısının bir sayımıdır, böylece tüm çekirdekler aynı hızda çalıştığı sürece, her saat döngüsünün hızı kaç tane çekirdek olursa olsun aynı kalır . Başka bir deyişle, Hz = (core1Hz + core2Hz +…) / çekirdek.
Peki, toplam saat hızını belirtmek için uygun yol nedir ve daha da önemlisi, çok çekirdekli bir sistemde tek çekirdekli hız terminolojisini kullanmak bile mümkün mü??
Cevap
SuperUser katılımcıları Mokubai işleri düzeltmeye yardımcı oluyor. 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, örneğin tek iş parçacıklı veya çok iş parçacıklı işlerle nasıl yapılması gerektiğidir. Amdahl Yasası, yürüttüğünüz görev türlerini göz önünde bulundururken önemlidir.
Eğer doğası gereği doğrusal olan ve tam olarak adım adım yapılması gereken bir işiniz varsa (çok basit bir program)
10: a = a + 1
20: 10'a kadar
O zaman görev önceki geçişteki sonucun büyüklüğüne bağlıdır ve değerini bozmadan birden çok kopyasını çalıştıramaz.
'A'
Her kopyanın değeri'A'
farklı zamanlarda ve farklı şekilde yazıyorlar. Bu, görevi tek bir iş parçacığı ile sınırlandırır ve böylece görev, herhangi bir zamanda yalnızca bir çekirdekte çalışabilir, eğer birden fazla çekirdek üzerinde çalıştırılsaydı, o zaman senkronizasyon bozulması gerçekleşirdi. Bu, onu çift çekirdekli bir sistemin cpu gücünün 1 / 2'si veya dört çekirdekli bir sistemde 1/4 ile sınırlandırır..Şimdi şöyle bir görevi üstlen:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: 10'a kadar
Tüm bu satırlar bağımsızdır ve birincisi ve aynı anda çalıştırılacak olan 4 ayrı programa ayrılabilir, her biri herhangi bir senkronizasyon problemi olmadan çekirdeklerden birinin gücünden tam olarak yararlanabilecek, burası Amdahl Yasası içine geliyor.
Eğer kaba kuvvet hesaplamaları yapan tek bir dişli uygulamanız varsa, tek bir 12 GHz işlemci, bir şekilde ayrı parçalara bölünmüş ve çoklu iş parçacıklı bir şekilde bölünmüş hale getirebilirseniz, 4 çekirdeğin birbirine yaklaşabileceğini ancak tam olarak erişemediğini düşünüyorsanız Amdahl Yasası uyarınca aynı performans.
Çok işlemcili bir sistemin size sağladığı temel şey, duyarlılıktır. Sıkı çalışan tek bir çekirdekli makinede, sistem çoğu zaman bir görev tarafından kullanılabildiği için durgun görünebilir, diğer görevler ise sadece büyük görevler arasında kısa aralıklarla çalışır, bu da halsiz veya titiz görünen bir sistem ortaya çıkarır . Çok çekirdekli bir sistemde ağır görev bir çekirdek alır ve diğer tüm görevler diğer çekirdeklerde oynar, işlerini hızlı ve verimli bir şekilde yapar.
“6 çekirdek x 0,2 GHz = 1,2 GHz” argümanı, görevlerin tamamen paralel ve bağımsız olduğu durumlar dışında her durumda çöptür. Son derece paralel olan çok sayıda görev var, ancak yine de bir çeşit senkronizasyon gerektiriyor. El freni, mevcut tüm CPU'ları kullanmakta çok iyi bir video kodlayıcıdır, ancak diğer iş parçacıklarının verilerle dolu kalması ve yapılan verilerin toplanması için bir çekirdek işlem gerektirir.
- Her bir çekirdek aslında saniyede x hesaplama yapıyor, dolayısıyla toplam hesaplama sayısı x (çekirdek) olur..
Her çekirdek, saniyede x hesaplama yapabilir, iş yükünün paralel olduğunu, varsa doğrusal bir programda bulunduğunu varsayalım..
- Saat hızı, işlemcinin bir saniyelik boşlukta geçirdiği döngü sayısının bir sayımıdır, böylece tüm çekirdekler aynı hızda çalıştığı sürece, her saat döngüsünün hızı kaç tane çekirdek olursa olsun aynı kalır . Başka bir deyişle, Hz = (core1Hz + core2Hz +…) / çekirdek.
4 x 3 GHz = 12 GHz, matematiğin işe yaradığını, ancak elmaları portakallarla karşılaştırdığınızı ve toplamların doğru olmadığını düşündüğünüzün yanlış olduğunu düşünüyorum, GHz her durum için kolayca eklenemez. 4 x 3GHz = 4 x 3GHz olarak değiştirirdim.
Açıklamaya eklemek için bir şey var mı? Yorumlarda ses kesiliyor. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Burada tüm tartışma konusuna göz atın.