Hallo
Ein Datenbus kann ja verschiedene Breiten haben (16 Bit[16 Leitungen?], 32 Bit [32 Leitungen?],…). Aber wie ist das bei 16-Bit- und 32-Bit-Software? Wie unterscheidet die sich untereinander?
Ajo
Hallo
Ein Datenbus kann ja verschiedene Breiten haben (16 Bit[16 Leitungen?], 32 Bit [32 Leitungen?],…). Aber wie ist das bei 16-Bit- und 32-Bit-Software? Wie unterscheidet die sich untereinander?
Ajo
Hallo Ajo,
Ein Datenbus kann ja verschiedene Breiten haben (16 Bit[16
Leitungen?], 32 Bit [32 Leitungen?],…). Aber wie ist das bei
16-Bit- und 32-Bit-Software? Wie unterscheidet die sich
untereinander?
Das hat mit der, leidigen, abwärts-kombatibilität der Intel CPUs zu tun.
Da war einmal der 8088/86 der konnte gerade einmal 1 MB Speicher verwalten und war ein 16-Bit Prozessor. Egentlich konnte diese CPU, wie der vorgänger 8080, nur 64 KB direkt ansprechen, man hat einfach zur 16-Bit Adresse, wird Offset gennannt, noch eine 16-Bit Segment-Adresse hinzugefügt. Die physikalise Adresse wurde dann folgendermassen gebildet:
Offset + 16 * Segment.
Der 80286 konnte dann 16 MB Speicher ansteuern. Dies ging aber nicht mit der alten Segmentierten Speicher-Verwaltung des 8086. Also hat man, um die Kompatibilität zu waren, die CPU nach einem Reset wie einen 8086 arbeiten lassen (das hiess dann Real-Mode) und mit einem neuen CPU-Befehl konnte man dann in den Protectet-Mode umschalten in welchem dann die 16 MB adressiert werden konnten. Zusätzlich konnte dann auch der Speicher so verwaltet werden, dass unterschiedliche Tasks nicht auf den Speicherbereich eines anderen zugreiffen konnten. Es wurde aber immer noch mit Segment und Offset gearbeitet.
Bis zu dieser Generation waren dies alles 16-Bit CPUs
Der 80386 war dan die erste 32-Bit CPU. Der 386 konnte 4GB speicher ansteuern. Auch sie konnte 8086 „spielen“ hatte aber eine Modus in welchen die Adressen direkt als 32-Bit Wert angegeben wurden und nicht mehr aus Offset und Segment "zusammengebastelt wurden. Er konnte dann auch richtig mit virtuellem Speicher umgehen.
Der 80486 war eigentlich „nur“ ein etwas schnellerer 386er mit fest eingebautem Mathematischem Coprozessor.
Die Pentium-Reihe ist dann die Weiterentwicklung.
Und die neueste Entwicklung von Intel ist mittlerweile die 64-Bit Generation.
Das Problem war, dass die Entwicklung der Betriebssysteme nicht mit der Entwicklung der CPUs mithalten konnte.
DOS lief eigentlich bis zum Ende immer noch auf einem 8086 und auch das darauf basierende Windows, bis zur Version 3.11, verwendete nur die 16-Bit-Befehle. Es wurde zwar ein Modus des 386 verwendet, der Virtuelle 8086-Modus, aber dieser wurde nur verwendet um mehrere 8086 zu simulieren.
Mit WIN NT, und später mit WIN 95, wurde dann erstmals von MicroSoft die vollen Möglichkeiten eines 386 ausgenutzt.
16-Bit Software sind Programme, welche auch unter WIN 3.x funktionieren würden (egentlich kann jedes heutige Windows immer noch DOS oder Win 3.x „spielen“, äaah simulieren).
32-Bit Programme sind erst ab WIN32s, Win NT oder Win 95 funktionsfähig.
MfG Peter(TOO)
Hallo,
danke erst mal bis hierher. Wenn ich mal versuchen darf, das kurz zusammenzufassen: 16-Bit-SW ist für 16-Bit-Hardware und 32-Bit-SW ist für 32-Bit-Hardware. 16-Bit-SW kann aber auf 32-Bit-HW ausgeführt werden, indem eine 15-Bit-Hardware simuliert wird. Habe ich das jetzt so richtig verstanden?
Ajo
Hallo Ajo,
danke erst mal bis hierher. Wenn ich mal versuchen darf, das
kurz zusammenzufassen: 16-Bit-SW ist für 16-Bit-Hardware und
32-Bit-SW ist für 32-Bit-Hardware. 16-Bit-SW kann aber auf
32-Bit-HW ausgeführt werden, indem eine 16-Bit-Hardware
simuliert wird.
Man spricht im letzten Falle auch von Abwärts-Kompatibilität:
Die neue CPU kennt noch alle Befehle der Vorgängerversion und kann diese auch noch ausführen.
Bei Windows ist das so ähnlich gelöst:
Die „alten“ Betriebssystem-Aufrufe (APIs) sind noch vorhanden, werden aber dann über eine Zwischensicht durch die neuen simuliert.
Habe ich das jetzt so richtig verstanden?
JA
MfG Peter(TOO)
Hi,
Peter sprach unten schon den Adressbus an. Ein grundlegender Unterschied besteht aber auch in der Aufteilung der Daten, da auch diese in einem 16-, 32- oder eben 64bittigen Datenbus daherkommen. 16-Bit-Software muß für alle Datentypen größer 16 Bit eine Rechenoperation mit Übertrag durchführen; 32bittige können nativ damit umgehen.
Das war auch einer der Hauptargumente für Windows 95: Endlich werden Ihre Anwendungen schneller werden, denn wir können jetzt 32 Bit! Daß das nur halbherzig umgesetzt wurde, ist ja bereits Geschichte.
Gruß
J.