32-Bit-Architektur
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]
Architekturen
- von Digital beziehungsweise später Compaq die VAX-Architektur (32-Bit ab 1977 im VAX-11 Superminicomputer)
- von National Semiconductor die NS320xx-Serie (ab 1977)
- von Intel, AMD und Anderen gebaute Prozessoren der x86-Familie (ab 1978, volle 32-Bit-Architektur mit i386 ab 1985, seit 2003 mit x64 auch eine 64-Bit-Architektur)
- von Motorola die 68000er-Familie (ab 1979, volle 32-Bit-Architektur mit 68020 ab 1984)
- von MIPS (später SGI) die MIPS-Architektur (32 Bit ab 1985 und als 64 Bit ab 1991)
- von ARM die Arm-Architektur, lizenziert an zahlreiche Prozessorhersteller (32-Bit ab 1985 und 64-Bit ab 2013)
- von Sun Microsystems die SPARC-Serie (32 Bit ab 1987 und als 64-Bit UltraSPARC ab 1995)
- von Apple/IBM/Motorola die PowerPC-Serie (32-Bit und 64 Bit, beide ab 1992)
- von Infineon die TriCore-Architektur (ab 1999)
- von Atmel die AVR32-Architektur (ab 2006)
- DLX-Mikroprozessor: hypothetische 32-Bit-Architektur
… sowie diverse weitere Designs.
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).
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 Gigabyte Arbeitsspeicher zu arbeiten, was zum Vergleich zu 16-Bit, welches nur 16 Megabyte verarbeiten kann, eine enorme Verbesserung darstellte.[4]
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.
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]
Daten- modell |
short (integer) |
int |
long (integer) |
pointer |
long long |
Beispiel Betriebssystem/Compiler[12] |
---|---|---|---|---|---|---|
LP32 | 16 | 16 | 32 | 32 | Apple MacIntosh für Motorola 68k, Microsoft API für Intel x86 | |
ILP32 | 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 | 16 | 32 | 64 | 32 | 64 | Ultrix (1982–1995), 64-Bit long-long alias nur mit späteren GNU C |
Siehe auch
Einzelnachweise
- ↑ Harry Phillips: New Perspectives on Microsoft Windows Vista for Power Users. Cengage Learning, 2008, ISBN 978-1-4239-0603-2, S. 16 (englisch, eingeschränkte Vorschau in der Google-Buchsuche).
- ↑ Grundlagen der Informatik: ALU und Speicher (PDF, ≈ 200 kB) – bei der TH-Nürnberg (veröffentlicht [oder zuletzt hochgeladen] am 28. November 2002)
- ↑ … auch Adresswerk (oder englisch address unit und kurz AU) genannt, siehe auch Adresseinheit (AU) & Busschnittstelle (BIU) (bei TecChannel, am 18. Oktober 1999)
- ↑ Das 4GB Problem – WB Wiki. Abgerufen am 2. Juli 2018.
- ↑ Axel Vahldiek: Kompatibilitätsprobleme: Umstieg von 32 auf 64 Bit. Abgerufen am 2. Juli 2018.
- ↑ chessprogramming – IBM 360. Abgerufen am 2. Juli 2018.
- ↑ IBM Knowledge Center. Abgerufen am 2. Juli 2018 (amerikanisches Englisch).
- ↑ Rationale for International Standard — Programming Languages — C. (PDF) The Open Group, April 2003, abgerufen am 13. Mai 2020.
- ↑ unix.org
- ↑ Adding Large File Support to the Single UNIX® Specification. The Open Group, 14. August 1996, abgerufen am 13. Mai 2020.
- ↑ Sergey Vasiliev: The forgotten problems of 64-bit programs development. 14. August 2014, abgerufen am 13. Mai 2020 (englisch).
- ↑ Das Datenmodell ist eine Eigenschaft des Compilers unter dem entsprechenden Target-Betriebssystems, nicht des Betriebssystems allein.
- ↑ Compaq C Language Reference Manual: Chapter 3 Data Types. In: Hewlett Packard Enterprise. Archiviert vom (nicht mehr online verfügbar) am 4. Dezember 2020; abgerufen am 5. September 2023 (englisch).