{OT} Youtube Video: newCTFE: Starting to write the x86 JIT
Ola Fosheim Grøstad via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 25 02:09:00 PDT 2017
On Monday, 24 April 2017 at 17:48:50 UTC, Stefan Koch wrote:
> On Monday, 24 April 2017 at 11:29:01 UTC, Ola Fosheim Grøstad
> wrote:
>>
>> What are scaled loads?
>
> x86 has addressing modes which allow you to multiply an index
> by a certain set of scalars and add it as on offset to the
> pointer you want to load.
> Thereby making memory access patterns more transparent to the
> caching and prefetch systems.
> As well as reducing the overall code-size.
Oh, ok. AFAIK The decoding of indexing modes into micro-ops (the
real instructions used inside the CPU, not the actual op-codes)
has no effect on the caching system. It may however compress the
generated code so you don't flush the instruction cache and speed
up the decoding of op-codes into micro-ops.
If you want to improve cache loads you have to consider when to
use the "prefetch" instructions, but the effect (positive or
negative) varies greatly between CPU generations so you will
basically need to target each CPU-generation individually.
Probably too much work to be worthwhile as it usually doesn't pay
off until you work on large datasets and then you usually have to
be careful with partitioning the data into cache-friendly
working-sets. Probably not so easy to do for a JIT.
You'll probably get a decent performance boost without worrying
about caching too much in the first implementation anyway. Any
gains in that area could be obliterated in the next CPU
generation... :-/
More information about the Digitalmars-d
mailing list