Деактивирайте и активирайте Hyperthreads в движение

Чудя се дали на теория е възможно да се активират хипернишки, след като са били деактивирани в BIOS и обратно. Както се оказва, ако хипернишките са деактивирани, те все още се показват в MADT таблиците на ACPI като деактивирани ядра. Това е примерен изход от MADT с процесор с 4 ядра и 2 нишки на ядро ​​и деактивирана хипер-нишка.

CPU 0: APIC_ID=0 ACPI_PROCESSOR_ID=0 ENABLED=1
CPU 1: APIC_ID=2 ACPI_PROCESSOR_ID=1 ENABLED=1
CPU 2: APIC_ID=4 ACPI_PROCESSOR_ID=2 ENABLED=1
CPU 3: APIC_ID=6 ACPI_PROCESSOR_ID=3 ENABLED=1
CPU 4: APIC_ID=255 ACPI_PROCESSOR_ID=4 ENABLED=0
CPU 5: APIC_ID=255 ACPI_PROCESSOR_ID=5 ENABLED=0
CPU 6: APIC_ID=255 ACPI_PROCESSOR_ID=6 ENABLED=0
CPU 7: APIC_ID=255 ACPI_PROCESSOR_ID=7 ENABLED=0

Чудя се дали (а) има опция за активиране на тези ядра по време на изпълнение (без рестартиране и преминаване през BIOS). И (б) в какво (добре дефинирано или не) състояние е хипернишка/процесор, ако не е активиран (т.е. изпълнява ли инструкции hlt или mwait с деактивиран локален APIC например?).

Това, което прочетох в ACPI спецификацията (5.2.12.2 Processor Local APIC Structure) е следното за активирания флаг:

Ако е нула, този процесор е неизползваем и поддръжката на операционната система няма да се опита да го използва.

Въпреки това, ако някой знае, ще ми е интересно да разбера какво е действителното състояние, в което се намира деактивираната хипернишка. Например алгоритъмът на MP Initialization Protocol, както е описано в Ръководството за разработчици на софтуер на Intel, Том 3 (Раздел 8.4.3), се изпълнява на деактивираните хипер-нишки по време на инициализация?


person zgerd    schedule 16.04.2014    source източник
comment
Е, ако BIOS може да го направи, със сигурност и вие можете да го направите. Въпреки това е вероятно да е специфичен метод за дънна платка/чипсет, така че няма да бъде преносим   -  person tangrs    schedule 18.04.2014
comment
Съгласен съм, но в зависимост от състоянието, в което BIOS оставя деактивирани ядра, може да е просто изпращане на поредица от IPI и настройка на APIC ID за събуждане на ядрото. От друга страна, ако ядрото никога не е било инициализирано правилно, ще бъде по-трудно да се направи, тъй като вероятно включва специфични за чипсета операции, както посочихте.   -  person zgerd    schedule 19.04.2014
comment
Никога не съм опитвал такова нещо. Нямам представа в какво състояние могат да се „събудят“ ядрата и в какъв режим могат да започнат да работят. ОС ще трябва да започне да ги управлява и да изпраща нишки към тях, да конфигурира mto обработка на прекъсвания и т.н. Цялата перспектива изглежда за мен е в категорията "много малко вероятно" :(   -  person Martin James    schedule 19.04.2014


Отговори (1)


code tag не работи, но сега тествам xmp tag
person James    schedule 11.05.2014
comment
Мисля, че въпросът е свързан с хакване на i5 в i7 или нещо подобно. Не съм чул някой да е успял в това. Като начало ще трябва да присвоите валидни APIC идентификатори на HT ядрата, които винаги се идентифицират с последния бит, така че CPU 4 ще се нуждае от APIC идентификатор от 1 и така нататък. Но съм сигурен, че има някои функции на процесора, които биха игнорирали такъв MADT, дори ако сте го хакнали в BIOS. - person Fizz; 13.07.2014