Arquitectura UltraSPARC Sun Microsystems, Inc. Introducción. El crecimiento en las redes globales está transformando la naturaleza de la computación. Hoy, la mayoría de las redes están dominadas por el flujo de pura información alfanumérica, con sólo un fragmento pequeño dedicado al imaging, video, geometria, audio o datos de los nuevomedios de comunicación. En el futuro cercano, esta proporción se invertirá y la mayoría de los computadores deberán estar optimos para rendir con eficiencia el procesamiento de ese tipo de datos. El crecimiento exponencial de nuevas aplicaciones de los medios de comunicación necesitan de procesadores con más fuerza y los sistemas en que ellos residen se echan en la espalda la responsabilidad por los gráficos de gran velocidad, 2-D y 3-D , imaging, procesos de video, condensación de imagen y descompresión. Aunque algunas cosas son funcionamientos típicos , en gran cantidad genera un diluvio de datos. SPARC™ continúa siendo el abanderado procesador de Sun Microsystems con su tecnología y su refinamiento continuo está claro de estos cambios y siempre con un compromiso a la arquitectura en el diseño de procesadores. En este trabajo de analizará la estructura de procesadores, desde el punto de vista de la Arquitectura y Organización de Computadores vista este semestre, hechos por Sun Microsystem, Inc. con su linea UltraSPARC. Sun Microsystems, Inc. enfoca sus productos y estrategias al mercado de las estaciones de trabajo y grandes servidores, este mercado se ha ido paulatinamente acercando al de las máquinas de escritorio gracias a que estas últimas máquinas han aumentado su desempeño en forma dramática en corto plazo, pero en este mercado también existen particularidades, en este caso el hecho más relevante tiene que ver con el sistema operativo, ya que, en este mundo se utiliza en forma masiva diferentes sabores de UNIX. Sun Microsystems, Inc. nos presenta su camino futuro en cuanto a la familia de procesadores UltraSPARC. En el futuro de las frecuencias de reloj de los procesadores van ha pasar con creces la marca de los 1.0 GHz, en particular se espera que el procesador UltraSPARC IV alcance los 1.0 GHz para el año 2.000 y el procesador UltraSPARC V alcance los 1.5 GHz para el 2002. La estrategia de Sun durante el desarrollo de esta línea de procesadores SPARC ha sido siempre de estar avanzando y logrando mejoras en el desempeño que generan mejores proyecciones para la línea de procesadores. Esta estrategia conlleva riesgos, por cuanto, se apuesta a la confiabilidad de los usuarios, en todo caso, todos los avances mantienen la compatibilidad con los precedentes. Sun ha divido su estrategia de desarrollo en tres áreas: i) Diseño de procesadores. ii) Tecnología de procesos iii) Arquitectura de conjunto de instrucciones . Pero sólo una a la vez es atendida, así las generaciones impares (UltraSPARC I, III, V) desarrollan nuevas arquitecturas de pipeline, en cambio las generaciones pares (UltraSPARC II, IV) desarrollan el área de tecnología de procesos. De esta manera Sun mantiene 100% de compatibilidad de los binarios, lo cual protege a los consumidores de transiciones caras en cuanto a sistemas operativos y aplicaciones. Sun ofrece tecnología a un amplio rango de soluciones, para afrontar este desafío se desarrollan tres series de procesadores: • Serie S (UltraSPARC I, II, III), especializada en servidores y estaciones de trabajo escalables. • Serie I (UltraSPARC IIi), integra muchas funciones en un solo procesador, para entregar una solución de bajo costo. • Serie E (microSPARC, ultraSPARC), dedicada a soluciones integras. Para la fabricación de los procesadores Sun tiene un arreglo con Texas Instrumen ts, según el cual esta provee de facilidades para la fabricación a cambio de usar parte de la tecnología. Dentro de las visiones de procesadores veremos el procesador UltraSPARC, luego un vistazo UltraSPARC-II y profundamente el procesador UltraSPARC-IIi. La arquitectura de SPARC™. • Performance y Economía: Con un set de instrucciones simplificado, los procesadores SPARC logran un gran número de instrucciones por segundo con muy pocos transistores. La simplicidad de diseño es la base de SPARC™, permitiendo ciclos de desarrollo más cortos, tamaños pequeños y un creciente performance. • Escalabilidad: SPARC es escalable dentro de una amplia gamma de tecnologías en sus semiconductores, implementaciones en el chip y configuraciones de sus sistemas. Un beneficio de SPARC es la flexible integración de su cache, manejo de memoria y unidades de punto flotante, creando procesadores con precio/performance desde laptops hasta supercomputadores. • Arquitectura abierta: Los usuarios involuntariamente no quieren pagar los costos de los dueños de estas tecnologías. Comprendiendo esto, SUN Microsystems, Inc. Fue el pionero en crear el concepto de “arquitectura abierta” a inicios de 1980, desvelando un programa de tecnologías más importantes que se comercializan actualmente. Sun cree que utilizando básicas tecnologías standards, se desarrollarán más tecnologías manteniendo bajos costos. Otro elemento importante de SPARC es la compatibilidad con múltiples tecnologías de múltiples vendedores. Hoy, la unidad Sun's SPARC Technology Business (STB) autoriza especificaciones, planes, máscaras, y componentes de los chips para SPARC. • Grandes herramientas de desarrollo y despliegue de ambientes: El ambiente SOLARIS™, aplicación gráfica de SUN para el OS UNIX ha estado funcionando desde hace décadas con muchas horas de trabajo corriendo aplicaciones sobre sistemas basados en SPARC, el tiempo que se ha probado dá seguridad, confianza, un producto de gran refinación que corre críticas aplicaciones y miles de transacciones y negocios. Un completo set de herramientas de desarrollo de SUNSOFT™, SMCC, y otros están disponibles para el desarrollo de software y desarrollo de sistemas SPARC. Los productos incluyen optimización, compiladores cruzados, depuradores, emuladores de sistemas y sistemas de manejo de códigos. La arquitectura de SPARC V-9. SPARC Versión 9 (SPARC-V9) es el cambio más significante a la arquitectura de SPARC desde que su lanzamiento en 1987. Diseñado para permanecer bien competitivo en el próximo siglo reforzando el SPARC-V8, SPARC-V9 incorpora varios perfeccionamientos importantes: • • • • • • • Direccionamiento de 64-bits y 64-bits para datos enteros. Mejor desempeño del sistema. Soporte para la optimización de compiladores y alta performance con sistemas operativos. Implementación Superscalar. Tolerancia en los fallos. Rápido manejo de trabas y cambiante contexto. Grande y pequeño “endian” ,byte de la clasificación. El procesador UltraSPARC-I. Una de las primeras aplicaciones de la arquitectura SPARC-V9, UltraSPARC-I mantiene la compatibilidad de 32-bits del SPARC-V8 asegurando la compatibilidad binaria con las aplicaciones existentes. UltraSPARC-I no solo provee de 64-bit para datos y 64-bits para direccionamiento, sino que agrega varios otros rasgos para mejorar el sistema operativo y el funcionamiento de la aplicación, entre ellos están: • • • • • • • • • • 9 fases de pipeline, puede emitir 4 instrucciones por ciclo. Mejor administración del cache y reducción en la latencia de memoria. 16K de datos y 16K de instrucciones en el chip, permitiendo hasta 4MB de cache externo. Integra soporte para multi-procesador con una baja latencia a los datos compartidos. Gráficos y soporte de imágenes en el chip. Implementado usando 0.5micron, 4 capas de metal con tecnología CMOS operando con 3.3voltios. Empaquetado usando un plástico de 521-pins(BGA). Alto performance en ambos casos: SPECint>250 y SPECfp>350 a 167 Mhz. Alta velocidad en la transferencia de memoria (1.3GB/seg). Interconección entre los implementos del nuevo Ultra Port Architecture (UPA). Estrategia del microprocesador SPARC™. La arquitectura de SPARCTM es una especificación abierta diseñada para fomentr una ancha disponibilidad. Desarrollado por el Sun Microsystems™ en el medio años ochenta, la arquitectura de SPARC se transfirió a SPARC International con el fin de aumentar la evolución de SPARC y promover los sistemas abiertos. Volviéndo a la definición de SPARC como cuerpo de una industria, Sun Microsystems ha asegurado que SPARC es una norma abierta, no controlada por su diseñador de manera estricta. SPARC International pone hardware y " normas de compatibilidad de software, y fomenta a los vendedores independientes de software (ISVs) para desarrollar para ello colocando siempre en frente al SPARC International "SPARC-compilant" la norma de la aplicación standard. Para asegurar que los productos binarios o programas de SPARC sean compatible, SPARC International estableció la SPARC Compilance Definition (SCD), una especificación de software común del sistema e interfaces de hardware. La disponibilidad abierta. SUN cree que la disponibilidad abierta es crítica para el éxito tecnológico. La clave de esta estrategia es que múltiples vendedores y aplicaciones para generarán competencia e innovación. Juntas, estas metodologías aumentan la disponibilidad abierta de especificaciones e implementaciones o aplicaciones. SPARC™ Performance Escalable. La arquitectura de SPARC habilita una única combinación de semiconductor y diseño de escalabilidad. Con sus capacidades de multiprocesamiento, un gran bus que soporta un gran ancho de banda, diseño de una ventana de registros, el diseño de SPARC permite las aplicaciones a través de un rango de niveles que considera siempre precio/performance. Diseño de un procesador y multiples procesadores. El diseño de SPARC asume linealmente un direccionamiento virtual de 32-bits (64-bits en el SPARC-V9) para programas de aplicación de usuarios y un flexible bus de datos para la optimización en la arquitectura del sistema. En la figura 2-2 se muestra el esquema conceptual del diagrama de bloques. SPARC define instrucciones, estructuras de registros y tipos de datos enteros (IU).Las instrucciones son simples, la mayoría tiene un solo ciclo de ejecución. Enteros y puntos flotantes puedes ser secuencialmente ejecutados con el apoyo de una arquitectura para programas secuenciales. Las unidades de enteros usan un modelo de una ventana de registro. Aunque la estructura de los registros está definida por SPARC, los fabricantes de componentes tienen la libertad de llevar a cabo un número óptimo de ventanas de registros para reunir los requisitos de precio/performance para un mercado en particular. SPARC define instrucciones, estructuras de registros y tipos de datos de punto flotante. Con 32-bits de registros, el SPARC V-8 FPU puede tener registro para la precision de la siguiente manera :32 registros para single, 16 para double o 8 para quad. El SPARC de punto flotante puede cargar y almacenar operadores double que mejoran el funcionamiento de programas con double o quad precisión. SPARC V-9 dobla el numero de registros y agrega carga (load) para punto flotante y almacenamiento(store) para operaciones quad. Mientras la especificación de SPARC define una aplicación del uniprocessor, las instrucciones de soporte o apoyo lo hacen escalable a sistemas de multiprocesador. Programas que corren en una aplicación de SPARC ejecutan sólo unos poco mas de instrucciones que en un chip de CISC y tiene mucho menos referencias de memoria de datos. Particularmente importante para las aplicaciones de multiprocesos es la instrucción atómica swap y en SPARC-V9, una comparación atómica y operación swap. Consideraciones de Cache. Los cache mejoran su actuación proporcionando un acceso más rápido a los datos porque se exigen menos ciclos para acceder a la cache en un acceso de memoria. Algunas arquitecturas de cache normalmente usadas, individualmente o en combinación incluyen un set asociativo datos separados e instrucciones de cache y un esquema de mapeo directo de cache. La arquitectura SPARC puede implementar o unificar una Harvard cache organization. La Harvard cache organization, utiliza una instrucción independiente(I-cache) y el cache de datos (Dcache), el cual podría soportar cada dato pedido sobre buses de datos independientes al mismo tiempo. En cualquier ciclo de reloj, el procesador puede sacar una instrucción desde el I-cache y el D-cache. Capacidades de manejo de memoria. Los procesadores SPARC acceden a memoria principal a través de un acceso de cache virtual. La memoria virtual es un método por el cual las aplicaciones son escritas asumiendo un completo direccionamiento de 32-bits de espacio (64-bit en SPARC V-9). Los sistemas operativos, como Solaris, trabajan con las capacidades de memoria virtuales de SPARC permitiendo el espacio de dirección virtual a un total mayor que es físicamente el que está presente en todo momento. Arquitectura de UltraSPARC. Filosofia del diseño de UltraSPARC. La proporción de ejecución de “Compute-Bound” es un producto de tres factores: el número de instrucciones copiladas y generadas en un trazo de ejecución (NI), la proporción sostenida de instrucciones completada por ciclo (IPC), y la tasa de reloj ha sido posible por la tecnología del circuito integrada. [Patterson 1989]. Alto performance requiere adelantos en los tres frentes anteriores. Los planes benefician de los mejores copiladores y las mejoras en las tasas de reloj . Sin embargo, los sistemas rentables no se pueden confiar exclusivamente, de altas tasas de reloj. Para beneficiar las economías a escala, deben ser empeladas tecnologías de semiconductores principales. Los sistemas de UltraSPARC proporciona un alto performance a tasas de reloj razonables perfeccionando el IPC. Este acercamiento presenta los desafíos del diseño por manejar el pipeline del procesador y la jerarquía de memoria. El tiempo promedio de acceso de memoria debe reducirse y el número de instrucciones entregadas por ciclo debe subir, performance creciente sin dejar de lado la complejidad o el diseño del procesador. Diseño de criterio y diseño de opciones. Los conocidos cuellos de botella generados por múltiples instrucciones incluyen las dependencias de control, dependencias de los datos, el número de puertos a los registros del procesador, el número de puertos a la jerarquía de memoria, y el número de pipelines de punto flotante. La investigación comprensiva de SUN indica que muchas aplicaciones se pueden beneficiar en un procesador que emite múltiples instrucciones por ciclo. La tabla 3-1 ilustra una mezcla de la instrucción de enteros y punto flotante. Integer Applicaton Instruction Class Integer Arithmetic Floating-Point Arithmetic Loads Stores Branches 50% 0% 17% 8% 25% Floating-Point Application 25% 30% 25% 15% 5% Tabla 3-1 Típicas instrucciones para aplicacionesde enteros y punto flotante Esta mezcla representa muchos desafíos para un diseño superscalar que ejecuta el código a la proporción máxima. Las consideraciones como el procesador global y el costo del sistema, mientras tanto se mantienen un razonable performance de punto flotante, tamaños de cache y tiempo a la venta afectan al costo y al performance del chip. Con UltraSPARC-I, SUN ha intentado mejorar el performance en áreas dónde la economía no se vería afectada. Para investigar estos desafíos esperados, se diseñaron algunas decisiones que definían las características de UltraSPARC-I: • • • • • • Cache en el chip. Una ancha instrucción fetch (128-bits). Dinámica predicción del Branch. Optimización de funcionamiento del pipeline. Acceso a memoria de punto flotante. Escritura del buffer en la realización de Store. Procesador UltraSPARC-I. UltraSPARC-I es el más nuevo miembro de la familia SUN de CPUs SPARC. Diseñado para apoyar ambos sistemas: uni y multi-procesador. UltraSPARC-I es ideal para el aplicaciones de redes con gran poder, grandes capacidades en multimedios, y con un throughput de datos perfeccionado. El procesador más integrado hasta la fecha de la familia SPARC. UltraSPARC-I incorporó algunos rasgos claves: • • • • • • • • • • Alta performance, entregando más de 250 SPECint92 y 350 SPECfp92 a 167 MHz. Construido usando 0.5 micra CMOS, innovador proceso de la tecnología. Opración a bajo costo (Energy Star Compilance). Un diseño totalmente estático, permitiendo las economías de poder significativas. 9 fases de pipeline, emitiendo a 4 instrucciones por ciclo. La predicción dinámica del Branch. Instrucciones en el chip y D-caches. Manejo de memoria en el chip(MMU). Soporte de gráficos e imágenes en el chip. Implementación de una nueva arquitectura del bus UPA. El procesador UltraSPARC-I está altamente integrado, SPARC-V9 consiste en un Prefetch and Dispatch Unit (Unidad de la Expedición), una Integer Execution Unit (Unidad de Ejecución de enteros), una Floating Point(Unidad de punto flotante), una Memory Management Unit (Unidad de Dirección de Memoria), una Load and Store Unit( Carga y almacenaje), una externel Cache Unit(Unidad de cache Externa), una Graphics Unit(Unidad de Gráficos) y una Instruction and Data Caches( Instrucción y Datos de cache). Ver figura 3-1. Figura 3-1: Diagrama Funcional de Bloques del procesador UltraSPARC-I Prefetch and Dispatch Unit. El UltraSPARC-I Prefetch and Dispatch Unit (PDU) asegura que todas las unidades de ejecución permanecen ocupadas sacando las instrucciones antes de que se les necesite en el pipeline. Las instrucciones pueden ser prefetched de todos los niveles de jerarquía de memoria, incluso el I-cache, E-cache y la memoria principal. El PDU se diseñó con varios rasgos para apoyar los requisitos del alto performance de UltraSPARC-I: • • • • • Un Buffer prefetch de 12-entradas prefetching, que previene los encierros en el pipeline. Un I-cache de 16KB asociativo de 2 vías. Se pre-decodifican instrucciones en el I-cache. 9 fases en el pipeline que minimizan la latencia. Una predicción dinámica del Branch para permitir la exactitud de la predicción mayor. Integer Execution Unit. La Integer Execution Unit(IEU) se diseña para aumentar al máximo el performance mientras se mantiene llena la compatibilidad del software, minimizando al procesador los cambios arquitectónicos para organizar el software. El UltraSPARC-I Integer Exetuction Unit incorpora varios rasgos importantes: • • • • 2 ALUs para cálculos aritméticos, cálculos lógicos, y operaciones de cambio. 8 archivos de registros ventana. Resultados desviados. Una completa unidad que permite un pipeline de 9 fases con desviaciones mínimas. Floating Point Unit. El UltraSPARC-I floating-point unit es una unidad en pipeline del procesador para punto flotante que tiene la arquitectura SPARC V-9. Su plan IEEE-compilant consiste en cinco unidades funcionales separadas para dar soporte a puntos flotantes y multimedia. La separación de unidades de ejecución permite al UltraSPARC-I emitir y ejecutar dos instrucciones de punto flotante por ciclo. La fuente y resultados de los datos son guardados en un archivo de registro de 32entrada. La mayoría de las instrucciones de punto flotante tienen una salida en de un ciclo, una latencia de tres ciclos, y son totalmente manejados en el pipeline. El FPU puede operar a la vez en número de precisión normal (single) ( 32-bit) y en precisión doble (double) ( 64-bit), normalizados o desnormalizados en el hardware, y precisión cuádruple (quad) (128-bit) operando en el software. Los análisis estadísticos muestran que en promedio, el 94% de instrucciones de FPU completarán dentro del ciclo normal. La tabla 3-2 muestra los valores esperados de UltraSPARC-I para el performance del FPU. Throughput (Cycles) Operation Add (Single Precision) Add (Double Precision) Multiply (Single Precision) Multiply (Double Precision) Divide (Single Precision) Divide (Double Precision) Square Root (Single Precision) Square Root (Double Precision) Latency (Cycles) 1 1 1 1 12 22 3 3 3 3 12 22 12 12 22 22 Tabla 3-2 muestra los tiempos de ejecución del FPU de UltraSPARC-I asumiendo resultados de puntos flotantes normales Memory Management Unit. El performance del Superscalar sólo puede mantenerse si el IEU puede proporcionarse con las instrucciones y datos apropiados (trabajo realizado por la jerarquía de memoria). El UltraSPARC-I Memory Management Unit (MMU) proporciona la funcionalidad de una referencia MMU y un IOMMU, ocupándose de todas las operaciones de memoria así como el manejo de datos almacenados y memoria . En resumen, el MMU realiza la función de manejo entre I/O, D-cache, I-cache, y referencias de TLB a la memoria. En esencia el MMU lleva a cabo la función de un "policía de tráfico", controlando y priorizando el acceso a la memoria principal. En cualquier momento dado, una disputa por el acceso de memoria puede ocurrir entre un acceso I/O que involucra el bus así como los accesos internos pedidos por el I-cachee, D-cachee, y referencias de TLB. La figura 3-3 muestra las principales funciones del manejo de memoria Memory Interface Unit. El UltraSparc-I emplea una Memory Interface Unit. Este subsistema de I/O maneja los recursos locales entre la entrada y la salida, incluyendo el procesador, memoria principal, control de espacio y todos los recursos externos del sistema. Específicamente, todas las transacciones al sistema, como los misses (fallas) del E-cache, interrupciones, etc. manejados por el MIU. Cache Architecture. La mayoría de microprocesadores de alto performance usan cache para reducir el tráfico en los buses y un aumento de productividad del sistema. La elección cuando se actualiza o se invalidan copias de bloque modificados es llamada protocolo de consistencia de cache (cache consistency protocol). Éstos protocolos de consistencia aseguran que la copia de datos permanezcan consistentes con las copias en la memoria principal. La consistencia puede apoyarse por write-invalide, write-through, y competitvos algoritmos de cache. UltraSPARC-I emplea grandes separadas instrucciones y write-through en los D-caches para asegurar un diseño competitivo. Referencia: SUN url: http://www.sun.com/microelectronics/databook/datasheets.html http://www.sun.com/microelectronics/whitepapers/UltraSPARCtechnology/ultra_arch_contents.html Procesador UltraSPARC-II El procesador UltraSPARC II, que pertenece a la segunda generación de la familia UltraSPARC, tiene gran escalabilidad y esta pensado para mantener estaciones de trabajo y llevarlas a mejoras importantes en sus desempeños. En la figura 1 se muestra el diagrama de bloques de éste procesador. Figura 1. Diagrama de bloques del Procesador UltraSPARC-II El procesador soporta múltiples L2 caches y permite gran desempeño en sistemas con multiprocesamiento. Sus principales características son: • • • • • • Implementación completa de 64-bit con arquitectura V9. Escalabilidad (rango de frecuencias: 250-480 MHz; cache L2 soporta: 256KB-16 Mb). Instrucciones de aceleración multimedia VIS. Verificación y corrección de errores (ECC). Tecnología de .25 micrones. Arquitectura Superscalar/Superpipelined. Finalmente, se estima un desempeño asumiendo: UltraSPARC-II 250Mhz with UPD-II "111" Mode, SRAMís 4ns, 2Meg ECache, SW Prefetch support, Clock Ratio of 3:1 • 350-420 SPECInt92. • 550-660 SPECFp92. Referencia: SPARC url: http://www.sun.com/microelectronics/roadmap/;$sessionid$V3J13ZAACPFN1AMUVFZE45UBSSU XE Procesador UltraSPARC-IIi La misión central del UltraSPARC-IIi es optimizar el precio/rendimiento y facilitar el uso para el diseñador de sistemas. Dicho de otro modo, la CPU debe entregar rendimiento con un impacto mínimo sobre el costo total del sistema y también disponer de un diseño simplificado del sistema. Una estrategia importante para disponer de sistemas basados en SPARC de bajo costo consiste en influenciar la economía de la industria de los PC's con el uso de bus PCI I/O estándar. La integración ataca al costo total del sistema, pero demasiada integración o un tipo erróneo de funcionalidad puede ser contraproducente. El rendimiento absoluto es obviamente importante, pero en UltraSPARC-IIi se intenta conseguir el punto más alto de la curva costo/rendimiento. El UltraSPARC-IIi es un sistema con los beneficios de rendimiento y ancho de banda del UltraSPARC además de disponer de un costo-efectivo en el uso de los componentes del sistema. Soporta plenamente el sistema operativo Sun Solaris, y todo el software UltraSPARC es compatible. UltraSPARC-IIi es una máquina SPARC V9 superescalar de 64 bit, dirigida para el uso de sistemas con un procesador. UltraSPARC-IIi es un ejemplo de un sistema de alto rendimiento en un chip. En resumen, este procesador usa una significante cantidad de integración y otras técnicas para permitir la construcción de sistemas computacionales SPARC de costo-eficientes que conserven un excelente rendimiento. El resultado es una muy buena plataforma de costo-eficientes para escritorio, servidor, y de alto rendimiento en redes, telecomunicaciones, y sistemas de representaciones empotrados. Procesador UltraSPARC-IIi Microarquitectura El núcleo de la CPU es una máquina SPARC V9 con extensión VIS. VIS ofrece excelente flexibilidad y aceleración de gráficos en 2D y 3D, procesamiento de imágenes, compresión y descompresión en tiempo real, y aplicaciones de efectos de video. Para el desarrollo de la UltraSPARC-IIi se influenció el núcleo de la UltraSPARC-II y se modificó la interfaz y controlador del caché de segundo nivel (L2), la unidad de lectura y escritura, y otros cambios necesarios para acomodarlo a los requerimientos de muchas de las nuevas funciones del sistema integrado. El núcleo tiene un espacio de direcciones virtuales de 44 bits y un espacio de direcciones físico de 41 bits con punteros de direcciones de 64 bits. Hay 6 pipelines: dos para enteros, dos para gráficos y punto flotante, uno para load/store y uno para branch. • Procesador pipeline. El procesador principal tiene un pipeline de 9 etapas. Una instrucción se considera terminada apenas se llega directamente a la etapa de escritura, donde los registros de enteros y punto flotante son actualizados. En otras palabras, el estado del procesador es actualizado apenas finalizada la etapa de escritura. • Cachés L1. El UltraSPARC-IIi usa separadamente cachés de 1° nivel para instrucciones y datos. Los 16 Kb de caché para instrucciones es asociativa de 2-vías con bloques de 32 bytes. Los 16 KB de caché para datos de escritura directa es nonallocating (no asignada) y mapeada directamente con 2 subbloques por línea de 16 bytes. • Unidad de control de caché externo L2 (ECU). Aunque su principal rol es manejar la pérdida de eficiencia de los caché de datos e instrucciones, la ECU es la unidad central que controla los cachés externos L2. La ECU maneja todos los accesos directamente a memoria y mantiene la coherencia de datos entre la caché L2 y la memoria principal. • Unidad de control de memoria (MCU). Una de las nuevas y mayores funciones integradas en el UltraSPARC-IIi es la MCU, la cual maneja todas las transacciones hacia la interfaz del bus UPA64S y la DRAM. Ambos accesos a estos espacios ocurren en forma multiplexada con un bus de datos simple de 8 bytes (plus ECC). Sin embargo, existen buses de direcciones separados para la UPA64S y la DRAM. • Unidad Load/Store (LSU). La LSU genera direcciones virtuales de todos los loads y stores para accesar la caché de datos. El LSU soporta un load o store por ciclo. • Unidad de prefetch y dispatch (PDU). La PDU trae las instrucciones antes que sean necesarias en el pipeline y tal que, la unidad de instrucciones no quede vacía o muera de hambre. • Unidad de ejecución de enteros (IEU). La IEU contiene dos ALU's completas; un multiciclo, un multiplicador de enteros no-pipeline y multiciclo, un divisor de enteros no-pipeline, y ocho ventanas de registros. Dos instrucciones de enteros pueden ejecutarse en ciclos paralelos, con lo que más de una instrucción de enteros se completa en un solo ciclo del reloj. • Unidad de punto flotante y gráfica (FGU). La separación de la unidad de ejecución en la FGU le permite a la CPU ejecutar dos instrucciones de punto flotante por cada ciclo, o una de punto flotante y una de gráfica cada ciclo. Las instrucciones de punto flotante, tanto las fuentes como los destinos, son almacenadas en un arreglo de 32 entradas de registros de punto flotante con doble precisión. • Módulo de bus PCI (PBM). La PBM interfiere la CPU directamente con un bus PCI de 32 bits que es compatible con las especificaciones PCI. • Unidad de administración de memoria de I/O (IOM). La IOM traduce una dirección PCI de I/O de 32 bits a una dirección física de 41 bits, del mismo modo, dirige la protección de memoria para I/O. Diagrama de Bloques de la microarquitectura. Diagrama de Bloques de la microarquitectura Las 9 etapas del PIPELINE 1) Fetch. Hasta cuatro instrucciones son leídas desde la caché de instrucciones. 2) Decode. Después de la etapa fetch, las instrucciones son predecodificadas y entonces insertadas en el buffer de instrucciones. 3) Group. La tarea principal aquí es ensamblar un grupo de hasta cuatro instrucciones y todas ellas son despachadas en un solo ciclo. De este grupo de cuatro, dos pueden ser de enteros y dos pueden ser de punto flotante o gráficas. El archivo de registro de enteros es accesado en esta etapa. 4) Execute. Las dos ALU's de enteros procesan datos desde el archivo de registro de enteros. Los resultados son computados y, vía bypassing, se ponen a disposición de otras instrucciones dependientes en el siguiente ciclo. En esta etapa también se calcula las direcciones virtuales para las operaciones de memoria, en paralelo con la computación de la ALU. En cuanto a punto flotante y gráficas, el archivo de registro de punto flotante es accesado durante esta etapa. 5) Cache. La dirección virtual de las operaciones de memoria calculadas en la etapa de execute es enviada al tag de la RAM para determinar si el acceso (load o store) es un acierto o desacierto en el caché de datos. En forma paralela, la dirección virtual es también enviada a la unidad de administración de memoria de datos (DMMU) para ser traducidas en un dirección física. Las operaciones ALU de la etapa execute generan códigos de condiciones en esta etapa. Estos códigos son enviados a la unidad de prefecth y dispatch (PDU), el cual chequea si un salto condicional en el grupo fue correctamente predecido. En caso de una mala predicción, las instrucciones en el pipeline son limpiadas, y las instrucciones correctas son traídas. Las instrucciones de punto flotante y gráficas comienzan su ejecución durante la etapa X1. 6) N1. Un caché de dato acertado o errado es determinado en esta etapa. Si un load erra un caché de dato, entra al load buffer. La dirección física de un store es enviada al store buffer en esta etapa. 7) N2. El pipe de enteros espera el pipe de punto flotante. La mayoría de las instrucciones de punto flotante y gráficas finalizan su ejecución durante esta etapa. Después de N2, los datos pueden ser desviados a otras etapas. 8) N3. Los bloqueos son resueltos en esta etapa. 9) Write. En esta etapa todos los resultados son escritos en los archivos de registros de la arquitectura (enteros y punto flotante). Una vez completada esta etapa, las instrucciones son consideradas terminadas Esta figura representa las 9 etapas del PIPELINE para el procesador UltraSPARC-Iii Implementación. El UltraSPARC-IIi es fabricado en un proceso Texas Instruments Epic 4-GS2. Este proceso CMOS de 0.25 micrones (polisilicona) tiene cinco capas metálicas. El núcleo del procesador opera a 2.6 V, mientras la entrada/salida es una mezcla entre 2.6 V y 3.3 V. Los 3.3 V es un requerimiento de la especificación del bus PCI. El nivel más alto del diseño consta de 36 bloques de capas (donde un bloque de capa puede actuar como un cluster por sí mismo; la FGU por ejemplo, se cuenta como un bloque), 35 canales, y sobre7300 redes. Para disminuir el sesgo del reloj a nivel del sistema, se colocaron dos loops de fase bloqueada en la matriz, uno para soportar el reloj del núcleo de la CPU, y el otro, la PCI. Para minimizar el retardo de la comunicación interna entre la CPU y el reloj de la PCI, el reloj interno de la PCI corre dos veces más rápido que el reloj del bus PCI. El UltraSPARC-IIi esta empaquetado en un avanzado chip (tipo flip) de 37.5x37.5 mm, que es una grilla de esferas pláticas (PBGA) con un total de 587 esferas. El paquete consiste de una superficie de circuito laminar y una cubrimiento metálico para proteger el chip y para disipar el calor mientras el procesado está en operación. Sistema. El UltraSPARC-IIi reside en un módulo con el caché L2 y lógica para generar la CPU, PCI, y los relojes UPA64S. En este aspecto, el módulo esta insertado en la tarjeta madre del sistema. El uso de módulos permite fáciles upgrades para procesadores más rápidos que estén disponibles. La figura 2 muestra un ejemplo de un sistema basado en el UltraSPARC-IIi. Este sistema incluye un chip APB (Puente PCI Avanzado), el cual se diseño concurrentemente con el proyecto UltraSPARC-IIi. Los bus de 32 bits/66 MHz/3.3 V conecta directamente tanto al bus PCI físico como al UltraSPARC-IIi. El APB también tiene dos buses PCI secundarios completamente independientes, los cuales son de 32 bits/33 MHz y 5 V/3.3V. Cada uno de estos bus secundarios pueden soportar hasta cuatro PCI maestros. figura 2: ejemplo de un sistema basado en el UltraSPARC-IIi Especificaciones. • Arquitectura SPARC V9 / Diseño Monoprocesador. • Reloj del Procesador de 270/300/333 MHz. • Compatibilidad Binaria con todo el código de aplicaciones SPARC. • Set de instrucciones VIS (V9). • Diseño SuperEscalar de 4-vías. • Arquitectura 64 bits. • Punteros de direcciones de 64 bits. • Tamaño del Caché Externo: 256 KB - 2 MB. • Velocidad del Caché Externo: 135-167 MHz. • Configuraciones DRAM: 16 MB - 1 GB. • Bus de Datos DRAM de 144 bit con 8 bit ECC para cada 64 bits de datos. • Caché de Datos Non-blocking de 16 KB. • Caché de Instrucciones de 16 KB. • Controlador de Caché de 2° nivel integrado soporta hasta 2 MB de SRAM sincronizada. • Subsistema de Memoria EDO DRAM de 400 MB/seg. • Instrucciones Load/Store de bloques de 64 bytes Soporta interfaz esclava de 800 MB/seg UPA64s de 64 bits para subsistemas gráficos o similares. • Caché coherente PCI DMA, con su propio TLB para proveer mapeo y protección. • Suministro de poder es 2.5V en el núcleo y 3.3V en I/O. • Disponible en módulos integrados de 256, 512 y 2 MB . Rendimiento estimado. • Rendimiento del Sistema a 333 MHz con 2 MB de Caché Externo: SpecInt95: 14.2 SpecFP95: 16.9 • Rendimiento del VIS es 3 a 7 veces el rendimiento de un procesador tradicional • Rendimiento de Ancho de Banda: PCI bus DMA: PCI bus PIO: UPA64: Memoria lectura/escritura: 150 MB/seg @ 300MHz núcleo 200 MB/seg @ 300MHz núcleo 800 MB/seg @ 300MHz núcleo 400 MB/seg @ 300MHz núcleo Diagrama de Bloques del Procesador UltraSPARC-IIi Diagrama de Bloques del Procesador UltraSPARC Referencias: SUN url: http://www.sun.com/microelectronics/UltraSPARC-IIi/ http://www.sun.com/microelectronics/UltraSPARC-II/