Datenwort
Ein Datenwort oder einfach nur Wort ist eine bestimmte Datenmenge, die ein Computer in der arithmetisch-logischen Einheit des Prozessors in einem Schritt verarbeiten kann. Ist eine maximale Datenmenge gemeint, so wird deren Größe Wortbreite, Verarbeitungsbreite[1] oder Busbreite genannt.
In Programmiersprachen ist das Datenwort dagegen eine plattformunabhängige Dateneinheit oder die Bezeichnung für einen Datentyp und entspricht in der Regel 16 Bit[2] oder 32 Bit[3] (siehe Beispiele).
Das Zweifache eines Wortes – im jeweiligen Kontext – wird als Doppelwort (englisch double word, kurz DWord) oder Langwort bezeichnet. Für das Vierfache eines Wortes gibt es im Englischen außerdem noch die Bezeichnung quadruple word, kurz Quadword oder QWord. Die Dateneinheit mit der halben Wortbreite wird entsprechend als Halbwort bezeichnet.
Maximal adressierbarer Speicher
Je nach System kann die Wortbreite beträchtlich differieren, wobei die Varianten in bisher produzierten Rechnern, ausgehend von 4 Bit, nahezu durchwegs einer Zweierpotenz folgen, also einer jeweiligen Verdoppelung der Wortbreite. (Ausnahmen hiervon waren z. B. die Großrechner TR 4 und TR 440 aus den 1960er/1970er Jahren mit 50 bzw. 52 Bit breiten Wörtern.)
Neben der größtmöglichen Zahl, die in einem Rechenschritt verarbeitet werden kann, bestimmt die Wortbreite vor allem die Größe des maximal direkt adressierbaren Speichers. Deshalb ist eine Tendenz zu größeren Wortlängen erkennbar:
- Die ersten Prozessoren (englisch Central Processing Unit, kurz: CPU) hatten nur 4-Bit-Datenwörter (Nibbles). Mit 4 Bit kann man 16 Zustände abbilden, dies genügt für die Darstellung der zehn Ziffern 0 bis 9. Viele Digitaluhren und einfache Taschenrechner haben heute noch 4-Bit-Prozessoren.
- In den 1970er Jahren etablierten sich 8-Bit-Prozessoren, die bis ca. 1990 den Markt für Heimanwender beherrschten. Mit 8 Bit konnte man nun 256 verschiedene Zeichen in einem Datenwort speichern. Die Computer nutzten nun alphanumerische Ein- und Ausgaben, die viel leserlicher waren und neue Möglichkeiten eröffneten. Die daraus entstandenen 8-Bit-Zeichensätze, z. B. EBCDIC oder die verschiedenen 8-Bit-Erweiterungen des 7-Bit-ASCII-Codes, haben sich zum Teil bis ins 32-Bit-Zeitalter erhalten, und einfache Textdateien liegen auch heute noch oft in einem 8-Bit-Format vor.
- Seitdem ist die Wortbreite innerhalb der x86-Prozessor-Familie mehrfach verdoppelt worden:
- Diese wies mit ihren ersten Modellen eine 16-Bit-Architektur auf,
- der bald darauf die 32-Bit-Architektur zahlreicher PC-Prozessoren folgte (x86: IA-32), z. B. in den Pentium-, Athlon-, G4- und Core-Duo-Prozessoren.
- 2003 war mit dem Power Mac G5 der erste Personal Computer mit 64-Bit-Architektur erhältlich und AMD veröffentlichte die 64-Bit-Erweiterung x86-64 für die x86-Architektur, sodass bestehende Systeme bzw. die etablierten 32-Bit-Prozessoren ab rund 2005 nach und nach auf 64 Bit erweitert wurden, z. B. der Athlon-64-, G5-, neuere Pentium-4-, Core-2-, die Intel-Core-i-Serie. Die meisten Serverprozessoren waren bereits ab den späten 1990er Jahren 64-Bit-Architekturen, z. B. Itanium, UltraSparc oder Power4. Hinzu kamen Mitte der 2000er Jahre schließlich die x86-Server-Prozessoren Opteron von AMD und kurz darauf Xeon von Intel.
Abweichende Bedeutungen
In Programmiersprachen für x86-Systeme ist die Größe eines Wortes, teils aus Gewohnheit, vor allem aber, um Kompatibilität mit vorhergehenden Prozessoren zu erhalten, nicht mitgewachsen, sondern bezeichnet heute umgangssprachlich eine Bitfolge von 16 Bit, also den Stand des 8086-Prozessors.
Für spätere x86-Prozessoren wurden die Bezeichnungen Doppelwort/DWORD (englisch double word, auch Langwort/Long) und QWORD (englisch quad word) eingeführt. Beim Wechsel von 32-Bit-Architekturen und -Betriebssystemen auf 64 Bit hat sich die Bedeutung von Long getrennt:
- in der Windowswelt blieb die Breite eines solchen Langworts bei 32 Bit
- in der Linuxwelt wurde sie auf 64 Bit verbreitert.[4]
In anderen Rechnerarchitekturen (z. B. PowerPC, Sparc) ist mit einem Wort oft eine Bitfolge von 32 Bit gemeint (der ursprünglichen Wortbreite dieser Architekturen), weshalb dort die Bezeichnung Halbwort für Folgen von 16 Bit gebräuchlich ist.
Beispiele
Prozessoren der x86-Architektur
Datenbreite | Datentyp | Prozessorregister |
---|---|---|
4 Bit = ½ Byte | Nibble | keine eigenen Register |
8 Bit = 1 Byte | Byte | z. B. die Register AL und AH |
16 Bit = 2 Byte | Word | z. B. das Register AX |
32 Bit = 4 Byte | Double Word | z. B. das Register EAX |
64 Bit = 8 Byte | Quadruple Word | z. B. das Register MM0 |
128 Bit = 16 Byte | Double Quadruple Word | z. B. das Register XMM0 |
Der Begriff Word (bzw. Wort) wird auch in der Windows-API für eine 16-Bit-Zahl verwendet.[5]
Früher hieß ein Double Quadruple Word u. a. bei Turbo Pascal auch ein Paragraph.
SPS
Bei der Programmierung von speicherprogrammierbaren Steuerungen (SPS) legt die Norm IEC 61131-3 die Wortgrößen wie folgt fest:
Datenbreite | Bit-Datentypen | Integer-Datentypen | Wertebereich | |
---|---|---|---|---|
vorzeichenlos | vorzeichenbehaftet | |||
8 Bit = 1 Byte | BYTE (Byte) | (U)SINT (Short-Integer) | 0..255 | −128..127 |
16 Bit = 2 Byte | WORD (Wort) | (U)INT (Integer) | 0..65 535 | −32 768..32 767 |
32 Bit = 4 Byte | DWORD (Doppel-Wort) | (U)DINT (Double Integer) | 0..232-1 | -231..231-1 |
64 Bit = 8 Byte | LWORD (Lang-Wort) | (U)LINT (Long Integer) | 0..264-1 | -263..263-1 |
Wird der Buchstabe U vor einen Integer-Datentypen gestellt (z. B. UDINT), so bedeutet dies „unsigned“ (vorzeichenlos), ohne U sind die Integerwerte vorzeichenbehaftet.
Einzelnachweise
- ↑ http://www.wissen.de/lexikon/verarbeitungsbreite
- ↑ QuinnRadich: Windows Data Types (BaseTsd.h) - Win32 apps. Abgerufen am 15. Januar 2020 (amerikanisches Englisch).
- ↑ May, Cathy.: The PowerPC architecture : a specification for a new family of RISC processors. 2. Auflage. Morgan Kaufman Publishers, San Francisco 1994, ISBN 1-55860-316-6.
- ↑ Agner Fog: Calling conventions for different C++ compilers and operating systems: Chapter 3, Data Representation (PDF; 416 kB) 16. Februar 2010. Abgerufen am 30. August 2010.
- ↑ Christof Lange: API Programmierung für Einsteiger. 1999. Abgerufen am 19. Dezember 2010.