Идея гиперпоточности Intel (насколько я понимаю) заключается в том, что одно ядро используется для двух потоков с временным мультиплексированием.
HW поддерживает это за счет удвоения ресурсов, связанных с состоянием, и разделения времени с другими ресурсами. Если работающий поток останавливается (например, из-за того, что он должен получить новые данные из ОЗУ), другой поток получает доступ к общим ресурсам. Результатом является более эффективное использование общих ресурсов.
Поэтому, если один поток не готов, другому потоку разрешено работать. Другими словами, переключение потока может произойти, когда исполняемый поток останавливается.
Я пытался выяснить, что произойдет, если оба потока будут готовы в течение длительного времени, но я не смог найти информацию.
Что произойдет, если работающий поток не остановится?
Будет ли работающий поток продолжаться до тех пор, пока он готов?
Переключится ли ядро на другой поток через некоторое время? Если да, то каковы критерии переключения? Он управляется HW или SW?