generated from maximegris/angular-electron
-
Notifications
You must be signed in to change notification settings - Fork 0
04.ThePipelineWindow
nonodev96 edited this page Jul 2, 2022
·
5 revisions
Como se ha explicado en el manual del DLX, esta ventana representa las cinco etapas que puede encontrarse una instrucción en el microprocesador.
Esto nos permite visualizar que dato se está calculando en cada momento, ver cuánto tiempo va a estar en cada etapa, etc.
Etapa | Descripción |
---|---|
IF | Unidad de captación de instrucción. |
Típicamente referida como la ``unidad de carga'' en terminología moderna. | |
ID | Unidad de descodificación de instrucción. |
Esta unidad toma la instrucción del IF, y extrae el opcode y los operandos. | |
También obtiene los valores en registros si es necesario. | |
EX | Unidad de ejecución. |
Ejecuta la instrucción, llamada como ALU en terminología moderna. | |
MEM | Unidad de acceso a memoria. |
Obtiene los datos o los escribe para las instrucciones de almacenamiento. | |
Controlada desde las etapas de ID y EX. | |
WB | WriteBack unit. |
Llamada como unidad de almacenamiento en terminología moderna. | |
Es la encargada de escribir los resultados en los registros de destino. |
Hay unas etapas intermedias en la etapa de ejecución (EX), representan el cálculo de datos decimales como divisiones, cálculos de multiplicaciones o sumas, estas etapas son las operaciones en coma flotante IEEE754.
Debemos tener en cuenta la configuración de la máquina, ya que en función de esta configuración podremos tener una unidad o varias.
Ejemplo parcial de los datos que responde el servidor para representar el cauce (Pipeline) en una de sus etapas.
export type TypeStall = "Aborted" | "Stall" | "R-Stall" | "T-Stall" | "W-Stall" | "S-Stall";
export type TypeCycleCell = {
address: string;
addressRow: number;
draw: boolean | TypeStall;
};
export type TypeCycleCellUnit = TypeCycleCell & {
unit?: number
};
export type TypeArrowCycle = {
fromAddressRow: number;
fromStep: number;
toAddressRow: number;
toStep: number;
color: number; // hexadecimal
};
export type TypePipeline = {
IF: TypeCycleCell;
ID: TypeCycleCell;
intEX: TypeCycleCell;
MEM: TypeCycleCell;
WB: TypeCycleCell;
faddEX: TypeCycleCellUnit[];
fmultEX: TypeCycleCellUnit[];
fdivEX: TypeCycleCellUnit[];
arrows: TypeArrowCycle[];
};