...The bios is responsible for enumerating them, and it does this based on one or possibly two bytes read from the chip itself. Of note, the chip tells the bios that is has one logical core per physical one, but the rest of the specifications are the same. It still tells the bios to reserve address space for the "missing" cores! If you want to know which byte it is specifically, it's the rightmost byte in register ebx, after executing the cpuid instruction with a value of 0x0000000b in the eax register, and 0x00000000 in the ecx register.
That one byte tells the bios "I have one/two threads per core". The next byte is found by putting 0x0000000b in eax, 0x00000001 in ecx, and executing cpuid again. this byte basically says how many total "cores" there are. So for example: if i tell it two threads per core, 4 total cores, then it will (presumably) run my i5 like an i3! with ht on, but the last 4 "cores" turned off.
So i need to change those two bytes to read "two threads per core", "eight total threads". The supporting information, ie: cache sizes and the like, are already set the same as an i7, ready and willing to support the hyperthreaded cores. what i need most is to get this done, find the part of the bios that initializes the cores, and poke it.
I have the what, the why, and the how. I need the
where. I have a general idea of the when, but it's not helping as much as you'd think.
Bookmarks