If you think a bug might affect users in the 57 release, please set the correct tracking and status flags for Release Management.

Dynamic Instruction Mix of TT on Sunspider

VERIFIED INCOMPLETE

Status

Tamarin
Baseline JIT (CodegenLIR)
--
enhancement
VERIFIED INCOMPLETE
9 years ago
8 years ago

People

(Reporter: Carmen Badea, Unassigned)

Tracking

unspecified
Future
x86
Windows XP

Details

Attachments

(2 attachments)

(Reporter)

Description

9 years ago
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) 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.
(Reporter)

Comment 1

9 years ago
Created attachment 331608 [details]
Dynamic Instruction Mix of TT on Sunspider

Comment 2

9 years ago
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. 
Status: UNCONFIRMED → NEW
Ever confirmed: true

Comment 3

9 years ago
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.

Comment 4

9 years ago
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%).

Updated

8 years ago
Component: Tracing Virtual Machine → JIT Compiler (NanoJIT)
QA Contact: tracing-vm → nanojit

Updated

8 years ago
Target Milestone: --- → Future

Comment 5

8 years ago
good data, but closing for lack of actionable work items, and TT is in deep freeze.
Status: NEW → RESOLVED
Last Resolved: 8 years ago
Resolution: --- → INCOMPLETE

Updated

8 years ago
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.