User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:184.108.40.206) Gecko/2008070208 Firefox/3.0.1 Build Identifier: I have collected the instruction mix statistics of TT for the untyped SunSpider benchmarks on Win32 using our Pin mix-mt tool a Nehalem system. The SunSpider benchmarks I used are: sunspider/access-binary-trees sunspider/run-access-fannkuch sunspider/access-nbody sunspider/run-nsieve sunspider/bitops-3bit-bits-in-byte sunspider/bitops-bit-in-byte sunspider/bitops-bitwise-and sunspider/bitops-nsieve-bits sunspider/controlflow-recursive sunspider/crypto-aes sunspider/crypto-md5 sunspider/crypto-sha1 sunspider/math-cordic sunspider/run-partial-sums sunspider/math-spectral-norm sunspider/3d-cube sunspider/3dmorph sunspider/3d-raytrace sunspider/string-fasta sunspider/string-validate-input The collective instruction mix statistics are in the attached file. Here’s the head: OPCODE INSTRUCTION INSTRUCTION COUNT %INSTRs %CUMULATIVE ------ ----------- ----------------- ------- ----------- 287 MOV 42,843,042,848 26.603 26.603 512 PUSH 17,844,935,428 11.081 37.683 59 CMP 10,947,353,898 6.798 44.481 460 POP 9,134,629,155 5.672 50.153 It is interesting that 1/4th of the executed instructions are moves and just four instruction types (mov, push, cmp, pop) constitute 50% of the total executed instructions. If anyone is interested, I can also publish the individual instruction mix for each of the benchmarks. -Carmen- Reproducible: Always Steps to Reproduce: Run TT under Pin.
TT writes the side exit state into the frame on-trace, which causes a lot of memory moves. Builtins are frequently used which causes a ton pushs and pops and cmps are probably guards. The numbers definitively make sense. We need some work on improved register allocation and store sinking into side exits.
I'm curious how this instruction mix compares to a similar C/C++ benchmark suite. Or for that matter the mix of apps in general. Assuming that we have excess data movement happening (most likely the case), it would be good to have a goal.
Created attachment 332593 [details] JS Shell Instruction Mix On a related analysis, Carmen has obtained the instruction mix of JS Shell of Mozilla Central: https://bugzilla.mozilla.org/attachment.cgi?id=329574&action=edit This attachment here is a sorted list of that data. Comparing JS Shell instMix and TT instMix, it seems that TT has less %moves compared to JS Shell (27% vs. 40%) but has more %calls (5% vs. 1%) and thus more %push (11% vs. 5%).
good data, but closing for lack of actionable work items, and TT is in deep freeze.