Oben: ein Die der Cell-CPU im Detail, Sony/Toshiba/IBM, 2007
Im Jahr 2020 gehört die 64bit-CPU-Architektur zu den meistgenutzten der Welt. Kein Hersteller von Hard- und/oder Software kann sich mehr erlauben, auf x86_64 zu verzichten. Simultan sind andere, alternative Prozessorarchitekturen im Auflösen begriffen oder mittlerweile ganz ausgestorben, wie beispielsweise powerpc. Letztere steckte bis 2005 in sämtlicher Hardware von Apple aus Cupertino, bevor man sich aus wirtschaftlichen Gründen dazu entschied, Intel zu verbauen.
Wie kam es eigentlich dazu, warum brauchte man das? Und warum war der Weg dahin so lange und so beschwerlich?
Dieser Frage widmet sich ein sehr langer und sehr gut ausgeführter Artikel von ACM Queue: https://queue.acm.org/detail.cfm?id=1165766.
Kurz zusammengefasst: die Entwicklung reicht bis in die 60er Jahre des 20. Jahrhunderts. Auch schlechte Programmierung war oft daran Schuld, dass sich der Einsatz solcher Architekturen länger verzögerte als nötig. Und: erst 2003 machte AMD Nägel mit Köpfen und produzierte kommerziell 64bit-CPUs, die man als Normalnutzer ab da in gängiger Hardware fand.
Zeitleiste, inkl. Kommentaren:
1964 IBM S/360: 32-bit, with 24-bit addressing (16 MB total) of real (core) memory.
1968 Algol 68: includes long long.
1970 DEC PDP-11/20: 16-bit, 16-bit addressing (64 KB total). IBM S/370 family: virtual memory, 24-bit addresses, but multiple user address spaces allowed.
1971 IBM 370/145: main memory no longer core, but DRAM, 1 Kbit/chip.
1973 DEC PDP-11/45: separate instruction+data (64 KI + 64 KD); 248 KB maximum real memory. Unix: PDP-11/45, operating system rewritten in C; IP16. C: integer data types: int, char; C on other machines (36-bit Honeywell 6000, IBM 370, others).
1975 Unix: sixth edition, 24-bit maximum file size (16 MB).
1976 DEC PDP-11/70: (64 KI + 64 KD), but larger physical memory (a huge 4 MB). C: short, long added (partly from doing C for XDS Sigma, although long was 64 bits there).
1977 Unix: ported to 32-bit Interdata 8/32. C: unsigned, typedef, union; 32-bit long used to replace int[2] in lseek, tell on 16-bit PDP-11; IP16L32. DEC VAX-11/780: 32-bit, 32-bit addressing (4 GB total, 2 GB per user process). C: PDP-11: I16LP32; VAX (other 32-bitters): ILP32.
1978 Unix: 32V for VAX-11/780; C is ILP32. C: The C Programming Language, Brian Kernighan and Dennis Ritchie (Prentice-Hall). Intel 8086: 16-bit, but with user-visible segmentation.
1979 Motorola MC68000: 32-bit ISA, but 24-bit addressing (e.g., S/360).
1982 C: I16LP32 on MC68000 in Bell Labs Blit terminal. Intel 80286: allows 16 MB of real memory, but restrictions keep most systems at 1 MB.
1983 IBM 370/XA: adds 31-bit mode for user programs; 24-bit mode still supported. C: Unix workstations generally use ILP32, following Unix on VAX systems.
1984 Motorola MC68020: 32-bit; 32- bit addressing. C: Amdahl UTS (32-bit S/370) uses long long, especially for large file pointers. C: Convex (64-bit vector mini-supercomputer) uses long long for 64-bit integers.
1986 Intel: 80386, 32-bit, with support for 8086 mode.
1987 Apple Mac II: MC68020’s 32-bit addressing causes trouble for some MC68000 software.
1988 IBM ESA/370: multiple 31-bit address spaces per user, although complex; 24-bit still there.
1989 ANSI C (“C89”): effort had started in 1983, ANSI X3J11.
1992 SGI: ships first 64-bit micro (MIPS R4000); still running 32-bit operating system. 64-bit C working group: discusses various models (LP64, ILP64, LLP64), with little agreement. DEC: ships 64-bit Alpha systems, running 64-bit operating system; LP64.
1994 SGI: ships IRIX 6 (64/32 operating system; ILP32LL + LP64) on Power Challenge; customers buy 4 GB+ memory, use it. DEC: ships 4 GB+ in DEC 7000 SMPs (may have been slightly earlier).
1995 Sun UltraSPARC: 64/32-bit hardware, 32-bit-only operating system. HAL Computer’s SPARC64: uses ILP64 model for C.
Large file summit: codifies 64-bit interface to files >2 GB, even in 32-bit systems (ILP32LL+LP64). Aspen group: supports LP64 model for C so that Unix vendors are consistent.1996 HP: announces PA-RISC 2.0, 64-bit.
1997 HP: UP/UX 11.0 is 64/32-bit OS; ILP32LL + LP64. IBM: RS64 PowerPC, AIX 4.3; ILP32LL + LP64.
1998 Sun: 64/32 Solaris 7 released; ILP32LL + LP64.
1999 C: ISO/IEC C (WG14’s “C99”); includes long long, at least 64 bits.
2001 IBM: 64-bit zSeries (S/360 descendant); 24-bit addressing still supported. Intel: 64-bit Itanium.
2002 Microsoft: Windows 64-bit for Itanium.
2003 AMD: 64-bit X86 (now called AMD64).
2004 Intel: 64-bit X86 (called EMT64), compatible with AMD.
2005 Microsoft: Windows XP Professional x64 for X86; LLP64 (or IL32LLP64)
Immer wieder gerne gelesen und äußerst faszinierende Thematik!