我想知道是否有一种方法可以在gem5中区分不同的逻辑(软件)线程。我正在尝试为每个逻辑线程收集一些统计数据,到目前为止,我在gem5中所能找到的就是对物理线程的访问。我知道逻辑线程是操作系统的责任,但是gem5是否仍然可以访问逻辑线程ID。
一种选择是将线程固定到核心,但只有当核心的数量至少等于逻辑线程的数量时,这种方法才有效。但是,我需要运行一些实验,其中逻辑线程的数量超过核心的数量,在这种情况下,多个逻辑线程将被分配到同一个核心,并且为了区分它们,我需要逻辑线程ID。
非常提前感谢您。
发布于 2019-01-11 19:48:30
不幸的是,我没有统计数据的解决方案。
但至少出于调试目的,在arm/arm64全系统Linux上,如果您使用CONFIG_PID_IN_CONTEXTIDR构建内核,那么在从调度器运行进程之前,内核会将每个进程的PID保存在CONTEXTIDR_EL1系统寄存器中。
默认情况下,CONTEXTIDR_EL1已经在A字段的--debug-flag Exec上显示,例如:
336757437500: ExecEnable: system.cpu: A39 T0 : 0x400ffc : ret : IntAlu : flags=(IsInteger|IsControl|IsIndirectControl|IsUncondControl|IsReturn)指示此指令针对进程PID 39运行。
下面是我对该选项的精确设置和进一步解释:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/7235857b1b9ab3e646204d9e13df0104ce1a4174#config_pid_in_contextidr
虽然这不会立即对统计数据有所帮助,但它为以下两种情况提供了一个合理的起点:
我不认为gem5中有一个多进程统计框架,无论哪种情况,你都需要添加它。
相关信息:
请始终澄清您是否正在使用完整系统或syscall仿真,如果这似乎有区别,因为回复可能会有很大的不同。
https://stackoverflow.com/questions/54133479
复制相似问题