Remove ads

Unter 32-Bit-Architektur versteht man in der EDV eine Prozessorarchitektur, deren Verarbeitungsbreite 32 Bit beträgt. Prozessoren, die eine 32-Bit-Architektur verwenden, werden häufig auch als „32-Bit-Prozessoren“ bezeichnet. Analog dazu werden auch Computerprogramme, die auf eine solche Architektur ausgelegt sind, mit dem Attribut 32-Bit versehen (z. B. „32-Bit-Betriebssystem“).[1]

Thumb
32-Bit-Prozessor

Architekturen

… sowie diverse weitere Designs.

Remove ads

Design

Vereinfacht dargestellt bedeutet 32 Bit, dass die Prozessoren durch ihr ALU-Design so ausgelegt sind, dass zwei 32-Bit-Zahlen (also 4 Byte) gleichzeitig verarbeitet werden können (beispielsweise zwei 4-Byte-Zahlen addieren).[2] Das schließt die externe und interne Gestaltung von Datenbus und die Breite des Registersatzes mit ein. Dies gilt analog für die gängigen Adressierungs-Arten, wobei die Bitbreite der Recheneinheit sich grundsätzlich von der der Adresseinheit[3] unterscheiden kann (wie etwa auch bei 64-Bit-Prozessoren).

Remove ads

Vorteile

Die Vorteile von höherbittigen Prozessorarchitekturen liegen in der einfacheren Berechnung größerer Integer-Werte (durch die breitere ALU), was zum Beispiel Vorteile bei Verschlüsselungsalgorithmen, grafischen Berechnungen (zum Beispiel Festkommaarithmetik für Computerspiele), 32-Bit-Dateisystemen oder Multimediaformaten (MPEG-2, MP3) mit sich bringt. Auch bringt die Erweiterung zu 32 Bit die Möglichkeit mit, bis zu 4 Gibibyte Arbeitsspeicher zu arbeiten, was zum Vergleich zu 16-Bit, welches nur 16 Mebibyte verarbeiten kann, eine enorme Verbesserung darstellte.[4]

Remove ads

Probleme

Bei weiterentwickelten Architekturen, die 32-Bit-Erweiterungen erhalten haben, kann allerdings ohne speziell angepasste Betriebssysteme in der Regel kein großer Vorteil aus dem Wechsel von 16-Bit- auf 32-Bit-Prozessoren gezogen werden.

Ähnlich wie bei SIMD- oder AltiVec-Erweiterungen ist also auch für 32-Bit-Systeme gewöhnlich speziell angepasste Software nötig.[5]

Allerdings verfügte nicht jedes System mit 32 Bit breitem Datenpfad auch über einen 32 Bit breiten Adresspfad, also einen 4-GiB-Adressraum. Bei älteren IBM-Großrechnern (System/360 und System/370) wurden nur 24 Bit zur Adressierung verwendet (16-MiB-Adressraum).[6] Da das überzählige Byte von Betriebssystem und Anwendungsprogrammen für Flagbits genutzt wurde, war der Übergang zur 31-Bit-Adressierung (2-GiB-Adressraum) mit nur noch einem Flagbit komplex. In einigen Systemen ist der Adresspfad schmaler oder größer als 32 Bit – beispielsweise können seit dem Pentium Pro einige x86-Prozessoren mit 36 Bit adressieren, was einem Adressraum von 64 GiB entspricht (Physikalische Adresserweiterung).

Ein anderes Problem ist das Jahr-2038-Problem.

Remove ads

Programmiermodell

Unter der Programmiersprache C schlägt sich die Anzahl der Bits insbesondere bei der Größe der Datentypen void*, int und manchmal auch bei long, sowie deren vorzeichenlosen Pendants, nieder. Mit der Verbreitung von 32-Bit-Architekturen hat man hierbei in der Regel die drei Typen gleichermaßen auf die Breite von 32 Bit gesetzt, so dass Daten von Int-Typ, Long-Typ und Zeiger-Typ gleich sind. Dieses nennt man abgekürzt ILP32. Zur Abwärtskompatibilität mit der 16-Bit-Architektur, die meist als IP16 ausgeführt wurde, hatte man teils auch den Int-Typ bei 16-Bit gelassen, genannt LP32, oder den Long-Typ auf doppelte Breite von 64-Bit gesetzt, genannt IP32.[7] Die ersten Versionen von DOS/Windows und Mac-OS arbeiteten mit jener LP32 und 16-Bit „int“, während frühe Ultrix-Versionen mit IP32 und 64-Bit „long“ arbeiteten. Derlei Programmiermodelle haben sich jedoch nicht durchgesetzt – alle heutigen unixartigen 32-Bit-Betriebssysteme drücken die 32-Bit-Architektur in einem ILP32-Typenmodell aus.

Der "long long" Datentyp in C wurde erst im Zuge der Standardisierung für C99 (ab 1995) eingeführt um den Wildwuchs vorheriger Definitionen zu ersetzen.[8] Er hatte sich im Unix-Umfeld eingebürgert um Software gleichzeitig für ILP32 und LP64 der aufkommenden 64-Bit-Architekturen zu schreiben, womit "long" und "pointer" jeweils die gleiche Größe haben, und die 64-Bit Arithmetik gleichermaßen verfügbar ist. Der zugehörige 64-Bit Large File Support, um auch in ILP32 Systemen noch große Dateien verarbeiten zu können, wurde in Single UNIX Specification Version 2 (UNIX 98) eingeführt,[9] basierend auf dem herstellerübergreifenden „Large File Summit“ von 1996.[10]

Weitere Informationen Daten- modell, short (integer) ...
32-Bit-Datenmodelle[11]
Daten-
modell
short
(integer)
int
(integer)
long
(integer)
pointer
(integer)
long long
(integer)
Beispiel Betriebssystem/Compiler[12]
LP32 0000 16 16 32 32 Apple MacIntosh für Motorola 68k, Microsoft API für Intel x86
ILP32 0000 16 32 32 32 IBM 370, VAX Unix, ältere Workstations (VAX hat long-long nur für DEC/Alpha 64-Bit[13])
ILP32 LL64 16 32 32 32 64 Microsoft Win32, Amdahl, Convex, Unix Systeme ab 1990
IP32 0000 16 32 64 32 64 Ultrix (1982–1995), 64-Bit long-long alias nur mit späteren GNU C
Schließen
Remove ads

Siehe auch

Einzelnachweise

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads