Archive for Octubre, 2009

General, Informática Núcleo OpenSPARC T1

0 Comments

El núcleo o “core” OpenSPARC T1 forma parte del procesador OpenSPARC T1.

Diagrama de bloques de alto nivel del núcleo

Diagrama de bloques de alto nivel del núcleo

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).

Aquí explicaremos cada una de ellas.

1. IFU – Unidad de búsqueda de instrucción (Instruction Fetch Unit)

La política de selección de hilos (o “threads”) es como sigue: una elección entre los hilos disponibles cada ciclo siguiendo la prioridad del hilo menos reciente ejecutado. Los hilos se vuelven no disponibles debido a las largas latencias de operaciones como cargas, multiplicaciones, divisiones, ramas, fallos de caché, excepciones y conflictos. Las  cargas son estimadas como fallos de caché y los hilos pasan a tener baja prioridad.

La Unbidad de búsqueda de instrucción tiene una matriz de la caché de instrucción tiene 16Kb, 4 vías, líneas de 32 bytes de tamaño con un solo tag de instrucción portado.  También tiene un vector dual (1R/ 1W) de bit de validez para mantener la línea de validez de la caché con su estado (válido / inválido). La invalidación accede a este vector y no al tag de instrucción. Un algoritmo pseudo-aleatorio es el encargado de elegir las instrucciones inválidas para reemplazarlas.

Hay una TLB asociativa total de instrucción con 64 entradas. El buffer soporta los siguientes tamaños de página: 8K, 64K, 4M y 256M La TLB usa un algoritmo de tipo pseudo LRU (primero el menos recientemente usado) para los reemplazos.

Dos instrucciones son buscadas en cada ciclo, aunque sólo una es usada, lo que reduce la actividad en la caché. Sólo puede haber un fallo por hilo y 4 por núcleo. Fallos duplicados no cusan búsquedas en la caché de nivel 2.

El fichero de registros de enteros (IRF – “Integer Register File”) del núcleo, tiene 5K con 3 puertos de lectura, 2 de escritura y 1 de transporte. Hay 640 registros de 64 bits con código de corrección de errores (ECC). Sólo 32 registros de la ventana actual pueden ser vistos por el hilo. La ventana cambia en segundo plano mientras se hace la seleccion del hilo. El IRF proporciona un acceso de lectura / escritura por ciclo.

2. EXU – Unidad de Ejecución (Execution Unit)

Esta unidad tiene una unidad aritmética lógica (ALU) simple y un cambiador. La ALU es reutilizada para el cálculo de las direcciones de rama y virtuales. Hay un multiplicador de enteros por núcleo. El multiplicador de enteros es compartido por el EXU y el SPU basándose en el algoritmo de round-robin. Hay un divisor simple (sin resto) por núcleo. Un hilo usando MUL / DIV será desecha su operación (roll-back) y desactivado si otro hilo está ocupando las unidades de MUL / DIV.

3. LSU – Unidad de carga / almacén (Load / Store Unit)

La caché de datos tiene 8K de datos, 4 vías y un tamaño de linea de 16 bits. También se almacena la validación de los datos con un vector dual 1R/1W. Un algoritmo pseudoaleatorio es usado para el reemplazamiento de los datos. El TLB de datos opera como el TLB de instrucción.

La LSU tiene 8 búferes de entrada para almancén, uniendose en un array de 32 entradas. Sólo una carga es permitida por hilo. Cargas de líneas duplicadas no son enviadas a la caché de nivel 2.

La LSU tiene un interfaz lógico con el crossbar de la caché de la CPU (CCX). Este interfaz permite:

  • priorizar las peticiones de operaciones en coma flotante, de streaming, salvados (stores) e interrupciones.
  • pedir prioridad
  • ensamblar paquetes provinientes de la caché del procesador (PCX)

La LSU mantiene los retornos de la PCX y el orden de las actualizaciones y las  invalidaciones de la caché.

4. FFU – Unidad frontend de coma flotante (Floating-point Frontend Unit)

Esta unidad decodifica las instrucciones de coma flotante e incluye un fichero de registros de coma flotante (FRF). Algunas operaciones de coma flotante como “mover”, “valor absoluto” y “negativo” están implementadas aquí, mientras otras lo están en la FPU.

Cuando la FFU detecta una operación de coma flotante (Fpop) hace lo siguiente:

  • El hilo se desactiva.
  • La Fpop es decodificada y leído el FRF.
  • Se empaqueta la operación y los operanados y se envía a la FPU a través del crossbar.
  • La computación se termina cuando el resultado es retornado a través del crossbar.
  • Se actualiza el FRF y se reinicia el hilo.

5. TLU – Unidad Lógica de Interrupcioes (Trap Logic Unit)

Soporta seis niveles de interrupciones. Las interrupciones causan el flush del pipeline y el thread cambia hasta que el contador de programa de interrupción está disponible. La TLU tambiénn tiene capacidad hasta 64 interrupciones pendientes por hilo.

6. SPU – Unidad de Procesamiento de Cadenas (Stream Processing Unit)

La SPU incluye una unidad aritmética modular (MAU) para criptografía (una por núcleo), y soporta criptografía asimétrica (RSA de clave pública) de clave de hasta 2048 bytes. Comparte un multiplicador de enteros para las operaciones artiméticas modulares. La MAU pues ser usada sólo por un hilo a la vez. La operación de la MAU es configurada por lo guardado en el registro de control, y el hilo retorna al procesamiento normal. La MAU inicia operacioes de lectura y guardado de cadenas en la caché de nivel 2 a través del crossbar, y computa operaciones en el multiplicador. La finalización de la MAU puede ser comprobada por votación o usando una interrupción.

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

General, Salud Comidas para una dieta sana

0 Comments

Uno de los mayores problemas de nuestra comidas es que no nos planteamos las comidas como algo que haya que regular o planificar. Tiramos a lo fácil: para comer algo caliente, freímos, calentamos platos precocinados, etc. Cuando pensamos en dar sabor y para condimentar, sólo se nos ocurren en cosas con grasas, salsas, etc.

Pero si planifcamos una dieta sana, nos damos cuenta que hay infinidad de posibilidades, descubriremos sabores que no conocíamos, y comeremos de todo. Muchas veces repetimos las comidas por no planificarlas, y nos perdemos lo mejor de la gastronomía: experimentar cosas nuevas. Hacer una dieta nos puede hacer disfrutar de la comida.

Para perder peso es necesario seguir una dieta donde se opte preferente por los alimentos más saludables y con menor valor calórico. Además, realizar algo de ejercicio: caminar media hora todos los días, o salir un par de dias a correr o andar en bici, o ir al gimnasio, etc.

Recordemos la pirámide alimenticia:

Pirámide alimentaria

Pirámide alimentaria

En la parte más baja, tenemos los cereales, el pan, la pasta, el arroz, etc. Estos se deben comer todos los días y forman parte de casi todas nuestras comidas.

En el segundo escalón tenemos las frutas, verduras y hortalizas, que tendremos que comer 5 de estas al día, o sea, presente en todas (o casi todas) nuestras comidas a lo largo del día.

En el tercero tenemos los productos lácteos, que debermos tomar 2 o 3 veces al día.

En el cuarto escalón están las carnes, pescados y huevos, que iremos alternándolos para comerlos una vez al día.

En el quinto están los aceites y mantequillas. Usaremos 3 cucharadas de aceinte para todas las comidas al día, por ejemplo.

Arriba del todo están los embutidos, dulces, pastelería, etc. que lo haremos ocasionalmente. Esto quiere decir muy de vez en cuando, no cada día como solemos hacer. A lo sumo, una vez a la semana.

Voy a poner unos ejemplos de comidas a lo largo del día para realizar una dieta equilibrada, sana y bajas en calorías (1.500 kcal aprox).

Desayunos ejemplos:

  • leche desnatada con cacao light y dos tostadas integrales con mermelada light.
  • bebida de soja con café y 5 galletas integrales
  • yogur y una pieza de fruta.
  • café con leche desnatada y dos tostadas integrales con jamón cocido.

Media mañana ejemplos:

  • Una pieza de fruta.
  • Un yogur.
  • café con leche.

Comidas ejemplo:

  • Ensalada de lechuga, queso fresco y tomate y dorada a la espalda.
  • Lentejas con cebolla, pimiento, puerro y zanahoria y pechuga de pollo a la plancha.
  • ensalada de escarola, ajo y palitos de cangrejo y garbanzos cocidos con espinacas rehogadas con ajo.
  • judias verdes al vapor, con patata y zanahoria y bonito a la plancha.
  • ensalda de arroz integral con zanahoria y lechuga y conejo rehogado con ajo.
  • Ensalada de lechuga, rabanitos y maiz y puré de verdura con picatostes.
  • pasta con tomate natural triturado y parrillada de verduras.
  • Ensalda de tomate, cebolla y pimientos y champiñones salteados con ajo picado y perejil.
  • Puré de calabacín y tiras de pollo con brócoli.
  • Solomillo a la plancha y zanahorias y guistantes cocidos.
  • Tomatina con cebolla y atún natural y lenguado la plancha.
  • endívias con palmitos y parrillada de verduras (berenjena, espárragos verdes, tomate y calabazín.

De postre un yogur desnatado o pieza de fruta, dependiendo de lo que hayamos ya comido por la mañana.

Meriendas ejemplo:

  • Una o dos piezas de fruta.
  • yogur con una cucharada de cereales.

Cenas ejemplo:

  • Ensalada y tortilla de dos huevos.
  • sopa de verduras y pechuga de pavo a la plancha.
  • parrillada de verduras y revuelto de un huevo y gambas.
  • lubina al horno con patatas.
  • berenjena al horno con quisantes, cebolla y queso light.
  • revuelto de setas y ajetes tiernos.
  • pan tostado con tomate natural, jamón cocido y queso light.
  • Puré de calabacín y emperador a la plancha.
  • Arroz con zanahoria, guistantes y tomate natural y tortilla de un huevo y queso fresco.
  • alcachofas con vinagreta y esparragos blancos con jamón cocido.
  • lasaña de verduras.

De postre un yogur desnatado o pieza de fruta, dependiendo de lo que hayamos ya comido durante el día.

Te invito a que te inventes tus propios platos.

Tags: , , , , , ,