miércoles, 20 de febrero de 2013

Control microprogramado


Control microprogramado

    Usa secuencias de instrucciones para controlar operaciones complejas

  Llamado micro-programación o firmware

Implementación (1)

•   Todo lo que hace la unidad de control es generar
  un conjunto de señales de control
•   Cada señal de control está encendida o apagada
•   Representar cada señal de control por un bit
•   Tiene una palabra de control por cada
  microoperación
•   Tiene una secuencia de palabras de control por
  cada instrucción máquina
•   Añade una dirección para especificar la siguiente
  micro-instrucción, dependiendo de condiciones

Implementación (2)
•   Microprocesadores actuales

–  Muchas instrucciones y asociadas al nivel de registro  del hardware
–  Muchos puntos de control a ser manipulados

•   Esto resulta en memoria de control que

–  Contiene un número grande de palabras   •  Correspondiente al número de instrucciones a ser ejecutadas
  –  Tiene un tamaño amplio de palabra
  •  Debido al gran número de puntos de control a ser manipulados


Longitud de palabra de  microprograma

•  Basado en 3 factores
  Número máximo de microoperaciones
  simultáneas soportado
  – La forma como la información de control es
  representada o codificada
  – La forma en la cual se especifica la siguiente
  dirección de microinstrucción

  Tipos de microinstrucción

•  Cada microinstrucción especifica una sola
  (o pocas) microoperaciones a ser ejecutadas
  –  (microprogramación vertical)
•  Cada microinstrucción especifica varias
  microoperaciones diferentes a ejecutarse en
  paralelo
  – (microprogramación horizontal)

Microprogramación vertical

* Son más compactas (ocupan menos bits)
* N señales de control condificadas en log2n bits
* Capacidad limitada para expresar paralelismo
* Información de codificación de control requiere
una palabra decodificadora externa de memoria
para identificar la línea de control exacta que está
siendo manipulada


  Microprogramación horizontal

•  Palabra de memoria amplia
•  Alto grado de operaciones paralelas
  posibles
•  Poca codificación de información de control

Compromiso

•  Divide las señales de control en grupos
•  Implementa cada grupo como un campo
  separado en la palabra de memoria
•  Soporta niveles razonables de paralelismo
  sin mucha complejidad





Función de la unidad de control

*La unidad de secuenciamiento carga el registro de dirección de control (CAR) y emite un comando de lectura* El registro de dirección de control contiene la dirección de la siguiente microinstruccion a leer*Cuando se lee una microinstruccion de la memoria de control, se transfiere al registro intermedio de control (CBR)* El contenido del registro intermedio de control se conecta a las señales de control - leer microinstruccion es lo mismo ejecutarla* La lógica de secuenciamiento carga la nueva dirección en el registro de dirección de control basado en la información de la siguiente dirección del registro intermedio de control y las banderas de la ALU.

Ventajas y desventajas

•  Simplifica el diseño de la unidad de control
  – Más barata
  – Menos propensa a errores
•  Más lenta

Tareas hechas por una unidad de control microprogramada

•  Secuenciamiento de microinstrucciones
•  Ejecución de microinstrucciones
•  Deben considerarse ambas a la vez

Consideraciones de diseño

•  Tamaño de las microinstrucciones
•  Tiempo de generación de direcciones
  – Determinado por el registro de instrucción
  • Una por ciclo, después de que se captó la instrucción
  – Siguiente dirección secuencial
  • Lo más común
  – Saltos
  • Condicionales e incondicionales




Técnicas de secuenciamiento

•   Basadas en:
  - La microinstrucción actual
  - Banderas de condición
  - Contenidos del IR
  - La dirección de la memoria de control debe   generarse
•   Basado en el formato de la información de la
  dirección
  –  Dos campos de dirección
  –  Un campo de dirección
  –  Formato variable


Generación de direcciones

Explícitas

Implícitas

Doscampos
Saltoincondicional
Saltocondicional

Traducción
Adición
ControlResidual

Ejecución

•  El ciclo es el evento básico
•  Cada ciclo está formado de dos eventos
  – Captación
  • Determinado por la generación de la dirección de la
  microinstrucción
  – Ejecución
El efecto es generar señales de control
•  Algunos puntos de control internos al
  procesador
•  El resto va al bus de control u otra interfase












ORGANIZACIÓN PARALELA

1-



2-



3-



4-



5-



6-



7-



8-



9-



10-



11-



12-



13-



14-



Contralador de coherencia



Controlador de coherencia
Para mantener la coherencia el hardware tiene
que controlar tanto las acciones del procesador
como del bus.
Las peticiones para trabajar con la cache pueden
venir simultáneamente del procesador local y del
bus.

  El snoopy es un algoritmo distribuido y por
definición, no atómico; por tanto, pueden
aparecer varios problemas.


  Veamos las características físicas de un
determinado controlador de coherencia, para
entender cómo se resuelven algunos problemas.


Replicar el directorio de la cache, uno para el procesador y el otro para las operaciónes del bus.


Un bloque de datos puede estar también en el búfer de escritura: hay que replicar el hardware de búsqueda.





¿Cuánto tiempo hay que esperar a la respuesta de los snoopys?



-  tiempo fijo   (max.)
-   tiempo variable   (el necesario)
Más líneas de control en el bus:
  sh, dirty, inh...



El problema principal es la falta de atomicidad: se pueden mezclar acciones de distintos procesadores sobre el mismo bloque de datos. 


P.e., dos procesadores, a la vez, solicitan el mismo bloque de datos. Si en ese momento no hay ninguna copia en el sistema (sh = 0), ambos cargarán el bloque en estado E!
  O, dos procesadores escriben a la vez en su cache en un bloque que está en estado S, por lo que se anulan mutuamente sus copias!



Una simplificación: la utilización del bus es atómica. Para ello, dos señales de control:
  BRQ (bus request): quiero utilizar el bus.
  BGR (bus grant): el bus es para ti.



A pesar de todo, la atomicidad no está garantizada, y por lo tanto, pueden ocurrir carreras (races):
  llegar, siguiendo un algoritmo, a un estado   incorrecto, debido a que el algoritmo no se ha   ejecutado de manera atómica.



Solución:
  Además de la atomicidad de las operaciones del bus (BRQ, BGR), añadir estados transitorios al protocolo de coherencia.
    Los estados transitorios no se introducen en el directorio (a nivel de bloque) sino que son estados del controlador.






El protocolo MESI consiste en cuatro estados:
Modificado (M)
Exclusivo (E)
Compartido(S)
Invalido (I)

Exclusivo (E).- El estado exclusivo, significa que únicamente una cache tiene una copia del bloque, y no ha sido modificado (es decir, la memoria principal esta actualizada)
Compartido(S) .- El estado compartido significa que potencialmente dos o mas procesadores tienen este bloque en su cache en un estado no modificado.

M - Modified (Modificado): La línea de caché sólo está en la caché actual, y está "sucia"; ha sido modificado el valor de la memoria principal . Es necesario que los datos sean escritos otra vez en la memoria principal antes de permitir cualquier otra lectura del estado de la memoria (ya no es válida).
I - Invalid (Inválido): Indica que esta línea de caché no es válida.












Examen


Paralelismo 
Producido internamente dentro de la CPU
*Estructura pipeline.
*Arquitectura RISC.
*Arquitecturas superescalar y supersegmentada.
*Aplicación a las familias de Intel 80x86 y Pentium
Paralelismos a nivel de máquina
*Máquinas para el aprovechamiento del paralelismo de datos.
*Multiprocesadores.
*Arquitecturas específicas diseñadas para ámbitos de aplicación concretos.
Necesidades de mayor capacidad de computación:
*Tratamiento de complejos modelos matemáticos (meteorología, ecología, bioquímica, …)
*Manejo masivo de datos en tiempo real, fundamentalmente aplicables al campo de las comunicaciones.
*Explotación de grandes bases de datos; extracción de patrones y tendencias de los datos.
*Aplicaciones multimedia: imágenes de alta definición, música de alta fidelidad, reconocimiento del lenguaje hablado...
*Inteligencia artificial y sistemas expertos.
Mejora de la capacidad de computación:
*Aumento de la velocidad (frecuencia de funcionamiento de los circuitos electrónicos). Limitaciones tecnológicas y físicas.
*Uso del Paralelismo.
Paralelismo: Capacidad de una máquina para simultanear acciones Vinculado al aumento del rendimiento de la máquina (velocidad, capacidad de proceso).

Exclusiones:
Simultaneidad entre acciones de CPU y periféricos (Operaciones en segundo plano).
Redundancia en procesos para conseguir fiabilidad.
Estructuras que producen el paralelismo:
Unidades funcionales: Cada parte de una máquina capaz de realizar acciones
indpendientemente del resto.
Configuración de las UFs.
*Pipeline (segmentada).
Paralela.
Pseudopipeline.
Configuración pipeline:l
Conexión en cascada, cada unidad recibe como entrada la salida de la anterior.
Acciones uniformes en fases y tiempos.
Solapa el tiempo de proceso de las acciones.
Una acción finalizada en cada intervalo si la cadena está llena.

Configuración paralela:
Las entradas y las salidas son comunes a todas las unidades.
UFs sincronizadas.
Las acciones se realizan completas en cada UF.
Conflicto: acceso a recursos compartidos.

Configuración pseudopipeline 
Conexión de UFs en paralelo.
Desfase en la entrada de acciones de n ciclos ( al menos 1).
Resultado indistinguible de PIPELINE.
Reduce conflictos de PARALELA pero obtiene peor respuesta en el tiempo.

Conflictos del paralelismo, tipos :
Desajustes de tiempo: Diferentes tiempos entre diferentes UFs. Imponen parones en el
pipeline.
Accesos a recursos compartidos: Afectan fundamentalmente a configuraciones
paralelas.
Dependencias: Afectan a la simultaneidad de acciones.
De operandos
De saltos (condicionales e incondicionales)

Grado de paralelismo:
Número de acciones simultáneas que se realizan.
Aplicable a la máquina o a parte de ella.
El máximo lo establece el número de unidades funcionales existentes.
Queda limitado por las características de la aplicación en curso.

Eficiencia:
Relación entre el Grado de paralelismo conseguido y la capacidad teórica de paralelismo
de la máquina.
El aumento de UFs, aumenta los conflictos y disminuye la eficiencia.
Se trabaja con valores medios.

Grano de paralelismo:
Tamaño de cada una de las acciones en las que se divide el proceso para su realización
simultánea.
Clasificación cualitativa:
Muy grueso: programas.
Grueso: subprogramas, tareas hijas, ...
Fino: instrucción.
Muy fino: fases de instrucción.
Clasificación cualitativa: Medido en nº de instrucciones
Tipos de paralelismo:
En función de quién especifique las acciones que se pueden realizar simultáneamente.
Explícito: El propio programa identifica las acciones (programación concurrente).
Implícito: No lo especifica el programa sino la máquina.
  Por azar: Acciones independientes. Entorno multiusuario.
  Extraído por la máquina (compilador).
Fuentes de paralelismo:
Control. Diferentes acciones que se pueden realizar simultáneamente. 
Datos. Misma acción sobre un conjunto estructurado de datos.
Flujo. Mismos procesos sobre una gran conjunto de datos.

Clasificación de Flynn:

También conocida como taxonomía de
Flynn
Surge en los principios de los 70
Aunque no es definitiva para caracterizar
todos los tipos de ordenadores se sigue
utilizando como una primera aproximación
para definir un ordenador.
Concibe al ordenador como un conjunto de
unidades de cjto. de uds. de control y
proceso.
Esas uds. reciben flujos de instrucciones y
de datos.

Clasificación de Flynn:

Computadora SISD: (Single instruction
(flow), single data(flow). Sistemas clásicos
de monoprocesadores.

Computadora SIMD: (Single instruction
(flow), multiple data(flow). Sistemas
vectoriales y matriciales.

Computadora MISD: (Multiple instruction
(flow), single data(flow). Enunciado de forma teórica.
Se discute si hay alguna máquina de este tipo.
Quizás los ordenadores sistólicos

Computadora MIMD: (Multiple instruction
(flow), multiple data(flow). Pertenecen a esta
categoría los sistemas pluriprocesadores.


RISC vs. CISC:


Años 80. Implantación de modelos de control del rendimiento. Nueva tecnología RISC:
Simplificar la unidad de control para mejorar su eficiencia.
Tecnología CISC: La existente hasta el momento. 
Instrucciones muy complejas, a veces específicas y muy numerosas.
Salto semántico.
Reducción de los ciclos de fetch.
Tamaño del programa.

Procesadores CISC: Consecuencias.

Compiladores simples.
Unidades de control complejas, microprogramadas.
Bajo rendimiento en cadenas pipeline.

Pipeline de dos etapas (instrucciones poco homogéneas):

Unidad de Prefetch
Pila de prefetch
Unidad de ejecución

Conflicto de desajuste de tiempos.
Conflicto de acceso a recursos.
Conflicto de dependencia de saltos.
No hay conflicto de dependencia de operandos.

Pipeline de 6 etapas
1. FE (Fetch)
2. DE (Decoficación)
3. CD (Calculo de la direc. del oper)
4. LO (Lectura del operando)
5. OP (Realización de la operación)
6. ER (Escritura del resultado)

Maquinas de una sola dirección sin direccionamiento indirecto ni ejecución múltiple
* pasos 3,5, y 9 una sola vez
* pasos 4,7 y 8 desaparecen 

Proc. CISC. Dependencia de saltos
* Saltos incodicionales:
identifiacion temprana, mas simple. Durante FE o LO
* Saltos condicionales:
Incertidumbre. Perdida de rendimiento.

- Saltos retardado
- Flujo múltiples
- Precaptar destino del salto
- Buffer de bucles
- Predicción de salto

* Flujos múltiples

- Duplicar primeras etapas del pipeline.
- Se opta por los dos caminos y cuando se ejecute la instrucción se descarta el camino fallido.
- A veces más de dos caminos para trabajar con instrucciones de saltos condicional encadenadas
- Aumento significativo de los conflictos de acceso a los recursos en memoria
- Eliminación de la mayoría de los huecos debidos a saltos.

Precaptar destino del salto
- leer la siguiente instruccion y la destino del salto.
- se limita a la fase de fetch de ambas instrucciones
- reduce el hueco en pipeline