Dlaczego „dodanie większej liczby rdzeni” nie napotyka takich samych fizycznych ograniczeń, co „przyspieszenie procesora”?

110

W 2014 roku słyszę wiele języków programowania reklamowanych pod kątem funkcji współbieżności. Mówi się, że współbieżność ma kluczowe znaczenie dla wzrostu wydajności.

Wypowiadając to oświadczenie, wiele osób powraca do artykułu z 2005 roku pt. „Darmowy lunch się skończył: fundamentalny zwrot w kierunku współbieżności w oprogramowaniu” . Podstawowym argumentem jest to, że coraz trudniej jest zwiększyć częstotliwość taktowania procesorów, ale nadal możemy umieścić więcej rdzeni na chipie i że aby uzyskać wzrost wydajności, trzeba będzie napisać oprogramowanie, aby skorzystać z wielu rdzeni.

Niektóre kluczowe cytaty:

Jesteśmy przyzwyczajeni do tego, że procesory 500 MHz ustępują miejsca procesorom 1 GHz, procesory 2 GHz itd. Dzisiaj jesteśmy w zakresie 3GHz na głównych komputerach.

Kluczowe pytanie brzmi: kiedy to się skończy? W końcu Prawo Moore'a przewiduje wzrost wykładniczy, a wzrost wykładniczy wyraźnie nie może trwać wiecznie, zanim osiągniemy twarde granice fizyczne; światło nie przyspiesza. Wzrost musi ostatecznie spowolnić, a nawet zakończyć.

... Coraz trudniej jest wykorzystywać wyższe częstotliwości taktowania z powodu nie tylko jednego, ale kilku problemów fizycznych, w szczególności ciepła (zbyt dużej i zbyt trudnej do rozproszenia), zużycia energii (zbyt dużej) i problemów z upływem prądu.

... Przyszłość Intela i większości dostawców procesorów leży gdzie indziej, ponieważ firmy zajmujące się układami scalonymi agresywnie realizują te same nowe kierunki wielordzeniowe.

... Multicore polega na uruchamianiu dwóch lub więcej rzeczywistych procesorów na jednym układzie.

Wydaje się, że prognozy z tego artykułu się utrzymały, ale nie rozumiem dlaczego. Mam tylko bardzo mgliste pomysły na temat działania sprzętu.

Mój uproszczony pogląd brzmi: „coraz trudniej jest pakować więcej mocy obliczeniowej w tę samą przestrzeń” (z powodu problemów z ciepłem, zużyciem energii itp.). Spodziewam się, że wniosek będzie „w związku z tym będziemy musieli mieć większe komputery lub uruchamiać nasze programy na wielu komputerach”. (I rzeczywiście, rozproszone przetwarzanie w chmurze jest rzeczą, o której słyszymy więcej).

Ale częścią tego rozwiązania wydaje się być architektura wielordzeniowa. O ile komputery nie powiększają się (czego nie mają), wydaje się to po prostu innym sposobem na powiedzenie „spakuj więcej mocy pocessingu w tę samą przestrzeń”.

Dlaczego „dodawanie większej liczby rdzeni” nie ma tych samych fizycznych ograniczeń, co „przyspieszenie procesora”?

Proszę wyjaśnić w najprostszy możliwy sposób. :)

Nathan Long
źródło
4
en.wikipedia.org/wiki/Moore%27s_law warte przeczytania - ponieważ mówimy o dwóch różnych rzeczach. Prawo Moore'a nie dotyczy prędkości zegara - dotyczy liczenia tranzystorów
Journeyman Geek
9
Udawajmy, że było to 30 lat temu, a procesory działały z częstotliwością 4,77 MHz. Dlaczego mogłeś umieścić 1000 komputerów z procesorami 4MHz w tym samym pomieszczeniu, mimo że nie było możliwości uzyskania procesora 4GHz?
user20574,
3
@NathanLong, ale nadal jest o wiele łatwiej uzyskać więcej miejsca (dla większej liczby komputerów) niż uzyskać szybszy komputer.
user20574,
5
Analogia: silnik samochodowy może być wytwarzany tylko z tak dużą liczbą obrotów na minutę, ale można z łatwością połączyć dwa.
OJFord,

Odpowiedzi:

143

Podsumowanie

  • Ekonomia. Tańsze i łatwiejsze jest zaprojektowanie procesora o większej liczbie rdzeni niż wyższej częstotliwości taktowania, ponieważ:

  • Znaczący wzrost zużycia energii. Zużycie energii procesora gwałtownie wzrasta wraz ze wzrostem częstotliwości taktowania - możesz podwoić liczbę rdzeni pracujących z mniejszą prędkością w przestrzeni termicznej potrzebnej do zwiększenia szybkości taktowania o 25%. Czteroosobowy za 50%.

  • Są inne sposoby na zwiększenie prędkości przetwarzania sekwencyjnego, a producenci procesorów dobrze z nich korzystają.


Będę mocno czerpać z doskonałych odpowiedzi na to pytanie na jednej z naszych siostrzanych witryn SE. Głosujcie więc!


Ograniczenia prędkości zegara

Istnieje kilka znanych fizycznych ograniczeń szybkości zegara:

  • Czas transmisji

    Czas potrzebny na przejście sygnału elektrycznego przez obwód jest ograniczony przez prędkość światła. Jest to twardy limit i nie ma znanego sposobu na jego obejście 1 . W zegarach gigahercowych zbliżamy się do tego limitu.

    Jednak jeszcze nas tam nie ma. 1 GHz oznacza jedną nanosekundę na takt zegara. W tym czasie światło może pokonać 30 cm. Przy 10 GHz światło może przenosić 3 cm. Pojedynczy rdzeń procesora ma szerokość około 5 mm, więc napotkamy te problemy gdzieś powyżej 10 GHz. 2)

  • Opóźnienie przełączania

    Nie wystarczy jedynie wziąć pod uwagę czas potrzebny na przemieszczenie sygnału z jednego końca na drugi. Musimy również wziąć pod uwagę czas, jaki zajmuje bramka logiczna w CPU do przejścia z jednego stanu do drugiego! Wraz ze wzrostem częstotliwości zegara może to stanowić problem.

    Niestety nie jestem pewien szczegółów i nie mogę podać żadnych liczb.

    Najwyraźniej wpompowanie do niego większej mocy może przyspieszyć przełączanie, ale prowadzi to zarówno do zużycia energii, jak i do problemów związanych z rozpraszaniem ciepła. Ponadto większa moc oznacza, że ​​potrzebujesz obszerniejszych kanałów, które poradzą sobie z nią bez uszkodzeń.

  • Rozpraszanie ciepła / zużycie energii

    Ten jest duży. Cytując odpowiedź fuzzyhair2 :

    Najnowsze procesory są produkowane przy użyciu technologii CMOS. Za każdym razem, gdy występuje cykl zegara, energia jest rozpraszana. Dlatego wyższe prędkości procesora oznaczają większe rozpraszanie ciepła.

    W tym wątku na forum AnandTech są piękne pomiary , a nawet wyprowadzili wzór na zużycie energii (które idzie w parze z wytwarzanym ciepłem):

    Formuła
    Kredyt dla Idontcare

    Możemy to sobie wyobrazić na poniższym wykresie:

    Wykres
    Kredyt dla Idontcare

    Jak widać, zużycie energii (i wytwarzane ciepło) rośnie niezwykle szybko, gdy prędkość zegara wzrasta powyżej określonego punktu. To sprawia, że ​​nieskończone zwiększenie prędkości zegara jest niepraktyczne.

    Przyczyna szybkiego wzrostu zużycia energii jest prawdopodobnie związana z opóźnieniem przełączania - nie wystarczy po prostu zwiększyć moc proporcjonalną do częstotliwości taktowania; napięcie należy również zwiększyć, aby zachować stabilność przy wyższych zegarkach. To może nie być całkowicie poprawne; możesz wskazać poprawki w komentarzu lub dokonać edycji tej odpowiedzi.


Więcej rdzeni?

Dlaczego więc więcej rdzeni? Nie mogę definitywnie odpowiedzieć na to pytanie. Będziesz musiał zapytać ludzi z Intel i AMD. Ale widać powyżej, że przy nowoczesnych procesorach w pewnym momencie zwiększenie częstotliwości zegara staje się niepraktyczne.

Tak, wielordzeniowy zwiększa również wymaganą moc i rozpraszanie ciepła. Ale starannie unika problemów z czasem transmisji i opóźnieniami przełączania. Jak widać z wykresu, możesz z łatwością podwoić liczbę rdzeni w nowoczesnym procesorze z tym samym obciążeniem termicznym, co 25% wzrost prędkości zegara.

Niektóre osoby to zrobiły - obecny rekord świata w przetaktowywaniu jest tylko 9 GHz. Jest to jednak poważne wyzwanie inżynierskie, przy jednoczesnym utrzymaniu zużycia energii w dopuszczalnych granicach. W pewnym momencie projektanci zdecydowali, że dodanie większej liczby rdzeni w celu wykonania większej liczby prac równolegle zapewni bardziej efektywny wzrost wydajności w większości przypadków.

Właśnie tam pojawia się ekonomia - prawdopodobnie przejście na wielordzeniową trasę było prawdopodobnie tańsze (krótszy czas projektowania, mniej skomplikowana produkcja). I łatwo jest sprzedać - kto nie lubi nowego ośmiordzeniowego układu? (Oczywiście wiemy, że wielordzeniowy jest dość bezużyteczny, gdy oprogramowanie go nie wykorzystuje ...)

Tam jest minusem dla wielordzeniowych: trzeba więcej przestrzeni fizycznej umieścić dodatkowy rdzeń. Jednak rozmiary procesorów stale się kurczą, więc jest dużo miejsca na umieszczenie dwóch kopii poprzedniego projektu - prawdziwym kompromisem nie jest możliwość stworzenia większych, bardziej złożonych, pojedynczych rdzeni. Z drugiej strony, zwiększenie złożoności rdzenia jest złym aspektem z punktu widzenia projektu - większa złożoność = więcej błędów / błędów i błędów produkcyjnych. Wydaje się, że znaleźliśmy szczęśliwy środek z wydajnymi rdzeniami, które są na tyle proste, że nie zajmują zbyt wiele miejsca.

Osiągnęliśmy już limit liczby rdzeni, które możemy zmieścić na jednej matrycy przy obecnych rozmiarach procesu. Możemy przekroczyć granicę tego, jak daleko możemy się zmniejszyć. Więc, co dalej? Czy potrzebujemy więcej? Niestety trudno na nie odpowiedzieć. Czy ktoś tu jest jasnowidzem?


Inne sposoby poprawy wydajności

Nie możemy więc zwiększyć szybkości zegara. Więcej rdzeni ma dodatkową wadę - pomagają tylko wtedy, gdy oprogramowanie na nich działające może z nich skorzystać.

Co jeszcze możemy zrobić? W jaki sposób współczesne procesory są znacznie szybsze niż starsze przy tej samej częstotliwości zegara?

Szybkość zegara jest tak naprawdę tylko bardzo przybliżonym przybliżeniem wewnętrznego działania procesora. Nie wszystkie elementy procesora działają z tą prędkością - niektóre mogą działać raz na dwa tyknięcia itp.

Bardziej znacząca jest liczba instrukcji, które można wykonać w jednostce czasu. Jest to znacznie lepsza miara tego, ile pojedynczy rdzeń procesora może osiągnąć. Niektóre instrukcje; niektóre zajmą jeden cykl zegara, inne trzy. Na przykład podział jest znacznie wolniejszy niż dodawanie.

Możemy więc poprawić wydajność procesora, zwiększając liczbę instrukcji, które może on wykonać na sekundę. W jaki sposób? Cóż, możesz uczynić instrukcję bardziej wydajną - może podział zajmuje teraz tylko dwa cykle. Potem jest potokowanie instrukcji . Dzieląc każdą instrukcję na wiele etapów, możliwe jest wykonywanie instrukcji „równolegle” - ale każda instrukcja wciąż ma dobrze zdefiniowaną, sekwencyjną kolejność odpowiadającą instrukcjom przed i po niej, więc nie wymaga obsługi oprogramowania, takiego jak wielordzeniowy robi.

Jest inny sposób: bardziej wyspecjalizowane instrukcje. Widzieliśmy takie rzeczy jak SSE, które zawierają instrukcje przetwarzania dużych ilości danych jednocześnie. Ciągle wprowadzane są nowe zestawy instrukcji o podobnych celach. Te znowu wymagają wsparcia oprogramowania i zwiększają złożoność sprzętu, ale zapewniają przyjemny wzrost wydajności. Ostatnio pojawiła się AES-NI, która zapewnia przyspieszane sprzętowo szyfrowanie i deszyfrowanie AES, znacznie szybciej niż kilka arytmetyki zaimplementowanych w oprogramowaniu.


1 W każdym razie nie bez zagłębiania się w teoretyczną fizykę kwantową.

2 Może być w rzeczywistości niższy, ponieważ propagacja pola elektrycznego nie jest tak szybka jak prędkość światła w próżni. Dotyczy to również odległości w linii prostej - prawdopodobnie istnieje co najmniej jedna ścieżka, która jest znacznie dłuższa niż linia prosta.

Kok
źródło
22
Ponadto w wielu aplikacjach wąskim gardłem nie jest czas obliczeń, ale czas utknięcia w celu pobrania danych z pamięci RAM (lub, na Boga, z dysku); więc kolejne duże przyspieszenie wynika z większych, szybszych pamięci podręcznych procesorów.
Matteo Italia,
2
@MatteoItalia Yup. Wprowadzono także ulepszenia przewidywania gałęzi i prawdopodobnie o wiele więcej nie wiem. Poza procesorem mamy również szybsze magistrale, szybszą pamięć, szybsze dyski i powiązane protokoły itp.
Bob
2
Wspomniał pan, że problemy związane z „twardym ograniczeniem” prędkości światła wystąpią przy „gdzieś po 20 GHz”. Twoje obliczenia są nieprawidłowe; sygnały elektryczne przemieszczają się z prędkością mniejszą niż prędkość światła, w zależności od geometrii drutu.
Giulio Muscarello
5
Nie używaj słowa „wykładniczy”, jeśli dla tego związku są bardziej poprawne słowa (kwadratowe, sześcienne itp.) ...
Oliver Charlesworth
7
@OliCharlesworth Proszę przeczytać przypis. To właśnie dlatego przypis jest tam, i dlaczego mam odniesienia do niej wszędzie exponentialjest używany. Jest to całkowicie poprawne użycie tego słowa i byłoby styczne do punktu tej odpowiedzi, aby zagłębić się w szczegóły matematyczne. Jeśli naprawdę chcesz to „poprawić”, możesz zasugerować edycję. Nie będzie to zależało ode mnie, czy zostanie zaakceptowane czy nie, o ile nie zmienisz znacząco znaczenia.
Bob
14

Fizyka to fizyka. Nie możemy wiecznie pakować kolejnych tranzystorów w coraz mniejsze przestrzenie. W pewnym momencie robi się tak mały, że masz do czynienia z dziwnymi bzdurami kwantowymi. W pewnym momencie nie możemy spakować dwa razy więcej tranzystorów w ciągu roku niż kiedyś (o co chodzi w prawie Moore'a).

Surowe prędkości zegara nic nie znaczą. Mój stary Pentium M był o połowę szybszy niż współczesny procesor do komputerów stacjonarnych (a jednak pod wieloma względami szybszy ) - a współczesne systemy ledwie zbliżają się do prędkości systemów 10 lat temu (i są wyraźnie szybsze). Zasadniczo „po prostu” zwiększenie prędkości zegara w wielu przypadkach nie daje realnego wzrostu wydajności. Może to pomóc w niektórych operacjach z jednym wątkiem, ale lepiej jest wydawać budżet projektowy na lepszą wydajność pod względem wszystkiego innego.

Wiele rdzeni pozwala robić dwie lub więcej rzeczy jednocześnie, więc nie musisz czekać na zakończenie jednej rzeczy na następną. Krótko mówiąc, możesz po prostu umieścić dwa istniejące rdzenie w tym samym pakiecie (na przykład z Pentium D i ich MCM, co było projektem przejściowym), a masz system, który jest dwa razy szybszy. Oczywiście większość współczesnych implementacji udostępnia takie rzeczy, jak kontroler pamięci.

Możesz także budować inteligentniej na różne sposoby. ARM robi Big-Little - posiadając 4 „słabe” rdzenie małej mocy współpracujące z 4 mocniejszymi rdzeniami, dzięki czemu masz to, co najlepsze z obu światów. Intel pozwala zwolnić przepustnicę (dla lepszej wydajności mocy) lub przetaktować określone rdzenie (dla lepszej wydajności pojedynczego wątku). Pamiętam, że AMD robi coś z modułami.

Możesz także przenosić takie rzeczy, jak kontrolery pamięci (dzięki czemu masz mniejsze opóźnienia) i funkcje związane z IO (nowoczesny procesor nie ma mostka północnego), a także wideo (co jest ważniejsze w przypadku laptopów i projektowania AIW). Bardziej sensowne jest robienie tych rzeczy niż „po prostu” przyspieszanie prędkości zegara.

W pewnym momencie „więcej” rdzeni może nie działać - chociaż procesory graficzne mają setki rdzeni.

Multikresy jako takie pozwalają komputerom działać inteligentniej na wszystkie te sposoby.

Journeyman Geek
źródło
1
Należy zauważyć, że rdzenie GPU są zaprojektowane do bardzo konkretnego celu, w przeciwieństwie do rdzeni procesorów, które są bardziej ogólne. Należy również zauważyć, że karty graficzne są znacznie większe niż procesory (co oznacza, że ​​nawet jeśli rdzenie nie wykorzystują całego pomieszczenia na płycie, nadal mają DUŻO więcej miejsca na rozproszenie ciepła).
user2366842,
3
to prawda, ale jest to przykład, w którym skalujesz rdzenie w ekstremalnych ilościach. Prawdopodobnie wrócę do tej odpowiedzi rano
Journeyman Geek
„po prostu umieść dwa istniejące rdzenie w tym samym pakiecie”. Ale w jaki sposób to osiągają, nie wykorzystując więcej miejsca na dodatkowe rdzenie Jak ?! Magia? Jednorożce? Szczenięta (Według twojego awatara, podejrzewam ten drugi)
Ten Brazylijczyk
Pentium Ds były w zasadzie en.wikipedia.org/wiki/Pentium_D
Journeyman Geek
6
wierd quantum crap+ 1 za to sam!
Dave
9

Prosta odpowiedź

Najprostsza odpowiedź na pytanie

Dlaczego „dodawanie większej liczby rdzeni” nie ma tych samych fizycznych ograniczeń, co „przyspieszenie procesora”?

znajduje się w innej części pytania:

Spodziewam się, że wniosek będzie „w związku z tym będziemy musieli mieć większe komputery lub uruchamiać nasze programy na wielu komputerach”.

Zasadniczo wiele rdzeni przypomina wiele „komputerów” na tym samym urządzeniu.

Kompleksowa odpowiedź

„Rdzeń” to część komputera, która faktycznie przetwarza instrukcje (dodawanie, mnożenie i dodawanie itp.). Rdzeń może wykonać tylko jedną instrukcję jednocześnie. Jeśli chcesz, aby Twój komputer był „potężniejszy”, możesz zrobić dwie podstawowe rzeczy:

  1. Zwiększ przepustowość (zwiększ częstotliwość taktowania, zmniejsz rozmiar fizyczny itp.)
  2. Użyj więcej rdzeni na tym samym komputerze

Fizycznymi ograniczeniami # 1 są przede wszystkim konieczność wyrzucania ciepła spowodowanego przetwarzaniem i prędkością elektronu w obwodzie. Po rozdzieleniu niektórych tranzystorów na osobny rdzeń w znacznym stopniu złagodzisz problem cieplny.

Jest ważne ograniczenie # 2: musisz być w stanie podzielić problem na wiele niezależnych problemów, a następnie połączyć odpowiedź. Na nowoczesnym komputerze osobistym nie jest to tak naprawdę problemem, ponieważ istnieje mnóstwo niezależnych problemów, które i tak walczą o czas obliczeniowy z rdzeniem (rdzeniami). Jednak przy wykonywaniu intensywnych problemów obliczeniowych wiele rdzeni naprawdę pomaga tylko wtedy, gdy problem jest podatny na współbieżność.

Jason Brubaker
źródło
„wiele rdzeni jest jak posiadanie wielu„ komputerów ”na tym samym urządzeniu.” Zgadza się, ale moje zamieszanie polegało na tym, w jaki sposób zmieścisz je wszystkie? Myślałem, że „nie możemy jechać szybciej” było objawem „nie możemy znacznie bardziej zmniejszać”.
Nathan Long
Wiele rdzeni zajmuje więcej miejsca, wióry stają się większe. Ciężar został przeniesiony z procesora na inżyniera oprogramowania ... aby faktycznie działać szybciej na jednym z tych gigantycznych procesorów wielordzeniowych, oprogramowanie musi być napisane w taki sposób, aby można było przeciąć jego pracę na pół i wykonać obie połowy niezależnie.
James
1
Krótka odpowiedź brzmi: zużycie energii jest proporcjonalne do sześcianu prędkości zegara. Gdy sygnały przemieszczają się na większe odległości, iluzja pojedynczego wątku staje się trudniejsza do utrzymania. Szczegółowa odpowiedź: amazon.com/…
Rob
6

Dlaczego „dodawanie większej liczby rdzeni” nie ma tych samych fizycznych ograniczeń, co „przyspieszenie procesora”?

Napotykają te same fizyczne ograniczenia, ale przejście na projektowanie wielordzeniowe daje nam trochę miejsca na oddech, zanim trafimy na niektóre z nich. Jednocześnie pojawiają się inne problemy spowodowane tymi ograniczeniami, ale łatwiej je pokonać.

Fakt 1: Zużycie energii i emitowane ciepło rosną szybciej niż moc obliczeniowa. Zwiększenie mocy procesora z 1 GHz na 2 GHZ spowoduje zwiększenie zużycia energii z 20 W do 80 W, podobnie jak w przypadku rozpraszania ciepła. (Właśnie wymyśliłem te liczby, ale tak to działa)

Fakt 2: Kupując drugi procesor i działając z częstotliwością 1 GHz podwoiłbyś swoją moc obliczeniową. Dwa procesory działające z częstotliwością 1 GHz mogą przetwarzać tę samą ilość danych, co jeden procesor 2 GHz, ale każdy z nich zużywa tylko 20 W energii, czyli łącznie 40 W.

Zysk: Podwojenie liczby procesorów zamiast częstotliwości taktowania oszczędza nam trochę energii i nie jesteśmy tak blisko „bariery częstotliwości” jak wcześniej.

Problem: Musisz podzielić pracę na dwa procesory i połączyć wyniki później.

Jeśli potrafisz rozwiązać ten problem w odpowiednim czasie i zużywasz mniej energii niż właśnie zaoszczędziłeś, to właśnie zyskałeś dzięki użyciu wielu procesorów.

Teraz musisz po prostu połączyć dwa procesory w jeden dwurdzeniowy procesor i jesteś w domu. Jest to korzystne, ponieważ rdzenie mogą współdzielić niektóre części procesora, na przykład pamięć podręczną ( odpowiednia odpowiedź ).

gronostaj
źródło
Uderzamy w ograniczenia fizyczne na 1000 różnych sposobów, rozmiar matrycy (dla wielu rdzeni, co prowadzi do mniejszego procesu produkcyjnego), rozmiar mobo (dla wielu procesorów), wzmacniacze ciągnione przez ślady (oba). to nie tak, że można umieścić 2 cpus na m-atx lub 4 i pamięć na płycie atx, a te projekty wymagają DECADES do zmiany. Zgadzam się z resztą.
Rostol
@Rostol To dobra uwaga, zredagowałem odpowiedź.
gronostaj
5

Krótko mówiąc: Przyspieszenie pojedynczych rdzeni osiągnęło granice, więc ciągle je zmniejszamy i dodajemy ich więcej, aż osiągnie to granice lub możemy zmienić na lepsze materiały (lub osiągnąć fundamentalny przełom, który obali ustaloną technologię, coś w rodzaju wielkości domu, faktycznie działające, obliczenia kwantowe).

Myślę, że ten problem jest wielowymiarowy i zajmie trochę pisania, aby namalować bardziej kompletny obraz:

  1. Fizyczne ograniczenia (narzucone przez faktyczną fizykę): Jak prędkość światła, mechanika kwantowa, i tak dalej.
  2. Problemy produkcyjne: Jak produkujemy coraz mniejsze konstrukcje z wymaganą precyzją? Problemy związane z surowcami, użytymi materiałami do budowy obwodów, trwałością.
  3. Problemy architektoniczne: ciepło, wnioskowanie, zużycie energii itp.
  4. Problemy ekonomiczne: Jaki jest najtańszy sposób na zwiększenie wydajności dla użytkownika?
  5. Przypadki użycia i postrzeganie wydajności przez użytkownika.

Może być o wiele więcej. Wielozadaniowy procesor próbuje znaleźć rozwiązanie, aby zmieszać wszystkie te czynniki (i więcej) w jednym, produkowanym masowo układzie, który pasuje do 93% podmiotów na rynku. Jak widać, ostatni punkt jest najważniejszy - postrzeganie klienta, które wynika bezpośrednio ze sposobu, w jaki klient korzysta z procesora.

Zadaj sobie pytanie, jaka jest Twoja zwykła aplikacja? Może: 25 zakładek Firefoksa, z których każda wyświetla reklamy w tle, gdy słuchasz muzyki, a wszystkie czekają na ukończenie pracy nad kompilacją rozpoczętej około 2 godziny temu. To dużo pracy do zrobienia, a mimo to chcesz mieć płynne wrażenia. Ale twój procesor poradzi sobie z JEDNYM zadaniem w tym czasie! Na jednej rzeczy. Więc to, co robisz, polega na tym, że dzielisz rzeczy i tworzysz dłuższą kolejkę, a każdy otrzymuje swój własny udział i wszyscy są szczęśliwi. Z wyjątkiem ciebie, ponieważ wszystkie rzeczy stają się opóźnione i wcale nie gładkie.

Przyspiesz procesor, aby wykonać więcej operacji w tym samym czasie. Ale jak powiedziałeś: zużycie ciepła i energii. I tu dochodzimy do części dotyczącej surowców. Krzem staje się bardziej przewodzący, gdy robi się cieplej, co oznacza, że ​​więcej prądu przepływa przez materiał podczas jego podgrzewania. Tranzystory mają wyższy pobór mocy, ponieważ przełączasz je szybciej. Również wysokie częstotliwości pogarszają przesłuch między krótkimi przewodami. Widzisz, podejście przyspieszające doprowadzi do „krachu”. Dopóki nie mamy lepszych surowców niż krzem lub znacznie lepszych tranzystorów, utkniemy tam, gdzie jesteśmy, z prędkością pojedynczego rdzenia.

To prowadzi nas z powrotem do miejsca, w którym zaczęliśmy. Robienie rzeczy równolegle. Dodajmy kolejny rdzeń. Teraz możemy faktycznie zrobić dwie rzeczy naraz. Rozluźnijmy trochę i napiszmy oprogramowanie, które może podzielić pracę na dwa, mniej wydajne, ale bardziej funkcjonalne rdzenie. Podejście to wiąże się z dwoma głównymi problemami (poza tym, że świat oprogramowania potrzebuje czasu, aby się do niego dostosować): 1. Zwiększ rozmiar układu lub zmniejsz indywidualny rdzeń. 2. Niektórych zadań po prostu nie można podzielić na dwie części, które działają jednocześnie. Dodawaj rdzenie tak długo, jak możesz je skurczyć, lub powiększ chip i utrzymuj problem cieplny z daleka. No i nie zapominajmy o kliencie. Jeśli zmienimy nasze przypadki użycia, branże muszą się dostosować. Zobacz wszystkie błyszczące „nowe” rzeczy, które wymyślił sektor mobilny.

Tak, ta strategia osiągnie swoje ograniczenia! I Intel to wie, dlatego mówią, że przyszłość leży gdzie indziej. Ale będą to robić tak długo, jak będzie to tanie, skuteczne i wykonalne.

Last but not least: fizyka. Mechanika kwantowa ograniczy kurczenie się wiórów. Prędkość światła nie jest jeszcze granicą, ponieważ elektrony nie mogą poruszać się z prędkością światła w krzemie, w rzeczywistości jest znacznie wolniejsze. Jest to także prędkość impulsowa, która nakłada twarde ograniczenie na prędkość oferowaną przez materiał. Tak jak dźwięk przemieszcza się szybciej w wodzie niż w powietrzu, tak impulsy elektryczne przemieszczają się szybciej, na przykład w grafenie niż w krzemie. Prowadzi to z powrotem do surowców. Grafen jest świetny, jeśli chodzi o jego właściwości elektryczne. Byłby znacznie lepszym materiałem do budowy procesorów, niestety jest bardzo trudny do wyprodukowania w dużych ilościach.

paradokson
źródło
2

Powiedzmy (jako nierealistyczny przykład, ale nadal powinienem się zorientować), że masz procesor działający w 100F. Zwykle działa wielordzeniowy pobór częstotliwości zegara procesora działającego przy 100F i obniżenie go, a tym samym zmniejszenie prędkości. Ponieważ nie jest już tak gorący, mogą ustawić drugi, trzeci, a nawet czwarty tuż obok niego, nie wpływając znacząco na ogólną temperaturę procesora i czerpiąc korzyści z wielordzeniowego. To oczywiście wiąże się z pewnym obciążeniem, ponieważ rdzenie wciąż muszą być kontrolowane z jednego miejsca, za pomocą jednego rdzenia. Im więcej rdzeni dodasz, tym więcej jest narzutu. Jeśli chodzi o pojedyncze rdzenie, im bardziej zwiększasz na nich prędkość, tym więcej wytwarzają ciepła. Ma to oczywiście ograniczenia fizyczne (tj. Po pewnym momencie zaczyna być szkodliwe dla wydajności,

Z biegiem czasu znaleźli sposoby na zmniejszenie fizycznej wielkości procesorów, dlatego tak naprawdę nie potrzebowaliśmy jeszcze więcej miejsca, jednak na przykład 16 rdzeni procesorów tak naprawdę nie istnieje (w czas pisania) poza sprzętem klasy serwerowej ze względu na ograniczenia wielkości fizycznej, ponieważ procesory klasy serwerowej są znacznie większe fizycznie niż standardowa klasa konsumencka.

użytkownik2366842
źródło
2

CPU = silnik samochodu: Łatwiej jest stworzyć mocniejszy samochód z 16 zaworami, tj. Lamborghini, niż samochód o wysokiej prędkości obrotowej, który miałby jeden gigantyczny zawór / cylinder przy 100 000 obr / min.

Przyczyny są fizyczne i chemiczne, krzem należy zastąpić obliczeniowym paliwem rakietowym, aby zmienić równowagę między liczbą rdzeni a prędkością rdzenia.

predatflaps
źródło
2

Powiedziałbym, że podstawowe ograniczenie limitów mocy obliczeniowej jest przede wszystkim związane z ograniczeniem szybkości przemieszczania elektronu przez obwód ( prędkość dryfu elektronu światła ). Istnieje wiele innych czynników, o których wspomniałeś.

Dodanie dodatkowych rdzeni nie przyspieszy procesora, choć pozwoli mu na większą obróbkę w tym samym czasie.

Prawo Moore'a to bardzo interesująca i pouczająca lektura. Ten cytat jest szczególnie istotny tutaj:

Można również ograniczyć teoretyczną wydajność raczej praktycznego „ostatecznego laptopa” o masie jednego kilograma i objętości jednego litra. Odbywa się to poprzez uwzględnienie prędkości światła, skali kwantowej, stałej grawitacyjnej i stałej Boltzmanna, dając wydajność 5,4258 × 10 50 operacji logicznych na sekundę na około 10 31 bitach.

jredd
źródło
2
Nawiasem mówiąc, elektrony faktycznie poruszają się bardzo powoli („prędkość dryfu”), rzędu milimetrów na sekundę IIRC. Mówisz bardziej o prędkości, z jaką propaguje się pole elektryczne .
Bob
2
Wiedziałem, że nie odważę się zachowywać tak, jakbym rozumiał fizykę w najmniejszym stopniu. :) Dziękuję za poprawienie / poinformowanie mnie o tym.
jredd
Ponadto rzeczywiste prędkości zegara, przy których prędkość propagacji będzie miała znaczący wpływ, wynoszą około 10+ GHz. Są inne powody, dla których współczesne procesory wolą wiele rdzeni od wyższych zegarów.
Bob
1

Długa historia jeszcze krótsza:

Naprawdę nie potrzebujemy szybszych procesorów. Poza kilkoma wysoce wyspecjalizowanymi zastosowaniami * procesor nie był wąskim gardłem od lat - wszystkie bity peryferyjne, takie jak pamięć, pamięć i sieć, zwykle zmuszają procesor do czekania na miliony cykli zegara, podczas których może wykonywać inne czynności. Drugi rdzeń może robić więcej „innych rzeczy”, tworząc w ten sposób wrażenie wyższej wydajności dla użytkownika.

Wiele urządzeń mobilnych, laptopów itp. Podkręci procesor, aby wydłużyć czas pracy baterii i obniżyć temperaturę. Niewielka zachęta do opracowania rdzenia ARM 3,5 GHz, jeśli główny klient obsługuje go z częstotliwością 1,3 GHz.

  • te wyspecjalizowane zastosowania nie kupują wystarczająco dużo, aby uzasadnić rozwój rdzenia 5 GHz. Nie dbają również o ciepło lub moc - kup najszybszy dostępny, przetaktuj go i przykręć chłodzony wodą radiator wielkości tostera.
Piotr
źródło
1
To nie „percepcja”, ale „lepsze opóźnienie”. Myślę, że to jeden z głównych problemów, jakie mamy; silna jednowątkowa wydajność za wszelką cenę mentalność. Konsumenckie systemy operacyjne nie są jeszcze zorientowane w czasie rzeczywistym ani zasadniczo zorientowane na współbieżność lub równoległość.
Rob
@peter Masz bardzo dobry punkt i dziękuję za wyjaśnienie. To coś, o czym muszę pamiętać jako programista. :) Jednak nadal jest to poboczny problem dla celów tego pytania. Moje pytanie dotyczyło tego, dlaczego nie możemy uzyskać szybszych częstotliwości zegara; Twoja odpowiedź dotyczy tego, dlaczego obecnie nie musimy.
Nathan Long
1
@NathanLong „nie mogą” i „nie potrzebują” są połączone. Nie można uzyskać szybszych procesorów, ponieważ nikt nie jest w stanie zainwestować miliarda lub pięciu niezbędnych do jego opracowania (5 GHz i tak prawdopodobnie przekracza fizyczne granice). Nikt nie jest skłonny do inwestowania, ponieważ nie ma realistycznego rynku, gdy ogólna prędkość procesora spada - niektóre obecne komputery stacjonarne są w klasie 1,5 GHz (najwyższa linia 10 lat temu), ponieważ są tańsze, chłodniejsze i wystarczająco szybkie dla tego rynku człon.
Peter
1

Krótka i prosta odpowiedź:

Dlaczego przejście z 1 ciężarówki przewożącej towary na 100 ciężarówek przewożących 100 razy więcej nie napotyka takich samych fizycznych ograniczeń jak przejście z 1 ciężarówki jadącej z prędkością 100 km / h na 1 ciężarówkę jadącą z prędkością 10 000 km / h?

Odpowiedz na to pytanie, a na twoje pytanie również zostanie udzielona odpowiedź. Koncepcja jest mniej więcej taka sama.

Alex D.
źródło
1

Myślę, że innym czynnikiem jest temperatura. Jeśli zwiększysz częstotliwość taktowania, temperatura rdzenia wzrośnie. Jeśli dodasz więcej rdzeni, nawet jeśli zużycie energii wzrośnie, zostanie to rozdzielone na rdzenie, więc temperatura pozostanie taka sama (tak jak w przypadku dodania do siebie dwóch gorących cieczy o tej samej temperaturze, temperatura pozostanie taka sama ).

Innym powodem jest to, że zwiększenie częstotliwości zegara ma tendencję do zwiększania zużycia energii o kwadrat współczynnika wzrostu częstotliwości (w zależności od tego, jakie inne bariery pokonujesz w danym punkcie). Zatem zwiększenie częstotliwości zegara zwiększa zużycie energii o kwadrat, a dodanie większej liczby rdzeni zwiększa je tylko liniowo.

Morty
źródło
0

Odpowiedź na pytanie, dlaczego „nie dodaje się więcej rdzeni”, nie napotyka tych samych fizycznych ograniczeń, co pytanie „przyspiesz procesor”, że system wielordzeniowy napotyka dokładnie takie same ograniczenia jak procesor jednordzeniowy. Doszliśmy do punktu, w którym tak naprawdę nie mamy opcji, aby system z jednym rdzeniem działał szybciej, więc zrobiliśmy to, abyśmy mogli robić więcej rzeczy naraz. Wyzwania związane z rozmiarem i koordynacją są obecnie łatwiejsze do rozwiązania niż szybsze. Minusem jest to, że jeśli zadania nie da się rozbić na części, nie możemy skończyć dużo szybciej niż system z jednym rdzeniem.

Philip Tinney
źródło
0

Nie można przyspieszyć procesora, po prostu wciskając więcej bramek. Ostatecznie instrukcje muszą zostać wykonane, a każda instrukcja wymaga kilku operacji „przełączania”. Istnieją podstawowe ograniczenia fizyczne (mechanika kwantowa - zasada nieoznaczoności), które bardzo utrudniają zwiększenie „częstotliwości taktowania” procesora powyżej prędkości obecnych systemów najwyższej klasy.

Daniel R. Hicks
źródło