Wątek przeniesiony 2024-07-03 17:14 z Nietuzinkowe tematy przez Riddle.

Ilość rdzeni vs prędkość procesora co preferujecie

0

Mam takie pytanie co bardziej preferujecie prędkość zegara procesora czy ilość rdzeni bo mi się wydaje, że w przypadku jak jest w systemie duża ilość procesów to wtedy lepje wychodzi ilość rdzeni procesora, natomiast jak uruchomi jeden proces i w nim jeden wątek to będzie tylko jeden rdzeń wykonywał obliczenia.

Ja mam jeszcze takie jedno pytanie bo w procesorach jest podana liczba rdzeni i liczba wątków czy każdy rdzeń ma własne rejestry procesora pamięć cache czy pamięć cache jest cała dla wszystkich rdzeni ? ja to wygląda w rdzeniach i wątkach ?

0
  1. U mnie aktualnie komp "nic nie robi" ale jak widać nic nie robi na wszystkich rdzeniach screenshot-20240703163209.png
  2. Prędkość procesora jest aktualnie fizycznie ograniczona przez technologię. Dla zwykłego zjadacza chleba jest to coś koło 5-6GHz (mogę się mylić ale tak mi się coś kojarzy)
  3. Dwukrotny wzrost taktowania wcale nie oznacza, że dane zadanie będzie wykonane dwa razy szybciej
  4. Pomijając stress testy i jakieś specyficzne prace jak renderowanie czy skomplikowane obliczenia to kiedy miałeś przypadek, że przez np. 5 minut miałeś wszystkie rdzenie zajęte na 100%
  5. Żeby konkretny soft wykorzystał wszystkie dostępne rdzenie to musi być tak napisany. Wbrew pozorom to wcale nie jest takie proste i często programy sobie z tym nie radzą i efekt jest taki, że masz naście albo dziesiąt rdzeni, program wisi bo coś robi a finalnie wykorzystany na 100% jest tylko jeden rdzeń
  6. Raczej nie spotyka się (poza mocno specjalizowanymi jednostkami ale chyba nie o takich tu mowa) procesorów z ogromną ilością rdzeni i bardzo małym taktowaniem czy z jednym rdzeniem i ogromnym taktowaniem.
    Reasumując pytanie mocno "dziwne" i wątpię czy ktoś tak na to patrzy. Czasy, kiedy wyznacznikiem "jakości" PCta była prędkość procesora już minęły.
0

Na stackoverflow jest odpowiedź, że ‘cache’ L3 jest wspólna dla procesora, a każdy ‘core’ ma L1 i L2. Tak też jest na grafice tutaj. Ale w tym dokumencie podają, że L2 jest współdzielona.

0

Ja mam jeszcze takie jedno pytanie bo w procesorach jest podana liczba rdzeni i liczba wątków czy każdy rdzeń ma własne rejestry procesora pamięć cache czy pamięć cache jest cała dla wszystkich rdzeni ? ja to wygląda w rdzeniach i wątkach ?

Tak każdy rdzeń ma swoje rejestry, pamięć cache L1 i L2, A L3 jest współdzielona między innymi rdzeniami.
Stąd też te paskudne ataki meltdown i spectral, czy te nowe w mac os, które pozwalały ładować do cache cudzych procesów dane, bo procesor myślał, że dla tej ścieżki wykonania jest potrzebny kod z nieupoważnionego miejsca.
Te ataki były o tyle kreatywne, ale połatali je, ale dalej coś jest, niedługo cache będą kompletnie izolowane dla bezpieczeństwa, ale jeszcze nie wymyślili jak to rozwiązać.
Mogłeś zasymulować odwołanie do pamięci, która nie istnieje i spekulatywnym wykonaniem procesor odwołał się do pamięci co nie istnieje lub nie ma dostępu, co normalnie daje exeption, ale w tym przypadku jest on ignorowany, mógł tak odczytać jakąś wartość z pamięci kernela, potem tą wartość użyć żeby odczytać wartość ze znanej tablicy, wyrównanej do wielkości cache i jak mierzyłeś czas dostępu to wiedziałeś, który cache został zaladowany i mogłeś bajt odczytać pamięci, a potem po prostu bajt po bajcie całą pamięć, to był jeden z piękniejszych ataków kiedyś.

tomixtomi0001 napisał(a):

Mam takie pytanie co bardziej preferujecie prędkość zegara procesora czy ilość rdzeni bo mi się wydaje, że w przypadku jak jest w systemie duża ilość procesów to wtedy lepje wychodzi ilość rdzeni procesora, natomiast jak uruchomi jeden proces i w nim jeden wątek to będzie tylko jeden rdzeń wykonywał obliczenia.

Im większa częstotliwość tym więcej energii jest generowane, jest na to wzór, gdzie P = C * V**2 * f
czyli chip wytwarza tym więcej energii im większa pojemność, napięcie do kwadratu razy częstotliwość.
Więcej energii to więcej ciepła przy dużych częstotliwościach potrzebne jest chłodzenie wodne.

Wiadomo lepiej więcej rdzeni, ale też jak proces czeka na coś to wywołuje blokujące wywołanie, wtedy oddaje czas idle i idzie spać, kernel systemu rejestruje wakeup event gdy pojawi się informacja.
Np. czekasz na jakąś wiadomość i nie chcesz w pętli robić spin locka, który zużywa 100% procesora, chyba że zredukujesz to robiąc delay czasowy i sprawdza czy jest wiadomość.
Jak zrobisz select, to wtedy do kolei w kernelu doda się twoje oczekiwanie i jak kernel dostanie wiadomość to wybudzi twój proces, dlatego jest tak dużo nieużywanych rdzeni, większość czeka na coś, co jakiś czas odrysowuje czy inne rzeczy robi, też nie w czasie rzeczywistym, a ileś razy na sekundę.

Inna rzecz, to procesory mają phase locked loop, mogą nieużywanym rdzeniom zmniejszać częstotliwości pracy, czy je kompletnie wyłączać żeby zaoszczędzić energię.
Te nowe technologie procesorów energooszczędnych to już w ogóle nie wiem jak działają, bo mogą tam być jakieś mega inteligentne rozwiązania jak je zrobili, nie interesuje się tym aktualnie.

1

Zazwyczaj zwracam uwagę na generację procesora, i5tka nowszej generacji będzie lepsza niż i7ka starszej.

0

Preferuję mocniejszy rdzeń, podobnie jak większość świata (i patrząc na wyniki ankiety większość forum też). Więcej rdzeni się przydaje jak mają co robić, tyle że w praktyce zwykle nie mają, więc dla większości ludzi to jest bardziej pragmatyczny wybór.

2

Przecież to zależy do czego...
Równie dobrze można zadać pytanie czy preferujesz bardziej autobusy czy bolidy F1?

4

@4w0rX4t4X: wąchać skarpetki czy gryźć brykiet

0

Niski pobór mocy i wbudowaną grafikę.

1
4w0rX4t4X napisał(a):

Przecież to zależy do czego...

Zgadzam się. Jakiś czas temu kupiłem kompa z prockiem z kilkudziesięcioma rdzeniami, który przez nie równolegle trawi dane. Wykorzystuje wszystkie w 100%.

Ale do pracy / grania bym już takiego sobie nie kupił :) Wydaje mi się że niewiele aplikacji desktop wymaga dużego rozproszenia obliczeń.

0

Podbijam, że to zależy.

  • Prędkość jednego rdzenia - do grania
  • Ilość rdzeni - do edycji wideo, produkcji muzyki, serwera domowego, do rozpakowywania pirackich gier
3

Preferuje RAM:
stabilna, dużo, kilka kanałów, szybka (taktowanie + cykle)

0

Jedno zazwyczaj idzie w parze z drugim. Normalne konsumenckie procesory mają coraz większą liczbą corów i prędkość (wraz z rosnącą ceną), potem zaczyna się segment pół-profesjonalny, gdzie jest mnóstwo corów z mniejszą wydajnością. Na samym końcu masz serwerowe rozwiązania, gdzie wydajność jest słaba, ale liczba rdzeni jest ogromna

W przypadku pracy programisty lepiej się skupić na wydajności rdzeni niż na liczbie rdzeni, bo twoje akcje wykonują się po prostu szybciej. Oczywiście są wyjątki jak np. kompilujesz dużo C++ i jesteś w stanie wykorzystać każdy rdzeń w optymalny sposób.

Wadą takiego setupu jest fakt, że duża wydajność rdzeni przekłada się na dużo większe zużycie prądu w stosunku do wykonanej pracy, co ma szczególne znaczenie w serwerach (słabe chłodzenie, serwery się grzeją, bo pracują cały czas a nie skokowo jak na PC, drogi prąd). Jeśli możesz jakiś task zrównoleglić w sposób idealny (np. masz serwer obsługujący tysiące zapytań na sekundę) to wtedy ilość jest zdecydowanie lepsza niż jakość rdzeni

1 użytkowników online, w tym zalogowanych: 0, gości: 1