On Fri, Feb 26, 2010 at 08:27:26PM +0100, Erik Niemeyer wrote:
> Am 28.01.2010 schrieb Oliver Fromme:
> >> *amd64* bei einer Intel-CPU? Oder meintest Du ia64?
>
> > Nee, das ist schon richtig so, wie ich schrieb.
>
> OK, nachdem nun die Frage was amd64 auf einer Intel-CPU zu suchen hat und
> was es mit ia64 auf sich hat recht ausführlich diskutiert worden ist, noch
> eine Frage zum ursprünglichen Betreff:
>
> Welche FreeBSD-Version (i386 oder amd64) ist denn die bessere Wahl für einen
> Atom 330 (Diamondville) mit 4 GB RAM? Ist der Kern eines Atom 330 in
> Silizium 32- oder 64-bittig? Lassen sich die 4 GB RAM mit amd64 voll nutzen
> (mit 32Bit geht das ja nicht)?
Mit 32bit geht das schon, aber nur mit Einshränkungen.
Mit amd64 sind es weniger Einschränkungen.
Das erste Problem ist wie viel ein Programm addressieren kann
und das sind bei i386 4G.
Das ist aber logischer Adressraum und nicht physikalischer.
Im Adressraum einer Anwendung tummeln sich noch andere Dinge, wie z.B.
ausgelagerte Seiten, Kernelseiten zum schnellen umschalten, etc.
Nutzbar ist daher für eine Anwendung deutlich weniger.
Dafür hat jeder Prozess seinen eigenen Adressraum und begrenzt nur
einzelne Anwendungen, aber nicht das ganze System.
Mit amd64 ist dieser logische Adressraum größer.
Dann gibt es den physikalischen für den Prozessor.
Der ist bei i386 ursprünglich 4G gewesen und mit PAE (Seit PPro) einige
bits vergrößert.
PAE ist für das OS eine ziemlich unbequeme Sache und der Overhead lohnt
sich bei 4G RAM mitunter nicht.
Bei amd64 gibt es auch hier deutlich mehr bits ohne riesen Overhead.
Dann gibt es den physikalischen Adressraum für DMA.
Das Thema ist heikler, weil viele PCI-Karten immer noch rein 32bit sind.
PCI kennt sogenanntes double Adressing, wobei 2x 32bit für die Adresse
übertragen werden, aber das kann nicht jede Karte und nicht jeder Bus.
Die Folge ist, dass DMA von solchen Geräten immer in den unteren 4G landen
muss und ggfs vom Prozessor umkopiert wird.
Alpha Systeme hatten hierfür eine IO-MMU, die PCI-Karten einen logischen
Adressraum zugewiesen haben, sodass man den für DMA erreichbaren Speicher
dynamisch verteilen konnte - wie ich hörte hat AMD das auch mal so gedacht,
aber wurde von Intel nicht übernommen.
Dann gibt es noch den physikalischen Speicherraum.
Der besteht nicht nur aus RAM.
Traditionell gab es 1MB, wovon noch heute 384kB für IO reserviert sind.
z.B. der Bildspeicher von Grafikkarten, Netzwerkbuffer, ...
In den unteren 1MB sind daher 384kB weg - die lässt man heutzutage
unter den Tisch fallen.
PCI Karten brauchen auch heute Adressraum für die gleichen Fälle.
PCI Busse brauchen dabei bisweilen große Bereiche und je mehr Busse
ein Board hat je mehr physikalischer Adressraum ist weg.
Und da PCI Geräte vielfach eben nur 32bit Adressieren können liegt
dieser Speicher eben unterhalb von 4G.
Das geht von den 4G RAM erst mal weg und Rechner blenden die fehlenden
Bereiche oberhalb von 4G wieder ein, damit das RAM nutzbar ist.
Aber der Speicher oberhalb von 4G unterliegt halt den Einschränkungen,
dass man PAE oder amd64 braucht und der nicht für jedes DMA Gerät
direkt erreichbar ist.
Ob man i386 i386/PAE oder amd64 einsetzt hängt von der Anwendung ab.
Grundsätzlich ist amd64 die erste Wahl, weil die Nachteile nur marginal
sind und die Vorteile fast immer überwiegen.
amd64 kann i386 Software ausführen, aber manche Windows-Video-Binaries z.B.
sollen nicht laufen.
i386/PAE hat Overhead, der sich nur dann lohnt, wenn man viel RAM dazu
gewinnt und wie viel umgemapped wurde hängt von der konkreten Hardware
ab.
Außerdem muss man mit PAE aufpassen, weil nicht jeder Treiber damit
zurecht kommt.
-- B.Walter <bernd@bwct.de> http://www.bwct.de Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm. To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sat 27 Feb 2010 - 13:08:59 CET