evmone icon indicating copy to clipboard operation
evmone copied to clipboard

Code chunk access cost PoC

Open chfast opened this issue 4 years ago • 1 comments

This does not follow any specific specification. The change is to access how much such calculation degrades performance. Code access in CODECOPY and EXTCODECOPY is ignored. There is also no initial access list support.

See also geth PoC: https://github.com/ethereum/go-ethereum/pull/22886.

chfast avatar May 19 '21 10:05 chfast

On the main benchmark set, enabling code chunk access cost degrades performance by 5-22% for 32-byte chunks. Using 31-byte chunks is up to 11% slower than 32-byte chunks, 5-28% in total.

Comparing o/master to o/chunk32
Benchmark                                                                Time             CPU      Time Old      Time New       CPU Old       CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------
baseline/execute/main/blake2b_huff/8415nulls_mean                     +0.1538         +0.1538           841           970           841           970
baseline/execute/main/blake2b_huff/65536nulls_mean                    +0.1793         +0.1793          6383          7527          6383          7527
baseline/execute/main/blake2b_shifts/2805nulls_mean                   +0.1217         +0.1217          2927          3283          2927          3283
baseline/execute/main/blake2b_shifts/5610nulls_mean                   +0.1234         +0.1234          5937          6670          5937          6670
baseline/execute/main/blake2b_shifts/8415nulls_mean                   +0.1255         +0.1255          8905         10022          8905         10022
baseline/execute/main/blake2b_shifts/65536nulls_mean                  +0.1231         +0.1231         69767         78356         69763         78352
baseline/execute/main/sha1_divs/empty_mean                            +0.1376         +0.1377            48            55            48            55
baseline/execute/main/sha1_divs/1351_mean                             +0.1252         +0.1252           992          1117           992          1117
baseline/execute/main/sha1_divs/2737_mean                             +0.1250         +0.1250          1936          2179          1936          2178
baseline/execute/main/sha1_divs/5311_mean                             +0.1241         +0.1241          3784          4253          3783          4253
baseline/execute/main/sha1_divs/65536_mean                            +0.1275         +0.1275         46083         51959         46082         51958
baseline/execute/main/sha1_shifts/empty_mean                          +0.2293         +0.2293            29            35            29            35
baseline/execute/main/sha1_shifts/1351_mean                           +0.2048         +0.2048           597           719           597           719
baseline/execute/main/sha1_shifts/2737_mean                           +0.2049         +0.2049          1166          1404          1166          1404
baseline/execute/main/sha1_shifts/5311_mean                           +0.2073         +0.2073          2284          2757          2284          2757
baseline/execute/main/sha1_shifts/65536_mean                          +0.2262         +0.2262         27831         34127         27830         34126
baseline/execute/main/weierstrudel/0_mean                             +0.0507         +0.0507           143           150           143           150
baseline/execute/main/weierstrudel/1_mean                             +0.0591         +0.0591           316           334           316           334
baseline/execute/main/weierstrudel/3_mean                             +0.0632         +0.0632           487           518           487           518
baseline/execute/main/weierstrudel/9_mean                             +0.0648         +0.0648          1000          1065          1000          1065
baseline/execute/main/weierstrudel/14_mean                            +0.0663         +0.0664          1429          1523          1429          1523
Comparing o/chunk32 to o/chunk31
Benchmark                                                                Time             CPU      Time Old      Time New       CPU Old       CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------
baseline/execute/main/blake2b_huff/8415nulls_mean                     +0.1150         +0.1150           970          1081           970          1081
baseline/execute/main/blake2b_huff/65536nulls_mean                    +0.0893         +0.0893          7527          8199          7527          8199
baseline/execute/main/blake2b_shifts/2805nulls_mean                   +0.0637         +0.0637          3283          3493          3283          3493
baseline/execute/main/blake2b_shifts/5610nulls_mean                   +0.0662         +0.0663          6670          7112          6670          7112
baseline/execute/main/blake2b_shifts/8415nulls_mean                   +0.0609         +0.0609         10022         10633         10022         10633
baseline/execute/main/blake2b_shifts/65536nulls_mean                  +0.0515         +0.0515         78356         82391         78352         82389
baseline/execute/main/sha1_divs/empty_mean                            +0.0426         +0.0426            55            57            55            57
baseline/execute/main/sha1_divs/1351_mean                             +0.0578         +0.0578          1117          1181          1117          1181
baseline/execute/main/sha1_divs/2737_mean                             +0.0581         +0.0581          2179          2305          2178          2305
baseline/execute/main/sha1_divs/5311_mean                             +0.0582         +0.0582          4253          4500          4253          4500
baseline/execute/main/sha1_divs/65536_mean                            +0.0559         +0.0559         51959         54865         51958         54863
baseline/execute/main/sha1_shifts/empty_mean                          +0.0367         +0.0367            35            36            35            36
baseline/execute/main/sha1_shifts/1351_mean                           +0.0629         +0.0629           719           764           719           764
baseline/execute/main/sha1_shifts/2737_mean                           +0.0619         +0.0619          1404          1491          1404          1491
baseline/execute/main/sha1_shifts/5311_mean                           +0.0559         +0.0560          2757          2911          2757          2911
baseline/execute/main/sha1_shifts/65536_mean                          +0.0398         +0.0398         34127         35486         34126         35485
baseline/execute/main/weierstrudel/0_mean                             -0.0038         -0.0038           150           149           150           149
baseline/execute/main/weierstrudel/1_mean                             +0.0009         +0.0009           334           334           334           334
baseline/execute/main/weierstrudel/3_mean                             +0.0026         +0.0026           518           520           518           520
baseline/execute/main/weierstrudel/9_mean                             +0.0059         +0.0059          1065          1071          1065          1071
baseline/execute/main/weierstrudel/14_mean                            +0.0033         +0.0033          1523          1528          1523          1528

chfast avatar May 19 '21 10:05 chfast