tooling quality and some random rant

Don nospam at nospam.com
Mon Feb 14 21:48:01 PST 2011


bearophile wrote:
> Don:
> 
>> But still, cache effects are more important than instruction scheduling 
>> in 99% of cases.
> 
> I agree.
> CPUs have prefetching instructions, but D doesn't expose them as intrinsics. A bit more higher level visibility for those instructions may be positive today.

A problem with that, is that the prefetching instructions are 
vendor-specific. Also, it's quite difficult to use them correctly. If 
you put them in the wrong place, or use them too much, they slow your 
code down.

> 
> Being D a system language, another possible idea is to partially unveil what's under the "array as a random access memory" illusion. Memory hierarchy makes array access times quite variable according to what level of the memory pyramid your data is stored into (http://dotnetperls.com/memory-hierarchy ). This is why numeric algorithms that work on large arrays enjoy tiling a lot now. The Chapel language has language-level support for a high level specification of tilings, while Fortran compilers perform some limited forms of tiling by themselves.

I think it is impossible to be a modern systems language without some 
support for memory heirarchy.
I think we'll be able to take advantage of D's awesome metaprogramming, 
to support cache-aware algorithms. As a first step, I added cache size 
determination to core.cpuid some time ago. We have a long way to go, still.


More information about the Digitalmars-d mailing list