1. Paralelismo
1.1. Las arquitecturas basadas en Von Neumann presentan limitaciones técnicas.
1.2. Paralelismo es una arquitectura alternativa.
1.3. Tipos de paralelismo:
1.3.1. Interno: Única CPU (Segmentación)
1.3.2. Explícito: Varias CPUs
1.3.2.1. SIMD: un solo flujo de instrucciones, múltiples datos.
1.3.2.2. MIMD: varios flujos de instrucciones y datos.
1.3.2.3. MISD: varios flujos de instrucciones y un solo de datos.
2. Tipos de procesadores:
2.1. Secuenciales
2.1.1. Hasta que no termina de ejecutar una instrucción no comienza la siguiente
2.1.1.1. Monociclo: la duración del ciclo de reloj vendrá fijada por la instrucción más lenta
2.1.1.2. Multiciclo: la duración de la etapa más larga es la que fija el periodo del reloj
2.2. Segmentados
2.2.1. Permite solapar en el tiempo la ejecución de varias instrucciones.
2.2.1.1. Paralelismo a nivel de instrucción (Pipelining).
2.2.1.2. Los procesadores actuales incorporan pipelining.
3. Encauzamiento
3.1. Técnica para la generación de paralelismo implícito
3.1.1. Ejecutar varias instrucciones o partes de instrucciones, usando una única unidad de proceso.
3.2. La segmentación consiste en dividir una función en subfunciones independientes que se realizan simultáneamente.
3.2.1. Se tratan distintos procesos a la vez aunque en fases distintas.
3.3. Proceso similar a una cadena de montaje.
3.4. El encauzamiento consigue la ejecución de instrucciones en un tiempo muy inferior a los procesos no encauzados
3.5. Divide las fases de ejecución de las instrucciones en más etapas.
3.5.1. Aprovecha los mejor los momentos en los que no se acceden a memoria.
3.5.1.1. PowerPC 750 6 etapas
3.5.1.2. UNIVAC 4 etapas
3.5.1.3. NanoMips 5 etapas
3.6. .
4. Conceptos
4.1. Se desea:
4.1.1. CPI = 1
4.1.2. Período de reloj limitado por la etapa más lenta.
4.2. Técnica que surgió para aumentar las prestaciones
4.3. Si se ejecuta una instrucción cada vez, el hardware está desaprovechado.
4.4. En cada etapa las diferentes instrucciones tiene que utilizar diferentes recursos para evitar conflictos.
4.5. .
5. Problemas
5.1. Se realizaban accesos a memoria en las etapas F y M.
5.1.1. Solución: Se separan las memorias, una de instrucciones y otra de datos
5.2. Accesos al banco de registros en las etapas D y W.
5.2.1. Solución: La escritura en los registros se realiza en la primera mitad del ciclo y la lectura en la segunda.
5.3. El PC cambia en F, pero las instrucciones de salto lo pueden modificar en M
5.3.1. Multiplexor etapa F
5.3.2. Restador etapa X para realizar al mismo tiempo la suma del desplazamiento al PC en la ALU y la comparación de registros en el caso de BEQ
5.4. Otras soluciones:
5.4.1. Registros de segmentaciones
5.4.1.1. Almacenan el resultado de cada etapa al final del ciclo de reloj
5.5. Solucion Ruta de Datos
6. Unidad de control procesador segmentado
6.1. En la etapa D, el opcode permite generar todas las señales de control necesarias.
6.2. Las señales se propagan por los registros de segmentación.
6.3. Circuito combinacional que genera las señales de control para cada tipo de instrucción a partir del opcode.
6.4. Dimensionar los registros de segmentación.
6.4.1. X-> ALUSrcA, ALUSrcB, ALUOp y RegDst
6.4.2. Y-> branch, MemRead y MemWrite
6.4.3. W-> MemtoReg y RegWrite
6.5. .
7. Rendimiento de un procesador segmentado
7.1. La productividad aumenta ya que idealmente se completa una nueva instrucción por ciclo, CPI =1
7.2. El tiempo de ejecucción de una única instrucción empeora debido al hardware adicional que se introduce en la ruta de datos.
7.3. SpeedUp máximo al segmentar un procesador multiciclo: S = tmul / tseg S = (I*CPI*T)mult / (I*CPI*T)seg
8. Pipeling vs Paralelismo
8.1. Ambas técnicas se orientan a mejorar el rendimiento, incrementando el número de modulo hardware que operan simultáneamente.
8.2. Pipelining
8.2.1. El HW no está replicado, sólo etsa dividido en varias etapas.
8.3. Paralelo
8.3.1. El HW si está replicado, por lo que varias operaciones pueden ejecutarse de forma simultánea.
8.4. .
9. MIPS: ejemplo de juego de instrucciones para pipelining
9.1. El juego de instrucciones se diseñó para ser ejecutado en un pipelining
9.1.1. 1. Todas las instrucciones tienen la misma longitud. Faciliata la etapa F y D
9.1.2. 2. MIPS solo tiene unos pocos formatos de instrucciones: al mismo tiempo se encuentra los registros fuente en los mismo campos y se decodifica la instrucción
9.1.3. 3. Operandos en memoria solo existen en instrucciones load/store.
9.1.4. 4. Los operandos deben estar alineados en memoria, por lo que solo se necesita un acceso a memoria.
10. Resolución de riesgos en procesadores segmentados
10.1. Lo ideal sería mantener todas las etapas del pipeline llenas, pero esto no es así, por lo que pueden presentar estos riegos:
10.1.1. Riesgos estructurales
10.1.1.1. Se producen cuando dos o más instrucciones necesitan utilizar el mismo recurso hadware al mismo tiempo
10.1.1.1.1. Solución -> Parones estructurales
10.1.2. Riegos de datos
10.1.2.1. Se producen cuando dos o más instrucciones presentan dependencias de datos entre sí,
10.1.2.1.1. Tipos de dependencias
10.1.2.1.2. Solución de software -> Prevención
10.1.2.1.3. Solución de hardware -> Detener el pipeline
10.1.2.1.4. Solución de hardware -> Anticipación (Adelantamiento), data fordwarding
10.1.3. Riesgos de control
10.1.3.1. Una instrucción que modifica el valor del PC todavía no lo ha hecho cuando se tiene que comenzar la ejecución de la siguiente instrucción
10.1.3.2. BEQ, hasta la fase M no carga el valor adecuado para el PC
10.1.3.3. Soluciones
10.1.3.3.1. Hardware Adicional
10.1.3.3.2. Hardware : Prediccion de Salto Estatica
10.1.3.3.3. Software: Salto Retardado o Relleno de Ranura
11. Excepciones en el nanoMIPS segmentado
11.1. Los métodos utilizados para indicar la causa de una excepción son :
11.1.1. Registro de excepción
11.1.2. Vector de interrupciones
11.1.2.1. la dirección a la cual se transfiere el control viene determinada por el tipo de excepción
11.1.2.1.1. .
11.2. Las excepciones se tratan como otro tipo de riesgo de control.
11.3. En caso de Overflow
11.3.1. Se debe vaciar el pipeline de instrucciones posteriores a la suma
11.3.2. Se debe comenzar la carga de instrucciones de la nueva dirección
11.4. La ruta de datos se debe adaptar para soportar excepciones
11.4.1. Señal para seleccionar el nuevo valor del PC
11.4.2. Registro de excepción para almacenar la causa de laexcepción: Cause Register
11.4.3. Registro para almacenar la instrucción que provocó la excepción: EPC
11.5. Trabajo conjunto del SO y del Hardware
11.5.1. Hardware
11.5.1.1. Detener la instrucción que provocó el fallo
11.5.1.2. Completar las instrucciones anteriores
11.5.1.3. Vaciar el pipeline de instrucciones posteriores
11.5.1.4. Guardar la causa de la excepción
11.5.1.5. Salvar la dirección de la instrucción que provocó la excepción
11.5.1.6. Saltar a una dirección predeterminada
11.5.2. Sistema Operativo
11.5.2.1. analiza la causa de la excepción y actuar en consecuencia
11.5.2.1.1. Cuando se trata de una instrucción indefinida, Fallo de hardware u overflow, el SO mata el proceso y retorna el motivo
11.5.2.1.2. Cuando se trata de una petición de E/S , el SO salva el estado del programa , realiza la tarea en cuestión y restaura el estado del programa