Download LATENCIA (Latency). Es el tiempo o lapso necesario para que un

Document related concepts
no text concepts found
Transcript
LATENCIA (Latency). Es el tiempo o lapso necesario para que un paquete de información se
transfiera de un lugar a otro. La latencia, junto con el ancho de banda, son determinantes para
la velocidad de una red.
ROM - RAM - CACHÉ y Memoria Virtual
Memoria Rom o Convencional ( Read Only Memory )
Es una memoria solamente de lectura es totalmente inalterable sin esta memoria la maquina
no arrancaría.
La memoria principal es la convencional que va de 0 a 640 kb. Cuando la máquina arranca
comienza a trabajar el disco y realiza un testeo, para lo cual necesita memoria, esta
memoria es la convencional (ROM) y está dentro del mother (en el bios). Apenas arranca
utiliza 300 kb, sigue testeando y llega a mas o menos 540 kb donde se planta. A medida de
que comenzaron a haber soft con más necesidad de memoria apareció la llamada memoria
expandida que iba de 640 kb a 1024 kb. Una vez que se utilizaba toda la memoria
convencional se utilizaba la expandida que utiliza la memoria RAM. A medida que pasa el
tiempo los 1024 kb eran escasos y se creo la memoria extendida que va de 1024 kb a
infinito que es la memoria RAM pura.
Los valores de memoria podemos observarlos en el setup de la máquina.
Memoria Ram o Memoria e acceso Aleatorio ( Random Acces Memory )
Esta memoria es como un escritorio al igual que los escritorios tienen cajones donde ordenan
la información, cuanto mas grande sea el escritorio (plano de apoyo) mas cajones voy a
tener de tal suerte que el micro va a perder menos tiempo en buscar y ordenar la
información
La importancia de esta memoria es tan grande que si esta ausente la PC NO ARRANCA,
Actúa como si estuviera muerta no hay sonido ni cursor en la pantalla ni luces que se
enciendan o apaguen.
Para que sirve:
Almacena las instrucciones que debe ejecutar el micro en cada momento
Este es el lugar físico donde debe trabajar el procesador cuando abrimos un programa sus
instrucciones se copian automáticamente en la memoria, y cuando cerremos el programa
todo se borrara ( volatizara )
La Ram es como un pizarrón donde se copian datos
También copia los trabajos que estamos haciendo en ese programa
En la Ram se copian programas que coordinan el funcionamiento de la Pc:
La primera parte de la Ram esta reservada para guardar las instrucciones de los dispositivos
electrónicos. En este lugar no se puede guardar nada ya que lo utiliza el sistema para saber
como manejar los dispositivos.
Zócalos de Memoria o Bancos de Memoria
Simm 30 Pines
Simm 72 Pines
Dimm Hasta 168 Pines
Los bancos pueden ser tres o cuatro y tienen una marca el el mother donde se debe colocar
la primera memoria. Obviamente si en el primero tenemos una de 64 Mg y otra en el
segundo decimos que tenemos 128 mg. La computadora funciona mejor con una sola de
128Mg. Esto es solo para las DIMM, las Simm se instalan de a pares
La memoria es como un peine con chip soldados en su superficie y depende de el numero de
dientes y del banco al cual este conectado, el nombre con la cual se denomina:
Simm : Single in line Memory Module
Dimm: Double Memory Module
Rimm: Rambus in line Memory Module
Evaluacion de la Ram
Trabaja de la siguiente forma: los datos acceden en la Ram de forma aleatoria o se
directamente desde la ubicación en que se encuentran sin necesidad de recorrer otras
posiciones anteriores por Ej. Si tengo que recordar donde guarde el café que esta en la
cocina, no tengo necesidad de recordar todo lo que hice durante el día para llegar hasta el
café.
1
La Ram tampoco necesita recorrer recorre toda una secuencia de datos para dar con uno
específicamente, simplemente lo busca donde corresponde en este sentido es mucho mas
rapida que la Rom.
Capacidad de almacenamiento
Velocidad
Capacidad para manejo de datos
Diferentes tecnologías
La capacidad de almacenamiento se mide en Megabytes, un byte guarda una letra un
megabayte puede guardar un millón de letras cuantos mas Mb tenga la memoria mejor.
Ojo anda mejor micro con poca velocidad y mucha memoria que uno con mucha y poca
memoria. La cantidad mínima de memoria para Win 98 es de 32 Mb.
Velocidad: la velocidad de la Ram se mide en Mhz, antes se media en Nanos
( Millonésima parte de un segundo) a partir de 1995 las memorias comenzaron a trabajar al
ritmo del el mother y se comenzó a medir la velocidad en Mhz.
Nanosegundos y Mhz
Las memorias traen inscriptos un sus chip un número seguido con un guión y otro número
Este ultimo es el que correspoende a los Nanos y hay que convertirlos en Mhz
Tabla Nanos y Mhz
17ns 60 Mhz 15ns 66Mhz
13ns 80 Mhz 10ns 100Mhz
8.3ns 120 Mhz 7.5ns 133Mhz
Capacidad de manejo de Datos: al igual que el micro las memorais también tiene un
ancho ( Ancho de Memorias ), que se mide en Bits una memoria Dimm maneja 64 Bits y una
Simm 32 Bits.
Diferentes Tecnologías
Las memoria al igual que el resto de los componentes de la Pc, también tuvo su historia en
su desarrollo tecnológico:
DRAM ( Dynamyc Random Acces Memory )
Este tipo de memoria se utilizan des los años 80 hasta ahora en toda las computadoras
Esta memoria tiene una desventaja hay que estimularla ( Refresco) permanentemente
porque se olvida de todo.
Como se estimula : requiere un procesador que ordene el envió de cargas eléctricas, a este
tipo de memorias se lo conoce como memoria estáticas
Otras de las desventajas de esta memoria es que es lenta y la ventaja es que es barata
Obviamente al tener estas desventajas se le incorporaron distintas tecnologías para
mejorarlas.
FPM DRAM
La ventaja de este memoria consiste en pedir permiso una sola vez u llevarse varios datos
consecutivos esto comenzó a usarse principios de os años noventa y dio buenos resultados a
estos módulos se los denominaron SIMM FPM DRAM y pueden tener 30 o 72 pines y se la
utiliza en las Pentium I lo que logro con esta tecnología es agilizar el proceso de lectura,
estas memorias ya no se utilizan mas.
EDO DRAM
Estas memorias aparecieron en el 95, y se hicieron muy populares ya que estaban presentes
en todas las Pentium I MMX y tenia la posibilidad de localizar un dato mientras transfería
otro de diferencia de las anteriores que mientras transfería un dato se bloqueaba.Estas EDO
SIMM eran de 72 pines
SDRAM
Esta Memoria entro en el mercado en los años 97, y mejoro la velocidad siendo su ritmo de
trabajo igual a la velocidad de Bus (FSB) es decir que tienen la acapacidad de trabajar a la
misma velocidad de mother al que se conectan.
Es tos modulos de 168 Pines son conocidos como DIMM SDRAM PC 66 y 100, 133,
obviamente si instalo una de 133, en un mother de 100 va a funcionar a 100Mhz.
DDR SDRAM
En este caso se consiguió que pudiera realizar dos transferencia en una pulsación o tic-tac de
reloj, esta memoria pude alcanzar velocidades de 200 a 266Mhz, Tiene una ventaja mas
trabaja en sincronía con el bus del mother si este acelera la memoria también pero tiene una
desventaja son muy caras. Se conoce como DIMM DDR SDRAM PC 1600 Y PC 2100.
RDRAM
Es una memoria muy costosa y de compleja fabricación y la utilizan procesador Pentim IV
para arriba corre a velocidades de 800 Mhz sus módulos se denominan Rimm de 141 pines y
con un anho de 16 bits, para llenar un banco de memoria de 64 bits hay que instalar 4
memorias, es posible que estas memoria sean retiradas del mercado por ser tan costosas
MEMORIA VIRTUAL
2
Tenemos también lo que llamamos memoria virtual también llamada swapeo. Windows crea
esta memoria virtual y ocupa espacio del disco para hacerlo. Si llega se a superar esta
memoria virtual la capacidad del disco se cuelga la máquina, para lo cual lo único que nos
resta es resetearla.
Si abrimos muchos programas nos vamos a dar cuenta que cuando llegamos a utilizar
memoria virtual la máquina comienza a funcionar más lenta o a la velocidad que tiene
nuestro disco disminuye, podemos seguir trabajando, pero nunca andara tan rápido como
cuando trabaja con la memoria RAM o extendida. Por lo tanto para evitar esto lo mejor es
colocar más memoria RAM de acuerdo a lo que diga el manual de mother.
MEMORIA CACHÉ o SRAM
La memoria caché trabaja igual que la memoria virtual, tenemos caché en el procesador, en
los discos y en el mother y nos guarda direcciones de memoria. Si ejecutamos un programa
en principio, lo cerramos y luego los volvemos a ejecutar, la memoria caché nos guarda la
ubicación (dirección) en el disco, cuando lo ejecuté, y lo que hicimos con el programa. Es
mucho más rápida cuando ya usamos un programa
Existen 3 tipos de memoria caché:
Cache L1
Esta dividido en dos bloques uno contiene las instrucciones y otro los datos y cuando se
habla de su capacidad de almacenamiento se dice que es de 2x16 Kb .
El cache L1 se encuentra dentro del interior del procesador y funciona a la misma velocidad
que el micro con capacidades que van desde 2x8 hasta 2x64Kb
Cache L2 interno y externo
La primeras memoria caché estaban ubicadas en el mother luego se construyeron en el
procesador, pero no dentro del dado del procesador por lo que es mas lento que el caché L1,
mientras que el externo lo encontramos el el mother.
La computadoras que tienen las tres tecnologías de caché van a ser mas rápidas.
Cache L3
Algunos micro soportan un nivel de caché mas el L3 que esta localizado en el mother
EL AMD 6k-3 soporta este caché.
TABLA
Nombre - Arquitectura - Pines - Capacidad - Velocidad
Edo Ram - Simm - 32 bits - 72 - 128Mb - 20 50Mhz
PC 66 SDRAM - Dimm - 64 bits - 168 256Mb - 66Mhz
PC 100/133 SDRAM - Dimm - 64 bits - 168 256Mb - 100/133Mhz
PC 600/700/800 - Rimm - 16 bits - 141 256Mb/ 1Gb - 800Mhz
PC 1600/2100 - Dimm - 64 bits - 184 - 256Mb - 200/266Mhz
Caché
Diagrama de una memoria caché de CPU.
En informática, una caché es un conjunto de datos duplicados de otros
originales, con la propiedad de que los datos originales son costosos de
acceder, normalmente en tiempo, respecto a la copia en el caché. Cuando
se accede por primera vez a un dato, se hace una copia en el caché; los
accesos siguientes se realizan a dicha copia, haciendo que el tiempo de
acceso medio al dato sea menor.
El término caché puede utilizarse también para una zona de memoria de
disco denominado caché de disco (Disk cache o Cache buffer en inglés).
3
Composición interna
Las memorias caché están compuestas por dos elementos distintos unos a
otros, un directorio que almacena etiquetas que identifican la dirección de
memoria almacenada, y bloques de información, todos de igual tamaño, que
guardan la información propiamente dicha. Por lo cual este tipo de memoria
no es de tipo temporal como la RAM.
Diseño
En el diseño de la memoria caché se deben considerar varios factores que
influyen directamente en el rendimiento de la memoria y por lo tanto en su
objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria.
Estos factores son las políticas de ubicación, extracción, reemplazo,
escritura y el tamaño de la caché y de sus bloques.
Política de ubicación
Decide dónde debe colocarse un bloque de memoria principal que entra en
la memoria caché. Las más utilizadas son:
Directa: Al bloque n-ésimo de memoria principal le corresponde la posición
n módulo k donde k es el número de bloques de la memoria caché.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquier
lado del bloque de memoria caché.
Asociativa por conjuntos: La memoria caché se divide en varios conjuntos
de bloques, así al bloque i-ésimo de memoria principal le corresponde el
conjunto i módulo (k/n) donde k es el número de bloques de memoria caché.
Dicho bloque de memoria podrá ubicarse en cualquier posición dentro del
conjunto asociado de la memoria caché.
Política de extracción
La política de extracción determina cuándo y cuál bloque de memoria
principal hay que traer a memoria caché. Existen dos políticas muy
extendidas:
Por demanda: Un bloque sólo se trae a memoria caché cuando ha sido
referenciado y se produzca un fallo.
Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria
principal, se trae además el bloque (i+1)-esimo.
Política de reemplazo
Determina qué bloque de memoria caché debe abandonarla cuando no
existe espacio disponible para un bloque entrante. Hay dos políticas muy
importantes que son:
Aleatoria: El bloque es reemplazado de forma aleatoria.
4
FIFO: Se usa un algoritmo First In First Out FIFO, "el primero que entra es el
primero que sale", para determinar qué bloque debe abandonar la caché.
Este algoritmo generalmente es poco eficiente.
Menos recientemente usado (LRU): Se sustituye el bloque que hace más
tiempo que no se ha utilizado.
Política de escritura
Determina cuándo se actualiza la información en memoria principal cuando
se ha escrito en memoria caché. Existen dos políticas principales:
Escritura inmediata: También llamada en inglés Write Through. Cuando se
escribe un bloque en memoria caché se actualiza directamente la
información también en memoria principal, manteniendo la coherencia en
todo momento. Suele mezclarse con la técnica de With No Alocation que
significa que en el momento de escribir siempre va a ir a la memoria
principal.
Escritura aplazada: En inglés Write Back, cuando se escribe un bloque en
memoria caché, se marca como sucio usando un bit especial llamado
normalmente dirty bit. Cuando el bloque sea desalojado de memoria caché
(mediante la correspondiente política de reemplazo), se comprueba el bit de
sucio, y si está activado se escribe la información de dicho bloque en
memoria principal. En este caso es "With Alocation" que significa si hay que
escribir y no esta en la cache, entonces necesitamos subirlo a cache.
También es llamada como política de post-escritura.
Nanosegundo
Un nanosegundo es la milmillonésima parte de
un segundo, 10-9. Este tiempo tan corto no se
usa en la vida diaria, pero es de interés en
ciertas áreas de la física, la química y en la
electrónica. Así, un nanosegundo es la duración
de un ciclo de reloj de un procesador de 1 GHz,
y es también el tiempo que tarda la luz en
recorrer aproximadamente 30 cm.
nanosegundo
Símbolo
ns
Magnitud
Tiempo
SI equivalencia 1E-9 segundos
Dimensión
T
Sistema
SI.
Megahercio
Un Megahercio (MHzs) equivale a 106 hercios (1 millón), unidad de medida
de frecuencia.
Otros múltiplos comunes del hercio (Hz) son:
Kilohercio (Khz), equivalente a 103 Hz (1000)
5
Gigahercio (Ghz), equivalente a 109 Hz (1000 millones)
Kilohercio << megahercio << Gigahercio
Megahercios en informática
Se utilizó mucho en este campo (sobre todo entre los años 1974 y 2000
para referirse a la velocidad de procesamiento de un microprocesador, ya
que la velocidad de reloj estaba en ese orden de magnitud. Hoy sin
embargo es más utilizada su medida en gigahercios.
Otros buses de datos, así como memorias del ordenador, también operan a
diferentes frecuencias, y habitualmente también del orden de megahercios,
aunque estas especificaciones técnicas son menos anunciadas por los
vendedores de computadoras que la frecuencia del microprocesador.
Se cree habitualmente que un microprocesador será mejor que otro si la
frecuencia de micro es mayor, sin embargo, esto no es necesariamente
cierto. Hay que tener en cuenta más parámetros para tener en cuenta el
rendimiento que se aprovecha de cada ciclo. Así por ejemplo hay una clase
de computadores de arquitectura CISC, que se caracterizan por tener un
conjunto de instrucciones más complejas que las de arquitectura RISC. Las
instrucciones RISC se realizan en promedio más rápido, pero las CISC son
más elaboradas. Funcionando a menor frecuencia, un CISC podría ser más
eficiente. Lo más adecuado para medir con seguridad el rendimiento es
realizar un benchmark.
64 bits
En arquitectura de ordenadores, 64 bits es un adjetivo usado para describir
enteros, direcciones de memoria u otras unidades de datos que
comprenden hasta 64 bits (8 octetos) 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.
Los microprocesadores de 64 bits han existido en los superordenadores
desde 1960 y en servidores y estaciones de trabajo basadas en RISC desde
mediados de los años 1990. En 2003 empezaron a ser introducidos
masivamente en los ordenadores personales (previamente de 32 bits) con
las arquitecturas x86-64 y los procesadores PowerPC G5.
Aunque una CPU puede ser internamente de 64 bits, su bus de datos o bus
de direcciones externos pueden tener un tamaño diferente, más grande o
más pequeño y el término se utiliza habitualmente para describir también el
tamaño de estos buses. Por ejemplo, muchas máquinas actuales con
procesadores de 32 bits usan buses de 64 bits (p.ej. el Pentium original y
las CPUs posteriores) y pueden ocasionalmente ser conocidas como "64
bits" por esta razón. El término también se puede referir al tamaño de las
instrucciones dentro del conjunto de instrucciones o a cualquier otro
elemento de datos (p.ej. las cantidades de 64 bits de coma flotante de doble
precisión son comunes). Sin más calificaciones, sin embargo, la arquitectura
de los ordenadores de 64 bits tiene integrados registros que son de 64 bits,
que permite soportar (interna y externamente) datos de 64 bits.
6
Implicaciones de arquitectura
Los registros en un procesador se dividen generalmente en tres grupos:
enteros, coma flotante y otros. En todos los procesadores de propósito
general, sólo los registros enteros pueden almacenar punteros (una
dirección de algún dato en memoria). Los registros que no son de enteros
no se pueden utilizar para almacenar punteros para leer o escribir memoria
y por tanto no se pueden utilizar para evitar cualquier restricciones
impuestas por el tamaño de los registros enteros.
Casi todos los procesadores de propósito general (con la notable excepción
de muchos ARM e implementaciones MIPS de 32 bits) han integrado
hardware de coma flotante, que puede o no utilizar registros de 64 bits para
transportar datos con el fin de procesarlos. Por ejemplo, la arquitectura X86
incluye instrucciones de coma flotante del x87 que utiliza 8 registros de 80
bits en una configuración en forma de pila; revisiones posteriores del x86 y
la arquitectura x86-64 también incluyen instrucciones SSE que utilizan 8
registros de 128 bits (16 registros en el x86-64). En contraste, el procesador
de 64 bits de la familia DEC Alpha define 32 registros de coma flotante de
64 bits además de sus 32 registros de enteros de 64 bits.
Limitaciones de memoria
Muchas CPUs están actualmente (en 2005) diseñadas para que los
contenidos de un único registro puedan almacenar la dirección de memoria
de cualquier dato en la memoria virtual. Por tanto, el número total de
direcciones en memoria virtual — la suma total de datos que el ordenador
puede mantener en su área de trabajo — es determinado por el ancho de
estos registros. Empezando en los años 1960 con el IBM S/360, luego
(entre muchos otros) el miniordenador VAX de DEC en los años 1970 y
luego con el Intel 80386 a mediados de los años 1980, un consenso de
facto instauró que 32 bits era un tamaño conveniente de registro. Un
registro de 32 bits significa que se puede referenciar 232 direcciones o 4
gigabytes de RAM. En el momento en que estas arquitecturas fueron
concebidas, 4 gigabytes de memoria estaban muy lejos de las cantidades
disponibles en instalaciones que se consideraban suficiente "espacio" para
direccionamiento. Las direcciones de 4 gigabytes se consideraban un
tamaño apropiado con el que trabajar por otra importante razón: 4 billones
de enteros son suficientes para asignar referencias únicas a la mayoría de
cosas físicamente contables en aplicaciones como bases de datos.
No obstante, con el paso del tiempo y las continuas reducciones en el coste
de la memoria (véase la Ley de Moore), al comienzo de los años 1990,
comenzaron a aparecer instalaciones con cantidades de RAM próximas a
los 4 gigabytes, y comenzó a ser deseable el uso de espacios de memoria
virtual que superaban el límite de 4 gigabytes para manejar ciertos tipos de
problemas. Como respuesta, varias empresas empezaron a lanzar nuevas
familias de chips con arquitecturas de 64 bits, inicialmente para
superordenadores, estaciones de trabajo de grandes prestaciones y
servidores. Las computadoras de 64 bits se han ido moviendo hacia el
ordenador personal, con algunos modelos de las líneas Macintosh de Apple
Computer cambiando a procesadores PowerPC 970 (llamados "G5" por
7
Apple) en 2003 y a procesadores EM64T de 64 bits en 2006, y con
procesadores x86-64 llegando a ser comunes en PCs de gama alta. La
aparición de la arquitectura de 64 bits efectivamente incrementa el límite a
264 direcciones, equivalente a 17,179,869,184 gigabytes o 16 exabytes de
RAM. Para poner esto en perspectiva, en los días en que 4 MB de memoria
principal eran comunes, el límite máximo de memoria de 232 direcciones era
unas 1000 veces mayor que la configuración típica de memoria. En 2007,
cuando 1GB de memoria principal es común, el límite de 264 es unos diez
mil millones de veces superior, es decir diez millones de veces más de
espacio.
Muchos PCs de 64 bits del mercado tienen actualmente un límite artificial en
la cantidad de memoria que pueden reconocer, pues las limitaciones físicas
hacen muy poco probable que se vaya a necesitar soporte para los 16
exabytes de capacidad total. El Mac Pro de Apple, por ejemplo, puede
configurarse físicamente con hasta 16 gigabytes de memoria, y por ello no
hay necesidad de soportar más allá de esa cantidad. Un núcleo linux
reciente (versión 2.6.16) puede ser compilado con soporte para hasta 64
gigabytes de memoria.
Cronología del procesador de 64 bits
1961: IBM lanzó el superordenador IBM 7030 Stretch. Este utilizaba
palabras de 64 bits e instrucciones de 32 ó 64 bits.
1974: Control Data Corporation lanzó el superordenador vectorial CDC Star100, que utiliza una arquitectura de palabras de 64 bits (los sistemas previos
de CDC estaban basados en arquitecturas de 60 bits).
1976: Cray Research lanzó el primer ordenador Cray-1. Este estaba basado
en una arquitectura de palabras de 64 bits, que sentó las bases para los
posteriores superordenadores vectoriales de Cray.
1983: Elxsi lanzó el minisuperordenador Elxsi 6400 paralelo. La arquitectura
Elxsi tenía registros de datos de 64 bits pero un espacio de direcciones de
32 bits.
1991: MIPS Technologies produjo el primer microprocesador de 64 bits,
como la tercera revisión de la arquitectura RISC MIPS, el R4000. La CPU
fue utilizada en las estaciones de trabajo de Silicon Graphics empezando
con el IRIS Crimson. Sin embargo, el soporte de 64 bits para el R4000 no se
incluyó en el sistema operativo IRIX hasta la versión IRIX 6.2 en 1996.
1992: Digital Equipment Corporation (DEC) introdujo el Alpha con una
arquitectura pura de 64 bits que nación del proyecto PRISM.
1993: DEC lanzó los sistemas operativos de 64 bits estilo UNIX Tru64 y el
OpenVMS para Sistemas Alpha.
1994: Intel anunció sus planes para la arquitectura IA-64 de 64 bits
(desarrollada conjuntamente con HP) como sucesor de su procesador de 32
8
bits IA-32. SGI lanzó el IRIX 6.0 con soporte de 64 bits para las CPUs
R8000.
1995: Sun lanzó un procesador SPARC de 64 bits, el UltraSPARC. HAL
Computer Systems propiedad de Fujitsu lanzó estaciones de trabajo
basadas en una CPU de 64 bits, HAL independientemente diseñó la primera
generación de SPARC64. IBM lanzó los sistemas AS/400 de 64 bits, con la
posibilidad de actualizar el sistema operativo, las bases de datos y las
aplicaciones. DEC lanzó el OpenVMS Alpha 7.0, la primera versión
completa de 64 bits de OpenVMS para Alpha.
1996: HP lanzó una implementación de 64 bits, la versión 2.0 de su
arquitectura de procesador PA-RISC, el PA-8000. Nintendo introdujo la
consola de videojuegos Nintendo 64, construida con una variante de bajo
coste del MIPS R4000.
1997: IBM lanzó su RS64 equipado con procesadores PowerPC de 64 bits.
1998: IBM lanzó su procesador POWER3 completamente de 64 bits de la
familia PowerPC/POWER. Sun lanzó Solaris 7, con soporte completo para
UltraSPARC de 64 bits.
1999: Intel publicó el conjunto de instrucciones para la arquitectura IA-64.
Primera revelación pública del juego de extensiones de 64 bits al IA-32 de
AMD (posteriormente renombrado como AMD64).
2000: IBM estrenó su primer mainframe de 64 bits, el z900 y su nuevo
sistema operativo, el Z/OS — culminando el mayor desarrollo de la historia
de investigación de un procesador de 64 bits e instantáneamente borrando
la compatibilidad con las máquinas de 31 bits de sus competidores
Fujitsu/Amdahl e Hitachi. Un Linux para zSeries de 64 bits apareció casi
inmediatamente.
2001: Intel finalmente lanzó su línea de procesadores de 64-bit, con la
marca Itanium, teniendo como objetivo servidores de gama alta. No cumplió
las expectativas debido a los repetidos retrasos del lanzamiento del IA-64 al
mercado y se convirtió en un fracaso. Linux fue el primer sistema operativo
en esta versión de procesador.
2002: Intel introdujo el Itanium 2 como sucesor del Itanium.
2003: AMD sacó a la luz sus líneas de procesadores con arquitectura
AMD64 Opteron y Athlon 64. Apple lanzó también sus CPUs PowerPC 970
"G5" de 64 bits por cortesía de IBM, junto con una actualización de su
sistema operativo Mac OS X, que añadió soporte parcial para el modo de 64
bits. Se publicaron varias distribuciones Linux con soporte para AMD64.
Microsoft anunció que crearía una versión de su sistema operativo Windows
9
para esos chips AMD. Intel sostuvo que sus chips Itanium serían sus únicos
procesadores de 64 bits.
2004: Intel, reaccionando al éxito de mercado de AMD, admitió que había
estado desarrollando un clon de las extensiones AMD64, al que llamó IA32e y posteriormente renombró como EM64T. Se lanzaron versiones
actualizadas de sus familias de procesadores Xeon y Pentium 4 que
soportaban las nuevas instrucciones. Freescane anuncia su núcleo e700,
sucesor de su familia PowerPC G4.
2005: El 31 de Enero, Sun lanzó Solaris 10 con soporte para los
procesadores AMD64 y EM64T. En Marzo, Intel anunció que sus primeros
procesadores EM64T de doble núcleo se pondrían a la venta en el segundo
cuatrimestre de 2005 con la publicación de su Pentium Extreme Edition 840
y los nuevos chips Pentium D. El 30 de Abril, Microsoft lanzó públicamente
su Windows XP Professional x64 Edition para procesadores AMD64 y
EM64T. En Mayo, AMD introdujo sus primeros procesadores para
servidores Opteron AMD64 de doble núcleo y anunció su versión de
escritorio, llamada Athlon 64 X2. Los primeros procesadores Athlon 64 X2
(Toledo) contaban con dos núcleos con una memoria caché L2 de 1MB y
consistían de aproximadamente 233,2 millones de transistores. Tenían un
tamaño de 199 mm2. En Julio, IBM anunció sus nuevos procesadores
PowerPC 970MP (cuyo nombre en código era Antares) de doble núcleo y 64
bits usados por IBM y Apple. Microsoft lanzó la consola Xbox 360 que usaba
el procesador PowerPC de 64 bits Xenon, fabricado por IBM.
2006: Se pusieron en producción los procesadores Itanium 2 Montecito de
doble núcleo. Sony, IBM y Toshiba comenzaron a fabricar el procesador
Cell para su uso en la PlayStation 3, servidores, estaciones de trabajo y
otros dispositivos. Apple incorporó procesadores Xeon EM64T de 64 bits en
su nuevo Mac Pro y sus ordenadores Intel Xserve, y posteriormente
actualizó el iMac, el MacBook y el MacBook Pro con procesadores EM64T
Intel Core 2 Duo.
32 bits contra 64 bits
El cambio de una arquitectura de 32 bits a una de 64 bits es una alteración
fundamental, y muchos sistemas operativos tienen que modificarse
ostensiblemente para aprovechar las ventajas de la nueva arquitectura. El
resto del software también tiene que ser portado para usar las nuevas
capacidades; el software antiguo normalmente es soportado a través del
modo de hardware compatible (en el que los nuevos procesadores soportan
las versiones antiguas del conjunto de instrucciones antiguo de 32 bits, así
como las de la versión de 64 bits), a través de emulación software o por la
implementación de un núcleo de procesador de 32 bits dentro del
10
procesador de 64 bits (como con los procesadores Itanium de Intel, que
incluyen un núcleo de procesador x86 para ejecutar aplicaciones x86 de 32
bits). Los sistemas operativos para estas arquitecturas de 64 bits
generalmente soportan aplicaciones de 32 bits y de 64 bits.
Una excepción significativa de esto es el AS/400, cuyo software se ejecuta
en un conjunto de instrucciones virtual, llamado TIMI (Technology
Independent Machine Interface) que se traduce a código nativo por software
de bajo nivel antes de ser ejecutado. El software de bajo nivel es todo lo que
ha de ser reescrito para portar todo el SO y el software a una nueva
plataforma, como cuando IBM hizo la transición de su línea desde los
antiguos juegos de instrucciones de 32/48 ("IMPI") al PowerPC de 64 bits
(IMPI no tenía nada que ver con el PowerPC de 32 bits, así que fue incluso
una transición mayor que la de un juego de instrucciones de 32 bits a su
equivalente de 64 bits).
Mientras las arquitecturas de 64 bits incontestablemente hacen más sencillo
el trabajar con grandes conjuntos de datos en aplicaciones como el vídeo
digital, computación científica y grandes bases de datos, ha habido un
debate considerable sobre si los modos de compatibilidad con 32 bits serán
más rápidos que los sistemas de 32 bits del mismo precio para otras tareas.
En las arquitecturas x86-64 (AMD64 y EM64T, IA-32e), la mayoría de los
sistemas operativos de 32 bits y aplicaciones pueden ejecutarse sin
problemas en el hardware de 64 bits.
Las máquinas virtuales de JAVA de 64 bits de Sun son más lentas en el
arranque que las de 32 bits porque Sun sigue asumiendo que todas las
máquinas de 64 bits son servidores y sólo han implementado el compilador
de "servidor" (C2) para plataformas de 64 bits. El compilador "cliente" (C1)
produce código más lento, pero compila mucho más rápido. Así que aunque
un programa Java en una JVM de 64 bits puede funcionar mejor en un
periodo grande de tiempo (típico de aplicaciones "servidoras" de ejecución
larga), su tiempo de arranque será probablemente mucho mayor. Para
aplicaciones de vida corta (como el compilador de Java, javac) el
incremento en el tiempo de arranque puede dominar el tiempo de ejecución,
haciendo la JVM de 64 bits más lenta en conjunto.
Debería notarse que la velocidad no es el único factor a considerar en una
comparación de procesadores de 32 bits y 64 bits. Usos como la multitarea,
las pruebas de carga y el clustering (para computación de alto rendimiento)
pueden ser más idóneos para una arquitectura de 64 bits teniendo en
cuenta un desarrollo correcto. Los clusters de 64 bits han sido ampliamente
usados en grandes organizaciones como IBM, Vodafone, HP y Microsoft,
por esta razón.
Pros y contras
Un error común es, que las arquitecturas de 64 bits no son mejores que las
de 32 bits a menos que el ordenador tenga más de 4 GiB de memoria. Esto
no es completamente cierto:
Algunos sistemas operativos reservan porciones de espacio de direcciones
de procesos para uso del SO, reduciendo el espacio total de direcciones
disponible para mapear memoria para programas de usuario. Por ejemplo,
11
las DLLs de Windows XP y los componentes de usuario del SO están
mapeados en cada espacio de direcciones de proceso, dejando sólo entre 2
y 3.8 GiB (dependiendo de la configuración) de espacio de direcciones
disponible, incluso si el ordenador tiene 4 GiB de RAM. Esta restricción no
está presente en el Windows de 64 bits.
El mapeado en memoria de archivos es menos útil con arquitecturas de 32
bits, especialmente con la introducción de tecnología de grabación de DVD
relativamente barata. Un archivo de 4 GiB ya no es inusual y tales archivos
grandes no pueden ser mapeados fácilmente con arquitecturas de 32 bits;
sólo se puede mapear una región del archivo en el espacio de direcciones y
para acceder al archivo usando mapeado de memoria, estas regiones
tendrán que mapearse dentro y fuera del espacio de direcciones según sea
necesario. Esta es una cuestión clave, ya que el mapeado de memoria es
uno de los métodos más eficientes para transportar datos del disco a la
memoria, cuando es correctamente implementado por el SO.
La principal desventaja de las arquitecturas de 64 bits es que, con respecto
a las arquitecturas de 32 bits, los mismos datos ocupan ligeramente más
espacio en memoria (debido al crecimiento de los punteros y posiblemente
otros tipos y al relleno para alineamiento). Esto incrementa los requisitos de
memoria de un proceso dado y puede tener implicaciones para el uso
eficiente de la caché del procesador. Mantener un modelo parcial de 32 bits
es una manera de manejar esto y es en general razonablemente efectivo.
De hecho, el sistema operativo de altas prestaciones Z/OS ha escogido este
enfoque actualmente, requiriendo que el código de programa resida en
varios espacios de direcciones de 32 bits mientras que los objetos de datos
pueden (opcionalmente) residir en regiones de 64 bits.
Actualmente, muchos programas comerciales están construidos como
código de 32 bits, no de 64 bits, así que no pueden obtener ventajas de los
grandes espacios de direcciones de 64 bits o de registros de 64 bits más
anchos y las rutas de datos en procesadores de 64 bits o, en procesadores
x86, de los registros adicionales en el modo de 64 bits. Sin embargo, los
usuarios de sistemas operativos libres o de código abierto han podido
utilizar entornos exclusivos de 64 bits durante años. No todas las
aplicaciones necesitan un gran espacio de direcciones o manipular
elementos de 64 bits, así que no se beneficiarían de los grandes espacios
de direcciones o de los registros más anchos y las rutas de datos; el
principal beneficio para las aplicaciones de 64 bits que no se beneficiarían
de nada de esto sería que las versiones x86 podrían usar más registros.
Disponibilidad del Software
Los sistemas de 64 bits algunas veces carecen de software equivalente
escrito para arquitecturas de 32 bits. Los problemas más graves son
debidos a controladores de dispositivo incompatibles. Aunque gran parte del
software puede ejecutarse en modo de compatibilidad con 32 bits (también
conocido como un modo emulado, p. ej. la Tecnología Microsoft WoW64),
12
normalmente es imposible ejecutar un driver (o un programa similar) en ese
modo ya que habitualmente se ejecuta entre el SO y el hardware, donde no
se puede usar la emulación directa. Muchos paquetes de software de
código abierto pueden simplemente ser compilados desde las fuentes para
trabajar en un entrono de 64 bits en sistemas operativos como Linux. Todo
lo que se necesitaría en este caso es un compilador (normalmente GCC)
para la máquina de 64 bits.
Modelos de datos de 64 bits
La conversión de aplicaciones escritas en lenguajes de alto nivel desde una
arquitectura de 32 bits a una de 64 bits varía en dificultad. Un problema
común recurrente es que algunos programadores asumen que los punteros
tienen la misma longitud que otros tipos de datos. Los programadores
asumen que pueden transferir cantidades entre estos tipos de datos sin
perder información. Estos supuestos se dan realmente en algunas
máquinas de 32 bits (e incluso en algunas de 16 bits), pero no se dan en
máquinas de 64 bits. El lenguaje de programación C y su descendiente el
C++ hacen particularmente fácil cometer este tipo de errores.
Para evitar este error en C y C++, se puede utilizar el operador sizeof para
determinar el tamaño de estos tipos primitivos si se necesitan tomar
decisiones basadas en el tamaño en tiempo de ejecución. También la
cabecera <limits.h> en el estándar C99 y la clase numeric_limits en la
cabecera <limits> en el estándar de C++, dan más información útil; sizeof
sólo devuelve el tamaño en carácteres, lo que es a veces engañoso, porque
el propio tamaño de un carácter (CHAR_BITS) no está definido de la misma
manera en todas las implementaciones de C o C++.
Se necesita ser cuidadoso para usar el tipo ptrdiff_t (en la cabecera
estándar <stddef.h>) para el resultado de restar dos punteros, demasiado
código incorrecto utiliza "int" o "long" en su lugar. Para representar un
puntero (más que un puntero diferencia) como un entero, se usa uintptr_t
cuando está disponible (sólo está definida en C99, pero algunos
compiladores anteriores al estándar lo cumplen ofreciéndolo como una
extensión).
Ni C ni C++ definen la longitud de un puntero, ni de datos int ni long a un
número de bits específicos.
En muchos entornos de programación en máquinas de 32 bits, los punteros,
las variables "int" y las variables "long" tienen todos 32 bits de longitud.
Sin embargo, en muchos entornos de programación en máquinas de 64 bits,
las variables "int" siguen teniendo 32 bits de longitud y los punteros tienen
64 bits de longitud. Son descritos como poseedores de un modelo de datos
LP64. Otra alternativa es el modelo de datos ILP64 en el que los tres tipos
de datos tiene 64 bits de longitud, e incluso SILP64 donde las variables
"short" tienen también 64 bits de longitud[cita requerida]. No obstante, en muchos
casos las modificaciones necesarias son relativamente menores y sencillas,
y muchos programas bien escritos pueden ser simplemente recompilados
para el nuevo entorno sin cambios. Otra alternativa es el modelo de datos
LLP64 que mantiene la compatibilidad con el código de 32 bits dejando
tanto int como long con 32 bits de longitud. "LL" hace referencia al tipo "long
13
long", que tiene al menos 64 bits en todas las plataformas, entornos de 32
bits incluidos. Muchos compiladores de 64 bits actuales usan el modelo
LP64 (incluyendo Solaris, AIX, HP, Linux y los compiladores nativos de
MacOS). El compilador VC++ de Microsoft usa el modelo LLP64 que es
más compatible retroactivamente.
Advierta que la elección de un modelo de programación se hace al compilar,
y varios modelos pueden coexistir en el mismo SO. No obstante,
generalmente suele predominar el modelo de programación elegido por la
API del sistema operativo como modelo primario.
Otro detalle a tener en cuenta es el modelo de datos usado para los
controladores de dispositivos. Los controladores de dispositivos conforman
la mayor parte del código del sistema operativo en la mayoría de los
sistemas operativos modernos (aunque muchos puedan no ser cargados
mientras el sistema operativo se ejecuta). Muchos controladores hacen un
frecuente uso de punteros para manipular datos, y en algunos casos han de
cargar punteros de un tamaño determinado en el hardware que soportan
para realizar DMA. Por ejemplo, un controlador para un dispositivo PCI de
32 bits solicitando al dispositivo transferir datos usando DMA a áreas
superiores de la memoria de una máquina de 64 bits podría no satisfacer las
peticiones del sistema operativo de cargar datos desde el dispositivo a la
memoria por encima de la barrera de los 4 gibibytes, pues los punteros para
esas direcciones no cabrían en los registros DMA del dispositivo. Este
problema se soluciona haciendo que el sistema operativo tenga en cuenta
las restricciones de memoria del dispositivo a la hora de generar peticiones
de DMA a los dispositivos, o bien usando una IOMMU.
Arquitecturas de microprocesador de 64 bits
actuales
Las arquitecturas de microprocesador de 64 bits (a fecha de 2006)
comprenden:
La arquitectura DEC Alpha (véase la cronología de Digital Alpha)
La arquitectura IA-64 de Intel (usada en las CPUs Itanium de Intel)
La arquitectura AMD64 de AMD (preciamente conocida como x86-64), una
versión de 64 bits de la arquitectura x86 (usada en las CPUs Athlon 64,
Opteron, Sempron y Turion 64).
Intel usa ahora el mismo conjunto de instrucciones en los procesadores
Pentium 4 y Xeon nuevos y en los procesadores Core 2 Duo, llamándola
Intel 64 (previamente conocida como EM64T, originalmente IA-32e). Los
fabricantes de software Microsoft y Sun llaman a este conjunto de
instrucciones "x64".
La arquitectura SPARC (de 64 bits desde SPARC V9)
La arquitectura UltraSPARC de Sun
La arquitectura SPARC64 de Fujitsu
14
La arquitectura POWER de IBM (de 64 bits desde POWER3 y las variantes
RS64)
La arquitectura PowerPC de IBM/Motorola (el PowerPC 620 de 64 bits y las
variantes PowerPC 970)
La arquitectura z/Architecture de IBM, usada por los mainframes zSeries y
System z9, una versión de 64 bits de la arquitectura ESA/390
Las arquitecturas MIPS IV, MIPS V, y MIPS64 de MIPS Technologies
La familia PA-RISC de HP (de 64 bits desde el PA-RISC 2.0)
Muchas arquitecturas de procesador de 64 bits pueden ejecutar
nativamente código de la versión de 32 bits de la arquitectura sin ninguna
penalización en el rendimiento. Este tipo de soporte se conoce
frecuentemente como soporte biarquitectura o más generalmente como
soporte multiarquitectura.
Más allá de los 64 bits
A fecha de 2007, las palabras de 64 bits parecen ser suficientes para la
mayoría de usos prácticos. Aún así, debería mencionarse que el
System/370 de IBM usa números de coma flotante de 128 bits, y muchos
procesadores modernos incluyen registros de coma flotante de 128 bits. Sin
embargo, el System/370 era notable, en que también usaba números
decimales de longitud variable de hasta 16 bytes de longitud (por ejemplo
de 128 bits).
Imágenes
En el mundo de la imagen digital, 64 bits hace referencia a imágenes de 48
bits con un canal alfa de 16 bits.
15