143
UNIVERSIDAD NACIONAL 'INGENIERÍA FACULTAO 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

UNIVERSIDAD NACIONAL DÉ'INGENIERÍAcybertesis.uni.edu.pe/bitstream/uni/10867/1/maldonado_bc.pdf · COMPARACIÓN DE LOS PROCESADORES INTEL XEON MP Y AMD OPTERON. ... el capítulo

Embed Size (px)

Citation preview

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

COMPARACIÓN DE LOS PROCESADORES

INTEL XEON MP Y AMD OPTERON

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

128 bits

256

48/40

6.4 GB/s

-·- ..:..._ -

hasta 2 vías

Números de modelo

Modelo 240

Modelo 242

Modelo 244

Modelo 246

128 bits

256

48/40

6.4 GB/s

hasta 8 vías

Modelo 840

Modelo 842

Modelo 844

128 bits

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 '

. = . 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 ·-:- __ ,

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

' ' -:- .

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.