Ja, ik zie niet in welke desktopapplicaties nu exorbitant veel processing power nodig hebben. En zeker in bedrijfsomgevingen gaat alles nu al vaak gecentraliseerd als het gaat om complexe processing (databases, report generators etc).
Als dat zo was, waarom is er dan überhaupt desktop en notebook hardware? Als performance er niet toe zou doen, waarom zijn er dan niet alleen maar notebook CPU's?
Met 'notebook CPU's' bedoel je dan neem ik aan de energie zuinige versie van de reguliere CPU's. Deze zijn ontwikkeld om zo lang mogelijk met een accu operationeel te kunnen zijn met een bepaalde performance, maar zeker bij Centrino bijvoorbeeld heeft men performance niet als een van de belangrijkste punten als basis gehad.
Ik snap best dat jij van mening bent dat eigenlijk niemand meer dan pak 'm beet een PIII 500Mhz nodig zou hebben. Met heel secuur en optimaliserend programmeren zou dat voor veel gevallen nog wel waar zijn ook, maar voor net zo veel andere gevallen weer compleet niet. Mensen willen en eisen steeds meer. Daarnaast verwachten ze ook dat van software steeds sneller een nieuwe release uit komt, die meer en meer kan.
Misschien dat men qua processing speed nu gemiddeld wel die PIII nodig zou hebben, echter bij de pieken heeft men meer capaciteit nodig. Als ik er even vanuit ga dat alle
multi-core CPU's die nu uitgebracht worden sneller zijn de de laatste reguliere single core dan zit daar alleen al snelheidswinst in. Doordat er hierdoor per core minder threads zijn is er per definitie al een performancewinst. En met een beetje slim power management kan je een aantal cores uitschakelen of terugklokken op tijden dat er minder processing power nodig is (waardoor je bij dalmomenten misschien de performance van een PIII hebt).
Volgens jouw redenatie ("bijna niemand heeft meer processing power nodig"), zouden Intel, AMD en consorten net zo goed kunnen stoppen met het designen van nieuwe architecturen, en zich enkel en alleen richten op het fabriceren van de bestaande modellen. Als dan de hele wereld zo'n CPU heeft, dan kunnen ze zich zelf zo ongeveer beperken tot het produceren van wat vervangings CPU's als er ooit eens eentje kapot gaat.
Voor een deel is het commercie, voor een ander deel de constante drang naar vernieuwing (en dat is ook noodzakelijk). Echter op een gegeven moment zal de ontwikkeling zeker 'stallen' als het gaat om mainstream toepassingen. Om even een simpel voorbeeld te geven, stel dat je een record op wil slaan in een database, en dat is een record van 64KB. Dan zal dat misschien enkele miliseconden schelen als je de mainstream tegen de top van nu zou uitzetten. Ik zie niet in hoe dat met een CPU die bwvs 64 cores heeft sneller gaat kunnen, of in ieder geval merkbaar sneller.
Leuk detail is dat in Vista bijvoorbeeld dialogen bij het tonen worden vertraagd (fade) zodat de gebruiker het beter begrijpt. Dus uiteindelijk blijf je op dat punt toch op de gebruiker wachten. Als het gaat om displays, het menselijk oog kan maar een bepaalde resolutie onderscheiden. Dus ook daar zit een limiet aan.
Tuurlijk werkt dat niet zo. De ontwikkeling gaat door en het einde is nog lang niet in zicht. Het verschil is alleen dat de CLOCK SNELHEID binnen afzienbare tijd (met de huidige inzichten) niet/amper meer omhoog zal gaan. Je ziet nu al een beetje een soort cycle; single-cores gaan tot +- 3.8Ghz. Dual-core komt uit, begint op lage clock en klimt langzaam naar de +-3Ghz. Quad-core komt uit, begin op lagere clock en klimt ook langzaam naar de +3Ghz, etc.
Die 'lagere clock' zou ik liever willen typeren als een 'mainstream clock'. Want de topmodellen (3.8 Ghz) worden voor zover ik weet relatief weinig verkocht en zijn voor de bedrijven meer paradepaardjes om klanten te binden. Op een gegeven moment kan men (met de juiste architectuur) heel schaalbaar cores toevoegen verwacht ik, zonder dat men direct de clocksnelheid moet verlagen ivm temperaturen oid. Dus ja, de ontwikkeling zal door gaan.
Wellicht dat met een geheel andere aanpak er over een tig aantal jaren weer een echte of effectieve stijging van de clock snelheid mogelijk is. Hier wordt ongetwijfeld onderzoek naar gedaan, maar of er iets bruikbaars gevonden gaat worden is nu natuurlijk nog niet zeker.
Voorlopig zal meer performance dus voornamelijk betekenen meer cores. Zoals Herb Sutter al schreef; de 'free lunch' is daarmee over. Je kunt niet meer meeliften op een automatische performance gain voor je sequentiële code, maar moet het actief gaan parallelliseren.
Nogmaals zou ik graag wat praktijkvoorbeelden willen zien. Als het gaat om databases, game(s) (engines), toolkits/platforms geef ik je gelijk, maar dit is een hele beperkte markt voor ontwikkelaars. Noem eens een concreet voorbeeld van een desktopapplicatie die nu dermate lang duurt en dat met paralleliseren zou kunnen worden versneld, ik noem er alvast een paar:
• Defragmenteren, formatteren, partitie resizen: I/O issue, zou je RAID of een HDD met meerdere koppen moeten hebben.
• DVD branden: ook I/O issue, zou je brander met meerdere koppen moeten hebben, of in 1 keer dubbelzijdig.
• Printen: Ook I/O issue, misschien dat converteren vanuit applicatie naar metaformaat voor printer versneld kan worden maar veelal blijft de latentie van het netwerk/printserver de bottleneck.
• Downloaden: Idem.
Dus nogmaals, voor de meeste applicaties zie ik niet in dat 'extreem toepassen van threads' nuttig is, ik zie het dan als overhead.
Doe je dat niet, dan zeg je eigenlijk tegen je gebruikers: 3Ghz is genoeg voor jou. Voor altijd... Of te wel, een variant op het oude: "640Kb ought to be enough". Voor de gebruiker zal jouw app op de hedendaagse CPU (bv een dual core) exact even snel draaien als op een CPU van over 7 jaar (bv een 32-core). Hoeveel hardware jouw gebruiker er ook tegen aan gooit, die app van jou zal nooit sneller gaan.
Het sneller maken van applicaties ligt nu meestal aan het extern geheugen (harde schijf) dan aan de CPU. Je zal zelf wel beamen dat met een schijf van 10 jaar geleden met de nieuwste processor het voor geen meter op schiet. Ik zie dus eerder performancewinst voor een desktop in storage, bijvoorbeeld een snelle DDR-cache waar programmacode in wordt opgeslagen en browsercache. Dat zal pas een revolutie zijn.