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 durchweg 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 Hauptprozessoren 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-CPUs.
  • In den 1970er Jahren etablierten sich die 8-Bit-CPUs, 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:

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 IA-32-80x86-Architektur

DatenbreiteDatentypProzessorregister
4 Bit = ½ ByteNibblekeine eigenen Register
8 Bit = 1 ByteBytez. B. die Register AL und AH
16 Bit = 2 ByteWordz. B. das Register AX
32 Bit = 4 ByteDouble Wordz. B. das Register EAX
64 Bit = 8 ByteQuadruple Wordz. B. das Register MM0
128 Bit = 16 ByteDouble Quadruple Wordz. 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:

DatenbreiteBit-DatentypenInteger-DatentypenWertebereich
vorzeichenlosvorzeichenbehaftet
8 Bit = 1 ByteBYTE (Byte)(U)SINT (Short-Integer)0..255−128..127
16 Bit = 2 ByteWORD (Wort)(U)INT (Integer)0..65 535−32 768..32 767
32 Bit = 4 ByteDWORD (Doppel-Wort)(U)DINT (Double Integer)0..232-1-231..231-1
64 Bit = 8 ByteLWORD (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

  1. http://www.wissen.de/lexikon/verarbeitungsbreite
  2. QuinnRadich: Windows Data Types (BaseTsd.h) - Win32 apps. Abgerufen am 15. Januar 2020 (amerikanisches Englisch).
  3. 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.
  4. 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.
  5. Christof Lange: API Programmierung für Einsteiger. 1999. Abgerufen am 19. Dezember 2010.

Auf dieser Seite verwendete Medien

AMD Phenom die.png

AMD Phenom™ Quad-Core Processor Die