Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Simd/MMX, wie funktioniert das?

  Alt 12. Mär 2011, 04:04
Jop, genau für sowas ist das sinnvoll. Im Grunde läuft das dann so ab: Du hast sagen wir 2 Sätze von A, B und C, die sind mal Singles. Für SSE würde man dann sagen: Push bitte A1 in den linken Teil des Registerstacks, A2 in den rechten. Dann push B1 links und B2 rechts, dann C1 links und C2 rechts. Dann, lieber Prozessor, tu so als wären das 2 Floats nebeneinander in deinen Registern, und mache "*", dann "+", und was dann da noch steht schlabber ich mir als Ergebnis wieder raus. Dann die nächsten zwei Stäze, usw. usf.
Das lohnt im Einzelfall schon für nur zwei Sätze, das richtige Potenzial nutzt man aber halt, wenn man sowas in größerer Menge durchnudeln kann, ohne die FPU wieder normal zu schalten zwischendrin - zumindest war das bei MMX so, SSE habe ich selbst noch nicht gebaut.
Wo ich mich von meinen aktuellen GPU Shader-Odysseen hab natzen lassen: Im Grunde ist es worscht, ob da immer die selben Berechnungen ablaufen, das war bei Vector- bzw. Stream-Processing wichtig, für bloßes SIMD nicht - sorry für die Verwirrung. Der "wichtige" Teil sind hier wirklich nur die Modeswitches, und selbst mit diesen kommt man schon besser weg als ohne SIMD - zumindest wenn man es einigermaßen geschickt anstellt, ist halt auch Übungs- und Ausprobierenssache, bis man die flotteste Kombi an Opcodes und Strukturen gefunden hat.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (12. Mär 2011 um 13:01 Uhr)
  Mit Zitat antworten Zitat