Datenwort

aus Wikipedia, der freien Enzyklopädie

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:

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

  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.