Можно ли отобразить 1 поток уровня пользователя на множество потоков уровня ядра или, например: 2 потока уровня пользователя на 3 или более уровня ядра, и если ответ положительный.как это меняет производительность в позитивном ключе
В теории все возможно.Проблема в том, чтобы найти причину для этого.
Более конкретно, проблема заключается в том, чтобы найти способ, которым дополнительные потоки ядра, назначенные пользовательскому потоку, могут быть полезными (а не просто тратить ресурсы).Есть только 2 вероятных сценария, которые я могу придумать, где это может быть полезно в теории.
Первый вероятный сценарий, который я назову «SIMD с регулируемой шириной», где одна инструкция может работать с N фрагментами данных ввремя, когда назначен только один поток ядра, и когда инструкция (выполняющаяся на M потоках ядра на M CPU) работает с N * M фрагментами данных в то время, когда назначено M потоков ядра.
Второй вероятный сценарий - избыточность.Например, если вы назначаете 3 потока ядра пользовательскому потоку и сравниваете действия (например, сохранение в памяти) каждого потока ядра;тогда вы сможете обнаружить (и быть неуязвимыми) некоторые аппаратные сбои (например, если процессор выйдет из строя, из-за чего один поток ядра будет вести себя иначе, чем другие потоки ядра).
Обратите внимание, что оба этих случая будуттребовать специально разработанного оборудования для соответствия требованиям синхронизации;и ни одна из этих вещей невозможна / практична для обычных процессоров (которые не поддерживают требования к синхронизации).