Çok çekirdekli işlemcilerde saat hızını nasıl hesaplarım?


23

Ö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ılmasında ısrar eden bir tanıdık ile (bu arada bu konunun odağı değildi ... orta okulda olan) "Mac'e karşı PC" argümanına girdim. her biri 500 MHz'de çalışan çift işlemcili G4'lerdi.

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ü. Bunun gerçek bir cevabı 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:

  1. Her bir çekirdek aslında saniyede x hesaplama yapıyor, bu nedenle toplam hesaplama sayısı x (çekirdek).
  2. Saat hızı, işlemcinin bir saniyelik boşlukta geçtiğ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 bir saat döngüsünün hızı kaç tane çekirdek olursa olsun aynı kalır . Başka bir deyişle, Hz = (core1Hz + core2Hz + ...) / çekirdekler.

Buradaki cevapların çoğu, örneğin dört çekirdekli bir 2 GHz işlemcinin neden tek çekirdekli 8 GHz işlemciye eşit olmadığının açıklanması konusunda iyi bir iş çıkarır. Ancak, çok çekirdekli işlemci hızlarının, sistemin kendi gereksinimlerindeki belirli bir hızı ve çekirdek sayısını listeleyen bir uygulama için uygunluğuna karar verirken nelere dikkat etmesi gerektiği konusunda güçlük çekiyorum. (örneğin: Borderlands 2, 2.4 GHz çift çekirdekli işlemci gerektirir. Daha düşük hızlı dört çekirdekli mi yoksa daha hızlı tek çekirdekli bir işlemcinin de yapmasını beklemeli miyiz?) Buna cevap verilebilir mi? yoksa ayrı bir soru mu olmalı?
Iszi

@Iszi Bu başka bir soru olmalı, ancak gereksinimlerine "çift çekirdekli" dahil ediyorlarsa, Borderlands'in birden fazla iş parçacığı için optimize edilmiş olması muhtemeldir. Bu durumda, tek çekirdekli bir işlemci tavsiye edilmeyecek, ancak> 2 çekirdek kullanıp kullanamayacağı belli değil.
NReilingh

Saat hızının ve çekirdek sayısının yalnızca işlemcinin 'hızını' belirlemediğini hatırlamak önemlidir. Örneğin, önbellek boyutları ve hız, işlemcinin talimatları ve verileri beklerken geçirdiği süreyi etkiler. Ek olarak, döngü başına talimatlar (bir şekilde 'verimlilik', güç verimliliğinden farklı ve ilişkili olsa da) hesaplama hızını da etkiler. Farklı işlemciler aynı talimatı uygulamak için farklı zamanlar alacaktır.
Bob

Yanıtlar:


35

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 nasıl çalıştığını, yani tek iş parçacıklı veya çok iş parçacıklığını yapmaktır. Amdahl Yasası , yürüttüğünüz görevlerin türleri dikkate alındığında önemlidir.

Eğer doğası gereği doğrusal olan ve tam olarak adım adım yapılması gereken bir göreviniz varsa (çok basit bir program)

10: a = a + 1
20: goto 10

Daha sonra görev, büyük ölçüde önceki geçişteki sonuca bağlıdır ve 'a'her kopyanın değeri 'a'farklı zamanlarda alacağından ve farklı şekilde geri yazdığından değerinin bozulmasına neden olmadan birden fazla kopyasını çalıştıramaz . Bu, görevi tek bir iş parçacığı ile sınırlandırır ve böylece, herhangi bir zamanda yalnızca tek bir çekirdekte çalışabilir, eğer birden fazla çekirdek üzerinde çalışacak olsaydı, senkronizasyon bozulmaları olur. 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ırlar.

Şimdi şöyle bir görevi üstlen:

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

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 Kanunu içine gelir.

Yani 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ına göre 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.2GHz = 1.2Ghz" 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ı kullanmada çok iyi bir video kodlayıcıdır, ancak diğer iş parçacıklarını verilerle dolu tutmak ve bunların yapıldığı verileri toplamak için bir çekirdek işlem gerektirir.

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

Her bir çekirdek, iş yükünün paralel olarak uygun olduğu varsayımıyla, saniyede x hesaplama yapabilir.

  1. Saat hızı, işlemcinin bir saniyelik boşlukta geçtiğ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 bir saat döngüsünün hızı kaç tane çekirdek olursa olsun aynı kalır . Başka bir deyişle, Hz = (core1Hz + core2Hz + ...) / çekirdekler.

4 x 3 GHz = 12 GHz, matematiğin işe yaradığını, ancak elmaları portakallarla karşılaştırdığınızı ve sadece toplamların doğru olmadığını, GHz'in her durum için bir araya getirilemediğini düşünmenin yanlış olduğunu düşünüyorum. 4 x 3GHz = 4 x 3GHz olarak değiştirirdim.


Nice post .. 1+ den fazla oy kullanamadı :-(
Gopalakrishnan Subramani,

Ancak amdahl yasası, donanımsal bir endişe değil, kilitlemenin neden olduğu bir programlama konusudur. Senkronize etmeniz gerekmiyorsa, her bir çekirdek, olabildiğince hızlı bir şekilde talimatları çalıştırabilir. Biri, çekirdekler arasında mükemmel bir şekilde bölünecek paralel bir program (basit bir program) tasarlayabilir. Donanım üreticileri bu ham değerin reklamını yapmaz mıydı?
Justin Meiners,

Açıklığa kavuşturmak için, neden bunun 3 ghz'deki 4 çekirdeğin neden 12 gnz kadar hızlı olmadığı, fakat saat hızının çoklu çekirdekler için nasıl hesaplandığının bir parçası olmadığı sorusunu yanıtladığını anlıyorum.
Justin Meiners,

@JustinMeiners çekirdek başına saat hızı, sadece çekirdeğin çalıştığı saat hızıdır. Tek bir çekirdeği çok çekirdekli ile eşitleyen sihirli bir hesaplama yoktur. Birden fazla çekirdek, aynı anda daha fazla ayrı görevi yürütebileceğiniz anlamına gelir. Yazılım nedeniyle Amdahlar yasası uygulanır, gerekli senkronizasyon ve kilitleme, bir yazılımın olduğu kadar donanımda da bir görevin "mükemmel" olmasını önler. Paylaşılan önbellek ve bellek, çekişmeye ve kilitlerin ortaya çıkmasına neden olur.
Mokubai,

@Mokubai Sadece bir üretici saat hızını listelediğinde netleştirmek için, her bir çekirdek çekirdek hızında çalışıyor, doğru mu?
Justin Meiners,

6

Diğerleri teknik açıdan iyi bir tartışma yaptı. Bunun yerine birkaç basit analoji yapacağım, umarım neden 4 * 3GHz'in 1 * 12GHz'e eşdeğer olmadığını açıklayacağım.

Örneğin, bir kadın dokuz ayda bir bebeği üretebilir. Dokuz kadın bir ayda bir bebek üretebilecek mi? Hayır, çünkü gebelik paralelleştirilemez (peki, en azından bu teknolojik düzeyde).

İşte bir tane daha: Son ziyaret ettiğim bir hidroelektrik santralinde, jeneratörlerden biri geliştiriliyordu. Jeneratörün statörünü gemi ile taşımak zorunda kaldılar. Statorun altıda biri kamyonla taşınabilir, ancak tüm statoru taşımak zorunda kaldılar; bu yüzden altı kamyon yerine bir gemi kullanmak zorunda kaldılar.

Başka bir durum, olayların kesin zamanlaması olabilir. Bazen bilgisayar işlemcileri kesin zamanlayıcılar olarak kullanılır (çoğu işlemcideki değişken saat nedeniyle uygulama artık tavsiye edilmese de. Bunun yerine yüksek hassasiyetli olay zamanlayıcı kullanılmalıdır). Göreceli olarak kararlı 12GHz saate sahip bir işlemcimiz olduğunu varsayarsak, zamanı 3GHz saate sahip bir işlemciden çok daha yüksek çözünürlükte ölçmek için kullanabiliriz. Ne kadar 3GHz çekirdeğe sahip olduğumuz önemli değil, 12 GHz çekirdeğin çözünürlüğüne ulaşamayacağız. Bu, her saatin sadece saat cinsinden doğru zamanı gösterdiği 7 segmentli ekranlı 4 saatin olması gibidir. Saatleri ne kadar doğru gösterdikleri önemli değil, bir saniye aralığındaki zaman aralıklarını ölçmek için bunları kullanamazsınız.


Daha az teknik fikirli için faydalı cevap. Ayrıca, benzetmeler :) gibi
aff

3

Bu konuda uzman değilim ama Bilgisayar Mühendisliği diplomam var. Gelen teori (bu son derece kavramsal cevap), bir dört çekirdekli 3 GHz her bir işlemci olabilir , örneğin tek bir son sonuç için gerekli olan hesaplamaları dört seti olmuştur, birisi 12GHz işlemcinin eşdeğer. Buna paralel işleme denir.

Mantığı basitleştirmek için diyelim ki bir çift çekirdekli işlemci hakkında konuşuyoruz. Bir hesaplama kümesi olsaydı, şunu söyleyin:

a = b + 1;

C = d + 1;

daha sonra, bu iki hesaplama ayrı çekirdeklerde yapılabilir ve bir xGHz işlemci, tek çekirdekli bir 2 x x GHz işlemciye eşdeğer olur. Bunun nedeni, iki hesaplamanın x hızında yapılmasına rağmen aynı anda işlenmesidir. Oysa, tek çekirdekli işlemci bunları 2xx hızında ancak birbiri ardına yapabilirdi. İki CPU bu kodu aynı anda yürütürse, aynı anda bitirirlerdi. Ancak, eğer kod:

a = b + 1;

c = a + 1;

daha sonra, çift çekirdekli işlemci, tek çekirdekli işlemciden iki kat daha uzun sürecektir çünkü ikinci komutta, a'nın değeri , ilk eğitime bağlıdır ve bu nedenle paralel olarak çalıştırılamaz. Bu, bazı yazılımların çok iş parçacıklı işlemcilerden nasıl yararlanabileceğidir.

Dolayısıyla, teoride, bir 12GHz tek çekirdekli işlemci her zaman bir 3GHz dört çekirdekli işlemciden daha hızlı (veya daha hızlı) çalışabilir, ancak bunun tersi mümkün değildir.


Bu hesaplamaların yalnızca karşılıklı denetleme yapıldığında daha hızlı olacağını ve hatta o zaman bile küçük bir ek yük olduğunu unutmayın. Ancak evet, birçok hesaplama yapabilen tek bir çekirdekli işlemci yapmak mümkün olsa da, ısı ve malzeme nedeniyle kolay değildir.
Phoshi

Bu cevap iki nedenden dolayı yanıltıcıdır. İlk olarak, modern çekirdekler bir kerede birden fazla şey yapar. İkincisi, cevap çekirdek hızın işin yapıldığı oranla aynı olduğunu varsayar. 12GHz tek çekirdekli işlemci, tek çekirdekli işlemcinin aynı işi gerçekleştirmek için çok daha fazla saat döngüsü gerektirmesi durumunda, 3GHz dört çekirdekli işlemci kadar hızlı çalışmayacak. (12 GHz işlemciden bu yana daha uzun boru hatlarına ihtiyaç duyacağına göre.)
David Schwartz

2

Bu cevaplanması karmaşık bir soru, ancak kısa cevap: Hayır

Gerçek dünya uygulamalarında dört 3GHz işlemci, verimsizliklerden dolayı tek bir 12GHz işlemci kadar hızlı olmayacaktır. Çok yakın olabilirler, ancak işlem gücü bakımından tek bir işlemciye eşit DEĞİLDİR.

Bunun nedeni, birden fazla işlemci üzerinde çalışabilen programlarla uğraşırken küçük verimsizliklerde yatmaktadır. Söz konusu programın paralel olarak çalışabileceğini varsayarak, RAM veya önbellek ve iş parçacığı senkronizasyon sorunları gibi diğer kaynaklar için birbirleriyle rekabet eden farklı çekirdeğe sahip problemlerle devam edeceğiz. Ayrıca, paralelleştirilemeyen ve tek bir çekirdekte tek başına çalıştırılması gereken programların parçaları her zaman vardır.

Bu makaleye bir göz atın: http://en.wikipedia.org/wiki/Amdahl%27s_law


Haklısın ve yanlışsın. Dört 3 GHz işlemci, "gerçek dünya" uygulamalarındaki tek 12 GHz işlemciden daha HIZLI olacaktır. Günümüzde gittikçe daha fazla sayıda program çoklu iş parçacığı kullanıyor, verdiğiniz bağlantı teorik bir tek iş parçacığı uygulamasına gönderme yapıyor. 12GHz'deki tek bir işlemcide yalnızca bir iş parçacığı var, bu yüzden çoklu iş parçacığı bir "gerçek dünya" programının sunduğu faydaları kaybediyor. Çok çekirdekli teknolojinin yararları, hızlı tek çekirdekli teknolojinin yararlarından çok daha ağır olduğu için endüstri, daha az sayıda çekirdek yerine daha yavaş çekirdeğe doğru gitmiyor.
ubiquibacon

3
@ typoknig: Bu tam olarak doğru değil. Bir 6GHz tek çekirdekli işlemci, çok iş parçacıklı bir uygulamayı, 3GHz çift çekirdekli işlemciyle aynı hızda çalıştıracaktır; bu, uygulamanın her iş parçacığından tam olarak faydalandığını varsayar (büyük olasılıkla "gerçek değilse" dünya uygulaması ", ama bu ayrı bir argümandır). 12GHz işlemciler görmüyoruz, çünkü mevcut teknoloji için çok zor, çünkü yavaş değil.
Sasha Chedygov

4
@typoknig: Bazı kendilerine özgü programları programladım ve tek bir 12Ghz işlemcim olsaydı, bunun yerine kimliğini kullandığımı inanıyorum. Tek iş parçacıklı programlama, muti iş parçacıklı programlamaya göre 10 kat daha kolay ve çok daha verimlidir. Endüstrinin çift çekirdekli işlemcileri hareket ettirmesinin asıl nedeni, daha hızlı olmaları değil, bireysel işlemcileri daha hızlı çalıştırmadığımız için değil! Bu, Intel'in netburst teknolojisi ile p4 günlerinde ana hatlarıyla açıklandı. En azından, 10Ghz işlemcileri, kuantum fiziği yüzlerine tokat atıncaya kadar "noob!" Dediler.
Faken

2
@typokning: F22, saniyede 10 milyar talimat almak için 10Ghz'den çok farklı bir dizi powerPC işlemcisi kullanıyor! Radion HD5970'iniz 4600Ghz'de çalışıyor. 4.6 TFLOPS için yeteneklidir, ancak yalnızca paralel olduğu için.
Faken

1
@typoknig: İşlemci frekansı ve IPS (saniye başına talimatlar) arasındaki farkı açıkça anlamıyorsunuz, aynı değiller. Lütfen okuyun: en.wikipedia.org/wiki/Instructions_per_second
Faken

2

Görünüşe göre, 4 G3 @ 4 çekirdeğin 12 GHz olarak söylenebileceği söylenemez.

Paylaşılan bellek, önbellek çekişmesi ve diğer kaynaklar gibi çeşitli kısıtlamalar tüm çekirdekte ortaktır, bu nedenle bu çekirdeğe paralel bir kod parçasını çalıştırmak, 12 GHz işlemcide çalıştırmak kadar verimli olmayacaktır (böyle bir işlemciyi oluşturmak zor olsa da) ).

Ayrıca çipte (CMP) gömülü transistörleri ikiye katlarsak, elde edeceğimiz hızın sadece% 40 olduğunu okudum. Bu da bu konuyla ilgili önemli bir ipucu sağlar.


1

Yürütülen saat döngüleri söz konusu olduğunda, evet, çok çekirdekli bir işlemci x * coressaniyede bir çalışma döngüsü gerçekleştiriyor. Geleneksel olarak, saat hızları daha kolay karşılaştırma için çekirdek bazında listelenmiştir (aksi halde 1GHz / çekirdekte çalışan 4GHz dört çekirdekli bir çip ile 2GHz / çekirdekte çalışan bir 4GHz çift çekirdekli çipi nasıl kolayca karşılaştırırsınız?).

Ne yazık ki, gerçek dünyadaki farklı işlemcileri karşılaştırmaya çalıştığınızda sorun karmaşıklaşıyor.

İlk olarak, çoğu çok çekirdekli işlemcinin çekirdekler arasında paylaşılan bazı kaynakları vardır (örneğin CPU önbelleği). Bu önbelleğe erişimi paylaşmak zorundalar, bu nedenle tam olarak veri kaydetme veya okuma konusunda hem çekirdeğiniz olamaz. Bu, çoğu çekirdekli CPU'larda, paylaşılan bir kaynakta bir darboğaz şansını daha iyi bölmek amacıyla, birden fazla paylaşılan önbellek (örneğin, dört çekirdekli çiplerin her biri bir çift çekirdekli paylaşılan 2 önbellek vardır) ile azaltılır.

İkincisi ve teknoloji dışı dünyada belki de daha az bilinen, saat hızlarını karşılaştırmanın bazen elmaları ve portakalları karşılaştırmak gibi olabileceğidir. Farklı CPU'lar, tek bir saat döngüsünde farklı miktarda çalışma gerçekleştirir, bu nedenle 1GHz'e karşı 1.2GHz seslerin harika olduğunu söyler, ancak 1GHz yonga aslında belirli bir zaman aralığında daha fazla iş yapabilir. Pentium 4 bu noktadan sonra eve gitti ve Megahertz Efsanesine yol açtı (ki bu yazıyı yazana kadar bir ismi olduğunu bilmiyordum).


Saat hızları "çekirdek bazında" listelenmiyor. Hızlar hiçbir zaman "başına" değildir. Bir araba saatte 50 mil gidiyorsa, hız saatte 50 mildir. İki araba saatte 50 mil gidiyorsa, hız hala saatte 50 mil. "Araba başına hız" fikri, anlamsız ve tutarsız.
David Schwartz

1

Her biri saatte 50 mil giden iki araba, saatte 100 mil ile "ekleme" yapmıyor. Gerçekten bu kadar basit. Bir işlemcinin saat hızı, işin yapıldığı hızın bir ölçütü değildir , saatin hızının ne kadar hızlı olduğunun bir ölçüsüdür.

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.