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

From: Christian Weisgerber <naddy(at)mips.inka.de>
Date: Fri, 22 Mar 2002 01:27:21 +0000 (UTC)

Michael Haertl <michael.haertl(at)gmx.net> wrote:

> > Hinzu kommt auch, daß es Plattformen gibt, wo es gar nicht
> > möglich ist, einzelne Bytes zu lesen, z.B. auf Alpha. Da
> > _kann_ der Prozessor nur ein ganzes Wort aus dem Speicher
> > lesen. Wenn ein Programm nur ein Byte braucht, muß es
> > durch Maskierungs- und/oder Verschiebeoperationen heraus-
> > gefiltert werden.
>
> Wird das bei z.B. FreeBSD-Alpha so gemacht ?

Ja, sofern man dem Compiler nichts anderes sagt (s.u.).

> Ferner wundert es mich schon, dass ein Alpha ein 64bit-
> Register nicht in 8 atomaren Einheiten ansprechen kann.

Kann er. Alphas können mit Bytes hantieren, es gibt einige ganz
interessante Befehle dafür, allerdings müssen sie Bytes nicht einzeln
laden/speichern können.

> Dass auf dem externen Buss nur noch Woerter (und meist nur noch
> in Bursts) transportiert werden ist ja aufgrund der Cache-
> Hierarchien und Zugriffszeiten kaum anders sinnvoll.

Richtig. Deshalb obiger Ansatz, den Prozessor nur größere Wörter
laden/speichern zu lassen und die Byteverarbeitung in die Register
zu verlagern.

Wenn der Prozessor nun doch Bytezugriffe anbieten soll, dann müssen
die irgendwie implementiert werden, was die Komplexität der Speicher-
schnittstelle des Prozessors und des Chipsatzes erhöht. Alphas ab
EV56 haben die BIX-Erweiterung, die auch byte- und (16-Bit)-wortweises
Load/Store in Hardware anbietet. Mit -mcpu=ev56 kann man GCC anweisen
entsprechenden Code zu erzeugen, der dann aber auf alten Prozessoren
nicht mehr läuft. (Man könnte die Befehle in Software emulieren,
aber das ist entsetzlich langsam.)

-- 
Christian "naddy" Weisgerber                          naddy(at)mips.inka.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 22 Mar 2002 - 02:30:43 CET

search this site