Niçin farklı çekirdeklerin kombinasyonlarını değil aynı hızdaki tüm çekirdeğe sahip CPU'larımız var?


79

Genel olarak, yeni bir bilgisayar satın alıyorsanız, beklenen iş yükünüzün ne olacağına göre hangi işlemciyi alacağınızı belirlersiniz. Oyunlardaki performans tek çekirdekli hız ile belirlenirken, video düzenleme gibi uygulamalar çekirdek sayısıyla belirlenir.

Piyasada neyin mevcut olduğuna bakıldığında, tüm CPU'ların kabaca aynı hıza sahip olduğu görülüyor; temel farklar daha fazla iş parçacığı veya daha fazla çekirdek olması gibi.

Örneğin:

  • Intel Core i5-7600K, temel frekans 3.80 GHz, 4 çekirdekli, 4 diş
  • Intel Core i7-7700K, temel frekans 4.20 GHz, 4 çekirdekli, 8 diş
  • AMD Ryzen 5 1600X, temel frekans 3.60 GHz, 6 çekirdek, 12 konu
  • AMD Ryzen 7 1800X, temel frekans 3.60 GHz, 8 çekirdek, 16 konu

Öyleyse neden tüm çekirdeklerin aynı saat hızına sahip olduğu ile bu artan çekirdek düzenini görüyoruz?

Neden farklı saat hızlarında değişkenler yok? Örneğin, iki 'büyük' ​​çekirdek ve çok sayıda küçük çekirdek.

Örnek olarak, örneğin, 4.0 GHz'de dört çekirdekli (yani maksimum 4x4 GHz ~ 16 GHz) dört çekirdeğin yerine, 4.0 GHz'de çalışan iki çekirdekli bir işlemci ve 2 GHz'de (yani 2x4.0 GHz'de çalışan dört çekirdekli) ne dersiniz? + 4x2.0 GHz ~ 16 GHz maksimum). İkinci seçenek, tek iş parçacıklı iş yüklerinde eşit derecede iyi olmaz mı, fakat çok iş parçacıklı iş yüklerinde potansiyel olarak daha iyi olur mu?

Bu soruyu genel bir nokta olarak soruyorum - özellikle yukarıda listelenen CPU'lar hakkında veya belirli bir özel iş yükü hakkında değil. Sadece modelin neden olduğu gibi merak ediyorum.


15
Hızlı ve yavaş çekirdekli birçok cep telefonu var ve hemen hemen tüm modern çok çekirdekli sunucularda CPU çekirdeği yüke bağlı olarak saatin hızını artırıyor, bazıları kullanılmadığında çekirdeği bile kapatıyor. Enerji tasarrufu için tasarlamadığınız ancak yalnızca iki tür çekirdeğe (CPU ve GPU) sahip olduğunuz genel amaçlı bir bilgisayarda platformu daha esnek hale getirir.
Eckes

5
İplik zamanlayıcısı, hangi çekirdeğin kullanılacağı hakkında akıllıca bir seçim yapmadan önce, bir işlemin birden çok çekirdekten faydalanıp faydalanamayacağını belirlemek zorunda kalacaktır. Bunu güvenle yapmak oldukça problemli ve hataya açık olurdu. Özellikle bu uygulamanın ihtiyaçlarına göre dinamik olarak değişebiliyorsa. Çoğu durumda, programlayıcı en iyi çekirdek kullanımdayken alt optimal seçim yapmak zorunda kalacaktır. Özdeş çekirdekler işleri daha basit hale getirir, maksimum esneklik sağlar ve genellikle en iyi performansa sahiptir.
LMiller7

33
Saat hızlarının, tarif ettiğiniz şekilde ilave olduğu söylenemez. 4 GHz'de çalışan dört çekirdeğe sahip olmak, toplamda 16 GHz’e sahip olduğunuz anlamına gelmez; bu 16 GHz’in, 1 GHz’de çalışan 2 GHz veya 16 işlemcide çalışan 8 işlemciye bölünebileceği anlamına gelmez.
Bob Jarvis

16
Sorunun öncülü sadece yanlıştır. Modern CPU'lar çekirdekleri farklı hızlarda çalıştırabilirler
phuclv

Yanıtlar:


85

Bu, heterojen çoklu işlem ( HMP ) olarak bilinir ve mobil cihazlar tarafından yaygın olarak kabul edilir. Big.LITTLE uygulayan ARM tabanlı cihazlarda , işlemci farklı performans ve güç profillerine sahip çekirdekler içerir, örneğin bazı çekirdekler hızlı çalışır, ancak çok fazla güç çeker (daha hızlı mimari ve / veya daha yüksek saatler), diğerleri ise enerji açısından verimlidir ancak yavaştır ( daha yavaş mimari ve / veya daha düşük saatler). Bu kullanışlıdır, çünkü güç kullanımı, belirli bir noktadan geçtikten sonra performansı arttırırken orantısız bir şekilde artma eğilimindedir. Buradaki fikir, ihtiyacınız olduğunda performans ve ihtiyacınız olmadığında pil ömrü sağlamaktır.

Masaüstü platformlarda, güç tüketimi bir sorundan çok daha azdır, bu nedenle bu gerçekten gerekli değildir. Çoğu uygulama, her bir çekirdeğin benzer performans özelliklerine sahip olmasını bekler ve HMP sistemleri için planlama işlemleri, geleneksel SMP sistemleri için planlamadan çok daha karmaşıktır. (Windows 10 teknik olarak HMP desteğine sahiptir, ancak esas olarak ARM big.LITTLE kullanan mobil cihazlar içindir.)

Ayrıca, günümüzde çoğu masaüstü ve dizüstü bilgisayar işlemcisi , bazı çekirdeklerin kısa patlamalarda bile diğerlerinden daha hızlı çalışması gereken noktayla termal veya elektriksel olarak sınırlı değildir . Temel olarak bireysel çekirdeği ne kadar hızlı hale getirebileceğimiz konusunda bir duvara çarptık , bu nedenle bazı çekirdeği daha yavaş olanlarla değiştirmek kalan çekirdeğin daha hızlı çalışmasına izin vermeyecektir.

Diğerlerinden daha hızlı çalışabilen bir veya iki çekirdeğe sahip birkaç masaüstü işlemci olmasına rağmen, bu özellik şu anda bazı çok yüksek kalitedeki Intel işlemcilerle (Turbo Boost Max Technology 3.0) sınırlıdır ve yalnızca performansta hafif bir kazanç gerektirir Daha hızlı çalışabilen çekirdekler için.


Ağır iş parçacıklı iş yükleri için optimize etmek üzere hem büyük hem hızlı çekirdekli hem de daha küçük, daha yavaş çekirdekli geleneksel bir x86 işlemci tasarlanması kesinlikle mümkün olsa da, bu, işlemci tasarımına önemli ölçüde karmaşıklık katacaktır ve uygulamaların onu düzgün bir şekilde desteklemesi pek olası değildir.

İki hızlı Kaby Gölü (7. Nesil Çekirdek) çekirdeği ve sekiz yavaş Goldmont (Atom) çekirdeği ile varsayımsal bir işlemci edinin . Toplamda 10 çekirdeğiniz olacaktı ve bu tür işlemciler için optimize edilmiş ağır iş parçacıklı iş yükleri, normal dört çekirdekli Kaby Lake işlemciden daha fazla performans ve verimlilik kazandığını görebilir . Bununla birlikte, farklı türlerdeki çekirdekler çılgınca farklı performans düzeylerine sahiptir ve yavaş çekirdekler, AVX gibi hızlı çekirdeklerin desteklediği bazı yönergeleri bile desteklemez . (ARM, aynı talimatları desteklemek için hem büyük hem de LITTLE çekirdeği gerektirerek bu sorunu önler.)

Yine, Windows tabanlı çok iş parçacıklı uygulamaların çoğu, her çekirdeğin aynı veya neredeyse aynı performans seviyesine sahip olduğunu ve aynı talimatları uygulayabileceğini varsayıyor, bu nedenle bu tür asimetri, ideal performanstan daha düşük performans gösterebilir, belki de yavaş çekirdekler tarafından desteklenmeyen talimatları kullanır. Intel, tüm çekirdeklerin tüm talimatları uygulayabilmesi için gelişmiş komut desteği eklemek için yavaş çekirdeği değiştirebilse de, bu tür heterojen işlemciler için yazılım desteğiyle ilgili sorunları çözmez.

Sorunuzda muhtemelen düşündüğünüze daha yakın olan uygulama tasarımına farklı bir yaklaşım GPU'yu son derece paralel uygulama bölümlerini hızlandırmak için kullanır. Bu OpenCL ve CUDA gibi API'ler kullanılarak yapılabilir . Tek yongada çözüm olan AMD geleneksel CPU ve aynı çip üzerine yüksek performanslı entegre GPU, birleştirmek onun APU, GPU hızlandırma için donanım desteği teşvik Heterojen Sistem Mimarisi Bu dışında çok sanayi alımını görmemiştir bile, birkaç özel uygulama.


1
Windows zaten 'Uygulamalar', 'Arka Plan İşlemleri' ve 'Windows İşlemleri' kavramlarına sahiptir. Yani bu bir donanım seviyesine uzanmıyor mu?
Jamie

2
@Jamie Bir "arkaplan" işlemi daha küçük zaman dilimleri alır ve kesintiye uğraması daha olasıdır. Windows 10, bir dereceye kadar HMP sistemlerini hesaba katar, ancak henüz nasıl olduğu hakkında çok fazla bilgi yoktur.
Bob

Bu yüzden bwDraco düzenlemesinden sonra benim için hemen hemen cevap verdiğini düşünüyorum. Eğer bir 'karma' işlemci olsaydı, bu şekilde inşa edildiyse, aynı komut setini kolaylıkla destekleyebilirdi, o yüzden doğru çekirdeği seçmek için bir çeşit zamanlayıcıya ihtiyacımız olacaktı. Çok sayıda küçük çekirdeğe gitmekten faydalanan uygulamaların, çok sayıda küçük çekirdeğe gitmekten çok daha fazla fayda sağlayacağını düşünüyorum. Böylece GPU hızlandırma var.
Jamie

3
GPU da, 10 küçük ve yavaş çekirdek için 2 büyük çekirdek değil, 1024 küçük ve yavaş çekirdek için 2 büyük çekirdek ticaretinin (çok kaba) karşılığı olduğunu unutmayın. Büyük ölçüde paralel, sadece biraz daha paralel değil.
Yakk,

4
Intel, AVX2 komutlarını çok fazla silikon olmadan (yavaşça, 128b ops çiftlerine kod çözerek) çalıştırmak için bir Goldmont çekirdeği alabilir. Knight's Landing (Xeon Phi), AVX512 ile Silvermont tabanlı çekirdeğe sahip, bu yüzden Silvermont'u değiştirmek imkansız değil. Ancak KNL, vektör komutları için sıra dışı çalıştırma eklerken, normal Silver / Goldmont sadece tamsayı için OOO yapar, bu yüzden muhtemelen Goldmont'a KNL'den daha yakın tasarım yapmak isterler. Her neyse, insn setleri gerçek bir sorun değil. Düşük maliyetli bir çekirdekte kalıp alanını harcamanın önündeki asıl engel OS işletim sistemi desteği ve küçük faydası.
Peter Cordes

68

İstediğiniz şey, neden Asimetrik çoklu İşleme yerine Simetrik Çok İşlemciliği kullanan mevcut sistemler .

Asimetrik çoklu işlem, bir bilgisayarın muazzam olduğu ve birkaç birimin üzerine yerleştirildiği eski günlerde kullanılıyordu.

Modern CPU'lar tek bir birim olarak üretiliyor, bir kalıpta, hepsi aynı veriyolu ve RAM'i paylaştığı için farklı tipteki CPU'ları karıştırmamanın çok daha kolay olduğu.

CPU çevrimlerini ve RAM erişimini yöneten saatin bir de kısıtlaması vardır. Farklı hızlarda CPU'ları karıştırırken bu imkansız olacak. Saatsiz deneysel bilgisayarlar vardı ve oldukça hızlıydılar, ancak modern donanımın karmaşıklığı daha basit bir mimari getirdi.

Örneğin, L3 önbellek veriyolu çekirdeklerle aynı saat hızında çalıştığından Sandy Bridge ve Ivy Bridge çekirdeklerinin aynı anda farklı hızlarda çalışması mümkün değildir; veya park edilebilir / kapatılabilir (link: Intel'in Sandy Bridge Architecture Exposed ). (Ayrıca Skylake için yapılan yorumlarda doğrulanmıştır.)

[EDIT] Bazı insanlar, CPU'yu karıştırmanın imkansız olduğunu söyleyerek kime cevap verdiler. Onların yararı için şunu belirtiyorum: Farklı CPU'ların karıştırılması günümüz teknolojisinin ötesinde değil, ancak yapılmıyor - “neden olmasın” sorusu. Yukarıda cevaplandığı gibi, bu teknik olarak karmaşık olacaktır, bu nedenle daha pahalı ve çok az veya hiç kazanç için, bu nedenle üreticileri ilgilendirmez.

Aşağıda bazı yorumlara cevap verilmiştir:

Turbo boost CPU hızlarını değiştirir , böylece değiştirilebilir

Turbo hızlandırma, saati hızlandırarak ve bazı çarpanları değiştirerek yapılır; bu donanım, bizim için overclock yaparken tam olarak insanların yaptığıdır. Saat aynı işlemcideki çekirdekler arasında paylaşılıyor, bu da işlemcinin tamamını ve tüm çekirdeğini eşit şekilde hızlandırıyor.

Bazı telefonlarda birden fazla farklı hızda CPU bulunur

Bu tür telefonlar tipik olarak, her bir CPU ile ilişkili, daha çok iki ayrı CPU gibi (veya CPU ve GPU gibi) özel bir ürün yazılımına ve yazılım yığınına sahiptir ve tek bir sistem belleği görünümünden yoksundurlar. Bu karmaşıklığın programlanması zordur ve bu nedenle genel amaçlı masaüstü işletim sistemi tarafından kapatılan düşük seviyeli donanıma yakın yazılım geliştirmeyi gerektirdiğinden, mobil alanda asimetrik çok işlem kaldı. Bu tür yapılandırmaların PC'de bulunmamasının nedeni budur (tanımı yeterince genişletirsek CPU / GPU hariç).

2x Xeon E5-2670 v3 (HT ile 12 çekirdekli) sunucumda şu anda 1,3 GHz, 1,5 GHz, 1,6 GHz, 2,2 GHz, 2,5 GHz, 2,7 GHz, 2,8 GHz, 2,9 GHz ve diğer birçok hızda çekirdek var.

Bir çekirdek aktif veya boşta. Aynı anda aktif olan tüm çekirdekler aynı frekansta çalışır. Ne görüyorsanız, sadece zamanlama veya ortalama ya bir eserdir. Ayrıca, Windows’un bir çekirdeği uzun süre park etmediğini, ancak Kaynak İzleyici’nin yenileme hızından çok daha hızlı bir şekilde tüm çekirdeği park ettiğini / işaretini kaldırdığını, ancak bunun muhtemelen gerisinde kaldığını da belirttim. yukarıdaki açıklama.

Intel Haswell işlemcilerinde, her çekirdek için ayrı ayrı voltaj ve frekans sağlayan, voltaj regülatörleri vardır.

Bireysel voltaj regülatörleri saat hızından farklıdır. Tüm çekirdekler aynı değil - bazıları daha hızlı. Daha hızlı çekirdeklere biraz daha az güç verilir, bu da zayıf çekirdeklere verilen gücü artırmak için tavan boşluğunu oluşturur. Çekirdek voltaj regülatörleri, mevcut saat hızını korumak için mümkün olduğunca düşük bir değere ayarlanacaktır. İşlemcideki Güç Kontrol Ünitesi voltajları düzenler ve kalite bakımından farklı olan çekirdekler için gerekli olan OS taleplerini geçersiz kılar. Özet: Bireysel düzenleyiciler, bireysel çekirdek hızlarını ayarlamak için değil, tüm çekirdeklerin aynı saat hızında ekonomik olarak çalışmasını sağlamak içindir.


3
Ah. daha mshorter ve konuya. +1
Hennes

6
@harrymc onu mükemmel bir şekilde yöneten senkronizatör blokları var; DRAM, çekirdek hızdan daha yavaş çalışır ve Intel çekirdeklerinin aynı yongada dinamik olarak farklı hızlarda çalışmasını sağlayabilirsiniz.
pjc50

10
Intel Core serisi işlemciler her zaman aynı kalıpta farklı hızlarda çalışır.
Nick T,

9
Big.LITTLE mimarisinin ve çekirdek bağımsız saat artışının tek varlığı sizi yanıltıyor. Heterojen çoklu işlem ana akımdır. Bu olabilir o yapılabilir olduğu telefonlarda gerçekleştiriliyor ama için nedense değil masaüstü içinde.
Ajan_L

9
@Agent_L: Bunun nedeni karmaşıklık. Masaüstü CPU'ları zaten yeterince pahalı. Bu yüzden tekrar ediyorum: Her şey mümkün, ama asıl soru, yapılıp yapılmadığı değil, neden yapılmadığı. Bunun imkansız olduğunu iddia etmişim gibi bana saldırmayın - tek söylediğim çok karmaşık ve pahalı olduğu ve üreticilerin ilgisini çekecek çok az kazanç olduğu.
harrymc

46

Neden farklı saat hızlarında değişkenler yok? yani. 2 'büyük' ​​çekirdek ve çok sayıda küçük çekirdek.

Cebinizdeki telefonun tam olarak bu düzenlemeye uyması mümkündür - ARM big.LITTLE tam olarak tanımladığınız gibi çalışır. Orada sadece bir saat hızı farkı bile yok, bunlar tamamen farklı çekirdek tipleri olabilir - tipik olarak, yavaş çalışanlar bile "daha hileli" (sıra dışı çalıştırma ve diğer CPU optimizasyonları yok).

Esas olarak pil tasarrufu yapmak iyi bir fikirdir, ancak kendi eksiklikleri vardır; farklı CPU'lar arasında bir şeyleri taşımak için defter tutma daha karmaşıktır, çevre birimlerinin geri kalanıyla iletişim daha karmaşıktır ve en önemlisi, bu tür çekirdeklerin etkin bir şekilde kullanılması görev zamanlayıcısının son derece akıllı (ve genellikle "doğru tahmin etmek") olmalıdır .

İdeal düzenleme, zaman zaman kritik olmayan temel görevleri veya "küçük" çekirdeklerde nispeten küçük etkileşimli görevleri yürütmek ve "büyük" olanları yalnızca büyük, uzun hesaplamalar için uyandırmaktır (küçük çekirdeklerde harcanan fazladan zamanın sona ermesiyle) daha fazla pil tüketmek) veya kullanıcının küçük çekirdeklerde durgunluk hissettiği orta ölçekli etkileşimli işler için.

Bununla birlikte, zamanlayıcı, her görevin yapabileceği iş türü hakkında sınırlı bilgiye sahiptir ve bunları nerede planlayacağına karar vermek için bir miktar sezgisel (ya da belirli bir göreve bazı afinite maskelerini zorlama gibi dış bilgilere) başvurmak zorundadır. Bunu yanlış yaparsa, yavaş bir çekirdekte bir görevi çalıştırmak için çok fazla zaman / güç boşa harcar ve kötü bir kullanıcı deneyimi yaşarsınız ya da düşük öncelikli işler için "büyük" çekirdeği kullanırsınız ve bu nedenle güç harcarsınız. onları ihtiyaç duyabilecek görevlerden uzak çalmak

Ayrıca, asimetrik bir çok işlemcili sistemde, görevleri SMP sisteminden farklı bir çekirdeğe geçirmek genellikle daha maliyetlidir; bu nedenle, zamanlayıcı genellikle rasgele bir çekirdekte çalıştırmaya çalışmak ve hareket etmek yerine iyi bir ilk tahmin yapmak zorunda kalır. daha sonra etrafında.


Bunun yerine Intel seçimi, daha az sayıda aynı akıllı ve hızlı çekirdeğe sahip olmak, ancak çok agresif frekans ölçeklendirmesi yapmak. CPU meşgul olduğunda hızlı bir şekilde maksimum saat hızına çıkar, işi en hızlı şekilde yapar ve daha sonra en düşük güç kullanım moduna geri dönmek için aşağı indirir. Bu, programlayıcıya belirli bir yük getirmez ve yukarıda açıklanan kötü senaryolardan kaçınır. Tabii ki, düşük saat modunda bile, bu çekirdekler "akıllı" olanlar, bu nedenle muhtemelen düşük saatli "aptal" big.LITTLE çekirdeklerinden daha fazla tüketecekler.


1
Sezgisel tarama oldukça basit olmalı. İsteğe bağlı olmayan herhangi bir görev anahtarı (tam zaman diliminin kullanılması) yavaş işlemin görev için uygun olmadığını gösterir. Çok düşük kullanım ve tüm gönüllü görev anahtarları, görevin yavaş CPU'ya taşınabileceğinin bir göstergesidir.
R. ..

3
diğer bir problem ise 4 aptal 2GHz çekirdeğin 2 akıllı 4GHz çekirdekten daha fazla kalıp boyutu alabileceği veya 4 GHz çekirdekten daha küçük ve daha az güç alabileceği, ancak daha yavaş çalışabileceğidir
phuclv

2
@R .: prensip doğrultusunda size katılıyorum, ancak bunun için temel zamanlayıcı desteğini bile etkinleştirdiğimde, kullandığım bir ARM panosunda gülünç çekirdek titreşimi gördüm, bu yüzden başka bir şey olmalı. Ayrıca, çoğu "normal" çok iş parçacıklı yazılım SMP ile yazılmıştır, bu nedenle iş parçacığı havuzlarının toplam çekirdek sayısı kadar büyük olması ve işlerin yavaş çekirdeklere sürüklenmesi normal değildir.
Matteo Italia,

1
@Ramhound: 120W'lık bir 10 çekirdekli parça, çekirdek başına 12W'lık bir güç bütçesine sahip (tek çekirdekli turbo mod hariç). Bu yüzden en yüksek tek çekirdekli saatlerin dört çekirdekli parçalarda bulunmasının nedeni , örneğin Intel'in i7-6700k'in 4 çekirdekli 91W'lık bir güç bütçesine sahip olmasıdır: Çekirdek başına 22.75W tüm çekirdeğin aktif olduğu (4.0GHz'de bile Prime95 gibi AVX2 + FMA iş yükü). Bu nedenle, tek çekirdekli Turbo tavan boşluğunun sadece 145G, 3.6GHz turbo @ 2.2GHz tabanlı, 22 çekirdekli Broadwell E5-2699v4'e kıyasla sadece 0.2GHz daha fazla olması.
Peter Cordes

@Ramhound: Bu konuda genişleyen bir cevap ekledi . Çok çekirdekli bir Xeon , OP'nin tam olarak aradığı şey gibi gözüküyor : düşük güçte çalışan birçok çekirdek gibi çalışın veya mümkünse hızlı bir şekilde tek diş açarak çok fazla güç harcayın (turbo).
Peter Cordes

14

Oyunlardaki performans tek çekirdekli hız ile belirlenir.

Geçmişte (DOS dönemi oyunları): Doğru.
Bu günlerde artık doğru değil. Birçok modern oyun oynanır ve birçok çekirdekten yararlanır. Bazı oyunlar 4 çekirdekle zaten oldukça mutlu ve bu sayı zamanla artıyor gibi görünüyor.

video düzenleme gibi uygulamalar ise çekirdek sayısına göre belirlenir.

Doğru sıralama.

Çekirdek sayısı * çekirdek hızının * çarpma hızı.
Tek bir özdeş çekirdeği bir dizi özdeş çekirdekle karşılaştırırsanız, çoğunlukla haklısınız demektir.

Piyasada neyin mevcut olduğuna bakıldığında, tüm CPU'ların kabaca aynı hıza sahip olduğu görülüyor; temel farklar daha fazla iş parçacığı veya daha fazla çekirdek olması gibi. Örneğin:

Intel Core i5 7600k, Temel Frek 3.80 GHz, 4 Çekirdek Intel Core i7 7700k, Temel Frekans 4.20 GHz, 4 Çekirdek, 8 Diş AMD Ryzen 1600x, Temel Freq 3.60 GHz, 6 Çekirdek, 12 Diş AMD Ryzen 1800x, Temel Freq 3.60 GHz, 8 Çekirdek, 16 Konular

Farklı mimarileri karşılaştırmak tehlikeli, ama tamam ...

Öyleyse neden tüm çekirdeklerin aynı saat hızına sahip olduğu ile bu artan çekirdek düzenini görüyoruz?

Kısmen çünkü bir engelle karşılaştık. Saat hızını arttırmak, daha fazla güç ihtiyacı ve daha fazla ısı üretilmesi demektir. Daha fazla ısı, daha fazla güç ihtiyacı anlamına geliyordu. Bu şekilde denedik, sonuç korkunç pentium 4 oldu. Sıcak ve güç aç. Soğutması zor. Akıllıca tasarlanan Pentium-M'den daha hızlı bile değil (3.0GHz'de A P4, 1.7GHz'de P-mob kadar kabaca).

O zamandan beri saat hızını arttırmaktan çok vazgeçtik ve bunun yerine daha akıllı çözümler ürettik. Bunun bir kısmı ham saat hızı üzerinde birden fazla çekirdek kullanmaktı.

Örneğin, tek bir 4GHz çekirdeği kadar güç çekebilir ve üç 2GHz çekirdeği kadar ısı üretebilir. Yazılımınız birden fazla çekirdek kullanabilirse, çok daha hızlı olacaktır.

Tüm yazılımlar bunu yapamaz, ancak modern yazılımlar genellikle yapabilir.

Bu, niçin birden fazla çekirdeğe sahip cipslere sahip olduğumuzu ve neden farklı sayıda çekirdeğe sahip cipsleri sattığımızı yanıtlıyor.

Saat hızına gelince, üç nokta belirleyebileceğimi düşünüyorum:

  • Düşük güçlü CPU'lar, ham hızın gerekli olmadığı epeyce durumlar için anlamlıdır. Örneğin, Etki alanı denetleyicileri, NAS ayarları, ... Bunlar için daha düşük frekanslı işlemcilere sahibiz. Bazen daha fazla çekirdek olsa bile (ör. 8x düşük hızlı CPU bir web sunucusu için anlamlıdır).
  • Gerisi için, mevcut tasarımımız çok fazla ısınmadan genellikle yapabileceğimiz maksimum frekansın yanındayız. (mevcut tasarımlarla 3 ila 4GHz demek).
  • Ve bunun üzerine, biz binicilik yapıyoruz. Tüm CPU eşit olarak üretilmez. Bazı CPU'lar kötü bir şekilde puanlanır veya cipslerinin bir kısmında kötü puan alır, bu parçaları devre dışı bırakır ve farklı bir ürün olarak satılır.

Bunun klasik örneği 4 çekirdekli AMD çipiydi. Bir çekirdek kırılmışsa devre dışı bırakılmış ve 3 çekirdek çip olarak satılmıştır. Bu 3 çekirdeğe olan talep yüksek olduğunda, 3 çekirdekli sürüm olarak 4 çekirdekten bazıları bile satıldı ve doğru yazılım kesilmesiyle 4. çekirdeği yeniden etkinleştirebilirsiniz.

Ve bu sadece çekirdek sayısı ile yapılmaz, aynı zamanda hızı etkiler. Bazı cipsler diğerlerinden daha sıcaktır. Çok sıcak ve düşük devirli bir CPU olarak satıyor (düşük frekans da daha az ısı üretiyor demektir).

Ve sonra üretim ve pazarlama var ve bu daha da karmaşıklaşıyor.

Neden farklı saat hızlarında değişkenler yok? yani. 2 'büyük' ​​çekirdek ve çok sayıda küçük çekirdek.

Yaparız. Mantıklı olduğu yerlerde (örneğin cep telefonları), genellikle yavaş çekirdekli işlemcili (düşük güç) ve daha hızlı birkaç çekirdekli bir SoC'ye sahibiz. Ancak, tipik masaüstü PC'de bu yapılmaz. Kurulumu çok daha karmaşık, daha pahalı hale getirir ve boşaltacak batarya yoktur.


1
Belirttiğim gibi - "Bu soruyu genel bir nokta olarak soruyorum - özellikle yukarıda listelenen cpuslar hakkında değil" ve her mimariden iki örnek vermemin bir nedeni vardı. Biz 1. tüm büyük çekirdekleri ve 2. büyük iki & küçük ikisi kadar iki senaryoyu davranırsanız - o zaman bence yani - sen iki durumda uygulanır söz tüm noktaları. teorik olarak maksimum tek çekirdekli hız, talaş kırma, kullanılmadığı zaman aşağıdan aşağıya kaydırma.
Jamie

Tek bir maksimum hız çekirdeği, seçilmediği zaman o kadar da ilginç değildir. Zamanlayıcıların aslında yüksek hızlı çekirdeği / çekirdekleri tercih etmek için güncellenmeleri gerekir.
Hennes

10

Neden farklı saat hızlarında değişkenler yok? Örneğin, iki 'büyük' ​​çekirdek ve çok sayıda küçük çekirdek.

Güç tüketimi konusunda aşırı endişe duymadıkça, ilave bir çekirdekten kaynaklanan tüm masrafları kabul etmenin ve bu çekirdekten mümkün olduğunca fazla performans elde etmenin bir anlamı olmazdı. Maksimum saat hızı büyük ölçüde imalat işlemiyle belirlenir ve tüm yonga aynı işlemle yapılır. Öyleyse, çekirdeklerin bir kısmını imalat işleminin desteklediğinden daha yavaş hale getirmenin avantajı ne olurdu?

Güç tasarrufu için yavaşlatabilen çekirdeklerimiz var. En yüksek performanslarını sınırlamanın amacı ne olurdu?


2
Ben de öyle düşünüyordum. Niçin seçkin olabileceklerini bilerek, neden bazı inferior bileşenleri kullanıyorsunuz? +1.
MPW

1
@MPW Seçim, büyük bir çekirdek oluşturma ile onu kısırlaştırma arasında değildir, tüm büyüklerle birkaç büyük ve çok sayıda küçük çekirdek arasındadır. Çünkü iki rakip senaryonun var - tek iplik performansı ve çoklu iplik performansı - neden ikisini de maksimize etmiyorsunuz? Birkaç büyük ve çok sayıda küçük çekirdeğe sahip bir çip üretemeyeceğinizi biliyor muyuz?
Jamie

@Jamie Birkaç büyük ve çok sayıda küçük çekirdekli bir yonga üretebilirsiniz. Fakat daha küçük olan çekirdekler daha düşük bir saat hızında çalışamazlar.
David Schwartz

Bu şekilde tasarlansalardı… Sorun şu ki, sıfırdan bu şekilde tasarlanmadılar, mevcut bir imalat sürecini alıp kısaltmıyorlar.
Jamie

@Jamie Ne dediğini anlamıyorum. CPU'nun tamamı aynı imalat işlemiyle yapılmalıdır ve maksimum saat hızı büyük ölçüde imalat işlemlerinin bir özelliğidir. Aynı üretim seviyesinde daha düşük bir saat hızı gerektiren çekirdekler genellikle daha karmaşık olur ve daha fazla yer kaplarlar, aksi halde neden daha düşük bir saat hızı gerektirirler?
David Schwartz

9

Neden farklı saat hızlarında değişkenler yok? Örneğin, iki 'büyük' ​​çekirdek ve çok sayıda küçük çekirdek.

Nominal saat hızları, günümüzde çoğu işlemci için kendilerini fazla aşağıya çekebilme kabiliyetine sahip oldukları için pek fazla anlam ifade etmemektedir. Farklı çekirdeklerin bağımsız olarak yukarı ve aşağı saatlenip çevrilemeyeceklerini soruyorsunuz.

Diğer cevapların çoğundan şaşırdım. Modern işlemciler bunu yapabilir ve yapabilir. Bunu, örneğin bir akıllı telefonda CPU-Z açarak test edebilirsiniz - Google Pixel'im, farklı çekirdekleri farklı hızlarda çalıştırabilir:

Nominal olarak 2.15 GHz'dir, ancak iki çekirdek 1.593 GHz'de ve iki tanesi 1.132 GHz'dedir.

Aslında, 2009'dan beri ana akım Intel CPU'ları, diğer çekirdeklerin altını kapatırken bireysel çekirdeği daha da arttırma mantığına sahipti ve bir TDP bütçesinde kalırken daha iyi tek çekirdek performansı sağladı: http://www.anandtech.com/show/2832/4

“Favored Core” (Intel pazarlama terimi) olan daha yeni Intel işlemciler, fabrikada karakterize edilen her bir çekirdeğe sahiptir ve en hızlı çekirdekler çok yüksek seviyelere ulaşabilir : http://www.anandtech.com/show/11550/the-intel -skylakex inceleme çekirdekli i7-7800x test-i9-7900x i7-7820x-ve-/ 7

AMD'nin Bulldozer cipsleri ilkel bir versiyonuna sahipti: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

AMD'nin yeni Ryzen yongaları da burada açıkça belirtilmese de muhtemelen buna da sahip: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -on-1800x-1700x-ve-1700-1711


Farklı bir soruya cevap veriyorsun. Buradaki soru, iki büyük çekirdeğe karşılık çok sayıda büyük çekirdeğe ve çok sayıda küçük çekirdeğe ilişkindir - iki senaryonun esası. Her iki durumda da, talebe bağlı olarak yukarı veya aşağı saatleyebilir veya bir çekirdeği artırabilirsiniz.
Jamie

3
Bu soruyu böyle okudum. Soru, "büyük" ve "küçük" kelimelerini kullanmasına rağmen mimari olarak farklı çekirdeklerden bahsetmiyor. Sadece saat hızına odaklanır.
Grant Wu

8

Modern bir sistemde sık sık yapmak farklı hızlarda çalışan çekirdek tümüne sahip. Çok fazla kullanılmayan bir göbeğin aşağıya çekilmesi, güç kullanımını ve ısıl verimi azaltır; bu, "turbo boost" gibi özellikler, bir veya iki çekirdeğin, diğer çekirdekler boşta kaldıkça ve dolayısıyla güç kullanımında önemli ölçüde daha hızlı çalışmasını sağlar ve paketin tamamının ısı çıkışı çok yüksek değil. Böyle bir özelliğe sahip bir yonga durumunda, listede gördüğünüz hız, bir kerede tüm çekirdeklerle elde edebileceğiniz en yüksek hızdır. Ve neden tüm çekirdeklerin hızları aynı olsun? Hepsi aynı yarı iletken işlemle ortaya konan, aynı fiziksel yonga üzerinde özdeş bir tasarıma sahipler, öyleyse neden farklı olmalılar?

Tüm çekirdeklerin aynı olmasının nedeni, bir noktada bir çekirdekte çalışan bir iş parçacığının başka bir noktada farklı bir çekirdekte çalışmaya başlamasını kolaylaştırmasıdır. Başka yerlerde de belirtildiği gibi, bu özdeş çekirdek prensibine uymayan , yani ARM "big.LITTLE" CPU'ları izleyen yaygın olarak kullanılan yongalar vardır . Aklımda "büyük" ve "küçük" çekirdekler arasındaki en önemli fark saat hızı olmasa da ("büyük" çekirdekler daha yüksek maliyetle saat başına daha fazla talimat alan, daha geniş, daha spekülatif çekirdekler olma eğilimindedirler) güç kullanımı, "küçük" çekirdekler ARM’in tek sorunlu, sıralı, düşük güçlü köklerine yakındır;

Heterojen bilgi işlem alanına girerken, aynı çip üzerine entegre olan “CPU” ve “GPU” çekirdeğini görmek de oldukça yaygındır. Bunlar, tamamen farklı tasarımlara sahip, farklı komut setleri çalıştırıyor, farklı adresleniyor ve genel olarak da farklı saatlere sahip olacaklar.


7

Hızlı tek iş parçacığı performansı ve çok yüksek çok iş parçacığı verimi, Intel'in Xeon E5-2699v4 gibi bir CPU ile elde ettiğiniz şeydir .

22 çekirdekli bir Broadwell. Sürekli saat hızı, tüm çekirdeği etkin (örneğin video kodlaması) olan 2.2GHz'dir , ancak tek çekirdekli maksimum turbo 3.6GHz'dir.

Paralel bir görevi yürütürken, 145W güç bütçesini 22 6.6W çekirdek olarak kullanır. Ancak yalnızca birkaç iş parçacığı olan bir görevi çalıştırırken, aynı güç bütçesi birkaç çekirdeğin 3.6GHz'e kadar turbo yapmasına izin verir. (Büyük bir Xeon'daki düşük tek çekirdekli bellek ve L3-önbellek bant genişliği , 3.6GHz'de masaüstü dört çekirdekli kadar hızlı çalışamayacağı anlamına gelir. toplam hafıza bant genişliği.)

2.2GHz dereceli saat hızı, termal sınırlamalar nedeniyle düşüktür. Bir CPU'nun çekirdeği ne kadar fazlaysa, hepsi aktifken o kadar yavaş çalışması gerekir. Bu etki, soruda bahsettiğiniz 4 ve 8 çekirdekli işlemcilerde çok büyük değil, çünkü 8 o kadar fazla çekirdek değil ve çok yüksek güç bütçeleri var. Meraklı masaüstü işlemcileri bile bu etkiyi belirgin bir şekilde gösteriyor: Intel'in Skylake-X i9-7900X tabanı 3.3GHz, maksimum turbo 4.5GHz olan 10c20t'lik bir parça . Bu i7-6700k'den (4.0GHz sürekli / 4,2GHz turbo overclock olmadan turbo) çok daha fazla tek çekirdekli turbo tavan odası.

Frekans / gerilim ölçeklendirme (DVFS), aynı çekirdeğin geniş bir performans / verimlilik eğrisi aralığında çalışmasına izin verir. Ayrıca , CPU'ların verimli bir şekilde neler yapabileceği hakkında birçok ilginç ayrıntıya sahip olan ve hem tasarım zamanında hem de DVFS ile anında performansa karşı verimlilikle ticaret yapan Skylake güç yönetimi hakkındaki IDF2015 sunumuna bakın.

Spektrumun diğer ucunda, Intel Core-M CPU'lar 4.5W'ta 1.2GHz gibi çok düşük bir sürekli frekansa sahip , ancak 2.9GHz'e kadar gidebiliyor. Birden fazla çekirdek etkinken, çekirdeklerini tıpkı dev Xeon'lar gibi daha verimli bir saat hızında çalıştırırlar.

Faydadan en iyi şekilde yararlanmak için heterojen bir big.LITTLE tarzı mimariye ihtiyacınız yok. ARM big.LITTLE'deki küçük çekirdekler, bilgi işlem işleri için iyi olmayan sıralı çekirdeklerdir. Mesele sadece çok düşük güce sahip bir UI çalıştırmak. Bunların birçoğu video kodlama veya diğer ciddi sayıların sıkıştırılması için mükemmel olmaz. ( @ Lưu Vĩnh Phúc, x86'nın neden büyük olmadığına dair bazı tartışmalar buldu . LITTLE . Temel olarak, çok düşük güçte çalışan ekstra yavaş bir çekirdeğe fazladan silikon harcamak buna değmez.)


video düzenleme gibi uygulamalar ise çekirdek sayısına göre belirlenir. [2x 4.0 GHz + 4x 2.0 GHz, çok iş parçacıklı iş yüklerinde 4x 4GHz'den daha iyi olmaz mıydı?]

Bu senin anahtar yanlış anlamaların. Saniyede aynı sayıda toplam saat kenesinin, daha fazla çekirdek üzerine yayıldığında daha kullanışlı olduğunu düşünüyor gibi görünüyorsunuz. Asla durum böyle değil. Daha çok

cores * perf_per_core * (scaling efficiency)^cores

( perf_per_coresaat hızı ile aynı şey değildir, çünkü bir 3GHz Pentium4 saat döngüsü başına bir 3GHz Skylake'den çok daha az çalışacaktır.)

Daha da önemlisi, verimin 1.0 olması çok nadirdir. Bazı utanç verici paralel görevler neredeyse doğrusal olarak ölçeklenir (örneğin, birden fazla kaynak dosyayı derlemek). Ancak video kodlama böyle değildir . X264 için ölçekleme birkaç çekirdeğe kadar çok iyi, ancak daha fazla çekirdekle daha da kötüleşiyor. örneğin 1 ila 2 çekirdeğe gitmek hızı neredeyse iki katına çıkaracak, ancak 32 ila 64 çekirdeğe gitmek tipik bir 1080p kodlama için çok daha az yardımcı olacaktır. Hız platosunun hangi nokta olduğu ayarlara bağlıdır. ( -preset veryslowher karede daha fazla analiz yapar ve olduğundan daha fazla çekirdek tutabilir -preset fast).

Çok yavaş çekirdekli çok sayıda x264'ün tek dişli parçaları tıkanıklık yaratacaktır. (örneğin, son CABAC bit akışı kodlaması. hızlı çekirdekler).

x265, x264'ten daha fazla çekirdekden faydalanabilir, çünkü yapılacak daha fazla analiz vardır ve h.265'in WPP tasarımı, daha fazla kodlama ve kod çözme paralelliği sağlar. Fakat 1080p için bile, bir noktada sömürüde paralellik tükeniyor.


Kodlamak için birden fazla videonuz varsa, L3 önbellek kapasitesi ve bant genişliği ve bellek bant genişliği gibi paylaşılan kaynaklar için rekabet dışında, paralel ölçeklerde birden fazla video yapmak. Daha az sayıda daha hızlı çekirdek aynı anda L3 önbellekten daha fazla yararlanabilir, çünkü bir kerede sorunun çok farklı bölümlerinde çalışmaya ihtiyaç duymazlar.


4

Farklı bağımsız hızlarda çalışan farklı parçaları olan bilgisayarları tasarlamak mümkün olsa da, kaynakların tahkim edilmesi genellikle hangi hizmetin önce hizmet edileceğine hızlı bir şekilde karar verilmesini gerektirir; . Bu tür şeylere karar vermek çoğu zaman oldukça basittir. Bir "sınav zili" devresi gibi bir şey iki transistörden daha azı ile uygulanabilir. Sorun, güvenilir olan hızlı kararlar vermektir.belirsiz zor. Bunu yapmanın tek pratik yolu, çoğu durumda belirsizlikleri önleyebilen ancak iki aşamalı bir gecikmeye neden olan "senkronize edici" olarak adlandırılan bir karar kullanmaktır. Biri, kimin hakemlik kazanacağını belirlemek için her işlemde iki aşamalı bir gecikmeyi tolere etmeye istekli olsaydı, ayrı saatler bulunan iki sistem arasında güvenilir bir şekilde tahkim olacak bir önbellek denetleyicisi tasarlayabilir. Ancak böyle bir yaklaşım, çekişme olmadan taleplere derhal yanıt verilmesini isterse tartışmasız talepler hala iki aşamalı bir gecikmeye sahip olacağından, faydası daha az olacaktır.

Her şeyi ortak bir saatten çalıştırmak, senkronizasyon ihtiyacını ortadan kaldırır; bu da, saat alanları arasında bilgi iletmek veya sinyalleri kontrol etmek gerektiğinde iki zamanlı bir iletişim gecikmesini önler.


4

Masaüstü bilgisayarlar bunu zaten yapıyor.

Aynı anda 1-72 iş parçacığı etkin olan bir CPU (lara) ve 16-7168 bilgisayar ünitesine sahip bir (GPU) grubuna sahiptirler.

Grafikler, büyük paralel çalışmaların verimli olduğunu tespit ettiğimiz bir görevin örneğidir. GPU, grafik yapmak istediğimiz işlemleri yapmak için optimize edilmiştir (ancak bununla sınırlı değildir).

Birkaç büyük çekirdeğe ve çok sayıda küçük çekirdeğe sahip bir bilgisayar .

Genel olarak, bir çekirdeği X / 2 FLOPS'de üç çekirdekli X FLOPS'ta ticaret yapmaya değmez; ancak X / 5 FLOPS'da bir yüz çekirdeği X FLOPS'ta bir çekirdeğin ticareti buna değer.

Bunun için programlama yaparken, CPU ve GPU için çok farklı bir kod üretirsiniz. İş yükünü bölmek için birçok iş yapılır; böylece GPU, GPU'da en iyi şekilde yapılan işleri alır ve CPU, CPU'da en iyi şekilde yapılan işleri alır.

Bir CPU için kod yazmak tartışmalı olarak daha kolaydır, çünkü toplu olarak paralel kodun doğru olması daha zordur. Bu yüzden sadece kazanç büyük olduğunda, çok çekirdekli durumlar için tek çekirdekli performansla işlem yapmaya değer. GPU'lar, doğru kullanıldığında büyük bir kazanç sağlar.

Şimdi, mobil cihazlar farklı bir sebepten dolayı bunu yapıyor. Bunlar, oldukça yavaş olan düşük güç çekirdeğine sahiptir, ancak hesaplama birimi başına da önemli ölçüde daha az güç kullanırlar. Bu, CPU yoğun görevler yapmadıkları zaman pil ömrünü çok daha uzatmalarını sağlar. Burada farklı bir "büyük kazancımız" var; performans değil, güç verimliliği. Hala işletim sisteminin bir parçası ve bunun doğru çalışması için uygulama yazarı üzerinde çok şey gerekiyor; sadece büyük kazançlar buna değdi.


-1

Ortak sistemlerin aynı hızda çekirdeklerinin olmasının nedeni basit bir matematik problemidir. Tek bir sabit sete dayanan giriş ve çıkış zamanlaması (optimizasyonlarla) (ölçeklenebilir = birkaç birim ile çarpılabilir).

Ve birileri burada mobil cihazların farklı hızlarda çok cpus içerdiğini söyledi. Bu sadece doğru değil. Merkezi işlem birimi değilse, merkezi işlem birimi değildir; Üreticinin ne söylediği veya söylenmediği önemli değil. Bu durumda [cpu] değil sadece bir "destek paketi".


-10

OP'nin temel elektroniği anladığını sanmıyorum. Tüm bilgisayarlar, çalışması için bir şey gerektirir - bir saat. Dahili bir saat tarafından oluşturulan saat döngüleri, tüm verilerin hareketi için metronomdur. Eşzamanlılığı sağlamak için, tüm işlemlerin ortak bir saate bağlanması gerekir. Bu, hem yalıtılmış bir bilgisayarda hem de tüm ağlarda dahili veri yürütme için geçerlidir.

Bir CPU üzerindeki çekirdekleri farklı frekanslarda çalıştırarak izole etmek istiyorsanız, kesinlikle böyle bir platform tasarlayabilirsiniz. Bununla birlikte, her bir çekirdeği kendi izole edilmiş anakart özellikleri alt grubuna bağlayan bir anakart çözümü mühendisliği gerektirecektir. Dört çekirdekli bilgisayar yerine 4 ayrı bilgisayarla kalırsınız.

Alternatif olarak, başka bir kişinin de belirttiği gibi, çekirdeğinize çekirdek frekansını bireysel olarak ayarlayan kod ekleyebilirsiniz. Bu olsa da, performans üzerinde isabetlere neden olacaktır. Hız veya güç verimliliğine sahip olabilirsiniz - ancak ikisine de sahip olamazsınız.


1
Bilmiyorum, bu yüzden sorumu. Bir Intel i5 7600'ü bir i5 7600k ile karşılaştırarak baz saatin her ikisi için de 100 mhz olduğunu ve aradaki farkın çekirdek oranı olduğunu görüyoruz. Böylece, aynı 100 mhz'lik temel saate sahip, ancak farklı çekirdek oranlarına sahip iki çekirdeğiniz olabilir - bu senaryo senkronizasyon gereksinimini ihlal ediyor mu?
Jamie

4
Evet, bu çok fazla basitleştiriyor; tüm işlemlerin aynı saate bağlanması gerektiği doğru değil , çok fazla saat alanı var ve aynı maça farklı göbekleri çalıştırmak mükemmel bir şekilde mümkün. Otobüs saati, dahili saatle aynı değildir.
pjc50

11
Modern çiplerde halihazırda birden fazla saat alanı vardır (ucuz ve aptal bir mikrodenetleyicinin RTC'si bile genellikle ayrı bir 32.7kHz alanı üzerinde çalışır). Sadece saat alanları arasında senkronizasyon yapmanız gerekiyor. Ortak bir saatte bile, 2, 4, 8 ve daha fazlası ile bölebilirsiniz.
Michael,

1
Hepsi doğru. Ancak yine de operasyon verimliliğini azaltır. Ve bu her zaman performans açısından amaçtır. Bu benim amacımdı. Tabii ki yapabilirsin. Ama performansa bir göz atarsın.
RyRoUK

"Performansı azaltır" - neye kıyasla? Aynı saatte çalışan n işlemcinizin olduğu bir temel durumu varsayıyorsunuz. Durum böyle olmak zorunda değil. İşlemci X + işlemci Y, işlemci Y'nin tam olarak ne olduğu önemli değildir, yalnızca işlemci X'den daha güçlü / esnek bir çözümdür.
hmijail
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.