Re: [Gems-users] Checking new protocol


Date: Wed, 15 Feb 2006 09:18:56 -0600
From: Dan Gibson <degibson@xxxxxxxx>
Subject: Re: [Gems-users] Checking new protocol
Blas,

I'm not an expert on the tester myself, so I may be corrected:

Blas Cuesta wrote:
I have some questions about the random tester. - Is there any manual for the random tester? How does it work? Does it need any configuration file?
To my knowledge, there is no manual for the tester. The tester works by approximating a "worst-case-like" interleaving of memory requests to stress-test a protocol. The random tester does NOT do any formal model-checking, but does provide good test coverage. The tester DOES have a configuration file: $GEMS/ruby/config/tester.defaults (these values override those provided in rubyconfig.defaults).
- On what is the random tester based to check the correctnes of the protocols? I mean, I would like to know if it uses some generated code from the slicc files (for example, funtions like getState or setState) or, otherwise, it only checks that requests are eventually satisfied in a finite period of time. I want to know that, because the code that runs my modified simulator is not the same than the generated code from the slicc files. I have done some changes in the generated files because of slicc limitations.
To Ruby (and the protocol under test), the tester appears to be a group of processors that issue memory requests. These memory requests tend to be for similar addresses, again to exercise the coherence mechanisms. The tester uses its own sub-class of Driver, and runs stand-alone (without Simics). Whenever a protocol is successfully built, the tester is also built for that protocol. The executable resides in $GEMS/ruby/[host type]/generated/[protocol name]/bin/, and is named tester.exec. Therefore, I would expect that your manual changes to your protocol should be usable within the tester, provided you have not modified the interface that a Driver uses to interface with Ruby's sequencer.

Here is the help output of the tester:
Options:
-h --help
-p <arg> --processors <arg>
-l <arg> --length <arg>
-r <arg> --random <arg>
-z <arg> --trace_input <arg>
-c <arg> --component <arg>
-v <arg> --verbosity <arg>
-o <arg> --debug_output_file <arg>
-s <arg> --start <arg>
-b <arg> --bandwidth <arg>
-t <arg> --threshold <arg>
-k <arg> --think_time <arg>
-q <arg> --locks <arg>
-n <arg> --network <arg>
-a <arg> --procs_per_chip <arg>
-e <arg> --l2_caches <arg>
-m <arg> --memories <arg>
Option --processors (-p) is required.
Either option --length (-l) or --trace_input (-z) must be specified.

Debug components:
s: System
N: Node
q: Queue
e: Event Queue
n: Network
S: Sequencer
t: Tester
g: Generated
l: SLICC
Q: Network Queues
T: Time
i: Network Internals
b: Store Buffer
c: Cache
p: Predictor
a: Allocator

Thus invoking:
$GEMS/amd64-linux/generated/MOSI_SMP_bcast/bin/tester.exec -p 16 -a 1 -l 10000 Would test a 16-proccessor SMP configuration with the MOSI_SMP_bcast protocol (one processor per chip), for a duration of 10000. I am unsure what the unit of duration is--I suspect it may be memory requests from "processor 0", though I could be mistaken.

I hope this information is helpful.
Thanks.

Best regards,

Blas.


Regards,
Dan
The random tester is designed to stress-test the correctness of the
protocols.  It catches many errors, but does not have 100% coverage.

--Mike


Blas Cuesta wrote:
Hello!

I have done some modifications in the Token Coherence protocol
implementation
and I would like to check if these changes are correct. Is there any way to
check it? I run some simulations and, If any of them does not fail, I
suppose
the changes are correct. Could anyone tell me if there is another more
reliable method?

Thanks,

Blas.
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users


_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
[← Prev in Thread] Current Thread [Next in Thread→]