Comments on the Bliss Simulator (Spring 2003)



I would recomend the following changes to Bliss to make it
much easier to use as class tool. Mostly my complaint is that
it should be much less likely to consume homework time on
software rather than on Computer Architecture. However, I have
to say it's been quite fun to work with even if frustrating.

1) Basic Software Engineering

a) All of the modules for the components should be the same,
somewhat cleaner and documented. All modules should have
ResetStatistics, PrintStatistics, BindParameters and none should
have the Initialize method. This lets you simply and regularly
implement changes to the pipeline stages.

b) The flow of control for the simulator should be documented.

c) The modules should not take pointers to each other in the
BindStructures calls. This makes understanding the modularity
very poor.

d) The parameter file mechanism should be documented. It took
quite some time to be able to work with this.

e) The standard.h kludge should go away. Each file should have its
real dependencies and the makefile should understanding (use
Gnu's makefile generation or do it by hand). Simple changes
often generate crashes and

f) The use of the Instructions module should be documented.

As little as a couple of P weeks might make a huge difference. As I'm
happily unemployed, and the political climate with the authors was
good, I might be talked into cleaning it up some over the summer.

------------------------------

Someone mentioned that the parameter file mechanism should be documented. I think that, even more importantly, the parameter file contents should be documented. This should include things like what each parameter means as well as the units of the parameter. For example, document that the BankSize parameter refers to the number of blocks, not the number of kilobytes...

Another one to add under the Basic Software Engineering heading - make as many of the class members private as possible. As it is, they are all essentially globals and certain members get modified in very unexpected places (the ProgramCounter member of Instruction is an example).

Home