martes, 1 de mayo de 2012

Tema 1: Procesadores segmentados de IC2

PROCESADORES SEGMENTADOS:
Puede procesar varias instrucciones a la vez, aunque cada una este en una etapa
distinta. Es una técnica que usa la segmentación para aumentar su rendimiento.

  • Antes: procesadores CISC (Complex Instruction set Computer):  Alto coste en la memoria -> hay que aumentar las operaciones en el microcódigo. 1 instrucción compleja que contiene muchas microinstrucciones.

  • Ahora: RISC (Reduced Instruction Set Computer): Disminuyendo accesos a memoria, ya el procesador ahora es mucho + rápido que la memoria. Ventajas:


    •  Reduce tamaño CPU,

    •  lógica de control simple, fácil diseño.

    •  Máquinas con menos consumo al reducirse CPU

    •  Segmentación de instrucción (pipeline) al ser más sencillas y de formatos fijos.

    •  Reduce accesos a memoria, ya que se usan más los registros.


  • Riesgo: Aparece cuando 2 o + instrucciones entran en conflicto.


Las operaciones complejas en el código fuente, es el compilador que las descompone,
en operaciones sencillas RISC, con criterio, para actuar en el microprocesador.

Paralelismo:  Dos líneas para implementarlo:

a) Replicación de elementos como unidades funcionales (se usa en multiprocesadores, superescalares, VLIW y vectoriales. Por ejemplo tener dos registros en lugar de uno

b) Segmentación: segmentación de cauce, pipelining: una unidad funcional se divide en etapas que funcionan de forma independiente (en superescalares, VLIW). Por ejemplo dividir el código en trozos y que cada parte la vaya haciendo algún elemento o unidad funcional.

Michael Flynn clasifica computadores en:

  • SISD: 1 flujo de instr.  1 flujo de datos. Una UC (unidad de control) y una UP (unidad procesamiento)

  • SIMD: 1 flujo de instr. Muchos flujos de datos (una instrucción opera sobre varias
    operaciones IGUALES)

  • MIMD: Muchos flujos de instr. Muchos flujos de datos

  • MISD: Muchos flujos de instr. Un flujo de datos (no existe específicamente)


Hay dos tipos de paralelismo:

- Paralelismo de datos: 1 instr. Se ejecuta varias veces en paralelo sobre datos distintos
SIMD

- Paralelismo funcional: Instr. distintas se ejecutan en paralelo. Hay varios niveles (MIMD y MISD)

  • ILP de instr.: Bajo nivel, lo hace vía HW. Granularidad fina. Flynn no la
    considera.

  • De bucle: En paralelo diferentes iteraciones de un bucle. Granularidad fina-media

  • De funciones: Procedimientos simultáneos. Granularidad media.

  • De programas: En paralelo, programas diferentes. Granularidad gruesa.


Medidas para evaluar el rendimiento

Tiempo
de respuesta: Tiempo que tarda el procesador en procesar una entrada, programa
o instr.

Productividad:
Nº de entradas procesadas / unidad de tiempo

Funcionabilidad:
Tipos de entradas <> que puede procesar

CPI:
Ciclos que tarda en ejecutarse cada tipo de instrucción.

NI:
Nº de instrucciones que procesa

f:
Frecuencia de reloj

Tciclo:
Periodo del reloj (inverso de la frecuencia)

Tcpu:
Tiempo de cpu de un programa                     Tcpu
= NI * CPI * Tciclo

Ganancia
(speedup): Rendimiento de la máquina mejorada / rendimiento original

Ley
de Amdahl: Ganancia se puede obtener está limitada a:

Sp
< p/ [1+f(p-1)]

f:
Fracción de tiempo en la que no se puede utilizar la mejora

p:
Factor de mejora

Etapas
de una instrucción

  1. IF:
    Lectura de la instr. De la caché

  2. ID:
    Decodifica la instr. Y lee los operandos

  3. EX:
    Ejecución de las operaciones, cálculo de la dirección de salto…

  4. MEM:
    Accede a la caché

  5. WB:
    Escribe el resultado en el registro


Riesgos
de la segmentación pag30

-
Estructurales:
Conflictos por los recursos que tiene la máquina

-
Por
dependencia de datos: Una instr. Necesita resultados de una instr. Anterior

  • RAW:
    Verdadera. Se da en ASG

  • WAR:
    Antidependencia

  • WAW:
    De salida

  • RAR:
    No es riesgo.


-
De
control:

Riesgo
estructural