changeset 35e77c938919 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=35e77c938919
description:
        Yet another merge with the main repository.

diffstat:

 configs/example/ruby_fs.py                                                     
 |    17 +-
 src/cpu/o3/O3CPU.py                                                            
 |     2 +
 src/cpu/o3/lsq_unit.hh                                                         
 |     6 +
 src/cpu/o3/lsq_unit_impl.hh                                                    
 |    12 +-
 tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/config.ini              
 |     7 +-
 tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/simout                  
 |    12 +-
 tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/stats.txt               
 |  1251 ++++-----
 
tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/system.pc.com_1.terminal 
|     2 +-
 tests/long/se/00.gzip/ref/x86/linux/o3-timing/config.ini                       
 |     3 +-
 tests/long/se/00.gzip/ref/x86/linux/o3-timing/simout                           
 |  1036 +--------
 tests/long/se/00.gzip/ref/x86/linux/o3-timing/stats.txt                        
 |   696 ++--
 tests/long/se/10.mcf/ref/x86/linux/o3-timing/config.ini                        
 |     5 +-
 tests/long/se/10.mcf/ref/x86/linux/o3-timing/simout                            
 |    10 +-
 tests/long/se/10.mcf/ref/x86/linux/o3-timing/stats.txt                         
 |   696 ++--
 tests/long/se/20.parser/ref/x86/linux/o3-timing/config.ini                     
 |     5 +-
 tests/long/se/20.parser/ref/x86/linux/o3-timing/simout                         
 |    20 +-
 tests/long/se/20.parser/ref/x86/linux/o3-timing/stats.txt                      
 |   788 +++---
 tests/long/se/70.twolf/ref/x86/linux/o3-timing/config.ini                      
 |     3 +-
 tests/long/se/70.twolf/ref/x86/linux/o3-timing/simout                          
 |    10 +-
 tests/long/se/70.twolf/ref/x86/linux/o3-timing/stats.txt                       
 |   740 ++--
 tests/quick/se/00.hello/ref/x86/linux/o3-timing/config.ini                     
 |     3 +-
 tests/quick/se/00.hello/ref/x86/linux/o3-timing/simout                         
 |    11 +-
 tests/quick/se/00.hello/ref/x86/linux/o3-timing/stats.txt                      
 |   621 ++--
 23 files changed, 2475 insertions(+), 3481 deletions(-)

diffs (truncated from 7098 to 300 lines):

diff -r 669e93d79ed9 -r 35e77c938919 configs/example/ruby_fs.py
--- a/configs/example/ruby_fs.py        Sun Jan 29 02:04:34 2012 -0800
+++ b/configs/example/ruby_fs.py        Sun Jan 29 03:27:15 2012 -0800
@@ -79,6 +79,7 @@
 execfile(os.path.join(config_root, "common", "Options.py"))
 
 (options, args) = parser.parse_args()
+options.ruby = True
 
 if args:
     print "Error: script doesn't take any positional arguments"
@@ -94,17 +95,11 @@
 else:
     bm = [SysConfig()]
 
-#
-# currently ruby fs only works in simple timing mode because ruby does not
-# support atomic accesses by devices.  Also ruby_fs currently assumes
-# that is running a checkpoints that were created by ALPHA_FS under atomic
-# mode.  Since switch cpus are not defined in these checkpoints, we don't
-# fast forward with the atomic cpu and instead set the FutureClass to None.
-# Therefore the cpus resolve to the correct names and unserialize correctly.
-#
-class CPUClass(TimingSimpleCPU): pass
-test_mem_mode = 'timing'
-FutureClass = None
+# Check for timing mode because ruby does not support atomic accesses
+if not (options.cpu_type == "detailed" or options.cpu_type == "timing"):
+    print >> sys.stderr, "Ruby requires TimingSimpleCPU or O3CPU!!"
+    sys.exit(1)
+(CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
 
 CPUClass.clock = options.clock
 
diff -r 669e93d79ed9 -r 35e77c938919 src/cpu/o3/O3CPU.py
--- a/src/cpu/o3/O3CPU.py       Sun Jan 29 02:04:34 2012 -0800
+++ b/src/cpu/o3/O3CPU.py       Sun Jan 29 03:27:15 2012 -0800
@@ -139,3 +139,5 @@
     smtROBThreshold = Param.Int(100, "SMT ROB Threshold Sharing Parameter")
     smtCommitPolicy = Param.String('RoundRobin', "SMT Commit Policy")
 
+    needsTSO = Param.Bool(buildEnv['TARGET_ISA'] == 'x86',
+                          "Enable TSO Memory model")
diff -r 669e93d79ed9 -r 35e77c938919 src/cpu/o3/lsq_unit.hh
--- a/src/cpu/o3/lsq_unit.hh    Sun Jan 29 02:04:34 2012 -0800
+++ b/src/cpu/o3/lsq_unit.hh    Sun Jan 29 03:27:15 2012 -0800
@@ -452,6 +452,9 @@
     /** Has the blocked load been handled. */
     bool loadBlockedHandled;
 
+    /** Whether or not a store is in flight. */
+    bool storeInFlight;
+
     /** The sequence number of the blocked load. */
     InstSeqNum blockedLoadSeqNum;
 
@@ -465,6 +468,9 @@
     /** The packet that is pending free cache ports. */
     PacketPtr pendingPkt;
 
+    /** Flag for memory model. */
+    bool needsTSO;
+
     // Will also need how many read/write ports the Dcache has.  Or keep track
     // of that in stage that is one level up, and only call executeLoad/Store
     // the appropriate number of times.
diff -r 669e93d79ed9 -r 35e77c938919 src/cpu/o3/lsq_unit_impl.hh
--- a/src/cpu/o3/lsq_unit_impl.hh       Sun Jan 29 02:04:34 2012 -0800
+++ b/src/cpu/o3/lsq_unit_impl.hh       Sun Jan 29 03:27:15 2012 -0800
@@ -138,7 +138,7 @@
 LSQUnit<Impl>::LSQUnit()
     : loads(0), stores(0), storesToWB(0), cacheBlockMask(0), stalled(false),
       isStoreBlocked(false), isLoadBlocked(false),
-      loadBlockedHandled(false), hasPendingPkt(false)
+      loadBlockedHandled(false), storeInFlight(false), hasPendingPkt(false)
 {
 }
 
@@ -182,6 +182,7 @@
     memDepViolator = NULL;
 
     blockedLoadSeqNum = 0;
+    needsTSO = params->needsTSO;
 }
 
 template<class Impl>
@@ -770,6 +771,7 @@
            storeWBIdx != storeTail &&
            storeQueue[storeWBIdx].inst &&
            storeQueue[storeWBIdx].canWB &&
+           ((!needsTSO) || (!storeInFlight)) &&
            usedPorts < cachePorts) {
 
         if (isStoreBlocked || lsq->cacheBlocked()) {
@@ -1090,6 +1092,10 @@
 #endif
     }
 
+    if (needsTSO) {
+        storeInFlight = true;
+    }
+
     incrStIdx(storeWBIdx);
 }
 
@@ -1163,6 +1169,10 @@
 
     storeQueue[store_idx].inst->setCompleted();
 
+    if (needsTSO) {
+        storeInFlight = false;
+    }
+
     // Tell the checker we've completed this instruction.  Some stores
     // may get reported twice to the checker, but the checker can
     // handle that case.
diff -r 669e93d79ed9 -r 35e77c938919 
tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/config.ini
--- a/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/config.ini Sun Jan 
29 02:04:34 2012 -0800
+++ b/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/config.ini Sun Jan 
29 03:27:15 2012 -0800
@@ -15,7 +15,7 @@
 init_param=0
 intel_mp_pointer=system.intel_mp_pointer
 intel_mp_table=system.intel_mp_table
-kernel=/dist/m5/system/binaries/x86_64-vmlinux-2.6.22.9
+kernel=/scratch/nilay/GEM5/system/binaries/x86_64-vmlinux-2.6.22.9
 load_addr_mask=18446744073709551615
 mem_mode=timing
 memories=system.physmem
@@ -122,6 +122,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+needsTSO=true
 numIQEntries=64
 numPhysFloatRegs=256
 numPhysIntRegs=256
@@ -1311,7 +1312,7 @@
 
 [system.pc.south_bridge.ide.disks0.image.child]
 type=RawDiskImage
-image_file=/dist/m5/system/disks/linux-x86.img
+image_file=/scratch/nilay/GEM5/system/disks/linux-x86.img
 read_only=true
 
 [system.pc.south_bridge.ide.disks1]
@@ -1331,7 +1332,7 @@
 
 [system.pc.south_bridge.ide.disks1.image.child]
 type=RawDiskImage
-image_file=/dist/m5/system/disks/linux-bigswap2.img
+image_file=/scratch/nilay/GEM5/system/disks/linux-bigswap2.img
 read_only=true
 
 [system.pc.south_bridge.int_lines0]
diff -r 669e93d79ed9 -r 35e77c938919 
tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/simout
--- a/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/simout     Sun Jan 
29 02:04:34 2012 -0800
+++ b/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/simout     Sun Jan 
29 03:27:15 2012 -0800
@@ -1,13 +1,15 @@
+Redirecting stdout to 
build/X86_FS/tests/opt/long/10.linux-boot/x86/linux/pc-o3-timing/simout
+Redirecting stderr to 
build/X86_FS/tests/opt/long/10.linux-boot/x86/linux/pc-o3-timing/simerr
 gem5 Simulator System.  http://gem5.org
 gem5 is copyrighted software; use the --copyright option for details.
 
-gem5 compiled Jan 23 2012 04:12:17
-gem5 started Jan 23 2012 08:29:15
-gem5 executing on zizzer
+gem5 compiled Jan 28 2012 16:24:13
+gem5 started Jan 28 2012 16:29:18
+gem5 executing on ribera.cs.wisc.edu
 command line: build/X86_FS/gem5.opt -d 
build/X86_FS/tests/opt/long/10.linux-boot/x86/linux/pc-o3-timing -re 
tests/run.py build/X86_FS/tests/opt/long/10.linux-boot/x86/linux/pc-o3-timing
 warning: add_child('terminal'): child 'terminal' already has parent
 Global frequency set at 1000000000000 ticks per second
       0: rtc: Real-time clock set to Sun Jan  1 00:00:00 2012
-info: kernel located at: /dist/m5/system/binaries/x86_64-vmlinux-2.6.22.9
+info: kernel located at: 
/scratch/nilay/GEM5/system/binaries/x86_64-vmlinux-2.6.22.9
 info: Entering event queue @ 0.  Starting simulation...
-Exiting @ tick 5161177988500 because m5_exit instruction encountered
+Exiting @ tick 5164643202500 because m5_exit instruction encountered
diff -r 669e93d79ed9 -r 35e77c938919 
tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/stats.txt
--- a/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/stats.txt  Sun Jan 
29 02:04:34 2012 -0800
+++ b/tests/long/fs/10.linux-boot/ref/x86/linux/pc-o3-timing/stats.txt  Sun Jan 
29 03:27:15 2012 -0800
@@ -1,108 +1,108 @@
 
 ---------- Begin Simulation Statistics ----------
-sim_seconds                                  5.161178                       # 
Number of seconds simulated
-sim_ticks                                5161177988500                       # 
Number of ticks simulated
-final_tick                               5161177988500                       # 
Number of ticks from beginning of simulation (restored from checkpoints and 
never reset)
+sim_seconds                                  5.164643                       # 
Number of seconds simulated
+sim_ticks                                5164643202500                       # 
Number of ticks simulated
+final_tick                               5164643202500                       # 
Number of ticks from beginning of simulation (restored from checkpoints and 
never reset)
 sim_freq                                 1000000000000                       # 
Frequency of simulated ticks
-host_inst_rate                                 290092                       # 
Simulator instruction rate (inst/s)
-host_tick_rate                             1780684720                       # 
Simulator tick rate (ticks/s)
-host_mem_usage                                 364016                       # 
Number of bytes of host memory used
-host_seconds                                  2898.42                       # 
Real time elapsed on the host
-sim_insts                                   840808469                       # 
Number of instructions simulated
-system.physmem.bytes_read                    16106624                       # 
Number of bytes read from this memory
-system.physmem.bytes_inst_read                1233856                       # 
Number of instructions bytes read from this memory
-system.physmem.bytes_written                 12115136                       # 
Number of bytes written to this memory
-system.physmem.num_reads                       251666                       # 
Number of read requests responded to by this memory
-system.physmem.num_writes                      189299                       # 
Number of write requests responded to by this memory
+host_inst_rate                                 258156                       # 
Simulator instruction rate (inst/s)
+host_tick_rate                             1586008699                       # 
Simulator tick rate (ticks/s)
+host_mem_usage                                 390600                       # 
Number of bytes of host memory used
+host_seconds                                  3256.38                       # 
Real time elapsed on the host
+sim_insts                                   840653382                       # 
Number of instructions simulated
+system.physmem.bytes_read                    15885120                       # 
Number of bytes read from this memory
+system.physmem.bytes_inst_read                1235904                       # 
Number of instructions bytes read from this memory
+system.physmem.bytes_written                 12075328                       # 
Number of bytes written to this memory
+system.physmem.num_reads                       248205                       # 
Number of read requests responded to by this memory
+system.physmem.num_writes                      188677                       # 
Number of write requests responded to by this memory
 system.physmem.num_other                            0                       # 
Number of other requests responded to by this memory
-system.physmem.bw_read                        3120726                       # 
Total read bandwidth from this memory (bytes/s)
-system.physmem.bw_inst_read                    239065                       # 
Instruction read bandwidth from this memory (bytes/s)
-system.physmem.bw_write                       2347359                       # 
Write bandwidth from this memory (bytes/s)
-system.physmem.bw_total                       5468085                       # 
Total bandwidth to/from this memory (bytes/s)
-system.l2c.replacements                        169467                       # 
number of replacements
-system.l2c.tagsinuse                     38339.786444                       # 
Cycle average of tags in use
-system.l2c.total_refs                         3812924                       # 
Total number of references to valid blocks.
-system.l2c.sampled_refs                        204660                       # 
Sample count of references to valid blocks.
-system.l2c.avg_refs                         18.630529                       # 
Average number of references to valid blocks.
+system.physmem.bw_read                        3075744                       # 
Total read bandwidth from this memory (bytes/s)
+system.physmem.bw_inst_read                    239301                       # 
Instruction read bandwidth from this memory (bytes/s)
+system.physmem.bw_write                       2338076                       # 
Write bandwidth from this memory (bytes/s)
+system.physmem.bw_total                       5413820                       # 
Total bandwidth to/from this memory (bytes/s)
+system.l2c.replacements                        166524                       # 
number of replacements
+system.l2c.tagsinuse                     37860.019471                       # 
Cycle average of tags in use
+system.l2c.total_refs                         3791499                       # 
Total number of references to valid blocks.
+system.l2c.sampled_refs                        201257                       # 
Sample count of references to valid blocks.
+system.l2c.avg_refs                         18.839091                       # 
Average number of references to valid blocks.
 system.l2c.warmup_cycle                             0                       # 
Cycle when the warmup percentage was hit.
-system.l2c.occ_blocks::0                 11950.408174                       # 
Average occupied blocks per context
-system.l2c.occ_blocks::1                 26389.378270                       # 
Average occupied blocks per context
-system.l2c.occ_percent::0                    0.182349                       # 
Average percentage of cache occupancy
-system.l2c.occ_percent::1                    0.402670                       # 
Average percentage of cache occupancy
-system.l2c.ReadReq_hits::0                    2335607                       # 
number of ReadReq hits
-system.l2c.ReadReq_hits::1                     145488                       # 
number of ReadReq hits
-system.l2c.ReadReq_hits::total                2481095                       # 
number of ReadReq hits
-system.l2c.Writeback_hits::0                  1594493                       # 
number of Writeback hits
-system.l2c.Writeback_hits::total              1594493                       # 
number of Writeback hits
-system.l2c.UpgradeReq_hits::0                     327                       # 
number of UpgradeReq hits
-system.l2c.UpgradeReq_hits::total                 327                       # 
number of UpgradeReq hits
-system.l2c.ReadExReq_hits::0                   150672                       # 
number of ReadExReq hits
-system.l2c.ReadExReq_hits::total               150672                       # 
number of ReadExReq hits
-system.l2c.demand_hits::0                     2486279                       # 
number of demand (read+write) hits
-system.l2c.demand_hits::1                      145488                       # 
number of demand (read+write) hits
-system.l2c.demand_hits::total                 2631767                       # 
number of demand (read+write) hits
-system.l2c.overall_hits::0                    2486279                       # 
number of overall hits
-system.l2c.overall_hits::1                     145488                       # 
number of overall hits
-system.l2c.overall_hits::total                2631767                       # 
number of overall hits
-system.l2c.ReadReq_misses::0                    66850                       # 
number of ReadReq misses
-system.l2c.ReadReq_misses::1                      109                       # 
number of ReadReq misses
-system.l2c.ReadReq_misses::total                66959                       # 
number of ReadReq misses
-system.l2c.UpgradeReq_misses::0                  3932                       # 
number of UpgradeReq misses
-system.l2c.UpgradeReq_misses::total              3932                       # 
number of UpgradeReq misses
-system.l2c.ReadExReq_misses::0                 142221                       # 
number of ReadExReq misses
-system.l2c.ReadExReq_misses::total             142221                       # 
number of ReadExReq misses
-system.l2c.demand_misses::0                    209071                       # 
number of demand (read+write) misses
-system.l2c.demand_misses::1                       109                       # 
number of demand (read+write) misses
-system.l2c.demand_misses::total                209180                       # 
number of demand (read+write) misses
-system.l2c.overall_misses::0                   209071                       # 
number of overall misses
-system.l2c.overall_misses::1                      109                       # 
number of overall misses
-system.l2c.overall_misses::total               209180                       # 
number of overall misses
-system.l2c.ReadReq_miss_latency            3511861000                       # 
number of ReadReq miss cycles
-system.l2c.UpgradeReq_miss_latency           38996000                       # 
number of UpgradeReq miss cycles
-system.l2c.ReadExReq_miss_latency          7442399000                       # 
number of ReadExReq miss cycles
-system.l2c.demand_miss_latency            10954260000                       # 
number of demand (read+write) miss cycles
-system.l2c.overall_miss_latency           10954260000                       # 
number of overall miss cycles
-system.l2c.ReadReq_accesses::0                2402457                       # 
number of ReadReq accesses(hits+misses)
-system.l2c.ReadReq_accesses::1                 145597                       # 
number of ReadReq accesses(hits+misses)
-system.l2c.ReadReq_accesses::total            2548054                       # 
number of ReadReq accesses(hits+misses)
-system.l2c.Writeback_accesses::0              1594493                       # 
number of Writeback accesses(hits+misses)
-system.l2c.Writeback_accesses::total          1594493                       # 
number of Writeback accesses(hits+misses)
-system.l2c.UpgradeReq_accesses::0                4259                       # 
number of UpgradeReq accesses(hits+misses)
-system.l2c.UpgradeReq_accesses::total            4259                       # 
number of UpgradeReq accesses(hits+misses)
-system.l2c.ReadExReq_accesses::0               292893                       # 
number of ReadExReq accesses(hits+misses)
-system.l2c.ReadExReq_accesses::total           292893                       # 
number of ReadExReq accesses(hits+misses)
-system.l2c.demand_accesses::0                 2695350                       # 
number of demand (read+write) accesses
-system.l2c.demand_accesses::1                  145597                       # 
number of demand (read+write) accesses
-system.l2c.demand_accesses::total             2840947                       # 
number of demand (read+write) accesses
-system.l2c.overall_accesses::0                2695350                       # 
number of overall (read+write) accesses
-system.l2c.overall_accesses::1                 145597                       # 
number of overall (read+write) accesses
-system.l2c.overall_accesses::total            2840947                       # 
number of overall (read+write) accesses
-system.l2c.ReadReq_miss_rate::0              0.027826                       # 
miss rate for ReadReq accesses
-system.l2c.ReadReq_miss_rate::1              0.000749                       # 
miss rate for ReadReq accesses
-system.l2c.ReadReq_miss_rate::total          0.028574                       # 
miss rate for ReadReq accesses
-system.l2c.UpgradeReq_miss_rate::0           0.923221                       # 
miss rate for UpgradeReq accesses
-system.l2c.ReadExReq_miss_rate::0            0.485573                       # 
miss rate for ReadExReq accesses
-system.l2c.demand_miss_rate::0               0.077567                       # 
miss rate for demand accesses
-system.l2c.demand_miss_rate::1               0.000749                       # 
miss rate for demand accesses
-system.l2c.demand_miss_rate::total           0.078316                       # 
miss rate for demand accesses
-system.l2c.overall_miss_rate::0              0.077567                       # 
miss rate for overall accesses
-system.l2c.overall_miss_rate::1              0.000749                       # 
miss rate for overall accesses
-system.l2c.overall_miss_rate::total          0.078316                       # 
miss rate for overall accesses
-system.l2c.ReadReq_avg_miss_latency::0   52533.448018                       # 
average ReadReq miss latency
-system.l2c.ReadReq_avg_miss_latency::1   32218908.256881                       
# average ReadReq miss latency
-system.l2c.ReadReq_avg_miss_latency::total 32271441.704899                     
  # average ReadReq miss latency
-system.l2c.UpgradeReq_avg_miss_latency::0  9917.599186                       # 
average UpgradeReq miss latency
+system.l2c.occ_blocks::0                 11072.402172                       # 
Average occupied blocks per context
+system.l2c.occ_blocks::1                 26787.617299                       # 
Average occupied blocks per context
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to