Original geschrieben von Winn
Heißt das, daß man nicht mal eine Altivec Syntax nutzen muß, um Altivec zu nutzen... das wäre ja sensationell
Winn
Nein, das heisst es leider nicht. Ich haette "Spracherweiterungen" anstelle von "Erweitungen" schreiben sollen, dann waere wohl klarer herausgekommen, dasz der Compiler dem Programmierer leider nicht den gefallen tut, automatisch diese zusaetzliche Recheneinheit zu Nutzen, nur weil die "Erweiterung" eingeschaltet ist. Inwieweit die Motorola-Erweiterungen tatsaechlich automatisch Code, der nicht entsprechend Vorbereitet ist an Altivec anpassen koennen weisz ich nicht.
Um es mal ganz knapp zusammenzufassen:
Altivec ist eine zusaetzliche Recheneinheit, die, wenn sie denn genutzt wird, tatsaechlich gewaltige Geschwindigkeitsvorteile hat. Man koennte sagen, dasz Altivec die Verarbeitung von gleichartigen Daten durch parallelisierung Beschleunigen kann.
Ueblicherweise verarbeiten Programme Daten sequentiel, sprich: Ein Wert wird nach dem anderen Verarbeitet. Wenn ich also die Aufgabe habe, 16 Werte durch jeweils 16 andere Werte zu teilen, dann wuerde ein "normales" Programm folgendes tun:
Solange (nicht alle 16 Werte verarbeitet) {
Einen Wert nehmen
Durch den jeweils korresponierenden anderen Wert teilen
}
Bei Benutzung von Altivec saehe das folgendermassen aus:
1. Alle 16 Werte auf einen Rutsch in der Altivec Einheit speichern
2. Die anderen 16 Werte in der Altivec Einheit Speichern
3. Befehl an Altivec: Werte durch einander Teilen
Das kann natuerlich extrem Fix sein, immerhin koennte ich das Ergebnis unter Benutzung von Altivec in nur 3 Schritten erreichen, anstatt mit (mindestens) 32 ohne Altivec.
Allerdings ist es eben in den weitaus meisten Faellen nicht so Simpel wie oben geschildert. Und wenn man Altivec "falsch" Nutzt, wird die Applikation langsamer als ganz ohne Benutzung von Altivec. Im schlimmsten Fall kommt beim Rechnen einfach nur Muell heraus.
Falls Interesse besteht, bin ich sehr gerne bereit den "Mythos Altivec" mal naeher zu Beschreiben, anstatt wie ueblich auf die Dokumentation fuer Programmierer zu Verweisen (die fuer Einsteiger eine ziemlich harte Nuss sein kann).