Multithreading und Multiprocessing sind ja quasi die Eckpfeiler moderner Programmierung, insofern wird die Zukunft wohl immer stärker parallelisierte Anwendungen bringen.
Im Normalfall wird man sich da aber nicht an Hardwarevorgaben orientieren, (z.b. 4 Cores -> 4 Threads/Prozesse), sondern soviel wie möglich parallelisieren, den Rest erledigt der Scheduler.
Ich denke mittel- bis langfristig wird es in die Richtung Multi-Core mit spezialisierten Kernen gehen, auch bei x86, sprich Vektorprozessoren, Streamprozessoren oder was auch immer gehen, die dann von einer Steuereinheit gemanagt werden, ähnlich IBMs Cell.
Bei Games z.b. Musik, Physik, KI, es gibt imho schon einige Aufgaben im Bereich echtzeitprocessing, die sich parallel abarbeiten lassen sollten.
Eine andere Idee ist natürlich die Synthese aus GPU und CPU. Grafikkarten berechnen ja heutzutage schon mehr als nur Bilder, insofern stellt sich auch hier die Frage, ob eine diskrete Trennung der Bereiche in Zukunft Sinn macht.
Zum Nehalem konkret: 8 Kerne Ende 2008 sind imho noch etwas zu früh, was die Software angeht, aber bis 2010 könnte es hinkommen