Różnica między rdzeniem a procesorem

197

Jaka jest różnica między rdzeniem a procesorem?

Już go szukałem w Google, ale mam definicję wielordzeniową i wieloprocesorową, ale nie pasuje do tego, czego szukam.

Saad Achemlal
źródło

Odpowiedzi:

196

Rdzeń jest zwykle podstawową jednostką obliczeniową procesora - może uruchamiać pojedynczy kontekst programu (lub wiele, jeśli obsługuje wątki sprzętowe, takie jak hiperwątkowość na procesorach Intel), utrzymując prawidłowy stan programu, rejestry i prawidłową kolejność wykonywania, oraz wykonywanie operacji za pośrednictwem ALU . Dla celów optymalizacji rdzeń może również przechowywać wewnętrzne pamięci podręczne z kopiami często używanych porcji pamięci.

Procesor może mieć jeden lub więcej rdzeni do wykonywania zadań w danym czasie. Te zadania są zwykle procesami oprogramowania i wątkami, które system operacyjny planuje. Należy pamiętać, że system operacyjny może mieć wiele wątków do uruchomienia, ale procesor może uruchomić X takich zadań tylko w danym momencie, gdzie X = liczba rdzeni * liczba wątków sprzętowych na rdzeń. Reszta będzie musiała poczekać, aż system operacyjny je zaplanuje, czy to zapobiegając aktualnie uruchomionym zadaniom, czy jakimkolwiek innym sposobem.

Oprócz jednego lub wielu rdzeni, procesor będzie zawierał interkonekt, który łączy rdzenie ze światem zewnętrznym, a także zwykle dużą współdzieloną pamięć podręczną „ostatniego poziomu”. Istnieje wiele innych kluczowych elementów wymaganych do działania procesora, ale ich dokładne lokalizacje mogą się różnić w zależności od projektu. Będziesz potrzebował kontrolera pamięci, aby rozmawiać z pamięcią, kontrolerów I / O (wyświetlacz, PCIe, USB itp.). W przeszłości elementy te znajdowały się poza procesorem, w uzupełniającym „chipsecie”, ale większość współczesnych konstrukcji zintegrowała je z procesorem.

Ponadto procesor może mieć zintegrowany procesor graficzny i prawie wszystko, co projektant chciał zachować blisko ze względu na wydajność, moc i względy produkcyjne. Konstrukcja procesora zyskuje na popularności w tak zwanym systemie na chipie (SoC).

Jest to „klasyczny” projekt, używany przez większość nowoczesnych urządzeń ogólnego przeznaczenia (komputer kliencki, serwery, a także tablety i smartfony). Możesz znaleźć bardziej skomplikowane projekty, zwykle w akademii, w których obliczenia nie są wykonywane w podstawowych jednostkach „podobnych do rdzenia”.

Leeor
źródło
@Leeor więc dla 4-procesorowej i 2-rdzeniowej maszyny, jeśli uruchomię pętlę zajętą, czy nie powinna ona angażować tylko 1 procesora i 1 rdzenia (tj. 50%) tylko jednego procesora? Moja obserwacja pokazuje, że angażuje wszystkie procesory do 100% ... czegoś, czego brakuje w moim zrozumieniu ...
Nrj
2
@Nrj, jeśli uruchomisz jedną aplikację jednowątkową, zostanie ona przypisana do jednego rdzenia i aktywuje tylko jeden wątek HW. Ten wątek będzie mógł wykorzystać 100% tego rdzenia, ponieważ nie będzie z nim współpracował żaden inny wątek. Jeśli aktywujesz inną aplikację, zwykle zostanie ona przypisana do innego rdzenia i tak dalej, aż do nasycenia liczby rdzeni. Poza tym każdy dodatkowy wątek będzie ponownie planowany do tych samych rdzeni za pomocą SMT. W tym momencie wykorzystanie rdzenia zostanie rozdzielone między 2 wątki (a jeśli zachowają się symetrycznie, każdy prawdopodobnie osiągnie ~ 50%)
Leeor
@Leeor najwyraźniej to było moje oczekiwanie, ale nie to, co znalazłem. Widziałem, że wszystkie cztery procesory (w menedżerze zadań) podskakują, pokazując 100% użycia. Kod był prosty - dla (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj
@Leeor Myślę, że źle wykonałem test. wygląda na to, że mój obszar roboczy online ma wirtualne procesory (4), ale pojedynczy procesor. Dlatego wszyscy są zajęci. Kiedy przeprowadziłem test na maszynie fizycznej o 2 procesorach (dwurdzeniowy), widzę, że wykorzystanie procesora wynosi około 25%, co jest zgodne z oczekiwaniami.
Nrj
Pamiętaj, że ta terminologia różni się w zależności od tego, kogo zapytasz. Na przykład w moim systemie Debian, sprawdzając /proc/cpuinfo, widzę szesnaście processor:wierszy, chociaż mówi model: AMD Ryzen 7 2700X Eight-Core Processor. Tak więc przynajmniej w tym przypadku każdy z 8 „rdzeni” ma dwa „procesory”, co jest sprzeczne z niektórymi innymi odpowiedziami tutaj.
jwd
130

Obraz może zawierać więcej niż tysiąc słów:

Obraz może zawierać więcej niż tysiąc słów

* Rysunek opisujący złożoność nowoczesnego systemu wieloprocesorowego i wielordzeniowego.

Źródło:

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

JohnTortugo
źródło
114
Prawdopodobnie mówi więcej niż tysiąc słów dla małych stworzeń takich jak mrówki.
Niebo
12
Nie mam nic przeciwko używaniu obrazów, ale przynajmniej możesz wyjaśnić, a nie tylko skopiować / wkleić obraz.
Patricio Sard
1
@Sky Uważaj na mrówki ... #hunter_x_hunter: 3
Saad Achemlal
Dla tych, którzy stwierdzili, że jest za mały, aby go przeczytać, spróbuj kliknąć prawym przyciskiem myszy, Open images in new taba następnie powiększ cltr+
obraz
28

Wyjaśnijmy najpierw, co to jest procesor, a co rdzeń, centralny procesor jednostki centralnej, może mieć wiele jednostek rdzeniowych, te rdzenie same w sobie są procesorami, zdolnymi do wykonywania programu, ale są one zawarte w tym samym układzie.

W przeszłości jeden procesor był rozdzielany na kilka układów, ale w miarę postępów Prawa Moore'a stworzyli, aby mieć pełny procesor w jednym układzie (matrycy), od lat 90. producent zaczął montować więcej rdzeni w tej samej matrycy, więc to jest koncepcja wielordzeniowa.

W dzisiejszych czasach możliwe jest posiadanie setek rdzeni na tym samym procesorze graficznym (chip lub die), Intel Xeon. Inną techniką opracowaną w latach 90. była jednoczesna wielowątkowość, w zasadzie stwierdzono, że możliwe było posiadanie innego wątku w tym samym jednordzeniowym procesorze, ponieważ większość zasobów została już zduplikowana, podobnie jak ALU, wiele rejestrów.

Zasadniczo więc procesor może mieć wiele rdzeni, z których każdy może obsługiwać jeden wątek lub więcej w tym samym czasie, możemy spodziewać się większej liczby rdzeni w przyszłości, ale z większą trudnością będzie można wydajnie programować.

Germán Alfaro
źródło
Nawet „ Intel E5-2697 v2 ” ma tylko 12 rdzeni ... Dlaczego mówicie „setki rdzeni na tym samym procesorze”? Co ogranicza liczbę rdzeni na jednym procesorze?
Pacerier,
2
Są to mikroprocesory badawcze w liczbie +100 rdzeni, a kilka przy produkcji zajrzyj na: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro
9

CPU jest jednostką centralną. Od 2002 roku mamy tylko procesor jednordzeniowy, tzn. Będziemy wykonywać tylko jedno zadanie lub program naraz.

Aby uruchomić wiele programów jednocześnie, musimy używać wielu procesorów do wykonywania wielu procesów jednocześnie, więc potrzebowaliśmy do tego innej płyty głównej, co jest bardzo kosztowne.

Tak więc Intel wprowadził koncepcję hiperwątkowości, tzn. Przekształci pojedynczy procesor w dwa procesory wirtualne, tj. Mamy dwa rdzenie do naszego zadania. Teraz procesor jest pojedynczy, ale udaje (maskaradowany), że ma podwójny procesor i wykonuje wiele zadań. Ale posiadanie prawdziwych wielu rdzeni będzie lepsze, dlatego ludzie rozwijają tworzenie wielordzeniowych procesorów, tj. Wielu procesorów na jednym urządzeniu, tj. Chwytając wiele procesorów na jednym dużym procesorze. Tj. Wiele rdzeni.

Himanshu Gupta
źródło
12
Co dokładnie wydarzyło się w 2002 roku?
Peter Mortensen
1
Intel nie wymyślił koncepcji jednoczesnego wielowątkowości. Wikipedia twierdzi, że Alpha EV8 była pierwszą dużą komercyjną implementacją .
Peter Cordes,
3

Na początku ... jak przed latami 90. ... procesory nie były w stanie wykonywać wielu zadań tak skutecznie ... ponieważ pojedynczy procesor mógł obsłużyć tylko jedno zadanie ... więc kiedy mówiliśmy, że mój program antywirusowy, słowo Microsoft, VLC itp. oprogramowanie działa jednocześnie ... to nie jest prawda. Kiedy powiedziałem, że procesor może obsłużyć pojedynczy proces naraz ... miałem na myśli to. W rzeczywistości przetworzyłoby pojedyncze zadanie ... wtedy wstrzymywał je ... wziął inne zadanie ... ukończył je, jeśli jest krótkie lub ponownie wstrzymał je i dodał do kolejki ... a następnie następne. Ale ta „pauza”, o której wspomniałem, była tak mała (około 1ns), że nie zrozumiałeś, że zadanie zostało wstrzymane. Na przykład. Na VLC podczas słuchania muzyki działają jednocześnie inne aplikacje, ale jak już mówiłem ... jeden program na raz ...

Ale chodziło o stare procesory ...

Obecnie procesory, tj. Komputery trzeciej generacji, mają procesory wielordzeniowe. Teraz „rdzenie” można porównać do samych procesorów 1. lub 2. generacji… osadzonych w jednym układzie scalonym, jednym procesorze. Więc teraz zrozumieliśmy, czym są rdzenie, tj. Są to mini procesory, które łączą się w procesor. I każdy rdzeń może obsługiwać pojedynczy proces naraz lub wiele wątków zaprojektowanych dla systemu operacyjnego. I postępują zgodnie z tymi samymi krokami, co wspomniałem powyżej o pojedynczym procesorze.

Na przykład. Procesor i7 6gen ma 8 rdzeni ... tj. 8 mini procesorów w 1 i7 ... tj. Jego prędkość jest 8 razy większa niż w starych procesorach. I w ten sposób można wykonywać wiele zadań.

W jednym procesorze mogą znajdować się setki rdzeni. Intel i128.

Mam nadzieję, że dobrze to wytłumaczyłem.

Hrishikesh Dabir
źródło
0

Zdjęcie Intela jest pomocne, jak pokazuje najlepsza odpowiedź Tortugi. Oto jego podpis.

Procesor : jeden układ półprzewodnikowy, procesor (centralna jednostka przetwarzająca) umieszczony w jednym gnieździe, około 1950-tych. Z biegiem czasu więcej funkcji zostało zapakowanych w procesor. Przed wydaniem w 1950 roku procesorów jednoukładowych jeden procesor mógł być rozproszony na wiele układów. W połowie 2010 r. Układy na układzie scalonym sprawiły, że nieco bardziej szkicowe było zrównanie jednego procesora z jednym układem, chociaż generalnie to ludzie rozumieją przez procesor, ponieważ w „tym komputerze jest procesor i7” lub „w tym systemie komputerowym” ma cztery procesory ”.

Rdzeń : jeden blok procesora, wykonujący jedną instrukcję na raz. (Zobaczysz, jak ludzie mówią jedną instrukcję na cykl zegara, ale niektóre procesory używają wielu cykli zegara dla niektórych instrukcji).

Bennett Brown
źródło
1
Rdzeń x86 logicznie wykonuje instrukcje pojedynczo, w kolejności programów, ale w rzeczywistości współczesne procesory wydają dużo tranzystorów, aby zachować iluzję robienia tego, podczas gdy w rzeczywistości są 4-szerokimi superskalarnymi wykonaniami poza kolejnością. realworldtech.com/haswell-cpu . (Lub 5 lub 6 szerokości, dla Ryzen). W praktyce więcej niż 3 instrukcje na zegar nie są rzadkie, w przypadku niektórych kodów. Ale znacznie poniżej 1 jest również powszechne w innych kodach, które wąskie gardła w przypadku błędów pamięci podręcznej i / lub nieprzewidzianych oddziałów.
Peter Cordes,
Ponadto architektury VLIW, takie jak Itanium, są wyraźnie równoległe i logicznie, a także fizycznie wykonują wiele instrukcji równolegle. BTW, interesujący historyczny punkt, że jeden procesor zabrał więcej niż jeden układ na początku.
Peter Cordes,