RSS

Co spowalnia procesory wielordzeniowe

Liczba odsłon: 278

Zastanawialiście się kiedyś, z jakiego powodu procesory wielordzeniowe tak powoli wkraczają na rynek? Dlaczego tak mało aplikacji skaluje się prawidłowo wraz ze wzrostem liczby rdzeni? Dlaczego po wymianie procesora na nieco niżej taktowany, lecz dwurdzeniowy wydajność często nie rośnie, lecz zauważalnie spada?

Część winy ponoszą sami producenci, którzy doprowadzili jednordzeniowe procesory i jednoprocesorowe komputery do szybkości osiąganych dzisiaj.

Procesor wielordzeniowy W czasach, gdy procesory osiągały częstotliwości taktowania mierzone co najwyżej w setkach megaherców, ich moc obliczeniowa była na tyle mała, że producenci serwerów musieli zwrócić się w kierunku rozwiązań wieloprocesorowych, aby ich produkty były w stanie obsługiwać odpowiednią liczbę żądań na sekundę, satysfakcjonującą klientów i odpowiadającą realnym potrzebom rynku. W segmencie rynku wykorzystującym procesory Intela, układy klasy 80486 czy Pentium łączono ze sobą rzadko i co najwyżej w pary, ale już Pentium Pro można było bez problemu używać w konfiguracjach dwuprocesorowych, a z odpowiednim zestawem układów sterujących — czteroprocesorowych. W zależności od systemu operacyjnego i stosowanego oprogramowania skalowalność tego typu konstrukcji wyglądała różnie, lecz stopniowo poprawiano ją.

Tymczasem w przypadku komputerów domowych producentom bardziej opłacało się czekać parę tygodni lub miesięcy na premierę procesora szybszego o kilkadziesiąt megaherców i zbierać profity ze sprzedaży nowego, najdroższego modelu tym użytkownikom, którym bezwzględnie potrzebny był szybszy komputer. Powoli, acz konsekwentnie pojedyncze, jednordzeniowe procesory zyskiwały na wydajności i nikt nie widział potrzeby montowania większej ich liczby w jednym komputerze. Z tego też powodu niewiele systemów operacyjnych obsługiwało konfiguracje wieloprocesorowe: stosowanie Uniksa, Windows NT czy OS/2 SMP na domowym mikrokomputerze mało kto brał poważnie pod uwagę.

Nie było maszyn wieloprocesorowych, nie było systemów obsługujących wieloprocesorowość, nikt więc nie pisał oprogramowania obsługującego pracę równoległą. Gdy nawet pojawiła się już wersja Windows obsługująca wielowątkowość (Windows 95), dodatkowe wątki stosowano raczej jako sposób na wykonywanie w tle jednej długotrwałej czynności bez pełnego blokowania interfejsu użytkownika. Tak napisane programy nie tylko nie przyspieszały wcale po uruchomieniu na komputerze wieloprocesorowym pracującym pod kontrolą Windows NT (Windows 95 i jego następcy nie potrafią korzystać z więcej niż jednego procesora), lecz czasem – na skutek błędów programistów nie mających wprawy w tworzeniu oprogramowania wielowątkowego – stawały się wręcz niestabilne, pracując prawidłowo tylko na jednym rdzeniu jednego procesora.

Dzisiaj dotarliśmy do miejsca, w którym dalsze przyspieszanie pojedynczych rdzeni będzie wymagało wielkich nakładów pracy. Owszem, dalej możliwe jest projektowanie układów tak, aby działały z wyższą częstotliwością i tak, aby w każdym cyklu zegarowym wykonywały więcej pracy; dowodem na to są najnowsze modele procesorów z rodzin AMD-64 oraz – szczególnie – Intel Core. Mimo to nie spodziewajmy się raczej dwukrotnego przyspieszenia działania procesorów w ciągu kilku miesięcy, jak się to ongiś zdarzało.

Gdyby wstrzymanie możliwości rozwoju procesorów nastąpiło z jakiejś przyczyny dużo wcześniej, być może dzisiaj nie mielibyśmy problemów z pracą równoległą. Na pudełku programu graficznego w wymaganiach sprzętowych nie byłby podany procesor o częstotliwości taktowania 2 500 MHz, lecz na przykład 10 jednostek obliczeniowych 250 MHz. Zwiększanie wydajności komputera odbywałoby się nie przez wymianę procesora (i potencjalnie również reszty maszyny, ze względu na niezgodność podstawek, typów pamięci i inne przeszkody) na szybszy, ale przez otwarcie pokrywy i włożenie w gniazda kilku kolejnych modułów procesorowych. Systemy operacyjne przeznaczone do użytku domowego od dawna obsługiwałyby już konfiguracje składające się z wieludziesięciu procesorów, a oprogramowanie byłoby podzielone na dziesiątki wątków, by wciąż przyspieszać — nawet po znaczącym rozbudowaniu konfiguracji komputera. Nie będę się już rozwodził nad tym, że uruchomienie pięciu aplikacji nie powodowałoby większego spowolnienia żadnej z nich — każda miałaby w końcu do dyspozycji własny procesor i pewnie kilka zapasowych na uruchamiane w tle dodatkowe wątki.

Tymczasem olbrzymia większość komputerów stojących w naszych domach wciąż dysponuje jednym jedynym rdzeniem procesora. Wydajnym, co prawda, lecz zwalniającym do granic możliwości, gdy uruchomi się jednocześnie kilka zadań obliczeniowych lub równolegle z działaniem jakiegoś programu próbuje wygodnie pracować w innych aplikacjach. Nieliczne procesory dwurdzeniowe pojawiające się na rynku od ubiegłego roku dopiero niedawno zyskały sojusznika w postaci wieloprocesorowego systemu operacyjnego nadającego się do zastosowania w domu i biurze (Windows XP), choć najtańsza i najpopularniejsza jego odmiana (Home Edition) ograniczona jest sztucznie do obsługi jednego procesora; na szczęście jako jeden traktowane są również procesory wielordzeniowe, lecz stanowi to kolejną barierę w zrównoleglaniu przetwarzania. Wszystko to jednak i tak na niewiele się przydaje, gdyż aplikacje przystosowane do pracy wieloprocesorowej to rzadkość (i są to głównie programy realizujące zadania łatwe w podziale na wątki — na przykład przetwarzanie obrazu), a programy użytkowe skalujące się powyżej dwóch rdzeni można policzyć na palcach.

Mimo to ja już zdecydowałem: mój kolejny komputer będzie miał procesor co najmniej czterordzeniowy. Czy Ty też podjąłeś decyzję?


Ja już u siebie goszczę Intel Core 2 Duo E6600, czekam jeszcze tylko na płytę główną i zacznę montaż. Nie spodziewam się Bóg wie jakich przyspieszeń, bo nie o to chodzi. Spodziewam sie wzrostu płynności działania Linuksa, szybszej kompilacji programów, ale to bardziej ze względu na nowocześniejszość C2D w stosunku do mojego Athlona 64. Oczywiście 2 rdzenie to nie jeden, więc myślę, że z czasem wykorzystam je tak jak należy :) Nie powinny się zmarnować raczej :D
Należy pamiętać, że dwa procesory nie oznaczają podwójnego wzrostu wydajności. Wiele procesorów na jednej płycie głównej może pracować symetrycznie lub asymetrycznie. Wydaje mi się, że lekkim uproszczeniem jest stwierdzenie, że producenci procesorów poszli w megaherce ot tak sobie. Trudniej jest zaprojektować wydajny system operacyjny mogący korzystać z kilku oddzielnych procesorów. Każdy z tych procesorów musi mieć dokładnie ustalone zadania, żeby nie dublować "kolegów", musi sie wymieniać informacjami z innymi procesorami, żeby zmiany, które poczyni w rejestrach były wszędzie aktualne. Mi się wydaje, że to nie jest kwestia tylko chęci zwiększania megaherców u producentów procesorów. To także nieudolność i brak chęci ze strony MS do wprowadzenia na rynek dobrego, stabilnego i wydajnego systemu, który byłby w stanie obsłużyć więcej niż jeden procesor. Jako, ze MS zdominował rynek domowych komputerów i uznał, że użytkownik nie będzie potrzebował dwóch procesorów, producenci chipów niewiele mieli do powiedzenia. Takie jest moje zdanie na ten temat. Ale to już temat na oddzielny wpis o zupełnie innej naturze :)

Pozdrawiam

walth
Po pierwsze, dwa rdzenie lub dwa procesory mogą oznaczać prawie dwukrotnie większą wydajność. I powinny. Aplikacje powinny być tak pisane, by w miarę możliwości rozkładać n–krotnie mniejsze obciążenie pomiędzy n wątków, gdzie n to liczba rdzeni czy procesorów logicznych obecnych w komputerze.
Po drugie, Windows 2000/XP/2003 są systemami stabilnymi, skalują się nienajgorzej i bez problemu obsługują dwa rdzenie/procesory na pewno, a pewnie nawet przy czterech czy ośmiu rdzeniach nie mają jeszcze zbyt dużych problemów ze skalowalnością. Negowanie tego to po prostu FUD. Sam byłem zdziwiony jak wiele pracy wkładają ekipy tworzące oprogramowanie serwerowe Microsoftu w zapewnienie maksymalnej wydajności na jednym procesorze oraz maksymalnej skalowalności na maszynach wieloprocesorowych.
Jeżeli mowa o systemach słabo skalujących się wraz ze wzrostem liczby procesorów to można wymienić Windows NT 4.0 i starsze, ale też FreeBSD 4.x, Linux 2.4 czy Mac OS X (przynajmniej w wersjach sprzed 10.4).
No cóż, jak widać mamy wiadomości z różnych źródeł. Nie mam zamiaru podważać pańskiej wiedzy na ten temat. Z moich źródeł (książek o systemach informatycznych głównie, takich jak Stalling czy Silbershatz) wynika, że nigdy n procesorów nie będzie oznaczało n krotnej wydajności. Pan sam stwierdził, że "mogą oznaczać prawie dwukrotną wydajność". Prawie czyni różnicę. Bo albo prawie (czyli 99% na przykład) albo "dwukrotną wydajność” czyli 100%. A ja napisałem przecież, że dwukrotnej nie osiągnął, czyli można napisać, że przy dobrych wiatrach prawie dwukrotną. Co do skalowalności windowsów to nie pisałem o rozwiązaniach serwerowych, ale domowych. A te nie są już tak dopracowane pod tym względem. A na pewno nie były w czasach procesorów 250MHz, o których Pan pisał w artykule. Owszem z moich komentarzy na tej stronie jasno wynika, że jestem zwolennikiem Linuksa, ale posądzanie mnie o FUD to "lekka” nadinterpretacja. Swego czasu miałem okazję kupić płytę dwuprocesorową (było to lat temu jakieś 6-7). Okazało się, że windows nie był wstanie sobie poradzić z dwoma procesorami. Windows 98 SE chyba to był. Były to czasy kiedy Windows królował znacznie bardziej w domach niż teraz i można śmiało powiedzieć, że obejmował prawie 100% (;-)) komputerów domowych. Spotkałem się swego czasu z opracowaniami mówiącymi, że to był powód dla którego stawiano na megaherce a nie ilość procesorów. Dodatkowa ceny takich procesorów były znacznie większe niż teraz (proporcjonalnie). Rozwiązania dwuprocesorowe były naprawdę zawrotnie drogie. A to wtedy kształtowała się, według mnie, przyszłość dzisiejszego światka procesorowego. Gdyby rozwiązania dwuprocesorowe sprawdziły się na pewno doczekalibyśmy się ich upowszechnienia już w tamtym okresie. A później maszyna ruszyła, wszyscy "wiedzieli", że liczą się megaherce i już. I tak zostało do dziś. Owszem rozwiązania serwerowe powstawały nie od dziś. Ale jednak serwery były w znacznej większości obsługiwane przez uniksy (*BSD na przykład). Windows dopiero od wersji NT stał się "sensownym” konkurentem dla wszelkiej maści uniksów. Nie zapominajmy, że windows od początku miał być na komputerach tanich instalowany, a nie mainframe. Znawcą tematu nie jestem, ale wydaje mi się, że w artykule potraktował Pan wszystko zbyt po "macoszemu” czego wynikiem jest ta dyskusja :) Jeśli to FUD według Pana to zamilknę i swoje zdanie zostawię dla siebie gdyż nie jest moim zamiarem rozbudzanie jakiś świętych wojen i niepotrzebnych dyskusji.

Pozdrawiam

Waltharius
Ale jest różnica między prawie dwukrotnie większą wydajnością, którą powinniśmy mieć, a tym co faktycznie dają procesory dwurdzeniowe z obecnym oprogramowaniem, czyli czasem mniej niż na jednordzeniowym procesorze o podobnym lub nieco wyższym zegarze. O to mi chodzi — nie o sprzeczanie się jak bliski idealnej dwójki powinien być współczynnik przyspieszenia (bo doskonale zdaję sobie sprawę, że z różnych względów idealnie dwukrotne przyspieszenie dzięki drugiemu rdzeniowi jest w praktyce nierealne).
A co do systemów Windows: jądro Windows 2003 jest prawie identyczne z jądrem Windows XP. Porównywałem ich skalowalność i jest praktycznie identyczna. Po prostu XP ma wbudowane ograniczenia zapobiegające używaniu go na zbyt „serwerowych” maszynach. Nie ma mowy o tym, aby „domowe” Windows marnie korzystało z procesorów wielordzeniowych, a serwerowe dobrze. Obie gałęzie rodziny Windows równie dobrze się obecnie skalują.
A co do FUDu: chcę podkreślić, że granica między byciem zwolennikiem a fanatycznym wielbicielem jest czasem bardzo cienka i trzeba bardzo uważać, by jej nie przekroczyć :) Używam bardzo regularnie różnych odmian Windows i Linuksa i wiem, na co je stać. Ani jeden, ani drugi system nie ma nad konkurentem jakiejś obezwładniającej przewagi i oba mają jakieś wady o różnej wadze w zależności od zastosowań. Dlatego protestuję przeciwko zdaniom typu „...to także nieudolność i brak chęci ze strony MS do wprowadzenia na rynek dobrego, stabilnego i wydajnego systemu, który byłby w stanie obsłużyć więcej niż jeden procesor...”, które są niepodparte argumentami i w zasadzie błędne. Podsumowując: nie mam zamiaru komentującym „zamykać ust”, ale proszę o więcej obiektywizmu :)
Ja jakoś nie znalazłem w sieci testów, które by pokazywały iż procesory z jednym rdzeniem są szybsze niż z dwoma rdzeniami w tym samym zadaniu. Może mi umknęło.
Co do fanatyzmu. Daleko mi do tego :) Lubię czasami po spekulować, ale to samo widzę w tekstach zamieszczonych przez Pana. Bo czym tak naprawdę jest ten wpis? Spekulacją w dużej mierze. Dlaczego? Nie ma poparcia w żadnych testach czy wypowiedziach innych ludzi na to, co Pan napisał. Moim zdaniem jest to po prostu Pańskie zdanie ale sformułowane tak, jakby miało szersze poparcie niż tylko w Pańskim doświadczeniu. Ja często na takie wypowiedzi reaguję podobnym tonem :) Pisze Pan o testach windows 2003 i xp ale gdzie wyniki? Z chęcią bym zobaczył bo mi się jednak znacząco inaczej pracowało na 2003 niż na xp. Nie miałem co prawda okazji testować tych windowsów na procesorach wielordzeniowych czy też na systemach wieloprocesorowych, jednak moje wrażenie było odmienne niż Pańskie. Dla mnie windows 2003 po dopieszczeniu był znacznie "lepszy” niż xp po dopieszczeniu. Serwer www czy dns działał o wiele płynniej i stabilniej niż na xp. I nie mówię tu o rozwiązaniach OpenSource ale o Microsftwych serwerach. Nie wiem jak wielkie są różnice między 2003 a xp na poziomie kodu jądra, ale wydają się – subiektywnie – znacznymi. Ale to już odbiega od tematu Pana wypowiedzi. W każdym razie uważam, że do poparcia swoich przemyśleń powinien pan użyć wyników jakiś testów, przeprowadzonych przez Pana albo innych. Inaczej są to tylko Pańskie przemyślenia podane w sposób autorytarny, na który, w moim odczuciu nie zasługują :) Oczywiście, to Pański blog i ma Pan prawo pisać to, na co ma ochotę, dlatego żywię nadzieję, że nie uraziłem w niczym Pana swoim tekstem, może trochę zbyt chaotycznym, za co przepraszam. W każdym razie nadal z niecierpliwością czekam na kolejne teksty, które znacząco odbiegają, w sensie pozytywnym, od większości technicznych tekstów w polskiej sieci. :)

Pozdrawiam

waltharius
Wystarczy porównać procesor dwurdzeniowy 2 GHz z jednordzeniowym 2.5 GHz (procesory dwurdzeniowe najczęściej mają niższe taktowania, poza tym są droższe, szczególnie w przypadku AMD). Ten pierwszy bezdyskusyjnie dysponuje większą sumaryczną mocą obliczeniową. Mimo to po uruchomieniu aplikacji jednowątkowej to procesor jednordzeniowy będzie szybszy. Oczywiście, przy dwóch aplikacjach pracujących równolegle sytuacja zmieni się diametralnie, lecz większość typowych użytkowników uruchamia na raz tylko jeden program i oczekuje błyskawicznego jego działania.
Jeżeli chodzi o „płynność” Windows 2003: o ile mi wiadomo nie uruchomi się pod XP i 2003 tych samych wersji oprogramowania serwerowego Microsoftu, a to skalowalność oprogramowania, a nie systemu, liczy się bardziej w takim porównaniu. Dopiero porównanie na przykład Exchange pod kontrolą Windows 2003 i Windows XP (nierealizowalne) na czterordzeniowej maszynie dałoby sensowne porównanie.
Różnice na poziomie jądra nie są znaczne, większość to pewnie audyt pod względem bezpieczeństwa. Czytałem o tym, że poczyniono pewne zmiany, na przykład w mechanizmie sekcji krytycznych i w efekcie 2003 może być na platformach zawierających faktycznie bardzo dużo rdzeni lepiej skalowalne (czego jednak się nigdy nie sprawdzi, bo XP po prostu zignoruje nadmiar procesorów ze względów licencyjnych). Na maszynach dwurdzeniowych czy czterordzeniowych różnica powinna być pomijalna.
Co do źródeł danych: faktycznie benchmarków nie mam, bo też nie mam 4-rdzeniowego komputera z możliwością dowolnego dysponowania jego czasem. Jednak architektury systemów są bardzo dobrze opisane i na ich podstawie można bardzo ładnie porównać możliwości skalowalność poszczególnych rozwiązań. W przypadku Windows polecam artykuły SysInternals.com Windows 2000 Scalability Enhancements, zaś Linuksa — niestety głównie lekturę listy dyskusyjnej linux-kernel. Owszem, chętnie porównam skalowalność wieloprocesorową systemów w liczbach jak tylko będę miał odpowiedni sprzęt do dyspozycji.
Pewne porównanie skalowalności można oglądnąć w artykule o sekcjach krytycznych i operacjach atomowych, jednak ze względu na olbrzymią różnorodność konfiguracji sprzętu i testowanie dwóch tylko, bardzo prostych i podstawowych operacji nie można wyciągnąć wniosków o wyższości któregoś z systemów.
Jak widać na przykład tutaj http://www.benchmark.pl/r.php?file=http://www.benchmark.pl/artykuly/recenzje/Intel_Core/strona-1.html nie jest prawdą to, co Pan napisał o wydajności jedno rdzeniowego procesora i dwu rdzeniowego w aplikacjach jednowątkowych na przykład. Na przykład C2D EE6600 taktowany zegarem 2,4 jest szybszy niż Pentium EE955 taktowany 3,46. W innych testach to się potwierdza dalej. Kwestia wielkości pamięci podręcznej, kwestia dostępu do tej pamięci i inne nowinki technologiczne przebijają same megaherce. Dla zainteresowanych polecam przeczytanie całego tego artykułu bo naprawdę sporo można się dowiedzieć o budowie procesorów (nie tylko wielordzeniowych). Co do Windows 2003 i xp zgodzę sie całkowicie z Panem. Nie ma co porównywać bo brak wspólnego punktu odniesienia. Co do lepszości któregokolwiek systemu (hehe), każdy ma swoje preferencje. Wiadomo nie od dziś, że Windows może być dobrym systemem jeśli się o niego odpowiednio zadba. Rzadko kiedy jednak w korporacjach czy w sieciach Windows jest na przykład konfigurowany jako firewall. Przeważnie to Linux/Unix pełni tę funkcję. Jednak nie ma czegoś takiego jak "lepszy” system. Obiektywnie. Przyjęło się mówić, że Windows jest łatwiejszy, jednak takie Ubuntu czy Kubuntu teraz zadaje temu kłam. Kwestia przyzwyczajenia i zmiany filozofii użytkowania systemu operacyjnego . Cała trudność leży po tej stronie. Windows może też być bardzo bezpiecznym systemem i stabilnym, tylko trzeba włożyć w to sporo wysiłku od samego początku... I tak można dluuugo :) Każdy system jest tak dobry jak dobry i świadomy jest jego administrator :)
Co do testów procesorów wielordzeniowych, to wystarczy poszukać jeśli samemu się nie może ich przeprowadzić, bo w sieci sporo tego jest.

pozdrawiam

waltharius
Ależ nie ma najmniejszego sensu robić porównania procesorów o dwóch tak różnych architekturach, bo porównuje się architektury właśnie, a nie liczbę rdzeni. A o tym, że Core jest w większości zastosowań szybsze od NetBursta wiedzą już chyba wszyscy.
Polecam poszukanie porównania Core Solo z Core Duo, albo Athlona 64 z Athlonem X2. Tu będzie widać to, o czym mówię, bo procesory będą identyczne, tylko w jednym przypadku układ będzie jednordzeniowy, a w drugim dwurdzeniowy.
Zapewniam też, że jednordzeniowa wersja Conroe wcale nie byłaby dużo wolniejsza od dwurdzeniowego Conroe w zastosowaniach jednowątkowych, a gdyby miała nieco wyższy zegar — pobiłaby dwurdzeniowca całkiem.
Niestety nie udało mi się znaleźć żadnych bezpośrednich testów core duo i core solo oraz athlon 64 versus x2. Sądzę jednak, że to co Pan pisze sprawdzi się tylko i wyłącznie jeśli użytkownik będzie korzystał z jednego programu w danej chwili i przy założeniach, ze program ten nie będzie optymalizowany na co najmniej dwa rdzenie. Wspominał Pan o tym. Jednak jakie jest prawdopodobieństwo, że tak się stanie. Moim zdaniem niewielkie. Większość użytkowników nie poprzestanie na jednym programie (a nowe gry prawie wszystkie są wstanie wykorzystać dwa rdzenie). Dodatkowo programy wymagające ogromnych mocy obliczeniowych również w znakomitej większości potrafią wykorzystać kilka procesorów. Dlatego sądzę, że to, co Pan napisał w artykule jest prawdą, owszem, ale nie jest czymś powszechnie występującym. Potrzeba by wiele testów i badań tzw. opinii publicznej aby stwierdzić na 100% czy takie spowolnienie faktycznie występuje i czy faktycznie ma aż takie znaczenie :)
Znalezienie testów nie jest problemem: tutaj jest bezpośrednie porównanie Athlona 64 z Athlonem X2 i widać, że w jednowątkowych testach model jednordzeniowy jest tak samo szybki jak dwurdzeniowy lub nawet minimalnie szybszy dzięki brakowi narzutu wieloprocesorowości. Dodatkowe 200 MHz będzie w tym przypadku tańsze niż drugi rdzeń, a da o wiele lepsze rezultaty.
Po drugie, nie jest prawdą, że aplikacje jednowątkowe to mniejszość. Jest wręcz przeciwnie. Takie programy jak Word, Excel, Firefox czy OpenOffice oraz wciąż jeszcze olbrzymia większość gier nie są w stanie wykorzystywać systemów wieloprocesorowych lub robią to nieoptymalnie lub okazjonalnie tylko. Widać to w podlinkowanym przeze mnie teście: w benchmarkach biurowych drugi rdzeń daje nic lub niewiele.
Owszem, uruchomienie równolegle dwóch aplikacji zmienia ten stan rzeczy i tu jest jedyna nadzeja: antywirus czy GG będą obciążały jeden rdzeń, a drugi będzie do zadań bieżących. Użytkownicy grający jednak w jakąś grę sprzed roku czy dwóch i spodziewający się po systemie dwurdzeniowym przynajmniej 50% przyspieszenia będą sporo zawiedzeni...
Ja nie napisałem nigdzie, że większość aplikacji wykorzystuje dwa rdzenie. Napisałem, że mało kto używa tylko jednej aplikacji w jednym momencie. Zazwyczaj mamy odpalone na kompie kilka(naście) aplikacji w tym samym czasie. Co do gier to też napisałem, że te najnowsze tytuły wykorzystują dwa rdzenie a ten, kto woli gry starsze nie będzie raczej inwestował 1400 zł na nowy procesor dwu rdzeniowy, tylko kupi lepszą kartę graficzną. Test, do którego link Pan podał umknął mi jakimś dziwnym cudem :) Szukałem porównania core duo z core solo ale nie znalazłem. W aplikacjach jednowątkowych oczywistym jest, że liczą się megaherce ponad dwoma czy ilomaś tam rdzeniami. Jednak tendencja jest taka, że przy normalnym używaniu komputera zauważy się różnicę chociażby z tego powodu, iż uruchamiamy zwykle kilka programów a nie tylko jeden. Sądzę więc, że pisanie o spowolnieniu procesorów wielordzeniowych ma w tym wypadku znaczenie czysto akademickie gdyż nie bierze pod uwagę tego jak na co dzień się korzysta z komputera. Nigdy, nikt, kto pracuje na komputerze nie będzie miał odpalonej jednej tylko aplikacji czy jednego programu z tego powodu, że ma już system operacyjny, który także jest aplikacją. W tej chwili mam u siebie uruchomioną przeglądarkę internetową, czytnik rss, psi, du meter, freeram, firewall, antywirus, musicmatch, sterowniki do karty graficznej i mnóstwo innych usług systemowych. Do tego często dochodzą jeszcze: druga przeglądarka internetowa mojej kobiety, gadu-gadu takoż jej, odtwarzacz muzyki foobar 2000 czy windows player do filmów/teledysków. Sądzę, że po przejściu na dwa rdzenie zauważę różnicę mimo iż większość, jak nie wszystkie z tych programów, są raczej jednowątkowe. Oczywiście nie bagatelne znaczenie ma sama zmiana architektury, nowszy sprzęt, więcej ramu, szybsze dyski i lepsza grafika to ma największy wpływ na wydajność. Nie mam jednak możliwości sprawdzić wyników na porównywalnym sprzęcie, jedyne co, to mogę przeprowadzić jakieś testy u siebie i podzielić się informacjami na ten temat. Ale to dopiero w przyszłym miesiącu. Jeśli są jakieś propozycje co do natury tych testów to z chęcią przeczytam o nich :) Komputer będzie miał intel core 2 duo e6600, 2GB ram, GF 7600GT, systemy jakie mogę przetestować to windows XP i linux oraz freebsd. Dysk twardy 75GB raptor 10000 obr/min. i dwa dyski Seagate 250 GB Barracuda ES (16MB, Serial ATA II). Systemy chcę stawiać na raptorze, a przynajmniej Linuksa. Nie da się tej platformy porównać z amd64, 512 ramu i gf 6600gt, które aktualnie wykorzystuję dlatego porównania takiego raczej nie będzie. Generalnie dochodzę do wniosku, że niezbyt dokadnie zrozumiałem zamiar tego artykułu :) Niepotrzebnie pianę biję bo jak rozumiem chodziło po prostu o przedstawienie pewnego akademickiego problemu, który jest dość słabo widoczny podczas normalnego użytkowania komputerów. Nikt przecież nie spodziewa się, że po zakupie procesora dwu rdzeniowego wszystko będzie działało 2x szybciej, a ci co się tego spodziewają, raczej nie zaglądają na tę stronę :) Tak więc chylę czoła przed Autorem i pax :) Mimo wszystko wydaje mi się, że ciekawa dyskusja się nam tutaj rozwinęła :)

Pozdrawiam

Marcin Radczuk
Liczba odpalonych aplikacji nie ma znaczenia. Liczą się pracujące aplikacje. Na przykład, nawet przy „siedzących” w tle pulpitu okienkach OpenOffice, Firefoksa, Photoshopa i Thunderbirda obróbka zdjęcia programem jednowątkowym wcale nie będzie na procesorze dwurdzeniowym szybsza niż na jednordzeniowym, bo te aplikacje są uśpione i nie wymagają mocy CPU. Tak samo taki Foobar ma tak małe obciążenie procesora, że zysk z odłożenia go na drugi rdzeń będzie zlikwidowany przez obciążenie wieloprocesorowością.
Natomiast faktycznie drugi rdzeń przyda się osobom pracującym z maszynami wirtualnymi (VMWare, VirtualPC) i jednocześnie obrabiającymi dokumenty i obrazy — choćby w aplikacjach jednowątkowych. Przyda się tym, którzy chcą kompresować jednocześnie dwie sekwencje wideo. Przyda się tym, którzy wraz z intensywną pracą programu P2P i sieci lokalnej chcą pograć w najnowszego Dooma. O użytkownikach nielicznych programów wielowątkowych już nie wspominam, bo one przyspieszą nawet samodzielnie.
Zysk z wielordzeniowości łatwo sprawdzić w Linuksie. Jeżeli load average za ostatnich kilka sekund często oscyluje w okolicach dwójki, zysk będzie łatwo zauważalny. Jeżeli w okolicach jedynki — będzie widoczny przy niektórych okazjach. Jeżeli, jak u wielu, jest głównie w okolicach zera — nie będzie zysku.
Zgadzam się. Wyraziłem się mało precyzyjnie.
Ja tam mam P3 933EB Dual i raczej jasny jest obraz, że dwa procesory robią 2 razy tyle co jeden procesor. Chociaż nie jest to regułą. To zazwyczaj się sprawdza przy uruchomieniu jednego programu wymagającego dużo zasobów. W przypadku wielu "małych" programików przyrost wydajności nie jest tak duży, ale jest wyrażnie odczuwalny niż w przypadku jednego CPU.
Szkoda, że Intel na PIII, jak na razie, zakończył przygodę z SMP dostępną dla zwykłego użytkownika. Chociaż Xeon z Itanium obrał w tym kierunku drogę, jednak cena takiej platformy dalej jest niedostępna dla większości.
Szkoda, że nowy wynalazek Intel'a jest prawie jak dwa procesory w jednym pudełku. Czyżby historia lubiła się powtarzać?
„Nowy wynalazek Intela” w zasadzie niczym nie różni się od dwóch osobnych procesorów (a nawet jest nieco lepszy). Po prostu aplikacje nie wykorzystują ani systemów wielordzeniowych, ani wieloprocesorowych (z wyjątkami).
Raczej bym spekulował, co do 2 cpu's w jednym układzie. Podejrzenia budzą fakty, że pozostali producenci, może w ogóle nie znani użytkownikom pc. Wytłuszczonym drukiem (prawie na całą stronę) wymieniają (również należy dodać bijącą po oczach reklamę flash'ową), że mikrokontroler w swojej strukturze zawiera dual independent processing units. Również dziwne jest to, że kontroler TAP(JTAG) jest wspólny(jeden?).
Jestem skłonny do tezy, że jest to poprawione HT.
Udało mi się zobaczyć w akcji "dwujajową pentiawkę". Za bardzo nie było czuć dwuprocesorowej maszyny. Ale jest to moje subiektywne zdanie.
Może faktycznie jest to inny rodzaj wieloprocesorowej technologii?
Pożyjemy, zobaczymy.
Nie ma co spekulować. To  dwa układy w jednej strukturze. Wystarczy pooglądać publikowane powiększone zdjęcia struktur krzemowych i porównać z jednordzeniowymi rozwiązaniami.
PS. Pierwsze modele Pentium D były o ile pamiętam dwoma osobnymi kawałkami krzemu (Xeonami zresztą minimalnie zmodyfikowanymi) przylepionymi obok siebie na jednej podstawce i komunikującymi się przez FSB.
Może to też jest sposób, jednak wolę osobiście pomacać, pooglądać, zapuścić JTAG'a.