Skip to content

runtime: add ARM64 vectorized support for Green Tea GC #79931

Description

@mishaglik

Proposal Details

This proposal introduce ARM64 SVE based implementation of Green Tea GC scan kernel.

Implementation details

Current AMD64 Green Tea GC kernel consists of 2 main parts: expander and scan kernel.
Expander makes objmask same size as ptrmask.
Scan kernel intersects expanded mask with ptrmask and then loads and filters valid pointers from span.

Scan kernel on ARM64

Implementation of scan kernel for ARM64 are almost the same as for AMD64.
However there are several key differences.

  1. Mask register semantic: on AVX512 operation on any vector element size take consecutive bits from mask register.
    On ARM64 bits must be interleaved according to vector element size.
    Example: compact/compress operation used in scan kernel:
    AVX512 Compress
    SVE Compact
    Chain of punpklo/hi instructions used to interleave bits.
    It looks like:
  ldr p0, [x4]
  punpkhi p4.h, p0.b
  punpklo p0.h, p0.b

  punpkhi p2.h, p0.b
  punpklo p0.h, p0.b
  punpkhi p6.h, p4.b
  punpklo p4.h, p4.b

  punpkhi p1.h, p0.b
  punpklo p0.h, p0.b
  punpkhi p3.h, p2.b
  punpklo p2.h, p2.b
  punpkhi p5.h, p4.b
  punpklo p4.h, p4.b
  punpkhi p7.h, p6.b
  punpklo p6.h, p6.b

In this snippet dense bitmask is loaded to p0 and then unpacked to p0-p7 register.

  1. Vectors scalability. SVE vector size may be different across architectures.
    On my machine SVE vector size is 256 bit.

Main scan kernel logic can be seen in following snippet:

  // Load next line to z0 register
  ldr z0, [x0, 0, mul vl]
  // Filter out nil pointers
  cmpne p0.d, p0/z, z0.d, #0
  compact z0.d, p0, z0.d 
  // Count how much pointers we got
  cntp x5, p0, p0.d 
  // Put in output buffer
  str z0, [x1]
  // Advanve outbuf buffer pointer to number of valid pointers
  add x1, x1, x5, lsl #3

Issue with expand kernel. Proposal of sparse inline mark bits

AMD64 expand kernel implementation relies on GF2P8AFFINEQB instruction.
There is nothing like it in ARM64 SIMD extensions.
Emulating it would be too costly.
In order to overcome this issue I propose change semantic of inline mark bits.
Inline make bits has fixed size, enough to fit all objects in Green Tea span.
In other words it has pageSize / 16 bits.
Now i'th bit corresponds to i'th object.
In proposed change i'th bit corresponds to object starting on offset 16*i bytes (if such object exists).
This require span.elemsize be multiple of 16. Now it only excludes elemsize == 24.
In this implementation expand operation is replaced by multiplication to 2^(elemsize/16)-1 which is much more simple and does not require GF2P8AFFINEQB instruction.

Implementation

Proposed changes has 2 commits:

  • First one introduces sparse inline mark bits and ready to merge.
    It is tested using Intel SDE. So I was unable to measure performance impact of this change.

  • Second one has ARM64 SVE Green Tea kernel implementation.
    As for now go does not have support of SVE instructions, implementation is done using WORD directives.
    It may be worth waiting official SVE support.

Benchmark results

I measured this implementation on tests in src/internal/runtime/gc/scan and got following results:

goos: linux

goarch: arm64

pkg: internal/runtime/gc/scan

                                                         │      Go       │               Platform               │
                                                         │    sec/op     │    sec/op     vs base                │
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=0-4       20.95n ±  3%   27.64n ±  6%  +31.90% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=10-4      296.8n ±  3%   277.9n ±  0%   -6.34% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=20-4      568.9n ±  3%   323.9n ±  0%  -43.07% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=30-4      864.9n ±  3%   323.5n ±  0%  -62.59% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=40-4     1169.0n ±  2%   323.7n ±  0%  -72.31% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=50-4     1451.5n ±  3%   324.7n ±  0%  -77.63% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=60-4     1687.0n ±  2%   323.2n ±  0%  -80.84% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=70-4     1971.5n ±  4%   323.8n ±  0%  -83.57% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=80-4     2244.0n ±  1%   323.9n ±  0%  -85.57% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=90-4     2481.5n ±  2%   324.0n ±  0%  -86.94% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=2/pct=100-4    2804.0n ±  3%   323.1n ±  0%  -88.48% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=0-4       21.25n ±  3%   27.00n ± 17%  +27.03% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=10-4      257.6n ±  6%   324.0n ±  0%  +25.77% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=20-4      490.4n ±  4%   323.3n ±  0%  -34.07% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=30-4      742.0n ±  6%   323.8n ±  0%  -56.36% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=40-4     1005.3n ±  8%   324.9n ±  0%  -67.68% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=50-4     1182.5n ±  5%   323.8n ±  1%  -72.62% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=60-4     1444.5n ±  8%   323.9n ±  0%  -77.58% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=70-4     1747.0n ±  4%   323.3n ±  0%  -81.49% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=80-4     1893.0n ±  5%   323.7n ±  0%  -82.90% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=90-4     2141.0n ±  4%   323.6n ±  0%  -84.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=4/pct=100-4    2361.5n ±  8%   324.1n ±  0%  -86.28% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=0-4       21.04n ±  4%   29.79n ±  9%  +41.62% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=10-4      236.3n ±  6%   323.6n ±  1%  +36.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=20-4      480.0n ±  5%   323.8n ±  0%  -32.54% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=30-4      687.7n ±  8%   324.0n ±  0%  -52.88% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=40-4      931.9n ± 10%   325.0n ±  0%  -65.13% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=50-4     1137.0n ±  7%   323.4n ±  0%  -71.56% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=60-4     1350.5n ±  3%   323.6n ±  1%  -76.04% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=70-4     1612.0n ±  7%   324.1n ±  0%  -79.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=80-4     1877.0n ±  7%   324.2n ±  0%  -82.73% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=90-4     2056.5n ±  6%   323.9n ±  0%  -84.25% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=5/pct=100-4    2212.5n ±  7%   324.2n ±  0%  -85.34% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=0-4       21.04n ±  4%   27.41n ± 11%  +30.24% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=10-4      234.8n ±  6%   286.7n ±  1%  +22.10% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=20-4      465.0n ±  4%   323.9n ±  0%  -30.34% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=30-4      636.6n ±  5%   323.5n ±  1%  -49.18% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=40-4      890.9n ± 10%   324.0n ±  0%  -63.63% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=50-4     1124.5n ±  9%   323.8n ±  0%  -71.21% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=60-4     1338.0n ±  5%   323.8n ±  1%  -75.80% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=70-4     1534.5n ±  3%   323.8n ±  0%  -78.90% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=80-4     1725.5n ±  8%   323.9n ±  0%  -81.23% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=90-4     1991.0n ±  4%   323.6n ±  0%  -83.75% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=6/pct=100-4    2180.0n ±  4%   323.2n ±  0%  -85.17% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=0-4       21.33n ±  2%   28.49n ±  6%  +33.57% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=10-4      232.5n ±  9%   304.2n ±  0%  +30.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=20-4      423.2n ± 10%   323.9n ±  1%  -23.45% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=30-4      682.4n ±  9%   323.8n ±  0%  -52.55% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=40-4      893.4n ±  6%   324.0n ±  0%  -63.73% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=50-4     1088.0n ±  3%   324.1n ±  1%  -70.21% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=60-4     1343.0n ±  6%   323.9n ±  0%  -75.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=70-4     1494.0n ±  3%   323.8n ±  1%  -78.33% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=80-4     1761.0n ±  6%   324.0n ±  0%  -81.60% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=90-4     1939.5n ±  3%   324.4n ±  0%  -83.27% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=7/pct=100-4    2132.5n ±  8%   323.8n ±  0%  -84.82% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=0-4       21.50n ±  7%   29.52n ± 15%  +37.30% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=10-4      244.7n ±  5%   266.2n ±  1%   +8.83% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=20-4      422.1n ± 10%   323.7n ±  0%  -23.30% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=30-4      661.6n ±  4%   323.9n ±  0%  -51.05% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=40-4      883.4n ±  6%   323.9n ±  0%  -63.34% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=50-4     1091.0n ±  6%   323.7n ±  0%  -70.33% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=60-4     1298.0n ±  7%   323.8n ±  0%  -75.06% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=70-4     1491.0n ±  5%   323.8n ±  1%  -78.28% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=80-4     1688.0n ±  9%   323.9n ±  0%  -80.81% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=90-4     1985.5n ± 13%   323.9n ±  1%  -83.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=8/pct=100-4    2115.5n ±  2%   323.8n ±  1%  -84.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=0-4       21.81n ±  4%   28.50n ± 15%  +30.67% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=10-4      219.0n ±  9%   266.8n ±  0%  +21.80% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=20-4      470.2n ±  6%   304.6n ±  0%  -35.20% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=30-4      637.2n ±  7%   323.8n ±  0%  -49.19% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=40-4      861.1n ±  3%   323.8n ±  1%  -62.40% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=50-4     1123.5n ±  6%   323.8n ±  1%  -71.18% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=60-4     1274.5n ±  9%   323.9n ±  0%  -74.58% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=70-4     1537.5n ±  5%   324.4n ±  0%  -78.90% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=80-4     1690.5n ±  4%   324.4n ±  0%  -80.81% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=90-4     1904.5n ±  9%   324.3n ±  1%  -82.97% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=9/pct=100-4    2128.5n ±  3%   323.9n ±  0%  -84.78% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=0-4      20.82n ±  2%   27.99n ±  6%  +34.44% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=10-4     212.3n ±  6%   304.9n ±  0%  +43.56% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=20-4     445.8n ± 12%   305.0n ±  0%  -31.59% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=30-4     606.9n ± 10%   304.9n ±  0%  -49.77% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=40-4     852.8n ± 11%   304.4n ±  0%  -64.30% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=50-4    1030.0n ±  6%   305.0n ±  0%  -70.39% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=60-4    1297.5n ±  7%   323.2n ±  1%  -75.09% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=70-4    1456.0n ±  3%   323.4n ±  0%  -77.79% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=80-4    1641.0n ± 14%   324.1n ±  1%  -80.25% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=90-4    1858.5n ±  4%   323.4n ±  0%  -82.60% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=10/pct=100-4   2099.0n ±  9%   324.4n ±  0%  -84.55% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=0-4      21.21n ±  7%   27.86n ± 15%  +31.35% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=10-4     237.5n ±  7%   190.4n ±  0%  -19.85% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=20-4     409.2n ±  6%   287.9n ±  0%  -29.64% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=30-4     623.0n ±  6%   304.7n ±  0%  -51.10% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=40-4     817.6n ±  6%   304.9n ±  0%  -62.71% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=50-4    1036.5n ±  5%   324.4n ±  0%  -68.70% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=60-4    1241.0n ±  7%   325.1n ±  0%  -73.80% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=70-4    1421.0n ±  4%   323.9n ±  1%  -77.20% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=80-4    1622.5n ± 14%   324.3n ±  0%  -80.01% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=90-4    1802.0n ± 16%   324.6n ±  0%  -81.99% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=11/pct=100-4   2074.0n ± 13%   323.4n ±  0%  -84.41% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=0-4      21.20n ±  6%   27.80n ± 10%  +31.14% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=10-4     220.7n ± 12%   304.7n ±  0%  +38.09% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=20-4     425.4n ±  3%   304.7n ±  0%  -28.37% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=30-4     601.4n ±  2%   323.9n ±  0%  -46.15% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=40-4     815.1n ±  7%   323.9n ±  1%  -60.26% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=50-4    1031.5n ±  5%   323.9n ±  0%  -68.59% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=60-4    1246.5n ± 16%   324.1n ±  0%  -74.00% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=70-4    1471.0n ± 13%   324.7n ±  0%  -77.93% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=80-4    1649.5n ± 12%   323.8n ±  0%  -80.37% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=90-4    1842.0n ±  4%   323.4n ±  0%  -82.45% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=12/pct=100-4   2061.5n ± 15%   324.1n ±  0%  -84.28% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=0-4      21.14n ±  4%   27.25n ± 11%  +28.91% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=10-4     238.2n ±  4%   305.1n ±  0%  +28.09% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=20-4     414.8n ±  8%   324.4n ±  0%  -21.80% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=30-4     641.1n ±  7%   325.4n ±  1%  -49.25% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=40-4     829.1n ±  3%   324.0n ±  0%  -60.92% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=50-4    1079.5n ±  8%   323.8n ±  0%  -70.00% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=60-4    1222.5n ± 12%   323.8n ±  0%  -73.52% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=70-4    1512.5n ±  5%   323.4n ±  0%  -78.61% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=80-4    1628.0n ±  7%   323.4n ±  0%  -80.14% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=90-4    1774.0n ± 14%   323.2n ±  0%  -81.78% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=13/pct=100-4   2035.5n ± 13%   323.9n ±  0%  -84.08% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=0-4      20.97n ±  5%   27.97n ±  6%  +33.37% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=10-4     207.6n ± 11%   323.8n ±  1%  +55.95% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=20-4     399.1n ± 15%   323.9n ±  0%  -18.84% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=30-4     631.8n ±  8%   323.6n ±  0%  -48.79% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=40-4     844.3n ±  9%   324.0n ±  1%  -61.63% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=50-4    1040.0n ±  5%   324.5n ±  0%  -68.80% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=60-4    1223.0n ±  8%   323.8n ±  1%  -73.53% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=70-4    1422.0n ±  8%   324.1n ±  0%  -77.21% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=80-4    1707.0n ± 10%   323.4n ±  0%  -81.06% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=90-4    1797.0n ±  3%   323.9n ±  0%  -81.98% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=14/pct=100-4   1945.0n ±  9%   323.8n ±  0%  -83.35% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=0-4      21.49n ±  6%   27.88n ±  7%  +29.71% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=10-4     232.5n ±  4%   324.1n ±  0%  +39.39% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=20-4     451.7n ±  4%   324.0n ±  0%  -28.26% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=30-4     637.0n ± 11%   323.4n ±  1%  -49.23% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=40-4     822.9n ±  6%   324.4n ±  0%  -60.57% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=50-4    1084.5n ±  9%   323.8n ±  0%  -70.15% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=60-4    1177.5n ± 10%   324.2n ±  0%  -72.47% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=70-4    1410.5n ±  4%   323.8n ±  0%  -77.04% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=80-4    1636.5n ± 10%   324.1n ±  1%  -80.20% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=90-4    1828.0n ±  6%   324.1n ±  0%  -82.27% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=15/pct=100-4   2008.0n ± 10%   323.6n ±  0%  -83.88% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=0-4      21.45n ±  9%   27.45n ±  4%  +27.98% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=10-4     248.8n ±  6%   323.8n ±  1%  +30.14% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=20-4     397.3n ±  7%   323.9n ±  1%  -18.46% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=30-4     644.7n ±  6%   323.3n ±  0%  -49.85% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=40-4     830.7n ±  8%   324.0n ±  1%  -60.99% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=50-4    1043.0n ±  7%   323.9n ±  0%  -68.95% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=60-4    1274.0n ± 10%   323.7n ±  1%  -74.59% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=70-4    1410.5n ±  9%   324.4n ±  0%  -77.00% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=80-4    1586.5n ±  3%   323.4n ±  0%  -79.61% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=90-4    1757.5n ±  5%   324.0n ±  1%  -81.56% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=16/pct=100-4   1953.0n ±  7%   323.4n ±  0%  -83.44% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=0-4      21.30n ±  3%   28.39n ±  5%  +33.31% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=10-4     200.2n ±  5%   171.3n ±  0%  -14.43% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=20-4     422.7n ±  8%   323.3n ±  0%  -23.51% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=30-4     618.7n ±  7%   323.7n ±  0%  -47.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=40-4     843.8n ±  9%   323.2n ±  0%  -61.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=50-4    1015.0n ±  7%   323.5n ±  0%  -68.13% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=60-4    1205.0n ±  6%   323.1n ±  0%  -73.19% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=70-4    1440.0n ±  5%   323.6n ±  1%  -77.53% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=80-4    1614.5n ±  3%   323.2n ±  1%  -79.98% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=90-4    1844.5n ±  6%   324.6n ±  0%  -82.40% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=17/pct=100-4   1961.5n ±  5%   323.6n ±  0%  -83.50% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=0-4      21.27n ±  4%   28.50n ±  9%  +33.99% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=10-4     208.7n ±  2%   305.5n ±  0%  +46.42% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=20-4     388.5n ±  8%   324.2n ±  0%  -16.53% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=30-4     650.4n ±  8%   324.6n ±  0%  -50.10% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=40-4     808.0n ±  8%   324.1n ±  0%  -59.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=50-4    1045.5n ±  8%   323.8n ±  0%  -69.03% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=60-4    1218.0n ±  7%   323.3n ±  0%  -73.46% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=70-4    1435.0n ± 11%   323.5n ±  0%  -77.46% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=80-4    1664.5n ±  9%   323.7n ±  1%  -80.56% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=90-4    1822.5n ± 12%   323.7n ±  1%  -82.24% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=18/pct=100-4   1978.5n ±  2%   323.6n ±  0%  -83.65% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=0-4      21.58n ±  5%   28.55n ±  7%  +32.28% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=10-4     229.5n ±  9%   324.0n ±  1%  +41.21% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=20-4     451.8n ±  2%   323.6n ±  0%  -28.39% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=30-4     613.0n ±  4%   324.0n ±  0%  -47.14% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=40-4     799.5n ±  4%   323.9n ±  0%  -59.48% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=50-4    1029.5n ±  6%   324.0n ±  1%  -68.53% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=60-4    1182.5n ±  5%   324.2n ±  0%  -72.58% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=70-4    1456.0n ±  5%   323.6n ±  0%  -77.77% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=80-4    1596.5n ±  6%   323.8n ±  0%  -79.72% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=90-4    1791.0n ±  6%   323.6n ±  0%  -81.93% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=19/pct=100-4   1915.5n ± 15%   323.6n ±  0%  -83.11% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=0-4      21.50n ±  4%   27.33n ± 12%  +27.12% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=10-4     252.4n ± 10%   172.2n ±  0%  -31.81% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=20-4     410.7n ±  3%   322.6n ±  0%  -21.44% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=30-4     672.3n ±  8%   324.2n ±  0%  -51.78% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=40-4     804.0n ±  8%   323.8n ±  0%  -59.73% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=50-4    1035.5n ±  6%   323.8n ±  0%  -68.73% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=60-4    1235.5n ±  6%   323.4n ±  0%  -73.82% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=70-4    1480.0n ± 11%   323.4n ±  0%  -78.15% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=80-4    1580.5n ±  3%   324.1n ±  0%  -79.50% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=90-4    1823.0n ±  9%   324.6n ±  0%  -82.20% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=20/pct=100-4   1955.0n ±  6%   323.2n ±  1%  -83.47% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=0-4      21.57n ±  5%   28.27n ±  6%  +31.06% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=10-4     193.0n ±  7%   317.6n ±  0%  +64.58% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=20-4     446.0n ±  7%   323.4n ±  0%  -27.49% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=30-4     618.7n ±  4%   323.9n ±  0%  -47.65% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=40-4     795.0n ± 10%   323.9n ±  0%  -59.27% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=50-4    1047.0n ±  6%   323.3n ±  0%  -69.12% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=60-4    1222.5n ±  4%   323.6n ±  1%  -73.53% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=70-4    1368.5n ±  6%   324.2n ±  1%  -76.31% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=80-4    1621.0n ± 13%   324.1n ±  1%  -80.01% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=90-4    1813.0n ±  6%   323.7n ±  0%  -82.15% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=21/pct=100-4   1986.5n ±  7%   324.2n ±  1%  -83.68% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=0-4      21.42n ±  6%   27.22n ± 11%  +27.13% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=10-4     209.6n ±  4%   313.1n ±  0%  +49.32% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=20-4     413.0n ±  6%   313.8n ±  0%  -24.03% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=30-4     585.9n ±  8%   313.8n ±  0%  -46.45% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=40-4     798.0n ±  7%   314.0n ±  0%  -60.65% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=50-4    1033.0n ± 10%   313.8n ±  0%  -69.62% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=60-4    1224.5n ±  6%   313.7n ±  0%  -74.38% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=70-4    1423.0n ±  7%   323.7n ±  1%  -77.25% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=80-4    1584.5n ±  8%   323.7n ±  0%  -79.57% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=90-4    1776.0n ± 10%   324.1n ±  0%  -81.75% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=22/pct=100-4   1980.0n ±  3%   323.8n ±  0%  -83.64% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=0-4      21.27n ±  3%   29.02n ± 15%  +36.44% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=10-4     235.6n ±  5%   313.1n ±  0%  +32.92% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=20-4     430.0n ± 12%   313.3n ±  0%  -27.14% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=30-4     625.8n ±  5%   313.6n ±  0%  -49.89% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=40-4     837.5n ±  8%   313.9n ±  0%  -62.51% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=50-4    1019.5n ±  6%   313.4n ±  0%  -69.25% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=60-4    1133.0n ±  7%   314.2n ±  0%  -72.26% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=70-4    1318.0n ±  6%   324.0n ±  0%  -75.42% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=80-4    1526.0n ±  6%   323.8n ±  0%  -78.78% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=90-4    1674.0n ± 13%   323.8n ±  1%  -80.66% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=23/pct=100-4   1892.5n ± 11%   323.7n ±  0%  -82.90% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=0-4      21.31n ±  2%   28.23n ± 13%  +32.45% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=10-4     235.5n ±  4%   205.2n ±  0%  -12.87% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=20-4     460.9n ± 12%   305.1n ±  0%  -33.82% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=30-4     551.9n ± 11%   305.3n ±  1%  -44.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=40-4     778.9n ±  4%   305.0n ±  1%  -60.85% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=50-4    1056.5n ± 10%   296.1n ±  0%  -71.97% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=60-4    1230.0n ±  4%   324.5n ±  0%  -73.62% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=70-4    1440.5n ±  7%   323.9n ±  0%  -77.51% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=80-4    1558.0n ±  6%   324.5n ±  0%  -79.17% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=90-4    1734.0n ±  7%   324.0n ±  0%  -81.31% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=24/pct=100-4   1983.5n ±  6%   323.5n ±  0%  -83.69% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=0-4      21.14n ±  5%   27.69n ± 21%  +30.95% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=10-4    247.65n ±  4%   67.96n ±  2%  -72.56% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=20-4     389.9n ±  7%   121.8n ±  0%  -68.76% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=30-4     606.6n ± 11%   182.1n ±  0%  -69.98% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=40-4     844.1n ± 10%   238.4n ±  0%  -71.76% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=50-4    1084.5n ±  8%   313.6n ±  0%  -71.08% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=60-4    1234.5n ±  8%   323.7n ±  0%  -73.78% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=70-4    1356.5n ±  6%   323.5n ±  0%  -76.16% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=80-4    1667.5n ± 11%   324.4n ±  1%  -80.54% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=90-4    1763.5n ± 10%   323.5n ±  1%  -81.66% (p=0.000 n=10)
ScanSpanPacked/cache=tiny/pages=1/sizeclass=25/pct=100-4   2036.0n ±  6%   323.4n ±  0%  -84.12% (p=0.000 n=10)
geomean                                                     685.1n         251.3n        -63.32%

Metadata

Metadata

Labels

NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Performancearch-arm64compiler/runtimeIssues related to the Go compiler and/or runtime.

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions