Move TT object away from heavy write accessed NodesSincePoll
and also, inside TT isolate the heavy accessed writes variable.
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
// Remaining depth: 1 ply 1.5 ply 2 ply 2.5 ply 3 ply 3.5 ply
const Value RazorApprMargins[6] = { Value(0x520), Value(0x300), Value(0x300), Value(0x300), Value(0x300), Value(0x300) };
+ // The main transposition table
+ TranspositionTable TT;
+
/// Variables initialized by UCI options
int NodesSincePoll;
int NodesBetweenPolls = 30000;
- // The main transposition table
- TranspositionTable TT;
-
/// Functions
private:
inline TTEntry* first_entry(const Key posKey) const;
- unsigned size, writes;
+ // Be sure 'writes' is at least one cacheline away
+ // from read only variables.
+ unsigned char pad_before[64 - sizeof(unsigned)];
+ unsigned writes; // heavy SMP read/write access here
+ unsigned char pad_after[64];
+
+ unsigned size;
TTEntry* entries;
uint8_t generation;
};