universidad nacional...
Post on 20-Sep-2018
229 Views
Preview:
TRANSCRIPT
UNIVERSIDAD NACIONAL DÉ'INGENIERÍA
FACUL TAO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
COMPARACIÓN DE LOS PROCESADORES
INTEL XEON MP Y AMD OPTERON.
INFORME DE SUFICIENCIA
PARA OPTAR EL TÍTULO PROFESIONAL DE:
INGENIERO ELECTRÓNICO
PRESENTADO POR
CARLOS FERNANDO MALDONADO BOHORQUES
PROMOCIÓN 1991 - 1
LIMA- PERÚ 2005
SUMARIO
En el presente informe se comparan las tecnologías empleadas en los
procesadores lntel Xeon MP y el AMO Opteron. Se describen los principales
componentes de un procesador haciendo incidencia en aquellas innovaciones
tecnológicas emergentes o que tienen vigencia en la actualidad. A continuación se
describen las características más saltantes de ambos procesadores, para pasar
finalmente a compararlos, confrontando sus tecnologías, empleando bechmarks y
exponiendo un conjunto de criterios que pueden ser de utilidad, sobre todo si se
está seleccionando una nueva plataforma.
ÍNDICE
PRÓLOGO 1
CAPÍTULO 1 3
INTRODUCCIÓN 3
1.1 Historia del ordenador 3
1.2 Orígenes y fundamentos del ordenador 4
1.3 Evolución de los ordenadores 6
CAPÍTULO 11 8
ESTRUCTURA BÁSICA DE UN ORDENADOR 8
2.1 La CPU 8
2.2 La memoria 10
2.3 La unidad de E/S 16
2.3.1 Funciones del módulo E/S 18
2.3.2 Técnicas de E/S 19
CAPÍTULO 111 26
ORGANIZACIÓN DEL PROCSADOR 26
3.1 Estructura del procesador 26
3.1.1 Registros del procesador 27
3.1.2 Unidad Aritmético-Lógica (ALU) 31
3.1.3 Unidad de Control 33
3.2 Estrategia de organización 42
3.2.1 Segmentación de instrucciones 42
3.2.2 Tratamiento de saltos 46
VI
3.2.3 Procesador superescalar 50
3.2.4 Procesamiento paralelo 60
3.2.5 Multiprocesadores simétricos (SMP) 64
3.2.6 Coherencia de cache 69
3.2.7 Clusters 75
3.2.8 Computación vectorial 80
3.2.9 Lo que nos depara el futuro 81
CAPÍTULO IV 84
PROCESADOR AMD OPTERON 84
4.1 Introducción 84
4.2 Principales Características 86
4.2.1 La arquitectura AMO 64 (Hammer ó x86-54) 88
4.2.2 Controlador de memoria ODR ORAM integrado 90
4.2.3 Otras características 92
4.3 Tecnología Hyper Transport 93
4.4 La serie chipset AMO-8000 96
4.5 Mainboards desarrolladas con AMO Opteron 98
4.6 Sistemas Operativos 100
CAPÍTULO V 101
PROCESADOR INTEL XEON MP 101
5.1 Introducción 101
5.2 Principales características 102
5.3 Tecnología Hyper Threading 107
5.4 Chipsets para servidores lntel 109
5.5 Mainboards desarrolladas con lntel Xeon MP 112
5.6 Sistemas Operativos
CAPÍTULO VI
COMPARACIÓN DE PROCESADORES
6.1 Introducción
6.2 Comparación de tecnologias
6.3 Comparación mediante benchmarks
6.4 Evaluación de estrategias de fabricantes
6.5 Tendencias del mercado en servidores de 64 bits
CONCLUSIONES Y RECOMENDACIONES
APÉNDICE A : OTROS BENCHMARKS SPEC
BIBLIOGRAFÍA
VII
114
115
115
115
116
121
126
128
131
132
136
ÍNDICE DE ILUSTRACIONES
Figura 1.1 Estructura básica de la máquina de John von Neumann 5
Figura 2.1 Interacción entre memoria principal y cache 13
Figura 2.2 Diagrama de bloques de un módulo E/S 17
Figura 3.1 Ciclo de captación de una instrucción 35
Figura 3.2 Diagrama de estados de un ciclo de instrucción 42
Figura 3.3 Diagrama de tratamiento de saltos 49
Figura 3.4 Organización superescalar 51
Figura 3.5 Comparación de esquemas superescalar y super-segmentado 53
Figura 3.6 Procesamiento superescalar 60
Figura 3.7 Tipos de organización de computadores 63
Figura 3.8 Organización de un multiprocesador simétrico 66
Figura 3.9 Memoria multipuerto 67
Figura 3.1 O Tipos de configuración de clusters 77
Figura 4.1 Arquitectura del procesador AMD Opteron 88
Figura 4.2 Arquitectura del sistema Hyper Transport 94
Figura 6.1 Benchmark CFP2000 de servidor con procesador lntel Xeon MP 123
Figura 6.2 Benchmark CFP2000 de servidor con procesador AMD Opteron 124
Figura 6.3 Benchmark CINT2000 de servidor con procesador lntel Xeon MP 125
Figura 6.4 Benchmark CINT2000 de servidor con procesador AMD Opteron 126
PRÓLOGO
No hay duda que el desarrollo alcanzado por los ordenadores en general, ha
permitido su aplicación en casi todas las actividades del quehacer humano. Dentro
de este desarrollo lo más representativo lo constituyen los microprocesadores, no
sólo porque en ellos se emplean las técnicas más sofisticadas para su diseño y
producción, sino porque marcan la pauta del desarrollo tecnológico en la
implementación de nuevos ordenadores, desde los personales hasta los de rango
medio y alto.
Pero, ¿en que consiste el desarrollo alcanzado?, es algo que se tratará de
describir en el presente informe, exponiendo tan claro como sea posible, la
tecnología y las características más saltantes de los procesadores hoy en día. A
través de la comparación de los microprocesadores lntel Xeon MP y AMO Opteron,
que son las principales opciones de procesadores que ofrecen sendos fabricantes
al mercado para el diseño y fabricación de servidores, se podrá poner de manifiesto
la incidencia que tienen cada una de las tecnologías empleadas en el rendimiento
final de un computador.
En el capítulo I se hace una reseña histórica sobre los orígenes,
fundamentos y evolución de las computadoras. En el capítulo II se describe muy
brevemente y a modo de introducción la estructura básica de una computadora. En
el capítulo III se ahonda en la estructura interna de los microprocesadores,
2
describiendo cada una de sus partes y las tecnologías más saltantes empleadas en
cada una de ellas. En este capítulo también se describen las estrategias de
organización interna más empleadas hoy en día como, la segmentación de
instrucciones, el tratamiento de saltos, el procesamiento paralelo, la coherencia de
cache, entre otras.
En los capítulos IV y V se describen las principales características y
tecnologías empleadas en los procesadores AMO Opteron e lntel Xeon MP
respectivamente. También se describen los principales chipsets y mainboards
desarrollados para cada procesador y los sistemas operativos que los soportan.
Finalmente en el capítulo VI se comparan las tecnologías y se muestran los
resultados de las pruebas de rendimiento realizadas a ambos procesadores
haciendo uso del SPEC CPU 2000. Asimismo, se hace una evaluación de las
estrategias de sendos fabricantes y se exponen las tendencias del mercado de
servidores de 64 bits.
1.1 Historia del ordenador
CAPÍTULO 1
INTRODUCIÓN
Es importante empezar el presente informe con una breve historia sobre la
evolución de los ordenadores. Esta historia además de ser interesante por sí
misma, nos permitirá tener una visión general de la estructura y funcionamiento de
los ordenadores. La evolución de los ordenadores ha estado siempre ligada al
desarrollo de la electrónica y últimamente al de la microelectrónica, la que ha tenido
como una de sus características más importantes, el incremento constante del
número de componentes contenidos en un sólo chip de circuito integrado.
Dentro de los aspectos más saltantes de la evolución de los ordenadores
están, el incremento de la velocidad del procesador, el aumento del tamaño de la
memoria y el aumento de la capacidad de Entrada/Salida, siendo el primero de ellos
el de mayor relieve. A su vez, el factor responsable del gran aumento de velocidad
del procesador ha sido hasta hace poco la reducción del tamaño de sus
componentes, siendo ahora los diseños cada vez más sofisticados de su
arquitectura os que han permitido incrementar notablemente sus prestaciones.
Un asunto crítico en el diseño de ordenadores, es hacer un balance de las
prestaciones de los distintos elementos, de forma que la ganancia en prestaciones
en uno de ellos no afecte la de los demás. Una muestra de ello se da en el hecho
4
de que, la velocidad del procesador ha aumentado más rápidamente que el tiempo
de acceso a memoria, teniéndose que crear técnicas para compensar este
desacople, como el uso de memorias caché, caminos de datos más anchos de la
memoria al procesador y más circuitos de memoria inteligente. Asimismo, se ha
tenido que modificar la organización del procesador incluyendo un fuerte uso de
técnicas de encauzamiento, de ejecución paralela y de ejecución especulativa,
todas ellas orientadas a mantener al procesador ocupado la mayor cantidad de
tiempo posible.
1.2 Orígenes y fundamentos del ordenador
Con el descubrimiento de la válvula de vacío en el año 1904, Fleming dio
inicio a la historia de la electrónica, pero fue tres décadas después que recién se
hizo uso de la válvula en la primera generación de ordenadores. Por entonces cada
máquina era construida y cableada para un propósito específico.
Fue en 1943 que se dio inicio a la construcción del primer computador
electrónico de propósito general denominado ENIAC (Electronic Numerical
lntegrator and Computar), cuyo diseño y construcción estuvo a cargo de John
Mauchly y John Presper Eckert de la Universidad de Pennsylvania, con el auspicio
del Ejército de los Estados Unidos. Este computador se terminó de construir en
1946 y continuó trabajando hasta 1955. En el se emplearon 18,000 válvulas de
vacío, pesaba 30 toneladas, ocupaba 15,000 pies cuadrados, consumía 140
Kilovatios y era capaz de realizar 5,000 sumas por segundo. Uno de los mayores
inconvenientes que presentaba era que tenía que ser programada manualmente
mediante conmutadores y conectando y desconectando cables. Era una máquina
decimal y no binaria.
5
El matemático húngaro John von Neumann (1903-1957) que era asesor del
proyecto ENIAC, en 1945 publica por primera vez su idea del concepto de
programa-almacenado dentro de una propuesta para la construcción de un nuevo
ordenador, el EDVAC (Electronic Discrete Variable Computer), pero fue en 1946
cuando Neumann y sus colegas del Instituto para Estudios Avanzados de
Princeton, iniciaron el diseño de un ordenador de programa-almacenado que se
convertiría en el prototipo de toda una serie de ordenadores de propósito general, el
cual denominaron IAS y fuera culminado en 1952.
L.'nidml de
Conln°'
LJnitlnd Arilmc:t ioo
Í.[\!!Íc:.'l
UC'P
�lr1111C1ru l'rim:ipnl
t:ni,lml
Figura 1.1 Estructura básica de la máquina de John von Neumann
La propuesta de este nuevo ordenador comprendía una Unidad Central de
Proceso (CPU), una Memoria Principal y una Unidad de E/S, a su vez la CPU
estaba compuesta por la Unidad de Control y la Unidad Aritmético-Lógica, todos
ellos interconectados mediante un único flujo de datos e instrucciones. Además de
la idea de programa almacenado, introduce la idea de ruptura secuencial. Hasta
entonces las instrucciones se introducían una a una y se ejecutaban de manera
secuencial, según como ingresaban. Cuando se introducía un programa para su
ejecución, había que introducirlo íntegramente y junto con él todos los datos. Era
6
imposible alterar la secuencia de las órdenes. Hasta ese momento no se
almacenaba nada en memoria. Con Neumann se pasa a guardar el programa en
memoria y se introducen los datos durante su ejecución. Dado que todas las
instrucciones están disponibles en memoria, la siguiente instrucción a ejecutarse
podría ser cualquiera de ellas.
Otro aporte muy importante fue la utilización del sistema de numeración
binario que simplificaba enormemente los problemas de implementación electrónica
de las operaciones y de las funciones lógicas, a la vez que proporcionaba una
mayor inmunidad a los fallos (electrónica digital).
Salvo raras excepciones, los ordenadores de hoy en día mantienen la
misma estructura y principios de funcionamiento.
1.3 Evolución de los ordenadores
Cuando en 1946se culmina la construcción del ENIAC, el circuito básico fue
el flip-flop y la programación se hacía en lenguaje de máquina a través de cableado
externo. Su construcción demoró 3 años y se utilizó durante 1 O años.
Como consecuencia del descubrimiento del transistor, en 1948, se da inicio
a una nueva generación de ordenadores, reduciéndose de manera considerable el
tamaño y consumo de energía. Aparecen los primeros elementos de soporte de las
memorias, etapa en la que además de las cintas perforadas, se introdujeron las
ferritas, los discos y las cintas magnéticas. Como lenguaje de programación se
comienza a emplear el FORTRAN.
Con el invento del circuito integrado en 1960, comienza realmente una era
gloriosa en la historia del ordenador, que pasó a ser mucho más pequeño, más
fiable, más potente y de menor consumo de energía. Comienza el empleo de
7
memorias con semiconductores, se reducen los ciclos de instrucción alcanzándose
el orden de los nano-segundos, surgen la multiprogramación, la programación en
tiempo real y aparecen los sistemas operativos.
Hacia el año 1971, INTEL fabrica una Unidad Central de Proceso en un sólo
chip LSI (Large Scale lntegration) utilizando tecnología MOS. Comenzaba así la
gran carrera en busca de lo más rápido y más pequeño; rápidamente el mundo del
ordenador empezó a ser accesible a pequeñas empresas e incluso a nivel
doméstico: es el Boom de los microordenadores personales.
2.1 La CPU
CAPÍTULO 11
ESTRUCTURA BÁSICA DE UN ORDENADOR
En su forma más simple, un sistema de computadora cuenta con una unidad
que ejecuta instrucciones de programas. Esta unidad se comunica con otros
subsistemas dentro de la computadora, y a menudo controla su operación. Debido
al papel central de tal unidad se le conoce como unidad central de procesamiento, o
CPU (Central Processing Unit). Dentro de muchas computadoras, un subsistema,
como una unidad de entrada/salida, o un dispositivo de almacenamiento masivo,
puede incorporar una unidad de procesamiento propia. Tal unidad de
procesamiento, aunque es central para su propio subsistema, resulta claro que no
es "central" para el sistema de computadora en su conjunto. Sin embargo, los
principios del diseño y operación de una CPU son independientes de su posición en
un sistema de computadora. La organización del hardware permite a una CPU
realizar su función principal: traer instrucciones desde la memoria y ejecutarlas.
En ordenadores más grandes (MainFrames), la CPU puede estar formada
por varios procesadores interconectados que interactúan entre sí para capturar
conjuntamente los datos de entrada y generar los datos de salida. Otra
configuración posible es un procesador principal con microprocesadores específicos
9
adicionales, que se dedican a realizar muy rápido trabajos parciales. De esta
manera se descarga al procesador principal de parte del trabajo y se puede dedicar
a las tareas más críticas como por ejemplo, proceso de datos en tiempo real.
Estructuras más complicadas pueden ser necesarias para garantizar sistemas
tolerantes a fallas, en los que son necesarios grupos ("clusters") de procesadores
redundantes, para garantizar que una falla en uno de los procesador no afecte al
proceso global que se este ejecutando.
Las posibilidades actuales de integración hacen viable que tanto la CPU
como la memoria estén prácticamente incluidos en el mismo circuito integrado
("chip"). De este modo se acelera el tratamiento de datos incorporando
internamente una memoria de acceso rápido (cache de nivel 1 y 2, L 1 y L2, e
incluso el nivel siguiente, L3) comunicada directamente con el microprocesador. Por
otro lado, han desaparecido elementos externos que realizaban parte del trabajo
de cálculo de la CPU y que se podían encontrar en ordenadores más antiguos,
tales como los coprocesadores matemáticos. Estos componentes opcionales eran
un complemento del microprocesador principal, y estaban especializados en
realizar operaciones aritméticas con decimales. Actualmente ya están incluidos
como una parte del procesador principal e integrado en el mismo circuito.
Un algoritmo o programa consiste de varios pasos o instrucciones que se
deben realizar en una secuencia específica. Para implantar tal algoritmo en una
computadora, estos pasos se descomponen en pasos más pequeños, cada uno de
los cuales representa una instrucción de máquina. La secuencia de instrucciones
resultante es un programa en lenguaje de máquina que representa al algoritmo en
cuestión. El mismo enfoque general se utiliza para permitir a la computadora
realizar funciones especificadas por instrucciones individuales de máquina. Esto es,
10
cada una de estas instrucciones se ejecuta realizando una secuencia de
operaciones más rudimentarias.
En resumen el CPU, recibe instrucciones y datos, y tiene por misión ejecutar
secuencialmente instrucciones, con datos almacenados en la memoria o tomados
de la unidad de Entrada y Salida, para lo cual, debe efectuar las operaciones
aritmético-lógicas, gobernar el resto de componentes del sistema y controlar la
transferencia de datos.
2.2 La memoria
La memoria brinda al procesador almacenamiento temporal para programas
y datos, los cuales deben transferirse a la memoria desde un dispositivo de entrada
o desde el almacenamiento secundario, antes de que puedan procesarse.
Aunque parezca sencilla, la memoria es quizás, la que presenta la más
amplia diversidad tecnologías, estructuras, prestaciones y costos, que cualquier
otra parte del ordenador. Ninguna tecnología es óptima, por lo que un ordenador
debe contar necesariamente con una jerarquía de subsistemas de memoria,
algunos internos (directamente accesibles por el computador) y otros externos
(accesibles por el ordenador a través de módulos de entrada/salida)
Una fo�ma práctica de abordar el tema de las memorias, es clasificándolas
según sus características claves, como son:
Ubicación: Indica si la memoria es interna como los registros que necesita el
procesador o la memoria que requiere la unidad de control, o externa como las
unidades de cinta, disco magnético ó discos ópticos.
Capacidad: Generalmente expresadas en bytes o en palabras para las
memorias internas y sólo en bytes para las externas.
11
Unidad de transferencia: Es el número de bits que se leen o escriben en
memoria a la vez. Para la memoria interna es el número de líneas de entrada/salida
al módulo de memoria y para la externa generalmente es en bloques, que es de
mayor dimensión que la palabra.
Método de acceso: Puede ser secuencial como en el caso de las cintas,
directo como el de los discos, aleatorio como la memoria principal, y asociativa
como en cierta memoria cache.
Prestaciones: Se utilizan tres parámetros de medida, tiempo de acceso que
para el caso de memorias de acceso aleatorio es el tiempo que tarda en realizar
una operación de lectura o escritura y para externas es el tiempo en el que el
mecanismo de lectura/escritura se sitúa en la posición deseada. Otro parámetro es
el ciclo de memoria, utilizado en las memorias de acceso aleatorio y es el tiempo
necesario antes de que se pueda iniciar un siguiente acceso a memoria. La
velocidad de transferencia es otro parámetro que establece a que velocidad se
pueden transferir datos desde o hacia la memoria.
Medio físico: Los más usados actualmente son los semiconductores, los
medios magnéticos y los ópticos. Un aspecto importante es que los medios
magnéticos, los ópticos y algunas memorias semiconductoras son no volátiles, es
decir no se pierde la información cuando se desconecta la alimentación eléctrica.
Todo diseñador tendrá siempre la necesidad de resolver el compromiso
entre costo, capacidad y tiempo de acceso, donde se cumple que, a menor tiempo
de acceso mayor costo por bit, a mayor capacidad mayor costo por bit y mayor
capacidad mayor tiempo de acceso.
12
Una clasificación de las memorias semiconductoras es la que se muestra a
continuación:
Tipo de Memoria Clase Mecanismos de escritura Borrado
PROM borrable (EPROM) Luz ultravioleta,
chip completo
PROM borrable Memoria de Eléctricamente
electricamente (EEPROM) sobretodo-lectura por bloques
Eléctricamente
Electricamente
Memoria FLASH
por bytes
ROM programable
(PROM) Memoria de No posible
Memoria de sólo solo lectura
Mediante máscaras
lectura (ROM)
Memoria de acceso Memoria de Eléctricamente
Electricamente
aleatorio (RAM) lectura/escritura por bytes
Tabla 2. 1 Clasificación de memorias semiconductoras
Volatilidad
No Volátil
Volatil
La respuesta a éste dilema no es contar con un solo componente de
memoria sino emplear una jerarquía de memoria, donde se cumple que al
descender de jerarquía se disminuye el costo por bit, aumenta la capacidad,
aumenta el tiempo de acceso y disminuye la frecuencia de accesos por parte del
procesador. Así pues las memorias más pequeñas, más rápidas y mas costosas se
complementan con las más grandes, más económicas y mas lentas. Sin embargo,
la clave del éxito está en la disminución de la frecuencia de acceso a las memorias
más lentas.
13
Toda memoria semiconductora está sujeta a errores, permanentes (físicos)
o transitorios u ocasionales, generalmente producidos por problemas en al fuente
de alimentación o por la presencia de partículas alfa. La mayoría de los sistemas
incluyen actualmente una lógica para detectar y corregir errores, la cual, cuando se
van a escribir los datos en la memoria, realiza un cálculo con los datos cuyo
resultado se almacena conjuntamente con los datos. Al momento de leer los datos,
vuelve a realizar el cálculo y lo compara con el que estaba almacenado, pudiendo
de esta manera detectar si hay un error y dependiendo de la lógica y el número de
bits empleados, podrá corregir un máximo número de bits errados.
Un tipo de memoria semiconductora algo especial y crítica lo constituyen las
memorias cache. Su objetivo es lograr que el sistema de memoria, compuesto por
la memoria principal de gran tamaño pero lenta y la memoria cache más rápida
pero pequeña, sea en conjunto lo más rápida posible. La cache contiene una copia
de algunos bloques de la memoria principal. El procesador primero comprueba si la
palabra que requiere está en la memoria cache, sino lo está, se transfiere el bloque
que contiene la palabra requerida de la memoria principal a una línea de la memoria
cache y desde ésta la palabra es entregada al procesador. Es probable que futuras
referencias a memoria hechas por el procesador, sean a palabras contenidas en el
mismo bloque.
CPU
Transferen::ia. de palabn:s
Transfere:n:i.a.de bloque:s
Memoria
principal
Figura 2. 1 Interacción entre memoria principal y cache
14
Sin duda uno de los cuellos de botella más críticos de todo sistema
ordenador que utiliza procesadores de altas prestaciones es la interfaz con la
memoria principal, cuyo bloque básico de construcción por más de 20 años ha sido
el chip DRAM asíncrono, durante los cuales su arquitectura interna no ha sufrido
cambios significativos, por lo que como hemos visto, ha sido necesario insertar uno
ó más bloques de memoria cache entre ésta y el procesador.
Sin embargo, en los últimos años se han experimentado y se encuentran en
producción diversas versiones mejoradas de la arquitectura básica de la DRAM.
Dentro de estas destacan, la DRAM Mejorada (EDRAM) que integra una pequeña
cache SRAM de 2 Kbytes para almacenar la última fila leída y permite operaciones
de refresco y escritura en paralelo con acceso de lectura al cache. La DRAM Cache
(CDRAM), similar a la EDRAM, cuenta con una verdadera cache SRAM de 16
Kbytes que permite accesos aleatorios efectivos, pudiendo ser utilizada además
como buffer para accesos en serie a un bloque de datos.
Otra versión de arquitectura mejorada, corresponde a la DRAM Síncrona
(SDRAM), que intercambia datos con el procesador de manera sincronizada a
través de la señal de reloj del sistema y a la velocidad tope del bus procesador /
memoria sin estados de espera. Al conocerse el número de ciclos de reloj que le
tomará responder a la SDRAM, el procesador podrá realizar sin riesgo otras tareas.
Cuenta con un modo de ráfagas que es útil cuando los bits a acceder están en
secuencia y en la misma fila, como en el procesamiento de textos, hojas de cálculo
y multimedia.
Para la arquitectura de las computadoras, es importante asegurar que todos
los subsistemas puedan soportarse unos a otros, sin embargo por algún tiempo el
intercambio de información entre el CPU y la memoria se constituyó en un cuello de
15
botella, haciendo que la perfomance de todo el sistema decayera. Ha sido
necesario desarrollar nuevas tecnologías de construcción de memorias para poder
acortar las diferencias con la velocidad de los procesadores, que ha ido creciendo
de manera más rápida. Dentro de éstas nuevas tecnologías tenemos, la Rambus
DRAM (RDRAM), cuyos módulos son conocidos como RIMM (Rambus In-fine
Memory Modules) y las DDR SDRAM (Double Data Rate Synchronous DRAM).
La RDRAM aborda el problema del ancho de banda llegando a velocidades
de transferencia de datos de 800, 1066 y 1600 Mhz. Sus anchos de banda pico son
de 3.2, 4.2, 9.5 y 12.8 GB/s. Su palabra es de 2 y 4 bytes en arreglos de 2 y 4
canales. Cuentan con encapsulado vertical y terminales en un lateral. Lo que hace
posible esta velocidad en el bus es una especificación muy precisa de las
impedancias, la temporización y las señales. A diferencia de las DRAM
convencionales que utilizan señales explícitas RAS, CAS, R/W y CE, las peticiones
de memoria las hace utilizando un protocolo asíncrono orientado a bloques, a
través del bus de alta velocidad indicando, la dirección deseada, el tipo de
operación y el número de bytes.
El sistema de memoria DDR SDRAM es construido en base a múltiples
módulos de memoria trabajando en paralelo en un bus de datos ancho.
Teóricamente duplican su velocidad enviando data en cada lado de de la señal de
reloj sin incrementar su frecuencia. Las líneas para el direccionamiento de filas y
columnas son compartidas ó multiplexadas para localizar una posición de memoria
en un arreglo bidimensional. Algunos de sus parámetros típicos son: velocidad de
transferencia de 200,266,333 y 4000 Mhz. y ancho de banda pico de 1.6, 2.1, 2.7 y
3.2 GB/s. Su palabra es de 8 bytes.
2.3 La Unidad de Entrada/ Salida
16
La unidad de E/S es la interfaz del ordenador con el mundo exterior y su
arquitectura debe ser tal que le permita controlar de manera sistémica las
interacciones con ese mundo exterior. Para esto debe proporcionar al sistema
operativo la información que necesita, para que pueda gestionar de manera eficaz
la actividad de E/S. Existen tres formas básicas de operar las E/S: la programada,
mediante interrupciones y el acceso directo a memoria (DMA, Direct Memory
Access).
Cada módulo de E/S se conecta al bus del sistema, por medio del cual
puede comunicarse tanto con el procesador como con la memoria. Cada uno de
estos módulos puede controlar a su vez uno o más dispositivos periféricos. Además
de cumplir con ciertos estándares para las conexiones físicas y eléctricas, posee
cierta inteligencia para permitir la comunicación entre el periférico y el bus del
sistema.
La función de los módulos de E/S suele ser algo especializada para ciertos
tipos de dispositivos y su existencia tiene como origen el hecho de que existen una
gran variedad de periféricos con formas de funcionamiento diferentes, cuyas lógicas
de control sería, por decir lo menos, poco eficiente que estuviera en manos
directamente del procesador, entre otras razones, porque los periféricos suelen ser
demasiado lentos para el procesador y tienen una variedad muy elevada de
formatos y tamaños de palabra.
Una posible clasificación de los dispositivos externos seria en tres
categorías: (1) La interacción con humanos, como son los terminales de video y las
impresoras. (2) De interacción con maquinas, como son los discos magnéticos, las
unidades de cintas, los sensores y actuadores. (3) Los de comunicación, que
17
permiten la comunicación con dispositivos remotos, los cuales podrían ser un
terminal u otro computador.
En términos generales un dispositivo externo realiza su conexión con el
módulo E/S a través de señales de control, estado y datos, como se muestra en el
diagrama de bloques de la Figura 3. Los datos se intercambian en conjunto de bits
denominados palabras que son enviados y recibidos desde el módulo. Las señales
de control determinan la función que debe realizar el dispositivo, tal como enviar
datos al módulo E/S o aceptar datos desde este, indicar el estado en que se
encuentra, o realizar una función especifica del dispositivo como, srtuar el cabezal
de un disco. Las señales de estado indican al módulo de E/Sel estado en que se
encuentra el dispositivo.
Imemzal
Bus debiste�
Bus de �tos
Bus de dü,ecc:iones
Busde
c:orilrol
Buffer de datos Lógica.del interfaz a
dispositivo
Registro de esta.do' con1rol externo
.
.
•
Lógica del
§}�l+interfaz a
s dispositivo externo
Figura 2.2 Diagrama de bloques de un módulo de E/S
Imrfaza D:ispositno exil!mo
Daros
... Estado
Control
Dab
Estado
Conlrol
2.3.1 Funciones del módulo E/S
18
Las funciones de un módulo de E/S se pueden clasificar, en las siguientes
categorías: (1) Control y temporización, para coordinar el trafico entre los recursos
internos del ordenador y los dispositivos externos a través de un bus, lo que implica
uno o más arbitrajes del bus. (2) Comunicación con el procesador, que implica
decodificación de órdenes del procesador que le llegan por el bus de control como,
leer un sector para el caso de un controlador de disco. (3) Intercambio de datos a
través del bus de datos, informar sobre su estado o situaciones de error al
procesador y el reconocimiento de la dirección de si mismo y de los periféricos que
controla.
Otras funciones como: (a) Comunicarse con los dispositivos intercambiando
órdenes, información del estado y datos, a través de una lógica más especifica y
compleja que en su comunicación con el bus. (b) Almacenamiento temporal de
datos (data buffering) debido a que tanto el procesador como la memoria principal
poseen velocidades de varias órdenes de magnitud superior a la de los periféricos;
como es el caso del envío de ráfagas rápidas que realiza la memoria cuando envía
información al módulo de E/S, quien lo almacena temporalmente para después
enviárselo al periférico a la velocidad de éste. (c) Responsable de la detección y
comunicación de errores de sus periféricos al procesador, como papel atascado en
una impresora, pista de disco en mal estado o detección de errores en transmisión
de bits.
La complejidad de los módulos E/S y el número de dispositivos externos que
controlan varían considerablemente. Sin embargo es posible identificar algunos
bloques funcionales comunes como el interfaz al bus del sistema, los registros de
estado, los registros de control con las órdenes del procesador, la lógica de E/S
19
para la interfaz con los dispositivos que controla y la interfaz para cada uno de los
dispositivos externos. El funcionamiento del módulo de E/S permite que el
procesador vea de una forma simplificada una gran variedad de dispositivos con
detalles de temporización, formatos de datos y elementos electromecánicos que
son ocultados por el módulo E/S y de esta manera el procesador funcione
únicamente en términos de lectura y escritura u ordenes de abrir y cerrar archivos.
2.3.2 Técnicas de E/5
Se pueden distinguir tres técnicas para las operaciones de E/S como son: la
E/S programada, en la que los datos se intercambian entre el módulo y el
procesador con dedicación exclusiva del procesador; la E/S mediante
interrupciones, en la que el módulo avisa al procesador en el momento en que ha
terminado, por lo que la participación del procesador es parcial; y el acceso directo
a memoria (DMA), en la que el módulo se encarga de cargar a la memoria desde el
periférico sin la participación del procesador. A continuación se detallan cada uno
de éstas técnicas.
E/5 programadas
En la E/S programada, el control directo y permanente lo tiene el programa
que solicita la operación, incluyendo la comprobación del estado del dispositivo, el
envío de órdenes de lectura/escritura y la transferencia del dato. Cuando el
procesador envía una orden al modulo de E/S, éste realiza la acción solicitada y
después activa los bits apropiados en el registro de estado del módulo y no realiza
ninguna otra acción para avisar al procesador, por lo que el procesador debe
comprobar periódicamente el estado del módulo de E/S hasta que encuentra que la
operación ha terminado. Lo que implica que el procesador desperdicie su tiempo
20
esperando a que el módulo E/S termine la operación, tiempo en el cual el
procesador podría haber realizado miles o millones de operaciones.
Al ejecutar una instrucción relacionada con una E/S, el procesador
proporciona la dirección de un módulo de E/S y la del dispositivo externo, y una
orden de E/S. Estas órdenes pueden ser: de control para activar el periférico e
indicarle que hacer; de test para comprobar diversas condiciones de estado del
módulo de E/S y sus periféricos; de lectura para que capte un dato de un periférico
y lo sitúe en su buffer interno; de escritura para que capte un dato del bus de datos
y posteriormente lo transmita al periférico.
Existe una estrecha correspondencia entre las instrucciones de E/S que el
procesador ejecuta o que el procesador capta de la memoria y las órdenes de E/S
que envía al módulo E/S al ejecutar las instrucciones. Cada dispositivo tiene
asociado un identificar único o dirección. Cuando el procesador envía una orden de
E/S, ésta contiene la dirección del dispositivo deseado, la cual debe ser interpretada
por el módulo de E/S para determinar si la orden es para él. Cuando el procesador,
la memoria principal y los módulos de E/S comparten un bus común, se pueden dar
dos modos de direccionamiento: el asignado en memoria, en el cual existe un único
espacio de direcciones para las localidades de memoria y los dispositivos de E/S y
el direccionamiento aislado en el que un rango completo de direcciones esta
disponible para las localidades de memoria y otro para los módulos de E/S.
E/S mediante interrupciones
A diferencia de la E/S programada, una vez que el procesador envía una
orden de E/S a un módulo puede continuar realizando alguna otra labor útil, y no
esperar a que el módulo termine. Una vez que el módulo termine y que esté listo
para intercambiar datos con el procesador lo interrumpirá, el procesador
21
intercambiará información con el módulo y luego continuará con la siguiente
instrucción del mismo programa o de otro programa.
El módulo de E/S, en el caso de una orden READ del procesador, lee desde
el periférico asociado, lo coloca en su registro de datos y envía una interrupción al
procesador a través de la línea de control. Cuando el procesador responde
solicitándole su dato, el módulo lo coloca en el bus de datos y pasa al estado de
preparado READY para otra operación de E/S.
Desde el punto de vista del procesador, una vez que envía la orden READ
pasa a realizar otro trabajo, es decir podría estar ejecutando varios programas a la
vez, pero al final de cada ciclo de instrucción comprueba las interrupciones. Al
comprobar la existencia de alguna guarda el contexto del programa que está
ejecutando, es decir el contador del programa y los registros del procesador, luego
lee la palabra de datos del módulo de E/S y la almacena en memoria. A
continuación recupera el contexto del programa que estaba ejecutando y continúa.
Cuando el módulo de E/S termina de ejecutar una orden y envía su
interrupción al procesador, se disparan una serie de eventos en el procesador tanto
a nivel de hardware como de software, los que se describen a continuación:
• El procesador termina la ejecución de la instrucción en curso y examina
si tiene interrupciones.
• EL procesador al comprobar que hay interrupciones, envía una señal de
reconocimiento al dispositivo que originó la interrupción y este desactiva
su señal de interrupción.
• El procesador transfiere el control a la rutina de interrupción
correspondiente, pero antes guarda la información necesaria para luego
22
poder continuar donde se quedó. Ésta información es (a) la Palabra de
Estado del Programa (PSW) y (b) posición de la siguiente instrucción.
• El procesador carga el contador de programa con la posición de inicio del
programa de gestión de la interrupción. Dependiendo de la arquitectura
del procesador y del sistema operativo puede haber un programa por
cada tipo de interrupción ó uno por cada dispositivo y tipo de
interrupción.
• Además del PSW y el contador de programa interrumpido, el procesador
guarda los contenidos de sus registros en la pila de control. Luego hará
que el puntero de la pila apunte a una nueva cabecera de pila y que el
contador de programa apunte al comienzo de la rutina de servicio de
interrupción.
• Durante la ejecución de la rutina de gestión de interrupción incluirá un
examen al estado de la operación de E/S que causó la interrupción.
También puede enviar órdenes de reconocimiento adicionales.
• Cuando termina el procesamiento de la interrupción, los valores de los
registros almacenados se recuperan de la pila y se vuelven a almacenar
en los registros respectivos.
• Como último paso recupera los valores del PSW y del contador de
programa desde la pila. Como resultado de esto se ejecutará la siguiente
instrucción del programa que se interrumpió.
No debe confundirse la atención de una interrupción con la llamada a una
subrutina pues, la primera puede presentarse en cualquier momento y por
consiguiente en cualquier punto de la ejecución del programa usuario. Los dos
23
programas pueden no tener nada en común y pueden pertenecer a distintos
usuarios.
Acceso directo a memoria
Aunque la E/S con interrupciones es más eficiente que la programada lo
hace a costa de una intervención activa del procesador en la transferencia de datos.
Por tanto, en ambas formas de E/S existen los inconvenientes de que la velocidad
de transferencia de E/S está limitada por la velocidad a la cual el procesador puede
comprobar y dar servicio a un dispositivo, y de que el procesador debe dedicarse a
la gestión de las transferencias. Si considerásemos la transferencia de un bloque de
datos, la E/S sería la más rápida pero el procesador no haría nada más; la E/S con
interrupciones libera en parte al procesador a expensas de reducir la velocidad de
E/S.
El módulo DMA es capaz de imitar al procesador y recibir el control del
sistema. Dicho control lo necesita para transferir datos desde y hacia la memoria a
través del bus del sistema, y hará uso de él solo cuando el procesador no lo
necesite ó forzándolo a que suspenda temporalmente su funcionamiento. Esta
última es la más común y se denomina 'robo de ciclo'. El procesador se detiene
justo antes de necesitar el bus, el módulo DMA transfiere una palabra y devuelve el
control al procesador. Obsérvese que no se trata de una interrupción pues el
procesador no guarda el contexto ni nada por el estilo, sino que simplemente
espera un ciclo de bus, lo que implica que el procesador se vuelva un poco más
lento ejecutando programas, no obstante es mucho más eficiente que la E/S
mediante interrupciones o la programada.
Cuando el procesador desea leer o escribir un bloque de datos envía una
orden al DMA incluyendo los siguientes datos: a) si se solicita lectura o escritura a
24
través de la línea de control, b) la dirección del dispositivo de E/S a través de de la
línea de datos, c) la posición inicial de memoria desde donde se leerá o escribirá,
indicada a través de la línea de datos y almacenada por el DMA en su registro de
direcciones y d) el número de palabras indicado a través de la línea de datos y
almacenado en el registro de cuenta de datos. Una vez que el módulo e DMA
termina la transferencia del bloque de datos hacia o desde la memoria envía una
señal de interrupción al procesador.
Existen muchas formas de configurar los módulos de E/S y el módulo DMA
para que intercambien información entre sí, ya sea haciendo uso del bus del
sistema o de un bus de E/S particular. Una primera forma sería que cada uno de los
módulos se conecte directamente al bus del sistema, resultando una configuración
económica pero totalmente ineficiente pues, se necesitarían dos ciclos del bus del
sistema para pasar información desde un periférico a la memoria. Una segunda
forma podría ser integrando las funciones de DMA y de módulo de E/S, con lo cual
se reduce sustancialmente el número de ciclos de bus del sistema necesarios, pues
existiría un camino directo entre un módulo de DMA y uno o más módulos de E/S.
Una tercera forma sería un módulo de DMA por separado que se comunica a varios
módulos de E/S a través de un bus de E/S, con lo que se reduce el número de
interfases de E/S en el módulo DMA y permite que sea fácilmente ampliable.
Como se puede observar cada vez son más y más las funciones de E/S que
se realizan sin la intervención del procesador. Al relevarlo de estas tareas se logra
una mayor eficiencia en el sistema. Para esto, el módulo de E/S ha evolucionado
llegando a comportarse como un procesador en sí mismo, con un repertorio
especializado de instrucciones orientado a la E/S, llegando a tener el control total
sobre las operaciones de E/S. A esta evolución se le denomina 'Canal de E/S'. Para
25
esto el procesador inicia una transferencia de E/S, indicando al canal de E/S que
debe ejecutar un programa en memoria. E programa especifica el dispositivo(s), el
área(s), la prioridad y las acciones a realizar en situaciones de error. El canal sigue
estas instrucciones y controla la transferencia de datos. Existen los canales
selectores para dispositivos de velocidad elevada a los cuales atiende uno a la vez
y los canales multiplexores para dispositivos de velocidad reducida a los que
atiende de manera simultánea.
CAPÍTULO 111
ORGANIZACIÓN DEL PROCESADOR
3.1 Estructura del procesador
La CPU, llamada microprocesador cuando es fabricada en un chip, es como se dijo,
el responsable de controlar el flujo de datos (de Entrada y Salida E/S) y de la
ejecución de las instrucciones de los programas sobre los datos. Realiza todos los
cálculos (suma, resta, multiplicación, división y comparación de números y
caracteres).
Se divide en 2 componentes principalmente:
1. Unidad de Control (UC)
2. Unidad Aritmético/Lógica (UAL)
Una forma de comprender la organización del procesador (CPU) es tener en
cuenta las funciones que realiza. Dentro de éstas tenemos:
• Captar instrucciones: las instrucciones son leídas desde la memoria
• Interpretar instrucciones: las instrucciones se decodifican para
determinar que acciones son necesarias
27
• Procesar datos: la ejecución de una instrucción puede requerir una
operación aritmética o lógica con los datos.
• Escribir datos: los resultados de ejecución de una instrucción pueden
exigir escribir los datos en la memoria ó en un módulo E/S.
3.1.1 Registros del procesador
Para poder realizar estas operaciones el procesador emplea un conjunto de
registros internos que funcionan como un nivel de memoria por encima de la
memoria principal y de la memoria cache en la jerarquía. Estos registros pueden ser
de dos tipos:
• Registros visibles para el usuario: pues permiten al programador de
lenguaje de máquina o ensamblador, hacer uso de los registros para
minimizar las referencias a la memoria principal.
• Registros de control y estado: son utilizados solo por la unidad de control
para conducir el funcionamiento del procesador y por programas
privilegiados del sistema operativo para controlar la ejecución de
programas.
Registros visibles para el usuario
Pueden ser a su vez clasificados como: Registros de uso general, pues
pueden ser asignados por el programador a diversas funciones. A veces, su uso
dentro de un repertorio de instrucciones es ortogonal a la operación. Es decir
cualquier registro de uso general puede contener el operando para cualquier código
de operación. Sin embargo existen ciertas restricciones como por ejemplo, el de
registros específicos para operaciones en coma flotante y operaciones de pila.
28
Igualmente en algunos casos pueden ser utilizados para funciones de
direccionamiento.
En otros casos hay una separación parcial o total de registros de datos y de
direcciones. Los registros de datos pueden usarse únicamente para contener datos
y no pueden ser empleados en el cálculo de una dirección de operando. Los
registros de dirección en cambio pueden ser de uso más o menos general o pueden
estar dedicados a un modo de direccionamiento particular; entre estos tenemos:
• Puntero de segmento: para una máquina con direccionamiento
segmentado este registro contiene la dirección de la base del segmento.
Puede haber uno para el sistema operativo y otro para el proceso actual.
• Registro índice: se usa para el direccionamiento indexado y pueden ser
auto-indexados.
• Puntero de pila: para los casos en que la pila sea visible al usuario, y
ésta está normalmente en memoria y hay un registro dedicado que
apunta a la cabecera de esta. Esto permite un direccionamiento implícito.
Una última categoría de registros que es parcialmente visible al usuario es la
que contiene los códigos de condición, también llamados indicadores o flags. Estos
códigos son bits fijados por el hardware de la cpu como resultado de alguna
operación, como por ejemplo, en una operación aritmética se puede producir un
resultado positivo, negativo, nulo, o con desbordamiento. Por lo general las
instrucciones de máquina permiten que estos bits sean leídos por referencia
implícita, pero no pueden ser alterados por el programador. En algunas máquinas,
una llamada a subrutina dará lugar a la salvaguarda automática de todos los
registros visibles por el 1,1suario, que serán reestablecidos en el retorno de la
subrutina, permitiendo que cada subrutina use independientemente los registros
29
visibles por el usuario. En algunas máquinas esto lo realiza la cpu de manera
automática y en otras es responsabilidad del programador.
Registros de control y de estado
Existen diversos registros en el procesador que se emplean para controlar
su funcionamiento. La mayoría de ellos, en la mayor parte de las máquinas no son
visibles para el usuario, aunque podrían ser visibles a instrucciones de máquina
ejecutadas en modo de control o de sistema operativo. Si bien existen diferentes
organizaciones de registros con distinta terminología, a continuación se muestra
una lista razonablemente completa de tipos de registro con una breve descripción
• Contador de programa (Program Counter, PC): contiene la dirección de
la siguiente instrucción.
• Registro de instrucción (lnstruction Register, IR): contiene la última
instrucción captada.
• Registro de dirección de memoria (Memory Address Register, MAR):
contiene la dirección de una posición de memoria.
• Registro intermedio de memoria (Memory Buffer Register, MBR):
contiene la palabra de datos a escribir en memoria o la palabra leída más
recientemente.
Normalmente la cpu actualiza el contador del programa después de cada
captación de instrucción, de manera que siempre apunta a la siguiente instrucción a
ejecutar. Una instrucción de bifurcación o salto también modificará el contenido del
PC. La instrucción captada se registra en el IR, donde son analizados el código de
operación y los campos de operando. Se intercambian datos con la memoria por
medio de MAR y de MBR. En un sistema de organización bus MAR se conecta
30
directamente al bus de direcciones, y MBR directamente al bus de datos. Los
registros visibles por el usuario intercambian constantemente datos con MBR.
Dentro del procesador, los datos tienen que ofrecerse al ALU para su
procesamiento. La ALU pude tener acceso directo a MBR y a los registros visibles
para el usuario. Como alternativa pueden haber registros intermedios adicionales,
como registros de entrada y salida de la ALU.
Todos los procesadores incluyen un registro o conjunto de registros
conocidos como 'Palabra de estado del programa' (Program Status Word, PSW),
que contiene información sobre códigos de condición y otra información de estado.
Entre los campos o indicadores más comunes se incluyen los siguientes:
• Signo: contiene el bit de signo del resultado de la última operación
aritmética.
• Cero: puesto a uno cuando el resultado es cero.
• Acarreo: puesto a uno si una operación da lugar a acarreo en sumas o a
deudo en restas, para el bit más significativo. Se usa en operaciones
aritméticas multi-palabra.
• Igual: puesto a uno si el resultado de una comparación lógica es la
igualdad.
• Desbordamiento: usado para indicar un desbordamiento aritmético.
• Interrupciones habilitadas/inhabilitadas: usado para permitir o inhabilitar
interrupciones.
• Supervisor: indica si el procesador funciona en modo supervisor o
usuario. Solo en modo supervisor se pueden ejecutar ciertas
31
instrucciones privilegiadas y se puede acceder a ciertas áreas de
memoria.
Es posible encontrar otros registros de estado además de PSW, como, un
puntero a un bloque de memoria que contenga información sobre control de
procesos. En máquinas que usan interrupciones sectorizadas, puede existir un
registro de vector de interrupción. Si se utiliza una pila para llevara a cabo ciertas
funciones, como una llamada a subrutina, se necesita un puntero de pila del
sistema. En un sistema de memoria virtual se usa un puntero a la tabla de páginas.
Pueden emplearse registros para el control de operaciones de E/S
3.1.2 Unidad Aritmético Lógica (ALU)
La ALU es la parte del computador que realiza realmente las operaciones
aritméticas y lógicas con los datos. El resto de los elementos del computador
(unidad de control, registros, memoria y E/S) están principalmente para suministrar
datos a la ALU, a fin de que esta los procese, llegando a lo que puede considerarse
el núcleo o esencia del computador. Tanto la ALU como los demás componentes
electrónicos del computador, se basan en el uso de dispositivos lógicos digitales
sencillos que pueden almacenar dígitos binarios y realizar operaciones lógicas
booleanas elementales.
La ALU se interconecta con el resto del procesador a través de registros y
señales de control. Los datos se presentan al ALU en registros, y en registros se
almacenan los resultados de las operaciones, producidas por la ALU. Estos
registros son posiciones de memoria temporal internas del procesador que están
conectadas a la ALU. La ALU puede también activar indicadores (Flags) como
resultado de una operación. Por ejemplo un indicador de desbordamiento se pondrá
a 1 si el resultado de una operación excede la longitud del registro en donde este
32
debe almacenarse. La unidad de control proporciona las señales que gobiernan el
funcionamiento de la ALU y la transferencia de datos dentro y fuera de la ALU.
Dos aspectos fundamentales de la aritmética del computador son la forma
de representar los números (formato binario) y los algoritmos utilizados para realizar
las operaciones aritméticas básicas (suma. resta, multiplicación, división). La
aritmética de un computador es realizada normalmente con dos tipos de números
muy diferentes: enteros y de coma flotante. En ambos casos, la representación
elegida es un aspecto de diseño crucial. Las cantidades en coma flotante se
expresan como un número (mantisa) multiplicado por una constante (base) elevada
a una potencia entera (exponente) y se utilizan para representar cantidades muy
grandes o muy pequeñas. La mayoría de los procesadores implementan la
normalización o estándar IEEE 754, para la representación de números y aritmética
en coma flotante. Esta norma define el formato para 32 bits así como para 64 bits.
A continuación se describen los componentes típicos de la ALU:
Banco de registros (BR). Está constituido por 8, 16 ó 32 registros de tipo
general que sirven para situar datos antes de cada operación, para almacenar
datos intermedios en las operaciones y para operaciones internas del procesador.
Circuitos operadores (CIROP). Compuesto de uno o varios circuitos
electrónicos que realizan operaciones elementales aritméticas y lógicas (sumador,
complementador, desplazador, etc).
Registro de resultado (RR). Se trata de un registro especial, en el que se
depositan los resultados que producen los circuitos operadores.
33
Señalizadores de estado (SE). Registro con un conjunto de bi-estables en
los que se deja constancia de algunas condiciones que se dieron en la última
operación realizada.
3.1.3 Unidad de control
La ejecución de una instrucción implica la ejecución de una secuencia de
pasos más pequeños, llamados ciclos. Estos ciclos suelen ser de captación, acceso
indirecto a memoria, ejecución e interrupción. Además cada ciclo se compone de
una serie de operaciones más elementales, llamadas micro-operaciones. Una única
micro-operación, implica por lo general, una transferencia de datos entre registros,
una transferencia entre un registro y un bus externo o una sencilla operación de la
ALU.
La unidad de control de un procesador realiza dos tareas: (1) hace que el
procesador ejecute las micro-operaciones en la secuencia correcta, determinada
por el programa que se está ejecutando, y (2) genera las señales de control que
provocan a la ejecución de cada micro-operación. Las señales de control generadas
por la unidad de control causan la apertura y cierre de ciertas puertas lógicas, lo
que da como resultado una transferencia de datos hacia, o desde, los registros, y
una operación de la ALU. Una técnica para construir la unidad de control es la
implementación cableada, en la cual ésta es un circuito combinacional. Sus señales
lógicas de entrada, gobernadas por la instrucción de máquina en curso, se
transforman en un conjunto de señales de control de salida.
Si bien la ejecución de un programa consiste en una secuencia de ciclos de
instrucción, con una instrucción de máquina por ciclo, esta secuencia de ciclos no
es necesariamente la misma que la secuencia escrita de instrucciones que
constituye un programa, debido a la existencia de instrucciones de salto. Cada uno
34
de los ciclos implica una serie de pasos, cada uno de los cuales involucra a ciertos
registros del procesador, a estos pasos se les conoce como micro-operaciones.
Ciclo de captacion
Tiene lugar al principio de cada ciclo de instrucción y hace que una
instrucción sea captada de la memoria. Para un caso típico hay cuatro registros
implicados:
• MAR: conectado a las líneas de dirección del bus del sistemas.
Especifica una dirección de memoria en una operación de lectura
escritura.
• MBR: conectado a las líneas de datos del bus del sistema. Contiene el
valor a almacenar en memoria, o el último valor leído de memoria.
• PC: contiene la dirección de la siguiente instrucción a captar.
• IR: contiene la instrucción captada.
El primer paso es llevar la dirección del PC al MAR, ya que este es el único
registro conectado a la línea de dirección del bus del sistema. El segundo paso es
traer la instrucción para lo cual la unidad de control emite una orden READ por el
bus de control; el resultado aparece en el bus de datos y se copia en el MBR.
Incrementar PC en 1 (longitud de la instrucción). Como estas dos últimas acciones
no interfieren entre si, se pueden realizar simultáneamente para ahorrar tiempo. El
tercer paso es transferir el contenido de MBR al IR. Esto libera al MBR para su uso
durante un posible ciclo indirecto.
Se observa entonces que el ciclo de captación consta de tres pasos y cuatro
micro-operaciones. Se asume que se dispone de un reloj a efectos de
temporización. Cada micro-operación puede llevarse a cabo dentro de una unidad
35
de tiempo o pulso de reloj. La tercera micro-operación puede tener lugar durante la
segunda unidad de tiempo o durante la cuarta sin afectar a la operación de
captación. A esto se le denomina agrupación de micro-operaciones, las cuales
deben cumplir dos reglas sencillas: (1) debe seguirse la secuencia correcta de
eventos, y (2) deben evitarse los conflictos, como intentar leer y escribir en el
mismo registro en una misma unidad de tiempo.
PC
¿�
IR k:
CPU
> MAR
Uniood
de control
MBR <-.
"
.)
<
Bus de Bus de
direcciones ootos
...
"
V
Bus de
control
Figura 3.1 Ciclo de captación de una instrucción
Ciclo indirecto
Memoria
Una vez que se capta una instrucción el siguiente paso es captar los
operandos fuente. Suponiendo un formato de instrucción que permite
direccionamiento indirecto, dará lugar a un ciclo indirecto que ha de preceder al
ciclo de ejecución, dando lugar a tres micro-operaciones. En la primera el campo de
dirección en la IR se transfiere a la MAR. Este se usa después para captar la
dirección del operando. Por último el campo de dirección de IR se actualiza con el
36
contenido de MBR, de modo que contenga una dirección directa en lugar de una
indirecta. IR tiene ahora el mismo estado que si no se hubiera usado
direccionamiento indirecto y está listo para el ciclo de ejecución.
Ciclo de ejecución
Los ciclos de captación, indirecto y de interrupción son sencillos y
predecibles, pues cada uno implica una secuencia pequeña y fija de micro
operaciones, repitiéndose en todos los casos las mismas micro-operaciones en la
ejecución de cualquier operación. Esto no ocurre así en el ciclo de ejecución. En
una máquina con n códigos de operación diferentes pueden ocurrir n secuencias
diferentes de micro-operaciones. Consideremos una instrucción de suma:
ADD R1, X
suma el contenido de la posición X al registro R1. Puede darse la siguiente
secuencia de micro-operaciones:
t1: MAR - (IR(Dirección))
t2: MBR - Memoria
t3: R1 - (R1) + (MBR)
En un principio, IR contiene la instrucción ADD. En el primer paso, la parte
de la dirección IR se carga al MAR. Después se lee la posición de memoria
referenciada y se deposita en MBR. Por último la ALU suma los contenidos de R1 y
MBR. En realidad estos pasos pueden necesitar de operaciones adicionales para
extraer la referencia a registro desde IR y para poner las entradas o salidas de la
ALU en registros intermedios.
37
Examinemos ahora una instrucción de llamada a subrutina. Como ejemplo
consideraremos la instrucción 'saltar y guardar la dirección' (Branch and save
address)
BSAX
La dirección de la instrucción que viene a continuación de la instrucción
BSA, se guarda en la posición de memoria X, y la ejecución continua en la posición
X +l. la dirección guardada se utilizará más adelante en el retorno. Esta es una
técnica sencilla para proporcionar llamadas a subrutinas. Las micro-operaciones
necesarias son las siguientes:
t1: MAR - (IR (Dirección))
MBR-(PC)
t2: PC -. (IR(Dirección))
Memoria -. (MBR)
t3: PC -. (PC) + 1
La dirección que hay en PC al comienzo de la instrucción es la dirección de
la siguiente instrucción secuencial. Esta se guarda en la dirección señalada por IR.
Esta última dirección también se incrementa para obtener la dirección de la
instrucción correspondiente al siguiente ciclo de instrucción. Esto no significa que
sea lo único necesario que deba realizar el procesador para poder realizar el salto a
una subrutina, pues, es indispensable que se guarde en la pila el espacio de
registros, tanto visibles como no visibles, entre otros.
38
Ciclo de interrupción
Cuando termina el ciclo de ejecución, el procesador realiza una
comprobación para determinar si ha ocurrido alguna interrupción habilitada. Si es
así tiene lugar un ciclo de interrupción. La naturaleza de este ciclo varía mucho de
una máquina a otra. A continuación se presenta una secuencia muy simple de
eventos a fin de ilustrarlo:
t1: MBR - (PC)
t2: MAR - Dirección de salvaguarda
PC - Dirección de la rutina
t3: Memoria _. (MBR)
En el primer paso, el contenido de PC se transfiere a MBR, de modo que
pueda gúardarse para el retorno de la interrupción. Luego, MAR se carga con la
dirección en la cual se va a guardar el contenido de PC, y PC se guarda con la
dirección de comienzo de la rutina de procesamiento de la interrupción. Ya que la
mayoría de procesadores tienen múltiples tipos y o niveles de interrupción, podrían
hacer falta una o más micro-operaciones adicionales para obtener la dirección de
salvaguarda y la dirección de la rutina, antes de que puedan transferirse a MAR y a
PC respectivamente. El paso final es almacenar MBR, que contiene al antiguo valor
de PC, en la memoria. Quedando el procesador preparado para iniciar el siguiente
ciclo de instrucción.
Requisitos funcionales
Como consecuencia del análisis en la sección precedente se ha llegado a
descomponer el comportamiento o funcionamiento del procesador en operaciones
39
elementales llamadas micro-operaciones, reduciendo su funcionamiento a su nivel
más básico, pudiéndose entonces definir exactamente que es lo que la unidad de
control tiene que hacer que ocurra. Se definen como requisitos funcionales de la
unidad de control a aquellas funciones que debe de llevar a cabo. Una definición de
estos requisitos funcionales es la base para el diseño e implementación de la
unidad de control. El siguiente proceso de tres pasos nos lleva a la caracterización
de la unidad de control:
• Definir los elementos básicos del procesador
• Describir las micro-operaciones que ejecuta el procesador
• Determinar las funciones que debe realizar la unidad de control para que
se ejecuten las micro-operaciones
Los dos primeros pasos ya han sido desarrollados por lo que podemos en
primer lugar establecer los elementos básicos del procesador como son la ALU,
Registros, Caminos de datos internos, Caminos de datos externos y la Unidad de
control. Asimismo se observa que la ejecución de un programa consta de
operaciones que consisten en una secuencia de micro-operaciones, pudiendo
establecerse que todas ellas obedecen a una clasificación en una de las siguientes
categorías:
• Transferir datos de un registro a otro.
• Transferir datos de un registro a una interfaz externa (por ejemplo al bus
del sistema).
• Transferir datos de una interfaz externa a un registro.
• Realizar una operación aritmética o lógica, usando registros para entrada
y salida.
40
Podemos ser ahora algo más explícitos acerca de la forma en que funciona
la unidad de control. La unidad de control realiza 2 tareas básicas:
• Secuenciamiento: la unidad de control hace que el procesador avance a
través de una serie de micro-operaciones en una secuencia adecuada,
basada en el programa que se está ejecutando.
• Ejecución: la unidad de control hace que se ejecute cada micro
operación.
Lo antes indicado es una descripción funcional de lo que hace la unidad de
control. La clave de como funciona la unidad de control es la manera en que utiliza
las señales de control.
Señales de control
Para que la unidad de control realice su función, debe tener entradas que le
permitan determinar el estado del sistema y las salidas que le permitan controlar el
comportamiento del mismo. Internamente la unidad de control ha de tener la lógica
necesaria para realizar sus funciones de secuenciamiento y ejecución. Dentro de
las principales entradas y salidas tenemos:
• Reloj: es el encargado de establecer la temporización y el sincronismo
para la ejecución de las micro-operaciones.
• Registro de instrucción: el código de operación de la instrucción en curso
se usa para determinar que micro-operaciones hay que realizar durante
el ciclo de ejecución.
• Indicadores: se requieren para determinar el estado del procesador y el
resultado de anteriores operaciones de la ALU.
41
• Señales de control del bus de control: el control del bus del sistema
suministra señales a la unidad de control, tales como, señales de
interrupción y de reconocimiento.
• Señales de control internas al procesador: son las que hacen que los
datos se transfieran de u registro a otro y las que activan funciones
específicas de la ALU.
• Señales de control hacia el bus de control: señales de control de la
memoria, y señales de control de los módulos de E/S.
Consideramos un ciclo de captación para entender como la unidad de
control realiza su función a través de las siguientes señales de control
simultáneamente:
• Una señal de control abre las puertas que permiten que el contenido de
MAR aparezca en el bus de direcciones.
• Una señal de control de lectura de memoria, en el bus de control.
• Una señal de control, que abre las puertas que permite almacenar el
contenido del bus de datos en MBR.
• Señales de control de la lógica, que suman 1 al contenido de PC y
almacenan el resultado de nuevo en PC.
Después de esto, la unidad de control envía una señal de control que abre
las puertas adecuadas entre MBR e IR. Con lo que se completa el ciclo de
captación, exceptuando la decisión de ejecutar a continuación un ciclo indirecto o
un ciclo de ejecución. Para esto examina IR, viendo si se hace una referencia
indirecta a memoria.
42
3.2 Estrategias de organización
3.2.1 Segmentación de instrucciones
Aprovechando los progresos en la tecnología de fabricación de circuitos
integrados, los avances en la organización de los procesadores han permitido
mejorar sus prestaciones. Dentro de estos tenemos el empleo de múltiples registros
en lugar de un único acumulador y el uso de una memoria caché. Otro adelanto es
el que se refiere a la segmentación de instrucciones, cuyo uso es similar al de una
línea de producción en una fábrica de manufacturas. El concepto se basa en el
hecho de que el producto pasa a través de varias etapas de producción. Por lo que
en una misma línea de producción varios productos están siendo procesados en
distintas etapas simultáneamente, entendiéndose que cada etapa de la línea de
producción procesa un solo producto. A este proceso se le conoce como
segmentación de cauce o pipelining, porque, como en una tubería o cauce, en un
extremo se aceptan nuevas entradas antes que algunas entradas aceptadas con
anterioridad aparezcan como salida.
mswc:ci6nfinalizada, Captu la imlnxcién ,igui.eria
Vclvu a.poz otro da.to de Umcadena. ounvecb>r Noinb,nupción
Figura 3. 2 Diagrama de estados de un ciclo de instrucción
43
Para poder aplicar este concepto partiremos del hecho de que una
instrucción tiene varias etapas durante su ciclo de instrucción. Como podemos
observar en el diagrama anterior un ciclo de instrucción puede contar hasta con
diez tareas o etapas, las cuales tienen lugar secuencialmente.
Hay periodos durante la ejecución de una instrucción en los que no se
accede a memoria principal, este tiempo se podría utilizar en captar la siguiente
instrucción durante el periodo de tiempo en que se está ejecutando otra instrucción,
es decir mientras la segunda etapa ejecuta una instrucción, la primera etapa utiliza
algún ciclo de memoria no usado para captar y almacenar la siguiente instrucción a
esto se conoce como prebúsqueda (prefetch) o solapamiento de la captación (fetch
overlap). Para un ciclo de dos etapas (captación y ejecución) el ciclo de instrucción
se reduciría a la mitad, sin embargo, esto es poco probable por dos razones:
• El tiempo de ejecución generalmente será más largo que el tiempo de
captación, por lo que esta última deberá esperar algún tiempo antes de
que pueda vaciar su buffer.
• Una instrucción de bifurcación condicional hace que la dirección de la
siguiente instrucción a captar sea desconocida.
La pérdida de tiempo debida a la segunda razón puede reducirse haciendo
que la etapa de captación capte la instrucción desde memoria que sigue a la
instrucción de bifurcación; entonces sino se produce el salto no habría pérdida de
tiempo; si el salto se produce, debe desecharse la instrucción pre-captada y
captarse una nueva. Aunque estos factores reduzcan la efectividad potencial del
cauce, de todos modos se logra alguna aceleración. Para conseguir una mayor
aceleración, el cauce debe contar con más etapas. Consideremos otro conjunto de
etapas para el procesamiento de una instrucción:
44
• Captar instrucción (fetch instruction, FI): leer la siguiente instrucción y
cargarla en un buffer.
• Decodificar instrucción (decode instruction, DI): determinar el código de
operación y los campos de operando.
• Calcular operandos (calculate operands, CO): calcular la dirección
efectiva de cada operando fuente. Esto puede involucrar distintas formas
de calcular la dirección.
• Captar operandos (fetch operands, FO): captar cada operando desde la
memoria. Los operandos en registros no tienen que ser captados.
• Ejecutar instrucción (excecute instruction, El): realizar la operación
indicada y almacenar el resultado, si lo hay, en la posición de operando
destino especificada.
• Escribir operando (write operand, WO): almacenar resultado en memoria.
Con esta descomposición, las diversas etapas tendrán casi igual duración.
En el siguiente diagrama se muestra que para un cauce con las seis etapas antes
descritas se puede reducir el tiempo de ejecución de siete instrucciones, de 42 a 12
unidades de tiempo.
El diagrama de la Figura 5. supone que cada instrucción recorre las seis
etapas del cauce. No siempre se dará este caso, como en el caso de una
instrucción de carga que no necesita la etapa WO. Asimismo supone que no hay
conflictos de acceso a memoria. Por ejemplo, las etapas FI, FO, WO, requieren un
acceso a memoria. La mayoría de los sistemas de memoria no permitirán esto. No
obstante, el valor deseado puede estar en caché de instrucciones y datos por
45
separado, o las etapas FO o WO pueden ser nulas. De este modo, casi siempre, los
conflictos de memoria no reducirán la velocidad del cauce.
Otros factores contribuyen a limitar la efectividad del pipelinning. Si las seis
etapas no son de igual duración, habrá cierta espera en alguna de ellas. Otra
dificultad es la bifurcación condicional que puede invalidar varias captaciones de
instrucción. Un evento impredecible similar es la llegada de una interrupción. Otro
problema se presenta con al etapa CO que puede depender del contenido de un
registro que podría verse alterado por una instrucción previa que aún está en el
cauce. El sistema tiene que incluir una lógica para poder manejar este tipo de
conflictos. Al margen de los factores antes descritos que limitan la efectividad del
pipelinning, pareciera que cuanto mayor sea el número de etapas en el cauce, más
rápida será de ejecución de instrucciones. Sin embargo se han observado dos
factores que frustran este patrón de diseño de altas prestaciones:
• En cada etapa del cauce, hay un gasto extra debido a la transferencia de
datos de buffer a buffer, y a la realización de varias funciones de
realización y distribución. Este gasto adicional puede prolongar
sensiblemente el tiempo de ejecución total de una instrucción aislada,
sobre todo cuando las instrucciones son lógicamente dependientes ya
sea por el uso abundante de bifurcaciones o dependencias de acceso a
memoria.
• La cantidad de lógica de control para manejar las dependencias de
memoria y registros, y para optimizar el uso del cauce que aumenta
considerablemente con el número de etapas, lo que puede llevar a que la
lógica para controlar el paso de etapas sea más compleja que las etapas
controladas.
46
La segmentación de instrucciones es una poderosa técnica para aumentar
las prestaciones pero requiere un diseño cuidadoso, para obtener resultados
óptimos con una complejidad razonable.
3.2.2 Tratamiento de Saltos
Uno de los mayores problemas del diseño de un cause de instrucciones es,
asegurar un flujo estable de instrucciones a las etapas iniciales del cause. El
principal obstáculo para esto es, la bifurcación condicional, ya que es imposible
determinar si el salto se producirá o no. Para el tratamiento de estas bifurcaciones
se plantean varias opciones.
Flujos múltiples.- Consisten en duplicar las etapas iniciales del cause, para
que este capte dos instrucciones utilizando dos caminos. Tiene como
inconvenientes los retardos debidos a la competencia por el acceso a los registros y
a la memoria, además, pueden entrar en el cause otras instrucciones de bifurcación
antes de que se resuelva la bifurcación original.
Pre-captar el destino del salto.- En este caso se pre-captan tanto la
instrucción destino del salto como la siguiente a la bifurcación. Ambas instrucciones
se guardan hasta que se ejecute la instrucción de bifurcación.
Buffer de bucles.- Es una memoria pequeña de gran velocidad gestionada
por la etapa de captación de instrucción del cause, la cual contiene,
secuencialmente, las n instrucciones captadas más recientemente. Al producirse
un salto el hardware comprueba primero, si el destino del salto esta en el buffer y lo
capta desde este. El buffer de bucles tiene tres utilidades:
• Con el uso de pre-captación el buffer de bulces se anticipa almacenando
algunas instrucciones que secuencialmente están después de la
47
dirección de donde se capta la instrucción actual. De este modo las
instrucciones estarán disponibles sin el tiempo de acceso a memoria
habitual.
• Si ocurre un salto a pocas posiciones de la dirección de la instrucción de
bifurcación, el destino ya - estará en el buffer. Esto es muy útil para el
caso de las sentencias IF-THEN-ELSE.
• Si el buffer es lo suficientemente grande para contener todas las
instrucciones de un bucle, entonces esas instrucciones solo necesitan
ser captadas de la memoria una sola vez durante la primera iteración.
El buffer de bucles es similar, en principio, a una cache de instrucciones. La
diferencia esta en que solo guarda instrucciones consecutivas y que es mucho más
pequeña y por lo tanto de menor costo.
Predicción de saltos.- en este caso se pueden usar varias técnicas para
predecir si un salto se va a producir. Entre las mas usuales se encuentran: (1)
predecir q nunca se salta; (2) predecir q siempre se salta; (3) predecir salto según el
código de operación; (4) conmutador saltar/no saltar; (5) tabla de historia de saltos.
Las tres primeras son estáticas, pues no dependen de la historia de resultados de
bifurcaciones anteriores. Las dos últimas técnicas son dinámicas, pues si dependen
de la historia de ejecución.
Las dos primeras son las más simples. La que asume que el salto no se
producirá, continuará captando instrucciones secuencialmente y la que asume que
el salto se producirá, captará siempre la instrucción destino del salto. Si la captación
de la instrucción de salto causa un fallo de página o una violación de protección, el
procesador detiene la prebúsqueda hasta que esté seguro de que la instrucción
48
debe ser captada. En la última aproximación estática el procesador asume que el
salto se producirá para ciertos códigos de operación de bifurcación y no para otros.
Las estrategias de bifurcación dinámicas intentan mejorar la exactitud de la
predicción, registrando la historia de las instrucciones de bifurcación condicional.
Por cada instrucción de bifurcación se asocia uno o más bits que reflejan su historia
reciente. Estos bits son referenciados como un conmutador saltar/no saltar, que
dirige al procesador a tomar una determinada decisión la próxima vez que
encuentre la instrucción. Típicamente estos bits se guardan temporalmente en
almacenamientos de alta velocidad como el caché, pero su historia se pierda al ser
reemplazada la instrucción.
Otra posibilidad es mantener otra tabla con las instrucciones de bifurcación y
uno o más bits para cada elemento de la tabla. Con un único bit solo se podrá
registrar si saltó o no saltó en la última ejecución de instrucción. Una deficiencia de
usar un solo bit es en el caso de instrucciones tales como la instrucción loop, pues
ocurrirá un error en la predicción dos veces en cada uso de bucle, una vez cuando
entra al bucle y otra cuando sale de el. Si se usan dos bits, se pueden registrar las
dos últimas veces que se ejecutó la instrucción asociada. El proceso de decisión
puede representarse por medio de una máquina de estados finitos con cuatro
estados.
El algoritmo requiere dos predicciones erróneas consecutivas para cambiar
la predicción. Si un salto toma un camino inusual una vez, la predicción será
errónea una vez por tanto no cambia su predicción. Un inconveniente de los bits de
historia es que la instrucción de destino no puede captarse hasta que su dirección,
que es un operando de la instrucción de la bifurcación condicional, sea
decodificada. Se logra una mayor eficiencia guardado la dirección de salto en una
49
tabla de historia de saltos (Branch history table, BHT). Esta tabla es una pequeña
memoria caché asociada a la etapa de captación de instrucción del cauce. Cada
elemento de la tabla consta de: (1) dirección de una instrucción de bifurcación, (2)
un determinado número de bits de historia y (3) información sobre la instrucción de
destino, que puede ser la dirección o la instrucción en si misma.
:irecc10n Secuencial
1 siguie:rde .§
- ·�
� -
-
1 1 1 -
Gestión de error ll'.I
E .. en la. p:iedicción
de salio
Me:rmria.
(a) Estra:legiade p:iedecir que nunca se salta
l Dirección Secuencial
1"'guiem
IPFAR Dirección de La instrucción Dirección i:l
1 Comulta De bifureación destino Estado - ;�tJ -
- �-
-
Me:rmria.
r+ ll'.I
--
Ac1ualizar estado 1
Añadinmevo elemen1o
:-
Ló�ca. de la BHT Desviar
E
Figura 3. 3 Diagrama de tratamiento de saltos
50
Cada pre-captación dispara una búsqueda en la tabla, si no encuentra la
instrucción de bifurcación usa la dirección siguiente para la captación. Si la
encuentra se hace una predicción basada en los bits de estado, suministrando a la
lógica de selección ya sea la dirección secuencial siguiente, o bien la dirección
destino del salto. La etapa de ejecución de la instrucción de bifurcación comunica el
resultado a la lógica de la tabla de historia de saltos. Los bits de estado de la
instrucción se actualizan para reflejar una predicción correcta o incorrecta. Cuando
se encuentra que una instrucción de bifurcación condicional no esta en la tabla, se
añade a esta, y uno de los elementos existentes se desecha, usando uno de los
algoritmos de reemplazo de cache.
Otra técnica es la de salto retardado, donde los saltos no tienen lugar hasta
después de que se ejecute la siguiente instrucción, de ahí que se le llame
retardado. Se trata de reemplazar la probabilidad error en la predicción de un salto,
por instrucciones que de todas maneras deben ejecutarse, haciendo un
reordenamiento de la secuencia de instrucciones para que la instrucción de salto se
ejecute antes, de modo que las instrucciones que vienen a continuación sean
siempre útiles. Este sistema funcionará bien para saltos incondicionales, llamadas y
retornos.
3.2.3 · Procesador superescalar
Un procesador superescalar, es aquel que usa múltiples cauces de
instrucciones independientes. Cada cauce consta de múltiples etapas de modo que
pueden procesar varias instrucciones a la vez. El procesador superescalar saca
provecho al grado en que las instrucciones de un programa pueden ejecutarse en
paralelo, a lo que se le conoce como 'paralelismo a nivel de instrucciones'. Un
procesador superescalar capta varias instrucciones a la vez y a continuación intenta
51
encontrar instrucciones cercanas que sean independientes entre si y que por
consiguiente puedan ejecutarse en paralelo. Si alguna instrucción no puede
completar su ejecución porque depende de la salida de una instrucción precedente,
el procesador puede completar instrucciones en un orden diferente al del código de
máquina original. Mientras los procesadores RISC puros emplean saltos retardados
para maximizar la utilización del cauce de instrucciones, las máquinas
superescalares emplean predicción de saltos para aumentar su rendimiento.
El término superescalar se refiere a máquinas diseñadas para mejorar la
velocidad de ejecución de las instrucciones escalares como son, la aritmética
entera y de coma flotante, cargas, almacenamientos y bifurcaciones condicionadas.
Se contrastan con el propósito de los procesadores vectoriales. En la mayoría de
las aplicaciones la mayor parte de las operaciones se realizan con cantidades
escalares, es así que la aproximación superescalar representa la evolución natural
de los procesadores de uso general de altas prestaciones. En el planteamiento
superescalar, hay múltiples unidades funcionales, cada una de las cuales está
implementada como un cauce segmentado que admiten la ejecución en paralelo de
varias instrucciones.
a
111
�
Organización superescalar usual
Bazco de :regühos de erderos Ba:rco de recühos de e arna flotarile
.. ' . ... J�
lJ•
1� 1 11
111
- LJ LJ Mermria
Figura 3. 4 Organización superescalar
Unida.des
:funcional.es segmentadas
52
Una alternativa para alcanzar mayores prestaciones es la
supersegmentación, la cual, aprovecha el hecho de que gran parte de las etapas
del cauce realizan tareas que requieren menos de la mitad de un ciclo de reloj.
Doblando la velocidad de reloj interna permitirá realizar el doble de tareas en un
ciclo de reloj externo. En el siguiente diagrama se muestra un cauce normal que
· admite una instrucción por ciclo de reloj y ejecuta cada una de las etapas del cauce
una sola vez en cada ciclo, correspondiendo cada etapa a una instrucción diferente.
La implementación super-segmentada es capaz de ejecutar dos etapas del cauce
por ciclo de reloj, a la que se le conoce como grado dos. La implementación
superescalar es capaz de ejecutar en paralelo dos instrucciones en todas sus
etapas.
La aproximación superescalar depende de la habilidad para ejecutar varias
instrucciones en paralelo. Sin embargo, requerirá a su vez maximizar el paralelismo
a nivel de instrucciones de un programa para lo cual se puede usar una
combinación de optimizaciones realizadas por el compilador y de técnicas de
hardware. Existen limitaciones fundamentales del paralelismo a las que el sistema
tiene que enfrentarse estas son:
• Dependencia de datos verdadera. Se presenta cuando una instrucción
necesita de un dato producido por una instrucción anterior para lo cual se
retrasa la instrucción tantos ciclos de reloj como sea necesario para
eliminar la dependencia.
(1)
ro
-�
u
(J) (1)
e: o u
(1)
(J) e:
o
u
u
::,
-(1) e:
o 1 2 3
Captacion de
instruccion
Supersegmentada
Supere se alar segmentada
4 5 6 7 8 9
Tiempo en ciclos Base
Decodifi cación
Escritura
Figura 3. 5 Comparación de esquemas superescalar y super-segmentado
53
• Dependencias relativas al procedimiento. Las instrucciones que siguen a
una bifurcación, en la que se puede o no saltar, tienen una dependencia
relativa al procedimiento en esa bifurcación y no pueden ejecutarse hasta
que esta lo haya hecho. Las pérdidas para un cauce superescalar son
mayores a las de un cauce normal al perderse un mayor número de
oportunidades de comenzar a ejecutar instrucciones. Si se usan
instrucciones de longitud variable, surgen otro tipo de dependencia
54
relativa al procedimiento, al impedir la captación simultánea necesaria en
un cauce superescalar. Es por esta razón que las técnicas
superescalares se aplican de una manera más fácil a arquitecturas RISC
• Conflictos de recursos. Es la pugna de dos o más instrucciones por el
mismo recurso al mismo tiempo. Ejemplos de recursos son las
memorias, las caches, los buses, los puertos del banco de registros y las
unidades funcionales como el sumador de la ALU. Presenta el mismo
comportamiento que una dependencia de datos. Pueden superarse
duplicando los recursos, mientras que una dependencia de datos no se
puede eliminar. Se pueden minimizar segmentando la unidad funcional
apropiada.
• Dependencia de salida. También llamada dependencia escritura
escritura, se presenta cuando el resultado de una instrucción posterior
puede ser sobrescrito mas tarde por una instrucción anterior que tarda
más en finalizar. Cuando ocurre una interrupción, la ejecución de
instrucciones se suspende en un punto para reanudarse posteriormente.
Al reanudarse el procesador debe tener en cuenta que algunas
instrucciones posteriores a la interrupción puedan haber finalizado.
• Anti-dependencia. También llamada dependencia lectura-escritura. Esta
restricción es similar a la de la dependencia verdadera pero a la inversa,
en lugar que la primera instrucción produzca un valor que usa una
segunda instrucción, la segunda instrucción destruye un valor que usa la
primera.
El paralelismo a nivel de instrucciones depende de la frecuencia de
dependencias de datos verdaderas y dependencias relativas al procedimiento que
55
existe en el código. Estos factores dependen a su vez de la arquitectura del
repertorio de instrucciones y de la aplicación. El paralelismo de una máquina es una
medida de la capacidad del procesador para sacar provecho del paralelismo a nivel
de instrucciones. El paralelismo de la máquina depende del número de
instrucciones que pueden captarse y ejecutarse al mismo tiempo, número de
cauces paralelos y de la velocidad y sofisticación del mecanismo para localizar
instrucciones independientes. Un programa puede no tener el suficiente nivel de
paralelismo a nivel de instrucciones como para sacar el máximo provecho al
paralelismo de la máquina.
Políticas de emisión de instrucciones. El paralelismo de la máquina no es
una cuestión de tener múltiples réplicas de cada etapa del cauce sino que también
además, debe ser capaz de identificar el paralelismo a nivel de instrucciones, y
organizar la captación, decodificación y ejecución de las instrucciones en paralelo.
El término 'emisión de instrucciones' se utiliza para referirse al proceso de iniciar la
ejecución de instrucciones y el término 'política de emisión de instrucciones' para
referirse al protocolo utilizado para emitir instrucciones. Esencialmente, el
procesador intenta localizar instrucciones más allá del punto de ejecución en curso,
que puedan introducirse en el cauce y ejecutarse. Con respecto a esto son
importantes el orden en el que se captan las instrucciones, en que se ejecutan y en
el que las instrucciones actualizan los contenidos de los registros y las posiciones
de memoria.
Para optimizar la utilización de los diversos elementos del cauce el
procesador tendrá que alterar uno o más de estos órdenes con respecto al orden de
ejecución secuencial descrita, acomodando las diversas dependencias y conflictos.
56
Las políticas de emisión de instrucciones de los procesadores superescalares se
pueden agrupar en tres categorías:
Emisión en orden y finalización en orden. Esta es la política de emisión más
sencilla, que ni siquiera los cauces escalares la utilizan. No obstante se puede
considerar como base de comparación para otras aproximaciones más sofisticadas.
Una segunda instrucción debe esperar hasta que la decodificación de la primera
deje el cauce vacío. Cuando hay una pugna por una unidad funcional o cuando esta
necesita más de un ciclo, la emisión de la instrucción se detiene temporalmente.
Emisión en orden y finalización desordenada. Con la finalización
desordenada puede haber cualquier número de instrucciones en la etapa de
ejecución en un momento dado hasta alcanzar el máximo grado de paralelismo de
la maquina, ocupando todas las unidades funcionales, la emisión de instrucciones
se detiene cuando hay una pugna por un recurso, una dependencia de datos o una
dependencia relativa al procedimiento.
Emisión desordenada y finalización desordenada. Para permitir la emisión
desordenada, es necesario desacoplar las etapas del cauce de decodificación y de
ejecución. Esto se hace mediante un buffer llamado 'ventana de instrucciones'.
Cuando el procesador termina de decodificar una instrucción la coloca en esta
ventana de instrucciones. Mientras no se llene el buffer el procesador podrá
continuar captando y decodificando nuevas instrucciones. Las instrucciones se
emitirán desde la ventana de instrucciones a la etapa de ejecución. Cualquier
instrucción puede emitirse siempre que (1) la unidad funcional esté disponible y (2)
ningún conflicto ni dependencia la bloqueen. De esta manera el procesador podrá
identificar instrucciones independientes de manera anticipada, reduciendo la
57
probabilidad de que una etapa del cauce tenga que detenerse, al haber más
instrucciones dispuestas a ser emitidas.
Renombramiento de registros. Como se ha visto, permitir la emisión
desordenada de instrucciones o la finalización desordenada pueden dar origen a
dependencias de salida y anti-dependencias, las cuales surgen porque los valores
de los registros no pueden reflejar ya la secuencia de valores dictada por el flujo de
programa, generándose un conflicto por el uso de los registros, lo que debe ser
resuelto por el procesador deteniendo ocasionalmente alguna etapa del cauce.
Las anti-dependencias y las dependencias de salida son conflictos de
almacenamiento, que generan restricciones en el cauce y reducen las prestaciones.
Para hacer frente a estos conflictos se duplican los recursos utilizándose una
técnica de renombramiento de registros, mediante la cual el hardware del
procesador asigna dinámicamente los registros que necesitan las instrucciones en
diversos instantes de tiempo. Cuando se crea un nuevo valor de registro se asigna
un nuevo registro para ese valor. Las instrucciones posteriores que accedan a ese
valor cómo operando fuente en ese registro, sufrirán un proceso de
renombramiento. De este modo las referencias a un mismo registro original en
diferentes instrucciones, pueden referirse a distintos registros reales, suponiendo
diferentes valores.
Paralelismo de máquina. Hasta ahora hemos visto tres técnicas de
hardware que se pueden emplear en un procesador superescalar para aumentar las
prestaciones: duplicación de recursos, emisión desordenada y renombramiento.
Una máquina base no duplica ninguna de las unidades funcionales pero puede
emitir instrucciones desordenadamente, una segunda configuración puede duplicar
alguna o varias, como la unidad de carga/almacenamiento que accede a la cache
58
de datos o la ALU. Otras configuraciones pueden emplear ventanas de
instrucciones de 8, 16 y 32 instrucciones que determinan el grado de anticipación
que puede tener el procesador. Una última configuración puede permitir el
renombramiento de registros.
Una máquina con implementación básica está limitada por todas las
dependencias, mientras que una máquina con las diversas técnicas estaría limitada
solo por las dependencias verdaderas. Algunas conclusiones importantes respecto
de distintas combinaciones de técnicas pueden ser que, no merece la pena añadir
unidades funcionales sin renombramiento de registros. Con el renombramiento de
registros, que elimina las anti-dependencias y las dependencias de salida se logran
ganancias notables y mas aún si se emplean ventanas de instrucciones de mayor
dimensión. Si la ventana de instrucciones es demasiado pequeña, las
dependencias de datos impiden la utilización efectiva de las unidades funcionales
adicionales. Es importante que el procesador pueda mirar hacia delante bastante
lejos en busca de instrucciones independientes que permitan aprovechar más el
hardware.
Ejecución superescalar. Un programa que se va a ejecutar consiste en
una secuencia lineal de instrucciones, se trata de un programa estático, tal como lo
fue escrito por el programador o generado por el compilador. El proceso de
captación de instrucciones que incluye la predicción de saltos, se usa para formar
un flujo dinámico de instrucciones, de las cuales el procesador elimina las que sean
artificiales. El procesador envía las instrucciones a una ventana de ejecución en la
cual ya no forman un flujo secuencial sino que están estructuradas de acuerdo a
sus dependencias de datos verdaderas. El procesador ejecuta cada instrucción
dependiendo de la disponibilidad de recursos de hardware. Por último las
59
instrucciones se vuelven a poner en el orden secuencial original y sus resultados
se registran.
A este último paso se le llama entregar (commit) la instrucción. Este paso es
necesario debido que en el uso de múltiples cauces paralelos, las instrucciones
pueden terminar en un orden diferente al del programa estático. Además la
utilización de predicción de saltos y ejecución especulativa significa que algunas
instrucciones pueden haber completado su ejecución y después ser desechadas
porque la bifurcación que llevaba a ellas no se produjo, por consiguiente, el
almacenamiento permanente y los registros visibles por el programa no se pueden
actualizar inmediatamente después de que las instrucciones finalicen su ejecución.
Los resultados han de mantenerse en algún tipo de almacenamiento temporal que
sea utilizable por instrucciones dependientes, y después convertido en permanente,
una vez que se determine que el modelo secuencial habría ejecutado la instrucción.
Implementación superescalar. El hardware requerido por un procesador
en la aproximación superescalar debería contar con los siguientes elementos:
• Estrategias de captación simultanea de instrucciones con predicción de
resultados de bifurcaciones condicionales.
• Utilización de múltiples etapas de captación, de decodificación y lógica
de predicción de saltos.
• Lógica para determinar dependencias verdaderas entre registros y
mecanismos para comunicar esas dependencias.
• Mecanismos para iniciar o emitir múltiples instrucciones en paralelo.
60
• Recursos para la ejecución en paralelo de múltiples instrucciones que
incluyan múltiples unidades funcionales segmentadas y jerarquías de
memoria capaces de atender múltiples referencias.
• Mecanismos para entregar el estado del procesador en un orden
correcto .
•
Piognma estático
Capuraciónde Instrw:ciones y
P:iedicción de salios
-
Envío de mstmccio:nes
Emisiánde mstmccio:nes
Vettamde ejecución
Figura 3. 6 Procesamiento superescalar
3.2.4 Procesamiento paralelo
Reoide:n.amiemo ye:nb.'ega de
instmcciones
Una manera tradicional de incrementar las prestaciones de un sistema
consiste en utilizar varios procesadores que puedan ejecutar en paralelo una caga
de trabajo dada. Las dos organizaciones de múltiples procesadores más comunes
son los multiprocesadores simétricos (SMP) y los clusters. Un SMP es un
computador constituido por varios procesadores similares interconectados mediante
un bus o algún tipo de estructura de conmutación. El problema más crítico para un
SMP es la coherencia de cache. Cada procesador tiene su propia cache y es
posible que una línea de datos dada esté presente en más de una cache. Si esa
61
línea se altera en una cache entonces, tanto la memoria principal como las demás
cache tienen versiones no válidas de dicha línea. Un cluster es un grupo de
computadores completos interconectados mediante un bus externo y trabajando
juntos como un solo recurso de cómputo, como si se tratara de una sola máquina.
El término computador completo significa que puede funcionar autónomamente
fuera del cluster.
Tradicionalmente el computador se ha visto como una máquina secuencial.
La mayoría de los lenguajes de programación, requieren que el programador
especifique sus algoritmos mediante una secuencia de instrucciones. Los
procesadores ejecutan las instrucciones de máquina de una en una. Cada
instrucción se ejecuta mediante una secuencia de operaciones. Sin embargo el
computador no es completamente secuencial. A nivel de micro operación se
generan múltiples señales de control que se accionan al mismo tiempo. La
segmentación de las instrucciones presenta un solapamiento en operaciones de
captación y ejecución. En una organización superescalar se permite el paralelismo
entre instrucciones haciendo uso de varias unidades de ejecución.
Conforme la tecnología de las computadoras se ha ido desarrollando y el
costo del hardware disminuyendo, los diseñadores de computadores han visto
cada vez más posibilidades en el paralelismo, ya sea para mejorar las prestaciones
o para mejorar la fiabilidad. En una implementación SMP varios procesadores
comparten la memoria principal común. En una implementación de clusters varios
computadores independientes se organizan para poder trabajar cooperativamente.
Los clusters son bastante comunes al momento de procesar cargas de trabajo que
sobrepasan la capacidad de un SMP.
62
La forma más común de clasificar los sistemas según sus capacidades de
procesamiento paralelo es la siguiente:
• Una secuencia de instrucciones y una secuencia de datos (SISO). Un
único procesador interpreta una única secuencia de instrucciones para
operar con los datos almacenados en una única memoria. Es el caso de
los computadores monoprocesador
• Una secuencia de instrucciones y múltiples secuencias de datos (SIMD).
Una única instrucción de máquina controla paso a paso la ejecución
simultánea y sincronizada de un cierto número de elementos de proceso.
Cada instrucción es ejecutada por cada procesador para un conjunto de
datos diferentes. Los procesadores vectoriales y matriciales pertenecen a
esta categoría.
• Múltiples secuencias de instrucciones y una secuencia de datos (MISO).
Esta secuencia nunca ha sido implementada.
• Múltiples secuencias de instrucciones y múltiples secuencias de datos
(MIMD) un conjunto de procesadores ejecuta simultáneamente
secuencias de instrucciones diferentes con conjuntos de datos
diferentes. Los SMP y los clusters son ejemplos de esta categoría.
Los multiprocesadores simétricos comparten una memoria común cada uno
de ellos accede a los programas y datos almacenados en la memoria compartida.
El acceso es a través de un bus compartido u otro mecanismo de interconexión. El
tiempo de acceso a memoria principal es prácticamente el mismo para cada
procesador. A diferencia de estos un cluster de computadores monoprocesadores
independientes o de SMP pueden interconectarse mediante conexiones fijas o de
algún tipo de red.
63
En el diagrama que se muestra a continuación se presenta la estructura de
un SISD el cual dispone de una unidad de control UC que proporciona una
secuencia de instrucciones SI a una unidad de proceso UP la cual actúa sobre una
única secuencia de datos SD captados desde la unidad de memoria UM. Para la
máquina SIMD, también existe una sola UC que proporciona una única SI a cada
elemento de proceso EP. Cada EP puede tener su propia memoria dedicada MD o
puede haber una memoria compartida. Finalmente para el computador MIMD hay
múltiples UC, y cada una proporciona una SI a su propio EP. La memoria puede ser
compartida o distribuida como se muestra en el diagrama. El diseño de los SMP y
los cluster son complejos, e implican cuestiones relativas a la organización física,
estructura de interconexión, diseño de los sistemas operativos y el software de
aplicación.
SI
., SD
·Iuc UP UM
SISD
SD
B EP1
,� SD
·I 1EP2 MD:1 uc • •
EPn MDz..
SIMD �on m,,:mana dinribuida
SI
UC1 EP1 :ML1 ,8
·sSI
UC2 :ML2
SI
UCn m Ivilc n::
MIMD con mi rroria. distribuida
Figura 3. 7 Tipos de organización de computadores
64
3.2.5 Multiprocesadores simétricos (SMP)
Como ya se ha mencionado la reducción de los costos y la mayor
integración de los microprocesadores ha permitido a los fabricantes el desarrollo de
organizaciones internas cada vez más sofisticadas llegando a sistemas como los
SMP. Esta organización debe ir acompañada por el sistema operativo especializado
que explota las características de su arquitectura interna. Un SMP cuenta con las
siguientes características:
• Cuenta con dos o más procesadores similares de capacidades
comparables.
• Los procesadores pueden compartir una memoria principal y las
unidades de E/S y están interconectados mediante un bus u otro tipo de
sistema de interconexión, siendo el tiempo de acceso a memoria
aproximadamente el mismo para todos los procesadores.
• Todos los procesadores comparten los dispositivos de E/S a través de
los mismos canales o mediante canales distintos que proporcionan
acceso al mismo dispositivo.
• Todos los procesadores pueden desempeñar las mismas funciones.
• El sistema está controlado por un sistema operativo que proporciona la
interacción entre los procesadores y sus programas en los niveles de
trabajo, tarea, fichero y datos.
El sistema operativo de un SMP planifica la distribución de procesos o hilos
(threads) entre los procesadores. Las principales ventajas con respecto a un
monoprocesador son:
65
• Si el trabajo puede organizarse de forma que partes del mismo se
puedan realizar en paralelo, proporcionará mejores prestaciones.
• Un fallo en un procesador no hará que el computador se detenga. Esto
se conoce como alta disponibilidad.
• Para aumentar las prestaciones del sistema se pueden ir añadiendo más
procesadores. Se conoce como crecimiento incremental.
• Los fabricantes ofrecen productos con precios y prestaciones
diferenciadas en función al número de procesadores.
Es el sistema operativo el que debe disponer de herramientas y funciones
que permitan explotar el paralelismo presente en un SMP. La existencia de varios
procesadores se muestra transparente para el usuario. El sistema operativo se
encarga de la sincronización entre los procesadores y de la planificación de los
hilos o de los procesos y de la asignación de estos a los distintos procesadores.
Organización. En un sistema multiprocesador existen dos o más
procesadores, cada procesador es autónomo, incluyendo una Unidad de control,
ALU, Registros y posiblemente cache. los procesadores pueden comunicarse entre
si a través de la memoria, haciendo uso de mensajes e información de control
almacenada en áreas comunes. También pueden intercambiar señales
directamente. Cuando la memoria es común a menudo se organiza de forma que
sean posibles los accesos simultáneos a bloques de memoria separados. En otras
configuraciones cada procesador puede tener su propia memoria principal y sus
canales de E/S además de los recursos compartidos. La organización de un
multiprocesador puede clasificarse por una de las características siguientes:
66
Bus de tiempo compartido. Es el mecanismo más simple. La estructura y las
interfaces son básicamente las mismas de un sistema monoprocesador. El bus
consta de líneas de control, dirección y datos. Para las transferencias de DMA los
procesadores de E/S debe ser capaces de distinguir los módulos del bus para
determinar la fuente y destino de los datos. Existe un mecanismo para arbitrar entre
las peticiones que compiten por el control del bus, mediante algún esquema de
prioridad. Cuando un módulo controla el bus los demás módulos quedan en espera.
La interfaz física y lógica de cada procesador para el direccionamiento, el
arbitraje y para compartir el tiempo del bus es el mismo que el de un sistema
monoprocesador. Generalmente es sencillo expandir el sistema conectando más
procesadores. Es confiable pues es esencialmente un medio pasivo y el fallo de
cualquiera de los dispositivos no provocará el fallo de todo el sistema. La principal
desventaja es que todas las referencias a memoria pasan por el bus, en
consecuencia la velocidad del sistema está limitada a la velocidad del bus. Para
mejorarla se emplean jerarquías de cahe de hasta tres niveles, presentándose el
problema de coherencia de cache, el cual es resuelto típicamente por el hardware,
más que por el sistema operativo.
Procesador Procesador
C.cbe Ll Cache Ll
Cache 12 Cacha L2
Memoria Principal
Subsúle,m
deE/S
Procesador
C.chaLl
CachaL2
Adaptador
daEJS
Ahptador da E.IS
Figura 3.8 Organización de un multiprocesador simétrico
67
Memoria multipuerto. Permite el acceso directo e independiente a los
módulos de memoria desde cada uno de los procesadores y módulos de E/S.
necesita una lógica asociada a la memoria para resolver los conflictos, que a
menudo consiste en asignar prioridades fijas a cada puerto de memoria. La interfaz
física y eléctrica de cada puerto es similar a la memoria de un solo puerto, por lo
que necesita muy pocas o ninguna modificación en los procesadores o en los
módulos de E/S para implementar la memoria multipuerto. Es más compleja que la
aproximación de bus, no obstante, se consiguen mejores prestaciones, puesto que
cada procesador tiene un camino dedicado a cada módulo de memoria. Otra
ventaja de la memoria multipuerto es que se puede configurar partes de memoria
como privadas para uno o más procesadores y/o módulos de E/S. esto permite
incrementar la seguridad frente a accesos no autorizados y para almacenamiento
de rutinas de restablecimiento.
P1
E/S1 •
•
•
Pn
FJ�
Figura 3.9 Memoria multipuerto
Unidad de control central. Encauza las distintas secuencias de datos entre
los distintos módulos independientes: procesador, memoria, E/S. El controlador
puede almacenar temporalmente las peticiones, y realizar funciones de arbitraje y
temporización. Además, puede transmitir mensajes de estado y control entre los
68
procesadores y alertar sobre cambios en las caches. Puesto que toda la lógica de
coordinación se concentra en la unidad central de control, los módulos
independientes no sufren cambios esenciales. Esto proporciona flexibilidad y
simplicidad de las interfaces en la aproximación de bus. La desventaja de esta
aproximación es que la unidad de control es bastante compleja y que suele ser un
cuello de botella potencial para las prestaciones. Su aplicación es bastante común
en los mainframes de varios procesadores, pero esta alternativa es poco frecuente
hoy en día.
Sistema operativo de multiprocesador. El sistema operativo de un SMP
se encarga de gestionar los procesadores y demás recursos del computador, para
que el usuario perciba un solo sistema operativo controlando los recursos del
sistema, como un monoprocesador con multiprogramación. Como en un sistema
monoprocesador es responsabilidad del sistema operativo planificar la ejecución y
asignación de recursos para varios procesos al mismo tiempo. Una aplicación
puede hacer uso de varios procesos o de varios hilos dentro de un proceso, sin
tener en cuenta si se dispone de uno o varios procesadores. Un sistema
multiprocesador debe ofrecer todas las funcionalidades de un sistema operativo con
multiprogramación, además de las características adicionales propias del manejo
de varios procesadores, como:
• Procesos concurrentes simultáneos: Las rutinas del sistema operativo
deben ser re-entrantes, para permitir que varios procesadores puedan
ejecutar simultáneamente el mismo código. Esto debe manejarse
apropiadamente para evitar bloqueos u operaciones no válidas.
69
• Planificación: Puede realizarla cualquiera de los procesadores, por lo que
deben evitarse los conflictos. El planificador asigna los procesos
preparados a los demás procesadores disponibles.
• Sincronización: Puesto que hay varios procesos que pueden acceder a
espacios de memoria y a recursos de E/S compartidos, la sincronización
asegura la exclusión mutua y la ordenación de eventos.
• Gestión de memoria: Debe comprender todos los aspectos propios de los
monoprocesadores. Además debe explotar el paralelismo que ofrece el
hardware como la memoria multipuerto. Los mecanismos de paginación
deben ser consistentes.
• Tolerancia a fallos: El sistema operativo debe hacer una degradación
gradual ante la falla de uno de los procesadores. El planificador y otros
elementos del sistema operativo deben reconocer la pérdida y
reestructurar las tablas de gestión.
3.2.6 Coherencia de cache
Es común ver hoy en día, en los sistemas multiprocesador, uno, dos y hasta
tres niveles de cahce. Esta organización es esencial para resolver el cuello de
botella que representa la velocidad de comunicación entre el CPU y la memoria,
que constituye uno de los mayores problemas en el diseño de computadores. Sin
embargo esta organización es a su vez un problema para los sistemas
multiprocesadores, el cual se conoce como 'coherencia de cache'. El problema se
presenta debido a que pueden existir varias copias del mismo dato
simultáneamente en caches diferentes y, si los procesadores actualizan sus copias,
se produce una inconsistencia en el sistema de memoria. Existen dos políticas de
escritura en memoria haciendo uso de memoria cache usuales:
70
• Post-escritura (Write back): la escritura solo se hacen en las cache y la
memoria principal solo se actualiza cuando la línea de cache
correspondiente se reemplaza.
• Escritura directa (Write through): Todas las operaciones de escritura se
realizan en la canche y a la vez en la memoria principal, asegurándose
así de que el contenido de la memoria principal siempre es valido.
Es evidente que la política de post-escritura puede ocasionar
inconsistencias. Si dos caches contienen la misma línea y una de ellas se actualiza,
la otra cache tendrá un valor no valido. En la escritura directa, puede existir
inconsistencia, a no ser que las otras caches comprueben los accesos a memoria
principal o reciban algún tipo de notificación directa de la escritura realizada. El
protocolo de coherencia se encarga de situar las variables locales utilizadas
recientemente en la cache apropiada y mantenerlas ahí para las distintas escrituras
y lecturas, y al mismo tiempo mantiene la consistencia de las variables compartidas,
que pudieran encontrarse en varias caches al mismo tiempo. Las aproximaciones
de coherencia de cache generalmente se dividen en aproximaciones de software y
hardware. Algunas implementaciones utilizan ambas.
Aproximaciones de software. Los esquemas de software de coherencia de
cache evitan la necesidad de circuitería lógica con hardware adicional, dejando que
el compilador y el sistema operativo se encarguen del problema. Al momento de la
compilación el software toma ciertas decisiones conservadoras que pueden
ocasionar una utilización ineficiente de la cache. Asimismo realizan un análisis del
código para determinar que datos pueden dar problema al pasar a cache y los
marcan; después el sistema operativo o hardware impedirán que se pasen a cache
estos datos. Puesto que una escritura de datos compartidos puede utilizarse de
71
manera exclusiva en determinados periodos de tiempo, y de solo lectura en otros,
es sólo durante aquellos periodos en los que al menos un procesador pueda
actualizar una variable y otro procesador pueda acceder a la misma, cuando hay
que considerar la coherencia de cache. Hay aproximaciones más eficientes q�e
analizan el código y determinan periodos seguros para las variables compartidas.
El compilador suele insertar instrucciones en el código generado para reforzar la
coherencia de cache en los periodos críticos.
Aproximaciones de Hardware. Las soluciones basadas en el hardware
permiten reconocer, en el momento de la ejecución, las situaciones de
inconsistencia potenciales. Puesto que el problema se evalúa solo en el momento
que aparece, existe un uso más efectivo de las caches. Estas aproximaciones son
trasparentes para el programador y para el compilador. Los esquemas de hardware
se pueden dividir en dos categorías: protocolos de directorio y protocolos de sondeo
(snoopy protocols).
Protocolos de directorio: Recogen y mantienen información acerca de donde
residen las copias de las líneas. Usualmente, existe un controlador centralizado,
que es parte del controlador de memoria principal, y un directorio se almacena en
la memoria principal. El directorio contiene información del estado global en
relación a los contenidos de las diferentes caches locales. Cuando un controlador
individual de una cache hace una petición, el controlador centralizado comprueba y
emite las ordenes precisas para la transferencia entre memoria y cache o entre
distintas caches. Además es responsable de mantener actualizada la información
de estado; de esta manera cualquiera acción local que pueda afectar al estado
global de una línea, debe comunicarse al control central. Antes de que un
procesador pueda escribir en una copia local de una línea, debe solicitar al
72
controlador el acceso exclusivo a dicha línea. Entonces el controlador envía un
mensaje a todos los procesadores con una copia de la línea en su cache,
forzándolos a que invaliden su copia. Después de recibir la confirmación de estos
el controlador concede el acceso exclusivo al procesador que lo solicito. Estos
esquemas de directorio presentan la desventaja de constituir un cuello de botella y
un costo de comunicación entre los controladores de las distintas caches y el
controlador central. No obstante, son efectivos en sistemas de gran escala que
poseen múltiples buses o algún esquema complejo de interconexión.
Protocolos de sondeo: Distribuyen la responsabilidad de mantener la
coherencia de cache entre todos los controladores de cache del multiprocesador.
Una cache debe reconocer cuando una línea de las que contiene esta compartida
con otras caches, anunciando a las demás caches mediante un broadcast cuando
ésta realiza una actualización. Los protocolos de sondeo se adaptan bien a los
multiprocesadores basados en un bus, sin embargo se debe cuidar que el
incremento en el tráfico del bus que requiere la difusión y el sondeo, no anulen los
beneficios de las caches locales. Se han explorado dos enfoques básicos de
protocolo de sondeo. Con un protocolo de invalidar-si-escritura pueden haber
múltiples procesadores que leen, pero un solo procesador que escribe en un
momento dado. Para escribir envía una notificación que invalida la linea en las
otras caches y hace que sea exclusiva para sí. Con un protocolo actualizar-si
escritura pueden haber varios procesadores que escriben y varios procesadores
que leen. Cuando un procesador escribe en una línea compartida, la palabra se
distribuye a las demás caches para que puedan actualizarla. Ninguna de las dos
aproximaciones es mejor que la otra en todas las situaciones, las prestaciones
dependen del número de caches locales y del patrón de escritura y lectura de
73
memoria. Algunos sistemas implementan protocolos adoptivos, que utilizan ambos
mecanismos.
Protocolo MESI. En la aproximación invalidar-si-escritura, conocida como
MESI por sus sigas en inglés, se marca uno de los cuatro estados de cada línea de
cache (usando 2 bits adicionales en el campo de marca de la cache), siguiente:
• Modificado (Modified): La línea de cache ha sido modificada (es distinta a
su valor en memoria principal), y está disponible sólo en esta cache.
• Exclusivo (Exclusive): La línea de cache tiene el mismo valor que la
memoria principal y no está presente en ninguna otra cache.
• Compartido (Shared): La línea de cache tiene el mismo contenido que
la memoria principal y puede estar presente en otra cache.
• No valido (lnvalid): La línea de cache no contiene datos validos.
Cada línea de cache tiene sus propios bits de estado y su propia
implementación del diagrama de estado. En la parte (a) del siguiente diagrama se
muestran las transacciones que se producen en razón a las acciones iniciadas por
el procesador al que pertenece la cache, y en la parte (b) se describen las
transacciones ocasionadas por eventos que se producen en el bus común. A
continuación se describen cada una de las transacciones:
• Fallo de lectura: Cuando se produce un fallo de lectura en la cache local,
el procesador inicia una lectura en memoria para acceder a la línea de
memoria principal que contiene la dirección que no está en cache. El
procesador inserta una setial en el bus avisando a los demás para que
sondeen la transacción, y actualicen sus estados y de ser el caso
proporcionen la línea de cache que quiere leer. Finalmente, el
74
procesador original lee la línea y cambia el estado de la línea en un su
cache de no-valido a compartido o exclusivo según sea el caso.
• Acierto de lectura: Cuando se produce un acierto en una lectura de una
línea presente en la cache local, el procesador lee el dato solicitado y
mantiene estado como modificado, compartido o exclusivo.
• Fallo de escritura: Cuando se produce un fallo en una escritura en la
cache local, el procesador comienza con una lectura de memoria, para
acceder a la línea de memoria principal que contiene la dirección que no
está en la cache y envía un señal de lectura-para-modificación al bus. Si
existe otro procesador con la línea en estado modificada, el procesador
inicial espera a que éste actualice la memoria principal y cambie su línea
de cache a estado no-válido. El procesador inicial lee la línea de
memoria principal, modifica la línea en su cache y la marca como
modificada. Si ninguna cache tiene copia modificada el procesador
original lee y modifica la línea. Si existen caches con copias limpias en
estado compartido o no modificadas en estado exclusivo pasan sus
estados a no-valida.
• Acierto de escritura: cuando se produce un acierto de escritura en una
línea de cache local el efecto depende del estado de la línea. Si está en
compartido, antes de realizar la actualización, el procesador debe
conseguir el acceso exclusivo, los procesadores que tengan copia
compartida la pasan a no-válida, el procesador original actualiza la linea
y cambia de compartido a modificado. Si está en exclusivo, la actualiza y
cambia estado a modificado. Si está en modificado sólo la actualiza.
75
• Consistencia de caches L 1-L2: Los procesadores cuentan con cache 11
que no está directamente conectada al bus y que por lo tanto no puede
participar de un protocolo de sondeo, por lo que se requiere extender el
protocolo de coherencia de cache a las caches L 1. Cada línea de cache
incluye bits de estado. El estado de la línea L 1 debe seguir el trayecto de
la línea L2, una forma de hacerlo es mediante la política de escritura
directa en la cache L 1, pero escribiendo sobre la cache L2 y no sobre la
memoria. Al escribirse en al cache L2 se hace visible a las otras cache
L2. El uso de esta política requiere que el contenido de L 1 sea un
subconjunto del contenido de L2 y que la asociatividad de L2 deba ser
mayor o igual que la de L 1.
3.2.7 Clusters.
Los clusters constituyen una alternativa a los multiprocesadores simétricos
(SMP) para disponer de prestaciones y disponibilidad elevadas. Se puede definir
como un grupo de computadores completos interconectados, que trabajan
conjuntamente como un único recurso de computo, creándose la ilusión de que se
trata de un a sola máquina. A cada computador completo se le suele denominar
nodo. Los beneficios u objetivos o requisitos de diseño suelen ser:
• Escalabilidad absoluta. Es posible configurar clusters que superen las
prestaciones de los computadores independientes más potentes. Un
cluster puede tener decenas de máquinas cada una de las cuales
pueden ser un multiprocesador.
• Escalabilidad incremental. Un cluster se configura de forma q sea posible
añadir nuevos sistemas en ampliaciones sucesivas sin tener que sustituir
el sistema original.
76
• Alta disponibilidad. El fallo de uno de los nodos no significa la pérdida de
servicio. En muchos casos existe un software que proporciona la
tolerancia a fallas automáticamente.
• Relación precio/prestaciones. Es posible configurar un cluster con igual o
mayor potencia que un computador independiente mayor, a mucho
menor costo.
Configuraciones. Una clasificación sencilla es la que considera si los
computadores comparten o no el acceso al mismo disco. Ambas configuraciones se
muestran en el diagrama de la Figura 13. Una primera configuración en la que no
comparten un mismo disco, los nodos se interconectan mediante un enlace de alta
velocidad para intercambiar mensajes que coordinan la actividad del cluster. El
enlace puede ser una LAN que se coparte con otros computadores no incluidos en
el cluster, o puede ser un medio de interconexión específico. Los nodos pueden ser
imple.mentados mediante multiprocesadores, lo que le proporciona un aumento
tanto en las prestaciones como en la disponibilidad. Una segunda configuración
contempla el uso de un disco compartido. En este caso también existe- un enlace
directo entre los nodos y además un subsistema de discos que se conecta ·
directamente a los computadores del cluster. El uso de RAID o de algún otro tipo de
tecnologías de discos redundantes es común en los clusters para elevar la
disponibilidad.
77
Suwlorsmdúco compartido
Disco compartido
Figura 3.1 O Tipos de configuración de clusters
Otra forma de configuración de clusters es a partir de las alternativas
funcionales. Dentro de estas tenemos un procedimiento conocido como espera
pasiva (passive standby}, que consiste en mantener toda la carga de trabajo en un
computador, mientras que otro permanece inactivo hasta tomar el relevo del
primero, cuando se produce un fallo de éste. El computador primario envía
permanentemente mensaje de actividad al computador en espera, cuando estos
cesan el computador en espera se pone en marcha. Con esta alternativa se
aumenta la disponibilidad pero no las prestaciones ni tiene capacidad para atender
las transacciones en curso al no tener acceso a las bases de datos gestionadas por
el primer computador.
Un segundo procedimiento es el secundario activo, dentro de los cuales se
pueden distinguir tres métodos. En el primero de los métodos de servidores
78
separados, cada computador cuenta con su propio disco y no existen discos
compartidos. Esta organización proporciona tanto disponibilidad como prestaciones
elevadas. Requiere de algún tipo de software de gestión o planificación para
asignar las peticiones de los clientes a los servidores, de forma que se equilibre la
carga de los mismos y se logre una utilización elevada. Para tener cierta capacidad
de fallas, lo que significa que, si un computador falla mientras se está ejecutando
una aplicación, otro computador del cluster puede acceder a la aplicación y
completarla. Para esto, los datos se deben copiar constantemente en los distintos
sistemas.
El costo de este intercambio es una penalización en las prestaciones. Para
reducir este costo los servidores están conectados a discos comunes. Una
variación de esta alternativa se conoce como configuración sin compartir nada
(share nothing) en la que los discos comunes se dividen en diferentes volúmenes y
cada volumen es asignado a un solo procesador. Si un computador falla sus
volúmenes pasan a los otros computadores. También es posible hacer que los
computadores compartan todos los volúmenes de todos los discos al mismo tiempo
lo que se conoce como aproximación de disco compartido. Esta aproximación
necesita de algún tipo de procedimiento para el acceso exclusivo.
Sistema operativo. Para aprovechar la configuración de hardware de un
clus�er es necesaria cierta ampliación del sistema operativo en relación a la de un
único computador. Estas ampliaciones deben permitir entre otros la gestión de
fallas y el equilibrio de carga. Para hacer frente a una falla depende del tipo de
configuración del cluster y se pueden utilizar dos alternativas: clusters de alta
disponibilidad y clusters tolerante a fallas. Un cluster de alta disponibilidad ofrece
una probabilidad elevada de que todos sus recursos estén en servicio. Si se
79
produce una falla se pierden las tareas en curso y la gestión de las transacciones
ejecutadas parcialmente debe hacerse mediante la aplicación. Un cluster tolerante
a fallas garantiza que todos los recursos estén disponibles. Esto se consigue
utilizando discos compartidos redundantes, y mecanismos para salvar las
transacciones no terminadas y concluirlas. La función de conmutar aplicaciones y
datos en el cluster, desde un sistema a otro se denomina 'transferencia por fallo'
(failover). Otra función es la restauración de las aplicaciones y los datos por el
sistema original, una vez superada la falla; se le denomina 'recuperación después
de una falla' (failback).
Un cluster necesita una capacidad efectiva para equilibrar la carga entre los
computadores disponibles. Esta capacidad es necesaria para satisfacer el requisito
de escalabilidad incremental. Cuando un computador es añadido al cluster, el
software encargado de la asignación de tareas debería incluir automáticamente a
dicho computador junto con _los restantes, para distribuir la carga de manera
equilibrada. Los mecanismos de un nivel de software intermedio (middleware) entre
el sistema operativo y las aplicaciones necesitan reconocer los servicios que
pueden aparecer en los distintos miembros del cluster y que puedan migrar desde
un miembro a otro.
Tanto los clusters como los multiprocesadores simétricos son
configuraciones que cuentan con varios procesadores que peden ejecutar
aplicaciones con alta demanda de recursos. Ambas están disponibles
comercialmente, aunque los SMP están desde hace mucho más tiempo. La
principal ventaja de un SMP es que resulta más fácil de gestionar y configurar que
un cluster. El SMP está mucho más cerca de la arquitectura de un computador
monoprocesador para el que están disponibles casi todas las aplicaciones. Otra
80
ventaja del SMP es que necesita menos espacio físico y consume menos energía
que un cluster comparable. Una última e importante ventaja es que los SMP son
plataformas más estables y bien establecidas, no obstante las ventajas de los
cluster serán las que dominen el mercado de los servidores de altas prestaciones,
pues, los clusters son superiores a los SMP en términos de escalabilidad y de
disponibilidad.
3.2.8 Computación Vectorial
A pesar de que las prestaciones de los grandes computadores (mainframes)
de propósito general continúan aumentando día a día, siguen existiendo
aplicaciones que están fuera de su alcance. Estas aplicaciones están orientadas a
resolver problemas matemáticos de procesos reales tales como la aerodinámica, la
sismología, la meteorología, y la física atómica nuclear y de plasmas. Asimismo, los
retos que le plantean los nuevos campos de estudio sobre inteligencia artificial y
redes neuronales. Típicamente estos problemas se caracterizan por necesitar una
precisión elevada y programas que realicen operaciones aritméticas en coma
flotante con grandes matrices de números de forma repetitiva. La mayoría de estos
problemas pertenecen a la categoría conocida como simulación de espacios
continuos. Por ejemplo la simulación del flujo de aire próximo a la superficie de un
cohete para el cual es necesario describir una región de tres dimensiones mediante
una aproximación de retícula de puntos y un conjunto e ecuaciones diferenciales
que describen el comportamiento de cada punto de la superficie. Estas ecuaciones
se representan en una matriz de valores y coeficientes cuya solución implica
repetidas operaciones aritméticas sobre las matrices de datos.
Para manejar este tipo de problemas se han desarrollado los llamados
supercomputadores, que son capaces de realizar cientos de millones de
81
operaciones de coma flotante por segundo y cuestan por encima de los 1 O millones
de dólares; a diferencia de los mainframes que se diseñan para la
multiprogramación, el multiprocesamiento y las E/S intensivas. El supercomputador
tiene un uso limitado, y debido a su precio, un mercado limitado. En su mayoría son
requeridas por centros de investigación y algunas agencias gubernamentales de
países desarrollados. Al igual que en otras áreas de tecnología de computadores,
hay una constante demanda por mejorar sus prestaciones. Dentro de estos existe
un tipo de procesador, que no realiza operaciones escalares sino sólo vectoriales, y
suelen estar configurados como dispositivos periféricos, para que los usuarios de
grandes computadores y minicomputadores puedan ejecutar sus cálculos
vectoriales intensivos.
3.2.9 Lo que nos depara el futuro
Como ya sabemos, el microprocesador es el corazón de la PC, con millones
de transistores, funcionando con el sistema binario.
Cada 18 meses los microprocesadores doblan su velocidad. En tal sentido
dentro de 25 años una computadora será más poderosa que todas las que estén
instaladas actualmente en el Silicon Valley californiano. La performance de estos
pequeños y grandes artefactos ha mejorado 25.000 veces en sus 25 años de vida y
he aquí algunas prospectivas:
• Los microprocesadores del futuro brindarán aún más recursos a la
memoria cache para acercar la actual brecha de velocidad que existe
entre ambos.
• Los modernos microprocesadores superescalares ejecutan de tres a seis
instrucciones por ciclo de reloj. Por tal motivo, a 250 MHz, un
microprocesador superescalar de cuatro cauces puede ejecutar un billón
82
de instrucciones por segundo. Un procesador de los próximos años
podría lanzar docenas de instrucciones en cada paso.
• Algunos sostienen que la tecnología óptica reemplazará inevitablemente
a la tecnología electrónica. Las computadoras podrían ser, por ejemplo,
construidas completamente de materiales biológicos.
• Pipeling, organizaciones superescalares y cache continuarán
protagonizando los avances de la tecnología, estando presente también
el multiprocesamiento paralelo.
• Probablemente, los microprocesadores existan en varias formas, desde
llaves de luz a páginas de papel. En el espectro de aplicaciones, estas
extraordinarias unidades soportarán desde reconocimiento de voz hasta
realidad virtual.
• En el futuro cercano, los procesadores y memorias convergirán en un
chip, tal como en su momento el microprocesador unió componentes
separados en un solo chip. Esto permitirá achicar la distancia entre el
procesado y la memoria y sacar ventajas del procesamiento en paralelo,
amortizar los costos y usar a pleno la cantidad de transistores de un chip.
• El microprocesador de los próximos años será una computadora
completa. La mayoría de los transistores en este chip conformarán la
memoria. Mientras que los microprocesadores actuales requieren cientos
de hilos para conectar a los chips de memoria externa, los nuevos
procesadores no necesitarán más que una red y un cable de electricidad.
Todas las unidades de entrada y salida estarán vinculadas a ellos vía
red. Si precisan más memoria, tendrán mas poder de procesamiento y
83
viceversa. Mantendrán la capacidad de memoria y velocidad de
procesamiento en equilibrio.
• La nueva arquitectura de microprocesadores será ideal para el
procesamiento en paralelo. Debido a que requerirían pocas conexiones
externas, estos chips podrían ser extraordinariamente pequeños.
Podríamos estar ante microprocesadores más pequeños que el antiguo
4004 de lntel. Si el procesamiento en paralelo prospera, este mar de
transistores podría ser, además frecuentado por múltiples procesadores
en un solo chip, creándose el "micromultiprocesador".
4.1 Introducción
CAPITULO IV
PROCESADOR AMO OPTERON
Pocos son los que a estas alturas no conocen a la todopoderosa Advanced
Micro Oevices, lnc (AMD). Siempre considerada segundona, en los últimos tiempos
ha ido demostrando, con su capacidad de desarrollo que ésta coletilla no estaba
bien aplicada. Experta en la fabricación de procesadores para ordenadores, AMO
acaba de lanzar al mercado una nueva línea de procesadores.
Con sede en Sunnyvale, California, inversiones por $4.6 billones en el año
2000, centros de producción en Estados Unidos, Europa y Asia, AMO lleva nada
menos que 34 años ofreciendo productos al mercado informático. Lo más
destacado sin duda son los microprocesadores, tanto para ordenadores
convencionales, como para portátiles o servidores. Sin embargo, en la actualidad
también desarrolla dispositivos varios de memoria Flash.
Hasta el lanzamiento del AMD 64, los procesadores con los que AMD
contaba en el mercado, estaban todos ellos basados en una arquitectura de 32 bits,
una arquitectura que está en consonancia con la arquitectura de los sistemas
operativos y aplicaciones disponibles en el mercado. Por lo que, todo ha girado en
85
torno a la potencia que nos puede ofrecer una arquitectura de esta naturaleza, pero
AMD ha ido más allá en la intención por ofrecer una mayor capacidad de cálculo de
los procesadores e incorpora un nuevo núcleo Hammer, dotado con potencia de
cálculo de 64 bits. La necesidad de implantación de la tecnología de 64 bits, viene
impulsada por las aplicaciones que requieren grandes cantidades de memoria física
y virtual, como son los servidores de alto rendimiento, los sistemas de gestión de
bases de datos y las herramientas CAD.
AMO 64 es una nueva plataforma de cómputo que extiende la ampliamente
desarrollada arquitectura x86 para acomodarla en el procesamiento de 64 bits.
Formalmente conocida como x86-64, las mejoras a la arquitectura x86 permite a los
usuarios de laptops, desktops, workstations, y servidores, operando dentro de una
arquitectura de 32 bits, migrar de una manera natural a una arquitectura de 64 bits
de rendimiento superior.
Esta nueva plataforma combina una total compatibilidad con la arquitectura
x86-32, una arquitectura de 64 bits de alto rendimiento, y la economía de un
procesador con estándares de la industria. Permite a la industria de la tecnología
construir soluciones enfocadas en las necesidades de los clientes mientras se
remueven barreras a futuras innovaciones. Los procesadores AMD Opteron y el
AMD Athlon 64 son los primeros de esta nueva plataforma. Compañías como
Microsoft, SuSE, IBM, NVIDIA, VIA, GYGABYTE, MSI, SIS, y otras han anunciado
su intención de proveer soluciones para estos procesadores y la plataforma
AMD64. Las inversiones en aplicaciones x86-32 son preservadas, ya que pueden
ejecutar su ciclo normal sobre la plataforma AMD64. Con el tiempo, aplicaciones
más potentes podrán ser desarrolladas, permitiendo a los clientes controlar los
86
costos de desarrollo y de migración gradual, y de acuerdo a las necesidades del
negocio.
4.2 Principales características
El nuevo procesador de AMO está fabricado bajo la tecnología de
producción de O, 13 micras y se ha desarrollado un nuevo socket 940 para hacerlo
más eficiente y veloz. Además, cuenta con 1 MB de caché en el nivel 2 e integra un
controlador que hace más confiable el acceso a la memoria RAM, como es el
mecanismo DDR333 de doble canal.
La siguiente tabla muestra las principales características del núcleo del
procesador:
¡...,,... • -
-:-"'::.--,:-,·�.r(-¡.__
Escalabilidad sin HW adicional
Frecuencia
1.4GHz
1.6GHz
1.8GHz
2.0GHz
Controlador de memoria DDR integrado (8x128bits)
Anchura del controlador de memoria
Protección ECC DRAM
Espacio de memoria direccionable (Terabytes)
Espacio direccionable (virtual/físico)
Ancho de banda de memoria por procesador
1 vía
Modelo 140
Modelo 142
Modelo 144
Sí
128 bits
Sí
256
48/40
6.4 GB/s
-·- ..:..._ -
hasta 2 vías
Números de modelo
Modelo 240
Modelo 242
Modelo 244
Modelo 246
Sí
128 bits
Sí
256
48/40
6.4 GB/s
hasta 8 vías
Modelo 840
Modelo 842
Modelo 844
Sí
128 bits
Sí
256
48/40
6.4 GB/s
.
=-t� ... -. �n:;-..-. ¡_,c._ ..
AMD64
. - ��--'-
Informática simultánea de 32 bits y 64 bits
Tecnología HyperTransport™
Enlaces HyperTransport (totales/relacionados)
Anchura del enlace HyperTransport
Frecuencia del bus HyperTransport
Ancho de banda de 1/0 por procesador
Protección de datos de las cache L 1/L2
Protección de instrucciones de las cache L 1/L2
Entradas del Contador del Historial Global
Entradas L 1 TLB (datos/instrucciones)
Asociatividad L 1 (datos/instrucciones)
Entradas L2 TLB (datos/instrucciones)
Asociatividad L2 (datos/instrucciones)
Proceso de fabricación
1, 1,
-
' • �lid '
Sí
Sí
Sí
. = . 1, 1�1-;-..¡--.::...�,
� �-
3/0
16 bits X16 bits
800MHz
19.2 GB/s
ECC
Paridad
16K
40/40
Lleno/Lleno
512/512
4 vías/ 4 vías
.13 micras SOi
,)¡ _f ·-:- __ ,
Sí
Sí
Sí
3/1
16 bits X
16 bits
800MHz
19.2 GB/s
ECC
Paridad
16K
40/40
Lleno/Lleno
512/512
4 vías/ 4 vías
.13 micras SOi
' ' -:- .
Sí
Sí
Sí
3/3
'. -
16 bits X
16 bits
800MHz
19.2 GB/s
ECC
Paridad
16K
40/40
Lleno/Lleno
512/512
4 vías /4 vías
.13 micras SOi
Tabla 4.1 Características del núcleo del procesador AMO Opteron
87
-
4.2.1 La arquitectura AMD64 ( Hammer ó x86-64)
88
La estrategia del AMD de 64 bit es ofrecer una innovación de procesadores
a la base instalada de aplicaciones y a los sistemas operativos de 32 bit, mientras
se establece una base instalada de sistemas de 64 bit. La microarquitectura
Hammer ofrece una forma de upgrade flexible incorporando soporte para la
arquitectura x86-64 mientras continua ofreciendo soporte nativo para software x86
de 32 bit. Esto es logrado de una manera simple porque la microarquitectura
Hammer ya utiliza datos clave y direcciones de ruta que son de 64 bit e incorpora
un direccionamiento de espacio virtual de 48 bit y un direccionamiento de espacio
físico de 40 bit. El soporte de la arquitectura x86-64 está diseñado para tener un
mínimo impacto por la medida del sustrato del Hammer y ningún impacto por el
escalamiento de la frecuencia del procesador. Futuras mejoras al core del
procesador acelerará las aplicaciones tanto de 32 bits como las de 64 bits.
..
3.2 GB/s
1600MHz
Transmisi6n
-
I.)J:! .. \l\1
! 5.3 GB/s 128-bit
l·. 1{ 'T . L --
- :Q?.._:\R
,. 1 HT
HT
i 1
?-J CPlT � . __ ,
-
- .
--
3.2 GB/s
1600MHz
Transmisión
HT 3.2 GB/s
1600hfliz
Transmisión
Figura 4.1 Arquitectura del procesador AMD Opteron
89
El diseño de la arquitectura del procesador Hammer es optimizada con el
principal objetivo de entregar rendimientos de la nueva generación de procesadores
a los usuarios de la actual generación. Alcanzar este objetivo requiere la habilidad
para lograr un balance entre el rendimiento por ciclo de reloj de la microarquitectura
de la nueva generación y la habilidad de la microarquitectura para manejar más
escalas de frecuencia en una tecnología de procesos de fabricación dada.
El más claro ejemplo de esta filosofía de diseño se puede ver en los
cambios al pipeline base en el procesador Hammer de la generación previa. La
lógica de búsqueda y decodificación de instrucciones del front-end del pipeline ha
sido refinada para entregar un mayor grado de empaquetamiento de instrucciones
desde los decodificadores a los programadores de los tubos de ejecución. Lograr
este cambio requiere una redefinición de las etapas de los tubos con la finalidad de
mantener un alto grado de escalabilidad en frecuencia, resultando en dos pasos de
tubo adicionales, cuando se le compara con la microarquitectura de la generación
anterior. El producto final es un pipeline de operaciones con enteros de 12 pasos y
un pipeline de operaciones de punto flotante de 17 pasos.
Junto con el mejoramiento de la fecuencia del pipeline alargado para permitir
mejoras en la microarquitectura, el procesador Hammer será inicialmente producido
usando tecnología para procesos de fabricación de 0.13 micras.
SOi (Silicon on lnsulator). La microarquitectura es implementada para un
buen escalamiento en frecuencia con escalamiento de procesos de fabricación por
debajo de las 0.1 O micras. Al otro extremo de la ecuación de rendimiento están las
características claves que mejoran la habilidad de la microarquitectura del Hammer
para reconocer un IPC (lnstructions executed Per Clock) más elevado que el de
90
microarquitecturas de generaciones anteriores. Otras características de la
arquitectura x86-64 y un resumen de las ya expuestas se indican a continuación:
• Rutas de direcciones y datos clave de 64 bits, que incorporan un espacio
de direccionamiento virtual de 48 bits y un espacio de direccionamiento
físico de 40 bits
• Tecnología de proceso SOi de 0.13 micras, para disminuir la producción
térmica y mejorar la escalabilidad de la frecuencia.
• Dos pasos de conductos (pipelines) adicionales, en comparación con la
arquitectura de los procesadores AMO de la generación anterior, para
proveer mayor rendimiento y escalabilidad de frecuencia.
• La arquitectura AMO x86-64 amplía el juego de instrucciones x86 para
facilitar el procesamiento de 64 bits, y de ésta manera mantener la
compatibilidad con la extensa gama de software x86 y proveer una ruta
de migración para el procesamiento de 64 bits.
4.2.2 Controlador de· Memoria DDR DRAM integrado
A medida que las capacidades de la microarquitectura del procesador han
avanzado, una de las mayores limitaciones en la ganancia de rendimiento, ha
llegado a ser la habilidad de la arquitectura del sistema para entregar suficiente
ancho de banda de memoria al core del procesador mientras reduce la latencia de
acceso. La microarquitectura Hammer maneja directamente este cuello de botella,
integrando el controlador de memoria dentro del procesador, revolucionando la
forma en que un procesador basado en x86 tiene acceso la memoria principal. El
resultado es un ancho de banda bastante incrementado disponible directamente
para el procesador con una latencia reducida.
91
La microarquitectura Hammer incorpora un controlador dual-channel DDR
DRAM con una interfase de 128 bit capaz de soportar hasta 8 DDR DIMMs (cuatro
por canal). El controlador está diseñado para soportar memorias DDR PC1600,
PC2100 y PC2700 usando DIMMs unbuffered o registered. Esto se traduce en un
ancho de banda disponible para el procesador de hasta 5.3 GB/s con memorias
PC2700. Esta interfase directa puede reducir significativamente la latencia de
memoria vista por el procesador y la latencia continuara reduciéndose conforme la
frecuencia del procesador escale. Más aún esto puede permitir una utilización del
ancho de banda más agresiva aún por parte del hardware y software de
prebúsqueda para reducir más aún la latencia de memoria efectiva vista por el
procesador.
El controlador de memoria Hammer integrado tiene más impacto cuando se
utilizan sistemas multiprocesador. El controlador se convierte en un avance
importante en la escalabilidad de las arquitecturas de sistemas x86, permitiendo
multiprocesamiento "glueless" donde los anchos de banda disponibles para el
sistema escalan con el número de procesadores. En esta configuración el sistema
puede llegar a soportar hasta 32 DIMMs capaces de entregar un extraordinario
21.3GB/s de ancho de banda de memoria disponible para el sistema con memorias
PC2700.
El controlador de memoria integrado da como resultado un ancho de banda
mucho mayor cuando es comparado con la generación de procesadores AMO
anteriores, y latencias significativamente menores entre el procesador y la memoria,
y producirá un incremento en su rendimiento conforme los avances en la tecnología
de memoria se vayan alcanzando. Otras características del controlador de memoria
integrado se indican a continuación:
92
• Reduce las latencias durante el acceso a la memoria, en un sistema de
servidor SMP.
• Ofrece 256 Terabytes de espacio de memoria direccionable.
• La disponibilidad de ancho de banda de la memoria se escala con el
número de procesadores.
• El controlador de memoria DDR DRAM de 128 bits integrado tiene la
capacidad de soportar hasta ocho (8) DDR DIMMs por procesador.
• Disponibilidad de ancho de banda de la memoria de hasta 5.3 GB/seg
(con PC2700) por procesador.
4.2.3 Otras características
• Capacidad de escalabilidad de 1 hasta 8 vías, empleando la misma
infraestructura de hardware y software.
• Ofrece un bajo consumo de energía (1.2 voltios), para reducir la
generación térmica del sistema
• Los TLBs (Translational Lookaside Buffers) además de tener tamaños
de entrada más grandes con latencias reducidas, contienen un filtro de
baldeo permitiendo que múltiples procesadores compartan los TLB sin la
intervención de software.
• La predicción de saltos es aumentada para ofrecer un rendimiento más
elevado, particularmente en cargas de trabajo grandes, incrementando a
16k el número de contadores bimodales en el contador histórico global,
lo cual es cuatro veces el número en la actual generación.
93
• Protección ECC (Error Correcting Code) para la cache de datos L 1,
cache de etiquetas y datos L2, y DRAM con hardware de cancelación
para todos los arreglos Ecc· protegidos. La protección DRAM ECC
también incluye soporte para Chipkill ECC, el cual provee información
para recuperación desde errores que involucran a todo un chip DRAM.
Los arreglos no ECC protegidos cuentan con protección de paridad.
Estos arreglos incluyen la cache de instrucciones L 1 y todos los TLBs.
• Soporte a todas las extensiones de arquitectura Standard de 32 bit,
incluyendo la MMX de lntel y la 3DNow! Profesional de AMD
(combinando la tecnología 3DNow! Mejorada y la SSE).
• Soporte a todas las instrucciones necesarias para ser totalmente
compatibles con la tecnología SSE2
• Mayores Instrucciones por Ciclo de Reloj (IPC), las cuales se logran
mediante importantes funciones adicionales, tales como TLBs
(Translation Look-aside Buffers), filtros de descarga (flush filtres) y
algoritmos optimizados de predicción de bifurcaciones
4.3 Tecnología Hyper Transport
La tecnología Hyper Transport es un enlace de alta velocidad y elevado
rendimiento para circuitos integrados y ha sido diseñada para satisfacer las
necesidades de ancho de banda del procesamiento y de las plataformas de
comunicaciones del futuro.
Esta tecnología ayuda a reducir el número de buses, proporcionando al
mismo tiempo un enlace de alto rendimiento para los PC, las estaciones de trabajo
y los servidores, así como para numerosas aplicaciones integradas y sistemas de
94
multiprocesamiento, altamente escalables. Asimismo, ha sido diseñada para que
los componentes internos de los PC, y de los dispositivos de red y de
comunicaciones, puedan comunicarse entre sí, a una velocidad hasta 48 veces
superior a la que ofrecen las actuales tecnologías.
Se trata de un sistema novedoso de enlace de datos punto a punto para
circuitos integrados, el cual se actualiza con gran velocidad. Para el paso de datos
se sirve de enlaces serie de alta velocidad con anchos de 4, 8, 16 y 32 bits, y un
ancho de banda total que ronda los 12.8 GB/s, soportando multiprocesadores de 64
bits y tecnologías de última aparición como lnfiniBand de lntel y Ethernet de hasta
10 GB/s.
Hyper Transport se puede entender más como un protocolo que como una
nueva interfaz física de transporte de datos. En el protocolo Hyper Transport, los
datos están segmentados por bloques de datos o paquetes. Cada bloque de datos
puede tener una longitud definida y diferente de hasta un máximo de 64 bytes.
Slot. Gráfico
Memoria
Procesador � ____,AMD _ _:-- �
1 � 1
--1111--A_G_P_-8_X ___.,
�--Hyp
_11_1.m
1,;
er el
*
tran_sp
_ort_�
LPC
AC-97
Ethernet
AMD Hyper transp
ort Hub deE\S
USB 20
EIDE
PCIBus
PCI Slot
Figura 4.2 Arquitectura del sistema Hyper Transport
95
Similar a la escalabilidad mejorada en el ancho de banda de memoria, como
resultado de la integración del controlador de memoria dentro del procesador, la
tecnología de enlace Hyper Transport es construida dentro del procesador Hammer
para proveer anchos de banda escalables en los enlaces de interconexión entre
procesadores y subsistemas de E/S. Estos enlaces dentro del procesador Hammer
están configurados para una comunicación de 16 bit en cada dirección, operando a
frecuencias de 1600MT/s (megatransfers per second), para un ancho de banda de
3.2GB/s en cada dirección. En una configuración de cuatro procesadores el
procesador AMO Hammer interfacea con cada uno de los otros procesadores y con
los subsistemas de E/S a través de la tecnología Hyper Transport. Los links de
tecnología Hyper Transport entre los procesadores utilizan un protocolo coherente,
mientras los enlaces de E/S siguen un protocolo no coherente.
Con tres enlaces Hyper Transport y un controlador de memoria integrado en
el procesador, llega a ser necesario canalizar información sobre datos y comandos
a las interfases responsables tan eficientemente como sea posible. Para manejar
esta necesidad cuenta con una arquitectura de comunicaciones Crossbar (X-Bar).
El X-Bar canaliza la información sobre datos y comandos entre el controlador de
memoria, los tres enlaces Hyper Transport y el SRI (System Request Interface) del
procesador. Otras características de la tecnología Hyper Transport en los
procesadores Hammer se indican a continuación:
• Soporta hasta tres vínculos coherentes HyperTransport que proporcionan
un ancho de banda máximo de 19.2 GBps por procesador.
• Provee una interconexión de ancho de banda escalable entre los
procesadores, subsistemas de E/S y otros chipsets
96
• Ancho de banda de hasta 6.4 GB/seg por enlace, para soportar
interconexiones, incluyendo PCI-X, DDR, lnfiniBand y 1 0G Ethernet
Aunque todo esto suena a una nueva tecnología, lo cierto es que nVídía ya
ha estado implantando este sistema desde la aparición de su primera versión del
chipset nForce, sin embargo no se ha sacado todo el partido que se podía haber
sacado actualmente. Hyper Transport no ha salido al mercado con la intención de
sustituir a otro tipo de tecnologías de Entrada/Salida, sino para ofrecer un sistema
de conexión estándar que cumpla con los requisitos de conexión de elementos,
tanto de alta como de baja velocidad y transferencia de datos a través de la
memoria.
4.4 La serie chipset AMD-8000
Dentro del núcleo de los procesadores AMO de 64 bits, se encuentra,
además de la renovada arquitectura, ahora con 64 bits en potencia de cálculo, un
controlador de memoria integrado con un ancho de banda mejorado asociado al
núcleo del procesador y un bus de sistema capaz de controlar más de un
procesador, apoyado por la tecnología HyperTransport.
Los responsables directos de estas nuevas capacidades son los chipset de
control que los diferentes fabricantes pondrán en sus placas base, sobre las cuales
hablaremos más adelante. AMD dispone de la serie de chipset AMD-8000, tres
concretamente, responsables directos de las capacidades más importantes de
núcleo Hammer montados sobre una placa madre.
El primero de ellos es el AMD-8151, el cual incluye el nuevo controlador de
gráficos mejorado de AMD. Este nuevo chipset cuenta con un excelente
rendimiento de gráficos en las plataformas que disfruten de HyperTransport. Es
responsable de ofrecer soporte a las nuevas gráficas con interfaz de comunicación
97
AGP 3.0, de hasta compilación BX. Se espera mejorar los resultados de
comunicación entre la memoria del sistema y la memoria de la tarjeta gráfica,
aprovechando el mayor ancho de banda disponible.
En segundo lugar tenemos el AMD-8131, el cual está íntimamente ligado a
la nueva era PCI-X. Este dispositivo de alta velocidad, proporciona dos puentes de
bus PCI-X, independientes y de alto rendimiento, integrados con un túnel de alta
velocidad de tecnología HyperTransport. Gracias a este chipset, se ofrece un mayor
soporte de comunicación con otros dispositivos que también aprovechen la
tecnología HyperTransport, mejorando la flexibilidad del sistema y su capacidad de
periféricos a conectar, todos ellos basados en la tecnología PCI-X o inferior.
Por último tenemos el AMD-8111 HyperTrasnport. Este chipset sustituye al
tradicional puente sur o Southbridge, ya que dentro de él se almacenan todas las
funciones de control clásicas en el puente sur, como son los sistemas de
conectividad, tarjetas de sonido, sistemas de entrada/salida y gestión general del
sistema. Este chipset ofrece igualmente control sobre el bus de datos del sistema,
con soporte en este caso para ATA-133.
Está claro que se ha nombrado en todo este sistema de gestión al puente
sur del sistema, pero ¿que pasa con el puente norte (Northbridge)?, ¿desaparece?.
La respuesta es sí. Esta es una de las grandes ventajas de este Hammer, que
proporciona una mayor velocidad de proceso en todas las tareas que hasta la fecha
tenía encomendadas el puente norte. La razón de esta desaparición es la
integración de estas funciones en el mismo núcleo del microprocesador.
Además de los chipset AMD, habrá otros fabricantes de sobra conocidos,
VIA, SiS, que darán soporte en breve a este tipo de procesadores. Incluso ya se ha
anunciado uno de ellos, el nForce 3 de nVidia.
4.5 Mainboards desarrolladas con AMO Opteron
98
Antes de comenzar a citar algunos de los ejemplos de placas base del
mercado preparadas para albergar los microprocesadores Opteron de AMO,
conviene señalar la disponibilidad de tres de ellos actualmente en el mercado, el
Opteron 240, 242 y 244, con velocidades de 1.40 GHz, 1.60 GHz y 1.80 GHz
respectivamente.
Todos ellos incorporan, además de la arquitectura de 64 bits y la tecnología
HyperTransport, un controlador de memoria de doble canal integrado en el propio
chip, el cual consigue reducir la latencia y mejorar el rendimiento de acceso a los
datos de la memoria del sistema, especialmente en sistemas multiprocesador.
Estos procesadores incorporan además una memoria caché de segundo nivel de
1 MB, elevando el número de transistores incorporado en el núcleo hasta los 105
millones. Bajo el nombre de K8, los procesadores Opteron, cuentan ya con
fabricantes que proponen placas base con las que ha de hacer frente a la dura
competencia que supone el Xeon MP de lntel en plataforma multiprocesador, pero
se sabe de algunos otros fabricantes, además de los que vamos a mencionar aquí,
que contarán con placas base para estos nuevos AMO.
MSI es el primero de tos fabricantes que vamos a comentar. A través de dos
modelos de multiprocesador muy similares, K80 Master-F y K80 Master-FT, ofrece
soporte para esta nueva generación de microprocesadores de AMO mediante los
chipset AMO 8131 y 8111. Se valen de _un soporte de memoria de 144 bits que
puede montar DDR200, 266 y 333, ha�ta un máximo de 12 GB, repartidos entre los
6 bancos de que dispone, los cuales admiten memoria ECC. Dispone, en la versión
F de 3 slots PCI-X de 64 bits 66/100 MHz y 2 PCI de 32 bits a 33 MHz. La versión
FT dispone de un PCI-X y un slot Mini PCJ. Ambas placas base disponen de una
99
tarjeta gráfica integrada por parte de ATI, concretamente la Rage XL, un modelo
conocido por su alta integración en placas base para servidores. Esta tarjeta gráfica
puede alcanzar los 8 MB de RAM propia. Las placas se completan con dos puertos
PS/2, otros dos puertos serie, un paralelo y cuatro USB, amén de la doble tarjeta de
red.
Rioworks es el segundo fabricante que comentaremos, el cual es
ampliamente reconocido por su capacidad en el campo de las estaciones de alto
rendimiento y servidores. Además de ensamblar directamente sus propios equipos,
Rioworks dispone de modelos de placas base entre los que encontramos una
diseñada para K8 (Socket 940), denominada HDAMA. Esta placa dual de formato
eATX, como el anterior modelo de MSI, está basado igualmente en el AMO 8131 y
8111, y dispone de 8 bancos de memoria para doble canal DDR 333. Es capaz de
albergar hasta un máximo de 16 GB de memoria, algo más que el modelo de MSI.
Pero esta no es la única diferencia sustancial, ya que este modelo dispone de 4
conectores Serial ATA para sistemas RAID de diferente naturaleza (RAID O, 1 y 10)
y, además de los dos slots PCI de 32 bits y los dos PCI-X de 64 bits, dispone de
otros dos PCI de 64 bits. Incorpora la ya conocida ATI Rage XL como interfaz
gráfica, y de doble tarjeta de red de 1 Gbit.
Por último se tiene a la Tyan como último fabricante en la actualidad con
soporte para AMO Opteron. Este fabricante propone un único modelo para Socket
940, la Thunder K8S (S2880), la cual dispone de 6 bancos de memoria DDR 200,
266 y 333, hasta un máximo de 12 GB. Esta placa igualmente está controlada por
los chipset AMD-8131 y 8111. Dispone de dos slots PCI-X de 64 bits para
velocidades de 33/66/100 MHz y otros dos PCI-X para velocidades de 33/600 MHz.
Como añadido encontramos un slot PCI de 32 bits convencional. La tarjeta gráfica
100
nuevamente vuelve a ser la ATI Rage XL con 8 MB de memoria. Opcionalmente
esta placa dispone de controladora Serial ATA, pero lo que sí incorpora de serie es
la controladora de doble canal SCSI Ultra 320 además de la doble controladora de
red de 1 GBit.
4.6 Sistemas operativos
El 6 de enero de 2004, Microsoft ha distribuido la versión beta de su
Windows Server 2003 para sistemas ampliados a 64 bits, el cual proporciona un
elevado rendimiento a las aplicaciones tanto de 32 como de 64 bits, en sistemas
basados en el procesador AMO Opteron. La arquitectura subyacente se basa en
ampliaciones de 64 bits para el juego de instrucciones estándar x86, lo que permite
ejecutar de forma nativa las aplicaciones actuales de 32 bits, en los procesadores
AMO Opteron.
Al mismo tiempo, las nuevas aplicaciones de 64 bits se ejecutan en modo de
64 bits, lo que permite procesar un mayor número de datos por ciclo de reloj, un
mayor acceso a la memoria y una velocidad superior en los cálculos numéricos. El
resultado es una plataforma que se beneficia del gran número de aplicaciones
existentes de 32 bits y que proporciona, al mismo tiempo, una sencilla ruta de
migración hacia la informática de 64 bits. Windows Server 2003 se encuentra
actualmente en fase de desarrollo y su distribución está prevista para el segundo
semestre de 2004.
Los servidores más potentes del mundo con 2 y 4 procesadores X-86 están
ahora basados en los procesadores AMO Opteron.
5.1. Introducción
CAPÍTULO V
PROCESADOR INTEL XEON MP
Los servidores basados en el procesador lntel Xeon MP proveen
productividad, escalabilidad, formalidad y precio/rendimiento para un gran rango de
aplicaciones para empresas medianas. Este procesador incorpora la micro
arquitectura lntel NetBurst, la tecnología Hiper Threading y un cache integrado de
tres niveles en su arquitectura para plataformas de servidores de rango medio y
alto, que soporten cuatro o más procesadores en una configuración
multiprocesador. La arquitectura NetBurst de lntel provee soporte para
multiprocesamiento a velocidades de hasta 3.20 GHz y ofrece bus de sistema de
533 MHz. La tecnología Hiper-Threading incrementa la eficiencia del procesador
soportando múltiples hebras de software en cada procesador del sistema, y de esta
manera se incrementa el rendimiento del servidor en aplicaciones multi
enhebradas. La arquitectura de Cache integrado de tres niveles permite hasta 4MB
de cache nivel 3 y un mejor throughput de memoria para un mayor rendimiento en
la carga de trabajo de grandes servidores. Las plataformas basadas en el
procesador lntel Xeon MP son ideales para volúmenes de trabajos de servidores en
empresas de rango medio, que son intensivas en cómputo ó transacciones.
102
5.2. Principales características
La gama de procesadores lntel Xeon MP está diseñada específicamente
para servidores de nivel medio y "back-end" que realicen funciones como servicio
de aplicaciones, procesado de transacciones, gestión de bases de datos y gestión
de la cadena de suministros. El procesador lntel Xeon MP incluye tecnología de
múltiples subprocesos "Hyper-Threading" y microarquitectura lntel NetBurst para
ofrecer flexibilidad, potencia y fiabilidad a las plataformas de servidores.
A continuación se presentan las características técnicas del núcleo del
procesador más saltantes:
e-· -- ..:........· .,.._
...... �1� . .,.,...c,,1,..:r-...-.:,0-_:....-_ r,,_,,:
-·=o ... - ---
,,�
. .- -
Escalabilidad sin HW adicional
Frecuencias de reloj interno
Frecuencia del Bus Frontal
- ·-
Velocidad de transferencia de datos del Bus Frontal
Ancho de banda del Bus Frontal
Nº de micro-operaciones en cache de trazo de ejecución de nivel 1
Tamaño del cache de datos de nivel 1
Tamaño del cache de datos de nivel 2
Tamaño del cache de datos de nivel 3
Protección de instrucciones de las cache L 1/L2
Longitud de la interfaz de la cache de nivel 2 con el núcleo del procesador
Memoria física direccionable
Número de pasos de la tubería de predicción de salto / recuperación
1�-, --
. ,
·-
... •:.:. w. -- - :,,
°"•• ' .. · l � -i',a1o1t, l"JJf W
4 vías
- -- ....... -�--�
-
1.4, 1.5, 1.6, 1.9, 2.0, 2.2, 2.5, 2.7, 2.8 y 3.0 GHz.
400 MHz.
3.2GB
3.2 GHz.
12 K
8 KB
512 KB
1, 2 y4 MB
Error Correcting Code (ECC)
256 bits
64GB
20
__,._ .,. - _.. ' .. , - .... - L:)j'"'ir"l f«-f-1--...-L....,l t""o l
-
Buffer de destino de saltos del motor de ejecución especulativa
Longitud de los registros de punto flotante
1 1, - . .... , '.
4KB
128 bits
'1 ,--
-· ,,_
Cadencia de ejecución del Motor de 2 x velocidad de reloj interno
Ejecución Rápida (ALU)
Tecnología Hyper Threading™ Sí
Microarquitectura Netburst
Proceso de fabricación .13 micras SOi
Tabla 5.1 Características del núcleo del procesador lntel Xeon MP
103
Microarquitectura lntel NetBurst. Esta microarquitectura es compatible a
nivel binario con la generación previa de procesadores de Arquitectura lntel (IA-32).
Añade nuevas características comenzando con técnicas innovadoras que
incrementan la capacidad de ejecución del procesador tales como, Frecuencias de
Núcleo más Altas, un Motor de Ejecución Rápida y Ejecución Dinámica Avanzada.
La profundidad del pipeline en el procesador es doblada, permitiendo al
procesador alcanzar frecuencias de núcleo más altas. El Motor de Ejecución
Rápida permite que los dos ALUs de enteros en el procesador corran a dos veces
la frecuencia del núcleo, lo cual permite que muchas instrucciones con enteros se
ejecuten en la mitad de un ciclo de reloj de núcleo interno. La Ejecución Dinámica
Avanzada aumenta la ejecución especulativa y la predicción de saltos internos del
procesador.
Bus de Sistema de 400 MHz. El bus de sistema de 400 MHz es un bus
entubado cuádruple corriendo con un reloj de bus de sistema de 100 MHz,
haciendo posible velocidades de transferencias de datos de 3.2 Gigabytes por
segundo. El bus de sistema está diseñado para incrementar el throughput de
104
multiprocesamiento o de las aplicaciones del servidor multi-enhebradas y para
proveer el ancho de banda necesario a la tecnología Hyper-Threading cuando tiene
que acceder a la memoria y a los módulos E/S.
Cache de Trazo de Ejecución de Nivel 1. En adición a los 8KB de cache
de Datos de Nivel 1, el procesador lntel Xeon MP incluye un Cache de Trazo de
Ejecución de Nivel 1 que almacena hasta 12KB de instrucciones micro-operaciones
decodificadas en el orden de ejecución del programa. Esto incrementa el
rendimiento al prescindir del decodificador en el ciclo de ejecución principal y hace
un uso más eficiente del espacio de almacenamiento del cache, teniendo en cuenta
que las instrucciones que son reutilizadas no son almacenadas nuevamente. Esto
tiene por objeto entregar un volumen elevado de instrucciones a la unidad de
ejecución del procesador y a una reducción del tiempo requerido para recuperarse
de los saltos cuya predicción ha sido errada.
Cache de Transferencia Avanzada de Nivel 2 (512KB). Los 512KB de
Cache de Transferencia Avanzada (ATC) de Nivel 2 permiten un cauce de canal de
datos más elevado entre el Cache de Nivel 2 y el núcleo del procesador. El Cache
de Transferencia Avanzado contiene una interfase de 256 bits (32 bytes), que
transfiere datos en cada ciclo de reloj del núcleo. Como resultado, el procesador
lntel Xeon MP puede transferir datos a la velocidad del núcleo multiplicado por 32
bytes, los cuales en GBs son cercanos a dos veces la velocidad de transferencia
del cache de nivel 2 del procesador Pentium III Xeon. Esto contribuye a la habilidad
del procesador lntel Xeon MP para mantener las unidades de ejecución de alta
frecuencia ejecutando instrucciones reduciendo su capacidad ociosa.
Cache Integrado de Nivel 3 (4MB, 2MB or 1 MB). El procesador lntel Xeon
MP incluye un cache de nivel 3 adicional, localizado en el sustrato del procesador,
105
diseñado específicamente para satisfacer las necesidades de cómputo de los
servidores de aplicaciones empresariales. Esta disponible en opciones de 4 MB,
2MB o 1 MB y es emparejado con el bus de sistema de 400Mhz para proveer un
ancho de banda alto hacia la memoria. Su eficiente diseño provee un camino más
rápido para grandes conjuntos de datos almacenados en el cache del procesador.
Estos resultados reducen el promedio de retardo de memoria e incrementan el
rendimiento para la carga de trabajo de grandes servidores.
Frecuencias de Núcleo más altas. Las frecuencias de núcleo más altas
son posibles a través de la micro arquitectura NetBurst de lntel la cual dobla la
profundidad del pipeline comparado con la microarquitectura del P6 usado en el
procesador lntel Pentium III Xeon. Una de las pipelines claves, el pipeline de
predicción de salto/recuperación, está implementado en 20 pasos en la
microarchitecture lntel NetBurst, comparada con los 1 O pasos que tiene la
microarquitectura P6, Está tecnología incrementa significativamente el rendimiento,
frecuencia, y escalabilidad del procesador.
Motor de ejecución rápida. Las dos Unidades Aritmético Lógicas (ALUs)
en el procesador lntel Xeon MP son secuenciadas al doble de la frecuencia del
núcleo del procesador. Esto permite que instrucciones básicas con enteros, como
suma, resta, AND lógico, OR lógico, etc., sean ejecutadas en medio ciclo de reloj,
con lo que, el Motor de Ejecución Rápida de un procesador lntel Xeon MP de 2.00
GHz estaría corriendo a 4.00 GHz
Ejecución Dinámica Avanzada. El Motor de Ejecución Dinámica Avanzada
es un motor de ejecución especulativa que guarda las instrucciones que ejecutan
las unidades de ejecución. Este procesador puede ver 126 instrucciones en vuelo y
manejar hasta 48 cargas y 24 almacenamientos en el pipeline. También incluye un
106
algoritmo de predicción de saltos mejorado, que tiene el efecto neto de reducir el
número de saltos de predicción errada en cerca de 33% sobre la del procesador P6.
Esto lo hace implementando un buffer de destino de saltos de 4KB que almacena
mayor detalle de la historia de saltos anteriores, así como implementando un
algoritmo de predicción de saltos más avanzado.
Unidades multimedia y de punto flotante mejoradas. El procesador lntel
Xeon MP expande los registros de punto flotante hasta completar los 128 bits y
adiciona un registro para movimiento de datos, el cual mejora el rendimiento tanto
para aplicaciones multimedia como de punto flotante.
Streaming SIMD Extensions 2 (SSE2). Con la introducción del SSE2, la
microarquitectura NetBurst de lntel ahora extiende las capacidades SIMD, que la
tecnología MMX y SSE proveen, adicionando 144 nuevas instrucciones. Estas
instrucciones incluyen aritmética de enteros para SIMD de 128 bits y operaciones
de punto flotante de doble precisión para SIMD de 128 bits. Estas nuevas
instrucciones reducen el número total de instrucciones requeridas para ejecutar una
tarea de programa en particular y como resultado pueden contribuir al incremento
del rendimiento total. Ellas pueden acelerar un amplio rango de aplicaciones
incluyendo video, voz, e imágenes; procesamiento de imágenes; encriptación;
financieros; de ingeniería y científicas.
Características de administración. Sensores térmicos en el procesador
lntel Xeon MP permiten al sistema monitorear activamente y manejar condiciones
térmicas para reducir posibles fallas en el sistema. Este procesador también
incluye Código de Corrección de Error (ECC) en la arquitectura de cache de Tres
Niveles integrada para mantener la integridad de los datos de misión crítica. Este
procesador viene con un Bus de Administración de Sistema (SMBus) el cual
107
permite una eficiente comunicación entre componentes y un fácil acceso a la
información de administración de sistema almacenada en el ROM de información
del procesador. Estas características del procesador lntel Xeon MP permiten un
manejo a nivel de plataforma confiable, una operación de servidor robusta y una
fácil administración.
5.3. Tecnología Hyper Threading
La tecnología Hyper-Threading es una innovación de lntel Corp. que permite
que software apticativo multi-enhebrado ejecute hebras en paralelo. Este nivel de
tecnología de enhebrado nunca antes se había visto en microprocesadores de
propósito general. Internet, e-Business y el software aplicativo empresarial
continúan poniendo demandas cada vez más altas a los procesadores. Para
mejorar rendimientos en el pasado, el enhebrado fue habilitado en el software,
partiendo instrucciones en múltiples segmentos, de modo que múltiples
procesadores pudieran actuar sobre ellos. Con la tecnología Hyper Threading, el
enhebrado a nivel de procesador puede ser utilizado para ofrecer una mayor
eficiencia en el uso de los recursos del procesador, para un mayor paralelismo y un
rendimiento incrementado del software multi-enhebrado.
Yendo más allá de los GHz, lntel está cambiando la visión del diseño y
rendimiento del procesador soportando múltiples hebras de software en cada
procesador del sistema. La Tecnología Hyper-Threading rompe esquemas que
permiten nuevas capacidades y aplicaciones en la evolución de la Internet e
infraestructura empresarial. Asimismo permite a las aplicaciones de servidor multi
enhebradas ejecutar más de una hebra por procesador físico, incrementando la
capacidad del servidor de aplicaciones y permitiendo el escalamiento de
procesadores para manejar futuras cargas de trabajo.
108
La tecnología Hyper Threading provee entonces, paralelismo-nivel-hebra
(Thread-Level-Parallelism TLP) en cada procesador, resultando en una utilización
incrementada de los recursos de ejecución del procesador. Como resultado de ésta
utilización de recursos se produce un rendimiento mayor en el procesamiento. La
tecnología Hyper Threading es una forma de tecnología multi-threading (SMT)
simultánea donde múltiples hebras de software aplicativo pueden ser ejecutadas
simultáneamente en un solo procesador. Esto es logrado duplicando las etapas de
la arquitectura de cada procesador, mientras se comparte un solo set de recursos
de ejecución del procesador. La tecnología Hyper Threading también entrega
tiempos de respuesta más rápidos para cargas de trabajo en ambientes multi-tarea.
Permitiendo al procesador utilizar recursos en tiempos muertos que de otra manera
se perderían, la tecnología Hyper Threading provee un incremento de rendimiento
en las operaciones multi-tarea y multi-hebra de la microarquitectura NetBurst.
Esta tecnología es totalmente transparente para la plataforma. En efecto,
muchas aplicaciones son actualmente multi-enhebradas y se han beneficiado
automáticamente con esta tecnología. El hecho de que las aplicaciones multi-hebra
tomen total ventaja del rendimiento incrementado que la tecnología Hyper
Threading tiene que ofrecer, permite a los usuarios ver de manera inmediata una
ganancia en el rendimiento de sus procesos multitarea. Si bien, el software multi
procesamiento es también compatible con las plataformas implementadas con
tecnología Hyper Threading, ganancias de rendimientos mayores pueden ser
logradas adecuando el software específicamente para la tecnología Hyper
Threading. Esta tecnología complementa el multi-procesamiento tradicional
proveyendo capacidades adicionales para futuras optimizaciones de software y
crecimientos de negocios.
109
La tecnología Hyper Threading ofrece muchos beneficios al e-Business y a
las empresas tales como:
• Permitir mayor soporte a los usuarios mejorando la productividad del
negocio.
• Proveer tiempos de respuesta más rápidos a las aplicaciones e-Business
y de Internet.
• Incrementar el número de transacciones que pueden ser procesadas.
• Permitir compatibilidad con aplicaciones IA-32 y sistemas operativos
existentes.
• Manejar cargas de trabajo mayores.
• Ofrece espacios para crecimiento futuros de negocios y nuevas
soluciones.
5.4. Chipsets para servidores lntel
Un componente crítico para una correcta explotación de las características
de un procesador lo constituyen los chipsets y de alguna manera son los que
determinan finalmente las características más importantes de los servidores. lntel
no es la excepción y si bien existe una diversidad de fabricantes con
configuraciones de lo más variadas para un mismo procesador, lntel desarrolla sus
propios chipset. A continuación se muestra una tabla comparativa de los chipsets
para servidores más actualizados de lntel. Se ha incluido un chipset para el
procesador ltanium 2 a fin de ilustrar la alternativa de lntel para servidores de 64
bits.
COMPONENTE E7505 Chipset E7500 Chipset E8870 Chipset
Procesador lntel Xeon lntel Xeon lntel ltanium 2
Cahe Nivel 2 512K 512K
Nº Procesadores 1-2 1-2 1-4
Bus de Sistema 4001533 MHz ( data) 400 MHz 400 MHz ( data)
Memoria
Dual-Channel DDR Dual- Channel DDR
Tipo 266 ( PC2100 ) 200/266*
DDR SDRAM SDRAM registered ( PC 1600/2100*) ECC compatible SDRAM
Máximo 16GB 16GB 128GB
Número de filas y 1-6 filas 1-4 filas 32 DIMMs
módulos 2-6 DIMMs 2-8 DIMMs
Ancho de banda 512/256/128 Mbps 512/256/128/64 512/256/128 Mbit y 1-Gbps Mbps y 1-Gbps
ECC/ Paridad Sí Sí Sí
Controlador E/S
Soporte PCI (1 ) Segment. 32- bit (1 ) Segment. 32- bit ( 4 ) Segment. 64 -bit PCl2.2 PCl2.2 PCI/ PCI-X
IDE ATAf100 ATAf100 ATAf100
Serial ATA N/A N/A N/A
Puertos/ Controlador 3 controladores: 3 controladores: 4 controladores: USB 6 puertos, USB 2.0 6 puertos 6 puertos, USB 2.0
LANMAC Integrada 10/100 Integrada 10/100 N/A
Circuitos digitales AC'97 2.2 AC'972.2 AC'972.2
Otros AGP 8X/4X (0.8V)
Interfase gráfica or AGP4X/2X/1X N/A N/A
(1.5V)
Memoria ECC, Memoria ECC, Hot Plug ( memoria Single Device Data Single Device Data y procesador),
Administración de Correction , Hub Correction , Hub memoria ECC, fallas Interface ECC, Interface ECC, Memory Scrubbing,
Hardware Memory Hardware Memory Memory Device Scrubbing Scrubbing Failure Recovery
Administración E/S SMBus 2.0 / GPIO SMBus/GPIO SMBus/GPIO
Hyper-Threading Si Si No
Tabla 5.2 Características de chipsets para servidores de lntel
110
El último lanzamiento de chipset para servidores realizado por lntel lo
constituye el lntel E7501. Este chipset soporta plataformas de servidores con
procesadores duales lntel Xeon, con bus de sistema de 533 Mhz y
111
microarquitectura NetBurst de INtel. El diseño del chipset entrega anchos de banda
de bus de sistema, memoria, y E/S maximizados para elevar el rendimiento,
escalabilidad y productividad.
El chipset E7501 de lntel utiliza un diseño modular y ofrece una
implementación de plataforma flexible, hasta conocer las necesidades de expansión
de los servidores dual-processor (DP) a través de tres componentes básicos:
El lntel E7501 Memory Controller Hub (MCH), es el hub central para toda
la data que deba pasar a través de los elementos del núcleo del sistema, tales
como, el procesador dual lntel Xeon vía la interfase bus del sistema, la memoria
Double Data Rate (DDR) vía la interfase de memoria, y los hubs controladores de
E/S y los PCI/PCI-X de 64 bits vía las interfases de Hub lntel. El chipset E7501 de
lntel entrega a 4.3 GB/s de ancho de banda a través de bus del sistema de 533
MHz y hasta 4.3 GB/s de ancho de banda a través de dos canales de memoria
DDR SDRAM de alto rendimiento. El MCH también permite varias opciones de
configuración para un total de 3.2 GB/s de ancho de banda de E/S.
El lntel 82870P2 64-bit PCI/PCI-X Controller Hub 2, se conecta al MCH a
través de una conexión punto a punto Hub Interface 2.0. Hasta tres de estos
dispositivos pueden ser ata ch ad os al MCH, cada uno proveyendo anchos de banda
por encima de 1.066 GB/s para un total de 3.2 GB/s de ancho de banda de E/S.
Cada controlador contiene dos interfaces PCI-X de 64 bits independientes y dos
controladores Hot plug PCI, uno por cada interfase PCI-X. Cada segmento PCI-X
64 bits soporta múltiples slots PCI-X para conectividad de alto ancho de banda
tales como lntel Gigabit Ethernet y procesadores lntel de E/S.
El lntel® 82801 CA 1/0 Controller Hub, se conecta al MCH a través de una
conexión punto a punto Hub Interface 1.5. Este controlador provee interfases de
112
E/S heredadas a través de características integradas incluyendo un controlador IDE
de dos canales Ultra ATA/100 bus master y tres controladores USB para seis
puertos USB. Este controlador también ofrece un controlador System Manageability
Bus 2.0 (SMBus 2.0) un controlador LAN integrado, y un modulo AC'97 2.2 y una
interfase PCI 2.2.
5.5. Mainboards desarrolladas con lntel Xeon MP
La gama de sistemas implementados con procesadores lntel Xeon MP está
diseñada específicamente para servidores de nivel medio y "back-end" que realicen
funciones como servicio de aplicaciones, procesado de transacciones, gestión de
bases de datos y gestión de la cadena de suministros, gracias a la tecnología de
múltiples subprocesos "Hyper-Threading" y microarquitectura lntel NetBurst del
procesador lntel Xeon MP.
Antes de pasar a describir las características técnicas de dos mainboards
desarrolladas por lntel, mencionaremos algunas características que son comunes a
ambas, como la tecnología "Hyper-Threading", los 512 KB o 1 MB de caché L3
integrada y la microarquitectura lntel NetBurst que se combinan para eliminar los
cuellos de botella. El procesador lntel Xeon MP ofrece asimismo, la opción de
escalado vertical de servidores para tener hasta 4 u 8 procesadores, e incluso de
escalado horizontal con la agrupación en "cluster". Las plataformas de arquitectura
lntel permiten seleccionar entre multitud de proveedores de hardware y de software.
El resultado de esta libertad de elección son soluciones más económicas. Las
prestaciones a nivel de plataforma, como los componentes redundantes y de
intercambio en funcionamiento y el bus de gestión de sistema reducen la necesidad
de peñodos de inactividad y mejoran la gestión. Al utilizar eJ hardware y el software
del sector, los servidores de gama media y de gama alta basados en el procesador
113
lntel Xeon MP ofrecen toda una variedad de aplicaciones de centenares de
fabricantes. A continuación se presenta una síntesis de las principales
características de dos mainboards desarrolladas por lntel:
lntel® Server Board SE7505VB2. Desarrollada para servidores y
estaciones de trabajo. Soporta uno o dos procesadores lntel Xeon con 512Kb de
cache L2 integrado y un bus de sistema de 400/533 Mhz. Esta implementada con el
chipset lntel E7505 que le brinda una alta performance, calidad y confiabilidad.
Cuenta con cuatro sockets DIM con soporte para 8 GB de memoria DDR266 ECC
registrada. El soporte de memoria tolerante a fallas es implementado mediante el
lntel x4 Single Device Data Correction. Para la eliminación de cuellos de botella de
datos debido al uso intensivo de E/S cuenta con 3 buses PCI independientes en
cinco slots: dos PCI-X 64-bit / 100MHz, un PCI 64-bit / 66 MHz, dos PCI 32-bit /
33MHz.
Dos canales integrados Serial ATA le dan una alta performance en el
almacenamiento con protección de datos RAID. Dos conexiones para tarjetas de
red lntel PRO/100+ y una lntel PRO/1000, le permiten una amplia compatibilidad,
ancho de banda escalable y enlaces redundantes para ambientes de Networking.
Opcionalmente cuenta con un adaptador SCSI Ultra 320 single-channel. El video de
alta calidad viene integrado en un controlador de video ATI Rage XL con 8 MB de
memoria de video.
lntel Server Board SE7501 HG2. Desarrollada para servidores con cargas
departamentales. Soporta uno o dos procesadores lntel Xeon con 512KB de cache
L2 y hasta 2 MB de cache L3 integrados. Esta implementada con el chipset lntel
E7501 que le brinda una alta performance, calidad y confiabilidad. Cuenta con seis
sockets DIM con soporte para 12 GB de memoria DDR266 ECC registrada. Tiene
114
implementada una arquitectura de canal dual de memoria con hasta 4.3 GB/s de
transferencia de datos. El soporte de memoria tolerante a fallas es implementado
mediante el lntel x4 Single Device Data Correction.
Permite distribuir la carga de E/S a través de 3 buses PCI independientes en
seis slots: un 64-bit/133MHz PCI-X, dos 64-bit/100MHz PCI-X, y tres PCI 32-
bit/33MHz. Cuenta con un controlador SCSI Ultra 320 integrado en la tarjeta del
servidor con soporte para lntel RAID. Dos conexiones para tarjeta de red lntel
PRO/1000+, le permiten una amplia compatibilidad, ancho de banda escalable y
enlaces redundantes para ambientes de Networking. El almacenamiento de alta
performance esta implementado mediante de una tarjeta controladora SCSI Ultra
320 dual-channel integrada de Adaptec con mirroring y striping. El video de alta
calidad viene integrado en un controlador de video A TI Rage XL con 8 MB de
memoria.
5.6. Sistemas operativos
El soporte de sistemas operativos para los procesadores Xeon MP incluye
Windows Server 2003, Linux, MSC.Software, Red Hat Linux, SuSe Linux, Turbo
Linux y HP-UX. Resulta evidente su liderazgo en el mercado de servidores, por el
número de sistemas operativos que soportan, a diferencia del procesador AMO
Optaron. Esto también tiene su explicación en el hecho de que el lntel Xeon MP
tiene mucho más tiempo en el mercado.
6.1 Introducción
CAPÍTULO VI
COMPARACIÓN DE PROCESADORES
Hasta este momento hemos detallado la manera en que, dos de los más
importantes fabricantes de microprocesadores en el mercado, han planteado sus
estrategias para enfrentar al mercado de los sistemas multiprocesadores, basados
en esquemas de organización interna de procesadores bastante diferenciados.
Toda esta estrategia, se traduce luego en características y especificaciones
técnicas que, cada vez con menos precisión, nos da una idea de cuan conveniente
puede ser una u otra opción. Una elección basada simplemente en la evaluación de
estas especificaciones es muy aventurado, y con poca probabilidad de acierto. Si
las organizaciones internas de los procesadores fueran similares, tal vez
tendríamos una mayor probabilidad de éxito en nuestra elección, pero esto es algo
que muy pocas veces se da en la práctica, salvo de que se trate de dos
procesadores de la misma familia.
Al momento de tomar una decisión sobre cual es el procesador más
conveniente para atender una necesidad de procesamiento, se deberán tener en
cuenta también otros aspectos como, que mainboards del mercado soportan dicho
procesador y con que chipset (conjunto de chips encargados de manejar el acceso
116
a la memoria y/o los módulos de E/S) están implementadas. El binomio mainboard
- microprocesador es el que mejor define las opciones que ofrece el mercado;
dentro de éstas deberemos seleccionar la más indicada para atender nuestra
necesidad. Las características de la mainboard están dadas fundamentalmente por
el chipset, que por lo general pertenecen a una tercera empresa. El chipset define
los tipos memoria y unidades de E/S que soportará la mainboard. Un paso más
será, verificar si las instrucciones de máquina del procesador son soportadas por el
sistema operativo con el que vamos a trabajar y en que medida éste explota
adecuadamente las bondades del microprocesador.
6.2 Comparación de tecnologías
El rendimiento global que se puede obtener de un computador depende de
cómo sus distintos componentes trabajan juntos para realizar una tarea. El efecto
de cada componente individual puede variar dependiendo de, en cuanto está
interviniendo en ejecutar una aplicación particular.
Se estima que aproximadamente el 50% del rendimiento de un sistema
depende de su procesador o CPU, cuando se ejecutan aplicaciones en ambientes
gráficos como Windows. Otros componentes tales como memoria, vídeo y disco
también juegan un papel importante. Por tanto, cuando se elija un sistema, se debe
de empezar por buscar cual es el procesador que ofrece el mejor rendimiento para
el software que se desea ejecutar a un precio razonable. Luego entonces se deberá
empezar a analizar los otros componentes del sistema para asegurarse que se
benefician de todas las ventajas de la potencia del procesador.
Con el correr del tiempo el diseño y fabricación de procesadores cada vez
es más sofisticado, tanto por las nuevas técnicas de fabricación, que permiten una
integración cada vez mayor de transistores en un solo chip, con lo que se consigue
117
incrementar las velocidades de transmisión de datos entre los componentes
internos del procesador, como por las permanentes innovaciones en la arquitectura
interna de los procesadores que tiene por finalidad incrementar el rendimiento
efectivo del procesador. En la Tabla 3. se presenta un cuadro comparativo de las
innovaciones tecnológicas más saltantes de ambos procesadores, para
implementaciones de 2 y 4 vías (procesadores).
El rendimiento de un microprocesador dependerá mucho de la mainboard,
llámese chipset, y del sistema operativo con el que se trabaje, pues solo si ambos,
cada uno en su ámbito, explota intensivamente cada una de sus fortalezas, el
resultado será tan bueno como lo que se esperaba. Mientras más especializada la
necesidad y más especializado el microprocesador, el rendimiento será mucho
mayor. Mientras más generalizada sea la aplicación hacia la cual se orienta al
microprocesador, menor será la perfomance que se logre para una aplicación
específica.
Otro aspecto importante a tener en cuenta es el tiempo de vida útil del
sistema que se va adquirir, esto significa que no solo se debe evaluar su capacidad
para gestionar el software de hoy sino que, si dispone de los recursos necesarios
para ejecutar los cada vez más complejos programas del día de mañana.
Arquitectura
Tecnología de
acceso a
memoria
Tecnología
del bus
primario
118
Servidores basados en el Servidores basados en el
procesador AMO Optaron procesador lntel Xeon
Arquitectura AMD64 Arquitectura IA32
• Permite procesamiento • Permite procesamiento de 32
simultáneo de 32 y 64 bits bits únicamente.
• Permite migrar de manera • Las empresas que requieran
natural a procesamiento de 64 de los 64 bits, deberán migrar a
bits. una nueva arquitectura.
Controlador de memoria DDR Controlador de memoria
integrado "Northbridge" via FSB
• Reduce la latencia para • Retardos en la lectura de
lecturas de memoria rápidas memorias por paso a través del
• Provee una ruta dedicadaconcentrador de controladores
entre el procesador y la de memoria.
memoria. • Procesadores compiten por el
• El ancho de banda de laancho de banda del FSB
memoria escala conforme se • Memoria y E/S deben
añaden procesadores. compartir ancho de banda FSB
Tecnología HyperTransport Bus de E/S
• A 6.4 GB/s de ancho de banda • Cada uno de los PCI-X
por enlace, para soportar bridge's2 hub tiene solamente
interconexiones Fiber Channel, la mitad del ancho de banda.
Gigabit Ethernet, PCI-X, PCI-X • El bus interfase 1/0 Hub3
2.0, Serial ATA, Serial Attached puede ser sobrecargado por la
SCSI y 10G Ethernet. demanda de dispositivos E/S.
Tabla 6.1 Comparación de procesadores de 2 vías
Arquitectura
Tecnología de
Acceso
Memoria
Tecnología del
Bus Primario
119
Servidores basados en Servidores basados en
Procesador AMD Opteron Procesador lntel Xeon
Arquitectura AMO 64 Arquitectura IA32
Provee alto rendimiento Provee alto rendimiento de
simultáneo en procesamiento procesamiento de 32 bits. No
de 32 y 64 bits. Arquitectura ofrece procesamiento de 64 bits
'Glueless' hasta 8P
Control de memoria DDR "Northbridge"-style Memory
integrado Controller via Front Side Bus
Provee baja latencia de Los cuatro procesadores
acceso a memoria y anchos compiten por el ancho de banda
de banda que escalan con el del bus de memoria y del front-
número de procesadores. side bus. Soluciones 8P requieren
de más chips.
HyperTransport™ Proprietary Hub 1/0 Buses
Technology Los puentes y concentradores de
Hasta 6.4 GB/s de ancho de dispositivos pueden ser saturados
banda por enlace. Provee por las demandas de E/S de los
conexiones de alta velocidad periféricos conectados.
entre procesadores y el núcleo
de la lógica.
Tabla 6.2 Comparación de procesadores de 4 vías
Una forma más objetiva de comparar procesadores es a través de sus
especificaciones técnicas, las cuales por lo general se ajustan a ciertos estándares
del mercado en cuanto a su denominación y métricas. Si bien, una simple
comparación de estas especificaciones no nos asegura que un procesador sea
mejor que otro, si nos da una pauta sobre órdenes de comparación.
120
Comparación de procesadores AMO Opteron
lntel lntel para servidores Xeon MP* ltanium 2**
Escalabilidad modular Hasta 8P Hasta 4P Hasta 4P
Cómputo de alto rendimiento de 32 Sí Sí Sí
bits
Cómputo de alto rendimiento de 64 Sí No No
bits
Controlador de memoria DDR Sí No No
integrado
Velocidad del bus frontal 1.4-2.0
400 MHz 400 MHz GHzt
Ancho de banda del bus frontal 11.2-16.0
3.2 GB/s 6.4 GB/s GB/st
Ancho de banda máximo entre 6.4 GB/s 3.2 GB/s 6.4 GB/s
procesadores
Soporte de memoria DDR200 / 266 /
DDR200 DDR200 333
Ancho de banda de memoria para 10.6 GB/s 6.4 GB/s 6.4 GB/s
sistemas con 2 procesadores
Ancho de banda de memoria para 21.2 GB/s 6.4 GB/s 6.4 GB/s
sistemas con 4 procesadores
Cache L2 1 MB 512 KB 256 KB
Cache L3 N/A 2MB 1.5 MB/3 MB
Ancho de banda de E/S máximo 12.8 GB/s tt 4.8GB/s 6.4 GB/s
para sistemas con 2 procesadores
Ancho de banda de E/S máximo 25.6 GB/s ttt 4.8 GB/s 6.4 GB/s
para sistemas con 4 procesadores
Soporte para el conjunto de SSE, SSE2 SSE,SSE2 SSE, SSE2
instrucciones SIMD
t Con el controlador de memoria integrado al procesador AMO Opteron, el bus frontal (interfaz con la memoria), opera a la velocidad del procesador.
tt Sistema con 2 procesadores AMO - AMO Opteron 200 Series con un bus entre procesadores HyperTransport y 2 buses de E/S HyperTransport con memoria OOR333.
ttt Sistema con 4 procesadores AMO - AMO Opteron 800 Series con 4 buses entre procesadores HyperTransport y 4 buses de E/S HyperTransport con memoria OOR333. * Con el chipset Server Works GC-HC
** Con el chipset lntel E8870
Tabla 6.3 Comparación de procesadores para servidores
121
6.3 Comparación mediante benchmarks
Un error frecuente es medir el rendimiento entre PCs estableciendo la
comparación entre la velocidad del procesador en GHz o velocidad del reloj. Es
algo así como utilizar RPM para medir la velocidad de un automóvil. Así como las
RPM no indican cuan rápido está circulando un automóvil, los Gigahertz no indican
cuan rápido se ejecutará un programa. Es, por tanto, inadecuado comparar cuan
rápido dos PCs realizarán una tarea comparando únicamente velocidades de reloj o
Gigahertz y menos aún si se trata de una gama de servidores. Por ejemplo, un
procesador Pentium IV corriendo a 2.4 Gigahertz supera fácilmente a un
procesador lntel Celeron a 2.7 Gigahertz. Estas es una de las razones por las que
la industria creó las pruebas de rendimiento o benchmark.
Un benchmark para computadoras es típicamente un programa de
computadora que ejecuta un estricto set de operaciones (la carga de trabajo) y
retoma alguna forma de resultado (la métrica), reflejando como la computadora
testeada lo ejecutó. Las métricas de los benchmark para computadoras usualmente
miden velocidad (que tan rápida fue completada la carga de trabajo) o el throughput
(cuantas cargas de trabajo por unidad de tiempo fueron medidas). Corriendo el
benchmark en varios computadores permite hacer una comparación entre ellas.
Uno de los benchmark más difundidos y reconocidos por la industria
corresponde a la organización SPEC, acrónimo de Standard Performance
Evaluation Corporation, la cual es una organización sin fines de lucro compuesta
por fabricantes de computadoras, integradores de sistemas, universidades,
organizaciones de investigación, publicistas y consultores, cuya meta es establecer,
mantener y aprobar un conjunto estandarizado de benchmarks relevantes para
sistemas de cómputo.
122
El benchmark utilizado para presentar una comparación de los procesadores
lntel Xeon MP y el AMO Opteron ha sido el SPEC CPU2000, por ser el que más
estresa la comunicación entre el núcleo del procesador y la arquitectura de
memoria, a fin de poder evaluar lo que constituye el mayor cuello de botella para los
procesadores hoy en día. Sin embargo existen otros benchmark que están
orientados a evaluar el desempeño, no solo del procesador sino del sistema
computador en su conjunto, como servidores de bases de datos, de aplicaciones,
de páginas Web, de comunicaciones, entre otras. El SPEC CPU2000 se centra en
el rendimiento de cómputo intensivo, lo cual significa que este benchmark enfatiza
el rendimiento de:
• et procesador del computador (CPU)
• la arquitectura de memoria, y
• los compiladores.
El SPEC CPU2000 está conformado por dos sub-componentes que se
enfocan en dos tipos de rendimiento de cómputo intensivo:
• CINT2000 para medición y comparación de rendimiento en cómputo
intensivo de enteros, y
• CFP2000 para medición y comparación de rendimiento en cómputo
intensivo de punto flotante.
Cabe anotar que el SPEC CPU2000 no estresa otros componentes del computador
como los discos duros, el trabajo en red, el sistema operativo o las características
gráficas. A continuación se muestran resultados de benchmarks efectuados con el
SPEC CPU200 a los procesadores lntel Xeon MP y al AMO Opteron. El
SPECfp2000 es la métrica del sub-componente CFP2000 y el SPRCint2000 es la
123
métrica del sub-componente CINT2000, ambos han sido empleados para la
comparación de los procesadores.
l-1e\vlett-Packard Co1npany SPECfp2000 = ProLiant BL40p (2.8GHz, lntel Xeon f\.1P) SPECfp_base2000 =
�-L'· �e. .Jll•--11.......::u.rucu=p.ff!, llir=ati= 11x11�11.1c
1112
1081
lbÍl!nlln! llu,. illnsl! 1000 2000 3000 AOOO Dau:bnmrlr Tim.i, � Rada, Ranlimr Ratio ,.
t�!;;;;;�¡==���t==!�ac=!��l==J�it=J���E�·�·�·�·�-�-�-��,f.3 ..•... , ...•...•...•...• 168..-'.ise 1600 121 1:30.S 122 [307
171.!Mm 3100 271 11,t.s 278 l 115
lTI.tnesa 1-400
l '7&.118la.al 2<.JOO
l 79.,art 2600
188..ammo- 2200 139.lucas 2000 191.fmaJd 2100
200.sixlrack l 100
123 1134
12:5 2325
1?6 1476
126 1032 1 :51
223
18:5 222
2-07
1261
.S30
i23 113-4 12:5 2326
154 1690
l0:5 123-4 )46
.221
llB
222 205
1301
m
10')5 9-46
531
301.,ami 2600 272 273-
CPU: CPU:MHz: FPU: CPU(!l)aiabled. CPU(!l)il�able: Parallel: Prim:uy Cuche: Sooond:uy Cache: L3 Cache: OdierCadte.: M.8mM)·: Disk Sub:.\'sCt?m: Other Hntdn•nti!:
HanlwaM"e
Jntel Xroo MP(1.80Hz.. 400MHz. bm) 2800 Inwera1ed
1,2,4
12){ mi,cro.-ops I + 8JCBD oD chip 512K.B(l+D)on chip 20481CB(l+D} cm chip N/A 2x512lv!B PC!lOO 2xJ6.4GB 15X. UJlrallO SCSI
O�ral.inf, Sy� Cornpiler:
File Systcm: Sys:tcm StDte:
Software
Figura 6.1 Benchmark CFP2000 de servidor con procesador lntel Xeon MP
Lo primero que se puede observar es, como ya se ha mencionado, la
especificación de MHz del CPU no es necesariamente un buen indicador para
comparar dos procesadores de tecnologías diferentes. Indudablemente, por ser la
tecnología del procesador AMO Opteron de una generación más reciente que la del
lntel Xeon MP, la diferencia de Mhz, es compensada por la arquitectura interna del
124
procesador. También debe estar influyendo la cantidad de memoria cache L 1 y la
velocidad de la memoria RAM empleada en cada computador.
affl CFP2000 Result tpet C\Jp_,,�,-�-..-...n.a.,.i.,,i Pt:,-�EwlJoliunC""""•'óm
Advanced Micro Devices SPECfp2000 = 1293
Rioworks HDAMA :\-tothcrboard, AMO Optcron 246 SPECfp _base2000 = 1209
i,:IC"D,-.� .... "C>'I '"""'""'Ra�-
Dmdosanlr n-
161.. 1600
171-sMm 3100
172..tMñd ISOO
173..aoolu 2100 lTI_m,e!IB. 1-\1100
17&.a;ela,,,l 2900 179.at 2600 18].aaoalr.a IJOO
Ul'7-fa,c8R!C 1900 UIS.ammo 2200 189..ltlc:as 2000
191-fmáld 2100 200_sixtnck 1100
:301..IID!lii 2600
CPU: CPUMHz: FPU: CPU�}embled: CPU(!!} on:Lmble: PBDllel: Primll.l)' Cache: Seoonduy CIIChe: Ll C-acbe: OlherCache: Memiary: Disl.�skm: Olher Hudware:
AJl.'IU. -'-Ultan, "'i at::li&. &I•�
.... .._ Ranlne Ratio Ranlne Ratio
122 1308 ll l 1-06
179 17.!'.J 155 1996 16J 110.S 162 lll-f
203 1033 18.1) 1110
99.:5 1•07 'YT.1 1-03
161 1712 1-\110 207-\11111 lUf 167 1557 125 1037 106 1230
133 1'25 DO 1-465
113 1200 179 1226 147 13.51 l.f7 1357 176 1192 176 1192 225 •u 201 5-\118
2AO 10&5 230 1132 Hardware
r�ron2<16
ln1ep!ed 1 2 No 64K.BI +64KBD Do chip 102-\IIK.B{l+D}OD chip NIA NIA 1-:51::r..lB �100 DOR ...... cdSDRAt.lCL.:!.J 12008 7200 RPM IDE None
�-.=.i.•u.::1 puu11o11n:A11.�11. >U.\!l!i""-""-> 101.11116-u,cA,-.:111. �p.;uiv..,
1000 2000 3000 -\11000 1 1 ' 1 1 ' t 1 1 1 ' 1 ' 1 . 1 • f • 1 • t • 1 • J , 1 1 J r 1
''''
:
'
' ''
Opemtin8 �stem: Comptl.e:r:
Fil.e S)·n.ern: S)·sreru Stare:
Software P.� W........,,Sa.,., ::003. �&lliun .... e,::..., .-..�!12 ..... S:...,.,.bdd� ����m:=:ru1 ..... D1
_Ll>aoY ... Nll'S
Dofault
Figura 6.2 Benchmark CFP2000 de servidor con procesador AMO Opteron
En la comparación de cómputo masivo de punto flotante se está
comparando un computador implementado con un procesador lntel Xeon MP que
está preparado para operar como servidor de rango medio, mientras que el
computador implementado con el procesador AMO Opteron corresponde a lo que
se conoce como un servidor de entrada.
125
., CINT2000 Result a;¡,�1-qj/,1 -l)I ll9'J.-.'ó'>2 S..-.,4;,;J "-'"""""'"" E\.-.11,.;on CmpJ,'•lil>n
Hewlett-Packard Company S PECínt2000 = 1249
ProLiant BL40p (2_8GHz, lntel Xeon tvtP) SPECint base2000 = 1202 -- P. �-�a:lf-.-- .... 6-p•n). t11Mlua .... ,.�·�"-� z:,,a,..!J w ttUnliu,rc A,.'Qjl. Jut-J.IU.> 1.:KGll&arrc: A\'íltl. JLn�..:�
Ra,.,.,.ac-e a. .. ..., 500 1000 1500 2000 Dmo:kaawk n.e Randme RadD � Rlldt>
' 1 ' 1 ' ' ' 1' 1 • 1 . ' . 1 • • • 1 . 1 . 1, , , 1 , , , 1
16,t_azin 1-4100 128 1090 128 1091
17.b'Cll' 1-4100 146 '60 1-415 '966 :
176..acc llOO 76.'1 1,:1, 69.8 1575 '
18Lmcf UIOO 212. 848 205 81IO '
116.tt.aft\• 1000 92..0 1087 ?2.1 1086 '
19'Lmmll!r UIOO 160 1121 158 1137 252- lJOO 105 l2AO 91.2 l-425
2j:]_l'JAll'lllml: 1800 uo 1213 l)J 1357 254_t111D 1100 TI-5 1•1• TI.5 1-420 2jj_ VOl'le:K 1900 100 18]7 IOJ 1342 256..bzip2 1500 1,t6 lOll lJ9 108.2 ! 30(t-twolf 3000 218 1378 205 l-460
JbrdW!U'f s.tlw11re CPU: lJJIBl Xeoa MP{1.80Hz, 400MHz bm) Operatins �stmn: W-" � .Act,,.,Cól _ Oluild ?l� BP3)
CPU:MHz: 2SOO Compilar: faloil c.+ �ltt 11 l!lltl.t ::llQJOIIUZ. FPU: In1e�d ,_,__._.....,.SUIIM.NET 1.í1.!Mli6jlob�
llk,,:,O,,llS-.lh:opL,laa, 1.0 CPU(s}-bled: l Fil.a .Systau: Nil'S CPU(s} or:rl81abl8: l.2,-4 Systan Sta&e: Hypanhl'l!llldio� disabJed iu BJOS Puallet No Primuy Cathe: l2JC. nñc:m--0ps J + 8KBD cm chip Seoooduy C.aclle: .512KB{l+D}OB chip l.Jü1che: 2CMSJCBtl+D}on c1iip OtherCadb!: NJA �y: -4x512MB PC:HOO Disl. �stem; 2x36.4GB l.5K Ultral20 SCSI Other Huélwue:
Figura 6.3 Benchmark CINT2000 de servidor con procesador lntel Xeon MP
En la comparación de cómputo masivo de enteros se está comparando el
mismo computador implementado con procesador lntel Xeon MP, mientras que el
computador implementado con el procesador AMO Opteron corresponde a lo que
se conoce como una estación de trabajo; pero habría que tener presente la gran
diferencia que existe entre en la cantidad de memoria cache y la velocidad de las
memoria RAM, en la que el computador implementado con AMO Opteron supera
ampliamente a la implementada con el lntel Xeon MP.
126
91 CINT2000 Result Cup�•W,t ·'01 !)l)l,1.,..'002 Sr.>nd.lid l'c,bau,,e,e El.wllionc......,..�1i1>n
Advanced Micro Devices SPECínt2000 = 1335
ASUS SK8N Mothcrboard, AMO Optcmn (TM) 146 SPECint base2000 = 1271
�� ... ....,, ·--, AUU. -AWl.m. . ...... •01. llalt: �_, L.u �ILll&lln:A\IUII. l>CV"'-'-'U� llllalMUICA'-IQ:tJ. ra,.�......, R.l!n:ace o. ... ._ 500 1000 1500 2000
a.-a...rk ......, Racirae Rado lbnl,ae RadD ' 1 1 1 1 1 ' 1 1 1 ' ' ' 1 . 1 1 . 1 1 . , . 1 1 . 1 1 ' . ' 1
1�.lmD 1-400 128 1096 12-4 1127
175.Vlll' uoo 129 10&3 129 IOllJ :
176..m= 1100 &'.!JI 1310 75.3 1-461
lSLmcf UIOO 1� 92.S 195 923
116...cnfb• 1000 TI.O 1370 7J.O IJ69
197.DIIU!l!r UIOO 146 1237 1-45 1239 ' '
2>2.eoo IJ00 '°-º l,I� 76.2 1707
2.Sl.08'lllml: 1800 135 1330 125 u•J
2.S-4.aan 1100 77.6 1418 77.5 1-419
2.>5. varle:K 1900 '6..1 1978 96.1 1978 .
' 2S6..bz:iP2 1062 1128
' 1500 141 l33 '
:300.twolf 3000 237 1266 2CM 1-468
HardWat'e Software CPU; AMD Opw»u {TM) l-16 OpentÍff8 SysUm: MmmftWiodawJ;XJ>l'niíasámml (SPla) CPUMH.z: 2000 Compilar: FPU: útteerat,ed lnlcl C/C++ 7 O lull :!00::1 ::1 !l.
t.len-:G. Vi- ,.,.._, NET T.il!M66(1'"' lhdricl\ CPU(!l}-bled: l t.ler,,Q,,a!.........,......,. �o CPU(!I} ordBrable: l Fila System: NTFS PIIDlllel; No .Syswu.Stale: Dafault Primuy C-ache: �[ +64KBD<>o chip Seoouduy Cethe: 1024X.Btl+D}on chip LJCJ!ehe: NJA OlharCM-M: NJA Memo,y: :td12""8l'L-$ll00bllll.� llCC � L� Disk5ubi\-ll1tlm: :SATA. W""lffll DqiL11 'lt"'J>3fiOClD. l<I< lJllll Olher HtudwllA!: None
Figura 6.4 Benchmark CINT2000 de servidor con procesador AMO Opteron
6.4 Evaluación de estrategias de fabricantes
Es importante al momento de seleccionar un procesador, sobre todo si se
está seleccionando una plataforma, conocer las estrategias actuales y a futuro de
los fabricantes, para asegurar que se compatibilizan con las proyecciones a corto y
mediano p1azo de la organización que la va utilizar. Una plataforma no es algo que
se pueda cambiar todos los años. Por esta razón se presenta a continuación un
análisis del escenario presente y futuro basado en las estrategias de los dos
fabricantes.
Con el lanzamiento del procesador Opteron de AMO, se llena un vacío en
cuanto a procesadores para el segmento corporativo que pudieran competir con los
127
procesadores Xeon e ltanium de lntel, los cuales corren a 32 y 64 bits
respectivamente. La apuesta de esta tecnología de AMO es más agresiva y supone
competir con un solo procesador contra toda una estrategia de mercado de lntel,
pero puede ir más allá para hacer ingresar este tipo de procesadores en el
segmento del consumidor final.
Por su lado, lntel ya ha alcanzado una velocidad de 3,4 GHz en sus
procesadores para equipos de escritorio con su gama Pentium 4 y es sólo cuestión
de tiempo para los nuevos lanzamientos con mayor velocidad en este campo.
Mientras tanto, AMO se había conformado con hacer presentaciones de productos
con una tecnología diferente que no ha superado esta velocidad en reloj del
procesador pero que esta compañía asegura que funciona a velocidades
semejantes y les ha colocado la referencia +2400, o +3000 y ahora anuncia uno
nuevo con capacidad +3200.
Pero en realidad, donde se AMO e lntel centrarán la competencia no es el
segmento de los computadores de escritorio, el cual ha decaído mucho debido
principalmente a la crisis mundial en el sector de la tecnología y las
telecomunicaciones, sino en el sector corporativo, donde las necesidades son
diferentes y deben seguir funcionando pese a la recesión.
Pero la competencia de AMO con Opteron, no será tan fácil a pesar de
convertirse en una novedad valiosa para las empresas y al apoyo que ha recibido
por parte de Microsoft en el desarrollo de esta tecnología, principalmente por el
compromiso de las principales compañías entre ellas IBM, Dell y HP con los
desarrollos de lntel.
El nuevo Optaron, se presentará en diferentes versiones que dependen de
la velocidad y la cantidad de procesadores que se podrán integrar
128
simultáneamente. Así, el Opteron 100 se podrá instalar solo, el 200 podrá
integrarse con otro procesador y el Opteron 800 podrá albergar hasta 8
procesadores en el mismo servidor y en la serie 200 hay referencias específicas
como son el 240 que corre a 1,4 GHz, el 244 a 1,6 GHz y el 248 a 1,8 GHz. Los
precios que AMO ha sugerido por estos últimos procesadores es de US $283,00 US
$690,00 y US $794,00 Dólares respectivamente. Así, la competencia por el
segmento corporativo se hace más interesante y puede generar mejores opciones
para los usuarios en todo el mundo.
6.5 Tendencias del mercado en servidores de 64 bits
Una opinión neutral lo constituyen las empresas que diseñan y producen
servidores y dentro de estas IBM es la más importante por el número de servidores
vendidos y su volumen de ventas de los últimos años, por lo que a continuación se
presenta una síntesis de lo que es su estrategia para sistemas en 'cluster'.
En el otoño boreal, IBM Corp. distribuirá su primer servidor en "clúster"
basado en el microprocesador Opteron de 64 bits producido por Advanced Micro
Devices lnc. El nuevo sistema, utiliza el mismo chasis que el sistema eServer
Cluster 1350, con procesador Xeon, de lntel Corp.
El modelo es un sistema de dos procesadores montados en bastidor con
dos procesadores de 1.8 GHz AMO 244 Opteron. Cuando el sistema se distribuya
vendrá en una variedad de configuraciones basadas en los chips Opteron de la
serie 200 de AMO. Al igual que el Cluster -1350, se distribuirán con Linux y software
Cluster Systems Management for Linux de IBM. IBM comenzó el trabajo en estos
sistemas en la primavera boreal. El precio de los nuevos sistemas será similar al
Cluster 1350.
129
Aunque IBM planea distribuir un sistema de "clúster" con ltanium 2, el hecho
es que la aceptación del ltanium, la alternativa de 64 bits de lntel, ha sido lenta.
Debido a que, los productores independientes de software y los clientes han sido
renuentes a migrar sus aplicaciones al conjunto de instrucciones de 64 bits de
ltanium. "Es malo presentar una nueva tecnología y decir a los clientes: '¡Ah!, todo
es nuevo,"' ha dicho un a1to ejecutivo de IBM.
Tanto Opteron como ltanium pueden ejecutar aplicaciones de lntel de 32
bits, pero debido a que el procesador Opteron parece superar a ltanium en esta
función, y debido a que los desarrolladores pueden cambiar más rápidamente sus
aplicaciones para aprovechar el conjunto de instrucciones de 64 bits de Opteron, el
nuevo procesador de AMO está empezando a obtener seguidores en el mercado.
"El mercado tiende a adoptar tecnologías que son razonablemente fáciles de
digerir. Y el punto de vista de nuestros clientes es que (Opteron) es fácil de digerir",
ha dicho un alto ejecutivo de IBM.
Existen también comentarios en el sentido de que los futuros procesadores
Xeon para sistemas con 4 y 8 procesadores, cuyo nombre clave es Potomac,
ofrecerán soporte para el juego de instrucciones x86-64 o similar. De ser cierto,
sería la primera vez en la historia en la que lntel adopta extensiones de AMO.
AMO siempre ha adoptado las extensiones desarrolladas por Jntel,
incluyendo MMX, SSE y SSE2, así como otras innovaciones ofrecidas por lntel en
los ochenta y primera mitad de los noventa. lntel, sin embargo, jamás ha
implementado tecnologías desarrolladas por AMD, entre las que se encuentran las
diversas versiones de las famosas 30Now!. Los analistas sugieren que lntel no
quiere adoptar las tecnologías de su rival para así desanimar a los desarrolladores
a la hora de optimizar sus programas para las innovaciones de AMD, y así anclarlos
130
en las extensiones de lntel exclusivamente. Esto no solo le da ventaja a lntel, sino
que se la quita a AMO, que es justo lo que la gran empresa de CPUs quiere.
Sin embargo, vivimos en estos momentos una situación única. AMO ofrece
plataformas de 64 bits tanto para sistemas de sobremesa como para grandes
servidores, mientras que lntel orienta su arquitectura IA64 sólo para el segmento de
servidores de gama ultra-alta. Aunque la empresa ha comenzado recientemente a
ofrecer sus procesadores ltanium 2 para segmentos de menor precio, en general,
los ordenadores basados en IA64 son considerablemente más caros que los IA32 o
AMD64, en buena parte debido al coste del software. En pocas palabras, los
desarrolladores de software tienden a optimizar sus productos para el hardware con
más mercado. Cuando miramos las CPUs de 64 bits en el mercado, AMO es, sin
duda, la mejor opción.
Si las extensiones x86-64 se integran oficialmente en los sistemas Xeon MP
'Potomac', la arquitectura de 64 bit de AMO tendrá muchas más posibilidades de
ser incorporada en futuros chips de lntel para sobremesa, lo que le daría muchas
ventajas a la empresa californiana. Por desgracia, AMO todavía no ofrece un
compilador que ayude a los programadores a optimizar sus aplicaciones para los
chips Athlon64 o con extensiones x86-64. Si sólo hay unos pocos títulos con
soporte masivo de extensiones AMO64, no habrá razones para que lntel
implemente esta tecnología en sus chips. Probablemente el triunfo más importante
para AMO es la esperada disponibilidad de Microsoft Windows Server 2003 para
AMD64 cuya versión beta ya ha sido distribuida a nivel mundial.
CONCLUSIONES Y RECOMENDACIONES
1. La organización interna del procesador AMO Opteron, de mayor actualidad
que la del procesador lntel Xeon MP, le otorgan ciertas ventajas en su rendimiento
final, que compensa la menor velocidad de su reloj interno.
2. Uno de los cuellos de botella más críticos de todo sistema ordenador que
utiliza procesadores de altas prestaciones, es la interfaz con la memoria principal,
debido a la brecha que se presenta cada vez mayor entre las velocidades
alcanzadas por los procesadores frente a la lograda por la memoria principal.
3. AMO al mantener compatibilidad total con la arquitectura x86 con su
procesador OPTERON de 64 bits, pretende captar el mercado de aquellas
compariías que cuentan con una gran inversión en aplicaciones desarrolladas para
la plataforma X86 y apuesta porque las empresas no tomarán la decisión rápida de
migrar sus aplicaciones a la tecnología de 64 bits.
4. Al momento de elegir una nueva plataforma de cómputo se debe tener en
cuenta no solo los rendimientos que pueden ofrecer los procesadores, sino de que
manera la estrategia planteada por las empresas fabricantes se ajustan a las
demandas de servicios que se tienen previstas en la organización que la utilizará.
5. Muy pocas veces se podrá disponer de los resultados de un benchmark
específico para poder tomar una decisión, por lo que será necesario seleccionar y
evaluar un conjunto de ellos, identificando en cada caso los factores que han sido
determinantes en los resultados, y de que manera estos contribuirían o no a
satisfacer la necesidad planteada.
APÉNDICE A: Otros benchmark SPEC
TPC-C: El banco de pruebas TPC-C ha sido diseñado con el propósito de
medir la capacidad de un servidor para funcionar como servidor de base de datos
para el procesamiento de transacciones on-line (OLPT). Este banco de pruebas
simula un entorno completamente informático donde los usuarios contrastan las
transacciones de los registros con la base de datos. Entre estas transacciones se
incluyen órdenes de compra, realización o recepción de pagos, seguimiento de las
órdenes de compra, monitorización de la entrega y control de los niveles de stock.
El resultado que ofrece TPC-C es una medición del número de nuevas órdenes de
compra generadas por minuto, mientras que el sistema ejecuta de forma simultánea
los otros cuatro tipos de transacciones.
MMB2: El banco de pruebas MAPI Messaging Benchmark (MMB2) fue
desarrollado por Microsoft con el propósito de medir la capacidad de un servidor
para funcionar como plataforma de servidor Microsoft Exchange. MMB2 mide el
rendimiento del "Usuario Medio" que ejecuta tareas comunes como navegar por la
red, enviar y recibir mensajes de correo electrónico, así como programar tareas y
utilizar las listas de distribución, en una jornada laboral de ocho horas.
SPECweb®99: SPECweb99 ha sido diseñado para medir la capacidad de
un sistema para funcionar como servidor Web para páginas estáticas y dinámicas.
En la configuración del banco de pruebas, cierto número de sistemas cliente
133
generan las peticiones de páginas estáticas y dinámicas en lugar de un servidor,
simulando la carga de trabajo de un servidor Web real. Los resultados obtenidos
con el banco de pruebas SPECweb99 representan el número máximo de
conexiones conformadas simultáneas que un servidor Web puede soportar sin
disminuir los requisitos específicos de rendimiento e índice de error. Las conexiones
conformadas deben estar establecidas con un índice máximo de bits y con un
tamaño máximo de segmento. El propósito de esto es recrear las condiciones que
se producirán en Internet durante la vida útil de este banco de pruebas.
SPECweb99_SSL: Al igual que SPECweb99, SPECweb99_SSL ha sido
diseñado con el propósito de medir la capacidad de un sistema para funcionar como
servidor Web para las páginas estáticas y dinámicas. No obstante, la diferencia de
SPECweb99_SSL se encuentra en que las páginas han sido solicitadas utilizando
HTTP a través de Secure Sockets Layer Protocol (HTTPS), por lo tanto, los
resultados obtenidos con el banco de pruebas se emplean con el objetivo de
determinar la capacidad de un sistema para funcionar como servidor Web seguro.
SPECjbb ™ 2000: SPECjbb2000 ha sido diseñado con el objetivo de medir la
capacidad de un sistema para funcionar como servidor de aplicaciones java de nivel
medio en un sistema de 3 niveles, que se compone de un cliente (nivel 1 ), un
servidor de aplicaciones Java (nivel 2) y una base de datos (nivel 3). El servidor de
aplicaciones Java contiene las cache lógica y de objetos de la empresa, que
gestionan las solicitudes entrantes del cliente, recuperan la información apropiada
de la base de datos y devuelven esa información al cliente. Estos servidores se
suelen utilizar en ERP, CRM, e-Business y demás aplicaciones de nivel que
emplean un navegador Web para acceder a la información almacenada en la base
de datos. El banco de pruebas SPECjbb2000 se ha desarrollado a partir de una
134
empresa mayorista con almacenes que distribuyen en varios distritos. El resultado
de SPECjbb2000 mide el rendimiento de la plataforma Java subyacente, que es el
índice de ejecución por segundo, de ciertas actividades empresariales.
SPECint®2000: SPECint2000 ha sido diseñado para medir y comparar el
rendimiento completo entre sistemas que requieren una gran cantidad de recursos.
Este banco de pruebas se centra en el rendimiento de:
• El procesador (CPU)
• La arquitectura de memoria
• Los compiladores
SPECint2000 se compone de doce bancos de pruebas enteros que han sido
desarrollados a partir de las actuales aplicaciones de los usuarios finales. Las
aplicaciones pesadas suelen ser las más habituales en los departamentos de TI y
en los servidores empresariales. Normalmente, aplicaciones como tas bases de
datos, servidores de correo electrónico, servidores de aplicaciones Java y
servidores Web, suelen ejecutarse mejor en un procesador con un excelente
rendimiento completo.
SPECint_rate ™ 2000: Este banco de pruebas funciona con los mismos
algoritmos utilizados en SPECint2000, pero ejecuta múltiples ejemplos del banco de
pruebas al mismo tiempo (normalmente se ejecuta un ejemplo por procesador del
sistema). SPECint_rate2000 determina la capacidad de un sistema para realizar al
mismo tiempo, múltiples operaciones enteras que requieren una gran cantidad de
recursos. Este banco de pruebas ha sido diseñado con el propósito de medir la
capacidad de un sistema con varios procesadores para escalar adecuadamente,
135
mientras se ejecutan aplicaciones como los servidores de base de datos, servidores
de correo electrónico o servidores Web.
SPECfp®2000: SPECfp2000 ha sido diseñado para medir y comparar el
rendimiento intensivo de coma flotante entre sistemas. Este banco de pruebas se
centra en el rendimiento de:
• El procesador (CPU)
• La arquitectura de memoria
• Los compiladores
SPECfp2000 se compone de catorce bancos de pruebas de coma flotante
que han sido desarrollados a partir de las aplicaciones de los usuarios finales. Las
aplicaciones intensivas de coma flotante son las más habituales en los entornos de
ingeniería e investigación. Las aplicaciones informáticas para la dinámica de fluidos,
CAD/CAM, creación de contenidos digitales (DCC) representación, así como las
herramientas financieras, normalmente funcionan mejor cuando se ejecutan en un
procesador con un excelente rendimiento de coma flotante.
SPECfp_rate2000: Este banco de pruebas funciona con los mismos
algoritmos utilizados en SPECfp2000, pero ejecuta múltiples ejemplos del banco de
pruebas al mismo tiempo (normalmente se ejecuta un ejemplo por procesador del
sistema). SPECfp_rate2000 determina la capacidad de un sistema para realizar al
mismo tiempo, múltiples operaciones de coma flotante que requieren una gran
cantidad de recursos. Este banco de pruebas ha sido diseñado con el propósito de
medir la capacidad de un sistema con varios procesadores para escalar
adecuadamente, mientras se ejecutan aplicaciones basadas en coma flotante como
CAD/CAM, DCC y otras aplicaciones científicas.
BIBLIOGRAFÍA
[1] Vogley, B. '800 Megabyte Per Second System Via Use of Synchronous ORAM'
Proceedings, COMPCON '94, Marzo 1994.
[2] Crisp, R. 'Oirect RAMBUS Technology: The New Main Memory Standard', IEEE
Micro, Noviembre/Diciembre 1997.
[3] Reches, S., y Weiss, S., 'lmplementation and Análisis of Path History on Dinamic
Branco Prediction Schemes', IEEE Transactions on Computers, Agosto 1998.
[4] Johnson, M. 'Sueprscalar Microprocessor Design,', Englewood Cliffs,
NJ:Prentice-Hall, 1991
[5] Zdebel, Ch.; Solotko, S.;' The AMO Computing Platforrn: Your Link to the Future
Computing', White Paper AMO, Mayo 2003
[6] Advance Micro Oevices, lnc., 'AMO Eight-Generation Processor Arquitecture',
White Paper AMO, Octubre 2001
[7] AMO, lnc. 'http://www.amd.com/us-en/Processors/Productlnforrnation/', AMO
Opteron Processor.
[8] Stalling, Wiliam., 'Organización y Arquitectura de Computadores', Prentice-Hall,
Edición 2000.
[9] Pilgrim, Aubrey 'Build Your Own Pentium III PC', McGraw-Hill, Edición 2000.
[10] lntel Corporation 'lntel Xeon Processor MP with up to 2MB L3 Cache (on the
0.13 Micron Process), Oocument Number 251931-002, Junio 2003.
[11] lntel Corporation, 'Scaling Right on 32-bit lntel Architecture-based Platforrns',
White Paper, Copyright 2000.
[12] lntel Corpporation, 'http://www.intel.com/products/server/index.htm.', Server and
Workstation Components.
top related