| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для Windows/Dos > програмно вкл/выкл Hyper Threading |
| Автор: ksili 18.10.2007, 06:02 |
| Люди, поделитесь, кто знает... Как можно программно включать-выключать режим Hyper Threading'а на Pentium 4? Какие там флаги за это отвечают? |
| Автор: MAKCim 18.10.2007, 08:41 |
| имхо, он не выключается его можно использовать, а можно и не использовать |
| Автор: ksili 18.10.2007, 08:45 |
| А "использовать/не использовать" действует сразу на всю систему или на отдельную программу, которая его использует/не использует? И как можно задать прораммно используется он или нет? А в BIOS'е "Hyper-Threading ----- Enable/Disable" это случайно не вкл/выкл? |
| Автор: ksili 18.10.2007, 09:27 |
| так может ли программа (не ОС) на время включить hyper-threading (напрмер, для выполнения участка кода, где это будет полезно с т.зр. увеличения эффективности), а потом выключить. ЕСли да, то как? Если всё же нельзя, то как можно проверить включена эта опция всё-таки в BIOS'е или нет? |
| Автор: MAKCim 18.10.2007, 09:43 | ||
можно, но сложно писать драйвер придется не проще ли включить hyper-threading в BIOS и поставить MP ОС? потом запустить нужный код в отдельном потоке |
| Автор: ksili 18.10.2007, 09:50 |
| понятно... Я не думал, что это так сложно. Вон в защищённый и реальный режим зайти/выйти можно установкой/сбросом бита... А в SSE3 (которое появилось как раз в Pentium 4 HT) присутствуют две команды для синхронизации потоков. Они имеют отношение к hyper-threading? Или не связаны с ним? |
| Автор: MAKCim 18.10.2007, 10:03 | ||
| ksili, а в какой ты среде работаешь и что за код, который тебе надо запустить? если поддержка MP отключена, то BIOS не проводит MP инициализацию и второе логическое ядро (AP) находится в состоянии wait SIPI чтобы его "разбудить", нужно: 1. самостоятельно провести MP инициализацию 2. пропатчить IDT с целью создания шлюза для вызова процедур на втором логическом ядре Добавлено через 33 секунды
что за команды? |
| Автор: ksili 18.10.2007, 10:33 | ||||
да я не помню, читал в интеловском мануале. Сейчас под рукой нет.
Если честно, то реально я этого делать в ближайшее время не собираюсь. Хотел узнать насколько это сложно. А вообще интересно было под WinXP (я думал это от оси не очень зависит - главное чтобы она поддерживала HT)
1. Если ось поддерживает SMT и соответствующая настройка включена в BIOS'е, то надо ли выполнять первый шаг? 2. почему IDT? Все потоки, которые выполняются на втором логическом ядре, вызывается через шлюзовый механизм, через шлюз задачи? Добавлено через 8 минут и 52 секунды Я читал когда-то в одной статье, что из-за бесполезности hyper-threading для большинства случаев (когда обычный юзер запустил несколько офисных приложений), Intel предоставила программистам возможность вкл/выкл hyper-threading. То есть если он считает, что на данном отрезке кода полезен hyper-threading, он его включает и система пашет на двух ядрах, затем, если он бесполезен, его можно отключить. Вот мне и стало интересно, реально ли это и там гон был. Вообще насколько, я понял из ваших объяснений MAKCim, то если в BIOS'е включена соответствующая настройка, то hyper-threading жёстко включен и нельзя его временно отключить. Если наоборот, то его использовать можно, но при этом придётся делать кучу вспомогательных действий (формировать MP-таблицы и т.д.). В общем наверно те заявления Intel наверно были чисто рекламными и на практике это использовать очень затруднительно... |
| Автор: MAKCim 18.10.2007, 11:14 | ||||||||
я же уже говорил если есть MP ОС, то не надо ничего придумывать, запускай код в отдельном потоке и будет тебе счастье
тогда вообще ничего делать не надо (см. выше)
я о другом подробно описывать то, что я имел в виду, очень долго сейчас нет времени
HP включен всегда, если процессор его поддерживает нет такого понятия как включение/выключение HT все дело в ОС и в BIOS если в BIOS он отключен, вся система работает на одном ядре включить второе ядро можно, но сложно (см. выше) если BIOS он включен и ОС поддерживает MP, то используется 2 ядра если ОС не поддерживает MP, то будет использовано одно ядро вне зависимости от настроек BIOS |
| Автор: ksili 18.10.2007, 11:22 |
| Спасибо. Будем считать вопрос закрытым |
| Автор: ksili 22.10.2007, 05:57 | ||
Те две инструкции из SSE3 называются MWAIT и MONITOR. Прочитал я про них в интеловском документе "IA-32 Intel® Architecture Software Developer’s Manual. Volume 1: Basic Architecture" от 2004 года. Вот что там конкретно про них пишется:
Чуть ниже там ещё пишется, как проверить что проц поддерживает эти две инструкции. В этом описании нет ни слова про HT. Так что, думаю, они не связаны |