Hi Negar,

A sim_tick has nothing to do with seconds or clock cycles. The best explanation for your graphs is that you are looking at noise.

If you want to measure speed, you can plot sim_seconds against frequency. You will need to run for much longer than 10 instructions for there to be a noticeable difference.

To calculate CPI, divide numCycles/committedInsts. If you only run for 10 instructions, your caches will be cold, and you won't see any meaningful data. Again, try running for 10M-100M instructions, do that for several frequencies, and see if the results make sense.

-Erik

On 21/02/13 23:36, Negar Miralaei wrote:
Hi Erik,

Thank you very much for your description. Now, I can understand all these numbers. But, I still cannot accept that when I run one application with different frequencies I get the same speed. I had the same results when I ran a set of 4 benchmarks on 4 cores in a system. I thought when I run something faster I would have given the smaller simulation time, even for the same application. Is it because I'm forcing the simulator to run the specific amount of instructions? The faster cpu should finish the execution of the same number of instruction earlier, shouldn't it? What is the best factor to see the application's behaviour under different frequencies? (CPI [In gem5: Cycle per Instruction, or Clock per instruction?]) Consider to your description, how can I explain the trend of simulation time I got from different frequencies, again for one application? (I attached the trend if you want to have a look) Sorry if I asked lots of questions, and thank you again for your help and attention.

Cheers
Negar


On 2/21/2013 6:33 PM, Erik Tomusk wrote:
Hi Negar,

clock and cycles are what you would expect to see in hardware: If your clock (period) is set to 1000 (picoseconds), then you're running at 1GHz, and will see 1 billion cycles every second. A tick is an artificial simulator construct that represents the smallest unit of time that the simulator can model. It doesn't correspond to anything in the real world (except maybe Planck's time...).

So in your examples, it took 270 and 432 CPU cycles respectively to execute the 10 instructions. This is because if you have a faster clock, some actions take more clock cycles. E.g. if you need to wait 100ns, that's 50 cycles for a 500MHz clock, but 80 cycles for an 800MHz clock.

In other words, if the workload you are running is limited by very slow memory operations, then you would expect the 800MHz version to require (8/5) as many cycles as the 500MHz version. In this case, 270*8/5=432, so the numbers are spot on.

All that sim_ticks is telling you is how many ticks gem5 used under the hood to complete the 10 instructions. Given that you ran exactly the same workload both times, it's reasonable for the two numbers to be similar. Like you say, there could be some extra ticks if the clock period isn't a whole number, but this isn't a problem because sim_ticks is just something gem5 uses internally to keep track of when things happen. You wouldn't use it in CPI calculations, etc.

Hope that helps

-Erik



On 21/02/13 16:47, Negar Miralaei wrote:

Dear Gem5 Authors,

I'm running some single-core benchmarks (cpu2000) on gem5 with the ARM platform. I've got some strange results while changing the frequency of the processor. I tried debugging the gem5 code and now I'm confusing with some parameter settings about the clock, tick and cycles. I will be so thankful if you could clarify the following results. First of all, this is the command I used (I reduced the number of instructions due to test):

build/ARM/gem5.opt --stats-file=new-test/stats-gap-big.txt --trace-file=new-test/trace-gap-big.out --debug-flag=All -d system/disks/CPU2000/output/ --remote-gdb-port=0 system/disks/CPU2000/configs/mp-se-changed.py --fastfwd-insts 10000 --max-insts 10 --bench gap &> system/disks/CPU2000/output/new-test/jobout-gap-big.txt

I run one benchmark at 2 different frequencies and I've got these results in the stats.txt file:

STATS 500MHz 800MHz

sim_seconds 0.000001 0.000001
sim_ticks 541000 541000
final_tick 14490000 14490000 sim_freq 1000000000000 1000000000000 host_inst_rate 4982188 5011618 host_op_rate 6197423 6233214 host_tick_rate 265854982 267367654 host_mem_usage 625692 625692 sim_insts 10012 10012 sim_ops 12535 12535
system.mainCpu.numCycles 270 432
system.mainCpu.committedInsts 11 11 system.mainCpu.committedOps 11 11 system.mainCpu.num_int_alu_accesses 10 10


I'm a bit confused about the relationship between the number of cycles and the number of ticks and clock. I thought the number of cycles should be the same and the ticks be different! I cannot understand the calculation in clocked_object.hh file in the update() function, the number of cycles change based on the clock and the number of ticks? I thought each operation has a fix amount of cycles which is independent from the time. Another problem with the time and events is when I looked at the timing.cc code in IcachePort::recvTimingResp(PacketPtr pkt) and DcachePort::recvTimingResp(PacketPtr pkt), I saw that you checked that the next_tick is equal to the curTick, and if not you schedule the event for the next tick. This 'if' is always true for the 500MHz and 800MHz because the multiplication of clock and cycle equals to the tick but it's always 'else' for some other frequencies like 550MHz so it does one or two extra events with the description of 'Timing CPU icache tick' and 'Timing CPU dcache tick' which makes 550MHZ even slower than 500MHz! I'd be so thankful if you could clarify these differences and similarities.

Thanks
Negar




_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users


The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.


_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to