See Opcodes Costs

Related publication :  "An Energy Consumption Model for an Embedded Java Virtual Machine"
Lecture Notes in Computer Science
Publisher: Springer Berlin / Heidelberg
ISSN: 0302-9743
Subject:  Computer Science
Volume 3894 / 2006
Title:  Architecture of Computing Systems - ARCS 2006: 19th International Conference, Frankfurt/Main, Germany, March 13-16, 2006. Proceedings
Editors:  Werner Grass, Bernhard Sick, Klaus Waldschmidt
ISBN: 3-540-32765-7
DOI: 10.1007/11682127
Chapter: pp. 311 - 325
DOI: 10.1007/11682127_22

Benchmarks for the KVM

All + All -

See Opcodes Costs

See Benchmarks

Opcodes Costs



Table 1: Opcodes costs, conversion opcodes

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
i2l 0x85 0.928660 2.200260 198 50
l2i 0x88 0.857440 2.037840 184 47
i2b 0x91 0.928540 2.200260 198.0 50
i2c 0x92 0.928520 2.200260 198 50
i2s 0x93 0.928540 2.200260 198 50


Table 2: Opcodes costs, stack and local variable operations-part 1/2

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
nop 0x0 0.831440 1.989840 178 45
aconst_null 0x1 0.890020 2.126940 190 49
iconst_m1 0x2 0.899160 2.150940 192 50
iconst_0 0x3 0.890020 2.126940 190 49
iconst_1 0x4 0.890020 2.126940 190 49
iconst_2 0x5 0.890020 2.126940 190 49
iconst_3 0x6 0.890020 2.126940 190 49
iconst_4 0x7 0.889760 2.126940 190 49
iconst_5 0x8 0.890020 2.126940 190 49
lconst_0 0x9 0.922300 2.192040 196 50
lconst_1 0xa 0.930960 2.216040 198 51
bipush 0x10 0.926900 2.214420 198 52
sipush 0x11 0.990360 2.373900 212 58
iload 0x15 1.013700 2.434380 216 55
lload 0x16 1.167820 2.815440 248 63
aload 0x19 1.013700 2.434380 216 55
iload_0 0x1a 0.968120 2.322900 206 51
iload_1 0x1b 0.968120 2.322900 206 51
iload_2 0x1c 0.968120 2.322900 206 51
iload_3 0x1d 0.968120 2.322900 206 51
lload_0 0x1e 1.104800 2.655960 234 57
lload_1 0x1f 1.104800 2.655960 234 57
lload_2 0x20 1.104800 2.655960 234 57
lload_3 0x21 1.104800 2.655960 234 57
aload_0 0x2a 0.968120 2.322900 206 51
aload_1 0x2b 0.968120 2.322900 206 51
aload_2 0x2c 0.968120 2.322900 206 51
aload_3 0x2d 0.968120 2.322900 206 51
istore 0x36 1.004140 2.410380 214 54
lstore 0x37 1.148940 2.767440 244 61
astore 0x3a 1.004140 2.410380 214 54


Table 3: Opcodes costs, stack and local variable operations-part 2/2

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
istore_0 0x3b 0.958800 2.298900 204 50
istore_1 0x3c 0.958800 2.298900 204 50
istore_2 0x3d 0.958800 2.298900 204 50
istore_3 0x3e 0.958800 2.298900 204 50
lstore_0 0x3f 1.086160 2.607960 230 55
lstore_1 0x40 1.086160 2.607960 230 55
lstore_2 0x41 1.086160 2.607960 230 55
lstore_3 0x42 1.086160 2.607960 230 55
astore_0 0x4b 0.958800 2.298900 204 50
astore_1 0x4c 0.958800 2.298900 204 50
astore_2 0x4d 0.958800 2.298900 204 50
astore_3 0x4e 0.958800 2.298900 204 50
pop 0x57 0.857440 2.037840 184 47
pop2 0x58 0.857440 2.037840 184 47
dup 0x59 0.928740 2.200260 198 50
dup_x1 0x5a 1.040200 2.451780 220 55
dup_x2 0x5b 1.119080 2.638200 236 59
dup2 0x5c 1.026160 2.434680 218 56
dup2_x1 0x5d 1.169000 2.751300 246 62
dup2_x2 0x5e 1.321140 3.100140 276 69
swap 0x5f 0.990280 2.338680 210 52
ldc 0x12 1.022440 2.458380 218 56
ldc_w 0x13 1.085880 2.617860 232 62
ldc2_w 0x14 1.203000 2.870700 254 65


See Benchmarks

Table 4: Opcodes costs, arithmetic opcodes

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
iadd 0x60 0.957860 2.273580 204 51
isub 0x64 0.957360 2.273580 204 51
imul 0x68 0.959500 2.273580 204 51
idiv 0x6c 1.613020 3.851460 348 84
ladd 0x61 1.575480 3.631800 328 76
lsub 0x62 1.575480 3.631800 328 76
lmul 0x69 1.638000 3.865920 348 74
ldiv 0x6d 3.685660 9.344040 820 181
iinc 0x84 1.188360 2.830920 252 63
ineg 0x74 0.920080 2.176260 196 49
lneg 0x75 1.366460 3.136320 286 67
irem 0x70 1.613020 3.851460 348 84
lrem 0x71 3.685660 9.344040 820 181



Table 5: Opcodes costs, object and arrays-Part1/2

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
new 0xbb (java.lang.Object) 5.456560 12.437760 1146 240
new (java.lang.String) 5.508280 12.561060 1158 240
putfield 0xb5 4.201320 9.604260 872 185
putfield (long)0xb5 4.432900 10.139520 918 196
getfield 0xb4 4.156160 9.515160 864 183
getfield 0xb4(long) 4.324340 9.912000 898 192
putstatic 0xb3 4.100420 9.381000 856 185
putstatic (long) 0xb3 4.334720 9.949800 904 195
getstatic 0xb2 4.083360 9.357000 852 184
getstatic (long)0xb2 4.303640 9.901800 898 193
checkcast 0xc0(is String 'castable' to Object,yes) 3.726300 8.497920 774 156
checkcast 0xc0 3.726300 8.497920 774 156
(is Class 'castable' to Object,yes)        
checkcast 0xc0 4.243800 9.677880 888 191
(is SubClass 'castable' to Class,yes)        
checkcast(is Class 'castable' to 133.521178 302.378599 28250 7058
subClass,no throws ClassCastException)        
checkcast(is Object 'castable' to String,0 133.292438 301.846638 28200 7044
no throws ClassCastException)        
instanceof (is String instanceof Object,yes) 0xc1 3.815760 8.733660 792 160
instanceof (is Object instanceof String,no) 0xc1 4.213440 9.600299 880 186
instanceof (is This instance of Object,yes) 0xc1 3.815760 8.733660 792 160
instanceof (is Object instance of This,no) 0xc1 4.213440 9.600299 880 186
instanceof (is This instance of String,no) 0xc1 4.442180 10.132260 930 200
instanceof 4.442180 10.132260 930 200
(is Class instance of subClass,no)        
instanceof 4.333260 9.913620 906 195
(is SubClass instance of Class,yes)        
newarray 0xbc (of size 0) 4.417460 10.073760 924 192
newarray 0xbc (of 4 bytes) 4.434700 10.114860 928 192
newarray 0xbc (of 8 bytes) 4.451940 10.155960 932 192
newarray 0xbc (of 16 bytes) 4.486420 10.238160 940 192
newarray 0xbc (of 32 bytes) 4.555380 10.402560 956 192
newarray 0xbc (of 64 bytes) 4.770880 10.928640 1006 196


See Benchmarks

Table 6: Opcodes costs, object and arrays-Part2/2

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
anewarray (size=0 non resolved empty class) 0xbd 34.638980 79.455499 7388 1908
anewarray (size=1 non resolved empty class) 0xbd 34.656220 79.496599 7392 1908
anewarray (size=5 non resolved empty class) 0xbd 34.725180 79.660999 7408 1908
anewarray (size=0 resolved empty class)0xbd 32.7967 75.5584 6996 1803
anewarray (size=1 resolved empty class)0xbd 32.8139 75.5995 7000 1803
anewarray (size=5 resolved empty class)0xbd 32.8829 75.7639 7016 1803
anewarray (size=0 resolved java.lang.Object class) 27.806520 64.268619 5936 1502
anewarray (size=1 resolved java.lang.Object class) 27.823760 64.309719 5940 1502
anewarray (size=5 resolved java.lang.Object class) 27.892720 64.474119 5956 1502
anewarray (size=0 resolved java.lang.String class) 27.754860 64.073619 5928 1502
anewarray (size=1 resolved java.lang.String class) 27.772100 64.114719 5932 1502
anewarray (size=5 resolved java.lang.String class) 27.841060 64.279119 5948 1502
multiarray (int 1 dimension,size=0/dim.)0xc5 36.323520 83.483859 7700 1872
multiarray (int 2 dimensions,size=4/dim.)0xc5 49.866399 113.914719 10542 2450
multiarray (int 4 dimension,size=2) 84.130479 190.890879 17702 3934
multiarray (nonResolved 1 dimension,size=0) 36.323520 83.483859 7700 1872
multiarray (nonResolved 1 dimension,size=5) 36.409720 83.689359 7720 1872
multiarray (nonResolved 2 dimension,size=5) 53.042079 121.065519 11212 2580
multiarray (Object 1 dimensions,size=8) 36.461440 83.812659 7732 1872
multiarray (Object 2 dimensions,size=4) 49.866399 113.914719 10542 2450
multiarray (Object 4 dimensions,size=2) 84.130479 190.890879 17702 3934
arraylength 0xbe 0.983920 2.297580 210 52
baload 0x33 1.066680 2.554380 228 60
caload 0x34 1.084380 2.610900 232 62
saload 0x35 1.075780 2.586900 230 61
iaload 0x2e 1.077460 2.588220 230 60
laload 0x2f 1.183560 2.846640 252 67
aaload 0x32 1.077460 2.588220 230 60
bastore 0x54 1.155620 2.748520 246 64
castore 0x55 1.164480 2.787420 248 65
sastore 0x56 1.164480 2.787420 248 65
iastore 0x4f 1.158240 2.774640 246 64
lastore 0x50 1.310000 3.123480 276 71
aastore 0x53 2.003000 4.674360 418 100



Table 7: Opcodes costs, method invocation and return

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
invokevirtual+return(empty method)0xb6 12.032760 27.984120 2504 520
invokevirtual+ireturn(empty method) 12.194540 28.380960 2536 529
invokevirtual+lreturn(empty method) 12.363720 28.753800 2570 537
invokevirtual+areturn(empty method,return this)0xb6 12.159580 28.284960 2528 525
invokestatic+return(empty method)0xb8 10.549340 24.648600 2198 455
invokestatic+ireturn(empty method) 10.711120 25.045440 2230 464
invokestatic+lreturn(empty method) 10.880300 25.418280 2264 472
invokespecial+return(empty method)0xb7 10.512680 24.545700 2188 450
invokespecial+ireturn(empty method) 10.674460 24.942540 2220 459
invokespecial+lreturn(empty method) 10.843640 25.315380 2254 467
invokespecial+areturn(empty method,return this) 10.639500 24.846540 2212 455



Table 8: Opcodes costs, control flow

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
ifeq 0x99 (branch not taken) 0.957140 2.255160 206 54
ifeq 0x99 (branch taken) 1.142280 2.617860 246 62
ifne 0x9a (branch not taken) 0.957140 2.255160 206 54
ifne 0x9a (branch taken) 1.142280 2.617860 246 62
iflt 0x9b (branch not taken) 0.957140 2.255160 206 54
iflt 0x9b (branch taken) 1.142280 2.617860 246 62
ifle 0x9e (branch not taken) 0.957140 2.255160 206 54
ifle 0x9e (branch taken) 1.142280 2.617860 246 62
ifgt 0x9d (branch not taken) 0.957140 2.255160 206 54
ifgt 0x9d (branch taken) 1.142280 2.617860 246 62
ifge 0x9c (branch not taken) 0.957140 2.255160 206 54
ifge 0x9c (branch taken) 1.142280 2.617860 246 62
if_icmpeq 0x9f (branch not taken) 0.995660 2.352480 214 56
if_icmpeq 0x9f (branch taken) 1.180800 2.715180 254 64
if_icmpne 0xa0 (branch not taken) 0.995660 2.352480 214 56
if_icmpne 0xa0 (branch taken) 1.180800 2.715180 254 64
if_icmplt 0xa1 (branch not taken) 0.995660 2.352480 214 56
if_icmplt 0xa1 (branch taken) 1.180800 2.715180 254 64
if_icmple 0xa4 (branch not taken) 0.995660 2.352480 214 56
if_icmple 0xa4 (branch taken) 1.180800 2.715180 254 64
if_icmpgt 0xa3 (branch not taken) 0.995660 2.352480 214 56
if_icmpgt 0xa3 (branch taken) 1.180800 2.715180 254 64
if_icmpge 0xa2 (branch not taken) 0.995660 2.352480 214 56
if_icmpge 0xa2 (branch taken) 1.180800 2.715180 254 64
lcmp 0x94 (value1<value2) 1.483220 3.404280 310 72
lcmp 0x94 (value1==value2) 1.693000 3.845520 356 79
lcmp 0x94 (value1>value2) 1.693000 3.845520 356 79
ifnull 0xc6(branch not taken) 0.957140 2.255160 206 54
ifnull 0xc6 (branch taken) 1.124720 2.593860 242 61
ifnonnull 0xc7 (branch not taken) 0.957140 2.255160 206 54
ifnonnull 0xc7 (branch taken) 1.124720 2.593860 242 61
if_acmpeq 0xa5 (branch not taken) 0.995660 2.352480 214 56
if_acmpeq 0xa5 (branch taken) 1.180800 2.715180 254 64
if_acmpne 0xa6 (branch not taken) 0.995660 2.352480 214 56
if_acmpne 0xa6 (branch taken) 1.180800 2.715180 254 64
goto 0xa7 1.034380 2.400540 222 55
goto_w 0xc8 1.108140 2.551500 238 60
lookupswitch 0xab (1 iteration) 2.077300 4.759140 438 116
lookupswitch 0xab (2 iterations) 2.721600 6.228240 572 151
lookupswitch 0xab (3 iterations) 3.365900 7.697340 706 186
lookupswitch 0xab (4 iterations) 4.010200 9.166440 840 221
tableswitch 0xaa 1.793420 4.205460 384 108


See Benchmarks

Table 9: Opcodes costs, logic opcodes

Opcode

Inst. Cost in $ \mathrm{\mu J}$ Mem. Cost in $ \mathrm{\mu J}$ Nb Cycles Nb Proc. Inst.
ishl 0x78 0.976480 2.321580 208 53
ishr 0x7a 0.976360 2.321580 208 53
iushr 0x7c 0.976420 2.321580 208 53
lshl 0x79 1.419040 3.316500 300 72
lshr 0x7b 1.419040 3.316500 300 72
lushr 0x7d 1.545040 3.593340 324 76
iand 0x7e 0.957800 2.273580 204 51
ior 0x80 0.958100 2.273580 204 51
ixor 0x82 0.958120 2.273580 204 51
land 0x7f 1.127820 2.701320 240 63
lor 0x81 1.128420 2.701320 240 63
lxor 0x83 1.128460 2.701320 240 63


About this document ...

This document was generated using the LaTeX2HTML translator Version 2002 (1.62)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir21086cAmhPK/lyx_tmpbuf0/tables.tex

The translation was initiated by Sebastien Lafond TUCS on 2005-09-27


Sebastien Lafond TUCS 2005-09-27