Review Board 2.0.15


ruby: [DRAFT] Finite dir <-> mem buffering and flow-control

Review Request #3331 - Created Feb. 11, 2016 and updated - Latest diff uploaded

Information
Joel Hestness
gem5
default
Reviewers
Default
Changeset 11332:1b834b01d375
---------------------------
ruby: [DRAFT] Finite dir <-> mem buffering and flow-control

Ruby directory controllers used unbounded Queued*Ports to communicate with
memory controllers. This causes buffer bloat in memory intensive applications,
resulting in unreasonably high memory access latencies. To fix this issue,
adjust the directory <-> memory interface to implement flow control, including
retries, and add the capability to set finite buffer sizes.

Changed MOESI_hammer directory to use the new memory interface as an example: http://reviews.gem5.org/r/3332/
Tested MOESI_hammer with finite buffering using patch here: http://pages.cs.wisc.edu/~hestness/links/MOESI_hammer_test_finite_queues
Ran this microbenchmark: http://pages.cs.wisc.edu/~hestness/links/cpu_memory_demand

As an example, this was a command line:

outdir=MOESI_hammer_dramctrl_ruby_finite_buffering; mkdir -p $outdir; ../build/X86_MOESI_hammer/gem5.opt --debug-flag=DRAM --outdir=$outdir ../configs/example/se.py --ruby --cpu-type=detailed --l1d_size=4kB --l2_size=4kB -c gem5_fusion_cpu_memory_demand -o "-a 4096 -i 10 -s 16" --output=$outdir/system.out --errout=$outdir/system.out >& $outdir/gem5.out