changeset 8f24dcb13b85 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=8f24dcb13b85
description:
cpu: Fix the traffic gen read percentage
This patch fixes the computation that determines whether to perform a
read or a write such that the two corner cases (0 and 100) are both
more efficient and handled correctly.
diffstat:
src/cpu/testers/traffic_gen/traffic_gen.cc | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diffs (33 lines):
diff -r 5490105626dc -r 8f24dcb13b85 src/cpu/testers/traffic_gen/traffic_gen.cc
--- a/src/cpu/testers/traffic_gen/traffic_gen.cc Mon Jan 07 13:05:35
2013 -0500
+++ b/src/cpu/testers/traffic_gen/traffic_gen.cc Mon Jan 07 13:05:35
2013 -0500
@@ -370,10 +370,11 @@
TrafficGen::StateGraph::LinearGen::execute()
{
// choose if we generate a read or a write here
- bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
+ bool isRead = readPercent != 0 &&
+ (readPercent == 100 || random_mt.random<uint8_t>(0, 100) <
readPercent);
- if (readPercent == 0)
- assert(!isRead);
+ assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
+ readPercent != 100);
DPRINTF(TrafficGen, "LinearGen::execute: %c to addr %x, size %d\n",
isRead ? 'r' : 'w', nextAddr, blocksize);
@@ -442,10 +443,11 @@
TrafficGen::StateGraph::RandomGen::execute()
{
// choose if we generate a read or a write here
- bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
+ bool isRead = readPercent != 0 &&
+ (readPercent == 100 || random_mt.random<uint8_t>(0, 100) <
readPercent);
- if (readPercent == 0)
- assert(!isRead);
+ assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
+ readPercent != 100);
// address of the request
Addr addr = random_mt.random<Addr>(startAddr, endAddr - 1);
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev