Hallo liebe Netzgemeinde und Linux-Community,
seit längerem schon beschäftigt mich die frage, warum bei einigen Distributionen Pakete und Kernel mit der Bezeichnung I386 ausgegeben werden!
Die Frage die sich mir jedoch stellt ist, weswegen immernoch mit 386er Kernels hantieren? Wäre es nicht sinnvoller einmal den kleinen schritt zu 686er Kernel zu machen?
Um mal zu erläutern was denn EIGENTLICH der Unterschied ist zitiere ich hier einmal aus einigen Wikipedia Artikeln.
80386 (frühe Bezeichnung iAPX 386) ist eine x86-CPU, die von Intel unter dem Markennamen i386 als Nachfolger des 80286 entwickelt und von 1985 bis September 2007 produziert wurde. (Anmerkung: Letzteres jedoch nur im Embeddet Sektor)
Der 80486 ist eine x86-CPU, die ursprünglich von Intel unter dem Namen i486 als Weiterentwicklung seines Vorgängers 80386 entwickelt wurde.
Der wichtigste Unterschied in Bezug auf seinen Vorgänger war der 32Bit Integer RISC-Core, eines First-Level-Caches (L1-Cache), schnelle Burst-Modi zur Beschleunigung externer Zugriffe und einige gravierende Verbesserungen bei der internen Verarbeitung. Der 80486 erreicht im Durchschnitt mehr als die doppelte Ausführungsgeschwindigkeit eines 80386 bei gleicher Taktfrequenz, wobei eine Optimierung des Programm-Codes nicht erforderlich ist. Die meisten 80486-Modelle besitzen außerdem einen integrierten mathematischen Koprozessor, der Gleitkommaberechnungen erheblich beschleunigt (Modelle ohne Koprozessor sind an dem Suffix SX erkennbar). Da ein mathematischer Koprozessor damals noch nicht selbstverständlich war, wurde er anfangs nur von wenigen Anwendungen unterstützt.
Bei i686 handelt es sich um keine offizielle Intel-Bezeichnung, da Intel das x86-Benennungsschema mit dem i486 aufgab. Wäre man dieser Nomenklatur gefolgt, hätte bereits der Nachfolger des i486 eigentlich i586 heißen müssen. Aus markenrechtlichen Gründen erhielt dieser aber den Namen Pentium. Mitglieder der P6-Familie [I686]
* Pentium Pro
* Pentium II
* Pentium III
* in gewisser Weise der Pentium M und die Intel-Core-Mikroarchitektur
* manche Celeron
* manche Xeon
So, das mal als kleiner Abriss in die Geschichte. Was man sich nun allerdings Fragen muss ist das Linuxinterne Bezeichnungsschemata, denn wie ich in erfahrung bringen konnte verwenden einige I386 Kernel auch Gleitkommaoperationen und Optimierungen wie sie eigentlich nur 486 Prozessoren verdauen könnten.
Und wenn wir allerdings uns einmal die P6 familie ansehen (ab Pentium Pro, meine Herren und Damen!) so frage ich mich doch ob oder weswegen auf folgende Optionen verzichtet werden:
* superskalare superpipelined Architektur
* Vollständig ins CPU-Design integrierter L2-Cache, teilweise on-Die, teilweise als externe Chips.
* Breiter 36-Bit-Adresspeicher, der mehr als 4 GB physischen Speicher erlaubt.
* spekulative Ausführung und Out-of-order Ausführung zur Erhöhung der Ausführungsgeschwindigkeit
* Registerumbenennung für eine effizientere Abarbeitung der Befehle in der Pipeline.
Für mich ist das Unverständlich denn einen (verzeihen Sie mir den Ausdruck) verdammten Pentium Pro setzt meiner erfahrung niemand mehr im Produktiven umfeld ein.
Ich bitte hiermit um aufklärung und erläuterung.
mfg FraJa
i386 = für alle 32-Bit-CPUs (ab Intel 80386 DX, 1985)
i568 = ab Pentium-1 / K5
i686 = ab Pentium-2 / K7
x86_64 = ab Pentium-4 (EM64T) / Sempron (AMD64)
Das Ganze funktioniert abwärtskompatibel, sodass man eine 64-Bit-CPU auch mit Paketen für i686, i586, i386 füttern darf, einen Pentium-2 auch mit i586/i386, etc. pp.
Eine ausführliche Abhandlung dazu gibt der Artikel “Taktvolles Chaos” von Thomas Leichtenstern in EasyLinux 05/2006, Seite 63ff.:
http://www.easylinux.de/Artikel/ausgabe/2006/05/063-architekturen/
danke für die Erklährung Herr Luther,
doch war ja die eigentliche Frage, warum wir eine Abwärtskompatibilität bis I386 einhalten müssen!?
Das die Abwärtskompatibilität von 64-bit CPUs auf ein I386 Packet mit Performenceinbusen einhergeht könnte sich eigentlich jeder denken, oder!?
Wie ich jedoch duch einen Diskurs mit Philipp Schafft erfahren konnte so werden anscheinend bei I386 Kernel mittels Module z.b. I686 Funktionen beigesteuert (was btw. für mich Bullshit ist). Erklärung schafft hier wirklich der Link von Ihnen:
zitat:”Da die Befehlssätze aller späteren Prozessoren in der Hauptsache erweitert, die alten jedoch nicht verändert wurden, sind die Pakete komplett aufwärtskompatibel, jedoch nur bedingt abwärtskompatibel. Das bedeutet, Sie können auf jedem beliebigen Rechner mit einem derartigen Prozessor ein i386-Paket installieren, bekommen jedoch unter Umständen Schwierigkeiten, wenn Sie versuchen, ein i686-Paket auf einem Rechner mit einer alten Pentium-90-CPU einzuspielen.
In der Praxis spielt das jedoch kaum eine Rolle, da selbst Rechner der i586-Klasse heute eher im Museum als unter dem Schreibtisch anzutreffen sind.”
Was umsomehr die Abwärtskompatibilität bis I386 für mich in frage stellt.
Einen Satz möchte ich jedoch noch Zitieren: “Die hohe Rechenleistung der neuen CPUs bringt dem normalen Anwender nur in seltenen Fällen spürbare Performance-Vorteile. Anders verhält es sich mit den neuen Transfer-Technologien, die vor allem Prozessoren der 64-Bit-Klasse bieten. Sie ermöglichen durchaus einen Performance-Gewinn von 50 % und mehr gegenüber vergleichbaren 32-Bit-Rechnern. (tle)”
Ich bleibe dabei, das eine Abwärtskompatibilität bis I386 heutzutage Blödsinn ist und man endlich einmal auf zumindest I586 oder I686 gehen sollte.
Abwärtskompatibilität bedeutet nach unten kompatibel, aber nicht nach oben. Man kann also Software für ältere Architekturvarianten auch auf neueren verwenden. Das ist auch gut so, und zumindest immer für eine gewisse Übergangszeit wichtig.
Nachdem es den Pentium schon recht lange gibt, liefern konsequenterweise viele Distributionen liefern auch gar keine i386er-Versionen mehr aus, sondern nur noch i586er oder i686er. Was den Leistungsgewinn betrifft: Der ist außer bei speziellen Anwendungen nach meiner Erfahrung zwar eben noch messbar, aber nicht wirklich spürbar.
Was anderes ist es mit dem 64-Bit-Modus, der teils deutliche Leistungszuwächse beschert. Trotzdem laufen auf den meisten 64-Bit-fähigen PCs noch immer 32-Bit-Distributionen (92% nach den letzten Zahlen, die ich kenne). Warum? Weil es hier in der Vergangenheit, wie in jeder Übergangsphase, Schwierigkeiten mit der Kompatibilität von Softwarekomponenten gegeben hat und manche Dinge nur als 32-Bit-Software stabil oder überhaupt liefen. Da freut man sich dann schon über die Abwärtskompatibilität.
Ob eine Distribution 2010 noch auf einem Rechner von 1985 laufen muss, darüber kann man sich freilich trefflich streiten. Ich persönlich freue mich aber als Liebhaber und Sammler alter Hardware über jeden i386-Kernel – der hindert mich ja mitnichten daran, auf meinem neuen Rechner eine i686- oder x86_64-Version zu installieren.
CU,
Jörg
Es gibt auch noch einen anderen Grund, dass die Abwärtskompatibilität durchaus sinnvoll ist. Gerade die vielen Embedded Rechner, Palms, Mobilphones arbeiten mit CPU, die von der Mächtigkeit des Befehlsumfanges eher in Richtung i386 als i686 liegen. Diesen wichtigen Ast für Linux abzuhängen wäre ungeschickt.
Übrigens die Extrras, wie Coprozessor und Befehle (fast schon CISC) sind bei i386 zusätzlich Emulationsroutinen vorhanden, die die bei Bedarf alternativ verwendet werden.