Çekirdek ve işlemci arasındaki fark


197

Bir çekirdek ve bir işlemci arasındaki fark nedir?

Zaten Google'da aradım, ancak sadece çok çekirdekli ve çok işlemcili bir tanımım var, ancak aradığımla eşleşmiyor.

Yanıtlar:


197

Bir çekirdek genellikle CPU'nun temel hesaplama birimidir - tek bir program bağlamı çalıştırabilir (veya Intel CPU'larda hiper iş parçacığı gibi donanım iş parçacıklarını destekliyorsa), doğru program durumunu, kayıtları ve doğru yürütme sırasını koruyabilir ve operasyonları ALU'lar aracılığıyla gerçekleştirmek . Optimizasyon amacıyla, bir çekirdek ayrıca sık kullanılan bellek parçalarının kopyalarını içeren çekirdek önbellekleri de tutabilir.

Bir CPU'nun belirli bir zamanda görevleri gerçekleştirmek için bir veya daha fazla çekirdeği olabilir. Bu görevler genellikle işletim sisteminin planladığı yazılım işlemleri ve iş parçacıklarıdır. İşletim sisteminin çalıştırılacak çok sayıda iş parçacığı olabileceğini unutmayın, ancak CPU bu tür görevleri yalnızca belirli bir zamanda X çalıştırabilir; burada X = sayı çekirdeği * çekirdek başına donanım iş parçacığı sayısı. Geri kalanlar, işletim sisteminin şu anda çalışan görevleri veya başka herhangi bir yöntemi önleyerek onları planlamasını beklemek zorunda kalacaklar.

Bir veya daha fazla çekirdeğe ek olarak, CPU çekirdeği dış dünyaya bağlayan bir ara bağlantı ve genellikle de büyük bir "son seviye" paylaşılan önbellek içerir. Bir CPU'nun çalışması için gereken diğer birçok anahtar unsur vardır, ancak kesin konumları tasarıma göre değişebilir. Bellek, G / Ç denetleyicileri (ekran, PCIe, USB vb.) İle konuşmak için bir bellek denetleyicisine ihtiyacınız olacaktır. Geçmişte bu elemanlar CPU'nun dışında, tamamlayıcı "yonga setinde" idi, ancak çoğu modern tasarım onları CPU'ya entegre etti.

Buna ek olarak CPU entegre bir GPU'ya ve tasarımcının performans, güç ve üretim hususlarına yakın tutmak istediği hemen hemen her şeye sahip olabilir. CPU tasarımı çoğunlukla çip üzerinde sistem (SoC) olarak adlandırılan sisteme yöneliyor.

Bu, çoğu modern genel amaçlı cihaz (istemci PC, sunucular ve ayrıca tablet ve akıllı telefonlar) tarafından kullanılan "klasik" bir tasarımdır. Genellikle hesaplamaların temel "çekirdek benzeri" birimlerde yapılmadığı akademide daha ayrıntılı tasarımlar bulabilirsiniz.


@Ayrıca, 4 cpu ve 2 çekirdekli bir makine için, meşgul bir döngü çalıştırırsam, cpu'dan sadece 1 cpu ve 1 çekirdeği (yani% 50) kullanmamalı mı? Benim gözlem tüm cpu% 100
nişan gösterir

2
@Nrj, tek iş parçacıklı bir uygulama çalıştırırsanız, tek bir çekirdeğe atanır ve üzerinde yalnızca tek bir HW iş parçacığını etkinleştirir. Bu iplik, onunla birlikte çalışan başka bir iplik olmadığı için bu çekirdeğin% 100'ünü kullanabilecektir. Başka bir uygulamayı etkinleştirirseniz, genellikle çekirdek sayısını doyurana kadar başka bir çekirdeğe tahsis edilir. Bunun ötesinde, herhangi bir ek iş parçacığı SMT kullanılarak aynı çekirdeklere yeniden programlanacaktır. Bu noktada, çekirdek kullanımı 2 iş parçacığı arasında dağıtılacaktır (ve simetrik davranırlarsa, her biri büyük olasılıkla ~% 50'ye ulaşacaktır)
Leeor

@ Görünüşe göre bu benim beklentim oldu ama onun ne buldum değil. Dört CPU'nun (taskmanager'de)% 100 kullanımı göstermek için atladığını gördüm. Kod basitti - (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj

@Yalnızca testi yanlış yaptığımı düşünüyorum. çevrimiçi çalışma alanımın sanal CPU'ları (4) ama tek bir işlemcisi olduğu anlaşılıyor. Bu yüzden hepsi meşgul oluyor. Testi 2 cpu fiziksel bir makinede (çift çekirdekli) gerçekleştirdiğimde, cpu kullanımının yaklaşık% 25 olduğunu ve beklentiyle aynı olduğunu görebiliyorum.
Nrj

Bu terminolojinin kime sorduğunuza bağlı olarak değiştiğini unutmayın. Mesela Debian sistemimde teftişe rağmen, /proc/cpuinfoon altı processor:satır görüyorum model: AMD Ryzen 7 2700X Eight-Core Processor. Yani, en azından bu durumda, 8 "çekirdeğin" her birinin iki "işlemcisi" vardır, bu da diğer bazı cevaplarla çelişmektedir.
jwd

130

Bir görüntü binden fazla kelime söyleyebilir:

Bir görüntü binden fazla kelime söyleyebilir

* Modern çok işlemcili, çok çekirdekli bir sistemin karmaşıklığını tanımlayan şekil.

Kaynak:

https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization


114
Muhtemelen karıncalar gibi küçük yaratıklar için binden fazla kelime söylüyor.
Gökyüzü

12
Görüntüleri kullanmaya karşı hiçbir şeyim yok, ama en azından sadece bir görüntüyü kopyalamak / yapıştırmak değil, daha fazla açıklama yapabilirsiniz.
Patricio Sard

1
@Sky Karıncalara karşı dikkatli ol ... #hunter_x_hunter: 3
Saad Achemlal

Okumak için çok küçük olduğunu söyleyenler için, sağ tıklayın, Open images in new tabardından cltr++
Ng Sek Long

28

Öncelikle bir CPU nedir ve bir çekirdek nedir, bir merkezi işlem birimi CPU'su, birden fazla çekirdek birimine sahip olabilir, bu çekirdekler kendi başına bir programdır, bir programı yürütebilir ancak aynı çipte bulunur.

Geçmişte bir CPU birkaç çip arasında dağıtıldı, ancak Moore Yasası ilerledikçe, bir çipin (kalıp) içinde tam bir CPU'ya sahip oldular, çünkü 90'lı yıllar üreticinin aynı kalıpta daha fazla çekirdek yerleştirmeye başladığı için çok çekirdekli kavramı.

Bu günlerde, aynı CPU (yonga veya kalıp) GPU'larda yüzlerce çekirdeğe sahip olmak mümkündür, Intel Xeon. 90'larda geliştirilen diğer teknik aynı anda çoklu iş parçacıklıydı, temelde aynı tek çekirdekli CPU'da başka bir iş parçacığına sahip olmanın mümkün olduğunu keşfettiler, çünkü kaynakların çoğu zaten ALU, çoklu kayıtlar gibi çoğaltıldı.

Temelde bir CPU, her biri bir iş parçacığını veya daha fazlasını aynı anda çalıştırabilen birden fazla çekirdeğe sahip olabilir, gelecekte daha fazla çekirdeğe sahip olmayı bekleyebiliriz, ancak verimli bir şekilde programlamak daha zor olur.


" Intel E5-2697 v2 " bile sadece 12 çekirdeğe sahiptir ... Neden "aynı CPU'da yüzlerce çekirdek" diyorsunuz? Tek bir CPU'da mümkün olan çekirdek sayısını ne sınırlar?
Pacerier

2
Bunlar, +100 çekirdek sayısında araştırma mikroişlemcileridir ve üretimdeki birkaç tanesi şunlara
Germán Alfaro

9

CPU merkezi bir işlem birimidir. 2002'den beri sadece tek çekirdekli işlemcimiz var, yani bir seferde sadece tek bir görev veya program gerçekleştireceğiz.

Bir seferde birden fazla program çalıştırmak için, bir seferde çoklu işlemleri yürütmek için çoklu işlemciyi kullanmak zorundayız, bu yüzden bunun için başka bir anakart gerekliydi ve bu çok pahalı.

Böylece, Intel hiper iş parçacığı kavramını tanıttı, yani tek CPU'yu iki sanal CPU'ya dönüştürecektir, yani görevimiz için iki çekirdeğimiz var. Şimdi CPU tek, ancak çift CPU'ya sahip olduğunu ve birden fazla görevi yerine getirdiğini iddia ediyor (maskeli). Ancak gerçek çoklu çekirdeklere sahip olmak bundan daha iyi olacaktır, bu yüzden insanlar çok çekirdekli işlemci, yani tek bir kutuda birden fazla işlemci geliştirir, yani tek bir büyük CPU'da birden fazla CPU kaparlar. Yani birden fazla çekirdek.


12
2002'de tam olarak ne oldu?
Peter Mortensen

1
Intel, eşzamanlı çoklu kullanım kavramını icat etmedi. Wikipedia, Alpha EV8'in ilk büyük ticari uygulama olduğunu söyledi .
Peter Cordes

3

İlk günlerde ... 90'lı yıllardan önce olduğu gibi ... işlemciler verimli bir şekilde çoklu görevler yapamadılar ... çünkü tek bir işlemci sadece tek bir görevi halledebilirdi ... antivirüs, microsoft word, vlc, vb. yazılımların hepsi aynı anda çalışıyor ... bu aslında doğru değil. Bir işlemcinin her seferinde tek bir işlemi yapabileceğini söylediğimde ... demek istedim. Aslında tek bir görevi işleyecekti ... o zaman bu görevi duraklatmak için kullanılır ... başka bir görev al ... kısa bir görevse ya da tekrar duraklatır ve kuyruğa eklerse ... tamamla. Ancak bahsettiğim bu 'duraklama' o kadar küçüktü (yaklaşık 1ns), görevin duraklatıldığını anlamadınız. Örneğin. Vlc'de müzik dinlerken aynı anda çalışan başka uygulamalar da var ama söylediğim gibi ... her seferinde bir program ...

Ama bu eski işlemcilerle ilgiliydi ...

Günümüzün işlemcileri, yani 3. nesil parçalar çok çekirdekli işlemcilere sahiptir. Şimdi 'çekirdekler' bir 1. veya 2. nesil işlemcilerle karşılaştırılabilir ... tek bir yonga, tek bir işlemci üzerine gömülü. Şimdi çekirdeklerin ne olduğunu anladık, yani işlemci olmak için bir araya gelen mini işlemciler. Ve her çekirdek bir seferde tek bir işlemi veya işletim sistemi için tasarlanan çoklu iş parçacıklarını işleyebilir. Ve yukarıda tek bir işlemci hakkında bahsettiğim adımları izlerler.

Örneğin. Bir i7 6gen işlemcinin 8 çekirdeği vardır ... yani 1 i7'de 8 mini işlemci ... yani hızı eski işlemcilerin 8 katıdır. Ve çoklu görev bu şekilde yapılabilir.

Tek bir işlemcide yüzlerce çekirdek olabilir. Intel i128.

Umarım bunu iyi açıklamışımdır.


0

Intel'in resmi, Tortuga'nın en iyi cevabında gösterildiği gibi faydalıdır. İşte bunun için bir resim yazısı.

İşlemci : Bir yarı iletken yonga, CPU (merkezi işlem birimi), 1950'ler-2010'larda bir sokete oturmuş. Zamanla, CPU çipine daha fazla fonksiyon eklendi. 1950'lerin tek yongalı işlemcilerin yayınlanmasından önce, bir işlemci birden fazla yongasına yayılmış olabilir. 2010'ların ortalarında, yongadaki sistem yongaları, bir işlemciyi bir yongaya eşitlemeyi biraz daha kabataslak yaptı, ancak genellikle "bu bilgisayarda bir i7 işlemcisi var" veya "bu bilgisayar sistemi gibi, işlemci tarafından kastedilen bu dört işlemcisine sahip. "

Çekirdek : Bir kerede bir komut yürüten CPU'nun bir bloğu. (İnsanların saat döngüsü başına bir talimat söylediğini görürsünüz, ancak bazı CPU'lar bazı talimatlar için birden fazla saat döngüsü kullanır.)


1
Bir x86 çekirdeği mantıksal olarak talimatları birer birer program sırasına göre yürütür, ancak gerçekte modern CPU'lar aslında 4 geniş süperskalar sıra dışı yürütme olurken bunu yapma yanılsamasını korumak için çok sayıda transistör harcarlar. realworldtech.com/haswell-cpu . (Veya Ryzen için 5 veya 6 genişliğinde). Bazı kodlar için pratikte saat başına 3'ten fazla talimat nadir değildir. Ancak, önbellek isabetlerinde ve / veya şube yanlış tahminlerinde darboğaz oluşturan diğer kodlarda da 1'in altında yaygındır.
Peter Cordes

Ayrıca, Itanium gibi VLIW mimarileri açık bir şekilde paraleldir ve mantıksal olarak aynı zamanda birden çok talimatı fiziksel olarak paralel olarak yürütür. BTW, ilginç bir nokta, bir CPU'nun ilk günlerde birden fazla çip aldığı.
Peter Cordes
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.