How does the target setting affects compilation process of TVM exactly?

Are there any explicit instructions or docs for us to follow when it comes to finding the correct/best target string setting for my local device?

It always confuses me whether attributes like mcpu, mattr, mtriple are really effective or not, and sometimes specifying a target like “-device=arm_cpu” may lead to a worse autoTVM result compared to just using the default string like “-device=cpu”.

I am wondering whether we have a look-up sheet for the correct target setting or at least a clear design scheme of the target indexing system.