Skip to content

05.TheStatisticsWindow

nonodev96 edited this page Jul 2, 2022 · 4 revisions

Estadísticas

En la sección de estadísticas mostramos el listado de datos representativos de una simulación, estos datos indican los ciclos ejecutados, decodificaciones, instrucciones en el pipeline, saltos, operaciones en coma flotante, detenciones, adelantamientos, etc. Esto nos sirve para analizar el rendimiento de nuestro programa desarrollado en DLX.

Esta sección se encuentra con traducciones en inglés y en español.

Esta sección se encuentra en ingles y en español.

Desarrollo

Para el envío de datos con el servidor se establece el siguiente protocolo, no tenemos que enviar todo el objeto JSON en cada paso, solo la sección que se actualiza en cada paso (Partial<TypeDataStatistics>), esto nos permite solo actualizar las secciones que nos interese.

export type TypeDataStatistics = {
  TOTAL: {
    CYCLES_EXECUTED:            { cycles: number };
    ID_EXECUTED:                { instructions: number };
    INSTRUCTIONS_IN_PIPELINE:   { instructions_in_pipeline: number };
  };
  HARDWARE: {
    MEMORY_SIZE:                { size: number };
    FADD_EX_STAGES:             { num: number; cycles: number };
    FMULT_EX_STAGES:            { num: number; cycles: number };
    FDIV_EX_STAGES:             { num: number; cycles: number };
    FORWARDING:                 { enabled: boolean };
  };
  STALLS: {
    RAW_STALLS:                 { num: number; per: number };
    LD_STALLS:                  { num: number; per: number };
    BRANCH_STALLS:              { num: number; per: number };
    FLOATING_POINT_STALLS:      { num: number; per: number };
    WAW_STALLS:                 { num: number; per: number };
    STRUCTURAL_STALLS:          { num: number; per: number };
    CONTROL_STALLS:             { num: number; per: number };
    TRAP_STALLS:                { num: number; per: number };
    TOTAL:                      { num: number; per: number };
  };
  CONDITIONAL: {
    TOTAL:                      { num: number; per: number };
    TAKEN:                      { num: number; per: number };
    NOT_TAKEN:                  { num: number; per: number };
  };
  LOAD_STORE: {
    TOTAL:                      { num: number; per: number };
    LOADS:                      { num: number; per: number };
    STORES:                     { num: number; per: number };
  };
  FLOATING: {
    TOTAL:                      { num: number; per: number };
    ADDITIONS:                  { num: number; per: number };
    MULTIPLICATIONS:            { num: number; per: number };
    DIVISIONS:                  { num: number; per: number };
  };
  TRAPS: {
    TOTAL:                      { num: number; per: number };
  }
};
Clone this wiki locally