o3-smt: enforce numThreads parameter for SMT SE mode
authorKorey Sewell <ksewell@umich.edu>
Sat, 25 Jul 2009 04:50:27 +0000 (00:50 -0400)
committerKorey Sewell <ksewell@umich.edu>
Sat, 25 Jul 2009 04:50:27 +0000 (00:50 -0400)
configs/example/se.py
src/cpu/o3/cpu_builder.cc

index 1193da004f24a08aa7f5f245994b4e61f90baca8..4b3842cd1f819c4114fb7c9adda9f62d1579ba46 100644 (file)
@@ -124,6 +124,7 @@ if options.detailed:
 (CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
 
 CPUClass.clock = '2GHz'
+CPUClass.numThreads = len(workloads)
 
 np = options.num_cpus
 
index a433235a05d00d43d507d144a262dfe5ea990c1d..097dc71813ac7d0a1bf9eabf255208252cd32706 100644 (file)
@@ -51,14 +51,17 @@ DerivO3CPUParams::create()
     // Full-system only supports a single thread for the moment.
     ThreadID actual_num_threads = 1;
 #else
+    if (workload.size() > numThreads) {
+        fatal("Workload Size (%i) > Max Supported Threads (%i) on This CPU",
+              workload.size(), numThreads);
+    } else if (workload.size() == 0) {
+        fatal("Must specify at least one workload!");
+    }
+    
     // In non-full-system mode, we infer the number of threads from
     // the workload if it's not explicitly specified.
     ThreadID actual_num_threads =
         (numThreads >= workload.size()) ? numThreads : workload.size();
-
-    if (workload.size() == 0) {
-        fatal("Must specify at least one workload!");
-    }
 #endif
 
     numThreads = actual_num_threads;