Please enable JavaScript.
Coggle requires JavaScript to display documents.
Tema 3: Diseño de Procesador Segmentado - Coggle Diagram
Tema 3: Diseño de Procesador Segmentado
3.1 Procesador Monociclo
En el monociclo, todas las operaciones tardan lo mismo que la operación mas lenta.
Este necesitará dos memorias(Instruction Data)
3.2 Procesador Multiciclo
En el procesador multiciclo tendremos un reloj con ciclos más cortos, donde la operación decide si ejecutarse en un ciclo o no.
Instrucciones
Instrucciones de
memoria
, son las mas costosas.
Estas duran lo mismo en ambos procesadores.
Instrucciones de
salto
, son las menos costosas.
Usará tantas etapas como necesite la operación. Este al tener ciclos de reloj más cortos puede acceder más veces a la misma memoria por lo que
memory data
puede estar compartida.
3.3 Procesador Segmentado
Tipo de procesador que usamos hoy en dia (desde 1980). En este procesador se pasan varias instrucciones a la vez por el camino de datos, tantas como etapas tengamos en el camino de datos.
Causas que pueden disminuir la aceleración,
riesgo (hazards)
––> Bloqueo del avance de instrucciones.
Etapas de Ejecución
Fetch
, buscamos la instrucción en la memoria de instrucciones, y a guardamos en el registro de segmentación para ver que hacemos con dicha instrucción.
Decodificación
, información de los Rs y vemos los operandos con los que voy a trabajar.
Ejecución ALU
, hacemos operaciones en la ALU
Memoria
, tenemos una conexión alternativa en caso de que la instrucción no tenga que hacer algo en memoria.
Escritura de registro
, es donde escribimos aquello que no podemos escribir en los registros de segmentación, activando en el banco de registro el WD3. La salida puede proporcionar una operación aritmética o un salto.
3.4 Gestión de riesgos e interrupciones
Situación que impide la ejecución de la siguiente instrucción del flujo de programa durante el ciclo de reloj correspondiente.
Para solucionar esto, hay que modificar la forma en la que pasar las intrucciones. Estas modificaciones se podran hacer a nivel de hw o sw, relentizará el proceso pero sera más fiable.
Un riesgo nace cuando etnenemos instrucciones muy juntas donde hay dependencia de datos. No hay tiempo de que se actualice el nuevo valor.
Dependecia, datos que no pueden ejecutarse sin el previo cálculo de otras
Riesgo de dependecia de datos
, acceso a dtaos cuyo valor actualiozado depende de la ejecución de instrucciones precedentes. Dependencias:
WAR
(Write After Read)
WAW
(Write After Write)
RAW
(Read After Write), para evitar este tipo de riesgosl las instrucciones deben tener una separación de 3 instrucciones.
Solución sw
Esto lo conseguimos añadiendo operaciones
NOP
(2x) (operaciones que no hacen nada), con esto el rendimiento caera un poco.
Solución hw
Entre instrucciones aritméticas se resuelve redireccionando sin parar la segmentación. Esto se consigue con la
reordenación de código
, en este caso el código no pueden tener ninguna dependencia y
forwarding
, este penalizará menos el rendimiento.
Generados por una LDR, se resuelve redireccionando y con parada de cause de un ciclo,
STALL
(parada). Esto se produce porque el riesgo no se puede evitar.
3.5 Emisión Múltiple de Instrucciones