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:

  • Números enteros: Los contenedores de valores numéricos enteros pueden estar disponibles en varios tamaños diferentes, pero uno de los tamaños disponibles casi siempre será la palabra. Los otros tamaños, suelen ser múltiplos o fracciones del tamaño de palabra. Los tamaños más pequeños normalmente se utilizan solo por eficiencia en la utilización de memoria, cuando se cargan en el procesador, sus valores normalmente son mayores, contenedores de tamaño palabra.
  • Números en coma flotante: Los contenedores para valores numéricos en coma flotante son típicamente una palabra o un múltiplo de una palabra.
  • Direcciones: Los contenedores para direcciones de memoria tienen que ser capaces de expresar el rango necesario de valores, pero no excesivamente grandes. A menudo el tamaño utilizado es el de la palabra pero puede ser un múltiplo o una fracción.
  • Registros: Los registros son diseñados con un tamaño apropiado para el tipo de dato que almacenan, p.ej. enteros, números en coma flotante o direcciones. Muchas arquitecturas de computadores utilizan registros de "propósito general" que pueden albergar varios tipos de datos, estos registros se dimensionan para permitir los más grandes de estos tipos y el tamaño típico es el tamaño de palabra de la arquitectura.
  • Transferencia memoria-procesador: Cuando el procesador lee del subsistema de memoria a un registro o escribe el valor de un registro en memoria, la cantidad de datos transferidos es a menudo una palabra. En los subsistemas de memoria simples, las palabras son transferidas sobre el bus de datos de memoria, que típicamente tiene un ancho de una palabra o media palabra. En los subsistemas de memoria que utilizan caché, la transferencia de tamaño palabra se produce entre el procesador y la caché de nivel uno, en los niveles más bajos de la jerarquía de memoria las grandes transferencias (con múltiplos de la longitud de palabra) son normalmente utilizadas.
  • Resolución de unidades de dirección: Es una arquitectura dada, los sucesivos valores de direcciones designan sucesivas unidades de memoria. En muchos ordenadores, la unidad puede ser un carácter o una palabra (algunos han utilizado una resolución de bit). Si la unidad es una palabra, entonces se puede acceder a una gran suma de memoria utilizando una dirección de un tamaño dado. Por otra parte, si la unidad es un byte, se pueden direccionar caracteres individuales (p.ej. seleccionados durante la operación de memoria).
  • Instrucciones: Las instrucciones máquina normalmente son fracciones o múltiplos de la longitud de palabra de la arquitectura. Esta es una elección natural ya que las instrucciones y los datos normalmente comparten el mismo subsistema de memoria.

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

[1][2]

Véase también

Referencias

  1. Blaauw, Gerrit Anne; Brooks, Jr., Frederick Phillips (1997). Computer Architecture: Concepts and Evolution (1 edición). Addison-Wesley. ISBN 0-201-10557-8.  (1213 pages) (NB. This is a single-volume edition. This work was also available in a two-volume version.)
  2. Ralston, Anthony; Reilly, Edwin D. (1993). Encyclopedia of Computer Science (3rd edición). Van Nostrand Reinhold. ISBN 0-442-27679-6. 

Bibliografía

  • Gerrit A. Blaauw & Frederick P. Brooks, Arquitectura de Computadores: Conceptos y Evolución (Addison-Wesley, 1997, ISBN 0-201-10557-8).
  • Anthony Ralston & Edwin D. Reilly, Enciclopedia de la Tercera Edición de la Ciencia de Computadores (Van Nostrand Reinhold, 1993, ISBN 0-442-27679-6).