Für bestehende Anwendungen ist das jedenfalls nichts was nachträglich einfach anflanschbar ist.
Aber warum soll es deswegen gleich ein Papiertiger sein? War MMX in Papiertiger, nur weil alte Software bei dessen Einführung keinen rückwirkenden Nutzen daraus hatte?
Es haben sich jetzt schon seit über 10 Jahren Mehrkern-CPUs etabliert und auch gut was gebracht. Damit das aber was nutzt muss man Software parallelisieren. Je nach dem was man berechnet ist das nicht ganz einfach und selbst wenn mans tut kostet das Overhead.
Das Intel mit der Technik Singlecoreleistung steigern will ist denke ich falsch ausgedrückt. Soweit ich das hier verstehe, soll durch diese Technik Code der Singlethreaded geschrieben ist mit einfachen Mitteln in Teilen trotzdem parallel ausgeführt werden können. Man steigert also eigentlich nicht die Singlecoreleistung, sondern man vereinfacht Multithreading soweit, das es einfach gemacht werden kann und auch für "Kleinigkeiten" ohne großartigen Overhead angewandt werden kann.
Ich mach mal ein Beispiel.
Originalcode, Singlethreaded:
Code:
a = b + c
d = a + e
f = g + h
i = j * k
l = f - i
Da kann man Teile davon parallelisieren. Lohnt sich aber nicht. Sowohl der Programmieraufwand als auch der Ausführungsaufwand ist zu hoch. Du müsstest die Ergebnisse zwischen Kernen hin und herkopieren, etc.
Die Inteltechnik soll aber auch den Ausführungsaufwand reduzieren, z.B. indem die beiden Kerne shared Register haben, auf die sie beide zugreifen können. Wenn man jetzt noch mit diesen FlowInstructions einfach ganze Bereiche als "das kann alles parallelisiert werden" markieren kann, würde daraus z.B. werden:
Code:
#instruction_flow_no_dependency_start
a = b + c
f = g + h
i = j * k
#instruction_flow_no_dependency_end
#instruction_flow_no_dependency_start
d = a + e
l = f - i
#instruction_flow_no_dependency_end
Damit hat der Entwickler dem Compiler (oder Interpreter) mitgeteilt, das die ersten 3 Rechnungen und die letzten 2 keine Abhängigkeiten haben und jeweils parallel berechnet werden können. Und mit der Intelerweiterung wird das dann auch einfach parallel ausgeführt, der Entwickler muss sich aber nicht weiter darum kümmern und es ist trotzdem schneller.
Das Beispiel sollte auch zeign, das es trotzdem nicht reicht einfach ein paar FlowInstructions irgendwo hinzuschreiben. Man muss schon die Logik durchgehen, ggf. Reihenfolgen ändern und dann eben noch die Instructions dazuschreiben. Ja das ist einfacher als ein Programm komplett neu zu schreiben, aber da muss man schon argen Bedarf haben um selbst diesen Aufwand zu treiben, nur damit es am Ende vielleicht 10% schneller wird.