Skip to content

00.TheExecutionOfInstructions

nonodev96 edited this page Jun 28, 2022 · 2 revisions

Ejecución de instrucciones

Para el repertorio de instrucciones del DLX (sin incluir las operaciones de punto flotante), todas las instrucciones se pueden dividir en cinco simples etapas (fetch, decode, execute, memory-access, and write-result).

Pipe Etapa
Fetch Captación
Decode Decodificación
Execute Ejecución
Memory-Access Acceso a memoria
Write-Result Escritura en disco

Estas etapas coinciden con el cauce de ejecución (Pipeline) del DLX.

La siguiente tabla muestra los eventos en cada estado del los núcleos en el cauce.

Stage Alu Instruction Load or store instruction Branch instruction
IF IMAR ← PC IR ← Mem[IMAR] PC ← PC + 4 IMAR ← PC IR ← Mem[IMAR] PC ← PC + 4 IMAR ← PC IR ← Mem[IMAR] PC ← PC + 4
ID A ← Rs1 B ← Rs2 A ← Rs1 B ← Rs2 A ← Rs1 B ← Rs2 BTA ← PC + offset if (Rs1 op 0) PC ← BTA
EX ALU output ← A op B or ALU output ← A op immediate DMAR ← A + immediate
SDR ← B
MEM LDR ← Mem[DMAR] or Mem[DMAR] ← SDR
WB Rd <- ALU output Rd ← LDR

Riesgos estructurales o "Structural Hazards"

Los riesgos estructurales surgen de conflictos de recursos cuando el hardware no puede soportar todas las combinaciones posibles de instrucciones en superposición simultánea.

Riesgos de datos o "Data Hazards"

Los riesgos de datos surgen cuando una instrucción depende de los resultados de una instrucción anterior de una manera que queda expuesta por la superposición de instrucciones en el cauce. Datos los riesgos pueden clasificarse en uno de tres tipos, según el orden de los accesos de lectura y escritura en las instrucciones. Considere dos instrucciones / i / j /

  • RAW (read after write): j intenta leer una fuente antes i la escribe, asi j incorrectamente compensa el valor anterior
  • WAR (write after read): j intenta escribir un destino antes de que i lo lea, por lo que i obtiene incorrectamente el nuevo valor. Esto no puede suceder en WinDLX porque todas las lecturas son tempranos en ID y todas las escrituras son tardías (en WB). Este peligro ocurre cuando hay algunas instrucciones que escriben resultados antes en la línea de instrucciones, y otras instrucciones que leen una fuente alteran una escritura o una instrucción más adelante en la canalización (por ejemplo, direccionamiento de incremento automático).
  • WAW (write after write): j intenta escribir un operando antes de que sea escrito por i. Las escrituras terminan siendo realizadas en el orden incorrecto, dejando el valor escrito por i en lugar del valor escrito por j en el destino. Este peligro está presente solo en tuberías que escriben en más de una etapa de tubería. La canalización DLX escribe un registrarse únicamente en WB y evita esta clase de peligros para instrucciones enteras. Este peligro puede ocurrir con instrucciones de etapa de punto flotante.

Control de riesgos o "Control hazards"

Los peligros de control surgen de la gestión de ramas y otras instrucciones que cambian el PC (Program Counter). Si la instrucción i es una rama tomada, entonces el PC normalmente no cambia hasta el final de la etapa ID.

Adelantamientos o "Forwarding"

Los adelantamientos (también llamado derivación o cortocircuito) es una técnica de hardware simple para reducir las penalizaciones causadas por los riesgos de datos.

Esta técnica funciona de la siguiente manera:

El resultado de ALU siempre se devuelve a los pestillos de entrada de ALU. Si el hardware de reenvío detecta que la operación ALU anterior ha escrito el registro correspondiente a una fuente para la operación ALU actual, la lógica de control selecciona el resultado reenviado como la entrada ALU en lugar del valor leído del archivo de registro.

Trampas o "Traps"

En DLX, las trampas se retrasan usando paradas hasta que no haya instrucciones previas en proceso.

Eso se realiza para evitar conflictos con otras instrucciones.