Re: bytegroesse, was endianess/Re: audio-cd

From: Michael Haertl <michael.haertl(at)gmx.net>
Date: Tue, 26 Mar 2002 22:38:15 +0100

Bernd Walter wrote:
> Michael Haertl wrote:
> > Der Pfad L1-Cache<-->Register ist nicht wirklich langsam. Und
> > weniger benoetigte Befehle sind meistens schneller als mehrere.
>
> Registeroperatioenen können richtig verschachtelt in der Pipeline
> nebenher laufen, weil diese durch die verschachtelung Abhängigkeit-
> enkoppelt sind.

Deswegen sind weniger benoetigte Befehle i.d.R. doch immer noch
weniger Aufwand und Ausfuehrungszeit. Die "frei" gewordene Pipeline
koennte man ja auch fuer andere Befehle nutzen.

Ganz geht mir das noch nicht ein. Es ist wohl so.

> > Vielleicht denke ich zu sehr auf Bitebene in DSP-Systemen und
> > zu wenig in "-O3" (obwohl _mir_ das oft vorgeworfen wurde).
>
> Auf moderne DSPs können durch eine richtige Reihenfolge derartige
> Befehle ohne nennenswerten Zeitverlust gleichzeitig behandeln.

Meiner Meinung nach machst du es dir hier zu einfach. Die Pipelines
bei den DSPs sind bei weitem einfacher aufgebaut als bei einem
der verbreiteten Desktop-Prozessoren. Und die moegliche parallele
Befehlsabarbeitung ist i.d.R. auf wenige sehr spezielle Anweisungen
beschraenkt (das dafuer halt extrem optimiert).

Tatsache ist, dass man typische fuenferl-Variablen auf einem
DSP oft in Silizium behandelt (z.B. Schleifenzaehler, Adressoffsets),
es ist (zumindest im Falle DSPs) einfach effektiver und schneller.

> > > Außerdem landen die eh in einem Register, was die Maskierung
> > > nach dem laden überflüssig macht.
> >
> > Die Anzahl der Register ist ja auch nicht unendlich. Man muss
> > ja schliesslich auch noch was arbeiten.
>
> Eine Alpha hat 30 Integer und 30 Floatingpointregister.
> Wenn du es dann noch schaffst einen Schleifenzähler nicht mehr mit
> einem Register abgedeckt zu bekommen hast du ein anderes Problem.

Zugegeben, 30+30 ist schon ganz angenehm. Aber es gibt nicht ueberall
soviel und nicht immer kann man dann alle benutzen.

> Warum etwas mit Hardwareaufwand und zulasten der restliche Performance
> implementieren, was sich mit wenigem Aufwand vermeiden lässt?

Frage zurueck: warum haben das wohl die bereits angesprochenen DSPs
oft in Hardware implementiert (ohne zu Lasten der restlichen
Performance) ? Es geht einfach schneller. Trotz weniger MHz. Und
spart den Luefter ;-)

> Nein - auch ein x86 hohlt sich mehr als nur ein Byte rein und muss
> das isolieren - das passiert indem der »Einzelbefehl« in entsprechende
> Microcodes aufgelöst wird.

Ich kenne die Microcodes nicht im Detail ;-) Aber ich wuerde da nur ein
Tor umschalten, damit waere das eigentlich noch ohne Overhead im "Move"
realisierbar.

> Allerdings hat ein x86 das Nachsehen, weil die Reihenfolgenentkoppelung
> zur Laufzeit bewerkstelligt werden muss und nicht mehr zur Compilezeit.

Ein x86 ist ein gutes Beispiel fuer nicht ganz so viel verfuegbare
General-Purpose-Register. Wenn ich mir das Stack-Geschubse bei einem
Unterprogrammaufruf so ansehe, dann frage ich mich manchmal, wann da
die eigentliche Arbeit erledigt wird.

-- 
/* Michael Haertl */
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 26 Mar 2002 - 22:43:32 CET

search this site