Доступ к логическому (программному) идентификатору потока в gem5
Мне было интересно, есть ли способ различать разные логические (программные) потоки в gem5. Я пытаюсь собрать статистику для каждого логического потока, и пока все, что я мог найти в gem5, это доступ к физическим потокам. Я знаю, что ответственность за логические потоки несет ОС, но есть ли у gem5 доступ к идентификатору логического потока.
Один из вариантов - привязать потоки к ядрам, но это работает только в том случае, если количество ядер по меньшей мере равно количеству логических потоков. Однако мне нужно будет провести некоторые эксперименты, в которых количество логических потоков превышает количество ядер, и в этом случае несколько логических потоков будут назначены одному и тому же ядру, и для того, чтобы различать их, мне нужен идентификатор логического потока.
Заранее большое спасибо.
1 ответ
Для arm64 полной системы Linux, я считаю, что если вы собираете ядро с CONFIG_PID_IN_CONTEXTIDR
затем каждый процесс выполняется с уникальным CONTEXTIDR_EL1
, который показывает на --debug-flag Exec
,
Другие архивы см. В ответах на вопрос списка рассылки: https://www.mail-archive.com/gem5-users@gem5.org/msg16228.html
Пожалуйста, всегда уточняйте, работаете ли вы с полной системой, или с эмуляцией системного вызова, если кажется, что это имеет значение, поскольку ответы могут быть совершенно разными.