]> git.sesse.net Git - stockfish/commit
Fix TT comment and static_assert()
authorlucasart <lucas.braesch@gmail.com>
Sat, 21 Nov 2015 07:23:53 +0000 (23:23 -0800)
committerJoona Kiiski <joona@zoox.com>
Sat, 21 Nov 2015 07:23:53 +0000 (23:23 -0800)
commit328098d027e7c35625acbb28e42732137c02d0c1
treed6e53fc9d8a68860d04d8632f4aceee514fd7921
parent93195555ed230df1d29933de6236d6847ae88310
Fix TT comment and static_assert()

Comment is based on a misunderstanding of what unaligned memory access is. Here
is an article that explains it very clearly:
https://www.kernel.org/doc/Documentation/unaligned-memory-access.txt

No matter how we define TTEntry or TTCluster, there will never be any unaligned
memory access. This is because the complier knows the alignment rules, and does
the necessary adjustments to make sure unaligned memory access does not occur.

The issue being adressed here has nothing to do with unaligned memory access. It
is about cache performance. In order to achieve best cache performance:
- we prefetch the cacheline as soon as possible.
- we ensure that TT clusters do not spread across two cachelines. If they did,
  we would need to prefetch 2 cachelines, which could hurt cache performance.

Therefore the true conditions to achieve this are:
1/ start adress of TT is cache line aligned. void TranspositionTable::resize()
enforces this.
2/ TT cluster size should *divide* the cache line size. Currently, we pack 2
clusters per cache lines. It used to be 1 before "TT sardines". Does not matter
what the ratio is, all we want is to fit an integer number of clusters per cache
line.

No functional change.

Resolves #506
src/tt.h