I can't argue with measurement.  Glad to know that caches and BTBs work so
well. :)

  Nate


On Sat, May 25, 2013 at 3:39 AM, Andreas Hansson <[email protected]>wrote:

>    This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/1883/
>
> On May 24th, 2013, 10:07 p.m., *Nathan Binkert* wrote:
>
>   
> src/sim/clocked_object.hh<http://reviews.gem5.org/r/1883/diff/1/?file=35579#file35579line194>
>  (Diff
> revision 1)
>
> class ClockedObject : public SimObject
>
>    191
>
>         return clockDomain.clockPeriod();
>
>   You're making a virtual function call every single time you want to 
> calculate a clock edge?  That's crazy, no?  Shouldn't you cache this value 
> locally and have the clock domains propagate updates whenever they happen? 
> (which should be comparatively rare)
>
>  Crazy or not, the impact on the total regression run time seems to be very 
> minor.
>
> We can definitely implement the caching. If it's fine with you, I'd suggest 
> to keep that for a separate patch.
>
>
> - Andreas
>
> On May 24th, 2013, 3:33 a.m., Andreas Hansson wrote:
>   Review request for Default.
> By Andreas Hansson.
>
> *Updated May 24, 2013, 3:33 a.m.*
> Description
>
> Changeset 9740:6bbd5dbeb97e
> ---------------------------
> sim: Add the notion of clock domains to all ClockedObjects
>
> This patch adds the notion of source- and derived-clock domains to the
> ClockedObjects. As such, all clock information is moved to the clock
> domain, and the ClockedObjects are grouped into domains.
>
> The clock domains are either source domains, with a specific clock
> period, or derived domains that have a parent domain and a divider
> (potentially chained). For piece of logic that runs at a derived clock
> (a ratio of the clock its parent is running at) the necessary derived
> clock domain is created from its corresponding parent clock
> domain. For now, the derived clock domain only supports a divider,
> thus ensuring a lower speed compared to its parent. Multiplier
> functionality implies a PLL logic that has not been modelled yet
> (create a separate clock instead).
>
> The clock domains should be used as a mechanism to provide a
> controllable clock source that affects clock for every clocked object
> lying beneath it. The clock of the domain can (in a future patch) be
> controlled by a handler responsible for dynamic frequency scaling of
> the respective clock domains.
>
> All the config scripts have been retro-fitted with clock domains. For
> the System a default SrcClockDomain is created. For CPUs that run at a
> different speed than the system, there is a seperate clock domain
> created. This domain incorporates the CPU and the associated
> caches. As before, Ruby runs under its own clock domain.
>
>   Testing
>
> All regressions pass
>
>   Diffs
>
>    - configs/common/CacheConfig.py (782b7284de21)
>    - configs/common/Simulation.py (782b7284de21)
>    - configs/example/fs.py (782b7284de21)
>    - configs/example/memtest.py (782b7284de21)
>    - configs/example/ruby_direct_test.py (782b7284de21)
>    - configs/example/ruby_fs.py (782b7284de21)
>    - configs/example/ruby_mem_test.py (782b7284de21)
>    - configs/example/ruby_network_test.py (782b7284de21)
>    - configs/example/ruby_random_test.py (782b7284de21)
>    - configs/example/se.py (782b7284de21)
>    - configs/ruby/MESI_CMP_directory.py (782b7284de21)
>    - configs/ruby/MI_example.py (782b7284de21)
>    - configs/ruby/MOESI_CMP_directory.py (782b7284de21)
>    - configs/ruby/MOESI_CMP_token.py (782b7284de21)
>    - configs/ruby/MOESI_hammer.py (782b7284de21)
>    - configs/ruby/Network_test.py (782b7284de21)
>    - configs/ruby/Ruby.py (782b7284de21)
>    - src/arch/alpha/AlphaSystem.py (782b7284de21)
>    - src/arch/mips/MipsSystem.py (782b7284de21)
>    - src/cpu/BaseCPU.py (782b7284de21)
>    - src/cpu/dummy_checker.cc (782b7284de21)
>    - src/cpu/o3/checker.cc (782b7284de21)
>    - src/dev/Ethernet.py (782b7284de21)
>    - src/mem/ruby/system/RubyMemoryControl.py (782b7284de21)
>    - src/sim/ClockDomain.py (PRE-CREATION)
>    - src/sim/ClockedObject.py (782b7284de21)
>    - src/sim/SConscript (782b7284de21)
>    - src/sim/clock_domain.hh (PRE-CREATION)
>    - src/sim/clock_domain.cc (PRE-CREATION)
>    - src/sim/clocked_object.hh (782b7284de21)
>    - tests/configs/base_config.py (782b7284de21)
>    - tests/configs/inorder-timing.py (782b7284de21)
>    - tests/configs/memtest-ruby.py (782b7284de21)
>    - tests/configs/memtest.py (782b7284de21)
>    - tests/configs/o3-timing-checker.py (782b7284de21)
>    - tests/configs/o3-timing-mp-ruby.py (782b7284de21)
>    - tests/configs/o3-timing-mp.py (782b7284de21)
>    - tests/configs/o3-timing-ruby.py (782b7284de21)
>    - tests/configs/o3-timing.py (782b7284de21)
>    - tests/configs/pc-simple-timing-ruby.py (782b7284de21)
>    - tests/configs/rubytest-ruby.py (782b7284de21)
>    - tests/configs/simple-atomic-dummychecker.py (782b7284de21)
>    - tests/configs/simple-atomic-mp-ruby.py (782b7284de21)
>    - tests/configs/simple-atomic-mp.py (782b7284de21)
>    - tests/configs/simple-atomic.py (782b7284de21)
>    - tests/configs/simple-timing-mp-ruby.py (782b7284de21)
>    - tests/configs/simple-timing-mp.py (782b7284de21)
>    - tests/configs/simple-timing-ruby.py (782b7284de21)
>    - tests/configs/simple-timing.py (782b7284de21)
>    - tests/configs/tgen-simple-dram.py (782b7284de21)
>    - tests/configs/tgen-simple-mem.py (782b7284de21)
>    - tests/configs/twosys-tsunami-simple-atomic.py (782b7284de21)
>
> View Diff <http://reviews.gem5.org/r/1883/diff/>
>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to