#184 Review PR

This PR is created for initial reviewing of the changes of #184 because #184 includes many external changes and hard to review.
Win32 above can used cpuid, but x64 has to use the __cpuid intrinsic (no inline asm support in x64).