StarG said:
Darüber lässt sich hervoragend streiten, denn hier gibt es zB ein Board das bis zu 256MB DDR unterstützt:
Das Problem ist eher der Stromverbrauch. DRAM verbraucht ständig Strom und muß auch immer wieder refreshed werden. CPUs kann man dagegen "schlafen" legen. Man könnte zwar die Spannung runtersetzen (wie bei DDR2), hilft aber trotzdem nur beschränkt. Bei PCs ist der DRAM Stromverbrauch kein Problem, bei mobilen Geräten schon.
Aus diesem Grund hatten auch die meisten PDAs nur 64MB und die 128MB-Version haben deutlich mehr Strom geschluckt.
StarG said:
Woher erschließt du diese Information ? Meines Erachtens nutzt z.B. der Videoplayer & Payback den 2ten Kern gut aus.
Der zweite Kern macht vermutlich nicht viel mehr als Daten aufzubereiten und zur Videohardware zu senden. Die komplette Dekodierung von MPEG-4 Video findet ja in der Hardware statt.
Frag doch mal die Leute, die sich damit beschäftigt haben, wie Gamepark den Code von mplayer "umbiegen" mußte, um die ganze Sache zu Laufen zu bekommen. Übrigens, für PC-Hardware sollte mplayer bzw. viele Dekodierroutinen in ffmpeg standardmäßig Dualcore/SMP-Support bieten.
StarG said:
Nichsdestotrotz solltest du dir vor Augen halten das eine MMU trotzdem kostspielig ist. Jede zu übersetzende virtuelle Speicheradresse kostet nämlich dann noch 1 Speicherzugriff mehr.
Soweit ich weiß, erfolgt die Umwandlung von virtueller in eine physische Adresse über einen TLB in der CPU, der beim System-/Programmstart geladen wird. Der Lookup benötigt daher standardmäßig keinen Speicherzugriff. Oder meinst Du eher einen zusätzlichen Taktzyklus? Da der TLB-Lookup parallel zum Cachezugriff erfolgt, sollte dies eigentlich nicht der Fall sein. Wenn doch mal ein Eintrag im TLB fehlt (im Bereich von 0,01...1%), dann muß meistens auch ein Cacheeintrag neu geladen werden und der Speicherzugriff muss sowieso erfolgen. Die MMU scheint also keine Performance zu kosten, sie nimmt nur Platz im Chip weg, der dann für andere Sachen fehlen könnte.
StarG said:
Viele PC Programme enthalten momentan FPU Code, werden diese 1:1 portiert sind diese Abschnitte sehr langsam, speziell Divisionen (die ja schon mit FPU schweinelangsam sind) werden äh nunja langsamer-als-schweinelangsam
.
Ja, auch für int lernte man, Multiplikationen und besonders Divisionen komplett zu vermeiden und durch "Shift" (+ Addition/Subtraktion) zu ersetzen. Wobei die Multiplikation mittlerweile rasend schnell geworden ist , so daß es sich dafür nicht mehr lohnt.
Ich kenne zwei nach ARM portiere Programme (xpdf und timidity), die normalerweise kein FPU benötigen, bei denen floats aber für irgendwelche Nebensächlichkeiten verwendet wurden. Nach einfacher Ersetzung dieser paar Zeilen durch Festkomma-Arithmetik liefen die Programme auch ohne FPU performant.
StarG said:
Weiterhin muss man daran denken das eine FPU eine abgetrennte Funktionseinheit ist, diese kann unabhängig von den Integerecheneinheiten arbeiten und hat damit die Möglichkeit, die Integereinheiten entlasten, wenn der Programmier hier optimiert und es schafft möglichst viele Einheiten der CPU gleichmäßig zu belasten.
Optimierung auf FPU+Int war vielleicht vor fünf Jahren interessant. Heutzutage ist die normale (X86-)FPU veraltet. Sogar Intel empfiehlt, bisherigen FPU-Code auf auf SSE2+ zu portieren, um die Rechenleistung aktueller CPUs überhaupt nutzen zu können.
StarG said:
Die 3D Grafik benötigt u.a. Polygongeometriedaten. Genau für dessen Vorverarbeitung durch die Software wird aber letztendlich eine FPU benötigt. Ist diese nicht vorhanden muss sie wieder emuliert werden, oder arbeitet die PowerVR Logik etwa mit Festkommazahlen ?!
Die 3D- und Pixel-Koordinaten, speziell für solche Minidisplays wie beim GP2x müssen ja nicht besonders genau sein. Könnte mir durchaus vorstellen, daß Festkomma vollkommen ausreicht. Und der Z-Buffer ist meistens auch nur 16Bit Integer. Die 64bit/80bit der FPU sind da echt überflüssige Genauigkeit, die man eigentlich nur für wissenschaftliche Sachen braucht. Leider kann eine normale FPU dafür auch nicht gleichzeitig mit 2x 32bit float rechnen
Dann lieber gleich eine SIMD-Extension wie iwMMXt beim Xscale.
Für Software-3D optimal wären natürlich so etwas wie 3DNow bzw. SSE2+ für den GP2X.
Gruß, Mick