Palabra (informática)
# Palabra (informática)

En el contexto de la informática, una palabra es una cadena finita de bits que son manejados como un conjunto por la máquina. El tamaño o longitud de una palabra hace referencia al número de bits contenidos en ella, y es un aspecto muy importante al momento de diseñar una arquitectura de ordenadores.

El tamaño de una palabra se refleja en muchos aspectos de la estructura y las operaciones de las computadoras. La mayoría de los registros en un ordenador normalmente tienen el tamaño de la palabra. El valor numérico típico manipulado por un ordenador es probablemente el tamaño de palabra. La cantidad de datos transferidos entre la CPU del ordenador y el sistema de memoria a menudo es más de una palabra. Una dirección utilizada para designar una localización de memoria a menudo ocupa una palabra.

Los ordenadores modernos normalmente tienen un tamaño de palabra de 16, 32 o 64 bits. Muchos otros tamaños se han utilizado en el pasado, como 8, 9, 12, 18, 24, 36, 39, 40, 48 y 60 bits. El slab es uno de los ejemplos de uno de los primeros tamaños de palabra. Algunos de los primeros ordenadores eran decimales en vez de binarios, típicamente teniendo un tamaño de palabra de 10 o 12 dígitos decimales y algunos de los primeros ordenadores no tenían una longitud de palabra fija.

Algunas veces, el tamaño de una palabra se define para tener un valor particular por compatibilidad con los ordenadores anteriores. Los microprocesadores utilizados en ordenadores personales (por ejemplo, los Intel Pentium y los AMD Athlon) son un ejemplo de esto. Su arquitectura IA-32 es una extensión del diseño original del Intel 8086 que tenía un tamaño de palabra de 16 bits. Los procesadores IA-32 siguen soportando programas del 8086 (x86), así que el significado de "word" en el contexto IA-32 sigue siendo el mismo y se continua diciendo que son 16 bits, a pesar del hecho de que en la actualidad puede (y especialmente cuando el tamaño del operando por defecto es 32-bit) opera más como una máquina con un tamaño de palabra de 32 bits. Similarmente en la nueva arquitectura x86-64, una "palabra" sigue siendo 16 bits, aunque los operandos de 64-bit ("cuádruple palabra") sean más comunes.

Dependiendo de cómo se organiza un ordenador, las unidades de tamaño de palabra se pueden utilizar para:

## Elección del tamaño de palabra

Cuando se diseña una arquitectura de computadores, la elección de la longitud de palabra es de substancial importancia. Hay consideraciones de diseño que promueven tamaños de agrupaciones de bits para usos particulares (p.ej. direcciones) y estas consideraciones apuntan a diferentes tamaños para diferentes usos. Sin embargo, las consideraciones de economía en diseños fuertemente apuestan por un tamaño o unos cuantos tamaños relacionados por múltiplos o fracciones (submúltiplos) de una longitud primaria. El tamaño elegido se convierte en la longitud de palabra de la arquitectura.

El tamaño de carácter es una de las influencias en la elección de la longitud de palabra. Antes de mediados de los años 1960, los caracteres se almacenaban a menudo en seis bits, esto permitía como mucho 64 caracteres, así que los alfabetos se limitaban a las mayúsculas. Como es eficiente en tiempo y espacio que el tamaño de palabra sea un múltiplo del tamaño de carácter, las longitudes de palabra en este periodo sean normalmente múltiplos de 6 bits (en máquinas binarias). Una elección común fueron las palabras de 32 bits, que es también un buen tamaño para las propiedades numéricas de un formato en coma flotante.

Después de la introducción del IBM S/360, diseño que utilizaba caracteres de 8 bits y soportaba letras minúsculas, el tamaño estándar de un carácter (o más correctamente, un byte) se convirtió en ocho bits. Los tamaños de palabra a partir de entonces fueron naturalmente múltiplos de ocho bits, con 16, 32 y 64 bits siendo utilizados comúnmente.

En arquitectura de ordenadores, 16 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 16 bits de ancho, o para referirse a una arquitectura de CPU y ALU basadas en registros, bus de direcciones o bus de datos de ese ancho.

### Arquitecturas de palabra variable

Los primeros diseños de máquinas incluye algunos que utilizaban lo que a menudo se llamaba una longitud de palabra variable. En este tipo de organización, un operando numérico no tiene longitud fija sino que se detecta cuando termina con un carácter especial, como las máquinas utilizaban el BDC para números. Ejemplos de esta clase de máquinas son el IBM 702, el IBM 705, el IBM 7080, el IBM 7010, el UNIVAC 1050, el IBM 1401 y el IBM 1620.

Muchas de estas máquinas trabajan con una unidad de memoria a la vez y como cada instrucción de datos tiene una longitud de varias unidades, cada instrucción tarda varios ciclos solamente en acceder a memoria. Por esta razón, estas máquinas a veces son tan lentas. Por ejemplo, las instrucciones de un IBM 1620 Modelo I tardan 8 ciclos sólo para leer 12 dígitos de la instrucción (el Modelo II lo redujo a 6 ciclos, pero reducía los tiempos a 4 ciclos si ambos campos de direcciones no se necesitaban en la instrucción).

### Las potencias de 2

Los valores de datos pueden ocupar diferentes tamaños de memoria, porque, por ejemplo, algunos números necesitan ser capaces de tener más precisión que otros. Los tamaños comúnmente utilizados normalmente se eligen para ser múltiplos de potencias de 2 de la unidad de resolución direcciones (byte o palabra). Esto es conveniente porque convirtiendo el índice de un elemento de un array en la dirección del elemento sólo requiere una operación de desplazamiento (que es sólo una pista conductora en hardware) en vez de una multiplicación. En algunos casos esta relación puede también evitar la utilización de operaciones de división. Como resultado, muchos diseños de computadores modernos tienen tamaños de palabra (y otros tamaños de operandos) que son una potencia de 2 veces el tamaño de un byte.

## Familias de tamaños

Según los diseños de computadores se han hecho más complejos, la importancia central de un tamaño de palabra simple en una arquitectura ha decrecido. Aunque gran parte del hardware puede utilizar una amplia variedad de tamaños de datos, las fuerzas del mercado ejercen presión para mantener la compatibilidad mientras se extienden las capacidades de los procesadores. Como resultado, lo que tiene que haber sido el tamaño de palabra central en un diseño reciente tiene que coexistir como un tamaño alternativo a la longitud de palabra original en un diseño de compatibilidad hacia atrás. La longitud de palabra original permanece estando disponible en diseños futuros, formando las bases de un tamaño de familia.

Un gran ejemplo de esto se puede ver en los diseños x86. La arquitectura del 8086 original claramente utilizaba un tamaño de palabra de 16 bits. El significantemente realzado diseño del 80386 añadido al 8086 es base de una organización que está basada en unidades de 32 bits. Si fuera un diseño libre, habría tenido un tamaño de palabra de 32 bits, pero como extensión del 8086, su tamaño de palabra continuó siendo considerado como 16 bits. Como resultado, se dice que el 80386 y sus sucesores son de "32-bit", pero normalmente no tienen una palabra de 32 bits. Esta misma situación ha vuelto a ocurrir recientemente en la misma línea, como las extensiones de arquitectura AMD64 haciendo que predomine el tamaño de 64 bits sin descartar el soporte para 16 y 32 bits.

Se puede ver que una arquitectura de computadores actual está basada en una familia de tamaños relacionados estrechamente más que en un tamaño de palabra simple omnipresente. Los tamaños están íntimamente relacionados unos con otros mediante factores enteros, normalmente potencias de dos. Denominar a uno de ellos longitud de palabra de la arquitectura puede ser algo arbitrario y la longitud puede ser designada por la historia de la evolución de la arquitectura más que las propiedades del tamaño propiamente dicho en un diseño reciente.

## Dword y Qword

En ciencias de la computación, Dword (en inglés double word, doble palabra) es una unidad de datos que es dos veces el tamaño de una palabra. En las plataformas x86, que tienen una longitud de palabra de 16 bits, una unidad dword tiene una longitud de 32 bits.

Qword (en inglés quadruple word, cuádruple palabra) es una unidad de datos que es cuatro veces el tamaño de una palabra. En las plataformas x86, esta unidad de datos es 64 bits.

Finalmente, Intel utiliza el término DQWord (en inglés double quadruple word, doble cuádruple palabra) para denotar datos de 128 bits, encontrado en la implementación del SSE y sus antecesores.

## Tabla de tamaños de palabra

| Año | Arquitectura | Longitud de palabra (w) | Enteros | Punto flotante | Instrucción | Unidad de direcciones | Longitud de carácter |
| - | - | - | - | - | - | - | - |
| 1941 | Zuse Z3 | 22 b | – | w | 8 b | w | – |
| 1942 | ABC | 50 b | w | – | – | – | – |
| 1944 | Harvard Mark I | 23 d | w | – | 24 b | – | – |
| 1946 (1948) {1953} | ENIAC (w/Panel #16) {w/Panel #26} | 10 d | w, 2w (w) {w} | – | – (2d, 4d, 6d, 8d) | – – {w} | – |
| 1951 | UNIVAC I | 12 d | w | – | ½w | w | 1 d |
| 1952 | Máquina IAS | 40 b | w | – | ½w | w | 5 b |
| 195 | IBM 701 | 36 b | ½w, w | – | ½w | ½w, w | 6 b |
| 1952 | UNIVAC 60 | n d | 1d, ... 10d | – | – | – | 2d, 3d |
| 1953 | IBM 702 | n d | 0d, ... 511d | – | 5d | d | 1 d |
| 1953 | UNIVAC 120 | n d | 1d, ... 10d | – | – | – | 2d, 3d |
| 1954 (1955) | IBM 650 (w/IBM 653) | 10 d | w | – (w) | w | w | 2 d |
| 1954 | IBM 704 | 36 b | w | w | w | w | 6 b |
| 1954 | IBM 705 | n d | 0d, ... 255d | – | 5d | d | 1 d |
| 1954 | IBM NORC | 16 d | w | w, 2w | w | w | – |
| 1956 | IBM 305 | n d | 1d, ... 100d | – | 10d | d | 1 d |
| 1958 | UNIVAC II | 12 d | w | – | ½w | w | 1 d |
| 1958 | SAGE | 32 b | ½w | – | w | w | 6 b |
| 1958 | Autonetics Recomp II | 40 b | w, 79 b, 8d, 15d | 2w | ½w | ½w, w | 5 b |
| 1959 | IBM 1401 | n d | 1d, ... | – | d, 2d, 4d, 5d, 7d, 8d | d | 1 d |
| 1959 (TBD) | IBM 1620 | n d | 2d, ... | – (4d, ... 102d) | 12d | d | 2 d |
| 1960 | LARC | 12 d | w, 2w | w, 2w | w | w | 2 d |
| 1960 | IBM 1410 | n d | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
| 1960 | IBM 7070 | 10 d | w | w | w | w, d | 2 d |
| 1960 | PDP-1 | 18 b | w | – | w | w | 6 b |
| 1961 | IBM 7030 (Stretch) | 64 b | 1b, ... 64b, 1d, ... 16d | w | ½w, w | b, ½w, w | 1 b, ... 8 b |
| 1961 | IBM 7080 | n d | 0d, ... 255d | – | 5d | d | 1 d |
| 1962 | UNIVAC III | 25 b, 6 d | w, 2w, 3w, 4w | – | w | w | 6 b |
| 1962 | UNIVAC 1107 | 36 b | $^1/_6w,$ ⅓w, ½w, w | w | w | w | 6 b |
| 1962 | IBM 7010 | n d | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
| 1962 | IBM 7094 | 36 b | w | w, 2w | w | w | 6 b |
| 1963 | Gemini Guidance Computer | 39 b | 26 b | – | 13 b | 13 b, 26 b | – |
| 1963 (1966) | Apollo Guidance Computer | 15 b | w | – | w, 2w | w | – |
| 1964 | CDC 6600 | 60 b | w | w | ¼w, ½w | w | 6 b |
| 1965 | IBM 360 | 32 b | ½w, w, 1d, ... 16d | w, 2w | ½w, w, 1½w | 8 b | 8 b |
| 1965 | UNIVAC 1108 | 36 b | $^1/_6w,$ ¼w, ⅓w, ½w, w, 2w | w, 2w | w | w | 6 b, 9 b |
| 1965 | PDP-8 | 12 b | w | – | w | w | 8 b |
| 1970 | PDP-11 | 16 b | w | 2w, 4w | w, 2w, 3w | 8 b | 8 b |
| 1971 | Intel 4004 | 4 b | w, d | – | 2w, 4w | w | – |
| 1972 | Intel 8008 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
| 1972 | Calcomp 900 | 9 b | w | – | w, 2w | w | 8 b |
| 1974 | Intel 8080 | 8 b | w, 2w, 2d | – | w, 2w, 3w | w | 8 b |
| 1975 | Cray-1 | 64 b | 24 b, w | w | ¼w, ½w | w | 8 b |
| 1975 | Motorola 6800 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
| 1975 | MOS Tech. 6501 MOS Tech. 6502 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
| 1976 | Zilog Z80 | 8 b | w, 2w, 2d | – | w, 2w, 3w, 4w, 5w | w | 8 b |
| 1978 (1980) | Intel 8086 (w/Intel 8087) | 16 b | ½w, w, 2d (w, 2w, 4w) | – (2w, 4w, 5w, 17d) | ½w, w, ... 7w | 8 b | 8 b |
| 1978 | VAX-11/780 | 32 b | ¼w, ½w, w, 1d, ... 31d, 1b, ... 32b | w, 2w | ¼w, ... 14¼w | 8 b | 8 b |
| 1979 | Motorola 68000 | 32 b | ¼w, ½w, w, 2d | – | ½w, w, ... 7½w | 8 b | 8 b |
| 1982 (1983) | Motorola 68020 (w/Motorola 68881) | 32 b | ¼w, ½w, w, 2d | – (w, 2w, 2½w) | ½w, w, ... 7½w | 8 b | 8 b |
| 1985 | ARM1 | 32 b | w | – | w | 8 b | 8 b |
| 1985 | MIPS | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b |
| 1989 | Intel 80486 | 16 b | ½w, w, 2d w, 2w, 4w | 2w, 4w, 5w, 17d | ½w, w, ... 7w | 8 b | 8 b |
| 1989 | Motorola 68040 | 32 b | ¼w, ½w, w, 2d | w, 2w, 2½w | ½w, w, ... 7½w | 8 b | 8 b |
| 1991 | PowerPC | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b |
| 2000 | IA-64 | 64 b | 8 b, ¼w, ½w, w | ½w, w | 41 b | 8 b | 8 b |
| 2002 | XScale | 32 b | w | w, 2w | ½w, w | 8 b | 8 b |
| claves: b: bits, d: dígitos decimales, w: tamaño de palabra de arquitectura, n: tamaño variable ||||||||
