General, Informática OpenSPARC T1

0 Comments

1. Introcucción

El procesador OpenSPARC T1 es el primer chip multiprocesador que implementa completamente la iniciativa de Computación de Rentimiento de Sun (”Sun Throughput Computing Initiative”). El procesador OpenSPARC T1 es un procesador altamente integrado que implementa la arquitectura SPARC V9 de 64 bits. Este procesador apunta a las aplicaciones comerciales como a servidores de aplicación y servidores de bases de datos.

El procesador OpenSPARC T1 contiene ocho núcleos del procesador SPARC, y cada uno tiene soporte hardware para cuatro hilos de ejecución. Cada núcleo SPARC tiene una cache de instrucción, una cache de datos, y una instrucción completamente asociativa más un TLB. Los ocho núcleos SPARC están conectados a la cache de nivel 2 en el mismo chip (on-chip), L2-Cache. Los cuatro controladores on-chip de acceso a la memoria dinámica (DRAM) directamente interconectan a los datos DRAM (DDR2 SDRAM).

Adicionalmente, hay un controlador de J-Bus on-chip que provee una intercomunicación entre el procesador OpenSPARC T1 y el subsistema de E/S.

2. Características

  • CPU
    • Arquitectura SPARC v9 de 64 bits
    • Caché de nivel 2 en el mismo chip
    • Espacio de 48 bits de direcciones virtuales y 40 bits de direcciones físicas.
  • Cachés
    • 16 Kbytes para el cache de instrucciones primario L1 por núcleo
    • 8 Kbytes para el cache de datos primario L1 por núcleo
    • 3 Mbytes para el cache secundario L2, bancos de 4 bias y cada uno con 12 bias asociativo compartido por todos los núcleos
  • Integración
    • 8 núcleos SPARC
    • 4 hilos por núcleo (ejecución total de 32 hilos)
    • 4 controladores DDR-2 DRAM con una interfaz de 144 bits por canal
    • Interfaz externa J-BUS para entrada salida (I/O) con un ancho de banda pico total de 2,5Gbytes/sec con un bus de 128bits multiplexado entre datos y direcciones

3. Descripción Funcional

La figura 1 muestra un diagrama de bloques del procesador OpenSPARC T1 ilustrando las diversas interfaces y los componentes integrados del chip.

Figura 1: Diagrama de bloques OpenSPARC T1

Las funciones y capacidades de este procesador son las siguientes:

    • 8 núcleos SPARC V9 CPU
    • 4 hilos de ejecución por núcleo
    • 64 bits
    • Espacio de 48 bits de direcciones virtuales y 40 bits de direcciones físicas.
    • Controlador J-Bus
    • 16 KBytes de cache primaria de instrucción (Level 1) por núcleo CPU.
    • 8 KBytes de cache primaria de datos (Level 1) por núcleo CPU.
    • MBytes de cache secundaria (Level 2) unificada.
    • 4 controladores DRAM para interfaz DDR2 SDRAM

3.1. Núcleo SPARC (SPARC Core)

El núcleo OpenSPARC contiene el hardware necesario para soportar cuatro hilos de ejecución. Este soporte consiste en un conjunto de todos los registros (con ventanas de 8 registros) por hilo, con la mayoría de los identificadores de espacio de direcciones (ASI), registros de estado auxiliares (ASR) y registros privilegiados replicados por hilo. Los cuatro hilos comparten las cachés de instrucción y de datos y los TLBs. Cada caché de instrucción es de 16 Kbytes con un tamaño de 32 bits por línea. Los TLB incluyen una funcionalidad de automapeo que permite a los múltiples hilos actualizar la TLB sin bloquear.

Cada núcleo SPARC tiene solo un tipo de pipeline de seis fases o etapas.

También dispone de las siguientes unidades:

1. La unidad Fech-Instruction (lectura de instrucción) (IFU), que incluye un sistema de cache de instrucción (Se encarga de gestionar los pc´s de los procesos, la cache L1).

2. La unidad de ejecución (EXU) incluye las fases de ejecución del pipeline.

3. La unidad Load/store (LSU) incluye etapas de memoria, write-back, y un sistema de cache de datos.

4. La unidad lógica Trap (TLU).

5. La unidad de procesamiento de flujo (o “stream”) (SPU) es usada para funciones de aritmética modular para criptografía.

6. La unidad de gestión de memoria (MMU).

7. La unidad frontend Floating- point (FFU).

3.1.1 Pipeline

Las fases del Pipeline son:
1. Lectura (Fetch)
2. Selección del hilo de ejecución (Thread Selectio)
3. Decodificación (Decode)
4. Ejecución (Execute)
5. La memoria (Memory)
6. Escritura retardada (Write Back)

Figura 2: Fases del Pipeline del núcleo SPARC

3.2. Unidad de Coma Flotante (FPU)

La Unidad de Coma Flotante es simple y compartida por los ocho núcleos SPARC. Esta unidad compartida es suficiente para la mayoría de las aplicaciones comerciales en las que típicamente menos del 1% de las instrucciones son operaciones con coma flotante.

3.3. Caché de nivel 2 (L2)

La caché de nivel 2 está organizada en 4 bancos, y el banco es elegido basándose en los bits 7 y 6 de la dirección física de memoria. La caché tiene 3 Mb, de 12 vias asociativas, con un algoritmo de reemplazo siguiento un algoritmo pseudo más antiguo usado (LRU). El tiempo de descarga para un fallo en la caché de nivel 1 para intrucciones es de 22 ciclos y para datos de 23 ciclos.

3.4. Controlador DRAM

El controlador DRAM del procesaros OpenSPARC T1 está organizado en 4 bancos (también hay versiones más económicas con 2 bancos para utilizar con menos memoria). Cada banco de la caché de nivel 2 interactúa exáctamente con un banco controlador DRAM. Los bancos son seleccionados basándose en los bits 7 y 6 de la dirección física, entonces cada banco del controlador debe tener módulos de memoria DIMM (Dual In-line Memory Module) idénticos instalados.
El procesador OpenSPARC T1 usa memorias DIMM DDR2 y puede uno o dos rangos de pilas de memorias DIMM. Cada banco/puerto de DRAM tiene un ancho del doble de un módulo de memoria DIMM (128 bit + 16 bit ECC). Todos los módulos deben ser idénticos, y el mísmo número de módulos (cada grupo se le llama rango)  deben ser instalados en cada puerto de los controladores DRAM. La frecuencia del controlador DRAM depende directamente de la frecuencia del núcleo, donde la frecuencia del núcleo debe ser al menos tres veces la del controlador. Los buses de datos de DDR (Double Data Rate) transiferen a una frecuencia el doble de la del controlador DRAM.

3.5. El puente de entrada/salida (IOB)

El puente de entrada / salida realiza una decodificación de direcciones en transacciones de entrada / salida y las dirige al bloque interno apropiado o al interfaz externo apropiado (J-Bus o interfaz del sistema serie). Adicionalmente, el IOB mantiene el estado de los registros para interrupciones externas.

3.6. El Interfaz J-Bus (JBI)

El interfaz J-Bus (JBI) is la interconexión entre el procesado OpenSPARC T1 y el subsistema de entrada / salida. J-Bus es un bus de datos y direeciones de 200 MHz y 128 bits de ancho de banda, usado sobretodo para el trafico del acceso directo a memoria (DMA), admás del tráfico de entrada/salida programable (PIO) para controlarlo.
El interfaz J-Bus es el bloque que recibe y responde las peticiones del DMA, enrutandolas a los bancos L2 apropiados, y también usando transacciones PIO en el tratamiento de hilos de procesador y redireccionando las respuestas.

3.7. Interfaz del Sistema en Serie (SSI)

El procesador OpenSAPRC T1 tiene un interfaz del sistema en serie de 50 Mbytes/sec que conecta con un circutio integrado específico de aplicación (ASIC) externo, que se relaciona con la memoria de sólo lectura (ROM) de arranque. Además, el SSI soporta accesos PIO, para permitir registros de estado de control (CSR) opcionales u otras interfaces dentro del ASIC.

3.8. Fundido electrónico (e-Fuse)

El bloque Fundido electrónico (e-Fuse) contiene información de la configuración que es grabada electrónicamente como parte de la manufactura, incluyendo parte del número de serie e información disponible del núcleo.

3.9. CPU-Cache Crossbar (CCX)

El CPU cache crossbar maneja la comunicación entre los ocho núcleos de la CPU, los cuatro bancos de L2-Cache, el puente de E/S, y la unidad de coma flotante (FPU). Estas unidades funcionales se comunican con cada una enviando paquetes, y el CCX arbitra el reparto del paquete.

Información extraida del Datasheet de OpenSPARC T1 (www.opensparc.net).

Tags: , , , , , , , , , , , ,

Comments are closed.