flok wrote:Joost Buijs wrote:I use the main TT everywhere, PV, ZW and in quiescence.
Are these seperate tts? If not: do they all write? Any priorities when chosing which to keep?
And for zw: pv/qs have an alpha + beta and a bestscore. From these a score and flags are stored. In zw we only have beta so what to do with these flags? I think for the cut-off case it is probably the lowerbound and I think the non-cut-off-case (beta - 1) is then the exact case? Am I right?
In my engine I have exactly one TT with the following fields:
key 64 bit
score 16 bit signed
move 24 bit
depth 8 bit signed // depth can get negative in quiescence
age 10 bit
flags 6 bit
At the moment I store only the bounds in the flag field, but there is plenty room for additional things.
Like already has been said, you only have 2 bounds in the zw-search(), lower-bounds (score > alpha) and upper-bounds (score <= alpha) , no exact values.
I try to preserve entries with the highest depth, and exact bounds have some priority over lower and upper-bounds.
Edit: I forgot I also store the age, so the flag field is only 6 bits.
I the age is getting to old, the entry will always be overwritten.