__
Testing Methodology__

The software is extensively tested for different possible combinations to execute static scheduling with forwarding and without forwarding, and dynamic scheduling – tomasulo and scoreboarding by changing various configuration parameters. The testing methodology was divided into various phases to test each configuration parameter set and all other parameters were set fixed during testing of particular configuration parameter set. Finally, various combinations between different configuration parameter set were also tested.

Following is the one of the MIPS instruction set which was used for testing different parameters:

- LD F0, R0, 1
- LD F1, R1, 2
- ADD F2, F0, F1
- ADD F3, F1, F2
- SUB F4, F0, F1
- MULTIPLY F4, F4, F3
- DIVIDE F3, F2, F4
- SD F2, R0, 1
- SD F4, R1, 2

Default configuration

Number of cycle to execute:

Function |
Number of cycles |

LD/SD | 1 |

ADD/SUB | 2 |

MULTIPLY | 3 |

DIVIDE | 5 |

Number of functional units:

Functional Units |
Number of units |

LD/SD | 1 |

ADD/SUB | 1 |

MULTIPLY | 1 |

DIVIDE | 1 |

Number of reservation stations (only for Tomasulo):

Functional Units |
Number of reservation stations |

LD/SD | 2 |

ADD/SUB | 2 |

MULTIPLY | 2 |

DIVIDE | 2 |

Pipeline functional units:

Functional Units |
Pipeline |

LD/SD | Yes |

ADD/SUB | Yes |

MULTIPLY | Yes |

DIVIDE | Yes |

Scheduling algorithms:

Scheduling algorithms |
Selected |

Static Scheduling - With forwarding | True |

Static Scheduling - Without forwarding | False |

Dynamic Scheduling - Tomasulo | False |

Dynamic Scheduling - Scoreboarding | False |

Phase 1: Testing configuration parameter “number of cycles to execute different functional units”

Function for which number of cycle is changed | Instructions affected | Hazards |

LD/SD | Instr 1 and Instr 2 | Structural hazards |

ADD/SUB | Instr 3 and Instr 4 | Data (RAW) and Structural hazards |

MULTIPLY | Instr 6 and Instr 7 | Data hazard (WAR) |

DIVIDE | Instr 7 and Instr 8 | Data hazard (WAW) |

Phase 2: Testing configuration parameter “number of functional units”

Number of functional units changed | Instructions affected | Hazards |

LD/SD | Instr 1 and Instr 2 | Structural hazards |

ADD/SUB | Instr 3, Instr 4 and Instr 5 | Structural hazards |

Phase 3: Testing configuration parameter “number of reservation stations for tomasulo”

Number of functional units changed | Instructions affected | Hazards |

LD/SD | Instr 1 and Instr 2 | Structural hazards |

ADD/SUB | Instr 3, Instr 4 and Instr 5 | Structural hazards |

Phase 4: Testing configuration parameter “pipeline functional units”

Function for which number of cycle is changed | Instructions affected | Hazards |

LD/SD | Instr 8 and Instr 9 | Structural hazards |

ADD/SUB | Instr 4 and Instr 5 | Structural hazards |

MULTIPLY | Instr 5 and Instr 6 | Data hazard (WAW, RAW) |

DIVIDE | Instr 6 and Instr 7 | Data hazard (WAR) |

Phase 5: Various combination of configuration parameter.

Testing configuration parameters from Phase 1 to Phase 4 was combined together to have more than 1 changes in different configuration set.

All these phases bring data and structural hazards among the input MIPS instruction set which add stall cycles during the execution phase. The stall cycles were tested to verify its occurrence.

BUGS

If you find any bugs, please report it to Niranjan <nniranja@ecs.umass.edu>