f4cf31f5e1a952e8fb53e10160f167f29324c3b3
As described in the Jira issue, this replaces the implementation of isPowerOf2() and power(). It also revamps floorLog2 so that there only needs to be one implementation and no assumptions about how big certain types are. The way power() used to work was to raise a number n to an exponent e by multiplying n times itself e times. As a warning in this function explains, this can be quite slow for large e. A much more efficient way to raise a number to an exponent is to square n over and over, and to multiply in the current square if that bit of e is set. n ^ 15 = (n^1) * (n^2) * (n^4) * (n^8) n^8 = (n^4)^2 n^4 = (n^2)^2 n^2 = n^2 n^1 = n So that takes 6 multiplications, n^2, (n^2)^2, (n^4)^2, and then each multipy to compute the final result, instead of 14. The difference is more pronounced for larger exponents, although you'd quickly start to overflow a uint64_t. Jira Issue: https://gem5.atlassian.net/browse/GEM5-140 Change-Id: I0ae05aeba1b5882d2a616613b1679e6206b4cbfe Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/26164 Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Maintainer: Gabe Black <gabeblack@google.com> Tested-by: kokoro <noreply+kokoro@google.com>
This is the gem5 simulator. The main website can be found at http://www.gem5.org A good starting point is http://www.gem5.org/about, and for more information about building the simulator and getting started please see http://www.gem5.org/documentation and http://www.gem5.org/documentation/learning_gem5/introduction. To build gem5, you will need the following software: g++ or clang, Python (gem5 links in the Python interpreter), SCons, SWIG, zlib, m4, and lastly protobuf if you want trace capture and playback support. Please see http://www.gem5.org/documentation/general_docs/building for more details concerning the minimum versions of the aforementioned tools. Once you have all dependencies resolved, type 'scons build/<ARCH>/gem5.opt' where ARCH is one of ARM, NULL, MIPS, POWER, SPARC, or X86. This will build an optimized version of the gem5 binary (gem5.opt) for the the specified architecture. See http://www.gem5.org/documentation/general_docs/building for more details and options. The basic source release includes these subdirectories: - configs: example simulation configuration scripts - ext: less-common external packages needed to build gem5 - src: source code of the gem5 simulator - system: source for some optional system software for simulated systems - tests: regression tests - util: useful utility programs and files To run full-system simulations, you will need compiled system firmware (console and PALcode for Alpha), kernel binaries and one or more disk images. If you have questions, please send mail to gem5-users@gem5.org Enjoy using gem5 and please share your modifications and extensions.
Description