I have a huge program which do a lot of different tasks. There are hundreds, and one of them is Transposition Table access. This TT is very big, and I access it from time to time to retrieve a cell of around 8 or 10 ints size.
As my program has to be tuned for speed I have used a _mm_prefetch intrinsic instruction for trying to prefetch data a few instruction before real call.
I have trying to measuring time doing differents test but I have not get any improvement, so I ask myselft if I have programmed the code well.
Is there any way of knowing if the data have move into cache after the prefetch? .... or is there any way of knowing if _mm_prefecth instructions has been sucessfull?
My code is near like this:
Code:unsigned int nt = n->hash & total_hash_entries; t_entrada_hash *p = &ptrTT[nt]; _mm_prefetch((char*) p, _MM_HINT_NTA) .... a few lines of code here..... use of p.... i.e.: if (p->x = z...)