Zastanawia mnie coś - czemu w Dellach E6420 tak często widzę i7 czterordzeniowe skoro to są czteroletnie laptopy?
W kwestii architektury CPU niewiele się zmieniło na przestrzeni lat, zwłaszcza od wprowadzenia Sandy Bridge ponad 4 lata temu. Pamiętam, jak ok. 7 lat temu lat temu mówiło się, że w 2015 to wszyscy będą używać procków 20-rdzeniowych i więcej, bo to jedyny sposób aby zwiększyć wydajność, skoro nie daje się zwiększać już częstotliwości zegara. Na razie nic takiego nie nastąpiło i zamiast tego mamy postęp w innych miejscach:
-
zwiększenie wydajności iGPU. Jeśli na najmocniejszych iGPU (Iris Pro) można obecnie płynnie grać w nowe gry na średnich detalach, to jest to naprawdę niezły postęp, bo kiedyś iGPU nadawały się co najwyżej do painta. iGPU dostały mnóstwo rdzeni. W nowym Iris Pro Skylake mają być podobno 72, w iGPU ze średniej półki jest ich 24. Więc jeśli zastanawiasz się, gdzie się podziały te wszystkie obiecane rdzenie - to są właśnie tam - w GPU.
-
obniżenie "spalania" tj. zmniejszenie tranzystorów (32 nm -> 14 nm) i coraz lepsze mechanizmy oszczędzania energii (wyłączanie nieużywanych bloków, automatyczna zmiana taktowania, zmiana napięcia zasilającego w zależności od taktowania itp.). Dzięki temu są wydajne laptopy trzymające po 10-15h normalnej pracy na baterii, a nie 3-6h.
-
drobne usprawnienia w istniejącej architekturze zwiększające nieco IPC, czyli więcej mocy z jednego taktu - zwiększenie przepustowości różnych elementów (np. przesyłanie całych linii cache między poszczególnymi cache'ami, a nie po połowie, więcej linii QPI), dołożenie więcej portów, dołożenie więcej jednostek wykonawczych (np. dodatkowa jednostka przewidywania skoków, dodatkowe potoki load/store w Haswellu).
Nie dodają więcej rdzeni do samego CPU prawdopodobnie (mogę się mylić - po prostu moja opinia) dlatego, że wiele programów, w tym gier, nie umie wykorzystać porządnie nawet 4 rdzeni z HT; a nawet jeśli je wykorzystują, to zwykle wąskim gardłem jest dostęp do współdzielonej pamięci. Po prostu model programowania oparty na współdzielonej, płaskiej pamięci, gdzie każdy może sobie wskaźnikiem latać po wszystkim taki jaki mamy w C, C++ i wielu innych językach kompletnie nie przystaje do tego jak działa sprzęt.
Nawet w serwerach nie stosuje się procków 24 rdzeniowych, tylko wkłada się np. 4 procki 6-rdzeniowe na jedną płytę, gdzie każdy procek ma swój własny kontroler pamięci i własną pamięć, spięte przez QPI. Oczywiście dostęp do pamięci innego procesora kosztuje niemało. Przy czym dziwi mnie to, że od wielu , wielu lat znane jest, że współdzielona pamięć się nie skaluje, a mimo to programiści nadal piszą programy gdzie współdzielą jedną globalną stertę między wątkami, które walczą o dostęp do wspólnych obiektów chronionych blokadami. Za wyjątkiem oczywiście tych szczęściarzy, którzy piszą programy na GPU.
Co ciekawe, niewiele się też zmieniło w kwestii wielkości cache (mój 4 letni laptop ma cache 256 kB/1 MB/6 MB, a nowe stacje robocze w ofercie mają... tyle samo), jeśli nie liczyć cache L4 eDRAM w najmocniejszych prockach Broadwell/Skylake.