Hey Gabe, The change definitely could change the stats. If a block was ever dirty and then instructions from that block we're ever executed (either because data and inst were close or a misprediction) the dirty data could be lost. In this case the cache would send the block to fetch in the ownership and dirty state. Fetch wouldn't expect it and the dirty info would get dropped on the floor.
Now I don't know how I managed to update everything else but not this. Ali Sent from my ARM powered device On Apr 6, 2011, at 4:47 AM, Gabe Black <gbl...@eecs.umich.edu> wrote: > It looks like it was this change which was directly after the one I > pointed out before. > > changeset: 8134:b01a51ff05fa > user: Ali Saidi <ali.sa...@arm.com> > date: Thu Mar 17 19:20:19 2011 -0500 > summary: Mem: Fix issue with dirty block being lost when entire > block transferred to non-cache. > > Could you take a look, Ali? The description doesn't necessarily sound > like something you'd expect to change the stats (it sounds like a corner > case), but I'm assuming you'll know. > > Gabe > > On 04/03/11 19:51, Gabe Black wrote: >> Does anyone have any ideas about when X86_SE parser stopped working? The >> last time it passed for sure was the end of February, but on March 16th >> Ali updated the stats and so it was presumably working then too. I'm >> running at that changeset right now to confirm that. There weren't any >> X86 specific changes recently, but there were a few O3 ones which might >> have changed the stats. The output is below, and you can see the biggest >> change percentage wise was icache writebacks. Most of the changes are >> related to memory somehow. After the stats is info about a change that >> may have caused the problem. >> >> ===== Statistics differences ===== >> Maximum error magnitude: +133.333333% >> >> Reference New Value Abs Diff Pct Chg >> Key statistics: >> >> host_inst_rate 189714 148502 -41212 -21.72% >> host_mem_usage 264736 268256 3520 +1.33% >> sim_insts 1527476062 1528988756 1512694 +0.10% >> sim_ticks 610952992000 612245337000 1292345000 >> +0.21% >> system.cpu.commit.COM:count 1527476062 1528988756 1512694 +0.10% >> >> Differences > 0%: >> >> system.cpu.icache.writebacks 3 7 4 +133.33% >> system.cpu.rename.RENAME:serializeStallCycles 19936 >> 16025 -3911 -19.62% >> system.cpu.l2cache.occ_%::0 0.213694 0.236362 0.022668 +10.61% >> system.cpu.l2cache.occ_blocks::0 7002.339473 7745.103692 742.764219 >> +10.61% >> system.cpu.rename.RENAME:tempSerializingInsts 2561 >> 2314 -247 -9.64% >> system.cpu.icache.ReadReq_mshr_hits 1570 1427 >> -143 -9.11% >> system.cpu.icache.demand_mshr_hits 1570 1427 -143 >> -9.11% >> system.cpu.icache.overall_mshr_hits 1570 1427 >> -143 -9.11% >> system.cpu.rename.RENAME:serializingInsts 2550 2345 >> -205 -8.04% >> system.cpu.l2cache.ReadReq_misses 316709 339091 22382 >> +7.07% >> system.cpu.l2cache.ReadReq_mshr_misses 316709 339091 >> 22382 +7.07% >> system.cpu.l2cache.ReadReq_mshr_miss_latency 9818903000 10512799000 >> 693896000 +7.07% >> system.cpu.l2cache.ReadReq_miss_latency 10822415500 11584355000 >> 761939500 +7.04% >> system.cpu.dcache.ReadReq_mshr_miss_latency 14062264500 14863694500 >> 801430000 +5.70% >> system.cpu.l2cache.ReadReq_miss_rate 0.182786 0.192941 >> 0.010155 +5.56% >> system.cpu.l2cache.ReadReq_mshr_miss_rate 0.182786 0.192941 >> 0.010155 +5.56% >> system.cpu.idleCycles 24586339 25677793 1091454 +4.44% >> system.cpu.dcache.ReadReq_avg_mshr_miss_latency 8150.695480 >> 8493.787248 343.091768 +4.21% >> system.cpu.l2cache.replacements 553099 575827 22728 +4.11% >> system.cpu.l2cache.demand_mshr_miss_latency 17475146000 18186565000 >> 711419000 +4.07% >> [... showing top 20 errors only, additional errors omitted ...] >> >> ***** build/X86_SE/tests/fast/long/20.parser/x86/linux/o3-timing FAILED! >> >> changeset 9f704aa10eb4 in /z/repo/m5 >> details: http://repo.m5sim.org/m5?cmd=changeset;node=9f704aa10eb4 >> description: >> O3: Fix unaligned stores when cache blocked >> >> Without this change the a store can be issued to the cache multiple times. >> If this case occurs when the l1 cache is out of mshrs (and thus blocked) >> the processor will never make forward progress because each cycle it will >> send a single request using the recently freed mshr and not completing the >> multipart store. This will continue forever. >> >> diffstat: >> >> src/cpu/o3/lsq_unit_impl.hh | 4 +++- >> 1 files changed, 3 insertions(+), 1 deletions(-) >> >> diffs (14 lines): >> >> diff -r 2af262e73961 -r 9f704aa10eb4 src/cpu/o3/lsq_unit_impl.hh >> --- a/src/cpu/o3/lsq_unit_impl.hh Thu Mar 17 00:43:54 2011 -0400 >> +++ b/src/cpu/o3/lsq_unit_impl.hh Thu Mar 17 19:20:19 2011 -0500 >> @@ -1103,7 +1103,9 @@ >> dynamic_cast<LSQSenderState *>(retryPkt->senderState); >> >> // Don't finish the store unless this is the last packet. >> - if (!TheISA::HasUnalignedMemAcc || !state->pktToSend) { >> + if (!TheISA::HasUnalignedMemAcc || !state->pktToSend || >> + state->pendingPacket == retryPkt) { >> + state->pktToSend = false; >> storePostSend(retryPkt); >> } >> retryPkt = NULL; >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev >> >> >> >> On 04/03/11 09:44, Cron Daemon wrote: >>> ***** build/X86_SE/tests/fast/long/20.parser/x86/linux/o3-timing FAILED! >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/50.vortex/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp >>> passed. >>> ***** >>> build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/00.gzip/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/30.eon/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/inorder-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/30.eon/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/50.vortex/alpha/tru64/o3-timing passed. >>> ***** build/ALPHA_SE/tests/fast/long/70.twolf/alpha/tru64/inorder-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/50.vortex/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/70.twolf/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/70.twolf/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/00.gzip/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/01.hello-2T-smt/alpha/linux/o3-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/60.bzip2/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/o3-timing passed. >>> ***** build/ALPHA_SE/tests/fast/long/40.perlbmk/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/o3-timing passed. >>> ***** build/ALPHA_SE/tests/fast/long/00.gzip/alpha/tru64/o3-timing passed. >>> ***** build/ALPHA_SE/tests/fast/long/60.bzip2/alpha/tru64/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/30.eon/alpha/tru64/o3-timing passed. >>> ***** build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/50.vortex/alpha/tru64/inorder-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-atomic >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/40.perlbmk/alpha/tru64/simple-timing >>> passed. >>> ***** >>> build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby >>> passed. >>> ***** build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest passed. >>> ***** build/ALPHA_SE/tests/fast/long/70.twolf/alpha/tru64/o3-timing passed. >>> ***** >>> build/ALPHA_SE_MOESI_hammer/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_hammer/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer >>> passed. >>> ***** >>> build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_directory >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_token >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_token >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token >>> passed. >>> ***** >>> build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_token >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual >>> passed. >>> ***** >>> build/ALPHA_FS/tests/fast/long/10.linux-boot/alpha/linux/tsunami-o3-dual >>> passed. >>> ***** build/ALPHA_FS/tests/fast/long/10.linux-boot/alpha/linux/tsunami-o3 >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/00.gzip/alpha/tru64/inorder-timing >>> passed. >>> ***** build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-atomic >>> passed. >>> ***** build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing >>> passed. >>> ***** build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing-ruby >>> passed. >>> ***** build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/o3-timing passed. >>> ***** build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/inorder-timing >>> passed. >>> ***** build/POWER_SE/tests/fast/quick/00.hello/power/linux/simple-atomic >>> passed. >>> ***** build/POWER_SE/tests/fast/quick/00.hello/power/linux/o3-timing passed. >>> ***** >>> build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing-ruby >>> passed. >>> ***** build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-atomic >>> passed. >>> ***** >>> build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp >>> passed. >>> ***** build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/70.twolf/sparc/linux/simple-timing >>> passed. >>> ***** build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-atomic >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/10.mcf/sparc/linux/simple-timing >>> passed. >>> ***** >>> build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/o3-timing-mp >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/50.vortex/sparc/linux/simple-timing >>> passed. >>> ***** build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-timing >>> passed. >>> ***** >>> build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-timing-mp >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/00.gzip/sparc/linux/simple-atomic >>> passed. >>> ***** build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/o3-timing >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/70.twolf/sparc/linux/simple-atomic >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/10.mcf/sparc/linux/simple-atomic >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/50.vortex/sparc/linux/simple-atomic >>> passed. >>> ***** build/SPARC_SE/tests/fast/long/00.gzip/sparc/linux/simple-timing >>> passed. >>> ***** >>> build/SPARC_FS/tests/fast/long/80.solaris-boot/sparc/solaris/t1000-simple-atomic >>> passed. >>> ***** build/X86_SE/tests/fast/quick/00.hello/x86/linux/o3-timing passed. >>> ***** build/X86_SE/tests/fast/long/70.twolf/x86/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/quick/00.hello/x86/linux/simple-timing passed. >>> ***** build/X86_SE/tests/fast/long/70.twolf/x86/linux/simple-timing passed. >>> ***** build/X86_SE/tests/fast/quick/00.hello/x86/linux/simple-timing-ruby >>> passed. >>> ***** build/X86_SE/tests/fast/long/10.mcf/x86/linux/simple-timing passed. >>> ***** build/X86_SE/tests/fast/long/20.parser/x86/linux/simple-timing passed. >>> ***** build/X86_SE/tests/fast/long/20.parser/x86/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/quick/00.hello/x86/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/long/10.mcf/x86/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/long/70.twolf/x86/linux/o3-timing passed. >>> ***** build/X86_SE/tests/fast/long/60.bzip2/x86/linux/simple-atomic passed. >>> ***** build/ALPHA_SE/tests/fast/long/40.perlbmk/alpha/tru64/o3-timing >>> passed. >>> ***** build/ALPHA_SE/tests/fast/long/60.bzip2/alpha/tru64/o3-timing passed. >>> ***** build/X86_SE/tests/fast/long/00.gzip/x86/linux/simple-timing passed. >>> ***** build/X86_SE/tests/fast/long/00.gzip/x86/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/long/10.mcf/x86/linux/o3-timing passed. >>> ***** build/X86_SE/tests/fast/long/60.bzip2/x86/linux/simple-timing passed. >>> ***** >>> build/X86_FS/tests/fast/quick/10.linux-boot/x86/linux/pc-simple-atomic >>> passed. >>> ***** >>> build/X86_FS/tests/fast/quick/10.linux-boot/x86/linux/pc-simple-timing >>> passed. >>> ***** build/ARM_SE/tests/fast/quick/00.hello/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/10.mcf/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/10.mcf/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/quick/00.hello/arm/linux/simple-atomic passed. >>> ***** build/SPARC_SE/tests/fast/long/00.gzip/sparc/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/50.vortex/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/30.eon/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/50.vortex/arm/linux/simple-timing passed. >>> ***** build/ALPHA_SE/tests/fast/long/60.bzip2/alpha/tru64/inorder-timing >>> passed. >>> ***** build/ARM_SE/tests/fast/long/40.perlbmk/arm/linux/simple-atomic >>> passed. >>> ***** build/ARM_SE/tests/fast/long/30.eon/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/00.gzip/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/60.bzip2/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/60.bzip2/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/20.parser/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/70.twolf/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/70.twolf/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/30.eon/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/00.gzip/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/50.vortex/arm/linux/simple-atomic passed. >>> ***** build/X86_SE/tests/fast/long/00.gzip/x86/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/10.mcf/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/00.gzip/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/quick/00.hello/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/20.parser/arm/linux/simple-atomic passed. >>> ***** build/ARM_SE/tests/fast/long/20.parser/arm/linux/simple-timing passed. >>> ***** build/ARM_SE/tests/fast/long/40.perlbmk/arm/linux/simple-timing >>> passed. >>> ***** >>> build/ARM_FS/tests/fast/quick/10.linux-boot/arm/linux/realview-simple-atomic >>> passed. >>> ***** >>> build/ARM_FS/tests/fast/quick/10.linux-boot/arm/linux/realview-simple-timing >>> passed. >>> ***** build/ARM_FS/tests/fast/long/10.linux-boot/arm/linux/realview-o3 >>> passed. >>> ***** build/ARM_SE/tests/fast/long/70.twolf/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/60.bzip2/arm/linux/o3-timing passed. >>> ***** build/ARM_SE/tests/fast/long/40.perlbmk/arm/linux/o3-timing passed. >>> >>> See /z/m5/regression/regress-2011-04-03-03:00:02 for details. >>> >>> _______________________________________________ >>> m5-dev mailing list >>> m5-dev@m5sim.org >>> http://m5sim.org/mailman/listinfo/m5-dev >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev > > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev